UNPKG

@storm-software/untyped

Version:

A package containing `untyped` utilities for building Storm Software libraries and applications

6,969 lines 380 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }






var _chunkGXKBPF6Rcjs = require('./chunk-GXKBPF6R.cjs');


var _chunkDNUXDRL4cjs = require('./chunk-DNUXDRL4.cjs');


var _chunkAA55W4PIcjs = require('./chunk-AA55W4PI.cjs');



var _chunkDUNUNFJ4cjs = require('./chunk-DUNUNFJ4.cjs');


var _chunk4G3IU22Jcjs = require('./chunk-4G3IU22J.cjs');

// src/generate.ts
var _glob = require('glob');

// ../../node_modules/.pnpm/untyped@2.0.0/node_modules/untyped/dist/loader/loader.mjs
var _defu = require('defu');
var _jiti = require('jiti');

// ../../node_modules/.pnpm/untyped@2.0.0/node_modules/untyped/dist/loader/babel.mjs
require('scule');
function getDefaultExportFromCjs(x2) {
  return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
}
var r$w = {};
var e$R = {};
var e$Q = {};
var t$b = {};
var e$P = {};
var a$i = {};
var u$c;
function a$h() {
  if (u$c) return a$i;
  u$c = 1, Object.defineProperty(a$i, "__esModule", { value: true }), a$i.default = t2;
  function t2(l2, r2) {
    const s2 = Object.keys(r2);
    for (const o2 of s2) if (l2[o2] !== r2[o2]) return false;
    return true;
  }
  return a$i;
}
var r$v = {};
var u$b;
function m$4() {
  if (u$b) return r$v;
  u$b = 1, Object.defineProperty(r$v, "__esModule", { value: true }), r$v.default = p2;
  const i2 = /* @__PURE__ */ new Set();
  function p2(r2, t2, n2 = "") {
    if (i2.has(r2)) return;
    i2.add(r2);
    const { internal: c2, trace: e2 } = f2(1, 2);
    c2 || console.warn(`${n2}\`${r2}\` has been deprecated, please migrate to \`${t2}\`
${e2}`);
  }
  function f2(r2, t2) {
    const { stackTraceLimit: n2, prepareStackTrace: c2 } = Error;
    let e2;
    if (Error.stackTraceLimit = 1 + r2 + t2, Error.prepareStackTrace = function(s2, l2) {
      e2 = l2;
    }, new Error().stack, Error.stackTraceLimit = n2, Error.prepareStackTrace = c2, !e2) return { internal: false, trace: "" };
    const o2 = e2.slice(1 + r2, 1 + r2 + t2);
    return { internal: /[\\/]@babel[\\/]/.test(o2[1].getFileName()), trace: o2.map((s2) => `    at ${s2}`).join(`
`) };
  }
  return r$v;
}
var l$6;
function qn() {
  if (l$6) return e$P;
  l$6 = 1, Object.defineProperty(e$P, "__esModule", { value: true }), e$P.isAccessor = Pn, e$P.isAnyTypeAnnotation = ve, e$P.isArgumentPlaceholder = mr, e$P.isArrayExpression = s2, e$P.isArrayPattern = ie, e$P.isArrayTypeAnnotation = Ve, e$P.isArrowFunctionExpression = le, e$P.isAssignmentExpression = u2, e$P.isAssignmentPattern = ne, e$P.isAwaitExpression = Ne, e$P.isBigIntLiteral = Be, e$P.isBinary = qa, e$P.isBinaryExpression = f2, e$P.isBindExpression = Er, e$P.isBlock = _a, e$P.isBlockParent = za, e$P.isBlockStatement = o2, e$P.isBooleanLiteral = F, e$P.isBooleanLiteralTypeAnnotation = We, e$P.isBooleanTypeAnnotation = Ue, e$P.isBreakStatement = T2, e$P.isCallExpression = S, e$P.isCatchClause = m2, e$P.isClass = An, e$P.isClassAccessorProperty = Ke, e$P.isClassBody = se, e$P.isClassDeclaration = fe, e$P.isClassExpression = ue, e$P.isClassImplements = Qe, e$P.isClassMethod = be, e$P.isClassPrivateMethod = Je, e$P.isClassPrivateProperty = Xe, e$P.isClassProperty = ke, e$P.isCompletionStatement = $a, e$P.isConditional = Ha, e$P.isConditionalExpression = E, e$P.isContinueStatement = x2, e$P.isDebuggerStatement = D, e$P.isDecimalLiteral = Ir, e$P.isDeclaration = un, e$P.isDeclareClass = ze, e$P.isDeclareExportAllDeclaration = rt, e$P.isDeclareExportDeclaration = tt, e$P.isDeclareFunction = _e, e$P.isDeclareInterface = Ge, e$P.isDeclareModule = Ye, e$P.isDeclareModuleExports = $e, e$P.isDeclareOpaqueType = Ze, e$P.isDeclareTypeAlias = He, e$P.isDeclareVariable = et, e$P.isDeclaredPredicate = at, e$P.isDecorator = Dr, e$P.isDirective = p2, e$P.isDirectiveLiteral = y2, e$P.isDoExpression = Ar, e$P.isDoWhileStatement = A2, e$P.isEmptyStatement = b2, e$P.isEmptyTypeAnnotation = Tt, e$P.isEnumBody = Mn, e$P.isEnumBooleanBody = Vt, e$P.isEnumBooleanMember = Qt, e$P.isEnumDeclaration = vt, e$P.isEnumDefaultedMember = Gt, e$P.isEnumMember = Bn, e$P.isEnumNumberBody = Ut, e$P.isEnumNumberMember = zt, e$P.isEnumStringBody = Wt, e$P.isEnumStringMember = _t, e$P.isEnumSymbolBody = qt, e$P.isExistsTypeAnnotation = nt, e$P.isExportAllDeclaration = ce, e$P.isExportDeclaration = bn, e$P.isExportDefaultDeclaration = pe, e$P.isExportDefaultSpecifier = br, e$P.isExportNamedDeclaration = ye, e$P.isExportNamespaceSpecifier = Le, e$P.isExportSpecifier = oe, e$P.isExpression = Wa, e$P.isExpressionStatement = d2, e$P.isExpressionWrapper = tn, e$P.isFile = P2, e$P.isFlow = hn, e$P.isFlowBaseAnnotation = gn, e$P.isFlowDeclaration = Cn, e$P.isFlowPredicate = Nn, e$P.isFlowType = wn, e$P.isFor = rn, e$P.isForInStatement = I2, e$P.isForOfStatement = Te, e$P.isForStatement = h, e$P.isForXStatement = an, e$P.isFunction = nn, e$P.isFunctionDeclaration = w, e$P.isFunctionExpression = g2, e$P.isFunctionParent = ln, e$P.isFunctionTypeAnnotation = it, e$P.isFunctionTypeParam = lt, e$P.isGenericTypeAnnotation = st, e$P.isIdentifier = C, e$P.isIfStatement = N2, e$P.isImmutable = on, e$P.isImport = Me, e$P.isImportAttribute = xr, e$P.isImportDeclaration = Se, e$P.isImportDefaultSpecifier = me, e$P.isImportExpression = De, e$P.isImportNamespaceSpecifier = Ee, e$P.isImportOrExportDeclaration = i2, e$P.isImportSpecifier = xe, e$P.isIndexedAccessType = Yt, e$P.isInferredPredicate = ut, e$P.isInterfaceDeclaration = ct, e$P.isInterfaceExtends = ft, e$P.isInterfaceTypeAnnotation = pt, e$P.isInterpreterDirective = c2, e$P.isIntersectionTypeAnnotation = yt, e$P.isJSX = Ln, e$P.isJSXAttribute = Ht, e$P.isJSXClosingElement = Zt, e$P.isJSXClosingFragment = yr, e$P.isJSXElement = er, e$P.isJSXEmptyExpression = tr, e$P.isJSXExpressionContainer = rr, e$P.isJSXFragment = cr2, e$P.isJSXIdentifier = nr, e$P.isJSXMemberExpression = ir, e$P.isJSXNamespacedName = lr, e$P.isJSXOpeningElement = sr, e$P.isJSXOpeningFragment = pr, e$P.isJSXSpreadAttribute = ur, e$P.isJSXSpreadChild = ar, e$P.isJSXText = fr, e$P.isLVal = cn, e$P.isLabeledStatement = M, e$P.isLiteral = yn, e$P.isLogicalExpression = K, e$P.isLoop = Za, e$P.isMemberExpression = X, e$P.isMetaProperty = Ae, e$P.isMethod = Sn, e$P.isMiscellaneous = On, e$P.isMixedTypeAnnotation = ot, e$P.isModuleDeclaration = Vn, e$P.isModuleExpression = hr, e$P.isModuleSpecifier = dn, e$P.isNewExpression = J2, e$P.isNoop = or, e$P.isNullLiteral = O, e$P.isNullLiteralTypeAnnotation = qe, e$P.isNullableTypeAnnotation = St, e$P.isNumberLiteral = Jn, e$P.isNumberLiteralTypeAnnotation = mt, e$P.isNumberTypeAnnotation = Et, e$P.isNumericLiteral = L, e$P.isObjectExpression = R, e$P.isObjectMember = mn, e$P.isObjectMethod = v2, e$P.isObjectPattern = de, e$P.isObjectProperty = V, e$P.isObjectTypeAnnotation = xt, e$P.isObjectTypeCallProperty = At, e$P.isObjectTypeIndexer = bt, e$P.isObjectTypeInternalSlot = Dt, e$P.isObjectTypeProperty = dt, e$P.isObjectTypeSpreadProperty = Pt, e$P.isOpaqueType = It, e$P.isOptionalCallExpression = Fe, e$P.isOptionalIndexedAccessType = $t, e$P.isOptionalMemberExpression = Oe, e$P.isParenthesizedExpression = Q, e$P.isPattern = Dn, e$P.isPatternLike = fn, e$P.isPipelineBareFunction = Cr, e$P.isPipelinePrimaryTopicReference = Nr, e$P.isPipelineTopicExpression = gr, e$P.isPlaceholder = Tr, e$P.isPrivate = In, e$P.isPrivateName = je, e$P.isProgram = j, e$P.isProperty = En, e$P.isPureish = sn, e$P.isQualifiedTypeIdentifier = ht, e$P.isRecordExpression = dr, e$P.isRegExpLiteral = k, e$P.isRegexLiteral = jn, e$P.isRestElement = U, e$P.isRestProperty = Rn, e$P.isReturnStatement = W, e$P.isScopable = Qa, e$P.isSequenceExpression = q2, e$P.isSpreadElement = Pe, e$P.isSpreadProperty = vn, e$P.isStandardized = Ua, e$P.isStatement = Ga, e$P.isStaticBlock = Re, e$P.isStringLiteral = B2, e$P.isStringLiteralTypeAnnotation = wt, e$P.isStringTypeAnnotation = gt, e$P.isSuper = Ie, e$P.isSwitchCase = z, e$P.isSwitchStatement = _2, e$P.isSymbolTypeAnnotation = Ct, e$P.isTSAnyKeyword = jr, e$P.isTSArrayType = ia, e$P.isTSAsExpression = ha, e$P.isTSBaseType = Xn, e$P.isTSBigIntKeyword = vr, e$P.isTSBooleanKeyword = Rr, e$P.isTSCallSignatureDeclaration = Fr, e$P.isTSConditionalType = ya, e$P.isTSConstructSignatureDeclaration = kr, e$P.isTSConstructorType = ea, e$P.isTSDeclareFunction = Br, e$P.isTSDeclareMethod = Lr, e$P.isTSEntityName = pn, e$P.isTSEnumBody = Ca, e$P.isTSEnumDeclaration = Na, e$P.isTSEnumMember = Ma, e$P.isTSExportAssignment = Xa, e$P.isTSExpressionWithTypeArguments = Aa, e$P.isTSExternalModuleReference = ka, e$P.isTSFunctionType = Zr, e$P.isTSImportEqualsDeclaration = Fa, e$P.isTSImportType = Oa, e$P.isTSIndexSignature = Jr, e$P.isTSIndexedAccessType = ma, e$P.isTSInferType = oa, e$P.isTSInstantiationExpression = Ia, e$P.isTSInterfaceBody = da, e$P.isTSInterfaceDeclaration = ba, e$P.isTSIntersectionType = pa, e$P.isTSIntrinsicKeyword = Vr, e$P.isTSLiteralType = Da, e$P.isTSMappedType = Ea, e$P.isTSMethodSignature = Xr, e$P.isTSModuleBlock = La, e$P.isTSModuleDeclaration = Ba, e$P.isTSNamedTupleMember = fa, e$P.isTSNamespaceExportDeclaration = Ja, e$P.isTSNeverKeyword = Ur, e$P.isTSNonNullExpression = Ka, e$P.isTSNullKeyword = Wr, e$P.isTSNumberKeyword = qr, e$P.isTSObjectKeyword = Qr, e$P.isTSOptionalType = sa, e$P.isTSParameterProperty = Mr2, e$P.isTSParenthesizedType = Ta, e$P.isTSPropertySignature = Kr, e$P.isTSQualifiedName = Or, e$P.isTSRestType = ua, e$P.isTSSatisfiesExpression = wa, e$P.isTSStringKeyword = zr, e$P.isTSSymbolKeyword = _r, e$P.isTSTemplateLiteralType = xa, e$P.isTSThisType = Hr, e$P.isTSTupleType = la, e$P.isTSType = Kn, e$P.isTSTypeAliasDeclaration = Pa, e$P.isTSTypeAnnotation = ja, e$P.isTSTypeAssertion = ga, e$P.isTSTypeElement = kn, e$P.isTSTypeLiteral = na, e$P.isTSTypeOperator = Sa, e$P.isTSTypeParameter = Va, e$P.isTSTypeParameterDeclaration = va, e$P.isTSTypeParameterInstantiation = Ra, e$P.isTSTypePredicate = ra, e$P.isTSTypeQuery = aa, e$P.isTSTypeReference = ta, e$P.isTSUndefinedKeyword = Gr, e$P.isTSUnionType = ca, e$P.isTSUnknownKeyword = Yr, e$P.isTSVoidKeyword = $r, e$P.isTaggedTemplateExpression = he, e$P.isTemplateElement = we, e$P.isTemplateLiteral = ge, e$P.isTerminatorless = Ya, e$P.isThisExpression = G, e$P.isThisTypeAnnotation = Nt, e$P.isThrowStatement = Y2, e$P.isTopicReference = wr, e$P.isTryStatement = $, e$P.isTupleExpression = Pr, e$P.isTupleTypeAnnotation = Mt, e$P.isTypeAlias = Lt, e$P.isTypeAnnotation = Ot, e$P.isTypeCastExpression = Ft, e$P.isTypeParameter = kt, e$P.isTypeParameterDeclaration = Kt, e$P.isTypeParameterInstantiation = Xt, e$P.isTypeScript = Fn, e$P.isTypeofTypeAnnotation = Bt, e$P.isUnaryExpression = H, e$P.isUnaryLike = xn, e$P.isUnionTypeAnnotation = Jt, e$P.isUpdateExpression = Z, e$P.isUserWhitespacable = Tn, e$P.isV8IntrinsicIdentifier = Sr, e$P.isVariableDeclaration = ee, e$P.isVariableDeclarator = te, e$P.isVariance = jt, e$P.isVoidTypeAnnotation = Rt, e$P.isWhile = en, e$P.isWhileStatement = re, e$P.isWithStatement = ae, e$P.isYieldExpression = Ce;
  var a2 = a$h(), n2 = m$4();
  function s2(e2, t2) {
    return !e2 || e2.type !== "ArrayExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function u2(e2, t2) {
    return !e2 || e2.type !== "AssignmentExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function f2(e2, t2) {
    return !e2 || e2.type !== "BinaryExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function c2(e2, t2) {
    return !e2 || e2.type !== "InterpreterDirective" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function p2(e2, t2) {
    return !e2 || e2.type !== "Directive" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function y2(e2, t2) {
    return !e2 || e2.type !== "DirectiveLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function o2(e2, t2) {
    return !e2 || e2.type !== "BlockStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function T2(e2, t2) {
    return !e2 || e2.type !== "BreakStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function S(e2, t2) {
    return !e2 || e2.type !== "CallExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function m2(e2, t2) {
    return !e2 || e2.type !== "CatchClause" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function E(e2, t2) {
    return !e2 || e2.type !== "ConditionalExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function x2(e2, t2) {
    return !e2 || e2.type !== "ContinueStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function D(e2, t2) {
    return !e2 || e2.type !== "DebuggerStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function A2(e2, t2) {
    return !e2 || e2.type !== "DoWhileStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function b2(e2, t2) {
    return !e2 || e2.type !== "EmptyStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function d2(e2, t2) {
    return !e2 || e2.type !== "ExpressionStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function P2(e2, t2) {
    return !e2 || e2.type !== "File" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function I2(e2, t2) {
    return !e2 || e2.type !== "ForInStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function h(e2, t2) {
    return !e2 || e2.type !== "ForStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function w(e2, t2) {
    return !e2 || e2.type !== "FunctionDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function g2(e2, t2) {
    return !e2 || e2.type !== "FunctionExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function C(e2, t2) {
    return !e2 || e2.type !== "Identifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function N2(e2, t2) {
    return !e2 || e2.type !== "IfStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function M(e2, t2) {
    return !e2 || e2.type !== "LabeledStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function B2(e2, t2) {
    return !e2 || e2.type !== "StringLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function L(e2, t2) {
    return !e2 || e2.type !== "NumericLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function O(e2, t2) {
    return !e2 || e2.type !== "NullLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function F(e2, t2) {
    return !e2 || e2.type !== "BooleanLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function k(e2, t2) {
    return !e2 || e2.type !== "RegExpLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function K(e2, t2) {
    return !e2 || e2.type !== "LogicalExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function X(e2, t2) {
    return !e2 || e2.type !== "MemberExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function J2(e2, t2) {
    return !e2 || e2.type !== "NewExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function j(e2, t2) {
    return !e2 || e2.type !== "Program" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function R(e2, t2) {
    return !e2 || e2.type !== "ObjectExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function v2(e2, t2) {
    return !e2 || e2.type !== "ObjectMethod" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function V(e2, t2) {
    return !e2 || e2.type !== "ObjectProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function U(e2, t2) {
    return !e2 || e2.type !== "RestElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function W(e2, t2) {
    return !e2 || e2.type !== "ReturnStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function q2(e2, t2) {
    return !e2 || e2.type !== "SequenceExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Q(e2, t2) {
    return !e2 || e2.type !== "ParenthesizedExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function z(e2, t2) {
    return !e2 || e2.type !== "SwitchCase" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function _2(e2, t2) {
    return !e2 || e2.type !== "SwitchStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function G(e2, t2) {
    return !e2 || e2.type !== "ThisExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Y2(e2, t2) {
    return !e2 || e2.type !== "ThrowStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function $(e2, t2) {
    return !e2 || e2.type !== "TryStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function H(e2, t2) {
    return !e2 || e2.type !== "UnaryExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Z(e2, t2) {
    return !e2 || e2.type !== "UpdateExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ee(e2, t2) {
    return !e2 || e2.type !== "VariableDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function te(e2, t2) {
    return !e2 || e2.type !== "VariableDeclarator" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function re(e2, t2) {
    return !e2 || e2.type !== "WhileStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ae(e2, t2) {
    return !e2 || e2.type !== "WithStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ne(e2, t2) {
    return !e2 || e2.type !== "AssignmentPattern" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ie(e2, t2) {
    return !e2 || e2.type !== "ArrayPattern" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function le(e2, t2) {
    return !e2 || e2.type !== "ArrowFunctionExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function se(e2, t2) {
    return !e2 || e2.type !== "ClassBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ue(e2, t2) {
    return !e2 || e2.type !== "ClassExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function fe(e2, t2) {
    return !e2 || e2.type !== "ClassDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ce(e2, t2) {
    return !e2 || e2.type !== "ExportAllDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function pe(e2, t2) {
    return !e2 || e2.type !== "ExportDefaultDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ye(e2, t2) {
    return !e2 || e2.type !== "ExportNamedDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function oe(e2, t2) {
    return !e2 || e2.type !== "ExportSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Te(e2, t2) {
    return !e2 || e2.type !== "ForOfStatement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Se(e2, t2) {
    return !e2 || e2.type !== "ImportDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function me(e2, t2) {
    return !e2 || e2.type !== "ImportDefaultSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ee(e2, t2) {
    return !e2 || e2.type !== "ImportNamespaceSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function xe(e2, t2) {
    return !e2 || e2.type !== "ImportSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function De(e2, t2) {
    return !e2 || e2.type !== "ImportExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ae(e2, t2) {
    return !e2 || e2.type !== "MetaProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function be(e2, t2) {
    return !e2 || e2.type !== "ClassMethod" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function de(e2, t2) {
    return !e2 || e2.type !== "ObjectPattern" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Pe(e2, t2) {
    return !e2 || e2.type !== "SpreadElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ie(e2, t2) {
    return !e2 || e2.type !== "Super" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function he(e2, t2) {
    return !e2 || e2.type !== "TaggedTemplateExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function we(e2, t2) {
    return !e2 || e2.type !== "TemplateElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ge(e2, t2) {
    return !e2 || e2.type !== "TemplateLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ce(e2, t2) {
    return !e2 || e2.type !== "YieldExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ne(e2, t2) {
    return !e2 || e2.type !== "AwaitExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Me(e2, t2) {
    return !e2 || e2.type !== "Import" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Be(e2, t2) {
    return !e2 || e2.type !== "BigIntLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Le(e2, t2) {
    return !e2 || e2.type !== "ExportNamespaceSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Oe(e2, t2) {
    return !e2 || e2.type !== "OptionalMemberExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Fe(e2, t2) {
    return !e2 || e2.type !== "OptionalCallExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ke(e2, t2) {
    return !e2 || e2.type !== "ClassProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ke(e2, t2) {
    return !e2 || e2.type !== "ClassAccessorProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Xe(e2, t2) {
    return !e2 || e2.type !== "ClassPrivateProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Je(e2, t2) {
    return !e2 || e2.type !== "ClassPrivateMethod" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function je(e2, t2) {
    return !e2 || e2.type !== "PrivateName" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Re(e2, t2) {
    return !e2 || e2.type !== "StaticBlock" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ve(e2, t2) {
    return !e2 || e2.type !== "AnyTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ve(e2, t2) {
    return !e2 || e2.type !== "ArrayTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ue(e2, t2) {
    return !e2 || e2.type !== "BooleanTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function We(e2, t2) {
    return !e2 || e2.type !== "BooleanLiteralTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function qe(e2, t2) {
    return !e2 || e2.type !== "NullLiteralTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Qe(e2, t2) {
    return !e2 || e2.type !== "ClassImplements" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ze(e2, t2) {
    return !e2 || e2.type !== "DeclareClass" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function _e(e2, t2) {
    return !e2 || e2.type !== "DeclareFunction" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ge(e2, t2) {
    return !e2 || e2.type !== "DeclareInterface" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ye(e2, t2) {
    return !e2 || e2.type !== "DeclareModule" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function $e(e2, t2) {
    return !e2 || e2.type !== "DeclareModuleExports" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function He(e2, t2) {
    return !e2 || e2.type !== "DeclareTypeAlias" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ze(e2, t2) {
    return !e2 || e2.type !== "DeclareOpaqueType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function et(e2, t2) {
    return !e2 || e2.type !== "DeclareVariable" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function tt(e2, t2) {
    return !e2 || e2.type !== "DeclareExportDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function rt(e2, t2) {
    return !e2 || e2.type !== "DeclareExportAllDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function at(e2, t2) {
    return !e2 || e2.type !== "DeclaredPredicate" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function nt(e2, t2) {
    return !e2 || e2.type !== "ExistsTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function it(e2, t2) {
    return !e2 || e2.type !== "FunctionTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function lt(e2, t2) {
    return !e2 || e2.type !== "FunctionTypeParam" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function st(e2, t2) {
    return !e2 || e2.type !== "GenericTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ut(e2, t2) {
    return !e2 || e2.type !== "InferredPredicate" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ft(e2, t2) {
    return !e2 || e2.type !== "InterfaceExtends" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ct(e2, t2) {
    return !e2 || e2.type !== "InterfaceDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function pt(e2, t2) {
    return !e2 || e2.type !== "InterfaceTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function yt(e2, t2) {
    return !e2 || e2.type !== "IntersectionTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ot(e2, t2) {
    return !e2 || e2.type !== "MixedTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Tt(e2, t2) {
    return !e2 || e2.type !== "EmptyTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function St(e2, t2) {
    return !e2 || e2.type !== "NullableTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function mt(e2, t2) {
    return !e2 || e2.type !== "NumberLiteralTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Et(e2, t2) {
    return !e2 || e2.type !== "NumberTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function xt(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Dt(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeInternalSlot" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function At(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeCallProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function bt(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeIndexer" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function dt(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Pt(e2, t2) {
    return !e2 || e2.type !== "ObjectTypeSpreadProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function It(e2, t2) {
    return !e2 || e2.type !== "OpaqueType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ht(e2, t2) {
    return !e2 || e2.type !== "QualifiedTypeIdentifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function wt(e2, t2) {
    return !e2 || e2.type !== "StringLiteralTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function gt(e2, t2) {
    return !e2 || e2.type !== "StringTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ct(e2, t2) {
    return !e2 || e2.type !== "SymbolTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Nt(e2, t2) {
    return !e2 || e2.type !== "ThisTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Mt(e2, t2) {
    return !e2 || e2.type !== "TupleTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Bt(e2, t2) {
    return !e2 || e2.type !== "TypeofTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Lt(e2, t2) {
    return !e2 || e2.type !== "TypeAlias" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ot(e2, t2) {
    return !e2 || e2.type !== "TypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ft(e2, t2) {
    return !e2 || e2.type !== "TypeCastExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function kt(e2, t2) {
    return !e2 || e2.type !== "TypeParameter" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Kt(e2, t2) {
    return !e2 || e2.type !== "TypeParameterDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Xt(e2, t2) {
    return !e2 || e2.type !== "TypeParameterInstantiation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Jt(e2, t2) {
    return !e2 || e2.type !== "UnionTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function jt(e2, t2) {
    return !e2 || e2.type !== "Variance" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Rt(e2, t2) {
    return !e2 || e2.type !== "VoidTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function vt(e2, t2) {
    return !e2 || e2.type !== "EnumDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Vt(e2, t2) {
    return !e2 || e2.type !== "EnumBooleanBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ut(e2, t2) {
    return !e2 || e2.type !== "EnumNumberBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Wt(e2, t2) {
    return !e2 || e2.type !== "EnumStringBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function qt(e2, t2) {
    return !e2 || e2.type !== "EnumSymbolBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Qt(e2, t2) {
    return !e2 || e2.type !== "EnumBooleanMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function zt(e2, t2) {
    return !e2 || e2.type !== "EnumNumberMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function _t(e2, t2) {
    return !e2 || e2.type !== "EnumStringMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Gt(e2, t2) {
    return !e2 || e2.type !== "EnumDefaultedMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Yt(e2, t2) {
    return !e2 || e2.type !== "IndexedAccessType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function $t(e2, t2) {
    return !e2 || e2.type !== "OptionalIndexedAccessType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ht(e2, t2) {
    return !e2 || e2.type !== "JSXAttribute" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Zt(e2, t2) {
    return !e2 || e2.type !== "JSXClosingElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function er(e2, t2) {
    return !e2 || e2.type !== "JSXElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function tr(e2, t2) {
    return !e2 || e2.type !== "JSXEmptyExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function rr(e2, t2) {
    return !e2 || e2.type !== "JSXExpressionContainer" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ar(e2, t2) {
    return !e2 || e2.type !== "JSXSpreadChild" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function nr(e2, t2) {
    return !e2 || e2.type !== "JSXIdentifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ir(e2, t2) {
    return !e2 || e2.type !== "JSXMemberExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function lr(e2, t2) {
    return !e2 || e2.type !== "JSXNamespacedName" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function sr(e2, t2) {
    return !e2 || e2.type !== "JSXOpeningElement" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ur(e2, t2) {
    return !e2 || e2.type !== "JSXSpreadAttribute" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function fr(e2, t2) {
    return !e2 || e2.type !== "JSXText" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function cr2(e2, t2) {
    return !e2 || e2.type !== "JSXFragment" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function pr(e2, t2) {
    return !e2 || e2.type !== "JSXOpeningFragment" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function yr(e2, t2) {
    return !e2 || e2.type !== "JSXClosingFragment" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function or(e2, t2) {
    return !e2 || e2.type !== "Noop" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Tr(e2, t2) {
    return !e2 || e2.type !== "Placeholder" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Sr(e2, t2) {
    return !e2 || e2.type !== "V8IntrinsicIdentifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function mr(e2, t2) {
    return !e2 || e2.type !== "ArgumentPlaceholder" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Er(e2, t2) {
    return !e2 || e2.type !== "BindExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function xr(e2, t2) {
    return !e2 || e2.type !== "ImportAttribute" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Dr(e2, t2) {
    return !e2 || e2.type !== "Decorator" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ar(e2, t2) {
    return !e2 || e2.type !== "DoExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function br(e2, t2) {
    return !e2 || e2.type !== "ExportDefaultSpecifier" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function dr(e2, t2) {
    return !e2 || e2.type !== "RecordExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Pr(e2, t2) {
    return !e2 || e2.type !== "TupleExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ir(e2, t2) {
    return !e2 || e2.type !== "DecimalLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function hr(e2, t2) {
    return !e2 || e2.type !== "ModuleExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function wr(e2, t2) {
    return !e2 || e2.type !== "TopicReference" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function gr(e2, t2) {
    return !e2 || e2.type !== "PipelineTopicExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Cr(e2, t2) {
    return !e2 || e2.type !== "PipelineBareFunction" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Nr(e2, t2) {
    return !e2 || e2.type !== "PipelinePrimaryTopicReference" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Mr2(e2, t2) {
    return !e2 || e2.type !== "TSParameterProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Br(e2, t2) {
    return !e2 || e2.type !== "TSDeclareFunction" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Lr(e2, t2) {
    return !e2 || e2.type !== "TSDeclareMethod" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Or(e2, t2) {
    return !e2 || e2.type !== "TSQualifiedName" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Fr(e2, t2) {
    return !e2 || e2.type !== "TSCallSignatureDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function kr(e2, t2) {
    return !e2 || e2.type !== "TSConstructSignatureDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Kr(e2, t2) {
    return !e2 || e2.type !== "TSPropertySignature" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Xr(e2, t2) {
    return !e2 || e2.type !== "TSMethodSignature" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Jr(e2, t2) {
    return !e2 || e2.type !== "TSIndexSignature" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function jr(e2, t2) {
    return !e2 || e2.type !== "TSAnyKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Rr(e2, t2) {
    return !e2 || e2.type !== "TSBooleanKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function vr(e2, t2) {
    return !e2 || e2.type !== "TSBigIntKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Vr(e2, t2) {
    return !e2 || e2.type !== "TSIntrinsicKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ur(e2, t2) {
    return !e2 || e2.type !== "TSNeverKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Wr(e2, t2) {
    return !e2 || e2.type !== "TSNullKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function qr(e2, t2) {
    return !e2 || e2.type !== "TSNumberKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Qr(e2, t2) {
    return !e2 || e2.type !== "TSObjectKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function zr(e2, t2) {
    return !e2 || e2.type !== "TSStringKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function _r(e2, t2) {
    return !e2 || e2.type !== "TSSymbolKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Gr(e2, t2) {
    return !e2 || e2.type !== "TSUndefinedKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Yr(e2, t2) {
    return !e2 || e2.type !== "TSUnknownKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function $r(e2, t2) {
    return !e2 || e2.type !== "TSVoidKeyword" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Hr(e2, t2) {
    return !e2 || e2.type !== "TSThisType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Zr(e2, t2) {
    return !e2 || e2.type !== "TSFunctionType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ea(e2, t2) {
    return !e2 || e2.type !== "TSConstructorType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ta(e2, t2) {
    return !e2 || e2.type !== "TSTypeReference" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ra(e2, t2) {
    return !e2 || e2.type !== "TSTypePredicate" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function aa(e2, t2) {
    return !e2 || e2.type !== "TSTypeQuery" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function na(e2, t2) {
    return !e2 || e2.type !== "TSTypeLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ia(e2, t2) {
    return !e2 || e2.type !== "TSArrayType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function la(e2, t2) {
    return !e2 || e2.type !== "TSTupleType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function sa(e2, t2) {
    return !e2 || e2.type !== "TSOptionalType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ua(e2, t2) {
    return !e2 || e2.type !== "TSRestType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function fa(e2, t2) {
    return !e2 || e2.type !== "TSNamedTupleMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ca(e2, t2) {
    return !e2 || e2.type !== "TSUnionType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function pa(e2, t2) {
    return !e2 || e2.type !== "TSIntersectionType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ya(e2, t2) {
    return !e2 || e2.type !== "TSConditionalType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function oa(e2, t2) {
    return !e2 || e2.type !== "TSInferType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ta(e2, t2) {
    return !e2 || e2.type !== "TSParenthesizedType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Sa(e2, t2) {
    return !e2 || e2.type !== "TSTypeOperator" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ma(e2, t2) {
    return !e2 || e2.type !== "TSIndexedAccessType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ea(e2, t2) {
    return !e2 || e2.type !== "TSMappedType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function xa(e2, t2) {
    return !e2 || e2.type !== "TSTemplateLiteralType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Da(e2, t2) {
    return !e2 || e2.type !== "TSLiteralType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Aa(e2, t2) {
    return !e2 || e2.type !== "TSExpressionWithTypeArguments" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ba(e2, t2) {
    return !e2 || e2.type !== "TSInterfaceDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function da(e2, t2) {
    return !e2 || e2.type !== "TSInterfaceBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Pa(e2, t2) {
    return !e2 || e2.type !== "TSTypeAliasDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ia(e2, t2) {
    return !e2 || e2.type !== "TSInstantiationExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ha(e2, t2) {
    return !e2 || e2.type !== "TSAsExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function wa(e2, t2) {
    return !e2 || e2.type !== "TSSatisfiesExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ga(e2, t2) {
    return !e2 || e2.type !== "TSTypeAssertion" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ca(e2, t2) {
    return !e2 || e2.type !== "TSEnumBody" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Na(e2, t2) {
    return !e2 || e2.type !== "TSEnumDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ma(e2, t2) {
    return !e2 || e2.type !== "TSEnumMember" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ba(e2, t2) {
    return !e2 || e2.type !== "TSModuleDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function La(e2, t2) {
    return !e2 || e2.type !== "TSModuleBlock" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Oa(e2, t2) {
    return !e2 || e2.type !== "TSImportType" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Fa(e2, t2) {
    return !e2 || e2.type !== "TSImportEqualsDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ka(e2, t2) {
    return !e2 || e2.type !== "TSExternalModuleReference" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ka(e2, t2) {
    return !e2 || e2.type !== "TSNonNullExpression" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Xa(e2, t2) {
    return !e2 || e2.type !== "TSExportAssignment" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ja(e2, t2) {
    return !e2 || e2.type !== "TSNamespaceExportDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function ja(e2, t2) {
    return !e2 || e2.type !== "TSTypeAnnotation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ra(e2, t2) {
    return !e2 || e2.type !== "TSTypeParameterInstantiation" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function va(e2, t2) {
    return !e2 || e2.type !== "TSTypeParameterDeclaration" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Va(e2, t2) {
    return !e2 || e2.type !== "TSTypeParameter" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Ua(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ArrayExpression":
      case "AssignmentExpression":
      case "BinaryExpression":
      case "InterpreterDirective":
      case "Directive":
      case "DirectiveLiteral":
      case "BlockStatement":
      case "BreakStatement":
      case "CallExpression":
      case "CatchClause":
      case "ConditionalExpression":
      case "ContinueStatement":
      case "DebuggerStatement":
      case "DoWhileStatement":
      case "EmptyStatement":
      case "ExpressionStatement":
      case "File":
      case "ForInStatement":
      case "ForStatement":
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "Identifier":
      case "IfStatement":
      case "LabeledStatement":
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "RegExpLiteral":
      case "LogicalExpression":
      case "MemberExpression":
      case "NewExpression":
      case "Program":
      case "ObjectExpression":
      case "ObjectMethod":
      case "ObjectProperty":
      case "RestElement":
      case "ReturnStatement":
      case "SequenceExpression":
      case "ParenthesizedExpression":
      case "SwitchCase":
      case "SwitchStatement":
      case "ThisExpression":
      case "ThrowStatement":
      case "TryStatement":
      case "UnaryExpression":
      case "UpdateExpression":
      case "VariableDeclaration":
      case "VariableDeclarator":
      case "WhileStatement":
      case "WithStatement":
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ArrowFunctionExpression":
      case "ClassBody":
      case "ClassExpression":
      case "ClassDeclaration":
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
      case "ExportSpecifier":
      case "ForOfStatement":
      case "ImportDeclaration":
      case "ImportDefaultSpecifier":
      case "ImportNamespaceSpecifier":
      case "ImportSpecifier":
      case "ImportExpression":
      case "MetaProperty":
      case "ClassMethod":
      case "ObjectPattern":
      case "SpreadElement":
      case "Super":
      case "TaggedTemplateExpression":
      case "TemplateElement":
      case "TemplateLiteral":
      case "YieldExpression":
      case "AwaitExpression":
      case "Import":
      case "BigIntLiteral":
      case "ExportNamespaceSpecifier":
      case "OptionalMemberExpression":
      case "OptionalCallExpression":
      case "ClassProperty":
      case "ClassAccessorProperty":
      case "ClassPrivateProperty":
      case "ClassPrivateMethod":
      case "PrivateName":
      case "StaticBlock":
        break;
      case "Placeholder":
        switch (e2.expectedNode) {
          case "Identifier":
          case "StringLiteral":
          case "BlockStatement":
          case "ClassBody":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Wa(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ArrayExpression":
      case "AssignmentExpression":
      case "BinaryExpression":
      case "CallExpression":
      case "ConditionalExpression":
      case "FunctionExpression":
      case "Identifier":
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "RegExpLiteral":
      case "LogicalExpression":
      case "MemberExpression":
      case "NewExpression":
      case "ObjectExpression":
      case "SequenceExpression":
      case "ParenthesizedExpression":
      case "ThisExpression":
      case "UnaryExpression":
      case "UpdateExpression":
      case "ArrowFunctionExpression":
      case "ClassExpression":
      case "ImportExpression":
      case "MetaProperty":
      case "Super":
      case "TaggedTemplateExpression":
      case "TemplateLiteral":
      case "YieldExpression":
      case "AwaitExpression":
      case "Import":
      case "BigIntLiteral":
      case "OptionalMemberExpression":
      case "OptionalCallExpression":
      case "TypeCastExpression":
      case "JSXElement":
      case "JSXFragment":
      case "BindExpression":
      case "DoExpression":
      case "RecordExpression":
      case "TupleExpression":
      case "DecimalLiteral":
      case "ModuleExpression":
      case "TopicReference":
      case "PipelineTopicExpression":
      case "PipelineBareFunction":
      case "PipelinePrimaryTopicReference":
      case "TSInstantiationExpression":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      case "TSNonNullExpression":
        break;
      case "Placeholder":
        switch (e2.expectedNode) {
          case "Expression":
          case "Identifier":
          case "StringLiteral":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function qa(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BinaryExpression":
      case "LogicalExpression":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Qa(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BlockStatement":
      case "CatchClause":
      case "DoWhileStatement":
      case "ForInStatement":
      case "ForStatement":
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "Program":
      case "ObjectMethod":
      case "SwitchStatement":
      case "WhileStatement":
      case "ArrowFunctionExpression":
      case "ClassExpression":
      case "ClassDeclaration":
      case "ForOfStatement":
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "StaticBlock":
      case "TSModuleBlock":
        break;
      case "Placeholder":
        if (e2.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function za(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BlockStatement":
      case "CatchClause":
      case "DoWhileStatement":
      case "ForInStatement":
      case "ForStatement":
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "Program":
      case "ObjectMethod":
      case "SwitchStatement":
      case "WhileStatement":
      case "ArrowFunctionExpression":
      case "ForOfStatement":
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "StaticBlock":
      case "TSModuleBlock":
        break;
      case "Placeholder":
        if (e2.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function _a(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BlockStatement":
      case "Program":
      case "TSModuleBlock":
        break;
      case "Placeholder":
        if (e2.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Ga(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BlockStatement":
      case "BreakStatement":
      case "ContinueStatement":
      case "DebuggerStatement":
      case "DoWhileStatement":
      case "EmptyStatement":
      case "ExpressionStatement":
      case "ForInStatement":
      case "ForStatement":
      case "FunctionDeclaration":
      case "IfStatement":
      case "LabeledStatement":
      case "ReturnStatement":
      case "SwitchStatement":
      case "ThrowStatement":
      case "TryStatement":
      case "VariableDeclaration":
      case "WhileStatement":
      case "WithStatement":
      case "ClassDeclaration":
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
      case "ForOfStatement":
      case "ImportDeclaration":
      case "DeclareClass":
      case "DeclareFunction":
      case "DeclareInterface":
      case "DeclareModule":
      case "DeclareModuleExports":
      case "DeclareTypeAlias":
      case "DeclareOpaqueType":
      case "DeclareVariable":
      case "DeclareExportDeclaration":
      case "DeclareExportAllDeclaration":
      case "InterfaceDeclaration":
      case "OpaqueType":
      case "TypeAlias":
      case "EnumDeclaration":
      case "TSDeclareFunction":
      case "TSInterfaceDeclaration":
      case "TSTypeAliasDeclaration":
      case "TSEnumDeclaration":
      case "TSModuleDeclaration":
      case "TSImportEqualsDeclaration":
      case "TSExportAssignment":
      case "TSNamespaceExportDeclaration":
        break;
      case "Placeholder":
        switch (e2.expectedNode) {
          case "Statement":
          case "Declaration":
          case "BlockStatement":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Ya(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BreakStatement":
      case "ContinueStatement":
      case "ReturnStatement":
      case "ThrowStatement":
      case "YieldExpression":
      case "AwaitExpression":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function $a(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "BreakStatement":
      case "ContinueStatement":
      case "ReturnStatement":
      case "ThrowStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Ha(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ConditionalExpression":
      case "IfStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Za(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "DoWhileStatement":
      case "ForInStatement":
      case "ForStatement":
      case "WhileStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function en(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "DoWhileStatement":
      case "WhileStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function tn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ExpressionStatement":
      case "ParenthesizedExpression":
      case "TypeCastExpression":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function rn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ForInStatement":
      case "ForStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function an(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ForInStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function nn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "ObjectMethod":
      case "ArrowFunctionExpression":
      case "ClassMethod":
      case "ClassPrivateMethod":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function ln(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "ObjectMethod":
      case "ArrowFunctionExpression":
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "StaticBlock":
      case "TSModuleBlock":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function sn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "RegExpLiteral":
      case "ArrowFunctionExpression":
      case "BigIntLiteral":
      case "DecimalLiteral":
        break;
      case "Placeholder":
        if (e2.expectedNode === "StringLiteral") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function un(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "FunctionDeclaration":
      case "VariableDeclaration":
      case "ClassDeclaration":
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
      case "ImportDeclaration":
      case "DeclareClass":
      case "DeclareFunction":
      case "DeclareInterface":
      case "DeclareModule":
      case "DeclareModuleExports":
      case "DeclareTypeAlias":
      case "DeclareOpaqueType":
      case "DeclareVariable":
      case "DeclareExportDeclaration":
      case "DeclareExportAllDeclaration":
      case "InterfaceDeclaration":
      case "OpaqueType":
      case "TypeAlias":
      case "EnumDeclaration":
      case "TSDeclareFunction":
      case "TSInterfaceDeclaration":
      case "TSTypeAliasDeclaration":
      case "TSEnumDeclaration":
      case "TSModuleDeclaration":
      case "TSImportEqualsDeclaration":
        break;
      case "Placeholder":
        if (e2.expectedNode === "Declaration") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function fn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "Identifier":
      case "RestElement":
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ObjectPattern":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      case "TSNonNullExpression":
        break;
      case "Placeholder":
        switch (e2.expectedNode) {
          case "Pattern":
          case "Identifier":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function cn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "Identifier":
      case "MemberExpression":
      case "RestElement":
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ObjectPattern":
      case "TSParameterProperty":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      case "TSNonNullExpression":
        break;
      case "Placeholder":
        switch (e2.expectedNode) {
          case "Pattern":
          case "Identifier":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function pn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "Identifier":
      case "TSQualifiedName":
        break;
      case "Placeholder":
        if (e2.expectedNode === "Identifier") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function yn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "RegExpLiteral":
      case "TemplateLiteral":
      case "BigIntLiteral":
      case "DecimalLiteral":
        break;
      case "Placeholder":
        if (e2.expectedNode === "StringLiteral") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function on(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "BigIntLiteral":
      case "JSXAttribute":
      case "JSXClosingElement":
      case "JSXElement":
      case "JSXExpressionContainer":
      case "JSXSpreadChild":
      case "JSXOpeningElement":
      case "JSXText":
      case "JSXFragment":
      case "JSXOpeningFragment":
      case "JSXClosingFragment":
      case "DecimalLiteral":
        break;
      case "Placeholder":
        if (e2.expectedNode === "StringLiteral") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Tn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ObjectMethod":
      case "ObjectProperty":
      case "ObjectTypeInternalSlot":
      case "ObjectTypeCallProperty":
      case "ObjectTypeIndexer":
      case "ObjectTypeProperty":
      case "ObjectTypeSpreadProperty":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Sn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ObjectMethod":
      case "ClassMethod":
      case "ClassPrivateMethod":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function mn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ObjectMethod":
      case "ObjectProperty":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function En(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ObjectProperty":
      case "ClassProperty":
      case "ClassAccessorProperty":
      case "ClassPrivateProperty":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function xn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "UnaryExpression":
      case "SpreadElement":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Dn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ObjectPattern":
        break;
      case "Placeholder":
        if (e2.expectedNode === "Pattern") break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function An(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ClassExpression":
      case "ClassDeclaration":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function i2(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
      case "ImportDeclaration":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function bn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function dn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ExportSpecifier":
      case "ImportDefaultSpecifier":
      case "ImportNamespaceSpecifier":
      case "ImportSpecifier":
      case "ExportNamespaceSpecifier":
      case "ExportDefaultSpecifier":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Pn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ClassAccessorProperty":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function In(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "ClassPrivateProperty":
      case "ClassPrivateMethod":
      case "PrivateName":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function hn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "AnyTypeAnnotation":
      case "ArrayTypeAnnotation":
      case "BooleanTypeAnnotation":
      case "BooleanLiteralTypeAnnotation":
      case "NullLiteralTypeAnnotation":
      case "ClassImplements":
      case "DeclareClass":
      case "DeclareFunction":
      case "DeclareInterface":
      case "DeclareModule":
      case "DeclareModuleExports":
      case "DeclareTypeAlias":
      case "DeclareOpaqueType":
      case "DeclareVariable":
      case "DeclareExportDeclaration":
      case "DeclareExportAllDeclaration":
      case "DeclaredPredicate":
      case "ExistsTypeAnnotation":
      case "FunctionTypeAnnotation":
      case "FunctionTypeParam":
      case "GenericTypeAnnotation":
      case "InferredPredicate":
      case "InterfaceExtends":
      case "InterfaceDeclaration":
      case "InterfaceTypeAnnotation":
      case "IntersectionTypeAnnotation":
      case "MixedTypeAnnotation":
      case "EmptyTypeAnnotation":
      case "NullableTypeAnnotation":
      case "NumberLiteralTypeAnnotation":
      case "NumberTypeAnnotation":
      case "ObjectTypeAnnotation":
      case "ObjectTypeInternalSlot":
      case "ObjectTypeCallProperty":
      case "ObjectTypeIndexer":
      case "ObjectTypeProperty":
      case "ObjectTypeSpreadProperty":
      case "OpaqueType":
      case "QualifiedTypeIdentifier":
      case "StringLiteralTypeAnnotation":
      case "StringTypeAnnotation":
      case "SymbolTypeAnnotation":
      case "ThisTypeAnnotation":
      case "TupleTypeAnnotation":
      case "TypeofTypeAnnotation":
      case "TypeAlias":
      case "TypeAnnotation":
      case "TypeCastExpression":
      case "TypeParameter":
      case "TypeParameterDeclaration":
      case "TypeParameterInstantiation":
      case "UnionTypeAnnotation":
      case "Variance":
      case "VoidTypeAnnotation":
      case "EnumDeclaration":
      case "EnumBooleanBody":
      case "EnumNumberBody":
      case "EnumStringBody":
      case "EnumSymbolBody":
      case "EnumBooleanMember":
      case "EnumNumberMember":
      case "EnumStringMember":
      case "EnumDefaultedMember":
      case "IndexedAccessType":
      case "OptionalIndexedAccessType":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function wn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "AnyTypeAnnotation":
      case "ArrayTypeAnnotation":
      case "BooleanTypeAnnotation":
      case "BooleanLiteralTypeAnnotation":
      case "NullLiteralTypeAnnotation":
      case "ExistsTypeAnnotation":
      case "FunctionTypeAnnotation":
      case "GenericTypeAnnotation":
      case "InterfaceTypeAnnotation":
      case "IntersectionTypeAnnotation":
      case "MixedTypeAnnotation":
      case "EmptyTypeAnnotation":
      case "NullableTypeAnnotation":
      case "NumberLiteralTypeAnnotation":
      case "NumberTypeAnnotation":
      case "ObjectTypeAnnotation":
      case "StringLiteralTypeAnnotation":
      case "StringTypeAnnotation":
      case "SymbolTypeAnnotation":
      case "ThisTypeAnnotation":
      case "TupleTypeAnnotation":
      case "TypeofTypeAnnotation":
      case "UnionTypeAnnotation":
      case "VoidTypeAnnotation":
      case "IndexedAccessType":
      case "OptionalIndexedAccessType":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function gn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "AnyTypeAnnotation":
      case "BooleanTypeAnnotation":
      case "NullLiteralTypeAnnotation":
      case "MixedTypeAnnotation":
      case "EmptyTypeAnnotation":
      case "NumberTypeAnnotation":
      case "StringTypeAnnotation":
      case "SymbolTypeAnnotation":
      case "ThisTypeAnnotation":
      case "VoidTypeAnnotation":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Cn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "DeclareClass":
      case "DeclareFunction":
      case "DeclareInterface":
      case "DeclareModule":
      case "DeclareModuleExports":
      case "DeclareTypeAlias":
      case "DeclareOpaqueType":
      case "DeclareVariable":
      case "DeclareExportDeclaration":
      case "DeclareExportAllDeclaration":
      case "InterfaceDeclaration":
      case "OpaqueType":
      case "TypeAlias":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Nn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "DeclaredPredicate":
      case "InferredPredicate":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Mn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "EnumBooleanBody":
      case "EnumNumberBody":
      case "EnumStringBody":
      case "EnumSymbolBody":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Bn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "EnumBooleanMember":
      case "EnumNumberMember":
      case "EnumStringMember":
      case "EnumDefaultedMember":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Ln(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "JSXAttribute":
      case "JSXClosingElement":
      case "JSXElement":
      case "JSXEmptyExpression":
      case "JSXExpressionContainer":
      case "JSXSpreadChild":
      case "JSXIdentifier":
      case "JSXMemberExpression":
      case "JSXNamespacedName":
      case "JSXOpeningElement":
      case "JSXSpreadAttribute":
      case "JSXText":
      case "JSXFragment":
      case "JSXOpeningFragment":
      case "JSXClosingFragment":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function On(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "Noop":
      case "Placeholder":
      case "V8IntrinsicIdentifier":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Fn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "TSParameterProperty":
      case "TSDeclareFunction":
      case "TSDeclareMethod":
      case "TSQualifiedName":
      case "TSCallSignatureDeclaration":
      case "TSConstructSignatureDeclaration":
      case "TSPropertySignature":
      case "TSMethodSignature":
      case "TSIndexSignature":
      case "TSAnyKeyword":
      case "TSBooleanKeyword":
      case "TSBigIntKeyword":
      case "TSIntrinsicKeyword":
      case "TSNeverKeyword":
      case "TSNullKeyword":
      case "TSNumberKeyword":
      case "TSObjectKeyword":
      case "TSStringKeyword":
      case "TSSymbolKeyword":
      case "TSUndefinedKeyword":
      case "TSUnknownKeyword":
      case "TSVoidKeyword":
      case "TSThisType":
      case "TSFunctionType":
      case "TSConstructorType":
      case "TSTypeReference":
      case "TSTypePredicate":
      case "TSTypeQuery":
      case "TSTypeLiteral":
      case "TSArrayType":
      case "TSTupleType":
      case "TSOptionalType":
      case "TSRestType":
      case "TSNamedTupleMember":
      case "TSUnionType":
      case "TSIntersectionType":
      case "TSConditionalType":
      case "TSInferType":
      case "TSParenthesizedType":
      case "TSTypeOperator":
      case "TSIndexedAccessType":
      case "TSMappedType":
      case "TSTemplateLiteralType":
      case "TSLiteralType":
      case "TSExpressionWithTypeArguments":
      case "TSInterfaceDeclaration":
      case "TSInterfaceBody":
      case "TSTypeAliasDeclaration":
      case "TSInstantiationExpression":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      case "TSEnumBody":
      case "TSEnumDeclaration":
      case "TSEnumMember":
      case "TSModuleDeclaration":
      case "TSModuleBlock":
      case "TSImportType":
      case "TSImportEqualsDeclaration":
      case "TSExternalModuleReference":
      case "TSNonNullExpression":
      case "TSExportAssignment":
      case "TSNamespaceExportDeclaration":
      case "TSTypeAnnotation":
      case "TSTypeParameterInstantiation":
      case "TSTypeParameterDeclaration":
      case "TSTypeParameter":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function kn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "TSCallSignatureDeclaration":
      case "TSConstructSignatureDeclaration":
      case "TSPropertySignature":
      case "TSMethodSignature":
      case "TSIndexSignature":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Kn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "TSAnyKeyword":
      case "TSBooleanKeyword":
      case "TSBigIntKeyword":
      case "TSIntrinsicKeyword":
      case "TSNeverKeyword":
      case "TSNullKeyword":
      case "TSNumberKeyword":
      case "TSObjectKeyword":
      case "TSStringKeyword":
      case "TSSymbolKeyword":
      case "TSUndefinedKeyword":
      case "TSUnknownKeyword":
      case "TSVoidKeyword":
      case "TSThisType":
      case "TSFunctionType":
      case "TSConstructorType":
      case "TSTypeReference":
      case "TSTypePredicate":
      case "TSTypeQuery":
      case "TSTypeLiteral":
      case "TSArrayType":
      case "TSTupleType":
      case "TSOptionalType":
      case "TSRestType":
      case "TSUnionType":
      case "TSIntersectionType":
      case "TSConditionalType":
      case "TSInferType":
      case "TSParenthesizedType":
      case "TSTypeOperator":
      case "TSIndexedAccessType":
      case "TSMappedType":
      case "TSTemplateLiteralType":
      case "TSLiteralType":
      case "TSExpressionWithTypeArguments":
      case "TSImportType":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Xn(e2, t2) {
    if (!e2) return false;
    switch (e2.type) {
      case "TSAnyKeyword":
      case "TSBooleanKeyword":
      case "TSBigIntKeyword":
      case "TSIntrinsicKeyword":
      case "TSNeverKeyword":
      case "TSNullKeyword":
      case "TSNumberKeyword":
      case "TSObjectKeyword":
      case "TSStringKeyword":
      case "TSSymbolKeyword":
      case "TSUndefinedKeyword":
      case "TSUnknownKeyword":
      case "TSVoidKeyword":
      case "TSThisType":
      case "TSTemplateLiteralType":
      case "TSLiteralType":
        break;
      default:
        return false;
    }
    return t2 == null || (0, a2.default)(e2, t2);
  }
  function Jn(e2, t2) {
    return (0, n2.default)("isNumberLiteral", "isNumericLiteral"), !e2 || e2.type !== "NumberLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function jn(e2, t2) {
    return (0, n2.default)("isRegexLiteral", "isRegExpLiteral"), !e2 || e2.type !== "RegexLiteral" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Rn(e2, t2) {
    return (0, n2.default)("isRestProperty", "isRestElement"), !e2 || e2.type !== "RestProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function vn(e2, t2) {
    return (0, n2.default)("isSpreadProperty", "isSpreadElement"), !e2 || e2.type !== "SpreadProperty" ? false : t2 == null || (0, a2.default)(e2, t2);
  }
  function Vn(e2, t2) {
    return (0, n2.default)("isModuleDeclaration", "isImportOrExportDeclaration"), i2(e2, t2);
  }
  return e$P;
}
var p$2;
function d$4() {
  if (p$2) return t$b;
  p$2 = 1, Object.defineProperty(t$b, "__esModule", { value: true }), t$b.default = h;
  var t2 = qn();
  function h(l2, o2, c2) {
    if (!(0, t2.isMemberExpression)(l2)) return false;
    const i2 = Array.isArray(o2) ? o2 : o2.split("."), e2 = [];
    let r2;
    for (r2 = l2; (0, t2.isMemberExpression)(r2); r2 = r2.object) e2.push(r2.property);
    if (e2.push(r2), e2.length < i2.length || !c2 && e2.length > i2.length) return false;
    for (let u2 = 0, f2 = e2.length - 1; u2 < i2.length; u2++, f2--) {
      const s2 = e2[f2];
      let n2;
      if ((0, t2.isIdentifier)(s2)) n2 = s2.name;
      else if ((0, t2.isStringLiteral)(s2)) n2 = s2.value;
      else if ((0, t2.isThisExpression)(s2)) n2 = "this";
      else return false;
      if (i2[u2] !== n2) return false;
    }
    return true;
  }
  return t$b;
}
var r$u;
function m$3() {
  if (r$u) return e$Q;
  r$u = 1, Object.defineProperty(e$Q, "__esModule", { value: true }), e$Q.default = s2;
  var t2 = d$4();
  function s2(i2, u2) {
    const o2 = i2.split(".");
    return (a2) => (0, t2.default)(a2, o2, u2);
  }
  return e$Q;
}
var r$t;
function u$a() {
  if (r$t) return e$R;
  r$t = 1, Object.defineProperty(e$R, "__esModule", { value: true }), e$R.default = void 0;
  var t2 = m$3();
  const o2 = (0, t2.default)("React.Component");
  e$R.default = o2;
  return e$R;
}
var a$g = {};
var t$a;
function s$8() {
  if (t$a) return a$g;
  t$a = 1, Object.defineProperty(a$g, "__esModule", { value: true }), a$g.default = o2;
  function o2(r2) {
    return !!r2 && /^[a-z]/.test(r2);
  }
  return a$g;
}
var r$s = {};
var e$O = {};
var e$N = {};
var e$M = {};
var a$f = {};
var e$L = {};
var r$r = {};
var r$q = {};
var e$K = {};
var t$9;
function a$e() {
  if (t$9) return e$K;
  t$9 = 1, Object.defineProperty(e$K, "__esModule", { value: true }), e$K.default = f2;
  var s2 = I$1();
  function f2(r2, u2) {
    if (r2 === u2) return true;
    if (r2 == null || s2.ALIAS_KEYS[u2]) return false;
    const i2 = s2.FLIPPED_ALIAS_KEYS[u2];
    if (i2) {
      if (i2[0] === r2) return true;
      for (const n2 of i2) if (r2 === n2) return true;
    }
    return false;
  }
  return e$K;
}
var e$J = {};
var s$7;
function n$8() {
  if (s$7) return e$J;
  s$7 = 1, Object.defineProperty(e$J, "__esModule", { value: true }), e$J.default = t2;
  var u2 = I$1();
  function t2(r2, i2) {
    if (r2 === i2) return true;
    const o2 = u2.PLACEHOLDERS_ALIAS[r2];
    if (o2) {
      for (const a2 of o2) if (i2 === a2) return true;
    }
    return false;
  }
  return e$J;
}
var t$8;
function c$7() {
  if (t$8) return r$q;
  t$8 = 1, Object.defineProperty(r$q, "__esModule", { value: true }), r$q.default = o2;
  var a2 = a$h(), s2 = a$e(), f2 = n$8(), _2 = I$1();
  function o2(u2, e2, i2) {
    return e2 ? (0, s2.default)(e2.type, u2) ? i2 === void 0 ? true : (0, a2.default)(e2, i2) : !i2 && e2.type === "Placeholder" && u2 in _2.FLIPPED_ALIAS_KEYS ? (0, f2.default)(e2.expectedNode, u2) : false : false;
  }
  return r$q;
}
var e$I = {};
var r$p = {};
var e$H = {};
var l$5;
function o$m() {
  if (l$5) return e$H;
  l$5 = 1, Object.defineProperty(e$H, "__esModule", { value: true }), e$H.isIdentifierChar = s2, e$H.isIdentifierName = h, e$H.isIdentifierStart = n2;
  let c2 = "\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", t2 = "\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";
  const x2 = new RegExp("[" + c2 + "]"), I2 = new RegExp("[" + c2 + t2 + "]");
  c2 = t2 = null;
  const i2 = [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], C = [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];
  function r2(u2, e2) {
    let a2 = 65536;
    for (let f2 = 0, d2 = e2.length; f2 < d2; f2 += 2) {
      if (a2 += e2[f2], a2 > u2) return false;
      if (a2 += e2[f2 + 1], a2 >= u2) return true;
    }
    return false;
  }
  function n2(u2) {
    return u2 < 65 ? u2 === 36 : u2 <= 90 ? true : u2 < 97 ? u2 === 95 : u2 <= 122 ? true : u2 <= 65535 ? u2 >= 170 && x2.test(String.fromCharCode(u2)) : r2(u2, i2);
  }
  function s2(u2) {
    return u2 < 48 ? u2 === 36 : u2 < 58 ? true : u2 < 65 ? false : u2 <= 90 ? true : u2 < 97 ? u2 === 95 : u2 <= 122 ? true : u2 <= 65535 ? u2 >= 170 && I2.test(String.fromCharCode(u2)) : r2(u2, i2) || r2(u2, C);
  }
  function h(u2) {
    let e2 = true;
    for (let a2 = 0; a2 < u2.length; a2++) {
      let f2 = u2.charCodeAt(a2);
      if ((f2 & 64512) === 55296 && a2 + 1 < u2.length) {
        const d2 = u2.charCodeAt(++a2);
        (d2 & 64512) === 56320 && (f2 = 65536 + ((f2 & 1023) << 10) + (d2 & 1023));
      }
      if (e2) {
        if (e2 = false, !n2(f2)) return false;
      } else if (!s2(f2)) return false;
    }
    return !e2;
  }
  return e$H;
}
var r$o = {};
var d$3;
function v() {
  if (d$3) return r$o;
  d$3 = 1, Object.defineProperty(r$o, "__esModule", { value: true }), r$o.isKeyword = f2, r$o.isReservedWord = s2, r$o.isStrictBindOnlyReservedWord = o2, r$o.isStrictBindReservedWord = l2, r$o.isStrictReservedWord = n2;
  const i2 = { keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"], strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"], strictBind: ["eval", "arguments"] }, c2 = new Set(i2.keyword), u2 = new Set(i2.strict), a2 = new Set(i2.strictBind);
  function s2(e2, t2) {
    return t2 && e2 === "await" || e2 === "enum";
  }
  function n2(e2, t2) {
    return s2(e2, t2) || u2.has(e2);
  }
  function o2(e2) {
    return a2.has(e2);
  }
  function l2(e2, t2) {
    return n2(e2, t2) || o2(e2);
  }
  function f2(e2) {
    return c2.has(e2);
  }
  return r$o;
}
var n$7;
function o$l() {
  return n$7 ? r$p : (n$7 = 1, (function(e2) {
    Object.defineProperty(e2, "__esModule", { value: true }), Object.defineProperty(e2, "isIdentifierChar", { enumerable: true, get: function() {
      return t2.isIdentifierChar;
    } }), Object.defineProperty(e2, "isIdentifierName", { enumerable: true, get: function() {
      return t2.isIdentifierName;
    } }), Object.defineProperty(e2, "isIdentifierStart", { enumerable: true, get: function() {
      return t2.isIdentifierStart;
    } }), Object.defineProperty(e2, "isKeyword", { enumerable: true, get: function() {
      return r2.isKeyword;
    } }), Object.defineProperty(e2, "isReservedWord", { enumerable: true, get: function() {
      return r2.isReservedWord;
    } }), Object.defineProperty(e2, "isStrictBindOnlyReservedWord", { enumerable: true, get: function() {
      return r2.isStrictBindOnlyReservedWord;
    } }), Object.defineProperty(e2, "isStrictBindReservedWord", { enumerable: true, get: function() {
      return r2.isStrictBindReservedWord;
    } }), Object.defineProperty(e2, "isStrictReservedWord", { enumerable: true, get: function() {
      return r2.isStrictReservedWord;
    } });
    var t2 = o$m(), r2 = v();
  })(r$p), r$p);
}
var t$7;
function d$2() {
  if (t$7) return e$I;
  t$7 = 1, Object.defineProperty(e$I, "__esModule", { value: true }), e$I.default = s2;
  var i2 = o$l();
  function s2(e2, u2 = true) {
    return typeof e2 != "string" || u2 && ((0, i2.isKeyword)(e2) || (0, i2.isStrictReservedWord)(e2, true)) ? false : (0, i2.isIdentifierName)(e2);
  }
  return e$I;
}
var r$n = {};
var q$2;
function B$2() {
  if (q$2) return r$n;
  q$2 = 1, Object.defineProperty(r$n, "__esModule", { value: true }), r$n.readCodePoint = N2, r$n.readInt = I2, r$n.readStringContents = k;
  var S = function(e2) {
    return e2 >= 48 && e2 <= 57;
  };
  const x2 = { decBinOct: /* @__PURE__ */ new Set([46, 66, 69, 79, 95, 98, 101, 111]), hex: /* @__PURE__ */ new Set([46, 88, 95, 120]) }, A2 = { bin: (t2) => t2 === 48 || t2 === 49, oct: (t2) => t2 >= 48 && t2 <= 55, dec: (t2) => t2 >= 48 && t2 <= 57, hex: (t2) => t2 >= 48 && t2 <= 57 || t2 >= 65 && t2 <= 70 || t2 >= 97 && t2 <= 102 };
  function k(t2, e2, n2, l2, r2, f2) {
    const s2 = n2, c2 = l2, d2 = r2;
    let i2 = "", h = null, a2 = n2;
    const { length: m2 } = e2;
    for (; ; ) {
      if (n2 >= m2) {
        f2.unterminated(s2, c2, d2), i2 += e2.slice(a2, n2);
        break;
      }
      const u2 = e2.charCodeAt(n2);
      if (E(t2, u2, e2, n2)) {
        i2 += e2.slice(a2, n2);
        break;
      }
      if (u2 === 92) {
        i2 += e2.slice(a2, n2);
        const b2 = D(e2, n2, l2, r2, t2 === "template", f2);
        b2.ch === null && !h ? h = { pos: n2, lineStart: l2, curLine: r2 } : i2 += b2.ch, { pos: n2, lineStart: l2, curLine: r2 } = b2, a2 = n2;
      } else u2 === 8232 || u2 === 8233 ? (++n2, ++r2, l2 = n2) : u2 === 10 || u2 === 13 ? t2 === "template" ? (i2 += e2.slice(a2, n2) + `
`, ++n2, u2 === 13 && e2.charCodeAt(n2) === 10 && ++n2, ++r2, a2 = l2 = n2) : f2.unterminated(s2, c2, d2) : ++n2;
    }
    return { pos: n2, str: i2, firstInvalidLoc: h, lineStart: l2, curLine: r2, containsInvalid: !!h };
  }
  function E(t2, e2, n2, l2) {
    return t2 === "template" ? e2 === 96 || e2 === 36 && n2.charCodeAt(l2 + 1) === 123 : e2 === (t2 === "double" ? 34 : 39);
  }
  function D(t2, e2, n2, l2, r2, f2) {
    const s2 = !r2;
    e2++;
    const c2 = (i2) => ({ pos: e2, ch: i2, lineStart: n2, curLine: l2 }), d2 = t2.charCodeAt(e2++);
    switch (d2) {
      case 110:
        return c2(`
`);
      case 114:
        return c2("\r");
      case 120: {
        let i2;
        return { code: i2, pos: e2 } = v2(t2, e2, n2, l2, 2, false, s2, f2), c2(i2 === null ? null : String.fromCharCode(i2));
      }
      case 117: {
        let i2;
        return { code: i2, pos: e2 } = N2(t2, e2, n2, l2, s2, f2), c2(i2 === null ? null : String.fromCodePoint(i2));
      }
      case 116:
        return c2("	");
      case 98:
        return c2("\b");
      case 118:
        return c2("\v");
      case 102:
        return c2("\f");
      case 13:
        t2.charCodeAt(e2) === 10 && ++e2;
      case 10:
        n2 = e2, ++l2;
      case 8232:
      case 8233:
        return c2("");
      case 56:
      case 57:
        if (r2) return c2(null);
        f2.strictNumericEscape(e2 - 1, n2, l2);
      default:
        if (d2 >= 48 && d2 <= 55) {
          const i2 = e2 - 1;
          let a2 = /^[0-7]+/.exec(t2.slice(i2, e2 + 2))[0], m2 = parseInt(a2, 8);
          m2 > 255 && (a2 = a2.slice(0, -1), m2 = parseInt(a2, 8)), e2 += a2.length - 1;
          const u2 = t2.charCodeAt(e2);
          if (a2 !== "0" || u2 === 56 || u2 === 57) {
            if (r2) return c2(null);
            f2.strictNumericEscape(i2, n2, l2);
          }
          return c2(String.fromCharCode(m2));
        }
        return c2(String.fromCharCode(d2));
    }
  }
  function v2(t2, e2, n2, l2, r2, f2, s2, c2) {
    const d2 = e2;
    let i2;
    return { n: i2, pos: e2 } = I2(t2, e2, n2, l2, 16, r2, f2, false, c2, !s2), i2 === null && (s2 ? c2.invalidEscapeSequence(d2, n2, l2) : e2 = d2 - 1), { code: i2, pos: e2 };
  }
  function I2(t2, e2, n2, l2, r2, f2, s2, c2, d2, i2) {
    const h = e2, a2 = r2 === 16 ? x2.hex : x2.decBinOct, m2 = r2 === 16 ? A2.hex : r2 === 10 ? A2.dec : r2 === 8 ? A2.oct : A2.bin;
    let u2 = false, b2 = 0;
    for (let _2 = 0, j = _nullishCoalesce(f2, () => ( 1 / 0)); _2 < j; ++_2) {
      const g2 = t2.charCodeAt(e2);
      let C;
      if (g2 === 95 && c2 !== "bail") {
        const w = t2.charCodeAt(e2 - 1), P2 = t2.charCodeAt(e2 + 1);
        if (c2) {
          if (Number.isNaN(P2) || !m2(P2) || a2.has(w) || a2.has(P2)) {
            if (i2) return { n: null, pos: e2 };
            d2.unexpectedNumericSeparator(e2, n2, l2);
          }
        } else {
          if (i2) return { n: null, pos: e2 };
          d2.numericSeparatorInEscapeSequence(e2, n2, l2);
        }
        ++e2;
        continue;
      }
      if (g2 >= 97 ? C = g2 - 97 + 10 : g2 >= 65 ? C = g2 - 65 + 10 : S(g2) ? C = g2 - 48 : C = 1 / 0, C >= r2) {
        if (C <= 9 && i2) return { n: null, pos: e2 };
        if (C <= 9 && d2.invalidDigit(e2, n2, l2, r2)) C = 0;
        else if (s2) C = 0, u2 = true;
        else break;
      }
      ++e2, b2 = b2 * r2 + C;
    }
    return e2 === h || f2 != null && e2 - h !== f2 || u2 ? { n: null, pos: e2 } : { n: b2, pos: e2 };
  }
  function N2(t2, e2, n2, l2, r2, f2) {
    const s2 = t2.charCodeAt(e2);
    let c2;
    if (s2 === 123) {
      if (++e2, { code: c2, pos: e2 } = v2(t2, e2, n2, l2, t2.indexOf("}", e2) - e2, true, r2, f2), ++e2, c2 !== null && c2 > 1114111) if (r2) f2.invalidCodePoint(e2, n2, l2);
      else return { code: null, pos: e2 };
    } else ({ code: c2, pos: e2 } = v2(t2, e2, n2, l2, 4, false, r2, f2));
    return { code: c2, pos: e2 };
  }
  return r$n;
}
var s$6 = {};
var A;
function B$1() {
  if (A) return s$6;
  A = 1, Object.defineProperty(s$6, "__esModule", { value: true }), s$6.UPDATE_OPERATORS = s$6.UNARY_OPERATORS = s$6.STRING_UNARY_OPERATORS = s$6.STATEMENT_OR_BLOCK_KEYS = s$6.NUMBER_UNARY_OPERATORS = s$6.NUMBER_BINARY_OPERATORS = s$6.NOT_LOCAL_BINDING = s$6.LOGICAL_OPERATORS = s$6.INHERIT_KEYS = s$6.FOR_INIT_KEYS = s$6.FLATTENABLE_KEYS = s$6.EQUALITY_BINARY_OPERATORS = s$6.COMPARISON_BINARY_OPERATORS = s$6.COMMENT_KEYS = s$6.BOOLEAN_UNARY_OPERATORS = s$6.BOOLEAN_NUMBER_BINARY_OPERATORS = s$6.BOOLEAN_BINARY_OPERATORS = s$6.BLOCK_SCOPED_SYMBOL = s$6.BINARY_OPERATORS = s$6.ASSIGNMENT_OPERATORS = void 0;
  s$6.STATEMENT_OR_BLOCK_KEYS = ["consequent", "body", "alternate"];
  s$6.FLATTENABLE_KEYS = ["body", "expressions"];
  s$6.FOR_INIT_KEYS = ["left", "init"];
  s$6.COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
  const E = s$6.LOGICAL_OPERATORS = ["||", "&&", "??"];
  s$6.UPDATE_OPERATORS = ["++", "--"];
  const N2 = s$6.BOOLEAN_NUMBER_BINARY_OPERATORS = [">", "<", ">=", "<="], T2 = s$6.EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="], S = s$6.COMPARISON_BINARY_OPERATORS = [...T2, "in", "instanceof"], o2 = s$6.BOOLEAN_BINARY_OPERATORS = [...S, ...N2], _2 = s$6.NUMBER_BINARY_OPERATORS = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
  s$6.BINARY_OPERATORS = ["+", ..._2, ...o2, "|>"];
  s$6.ASSIGNMENT_OPERATORS = ["=", "+=", ..._2.map((R) => R + "="), ...E.map((R) => R + "=")];
  const t2 = s$6.BOOLEAN_UNARY_OPERATORS = ["delete", "!"], n2 = s$6.NUMBER_UNARY_OPERATORS = ["+", "-", "~"], e2 = s$6.STRING_UNARY_OPERATORS = ["typeof"];
  s$6.UNARY_OPERATORS = ["void", "throw", ...t2, ...n2, ...e2];
  s$6.INHERIT_KEYS = { optional: ["typeAnnotation", "typeParameters", "returnType"], force: ["start", "loc", "end"] };
  s$6.BLOCK_SCOPED_SYMBOL = Symbol.for("var used to be block scoped");
  s$6.NOT_LOCAL_BINDING = Symbol.for("should not be considered a local binding");
  return s$6;
}
var r$m = {};
var N$3;
function J() {
  if (N$3) return r$m;
  N$3 = 1, Object.defineProperty(r$m, "__esModule", { value: true }), r$m.VISITOR_KEYS = r$m.NODE_PARENT_VALIDATIONS = r$m.NODE_FIELDS = r$m.FLIPPED_ALIAS_KEYS = r$m.DEPRECATED_KEYS = r$m.BUILDER_KEYS = r$m.ALIAS_KEYS = void 0, r$m.arrayOf = A2, r$m.arrayOfType = T2, r$m.assertEach = _2, r$m.assertNodeOrValueType = k, r$m.assertNodeType = p2, r$m.assertOneOf = V, r$m.assertOptionalChainStart = j, r$m.assertShape = x2, r$m.assertValueType = h, r$m.chain = w, r$m.default = I2, r$m.defineAliasedType = q2, r$m.validate = O, r$m.validateArrayOfType = R, r$m.validateOptional = K, r$m.validateOptionalType = Y2, r$m.validateType = g2;
  var S = c$7(), c2 = N$1();
  const $ = r$m.VISITOR_KEYS = {}, b2 = r$m.ALIAS_KEYS = {}, E = r$m.FLIPPED_ALIAS_KEYS = {}, D = r$m.NODE_FIELDS = {}, P2 = r$m.BUILDER_KEYS = {}, m2 = r$m.DEPRECATED_KEYS = {}, L = r$m.NODE_PARENT_VALIDATIONS = {};
  function y2(e2) {
    return Array.isArray(e2) ? "array" : e2 === null ? "null" : typeof e2;
  }
  function O(e2) {
    return { validate: e2 };
  }
  function g2(...e2) {
    return O(p2(...e2));
  }
  function K(e2) {
    return { validate: e2, optional: true };
  }
  function Y2(...e2) {
    return { validate: p2(...e2), optional: true };
  }
  function A2(e2) {
    return w(h("array"), _2(e2));
  }
  function T2(...e2) {
    return A2(p2(...e2));
  }
  function R(...e2) {
    return O(T2(...e2));
  }
  function _2(e2) {
    const r2 = process.env.BABEL_TYPES_8_BREAKING ? c2.validateChild : () => {
    };
    function n2(t2, a2, l2) {
      if (Array.isArray(l2)) for (let s2 = 0; s2 < l2.length; s2++) {
        const o2 = `${a2}[${s2}]`, f2 = l2[s2];
        e2(t2, o2, f2), r2(t2, o2, f2);
      }
    }
    return n2.each = e2, n2;
  }
  function V(...e2) {
    function r2(n2, t2, a2) {
      if (!e2.includes(a2)) throw new TypeError(`Property ${t2} expected value to be one of ${JSON.stringify(e2)} but got ${JSON.stringify(a2)}`);
    }
    return r2.oneOf = e2, r2;
  }
  function p2(...e2) {
    function r2(n2, t2, a2) {
      for (const l2 of e2) if ((0, S.default)(l2, a2)) {
        (0, c2.validateChild)(n2, t2, a2);
        return;
      }
      throw new TypeError(`Property ${t2} of ${n2.type} expected node to be of a type ${JSON.stringify(e2)} but instead got ${JSON.stringify(_optionalChain([a2, 'optionalAccess', _3 => _3.type]))}`);
    }
    return r2.oneOfNodeTypes = e2, r2;
  }
  function k(...e2) {
    function r2(n2, t2, a2) {
      for (const l2 of e2) if (y2(a2) === l2 || (0, S.default)(l2, a2)) {
        (0, c2.validateChild)(n2, t2, a2);
        return;
      }
      throw new TypeError(`Property ${t2} of ${n2.type} expected node to be of a type ${JSON.stringify(e2)} but instead got ${JSON.stringify(_optionalChain([a2, 'optionalAccess', _4 => _4.type]))}`);
    }
    return r2.oneOfNodeOrValueTypes = e2, r2;
  }
  function h(e2) {
    function r2(n2, t2, a2) {
      if (!(y2(a2) === e2)) throw new TypeError(`Property ${t2} expected type of ${e2} but got ${y2(a2)}`);
    }
    return r2.type = e2, r2;
  }
  function x2(e2) {
    function r2(n2, t2, a2) {
      const l2 = [];
      for (const s2 of Object.keys(e2)) try {
        (0, c2.validateField)(n2, s2, a2[s2], e2[s2]);
      } catch (o2) {
        if (o2 instanceof TypeError) {
          l2.push(o2.message);
          continue;
        }
        throw o2;
      }
      if (l2.length) throw new TypeError(`Property ${t2} of ${n2.type} expected to have the following:
${l2.join(`
`)}`);
    }
    return r2.shapeOf = e2, r2;
  }
  function j() {
    function e2(r2) {
      var n2;
      let t2 = r2;
      for (; r2; ) {
        const { type: a2 } = t2;
        if (a2 === "OptionalCallExpression") {
          if (t2.optional) return;
          t2 = t2.callee;
          continue;
        }
        if (a2 === "OptionalMemberExpression") {
          if (t2.optional) return;
          t2 = t2.object;
          continue;
        }
        break;
      }
      throw new TypeError(`Non-optional ${r2.type} must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from ${(n2 = t2) == null ? void 0 : n2.type}`);
    }
    return e2;
  }
  function w(...e2) {
    function r2(...n2) {
      for (const t2 of e2) t2(...n2);
    }
    if (r2.chainOf = e2, e2.length >= 2 && "type" in e2[0] && e2[0].type === "array" && !("each" in e2[1])) throw new Error('An assertValueType("array") validator can only be followed by an assertEach(...) validator.');
    return r2;
  }
  const C = /* @__PURE__ */ new Set(["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"]), F = /* @__PURE__ */ new Set(["default", "optional", "deprecated", "validate"]), v2 = {};
  function q2(...e2) {
    return (r2, n2 = {}) => {
      let t2 = n2.aliases;
      if (!t2) {
        var a2;
        n2.inherits && (t2 = (a2 = v2[n2.inherits].aliases) == null ? void 0 : a2.slice()), t2 != null || (t2 = []), n2.aliases = t2;
      }
      const s2 = e2.filter((o2) => !t2.includes(o2));
      t2.unshift(...s2), I2(r2, n2);
    };
  }
  function I2(e2, r2 = {}) {
    const n2 = r2.inherits && v2[r2.inherits] || {};
    let t2 = r2.fields;
    if (!t2 && (t2 = {}, n2.fields)) {
      const o2 = Object.getOwnPropertyNames(n2.fields);
      for (const f2 of o2) {
        const u2 = n2.fields[f2], d2 = u2.default;
        if (Array.isArray(d2) ? d2.length > 0 : d2 && typeof d2 == "object") throw new Error("field defaults can only be primitives or empty arrays currently");
        t2[f2] = { default: Array.isArray(d2) ? [] : d2, optional: u2.optional, deprecated: u2.deprecated, validate: u2.validate };
      }
    }
    const a2 = r2.visitor || n2.visitor || [], l2 = r2.aliases || n2.aliases || [], s2 = r2.builder || n2.builder || r2.visitor || [];
    for (const o2 of Object.keys(r2)) if (!C.has(o2)) throw new Error(`Unknown type option "${o2}" on ${e2}`);
    r2.deprecatedAlias && (m2[r2.deprecatedAlias] = e2);
    for (const o2 of a2.concat(s2)) t2[o2] = t2[o2] || {};
    for (const o2 of Object.keys(t2)) {
      const f2 = t2[o2];
      f2.default !== void 0 && !s2.includes(o2) && (f2.optional = true), f2.default === void 0 ? f2.default = null : !f2.validate && f2.default != null && (f2.validate = h(y2(f2.default)));
      for (const u2 of Object.keys(f2)) if (!F.has(u2)) throw new Error(`Unknown field key "${u2}" on ${e2}.${o2}`);
    }
    $[e2] = r2.visitor = a2, P2[e2] = r2.builder = s2, D[e2] = r2.fields = t2, b2[e2] = r2.aliases = l2, l2.forEach((o2) => {
      E[o2] = E[o2] || [], E[o2].push(e2);
    }), r2.validate && (L[e2] = r2.validate), v2[e2] = r2;
  }
  return r$m;
}
var N$2;
function B() {
  if (N$2) return r$r;
  N$2 = 1, Object.defineProperty(r$r, "__esModule", { value: true }), r$r.patternLikeCommon = r$r.importAttributes = r$r.functionTypeAnnotationCommon = r$r.functionDeclarationCommon = r$r.functionCommon = r$r.classMethodOrPropertyCommon = r$r.classMethodOrDeclareMethodCommon = void 0;
  var p2 = c$7(), S = d$2(), E = o$l(), x2 = B$2(), f2 = B$1(), e2 = J();
  const t2 = (0, e2.defineAliasedType)("Standardized");
  t2("ArrayExpression", { fields: { elements: { validate: (0, e2.arrayOf)((0, e2.assertNodeOrValueType)("null", "Expression", "SpreadElement")), default: process.env.BABEL_TYPES_8_BREAKING ? void 0 : [] } }, visitor: ["elements"], aliases: ["Expression"] }), t2("AssignmentExpression", { fields: { operator: { validate: process.env.BABEL_TYPES_8_BREAKING ? Object.assign((function() {
    const r2 = (0, e2.assertOneOf)(...f2.ASSIGNMENT_OPERATORS), s2 = (0, e2.assertOneOf)("=");
    return function(a2, i2, o2) {
      ((0, p2.default)("Pattern", a2.left) ? s2 : r2)(a2, i2, o2);
    };
  })(), { type: "string" }) : (0, e2.assertValueType)("string") }, left: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertNodeType)("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") : (0, e2.assertNodeType)("LVal", "OptionalMemberExpression") }, right: { validate: (0, e2.assertNodeType)("Expression") } }, builder: ["operator", "left", "right"], visitor: ["left", "right"], aliases: ["Expression"] }), t2("BinaryExpression", { builder: ["operator", "left", "right"], fields: { operator: { validate: (0, e2.assertOneOf)(...f2.BINARY_OPERATORS) }, left: { validate: (function() {
    const r2 = (0, e2.assertNodeType)("Expression"), s2 = (0, e2.assertNodeType)("Expression", "PrivateName");
    return Object.assign(function(i2, o2, n2) {
      (i2.operator === "in" ? s2 : r2)(i2, o2, n2);
    }, { oneOfNodeTypes: ["Expression", "PrivateName"] });
  })() }, right: { validate: (0, e2.assertNodeType)("Expression") } }, visitor: ["left", "right"], aliases: ["Binary", "Expression"] }), t2("InterpreterDirective", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } } }), t2("Directive", { visitor: ["value"], fields: { value: { validate: (0, e2.assertNodeType)("DirectiveLiteral") } } }), t2("DirectiveLiteral", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } } }), t2("BlockStatement", { builder: ["body", "directives"], visitor: ["directives", "body"], fields: { directives: { validate: (0, e2.arrayOfType)("Directive"), default: [] }, body: (0, e2.validateArrayOfType)("Statement") }, aliases: ["Scopable", "BlockParent", "Block", "Statement"] }), t2("BreakStatement", { visitor: ["label"], fields: { label: { validate: (0, e2.assertNodeType)("Identifier"), optional: true } }, aliases: ["Statement", "Terminatorless", "CompletionStatement"] }), t2("CallExpression", { visitor: ["callee", "arguments", "typeParameters", "typeArguments"], builder: ["callee", "arguments"], aliases: ["Expression"], fields: Object.assign({ callee: { validate: (0, e2.assertNodeType)("Expression", "Super", "V8IntrinsicIdentifier") }, arguments: (0, e2.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"), typeArguments: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation"), optional: true } }, { optional: { validate: (0, e2.assertValueType)("boolean"), optional: true }, typeParameters: { validate: (0, e2.assertNodeType)("TSTypeParameterInstantiation"), optional: true } }, process.env.BABEL_TYPES_8_BREAKING ? {} : { optional: { validate: (0, e2.assertValueType)("boolean"), optional: true } }) }), t2("CatchClause", { visitor: ["param", "body"], fields: { param: { validate: (0, e2.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern"), optional: true }, body: { validate: (0, e2.assertNodeType)("BlockStatement") } }, aliases: ["Scopable", "BlockParent"] }), t2("ConditionalExpression", { visitor: ["test", "consequent", "alternate"], fields: { test: { validate: (0, e2.assertNodeType)("Expression") }, consequent: { validate: (0, e2.assertNodeType)("Expression") }, alternate: { validate: (0, e2.assertNodeType)("Expression") } }, aliases: ["Expression", "Conditional"] }), t2("ContinueStatement", { visitor: ["label"], fields: { label: { validate: (0, e2.assertNodeType)("Identifier"), optional: true } }, aliases: ["Statement", "Terminatorless", "CompletionStatement"] }), t2("DebuggerStatement", { aliases: ["Statement"] }), t2("DoWhileStatement", { builder: ["test", "body"], visitor: ["body", "test"], fields: { test: { validate: (0, e2.assertNodeType)("Expression") }, body: { validate: (0, e2.assertNodeType)("Statement") } }, aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"] }), t2("EmptyStatement", { aliases: ["Statement"] }), t2("ExpressionStatement", { visitor: ["expression"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression") } }, aliases: ["Statement", "ExpressionWrapper"] }), t2("File", { builder: ["program", "comments", "tokens"], visitor: ["program"], fields: { program: { validate: (0, e2.assertNodeType)("Program") }, comments: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertEach)((0, e2.assertNodeType)("CommentBlock", "CommentLine")) : Object.assign(() => {
  }, { each: { oneOfNodeTypes: ["CommentBlock", "CommentLine"] } }), optional: true }, tokens: { validate: (0, e2.assertEach)(Object.assign(() => {
  }, { type: "any" })), optional: true } } }), t2("ForInStatement", { visitor: ["left", "right", "body"], aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], fields: { left: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertNodeType)("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") : (0, e2.assertNodeType)("VariableDeclaration", "LVal") }, right: { validate: (0, e2.assertNodeType)("Expression") }, body: { validate: (0, e2.assertNodeType)("Statement") } } }), t2("ForStatement", { visitor: ["init", "test", "update", "body"], aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"], fields: { init: { validate: (0, e2.assertNodeType)("VariableDeclaration", "Expression"), optional: true }, test: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, update: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, body: { validate: (0, e2.assertNodeType)("Statement") } } });
  const c2 = () => ({ params: (0, e2.validateArrayOfType)("Identifier", "Pattern", "RestElement"), generator: { default: false }, async: { default: false } });
  r$r.functionCommon = c2;
  const d2 = () => ({ returnType: { validate: (0, e2.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, typeParameters: { validate: (0, e2.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), optional: true } });
  r$r.functionTypeAnnotationCommon = d2;
  const b2 = () => Object.assign({}, c2(), { declare: { validate: (0, e2.assertValueType)("boolean"), optional: true }, id: { validate: (0, e2.assertNodeType)("Identifier"), optional: true } });
  r$r.functionDeclarationCommon = b2, t2("FunctionDeclaration", { builder: ["id", "params", "body", "generator", "async"], visitor: ["id", "typeParameters", "params", "predicate", "returnType", "body"], fields: Object.assign({}, b2(), d2(), { body: { validate: (0, e2.assertNodeType)("BlockStatement") }, predicate: { validate: (0, e2.assertNodeType)("DeclaredPredicate", "InferredPredicate"), optional: true } }), aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"], validate: process.env.BABEL_TYPES_8_BREAKING ? (function() {
    const r2 = (0, e2.assertNodeType)("Identifier");
    return function(s2, a2, i2) {
      (0, p2.default)("ExportDefaultDeclaration", s2) || r2(i2, "id", i2.id);
    };
  })() : void 0 }), t2("FunctionExpression", { inherits: "FunctionDeclaration", aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], fields: Object.assign({}, c2(), d2(), { id: { validate: (0, e2.assertNodeType)("Identifier"), optional: true }, body: { validate: (0, e2.assertNodeType)("BlockStatement") }, predicate: { validate: (0, e2.assertNodeType)("DeclaredPredicate", "InferredPredicate"), optional: true } }) });
  const u2 = () => ({ typeAnnotation: { validate: (0, e2.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, optional: { validate: (0, e2.assertValueType)("boolean"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true } });
  r$r.patternLikeCommon = u2, t2("Identifier", { builder: ["name"], visitor: ["typeAnnotation", "decorators"], aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"], fields: Object.assign({}, u2(), { name: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("string"), Object.assign(function(r2, s2, a2) {
    if (!(0, S.default)(a2, false)) throw new TypeError(`"${a2}" is not a valid identifier name`);
  }, { type: "string" })) : (0, e2.assertValueType)("string") } }), validate: process.env.BABEL_TYPES_8_BREAKING ? function(r2, s2, a2) {
    const i2 = /\.(\w+)$/.exec(s2);
    if (!i2) return;
    const [, o2] = i2, n2 = { computed: false };
    if (o2 === "property") {
      if ((0, p2.default)("MemberExpression", r2, n2) || (0, p2.default)("OptionalMemberExpression", r2, n2)) return;
    } else if (o2 === "key") {
      if ((0, p2.default)("Property", r2, n2) || (0, p2.default)("Method", r2, n2)) return;
    } else if (o2 === "exported") {
      if ((0, p2.default)("ExportSpecifier", r2)) return;
    } else if (o2 === "imported") {
      if ((0, p2.default)("ImportSpecifier", r2, { imported: a2 })) return;
    } else if (o2 === "meta" && (0, p2.default)("MetaProperty", r2, { meta: a2 })) return;
    if (((0, E.isKeyword)(a2.name) || (0, E.isReservedWord)(a2.name, false)) && a2.name !== "this") throw new TypeError(`"${a2.name}" is not a valid identifier`);
  } : void 0 }), t2("IfStatement", { visitor: ["test", "consequent", "alternate"], aliases: ["Statement", "Conditional"], fields: { test: { validate: (0, e2.assertNodeType)("Expression") }, consequent: { validate: (0, e2.assertNodeType)("Statement") }, alternate: { optional: true, validate: (0, e2.assertNodeType)("Statement") } } }), t2("LabeledStatement", { visitor: ["label", "body"], aliases: ["Statement"], fields: { label: { validate: (0, e2.assertNodeType)("Identifier") }, body: { validate: (0, e2.assertNodeType)("Statement") } } }), t2("StringLiteral", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } }, aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), t2("NumericLiteral", { builder: ["value"], deprecatedAlias: "NumberLiteral", fields: { value: { validate: (0, e2.chain)((0, e2.assertValueType)("number"), Object.assign(function(r2, s2, a2) {
  }, { type: "number" })) } }, aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), t2("NullLiteral", { aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), t2("BooleanLiteral", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("boolean") } }, aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), t2("RegExpLiteral", { builder: ["pattern", "flags"], deprecatedAlias: "RegexLiteral", aliases: ["Expression", "Pureish", "Literal"], fields: { pattern: { validate: (0, e2.assertValueType)("string") }, flags: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("string"), Object.assign(function(r2, s2, a2) {
    const i2 = /[^gimsuy]/.exec(a2);
    if (i2) throw new TypeError(`"${i2[0]}" is not a valid RegExp flag`);
  }, { type: "string" })) : (0, e2.assertValueType)("string"), default: "" } } }), t2("LogicalExpression", { builder: ["operator", "left", "right"], visitor: ["left", "right"], aliases: ["Binary", "Expression"], fields: { operator: { validate: (0, e2.assertOneOf)(...f2.LOGICAL_OPERATORS) }, left: { validate: (0, e2.assertNodeType)("Expression") }, right: { validate: (0, e2.assertNodeType)("Expression") } } }), t2("MemberExpression", { builder: ["object", "property", "computed", ...process.env.BABEL_TYPES_8_BREAKING ? [] : ["optional"]], visitor: ["object", "property"], aliases: ["Expression", "LVal"], fields: Object.assign({ object: { validate: (0, e2.assertNodeType)("Expression", "Super") }, property: { validate: (function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "PrivateName"), s2 = (0, e2.assertNodeType)("Expression"), a2 = function(i2, o2, n2) {
      (i2.computed ? s2 : r2)(i2, o2, n2);
    };
    return a2.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"], a2;
  })() }, computed: { default: false } }, process.env.BABEL_TYPES_8_BREAKING ? {} : { optional: { validate: (0, e2.assertValueType)("boolean"), optional: true } }) }), t2("NewExpression", { inherits: "CallExpression" }), t2("Program", { visitor: ["directives", "body"], builder: ["body", "directives", "sourceType", "interpreter"], fields: { sourceType: { validate: (0, e2.assertOneOf)("script", "module"), default: "script" }, interpreter: { validate: (0, e2.assertNodeType)("InterpreterDirective"), default: null, optional: true }, directives: { validate: (0, e2.arrayOfType)("Directive"), default: [] }, body: (0, e2.validateArrayOfType)("Statement") }, aliases: ["Scopable", "BlockParent", "Block"] }), t2("ObjectExpression", { visitor: ["properties"], aliases: ["Expression"], fields: { properties: (0, e2.validateArrayOfType)("ObjectMethod", "ObjectProperty", "SpreadElement") } }), t2("ObjectMethod", { builder: ["kind", "key", "params", "body", "computed", "generator", "async"], visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], fields: Object.assign({}, c2(), d2(), { kind: Object.assign({ validate: (0, e2.assertOneOf)("method", "get", "set") }, process.env.BABEL_TYPES_8_BREAKING ? {} : { default: "method" }), computed: { default: false }, key: { validate: (function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"), s2 = (0, e2.assertNodeType)("Expression"), a2 = function(i2, o2, n2) {
      (i2.computed ? s2 : r2)(i2, o2, n2);
    };
    return a2.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"], a2;
  })() }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, body: { validate: (0, e2.assertNodeType)("BlockStatement") } }), aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"] }), t2("ObjectProperty", { builder: ["key", "value", "computed", "shorthand", ...process.env.BABEL_TYPES_8_BREAKING ? [] : ["decorators"]], fields: { computed: { default: false }, key: { validate: (function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"), s2 = (0, e2.assertNodeType)("Expression");
    return Object.assign(function(i2, o2, n2) {
      (i2.computed ? s2 : r2)(i2, o2, n2);
    }, { oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"] });
  })() }, value: { validate: (0, e2.assertNodeType)("Expression", "PatternLike") }, shorthand: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("boolean"), Object.assign(function(r2, s2, a2) {
    if (a2) {
      if (r2.computed) throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
      if (!(0, p2.default)("Identifier", r2.key)) throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
    }
  }, { type: "boolean" })) : (0, e2.assertValueType)("boolean"), default: false }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true } }, visitor: ["key", "value", "decorators"], aliases: ["UserWhitespacable", "Property", "ObjectMember"], validate: process.env.BABEL_TYPES_8_BREAKING ? (function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion"), s2 = (0, e2.assertNodeType)("Expression");
    return function(a2, i2, o2) {
      ((0, p2.default)("ObjectPattern", a2) ? r2 : s2)(o2, "value", o2.value);
    };
  })() : void 0 }), t2("RestElement", { visitor: ["argument", "typeAnnotation"], builder: ["argument"], aliases: ["LVal", "PatternLike"], deprecatedAlias: "RestProperty", fields: Object.assign({}, u2(), { argument: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") : (0, e2.assertNodeType)("LVal") } }), validate: process.env.BABEL_TYPES_8_BREAKING ? function(r2, s2) {
    const a2 = /(\w+)\[(\d+)\]/.exec(s2);
    if (!a2) throw new Error("Internal Babel error: malformed key.");
    const [, i2, o2] = a2;
    if (r2[i2].length > +o2 + 1) throw new TypeError(`RestElement must be last element of ${i2}`);
  } : void 0 }), t2("ReturnStatement", { visitor: ["argument"], aliases: ["Statement", "Terminatorless", "CompletionStatement"], fields: { argument: { validate: (0, e2.assertNodeType)("Expression"), optional: true } } }), t2("SequenceExpression", { visitor: ["expressions"], fields: { expressions: (0, e2.validateArrayOfType)("Expression") }, aliases: ["Expression"] }), t2("ParenthesizedExpression", { visitor: ["expression"], aliases: ["Expression", "ExpressionWrapper"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression") } } }), t2("SwitchCase", { visitor: ["test", "consequent"], fields: { test: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, consequent: (0, e2.validateArrayOfType)("Statement") } }), t2("SwitchStatement", { visitor: ["discriminant", "cases"], aliases: ["Statement", "BlockParent", "Scopable"], fields: { discriminant: { validate: (0, e2.assertNodeType)("Expression") }, cases: (0, e2.validateArrayOfType)("SwitchCase") } }), t2("ThisExpression", { aliases: ["Expression"] }), t2("ThrowStatement", { visitor: ["argument"], aliases: ["Statement", "Terminatorless", "CompletionStatement"], fields: { argument: { validate: (0, e2.assertNodeType)("Expression") } } }), t2("TryStatement", { visitor: ["block", "handler", "finalizer"], aliases: ["Statement"], fields: { block: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertNodeType)("BlockStatement"), Object.assign(function(r2) {
    if (!r2.handler && !r2.finalizer) throw new TypeError("TryStatement expects either a handler or finalizer, or both");
  }, { oneOfNodeTypes: ["BlockStatement"] })) : (0, e2.assertNodeType)("BlockStatement") }, handler: { optional: true, validate: (0, e2.assertNodeType)("CatchClause") }, finalizer: { optional: true, validate: (0, e2.assertNodeType)("BlockStatement") } } }), t2("UnaryExpression", { builder: ["operator", "argument", "prefix"], fields: { prefix: { default: true }, argument: { validate: (0, e2.assertNodeType)("Expression") }, operator: { validate: (0, e2.assertOneOf)(...f2.UNARY_OPERATORS) } }, visitor: ["argument"], aliases: ["UnaryLike", "Expression"] }), t2("UpdateExpression", { builder: ["operator", "argument", "prefix"], fields: { prefix: { default: false }, argument: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertNodeType)("Identifier", "MemberExpression") : (0, e2.assertNodeType)("Expression") }, operator: { validate: (0, e2.assertOneOf)(...f2.UPDATE_OPERATORS) } }, visitor: ["argument"], aliases: ["Expression"] }), t2("VariableDeclaration", { builder: ["kind", "declarations"], visitor: ["declarations"], aliases: ["Statement", "Declaration"], fields: { declare: { validate: (0, e2.assertValueType)("boolean"), optional: true }, kind: { validate: (0, e2.assertOneOf)("var", "let", "const", "using", "await using") }, declarations: (0, e2.validateArrayOfType)("VariableDeclarator") }, validate: process.env.BABEL_TYPES_8_BREAKING ? (() => {
    const r2 = (0, e2.assertNodeType)("Identifier");
    return function(s2, a2, i2) {
      if ((0, p2.default)("ForXStatement", s2, { left: i2 })) {
        if (i2.declarations.length !== 1) throw new TypeError(`Exactly one VariableDeclarator is required in the VariableDeclaration of a ${s2.type}`);
      } else i2.declarations.forEach((o2) => {
        o2.init || r2(o2, "id", o2.id);
      });
    };
  })() : void 0 }), t2("VariableDeclarator", { visitor: ["id", "init"], fields: { id: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.assertNodeType)("Identifier", "ArrayPattern", "ObjectPattern") : (0, e2.assertNodeType)("LVal") }, definite: { optional: true, validate: (0, e2.assertValueType)("boolean") }, init: { optional: true, validate: (0, e2.assertNodeType)("Expression") } } }), t2("WhileStatement", { visitor: ["test", "body"], aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"], fields: { test: { validate: (0, e2.assertNodeType)("Expression") }, body: { validate: (0, e2.assertNodeType)("Statement") } } }), t2("WithStatement", { visitor: ["object", "body"], aliases: ["Statement"], fields: { object: { validate: (0, e2.assertNodeType)("Expression") }, body: { validate: (0, e2.assertNodeType)("Statement") } } }), t2("AssignmentPattern", { visitor: ["left", "right", "decorators"], builder: ["left", "right"], aliases: ["Pattern", "PatternLike", "LVal"], fields: Object.assign({}, u2(), { left: { validate: (0, e2.assertNodeType)("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression") }, right: { validate: (0, e2.assertNodeType)("Expression") }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true } }) }), t2("ArrayPattern", { visitor: ["elements", "typeAnnotation"], builder: ["elements"], aliases: ["Pattern", "PatternLike", "LVal"], fields: Object.assign({}, u2(), { elements: { validate: (0, e2.chain)((0, e2.assertValueType)("array"), (0, e2.assertEach)((0, e2.assertNodeOrValueType)("null", "PatternLike", "LVal"))) } }) }), t2("ArrowFunctionExpression", { builder: ["params", "body", "async"], visitor: ["typeParameters", "params", "predicate", "returnType", "body"], aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"], fields: Object.assign({}, c2(), d2(), { expression: { validate: (0, e2.assertValueType)("boolean") }, body: { validate: (0, e2.assertNodeType)("BlockStatement", "Expression") }, predicate: { validate: (0, e2.assertNodeType)("DeclaredPredicate", "InferredPredicate"), optional: true } }) }), t2("ClassBody", { visitor: ["body"], fields: { body: (0, e2.validateArrayOfType)("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock") } }), t2("ClassExpression", { builder: ["id", "superClass", "body", "decorators"], visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"], aliases: ["Scopable", "Class", "Expression"], fields: { id: { validate: (0, e2.assertNodeType)("Identifier"), optional: true }, typeParameters: { validate: (0, e2.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), optional: true }, body: { validate: (0, e2.assertNodeType)("ClassBody") }, superClass: { optional: true, validate: (0, e2.assertNodeType)("Expression") }, superTypeParameters: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), optional: true }, implements: { validate: (0, e2.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, mixins: { validate: (0, e2.assertNodeType)("InterfaceExtends"), optional: true } } }), t2("ClassDeclaration", { inherits: "ClassExpression", aliases: ["Scopable", "Class", "Statement", "Declaration"], fields: { id: { validate: (0, e2.assertNodeType)("Identifier"), optional: true }, typeParameters: { validate: (0, e2.assertNodeType)("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"), optional: true }, body: { validate: (0, e2.assertNodeType)("ClassBody") }, superClass: { optional: true, validate: (0, e2.assertNodeType)("Expression") }, superTypeParameters: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), optional: true }, implements: { validate: (0, e2.arrayOfType)("TSExpressionWithTypeArguments", "ClassImplements"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, mixins: { validate: (0, e2.assertNodeType)("InterfaceExtends"), optional: true }, declare: { validate: (0, e2.assertValueType)("boolean"), optional: true }, abstract: { validate: (0, e2.assertValueType)("boolean"), optional: true } }, validate: process.env.BABEL_TYPES_8_BREAKING ? (function() {
    const r2 = (0, e2.assertNodeType)("Identifier");
    return function(s2, a2, i2) {
      (0, p2.default)("ExportDefaultDeclaration", s2) || r2(i2, "id", i2.id);
    };
  })() : void 0 });
  const m2 = r$r.importAttributes = { attributes: { optional: true, validate: (0, e2.arrayOfType)("ImportAttribute") }, assertions: { deprecated: true, optional: true, validate: (0, e2.arrayOfType)("ImportAttribute") } };
  t2("ExportAllDeclaration", { builder: ["source"], visitor: ["source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ source: { validate: (0, e2.assertNodeType)("StringLiteral") }, exportKind: (0, e2.validateOptional)((0, e2.assertOneOf)("type", "value")) }, m2) }), t2("ExportDefaultDeclaration", { visitor: ["declaration"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: { declaration: (0, e2.validateType)("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression"), exportKind: (0, e2.validateOptional)((0, e2.assertOneOf)("value")) } }), t2("ExportNamedDeclaration", { builder: ["declaration", "specifiers", "source"], visitor: process.env ? ["declaration", "specifiers", "source", "attributes"] : ["declaration", "specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"], fields: Object.assign({ declaration: { optional: true, validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertNodeType)("Declaration"), Object.assign(function(r2, s2, a2) {
    if (a2 && r2.specifiers.length) throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
    if (a2 && r2.source) throw new TypeError("Cannot export a declaration from a source");
  }, { oneOfNodeTypes: ["Declaration"] })) : (0, e2.assertNodeType)("Declaration") } }, m2, { specifiers: { default: [], validate: (0, e2.arrayOf)((function() {
    const r2 = (0, e2.assertNodeType)("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"), s2 = (0, e2.assertNodeType)("ExportSpecifier");
    return process.env.BABEL_TYPES_8_BREAKING ? Object.assign(function(a2, i2, o2) {
      (a2.source ? r2 : s2)(a2, i2, o2);
    }, { oneOfNodeTypes: ["ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier"] }) : r2;
  })()) }, source: { validate: (0, e2.assertNodeType)("StringLiteral"), optional: true }, exportKind: (0, e2.validateOptional)((0, e2.assertOneOf)("type", "value")) }) }), t2("ExportSpecifier", { visitor: ["local", "exported"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, e2.assertNodeType)("Identifier") }, exported: { validate: (0, e2.assertNodeType)("Identifier", "StringLiteral") }, exportKind: { validate: (0, e2.assertOneOf)("type", "value"), optional: true } } }), t2("ForOfStatement", { visitor: ["left", "right", "body"], builder: ["left", "right", "body", "await"], aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"], fields: { left: { validate: (function() {
    if (!process.env.BABEL_TYPES_8_BREAKING) return (0, e2.assertNodeType)("VariableDeclaration", "LVal");
    const r2 = (0, e2.assertNodeType)("VariableDeclaration"), s2 = (0, e2.assertNodeType)("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
    return Object.assign(function(a2, i2, o2) {
      (0, p2.default)("VariableDeclaration", o2) ? r2(a2, i2, o2) : s2(a2, i2, o2);
    }, { oneOfNodeTypes: ["VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression"] });
  })() }, right: { validate: (0, e2.assertNodeType)("Expression") }, body: { validate: (0, e2.assertNodeType)("Statement") }, await: { default: false } } }), t2("ImportDeclaration", { builder: ["specifiers", "source"], visitor: ["specifiers", "source", "attributes", "assertions"], aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"], fields: Object.assign({}, m2, { module: { optional: true, validate: (0, e2.assertValueType)("boolean") }, phase: { default: null, validate: (0, e2.assertOneOf)("source", "defer") }, specifiers: (0, e2.validateArrayOfType)("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier"), source: { validate: (0, e2.assertNodeType)("StringLiteral") }, importKind: { validate: (0, e2.assertOneOf)("type", "typeof", "value"), optional: true } }) }), t2("ImportDefaultSpecifier", { visitor: ["local"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, e2.assertNodeType)("Identifier") } } }), t2("ImportNamespaceSpecifier", { visitor: ["local"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, e2.assertNodeType)("Identifier") } } }), t2("ImportSpecifier", { visitor: ["imported", "local"], builder: ["local", "imported"], aliases: ["ModuleSpecifier"], fields: { local: { validate: (0, e2.assertNodeType)("Identifier") }, imported: { validate: (0, e2.assertNodeType)("Identifier", "StringLiteral") }, importKind: { validate: (0, e2.assertOneOf)("type", "typeof", "value"), optional: true } } }), t2("ImportExpression", { visitor: ["source", "options"], aliases: ["Expression"], fields: { phase: { default: null, validate: (0, e2.assertOneOf)("source", "defer") }, source: { validate: (0, e2.assertNodeType)("Expression") }, options: { validate: (0, e2.assertNodeType)("Expression"), optional: true } } }), t2("MetaProperty", { visitor: ["meta", "property"], aliases: ["Expression"], fields: { meta: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertNodeType)("Identifier"), Object.assign(function(r2, s2, a2) {
    let i2;
    switch (a2.name) {
      case "function":
        i2 = "sent";
        break;
      case "new":
        i2 = "target";
        break;
      case "import":
        i2 = "meta";
        break;
    }
    if (!(0, p2.default)("Identifier", r2.property, { name: i2 })) throw new TypeError("Unrecognised MetaProperty");
  }, { oneOfNodeTypes: ["Identifier"] })) : (0, e2.assertNodeType)("Identifier") }, property: { validate: (0, e2.assertNodeType)("Identifier") } } });
  const v2 = () => ({ abstract: { validate: (0, e2.assertValueType)("boolean"), optional: true }, accessibility: { validate: (0, e2.assertOneOf)("public", "private", "protected"), optional: true }, static: { default: false }, override: { default: false }, computed: { default: false }, optional: { validate: (0, e2.assertValueType)("boolean"), optional: true }, key: { validate: (0, e2.chain)((function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"), s2 = (0, e2.assertNodeType)("Expression");
    return function(a2, i2, o2) {
      (a2.computed ? s2 : r2)(a2, i2, o2);
    };
  })(), (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression")) } });
  r$r.classMethodOrPropertyCommon = v2;
  const T2 = () => Object.assign({}, c2(), v2(), { params: (0, e2.validateArrayOfType)("Identifier", "Pattern", "RestElement", "TSParameterProperty"), kind: { validate: (0, e2.assertOneOf)("get", "set", "method", "constructor"), default: "method" }, access: { validate: (0, e2.chain)((0, e2.assertValueType)("string"), (0, e2.assertOneOf)("public", "private", "protected")), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true } });
  return r$r.classMethodOrDeclareMethodCommon = T2, t2("ClassMethod", { aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"], builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"], visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], fields: Object.assign({}, T2(), d2(), { body: { validate: (0, e2.assertNodeType)("BlockStatement") } }) }), t2("ObjectPattern", { visitor: ["properties", "typeAnnotation", "decorators"], builder: ["properties"], aliases: ["Pattern", "PatternLike", "LVal"], fields: Object.assign({}, u2(), { properties: (0, e2.validateArrayOfType)("RestElement", "ObjectProperty") }) }), t2("SpreadElement", { visitor: ["argument"], aliases: ["UnaryLike"], deprecatedAlias: "SpreadProperty", fields: { argument: { validate: (0, e2.assertNodeType)("Expression") } } }), t2("Super", { aliases: ["Expression"] }), t2("TaggedTemplateExpression", { visitor: ["tag", "typeParameters", "quasi"], builder: ["tag", "quasi"], aliases: ["Expression"], fields: { tag: { validate: (0, e2.assertNodeType)("Expression") }, quasi: { validate: (0, e2.assertNodeType)("TemplateLiteral") }, typeParameters: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation", "TSTypeParameterInstantiation"), optional: true } } }), t2("TemplateElement", { builder: ["value", "tail"], fields: { value: { validate: (0, e2.chain)((0, e2.assertShape)({ raw: { validate: (0, e2.assertValueType)("string") }, cooked: { validate: (0, e2.assertValueType)("string"), optional: true } }), function(s2) {
    const a2 = s2.value.raw;
    let i2 = false;
    const o2 = () => {
      throw new Error("Internal @babel/types error.");
    }, { str: n2, firstInvalidLoc: y2 } = (0, x2.readStringContents)("template", a2, 0, 0, 0, { unterminated() {
      i2 = true;
    }, strictNumericEscape: o2, invalidEscapeSequence: o2, numericSeparatorInEscapeSequence: o2, unexpectedNumericSeparator: o2, invalidDigit: o2, invalidCodePoint: o2 });
    if (!i2) throw new Error("Invalid raw");
    s2.value.cooked = y2 ? null : n2;
  }) }, tail: { default: false } } }), t2("TemplateLiteral", { visitor: ["quasis", "expressions"], aliases: ["Expression", "Literal"], fields: { quasis: (0, e2.validateArrayOfType)("TemplateElement"), expressions: { validate: (0, e2.chain)((0, e2.assertValueType)("array"), (0, e2.assertEach)((0, e2.assertNodeType)("Expression", "TSType")), function(r2, s2, a2) {
    if (r2.quasis.length !== a2.length + 1) throw new TypeError(`Number of ${r2.type} quasis should be exactly one more than the number of expressions.
Expected ${a2.length + 1} quasis but got ${r2.quasis.length}`);
  }) } } }), t2("YieldExpression", { builder: ["argument", "delegate"], visitor: ["argument"], aliases: ["Expression", "Terminatorless"], fields: { delegate: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("boolean"), Object.assign(function(r2, s2, a2) {
    if (a2 && !r2.argument) throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
  }, { type: "boolean" })) : (0, e2.assertValueType)("boolean"), default: false }, argument: { optional: true, validate: (0, e2.assertNodeType)("Expression") } } }), t2("AwaitExpression", { builder: ["argument"], visitor: ["argument"], aliases: ["Expression", "Terminatorless"], fields: { argument: { validate: (0, e2.assertNodeType)("Expression") } } }), t2("Import", { aliases: ["Expression"] }), t2("BigIntLiteral", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } }, aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), t2("ExportNamespaceSpecifier", { visitor: ["exported"], aliases: ["ModuleSpecifier"], fields: { exported: { validate: (0, e2.assertNodeType)("Identifier") } } }), t2("OptionalMemberExpression", { builder: ["object", "property", "computed", "optional"], visitor: ["object", "property"], aliases: ["Expression"], fields: { object: { validate: (0, e2.assertNodeType)("Expression") }, property: { validate: (function() {
    const r2 = (0, e2.assertNodeType)("Identifier"), s2 = (0, e2.assertNodeType)("Expression");
    return Object.assign(function(i2, o2, n2) {
      (i2.computed ? s2 : r2)(i2, o2, n2);
    }, { oneOfNodeTypes: ["Expression", "Identifier"] });
  })() }, computed: { default: false }, optional: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("boolean"), (0, e2.assertOptionalChainStart)()) : (0, e2.assertValueType)("boolean") } } }), t2("OptionalCallExpression", { visitor: ["callee", "arguments", "typeParameters", "typeArguments"], builder: ["callee", "arguments", "optional"], aliases: ["Expression"], fields: Object.assign({ callee: { validate: (0, e2.assertNodeType)("Expression") }, arguments: (0, e2.validateArrayOfType)("Expression", "SpreadElement", "ArgumentPlaceholder"), optional: { validate: process.env.BABEL_TYPES_8_BREAKING ? (0, e2.chain)((0, e2.assertValueType)("boolean"), (0, e2.assertOptionalChainStart)()) : (0, e2.assertValueType)("boolean") }, typeArguments: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation"), optional: true } }, { typeParameters: { validate: (0, e2.assertNodeType)("TSTypeParameterInstantiation"), optional: true } }) }), t2("ClassProperty", { visitor: ["decorators", "variance", "key", "typeAnnotation", "value"], builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], aliases: ["Property"], fields: Object.assign({}, v2(), { value: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, definite: { validate: (0, e2.assertValueType)("boolean"), optional: true }, typeAnnotation: { validate: (0, e2.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, readonly: { validate: (0, e2.assertValueType)("boolean"), optional: true }, declare: { validate: (0, e2.assertValueType)("boolean"), optional: true }, variance: { validate: (0, e2.assertNodeType)("Variance"), optional: true } }) }), t2("ClassAccessorProperty", { visitor: ["decorators", "key", "typeAnnotation", "value"], builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"], aliases: ["Property", "Accessor"], fields: Object.assign({}, v2(), { key: { validate: (0, e2.chain)((function() {
    const r2 = (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName"), s2 = (0, e2.assertNodeType)("Expression");
    return function(a2, i2, o2) {
      (a2.computed ? s2 : r2)(a2, i2, o2);
    };
  })(), (0, e2.assertNodeType)("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName")) }, value: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, definite: { validate: (0, e2.assertValueType)("boolean"), optional: true }, typeAnnotation: { validate: (0, e2.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, readonly: { validate: (0, e2.assertValueType)("boolean"), optional: true }, declare: { validate: (0, e2.assertValueType)("boolean"), optional: true }, variance: { validate: (0, e2.assertNodeType)("Variance"), optional: true } }) }), t2("ClassPrivateProperty", { visitor: ["decorators", "variance", "key", "typeAnnotation", "value"], builder: ["key", "value", "decorators", "static"], aliases: ["Property", "Private"], fields: { key: { validate: (0, e2.assertNodeType)("PrivateName") }, value: { validate: (0, e2.assertNodeType)("Expression"), optional: true }, typeAnnotation: { validate: (0, e2.assertNodeType)("TypeAnnotation", "TSTypeAnnotation", "Noop"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true }, static: { validate: (0, e2.assertValueType)("boolean"), default: false }, readonly: { validate: (0, e2.assertValueType)("boolean"), optional: true }, optional: { validate: (0, e2.assertValueType)("boolean"), optional: true }, definite: { validate: (0, e2.assertValueType)("boolean"), optional: true }, variance: { validate: (0, e2.assertNodeType)("Variance"), optional: true } } }), t2("ClassPrivateMethod", { builder: ["kind", "key", "params", "body", "static"], visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"], aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"], fields: Object.assign({}, T2(), d2(), { kind: { validate: (0, e2.assertOneOf)("get", "set", "method"), default: "method" }, key: { validate: (0, e2.assertNodeType)("PrivateName") }, body: { validate: (0, e2.assertNodeType)("BlockStatement") } }) }), t2("PrivateName", { visitor: ["id"], aliases: ["Private"], fields: { id: { validate: (0, e2.assertNodeType)("Identifier") } } }), t2("StaticBlock", { visitor: ["body"], fields: { body: (0, e2.validateArrayOfType)("Statement") }, aliases: ["Scopable", "BlockParent", "FunctionParent"] }), r$r;
}
var o$k = {};
var o$j;
function y$2() {
  if (o$j) return o$k;
  o$j = 1;
  var t2 = B(), e2 = J();
  const a2 = (0, e2.defineAliasedType)("Flow"), i2 = (l2) => {
    const r2 = l2 === "DeclareClass";
    a2(l2, { builder: ["id", "typeParameters", "extends", "body"], visitor: ["id", "typeParameters", "extends", ...r2 ? ["mixins", "implements"] : [], "body"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: Object.assign({ id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), extends: (0, e2.validateOptional)((0, e2.arrayOfType)("InterfaceExtends")) }, r2 ? { mixins: (0, e2.validateOptional)((0, e2.arrayOfType)("InterfaceExtends")), implements: (0, e2.validateOptional)((0, e2.arrayOfType)("ClassImplements")) } : {}, { body: (0, e2.validateType)("ObjectTypeAnnotation") }) });
  };
  return a2("AnyTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("ArrayTypeAnnotation", { visitor: ["elementType"], aliases: ["FlowType"], fields: { elementType: (0, e2.validateType)("FlowType") } }), a2("BooleanTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("BooleanLiteralTypeAnnotation", { builder: ["value"], aliases: ["FlowType"], fields: { value: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("NullLiteralTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("ClassImplements", { visitor: ["id", "typeParameters"], fields: { id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterInstantiation") } }), i2("DeclareClass"), a2("DeclareFunction", { builder: ["id"], visitor: ["id", "predicate"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier"), predicate: (0, e2.validateOptionalType)("DeclaredPredicate") } }), i2("DeclareInterface"), a2("DeclareModule", { builder: ["id", "body", "kind"], visitor: ["id", "body"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier", "StringLiteral"), body: (0, e2.validateType)("BlockStatement"), kind: (0, e2.validateOptional)((0, e2.assertOneOf)("CommonJS", "ES")) } }), a2("DeclareModuleExports", { visitor: ["typeAnnotation"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { typeAnnotation: (0, e2.validateType)("TypeAnnotation") } }), a2("DeclareTypeAlias", { visitor: ["id", "typeParameters", "right"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), right: (0, e2.validateType)("FlowType") } }), a2("DeclareOpaqueType", { visitor: ["id", "typeParameters", "supertype"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), supertype: (0, e2.validateOptionalType)("FlowType"), impltype: (0, e2.validateOptionalType)("FlowType") } }), a2("DeclareVariable", { visitor: ["id"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier") } }), a2("DeclareExportDeclaration", { visitor: ["declaration", "specifiers", "source", "attributes"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: Object.assign({ declaration: (0, e2.validateOptionalType)("Flow"), specifiers: (0, e2.validateOptional)((0, e2.arrayOfType)("ExportSpecifier", "ExportNamespaceSpecifier")), source: (0, e2.validateOptionalType)("StringLiteral"), default: (0, e2.validateOptional)((0, e2.assertValueType)("boolean")) }, t2.importAttributes) }), a2("DeclareExportAllDeclaration", { visitor: ["source", "attributes"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: Object.assign({ source: (0, e2.validateType)("StringLiteral"), exportKind: (0, e2.validateOptional)((0, e2.assertOneOf)("type", "value")) }, t2.importAttributes) }), a2("DeclaredPredicate", { visitor: ["value"], aliases: ["FlowPredicate"], fields: { value: (0, e2.validateType)("Flow") } }), a2("ExistsTypeAnnotation", { aliases: ["FlowType"] }), a2("FunctionTypeAnnotation", { builder: ["typeParameters", "params", "rest", "returnType"], visitor: ["typeParameters", "this", "params", "rest", "returnType"], aliases: ["FlowType"], fields: { typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), params: (0, e2.validateArrayOfType)("FunctionTypeParam"), rest: (0, e2.validateOptionalType)("FunctionTypeParam"), this: (0, e2.validateOptionalType)("FunctionTypeParam"), returnType: (0, e2.validateType)("FlowType") } }), a2("FunctionTypeParam", { visitor: ["name", "typeAnnotation"], fields: { name: (0, e2.validateOptionalType)("Identifier"), typeAnnotation: (0, e2.validateType)("FlowType"), optional: (0, e2.validateOptional)((0, e2.assertValueType)("boolean")) } }), a2("GenericTypeAnnotation", { visitor: ["id", "typeParameters"], aliases: ["FlowType"], fields: { id: (0, e2.validateType)("Identifier", "QualifiedTypeIdentifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterInstantiation") } }), a2("InferredPredicate", { aliases: ["FlowPredicate"] }), a2("InterfaceExtends", { visitor: ["id", "typeParameters"], fields: { id: (0, e2.validateType)("Identifier", "QualifiedTypeIdentifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterInstantiation") } }), i2("InterfaceDeclaration"), a2("InterfaceTypeAnnotation", { visitor: ["extends", "body"], aliases: ["FlowType"], fields: { extends: (0, e2.validateOptional)((0, e2.arrayOfType)("InterfaceExtends")), body: (0, e2.validateType)("ObjectTypeAnnotation") } }), a2("IntersectionTypeAnnotation", { visitor: ["types"], aliases: ["FlowType"], fields: { types: (0, e2.validate)((0, e2.arrayOfType)("FlowType")) } }), a2("MixedTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("EmptyTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("NullableTypeAnnotation", { visitor: ["typeAnnotation"], aliases: ["FlowType"], fields: { typeAnnotation: (0, e2.validateType)("FlowType") } }), a2("NumberLiteralTypeAnnotation", { builder: ["value"], aliases: ["FlowType"], fields: { value: (0, e2.validate)((0, e2.assertValueType)("number")) } }), a2("NumberTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("ObjectTypeAnnotation", { visitor: ["properties", "indexers", "callProperties", "internalSlots"], aliases: ["FlowType"], builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"], fields: { properties: (0, e2.validate)((0, e2.arrayOfType)("ObjectTypeProperty", "ObjectTypeSpreadProperty")), indexers: { validate: (0, e2.arrayOfType)("ObjectTypeIndexer"), optional: true, default: [] }, callProperties: { validate: (0, e2.arrayOfType)("ObjectTypeCallProperty"), optional: true, default: [] }, internalSlots: { validate: (0, e2.arrayOfType)("ObjectTypeInternalSlot"), optional: true, default: [] }, exact: { validate: (0, e2.assertValueType)("boolean"), default: false }, inexact: (0, e2.validateOptional)((0, e2.assertValueType)("boolean")) } }), a2("ObjectTypeInternalSlot", { visitor: ["id", "value"], builder: ["id", "value", "optional", "static", "method"], aliases: ["UserWhitespacable"], fields: { id: (0, e2.validateType)("Identifier"), value: (0, e2.validateType)("FlowType"), optional: (0, e2.validate)((0, e2.assertValueType)("boolean")), static: (0, e2.validate)((0, e2.assertValueType)("boolean")), method: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("ObjectTypeCallProperty", { visitor: ["value"], aliases: ["UserWhitespacable"], fields: { value: (0, e2.validateType)("FlowType"), static: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("ObjectTypeIndexer", { visitor: ["variance", "id", "key", "value"], builder: ["id", "key", "value", "variance"], aliases: ["UserWhitespacable"], fields: { id: (0, e2.validateOptionalType)("Identifier"), key: (0, e2.validateType)("FlowType"), value: (0, e2.validateType)("FlowType"), static: (0, e2.validate)((0, e2.assertValueType)("boolean")), variance: (0, e2.validateOptionalType)("Variance") } }), a2("ObjectTypeProperty", { visitor: ["key", "value", "variance"], aliases: ["UserWhitespacable"], fields: { key: (0, e2.validateType)("Identifier", "StringLiteral"), value: (0, e2.validateType)("FlowType"), kind: (0, e2.validate)((0, e2.assertOneOf)("init", "get", "set")), static: (0, e2.validate)((0, e2.assertValueType)("boolean")), proto: (0, e2.validate)((0, e2.assertValueType)("boolean")), optional: (0, e2.validate)((0, e2.assertValueType)("boolean")), variance: (0, e2.validateOptionalType)("Variance"), method: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("ObjectTypeSpreadProperty", { visitor: ["argument"], aliases: ["UserWhitespacable"], fields: { argument: (0, e2.validateType)("FlowType") } }), a2("OpaqueType", { visitor: ["id", "typeParameters", "supertype", "impltype"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), supertype: (0, e2.validateOptionalType)("FlowType"), impltype: (0, e2.validateType)("FlowType") } }), a2("QualifiedTypeIdentifier", { visitor: ["qualification", "id"], builder: ["id", "qualification"], fields: { id: (0, e2.validateType)("Identifier"), qualification: (0, e2.validateType)("Identifier", "QualifiedTypeIdentifier") } }), a2("StringLiteralTypeAnnotation", { builder: ["value"], aliases: ["FlowType"], fields: { value: (0, e2.validate)((0, e2.assertValueType)("string")) } }), a2("StringTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("SymbolTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("ThisTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("TupleTypeAnnotation", { visitor: ["types"], aliases: ["FlowType"], fields: { types: (0, e2.validate)((0, e2.arrayOfType)("FlowType")) } }), a2("TypeofTypeAnnotation", { visitor: ["argument"], aliases: ["FlowType"], fields: { argument: (0, e2.validateType)("FlowType") } }), a2("TypeAlias", { visitor: ["id", "typeParameters", "right"], aliases: ["FlowDeclaration", "Statement", "Declaration"], fields: { id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TypeParameterDeclaration"), right: (0, e2.validateType)("FlowType") } }), a2("TypeAnnotation", { visitor: ["typeAnnotation"], fields: { typeAnnotation: (0, e2.validateType)("FlowType") } }), a2("TypeCastExpression", { visitor: ["expression", "typeAnnotation"], aliases: ["ExpressionWrapper", "Expression"], fields: { expression: (0, e2.validateType)("Expression"), typeAnnotation: (0, e2.validateType)("TypeAnnotation") } }), a2("TypeParameter", { visitor: ["bound", "default", "variance"], fields: { name: (0, e2.validate)((0, e2.assertValueType)("string")), bound: (0, e2.validateOptionalType)("TypeAnnotation"), default: (0, e2.validateOptionalType)("FlowType"), variance: (0, e2.validateOptionalType)("Variance") } }), a2("TypeParameterDeclaration", { visitor: ["params"], fields: { params: (0, e2.validate)((0, e2.arrayOfType)("TypeParameter")) } }), a2("TypeParameterInstantiation", { visitor: ["params"], fields: { params: (0, e2.validate)((0, e2.arrayOfType)("FlowType")) } }), a2("UnionTypeAnnotation", { visitor: ["types"], aliases: ["FlowType"], fields: { types: (0, e2.validate)((0, e2.arrayOfType)("FlowType")) } }), a2("Variance", { builder: ["kind"], fields: { kind: (0, e2.validate)((0, e2.assertOneOf)("minus", "plus")) } }), a2("VoidTypeAnnotation", { aliases: ["FlowType", "FlowBaseAnnotation"] }), a2("EnumDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "body"], fields: { id: (0, e2.validateType)("Identifier"), body: (0, e2.validateType)("EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody") } }), a2("EnumBooleanBody", { aliases: ["EnumBody"], visitor: ["members"], fields: { explicitType: (0, e2.validate)((0, e2.assertValueType)("boolean")), members: (0, e2.validateArrayOfType)("EnumBooleanMember"), hasUnknownMembers: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("EnumNumberBody", { aliases: ["EnumBody"], visitor: ["members"], fields: { explicitType: (0, e2.validate)((0, e2.assertValueType)("boolean")), members: (0, e2.validateArrayOfType)("EnumNumberMember"), hasUnknownMembers: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("EnumStringBody", { aliases: ["EnumBody"], visitor: ["members"], fields: { explicitType: (0, e2.validate)((0, e2.assertValueType)("boolean")), members: (0, e2.validateArrayOfType)("EnumStringMember", "EnumDefaultedMember"), hasUnknownMembers: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("EnumSymbolBody", { aliases: ["EnumBody"], visitor: ["members"], fields: { members: (0, e2.validateArrayOfType)("EnumDefaultedMember"), hasUnknownMembers: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), a2("EnumBooleanMember", { aliases: ["EnumMember"], builder: ["id"], visitor: ["id", "init"], fields: { id: (0, e2.validateType)("Identifier"), init: (0, e2.validateType)("BooleanLiteral") } }), a2("EnumNumberMember", { aliases: ["EnumMember"], visitor: ["id", "init"], fields: { id: (0, e2.validateType)("Identifier"), init: (0, e2.validateType)("NumericLiteral") } }), a2("EnumStringMember", { aliases: ["EnumMember"], visitor: ["id", "init"], fields: { id: (0, e2.validateType)("Identifier"), init: (0, e2.validateType)("StringLiteral") } }), a2("EnumDefaultedMember", { aliases: ["EnumMember"], visitor: ["id"], fields: { id: (0, e2.validateType)("Identifier") } }), a2("IndexedAccessType", { visitor: ["objectType", "indexType"], aliases: ["FlowType"], fields: { objectType: (0, e2.validateType)("FlowType"), indexType: (0, e2.validateType)("FlowType") } }), a2("OptionalIndexedAccessType", { visitor: ["objectType", "indexType"], aliases: ["FlowType"], fields: { objectType: (0, e2.validateType)("FlowType"), indexType: (0, e2.validateType)("FlowType"), optional: (0, e2.validate)((0, e2.assertValueType)("boolean")) } }), o$k;
}
var r$l = {};
var i$i;
function r$k() {
  if (i$i) return r$l;
  i$i = 1;
  var e2 = J();
  const a2 = (0, e2.defineAliasedType)("JSX");
  return a2("JSXAttribute", { visitor: ["name", "value"], aliases: ["Immutable"], fields: { name: { validate: (0, e2.assertNodeType)("JSXIdentifier", "JSXNamespacedName") }, value: { optional: true, validate: (0, e2.assertNodeType)("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer") } } }), a2("JSXClosingElement", { visitor: ["name"], aliases: ["Immutable"], fields: { name: { validate: (0, e2.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") } } }), a2("JSXElement", { builder: ["openingElement", "closingElement", "children", "selfClosing"], visitor: ["openingElement", "children", "closingElement"], aliases: ["Immutable", "Expression"], fields: Object.assign({ openingElement: { validate: (0, e2.assertNodeType)("JSXOpeningElement") }, closingElement: { optional: true, validate: (0, e2.assertNodeType)("JSXClosingElement") }, children: (0, e2.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment") }, { selfClosing: { validate: (0, e2.assertValueType)("boolean"), optional: true } }) }), a2("JSXEmptyExpression", {}), a2("JSXExpressionContainer", { visitor: ["expression"], aliases: ["Immutable"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression", "JSXEmptyExpression") } } }), a2("JSXSpreadChild", { visitor: ["expression"], aliases: ["Immutable"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression") } } }), a2("JSXIdentifier", { builder: ["name"], fields: { name: { validate: (0, e2.assertValueType)("string") } } }), a2("JSXMemberExpression", { visitor: ["object", "property"], fields: { object: { validate: (0, e2.assertNodeType)("JSXMemberExpression", "JSXIdentifier") }, property: { validate: (0, e2.assertNodeType)("JSXIdentifier") } } }), a2("JSXNamespacedName", { visitor: ["namespace", "name"], fields: { namespace: { validate: (0, e2.assertNodeType)("JSXIdentifier") }, name: { validate: (0, e2.assertNodeType)("JSXIdentifier") } } }), a2("JSXOpeningElement", { builder: ["name", "attributes", "selfClosing"], visitor: ["name", "typeParameters", "typeArguments", "attributes"], aliases: ["Immutable"], fields: Object.assign({ name: { validate: (0, e2.assertNodeType)("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName") }, selfClosing: { default: false }, attributes: (0, e2.validateArrayOfType)("JSXAttribute", "JSXSpreadAttribute"), typeArguments: { validate: (0, e2.assertNodeType)("TypeParameterInstantiation"), optional: true } }, { typeParameters: { validate: (0, e2.assertNodeType)("TSTypeParameterInstantiation"), optional: true } }) }), a2("JSXSpreadAttribute", { visitor: ["argument"], fields: { argument: { validate: (0, e2.assertNodeType)("Expression") } } }), a2("JSXText", { aliases: ["Immutable"], builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } } }), a2("JSXFragment", { builder: ["openingFragment", "closingFragment", "children"], visitor: ["openingFragment", "children", "closingFragment"], aliases: ["Immutable", "Expression"], fields: { openingFragment: { validate: (0, e2.assertNodeType)("JSXOpeningFragment") }, closingFragment: { validate: (0, e2.assertNodeType)("JSXClosingFragment") }, children: (0, e2.validateArrayOfType)("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment") } }), a2("JSXOpeningFragment", { aliases: ["Immutable"] }), a2("JSXClosingFragment", { aliases: ["Immutable"] }), r$l;
}
var r$j = {};
var e$G = {};
var a$d;
function i$h() {
  if (a$d) return e$G;
  a$d = 1, Object.defineProperty(e$G, "__esModule", { value: true }), e$G.PLACEHOLDERS_FLIPPED_ALIAS = e$G.PLACEHOLDERS_ALIAS = e$G.PLACEHOLDERS = void 0;
  var s2 = J();
  const n2 = e$G.PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"], o2 = e$G.PLACEHOLDERS_ALIAS = { Declaration: ["Statement"], Pattern: ["PatternLike", "LVal"] };
  for (const t2 of n2) {
    const r2 = s2.ALIAS_KEYS[t2];
    r2 != null && r2.length && (o2[t2] = r2);
  }
  const L = e$G.PLACEHOLDERS_FLIPPED_ALIAS = {};
  return Object.keys(o2).forEach((t2) => {
    o2[t2].forEach((r2) => {
      hasOwnProperty.call(L, r2) || (L[r2] = []), L[r2].push(t2);
    });
  }), e$G;
}
var s$5;
function d$1() {
  if (s$5) return r$j;
  s$5 = 1;
  var e2 = J(), a2 = i$h(), t2 = B();
  const r2 = (0, e2.defineAliasedType)("Miscellaneous");
  return r2("Noop", { visitor: [] }), r2("Placeholder", { visitor: [], builder: ["expectedNode", "name"], fields: Object.assign({ name: { validate: (0, e2.assertNodeType)("Identifier") }, expectedNode: { validate: (0, e2.assertOneOf)(...a2.PLACEHOLDERS) } }, (0, t2.patternLikeCommon)()) }), r2("V8IntrinsicIdentifier", { builder: ["name"], fields: { name: { validate: (0, e2.assertValueType)("string") } } }), r$j;
}
var e$F = {};
var i$g;
function r$i() {
  if (i$g) return e$F;
  i$g = 1;
  var e2 = J();
  return (0, e2.default)("ArgumentPlaceholder", {}), (0, e2.default)("BindExpression", { visitor: ["object", "callee"], aliases: ["Expression"], fields: process.env.BABEL_TYPES_8_BREAKING ? { object: { validate: (0, e2.assertNodeType)("Expression") }, callee: { validate: (0, e2.assertNodeType)("Expression") } } : { object: { validate: Object.assign(() => {
  }, { oneOfNodeTypes: ["Expression"] }) }, callee: { validate: Object.assign(() => {
  }, { oneOfNodeTypes: ["Expression"] }) } } }), (0, e2.default)("ImportAttribute", { visitor: ["key", "value"], fields: { key: { validate: (0, e2.assertNodeType)("Identifier", "StringLiteral") }, value: { validate: (0, e2.assertNodeType)("StringLiteral") } } }), (0, e2.default)("Decorator", { visitor: ["expression"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression") } } }), (0, e2.default)("DoExpression", { visitor: ["body"], builder: ["body", "async"], aliases: ["Expression"], fields: { body: { validate: (0, e2.assertNodeType)("BlockStatement") }, async: { validate: (0, e2.assertValueType)("boolean"), default: false } } }), (0, e2.default)("ExportDefaultSpecifier", { visitor: ["exported"], aliases: ["ModuleSpecifier"], fields: { exported: { validate: (0, e2.assertNodeType)("Identifier") } } }), (0, e2.default)("RecordExpression", { visitor: ["properties"], aliases: ["Expression"], fields: { properties: (0, e2.validateArrayOfType)("ObjectProperty", "SpreadElement") } }), (0, e2.default)("TupleExpression", { fields: { elements: { validate: (0, e2.arrayOfType)("Expression", "SpreadElement"), default: [] } }, visitor: ["elements"], aliases: ["Expression"] }), (0, e2.default)("DecimalLiteral", { builder: ["value"], fields: { value: { validate: (0, e2.assertValueType)("string") } }, aliases: ["Expression", "Pureish", "Literal", "Immutable"] }), (0, e2.default)("ModuleExpression", { visitor: ["body"], fields: { body: { validate: (0, e2.assertNodeType)("Program") } }, aliases: ["Expression"] }), (0, e2.default)("TopicReference", { aliases: ["Expression"] }), (0, e2.default)("PipelineTopicExpression", { builder: ["expression"], visitor: ["expression"], fields: { expression: { validate: (0, e2.assertNodeType)("Expression") } }, aliases: ["Expression"] }), (0, e2.default)("PipelineBareFunction", { builder: ["callee"], visitor: ["callee"], fields: { callee: { validate: (0, e2.assertNodeType)("Expression") } }, aliases: ["Expression"] }), (0, e2.default)("PipelinePrimaryTopicReference", { aliases: ["Expression"] }), e$F;
}
var p$1 = {};
var u$9;
function g$1() {
  if (u$9) return p$1;
  u$9 = 1;
  var e2 = J(), p2 = B(), c2 = c$7();
  const a2 = (0, e2.defineAliasedType)("TypeScript"), t2 = (0, e2.assertValueType)("boolean"), o2 = () => ({ returnType: { validate: (0, e2.assertNodeType)("TSTypeAnnotation", "Noop"), optional: true }, typeParameters: { validate: (0, e2.assertNodeType)("TSTypeParameterDeclaration", "Noop"), optional: true } });
  a2("TSParameterProperty", { aliases: ["LVal"], visitor: ["parameter"], fields: { accessibility: { validate: (0, e2.assertOneOf)("public", "private", "protected"), optional: true }, readonly: { validate: (0, e2.assertValueType)("boolean"), optional: true }, parameter: { validate: (0, e2.assertNodeType)("Identifier", "AssignmentPattern") }, override: { validate: (0, e2.assertValueType)("boolean"), optional: true }, decorators: { validate: (0, e2.arrayOfType)("Decorator"), optional: true } } }), a2("TSDeclareFunction", { aliases: ["Statement", "Declaration"], visitor: ["id", "typeParameters", "params", "returnType"], fields: Object.assign({}, (0, p2.functionDeclarationCommon)(), o2()) }), a2("TSDeclareMethod", { visitor: ["decorators", "key", "typeParameters", "params", "returnType"], fields: Object.assign({}, (0, p2.classMethodOrDeclareMethodCommon)(), o2()) }), a2("TSQualifiedName", { aliases: ["TSEntityName"], visitor: ["left", "right"], fields: { left: (0, e2.validateType)("TSEntityName"), right: (0, e2.validateType)("Identifier") } });
  const s2 = () => ({ typeParameters: (0, e2.validateOptionalType)("TSTypeParameterDeclaration"), parameters: (0, e2.validateArrayOfType)("ArrayPattern", "Identifier", "ObjectPattern", "RestElement"), typeAnnotation: (0, e2.validateOptionalType)("TSTypeAnnotation") }), l2 = { aliases: ["TSTypeElement"], visitor: ["typeParameters", "parameters", "typeAnnotation"], fields: s2() };
  a2("TSCallSignatureDeclaration", l2), a2("TSConstructSignatureDeclaration", l2);
  const T2 = () => ({ key: (0, e2.validateType)("Expression"), computed: { default: false }, optional: (0, e2.validateOptional)(t2) });
  a2("TSPropertySignature", { aliases: ["TSTypeElement"], visitor: ["key", "typeAnnotation"], fields: Object.assign({}, T2(), { readonly: (0, e2.validateOptional)(t2), typeAnnotation: (0, e2.validateOptionalType)("TSTypeAnnotation"), kind: { optional: true, validate: (0, e2.assertOneOf)("get", "set") } }) }), a2("TSMethodSignature", { aliases: ["TSTypeElement"], visitor: ["key", "typeParameters", "parameters", "typeAnnotation"], fields: Object.assign({}, s2(), T2(), { kind: { validate: (0, e2.assertOneOf)("method", "get", "set") } }) }), a2("TSIndexSignature", { aliases: ["TSTypeElement"], visitor: ["parameters", "typeAnnotation"], fields: { readonly: (0, e2.validateOptional)(t2), static: (0, e2.validateOptional)(t2), parameters: (0, e2.validateArrayOfType)("Identifier"), typeAnnotation: (0, e2.validateOptionalType)("TSTypeAnnotation") } });
  const O = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
  for (const i2 of O) a2(i2, { aliases: ["TSType", "TSBaseType"], visitor: [], fields: {} });
  a2("TSThisType", { aliases: ["TSType", "TSBaseType"], visitor: [], fields: {} });
  const y2 = { aliases: ["TSType"], visitor: ["typeParameters", "parameters", "typeAnnotation"] };
  a2("TSFunctionType", Object.assign({}, y2, { fields: s2() })), a2("TSConstructorType", Object.assign({}, y2, { fields: Object.assign({}, s2(), { abstract: (0, e2.validateOptional)(t2) }) })), a2("TSTypeReference", { aliases: ["TSType"], visitor: ["typeName", "typeParameters"], fields: { typeName: (0, e2.validateType)("TSEntityName"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterInstantiation") } }), a2("TSTypePredicate", { aliases: ["TSType"], visitor: ["parameterName", "typeAnnotation"], builder: ["parameterName", "typeAnnotation", "asserts"], fields: { parameterName: (0, e2.validateType)("Identifier", "TSThisType"), typeAnnotation: (0, e2.validateOptionalType)("TSTypeAnnotation"), asserts: (0, e2.validateOptional)(t2) } }), a2("TSTypeQuery", { aliases: ["TSType"], visitor: ["exprName", "typeParameters"], fields: { exprName: (0, e2.validateType)("TSEntityName", "TSImportType"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterInstantiation") } }), a2("TSTypeLiteral", { aliases: ["TSType"], visitor: ["members"], fields: { members: (0, e2.validateArrayOfType)("TSTypeElement") } }), a2("TSArrayType", { aliases: ["TSType"], visitor: ["elementType"], fields: { elementType: (0, e2.validateType)("TSType") } }), a2("TSTupleType", { aliases: ["TSType"], visitor: ["elementTypes"], fields: { elementTypes: (0, e2.validateArrayOfType)("TSType", "TSNamedTupleMember") } }), a2("TSOptionalType", { aliases: ["TSType"], visitor: ["typeAnnotation"], fields: { typeAnnotation: (0, e2.validateType)("TSType") } }), a2("TSRestType", { aliases: ["TSType"], visitor: ["typeAnnotation"], fields: { typeAnnotation: (0, e2.validateType)("TSType") } }), a2("TSNamedTupleMember", { visitor: ["label", "elementType"], builder: ["label", "elementType", "optional"], fields: { label: (0, e2.validateType)("Identifier"), optional: { validate: t2, default: false }, elementType: (0, e2.validateType)("TSType") } });
  const d2 = { aliases: ["TSType"], visitor: ["types"], fields: { types: (0, e2.validateArrayOfType)("TSType") } };
  a2("TSUnionType", d2), a2("TSIntersectionType", d2), a2("TSConditionalType", { aliases: ["TSType"], visitor: ["checkType", "extendsType", "trueType", "falseType"], fields: { checkType: (0, e2.validateType)("TSType"), extendsType: (0, e2.validateType)("TSType"), trueType: (0, e2.validateType)("TSType"), falseType: (0, e2.validateType)("TSType") } }), a2("TSInferType", { aliases: ["TSType"], visitor: ["typeParameter"], fields: { typeParameter: (0, e2.validateType)("TSTypeParameter") } }), a2("TSParenthesizedType", { aliases: ["TSType"], visitor: ["typeAnnotation"], fields: { typeAnnotation: (0, e2.validateType)("TSType") } }), a2("TSTypeOperator", { aliases: ["TSType"], visitor: ["typeAnnotation"], fields: { operator: (0, e2.validate)((0, e2.assertValueType)("string")), typeAnnotation: (0, e2.validateType)("TSType") } }), a2("TSIndexedAccessType", { aliases: ["TSType"], visitor: ["objectType", "indexType"], fields: { objectType: (0, e2.validateType)("TSType"), indexType: (0, e2.validateType)("TSType") } }), a2("TSMappedType", { aliases: ["TSType"], visitor: ["typeParameter", "nameType", "typeAnnotation"], builder: ["typeParameter", "typeAnnotation", "nameType"], fields: Object.assign({}, { typeParameter: (0, e2.validateType)("TSTypeParameter") }, { readonly: (0, e2.validateOptional)((0, e2.assertOneOf)(true, false, "+", "-")), optional: (0, e2.validateOptional)((0, e2.assertOneOf)(true, false, "+", "-")), typeAnnotation: (0, e2.validateOptionalType)("TSType"), nameType: (0, e2.validateOptionalType)("TSType") }) }), a2("TSTemplateLiteralType", { aliases: ["TSType", "TSBaseType"], visitor: ["quasis", "types"], fields: { quasis: (0, e2.validateArrayOfType)("TemplateElement"), types: { validate: (0, e2.chain)((0, e2.assertValueType)("array"), (0, e2.assertEach)((0, e2.assertNodeType)("TSType")), function(i2, m2, n2) {
    if (i2.quasis.length !== n2.length + 1) throw new TypeError(`Number of ${i2.type} quasis should be exactly one more than the number of types.
Expected ${n2.length + 1} quasis but got ${i2.quasis.length}`);
  }) } } }), a2("TSLiteralType", { aliases: ["TSType", "TSBaseType"], visitor: ["literal"], fields: { literal: { validate: (function() {
    const i2 = (0, e2.assertNodeType)("NumericLiteral", "BigIntLiteral"), m2 = (0, e2.assertOneOf)("-"), n2 = (0, e2.assertNodeType)("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral");
    function v2(b2, A2, r2) {
      (0, c2.default)("UnaryExpression", r2) ? (m2(r2, "operator", r2.operator), i2(r2, "argument", r2.argument)) : n2(b2, A2, r2);
    }
    return v2.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"], v2;
  })() } } }), a2("TSExpressionWithTypeArguments", { aliases: ["TSType"], visitor: ["expression", "typeParameters"], fields: { expression: (0, e2.validateType)("TSEntityName"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterInstantiation") } }), a2("TSInterfaceDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "typeParameters", "extends", "body"], fields: { declare: (0, e2.validateOptional)(t2), id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterDeclaration"), extends: (0, e2.validateOptional)((0, e2.arrayOfType)("TSExpressionWithTypeArguments")), body: (0, e2.validateType)("TSInterfaceBody") } }), a2("TSInterfaceBody", { visitor: ["body"], fields: { body: (0, e2.validateArrayOfType)("TSTypeElement") } }), a2("TSTypeAliasDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "typeParameters", "typeAnnotation"], fields: { declare: (0, e2.validateOptional)(t2), id: (0, e2.validateType)("Identifier"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterDeclaration"), typeAnnotation: (0, e2.validateType)("TSType") } }), a2("TSInstantiationExpression", { aliases: ["Expression"], visitor: ["expression", "typeParameters"], fields: { expression: (0, e2.validateType)("Expression"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterInstantiation") } });
  const S = { aliases: ["Expression", "LVal", "PatternLike"], visitor: ["expression", "typeAnnotation"], fields: { expression: (0, e2.validateType)("Expression"), typeAnnotation: (0, e2.validateType)("TSType") } };
  return a2("TSAsExpression", S), a2("TSSatisfiesExpression", S), a2("TSTypeAssertion", { aliases: ["Expression", "LVal", "PatternLike"], visitor: ["typeAnnotation", "expression"], fields: { typeAnnotation: (0, e2.validateType)("TSType"), expression: (0, e2.validateType)("Expression") } }), a2("TSEnumBody", { visitor: ["members"], fields: { members: (0, e2.validateArrayOfType)("TSEnumMember") } }), a2("TSEnumDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "members"], fields: { declare: (0, e2.validateOptional)(t2), const: (0, e2.validateOptional)(t2), id: (0, e2.validateType)("Identifier"), members: (0, e2.validateArrayOfType)("TSEnumMember"), initializer: (0, e2.validateOptionalType)("Expression"), body: (0, e2.validateOptionalType)("TSEnumBody") } }), a2("TSEnumMember", { visitor: ["id", "initializer"], fields: { id: (0, e2.validateType)("Identifier", "StringLiteral"), initializer: (0, e2.validateOptionalType)("Expression") } }), a2("TSModuleDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "body"], fields: Object.assign({ kind: { validate: (0, e2.assertOneOf)("global", "module", "namespace") }, declare: (0, e2.validateOptional)(t2) }, { global: (0, e2.validateOptional)(t2) }, { id: (0, e2.validateType)("Identifier", "StringLiteral"), body: (0, e2.validateType)("TSModuleBlock", "TSModuleDeclaration") }) }), a2("TSModuleBlock", { aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"], visitor: ["body"], fields: { body: (0, e2.validateArrayOfType)("Statement") } }), a2("TSImportType", { aliases: ["TSType"], builder: ["argument", "qualifier", "typeParameters"], visitor: ["argument", "options", "qualifier", "typeParameters"], fields: { argument: (0, e2.validateType)("StringLiteral"), qualifier: (0, e2.validateOptionalType)("TSEntityName"), typeParameters: (0, e2.validateOptionalType)("TSTypeParameterInstantiation"), options: { validate: (0, e2.assertNodeType)("Expression"), optional: true } } }), a2("TSImportEqualsDeclaration", { aliases: ["Statement", "Declaration"], visitor: ["id", "moduleReference"], fields: Object.assign({}, { isExport: (0, e2.validate)(t2) }, { id: (0, e2.validateType)("Identifier"), moduleReference: (0, e2.validateType)("TSEntityName", "TSExternalModuleReference"), importKind: { validate: (0, e2.assertOneOf)("type", "value"), optional: true } }) }), a2("TSExternalModuleReference", { visitor: ["expression"], fields: { expression: (0, e2.validateType)("StringLiteral") } }), a2("TSNonNullExpression", { aliases: ["Expression", "LVal", "PatternLike"], visitor: ["expression"], fields: { expression: (0, e2.validateType)("Expression") } }), a2("TSExportAssignment", { aliases: ["Statement"], visitor: ["expression"], fields: { expression: (0, e2.validateType)("Expression") } }), a2("TSNamespaceExportDeclaration", { aliases: ["Statement"], visitor: ["id"], fields: { id: (0, e2.validateType)("Identifier") } }), a2("TSTypeAnnotation", { visitor: ["typeAnnotation"], fields: { typeAnnotation: { validate: (0, e2.assertNodeType)("TSType") } } }), a2("TSTypeParameterInstantiation", { visitor: ["params"], fields: { params: (0, e2.validateArrayOfType)("TSType") } }), a2("TSTypeParameterDeclaration", { visitor: ["params"], fields: { params: (0, e2.validateArrayOfType)("TSTypeParameter") } }), a2("TSTypeParameter", { builder: ["constraint", "default", "name"], visitor: ["constraint", "default"], fields: { name: { validate: (0, e2.assertValueType)("string") }, in: { validate: (0, e2.assertValueType)("boolean"), optional: true }, out: { validate: (0, e2.assertValueType)("boolean"), optional: true }, const: { validate: (0, e2.assertValueType)("boolean"), optional: true }, constraint: { validate: (0, e2.assertNodeType)("TSType"), optional: true }, default: { validate: (0, e2.assertNodeType)("TSType"), optional: true } } }), p$1;
}
var e$E = {};
var r$h;
function t$6() {
  if (r$h) return e$E;
  r$h = 1, Object.defineProperty(e$E, "__esModule", { value: true }), e$E.DEPRECATED_ALIASES = void 0;
  e$E.DEPRECATED_ALIASES = { ModuleDeclaration: "ImportOrExportDeclaration" };
  return e$E;
}
var i$f;
function I$1() {
  return i$f ? e$L : (i$f = 1, (function(e2) {
    Object.defineProperty(e2, "__esModule", { value: true }), Object.defineProperty(e2, "ALIAS_KEYS", { enumerable: true, get: function() {
      return r2.ALIAS_KEYS;
    } }), Object.defineProperty(e2, "BUILDER_KEYS", { enumerable: true, get: function() {
      return r2.BUILDER_KEYS;
    } }), Object.defineProperty(e2, "DEPRECATED_ALIASES", { enumerable: true, get: function() {
      return u2.DEPRECATED_ALIASES;
    } }), Object.defineProperty(e2, "DEPRECATED_KEYS", { enumerable: true, get: function() {
      return r2.DEPRECATED_KEYS;
    } }), Object.defineProperty(e2, "FLIPPED_ALIAS_KEYS", { enumerable: true, get: function() {
      return r2.FLIPPED_ALIAS_KEYS;
    } }), Object.defineProperty(e2, "NODE_FIELDS", { enumerable: true, get: function() {
      return r2.NODE_FIELDS;
    } }), Object.defineProperty(e2, "NODE_PARENT_VALIDATIONS", { enumerable: true, get: function() {
      return r2.NODE_PARENT_VALIDATIONS;
    } }), Object.defineProperty(e2, "PLACEHOLDERS", { enumerable: true, get: function() {
      return t2.PLACEHOLDERS;
    } }), Object.defineProperty(e2, "PLACEHOLDERS_ALIAS", { enumerable: true, get: function() {
      return t2.PLACEHOLDERS_ALIAS;
    } }), Object.defineProperty(e2, "PLACEHOLDERS_FLIPPED_ALIAS", { enumerable: true, get: function() {
      return t2.PLACEHOLDERS_FLIPPED_ALIAS;
    } }), e2.TYPES = void 0, Object.defineProperty(e2, "VISITOR_KEYS", { enumerable: true, get: function() {
      return r2.VISITOR_KEYS;
    } }), B(), y$2(), r$k(), d$1(), r$i(), g$1();
    var r2 = J(), t2 = i$h(), u2 = t$6();
    Object.keys(u2.DEPRECATED_ALIASES).forEach((n2) => {
      r2.FLIPPED_ALIAS_KEYS[n2] = r2.FLIPPED_ALIAS_KEYS[u2.DEPRECATED_ALIASES[n2]];
    });
    e2.TYPES = [].concat(Object.keys(r2.VISITOR_KEYS), Object.keys(r2.FLIPPED_ALIAS_KEYS), Object.keys(r2.DEPRECATED_KEYS));
  })(e$L), e$L);
}
var f$9;
function N$1() {
  if (f$9) return a$f;
  f$9 = 1, Object.defineProperty(a$f, "__esModule", { value: true }), a$f.default = s2, a$f.validateChild = o2, a$f.validateField = u2, a$f.validateInternal = c2;
  var l2 = I$1();
  function s2(r2, i2, e2) {
    if (!r2) return;
    const t2 = l2.NODE_FIELDS[r2.type];
    if (!t2) return;
    const n2 = t2[i2];
    u2(r2, i2, e2, n2), o2(r2, i2, e2);
  }
  function c2(r2, i2, e2, t2, n2) {
    if (r2 != null && r2.validate && !(r2.optional && t2 == null) && (r2.validate(i2, e2, t2), n2)) {
      var _2;
      const d2 = t2.type;
      if (d2 == null) return;
      (_2 = l2.NODE_PARENT_VALIDATIONS[d2]) == null || _2.call(l2.NODE_PARENT_VALIDATIONS, i2, e2, t2);
    }
  }
  function u2(r2, i2, e2, t2) {
    t2 != null && t2.validate && (t2.optional && e2 == null || t2.validate(r2, i2, e2));
  }
  function o2(r2, i2, e2) {
    var t2;
    const n2 = _optionalChain([e2, 'optionalAccess', _5 => _5.type]);
    n2 != null && ((t2 = l2.NODE_PARENT_VALIDATIONS[n2]) == null || t2.call(l2.NODE_PARENT_VALIDATIONS, r2, i2, e2));
  }
  return a$f;
}
var x;
function cr() {
  if (x) return e$M;
  x = 1, Object.defineProperty(e$M, "__esModule", { value: true }), e$M.anyTypeAnnotation = He, e$M.argumentPlaceholder = jn, e$M.arrayExpression = A2, e$M.arrayPattern = Te, e$M.arrayTypeAnnotation = Ze, e$M.arrowFunctionExpression = Se, e$M.assignmentExpression = g2, e$M.assignmentPattern = me, e$M.awaitExpression = Xe, e$M.bigIntLiteral = qe, e$M.binaryExpression = P2, e$M.bindExpression = Mn, e$M.blockStatement = j, e$M.booleanLiteral = z, e$M.booleanLiteralTypeAnnotation = et, e$M.booleanTypeAnnotation = _e, e$M.breakStatement = M, e$M.callExpression = w, e$M.catchClause = C, e$M.classAccessorProperty = Qe, e$M.classBody = xe, e$M.classDeclaration = be, e$M.classExpression = Ee, e$M.classImplements = nt, e$M.classMethod = Le, e$M.classPrivateMethod = $e, e$M.classPrivateProperty = ze, e$M.classProperty = We, e$M.conditionalExpression = N2, e$M.continueStatement = L, e$M.debuggerStatement = v2, e$M.decimalLiteral = On, e$M.declareClass = ot, e$M.declareExportAllDeclaration = dt, e$M.declareExportDeclaration = ut, e$M.declareFunction = rt, e$M.declareInterface = st, e$M.declareModule = it, e$M.declareModuleExports = at, e$M.declareOpaqueType = pt, e$M.declareTypeAlias = ct, e$M.declareVariable = lt, e$M.declaredPredicate = yt, e$M.decorator = Cn, e$M.directive = I2, e$M.directiveLiteral = h, e$M.doExpression = Nn, e$M.doWhileStatement = B2, e$M.emptyStatement = O, e$M.emptyTypeAnnotation = Dt, e$M.enumBooleanBody = Zt, e$M.enumBooleanMember = nn, e$M.enumDeclaration = Ht, e$M.enumDefaultedMember = sn, e$M.enumNumberBody = _t, e$M.enumNumberMember = on, e$M.enumStringBody = en, e$M.enumStringMember = rn, e$M.enumSymbolBody = tn, e$M.existsTypeAnnotation = ft, e$M.exportAllDeclaration = Ae, e$M.exportDefaultDeclaration = ge, e$M.exportDefaultSpecifier = Ln, e$M.exportNamedDeclaration = Pe, e$M.exportNamespaceSpecifier = Je, e$M.exportSpecifier = De, e$M.expressionStatement = F, e$M.file = K, e$M.forInStatement = k, e$M.forOfStatement = Ie, e$M.forStatement = X, e$M.functionDeclaration = R, e$M.functionExpression = q2, e$M.functionTypeAnnotation = mt, e$M.functionTypeParam = Tt, e$M.genericTypeAnnotation = St, e$M.identifier = J$1, e$M.ifStatement = U, e$M.import = Re, e$M.importAttribute = wn, e$M.importDeclaration = he, e$M.importDefaultSpecifier = je, e$M.importExpression = Ce, e$M.importNamespaceSpecifier = Me, e$M.importSpecifier = we, e$M.indexedAccessType = an, e$M.inferredPredicate = xt, e$M.interfaceDeclaration = bt, e$M.interfaceExtends = Et, e$M.interfaceTypeAnnotation = At, e$M.interpreterDirective = D, e$M.intersectionTypeAnnotation = gt, e$M.jSXAttribute = e$M.jsxAttribute = pn, e$M.jSXClosingElement = e$M.jsxClosingElement = ln, e$M.jSXClosingFragment = e$M.jsxClosingFragment = Pn, e$M.jSXElement = e$M.jsxElement = un, e$M.jSXEmptyExpression = e$M.jsxEmptyExpression = dn, e$M.jSXExpressionContainer = e$M.jsxExpressionContainer = yn, e$M.jSXFragment = e$M.jsxFragment = An, e$M.jSXIdentifier = e$M.jsxIdentifier = mn, e$M.jSXMemberExpression = e$M.jsxMemberExpression = Tn, e$M.jSXNamespacedName = e$M.jsxNamespacedName = Sn, e$M.jSXOpeningElement = e$M.jsxOpeningElement = xn, e$M.jSXOpeningFragment = e$M.jsxOpeningFragment = gn, e$M.jSXSpreadAttribute = e$M.jsxSpreadAttribute = En, e$M.jSXSpreadChild = e$M.jsxSpreadChild = fn, e$M.jSXText = e$M.jsxText = bn, e$M.labeledStatement = V, e$M.logicalExpression = $, e$M.memberExpression = G, e$M.metaProperty = Ne, e$M.mixedTypeAnnotation = Pt, e$M.moduleExpression = Fn, e$M.newExpression = Y2, e$M.noop = Dn, e$M.nullLiteral = Q, e$M.nullLiteralTypeAnnotation = tt, e$M.nullableTypeAnnotation = It, e$M.numberLiteral = tr, e$M.numberLiteralTypeAnnotation = ht, e$M.numberTypeAnnotation = jt, e$M.numericLiteral = f2, e$M.objectExpression = Z, e$M.objectMethod = _2, e$M.objectPattern = ve, e$M.objectProperty = ee, e$M.objectTypeAnnotation = Mt, e$M.objectTypeCallProperty = Ct, e$M.objectTypeIndexer = Nt, e$M.objectTypeInternalSlot = wt, e$M.objectTypeProperty = Lt, e$M.objectTypeSpreadProperty = vt, e$M.opaqueType = Bt, e$M.optionalCallExpression = Ve, e$M.optionalIndexedAccessType = cn, e$M.optionalMemberExpression = Ue, e$M.parenthesizedExpression = oe, e$M.pipelineBareFunction = Xn, e$M.pipelinePrimaryTopicReference = Rn, e$M.pipelineTopicExpression = kn, e$M.placeholder = In, e$M.privateName = Ge, e$M.program = H, e$M.qualifiedTypeIdentifier = Ot, e$M.recordExpression = vn, e$M.regExpLiteral = m2, e$M.regexLiteral = nr, e$M.restElement = T2, e$M.restProperty = or, e$M.returnStatement = te, e$M.sequenceExpression = ne, e$M.spreadElement = S, e$M.spreadProperty = rr, e$M.staticBlock = Ye, e$M.stringLiteral = W, e$M.stringLiteralTypeAnnotation = Ft, e$M.stringTypeAnnotation = Kt, e$M.super = Be, e$M.switchCase = re, e$M.switchStatement = se, e$M.symbolTypeAnnotation = kt, e$M.taggedTemplateExpression = Oe, e$M.templateElement = Fe, e$M.templateLiteral = Ke, e$M.thisExpression = ie, e$M.thisTypeAnnotation = Xt, e$M.throwStatement = ae, e$M.topicReference = Kn, e$M.tryStatement = ce, e$M.tSAnyKeyword = e$M.tsAnyKeyword = Yn, e$M.tSArrayType = e$M.tsArrayType = So, e$M.tSAsExpression = e$M.tsAsExpression = Ko, e$M.tSBigIntKeyword = e$M.tsBigIntKeyword = Zn, e$M.tSBooleanKeyword = e$M.tsBooleanKeyword = Hn, e$M.tSCallSignatureDeclaration = e$M.tsCallSignatureDeclaration = Wn, e$M.tSConditionalType = e$M.tsConditionalType = Do, e$M.tSConstructSignatureDeclaration = e$M.tsConstructSignatureDeclaration = Qn, e$M.tSConstructorType = e$M.tsConstructorType = uo, e$M.tSDeclareFunction = e$M.tsDeclareFunction = Jn, e$M.tSDeclareMethod = e$M.tsDeclareMethod = Un, e$M.tSEnumBody = e$M.tsEnumBody = Ro, e$M.tSEnumDeclaration = e$M.tsEnumDeclaration = qo, e$M.tSEnumMember = e$M.tsEnumMember = Jo, e$M.tSExportAssignment = e$M.tsExportAssignment = Go, e$M.tSExpressionWithTypeArguments = e$M.tsExpressionWithTypeArguments = Lo, e$M.tSExternalModuleReference = e$M.tsExternalModuleReference = zo, e$M.tSFunctionType = e$M.tsFunctionType = lo, e$M.tSImportEqualsDeclaration = e$M.tsImportEqualsDeclaration = Qo, e$M.tSImportType = e$M.tsImportType = Wo, e$M.tSIndexSignature = e$M.tsIndexSignature = Gn, e$M.tSIndexedAccessType = e$M.tsIndexedAccessType = Mo, e$M.tSInferType = e$M.tsInferType = Io, e$M.tSInstantiationExpression = e$M.tsInstantiationExpression = Fo, e$M.tSInterfaceBody = e$M.tsInterfaceBody = Bo, e$M.tSInterfaceDeclaration = e$M.tsInterfaceDeclaration = vo, e$M.tSIntersectionType = e$M.tsIntersectionType = Po, e$M.tSIntrinsicKeyword = e$M.tsIntrinsicKeyword = _n, e$M.tSLiteralType = e$M.tsLiteralType = No, e$M.tSMappedType = e$M.tsMappedType = wo, e$M.tSMethodSignature = e$M.tsMethodSignature = $n, e$M.tSModuleBlock = e$M.tsModuleBlock = Vo, e$M.tSModuleDeclaration = e$M.tsModuleDeclaration = Uo, e$M.tSNamedTupleMember = e$M.tsNamedTupleMember = Ao, e$M.tSNamespaceExportDeclaration = e$M.tsNamespaceExportDeclaration = Yo, e$M.tSNeverKeyword = e$M.tsNeverKeyword = eo, e$M.tSNonNullExpression = e$M.tsNonNullExpression = $o, e$M.tSNullKeyword = e$M.tsNullKeyword = to, e$M.tSNumberKeyword = e$M.tsNumberKeyword = no, e$M.tSObjectKeyword = e$M.tsObjectKeyword = oo, e$M.tSOptionalType = e$M.tsOptionalType = Eo, e$M.tSParameterProperty = e$M.tsParameterProperty = qn2, e$M.tSParenthesizedType = e$M.tsParenthesizedType = ho, e$M.tSPropertySignature = e$M.tsPropertySignature = zn2, e$M.tSQualifiedName = e$M.tsQualifiedName = Vn, e$M.tSRestType = e$M.tsRestType = bo, e$M.tSSatisfiesExpression = e$M.tsSatisfiesExpression = ko, e$M.tSStringKeyword = e$M.tsStringKeyword = ro, e$M.tSSymbolKeyword = e$M.tsSymbolKeyword = so, e$M.tSTemplateLiteralType = e$M.tsTemplateLiteralType = Co, e$M.tSThisType = e$M.tsThisType = po, e$M.tSTupleType = e$M.tsTupleType = xo, e$M.tSTypeAliasDeclaration = e$M.tsTypeAliasDeclaration = Oo, e$M.tSTypeAnnotation = e$M.tsTypeAnnotation = Ho, e$M.tSTypeAssertion = e$M.tsTypeAssertion = Xo, e$M.tSTypeLiteral = e$M.tsTypeLiteral = To, e$M.tSTypeOperator = e$M.tsTypeOperator = jo, e$M.tSTypeParameter = e$M.tsTypeParameter = er, e$M.tSTypeParameterDeclaration = e$M.tsTypeParameterDeclaration = _o, e$M.tSTypeParameterInstantiation = e$M.tsTypeParameterInstantiation = Zo, e$M.tSTypePredicate = e$M.tsTypePredicate = fo, e$M.tSTypeQuery = e$M.tsTypeQuery = mo, e$M.tSTypeReference = e$M.tsTypeReference = yo, e$M.tSUndefinedKeyword = e$M.tsUndefinedKeyword = io, e$M.tSUnionType = e$M.tsUnionType = go, e$M.tSUnknownKeyword = e$M.tsUnknownKeyword = ao, e$M.tSVoidKeyword = e$M.tsVoidKeyword = co, e$M.tupleExpression = Bn, e$M.tupleTypeAnnotation = Rt, e$M.typeAlias = Jt, e$M.typeAnnotation = Ut, e$M.typeCastExpression = Vt, e$M.typeParameter = Wt, e$M.typeParameterDeclaration = Qt, e$M.typeParameterInstantiation = zt, e$M.typeofTypeAnnotation = qt, e$M.unaryExpression = pe, e$M.unionTypeAnnotation = $t, e$M.updateExpression = le, e$M.v8IntrinsicIdentifier = hn, e$M.variableDeclaration = ue, e$M.variableDeclarator = de, e$M.variance = Gt, e$M.voidTypeAnnotation = Yt, e$M.whileStatement = ye, e$M.withStatement = fe, e$M.yieldExpression = ke;
  var E = N$1(), y2 = m$4(), b2 = J();
  const { validateInternal: o2 } = E, { NODE_FIELDS: a2 } = b2;
  function A2(e2 = []) {
    const t2 = { type: "ArrayExpression", elements: e2 }, n2 = a2.ArrayExpression;
    return o2(n2.elements, t2, "elements", e2, 1), t2;
  }
  function g2(e2, t2, n2) {
    const r2 = { type: "AssignmentExpression", operator: e2, left: t2, right: n2 }, i2 = a2.AssignmentExpression;
    return o2(i2.operator, r2, "operator", e2), o2(i2.left, r2, "left", t2, 1), o2(i2.right, r2, "right", n2, 1), r2;
  }
  function P2(e2, t2, n2) {
    const r2 = { type: "BinaryExpression", operator: e2, left: t2, right: n2 }, i2 = a2.BinaryExpression;
    return o2(i2.operator, r2, "operator", e2), o2(i2.left, r2, "left", t2, 1), o2(i2.right, r2, "right", n2, 1), r2;
  }
  function D(e2) {
    const t2 = { type: "InterpreterDirective", value: e2 }, n2 = a2.InterpreterDirective;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function I2(e2) {
    const t2 = { type: "Directive", value: e2 }, n2 = a2.Directive;
    return o2(n2.value, t2, "value", e2, 1), t2;
  }
  function h(e2) {
    const t2 = { type: "DirectiveLiteral", value: e2 }, n2 = a2.DirectiveLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function j(e2, t2 = []) {
    const n2 = { type: "BlockStatement", body: e2, directives: t2 }, r2 = a2.BlockStatement;
    return o2(r2.body, n2, "body", e2, 1), o2(r2.directives, n2, "directives", t2, 1), n2;
  }
  function M(e2 = null) {
    const t2 = { type: "BreakStatement", label: e2 }, n2 = a2.BreakStatement;
    return o2(n2.label, t2, "label", e2, 1), t2;
  }
  function w(e2, t2) {
    const n2 = { type: "CallExpression", callee: e2, arguments: t2 }, r2 = a2.CallExpression;
    return o2(r2.callee, n2, "callee", e2, 1), o2(r2.arguments, n2, "arguments", t2, 1), n2;
  }
  function C(e2 = null, t2) {
    const n2 = { type: "CatchClause", param: e2, body: t2 }, r2 = a2.CatchClause;
    return o2(r2.param, n2, "param", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function N2(e2, t2, n2) {
    const r2 = { type: "ConditionalExpression", test: e2, consequent: t2, alternate: n2 }, i2 = a2.ConditionalExpression;
    return o2(i2.test, r2, "test", e2, 1), o2(i2.consequent, r2, "consequent", t2, 1), o2(i2.alternate, r2, "alternate", n2, 1), r2;
  }
  function L(e2 = null) {
    const t2 = { type: "ContinueStatement", label: e2 }, n2 = a2.ContinueStatement;
    return o2(n2.label, t2, "label", e2, 1), t2;
  }
  function v2() {
    return { type: "DebuggerStatement" };
  }
  function B2(e2, t2) {
    const n2 = { type: "DoWhileStatement", test: e2, body: t2 }, r2 = a2.DoWhileStatement;
    return o2(r2.test, n2, "test", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function O() {
    return { type: "EmptyStatement" };
  }
  function F(e2) {
    const t2 = { type: "ExpressionStatement", expression: e2 }, n2 = a2.ExpressionStatement;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function K(e2, t2 = null, n2 = null) {
    const r2 = { type: "File", program: e2, comments: t2, tokens: n2 }, i2 = a2.File;
    return o2(i2.program, r2, "program", e2, 1), o2(i2.comments, r2, "comments", t2, 1), o2(i2.tokens, r2, "tokens", n2), r2;
  }
  function k(e2, t2, n2) {
    const r2 = { type: "ForInStatement", left: e2, right: t2, body: n2 }, i2 = a2.ForInStatement;
    return o2(i2.left, r2, "left", e2, 1), o2(i2.right, r2, "right", t2, 1), o2(i2.body, r2, "body", n2, 1), r2;
  }
  function X(e2 = null, t2 = null, n2 = null, r2) {
    const i2 = { type: "ForStatement", init: e2, test: t2, update: n2, body: r2 }, c2 = a2.ForStatement;
    return o2(c2.init, i2, "init", e2, 1), o2(c2.test, i2, "test", t2, 1), o2(c2.update, i2, "update", n2, 1), o2(c2.body, i2, "body", r2, 1), i2;
  }
  function R(e2 = null, t2, n2, r2 = false, i2 = false) {
    const c2 = { type: "FunctionDeclaration", id: e2, params: t2, body: n2, generator: r2, async: i2 }, p2 = a2.FunctionDeclaration;
    return o2(p2.id, c2, "id", e2, 1), o2(p2.params, c2, "params", t2, 1), o2(p2.body, c2, "body", n2, 1), o2(p2.generator, c2, "generator", r2), o2(p2.async, c2, "async", i2), c2;
  }
  function q2(e2 = null, t2, n2, r2 = false, i2 = false) {
    const c2 = { type: "FunctionExpression", id: e2, params: t2, body: n2, generator: r2, async: i2 }, p2 = a2.FunctionExpression;
    return o2(p2.id, c2, "id", e2, 1), o2(p2.params, c2, "params", t2, 1), o2(p2.body, c2, "body", n2, 1), o2(p2.generator, c2, "generator", r2), o2(p2.async, c2, "async", i2), c2;
  }
  function J$1(e2) {
    const t2 = { type: "Identifier", name: e2 }, n2 = a2.Identifier;
    return o2(n2.name, t2, "name", e2), t2;
  }
  function U(e2, t2, n2 = null) {
    const r2 = { type: "IfStatement", test: e2, consequent: t2, alternate: n2 }, i2 = a2.IfStatement;
    return o2(i2.test, r2, "test", e2, 1), o2(i2.consequent, r2, "consequent", t2, 1), o2(i2.alternate, r2, "alternate", n2, 1), r2;
  }
  function V(e2, t2) {
    const n2 = { type: "LabeledStatement", label: e2, body: t2 }, r2 = a2.LabeledStatement;
    return o2(r2.label, n2, "label", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function W(e2) {
    const t2 = { type: "StringLiteral", value: e2 }, n2 = a2.StringLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function f2(e2) {
    const t2 = { type: "NumericLiteral", value: e2 }, n2 = a2.NumericLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function Q() {
    return { type: "NullLiteral" };
  }
  function z(e2) {
    const t2 = { type: "BooleanLiteral", value: e2 }, n2 = a2.BooleanLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function m2(e2, t2 = "") {
    const n2 = { type: "RegExpLiteral", pattern: e2, flags: t2 }, r2 = a2.RegExpLiteral;
    return o2(r2.pattern, n2, "pattern", e2), o2(r2.flags, n2, "flags", t2), n2;
  }
  function $(e2, t2, n2) {
    const r2 = { type: "LogicalExpression", operator: e2, left: t2, right: n2 }, i2 = a2.LogicalExpression;
    return o2(i2.operator, r2, "operator", e2), o2(i2.left, r2, "left", t2, 1), o2(i2.right, r2, "right", n2, 1), r2;
  }
  function G(e2, t2, n2 = false, r2 = null) {
    const i2 = { type: "MemberExpression", object: e2, property: t2, computed: n2, optional: r2 }, c2 = a2.MemberExpression;
    return o2(c2.object, i2, "object", e2, 1), o2(c2.property, i2, "property", t2, 1), o2(c2.computed, i2, "computed", n2), o2(c2.optional, i2, "optional", r2), i2;
  }
  function Y2(e2, t2) {
    const n2 = { type: "NewExpression", callee: e2, arguments: t2 }, r2 = a2.NewExpression;
    return o2(r2.callee, n2, "callee", e2, 1), o2(r2.arguments, n2, "arguments", t2, 1), n2;
  }
  function H(e2, t2 = [], n2 = "script", r2 = null) {
    const i2 = { type: "Program", body: e2, directives: t2, sourceType: n2, interpreter: r2 }, c2 = a2.Program;
    return o2(c2.body, i2, "body", e2, 1), o2(c2.directives, i2, "directives", t2, 1), o2(c2.sourceType, i2, "sourceType", n2), o2(c2.interpreter, i2, "interpreter", r2, 1), i2;
  }
  function Z(e2) {
    const t2 = { type: "ObjectExpression", properties: e2 }, n2 = a2.ObjectExpression;
    return o2(n2.properties, t2, "properties", e2, 1), t2;
  }
  function _2(e2 = "method", t2, n2, r2, i2 = false, c2 = false, p2 = false) {
    const l2 = { type: "ObjectMethod", kind: e2, key: t2, params: n2, body: r2, computed: i2, generator: c2, async: p2 }, u2 = a2.ObjectMethod;
    return o2(u2.kind, l2, "kind", e2), o2(u2.key, l2, "key", t2, 1), o2(u2.params, l2, "params", n2, 1), o2(u2.body, l2, "body", r2, 1), o2(u2.computed, l2, "computed", i2), o2(u2.generator, l2, "generator", c2), o2(u2.async, l2, "async", p2), l2;
  }
  function ee(e2, t2, n2 = false, r2 = false, i2 = null) {
    const c2 = { type: "ObjectProperty", key: e2, value: t2, computed: n2, shorthand: r2, decorators: i2 }, p2 = a2.ObjectProperty;
    return o2(p2.key, c2, "key", e2, 1), o2(p2.value, c2, "value", t2, 1), o2(p2.computed, c2, "computed", n2), o2(p2.shorthand, c2, "shorthand", r2), o2(p2.decorators, c2, "decorators", i2, 1), c2;
  }
  function T2(e2) {
    const t2 = { type: "RestElement", argument: e2 }, n2 = a2.RestElement;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function te(e2 = null) {
    const t2 = { type: "ReturnStatement", argument: e2 }, n2 = a2.ReturnStatement;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function ne(e2) {
    const t2 = { type: "SequenceExpression", expressions: e2 }, n2 = a2.SequenceExpression;
    return o2(n2.expressions, t2, "expressions", e2, 1), t2;
  }
  function oe(e2) {
    const t2 = { type: "ParenthesizedExpression", expression: e2 }, n2 = a2.ParenthesizedExpression;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function re(e2 = null, t2) {
    const n2 = { type: "SwitchCase", test: e2, consequent: t2 }, r2 = a2.SwitchCase;
    return o2(r2.test, n2, "test", e2, 1), o2(r2.consequent, n2, "consequent", t2, 1), n2;
  }
  function se(e2, t2) {
    const n2 = { type: "SwitchStatement", discriminant: e2, cases: t2 }, r2 = a2.SwitchStatement;
    return o2(r2.discriminant, n2, "discriminant", e2, 1), o2(r2.cases, n2, "cases", t2, 1), n2;
  }
  function ie() {
    return { type: "ThisExpression" };
  }
  function ae(e2) {
    const t2 = { type: "ThrowStatement", argument: e2 }, n2 = a2.ThrowStatement;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function ce(e2, t2 = null, n2 = null) {
    const r2 = { type: "TryStatement", block: e2, handler: t2, finalizer: n2 }, i2 = a2.TryStatement;
    return o2(i2.block, r2, "block", e2, 1), o2(i2.handler, r2, "handler", t2, 1), o2(i2.finalizer, r2, "finalizer", n2, 1), r2;
  }
  function pe(e2, t2, n2 = true) {
    const r2 = { type: "UnaryExpression", operator: e2, argument: t2, prefix: n2 }, i2 = a2.UnaryExpression;
    return o2(i2.operator, r2, "operator", e2), o2(i2.argument, r2, "argument", t2, 1), o2(i2.prefix, r2, "prefix", n2), r2;
  }
  function le(e2, t2, n2 = false) {
    const r2 = { type: "UpdateExpression", operator: e2, argument: t2, prefix: n2 }, i2 = a2.UpdateExpression;
    return o2(i2.operator, r2, "operator", e2), o2(i2.argument, r2, "argument", t2, 1), o2(i2.prefix, r2, "prefix", n2), r2;
  }
  function ue(e2, t2) {
    const n2 = { type: "VariableDeclaration", kind: e2, declarations: t2 }, r2 = a2.VariableDeclaration;
    return o2(r2.kind, n2, "kind", e2), o2(r2.declarations, n2, "declarations", t2, 1), n2;
  }
  function de(e2, t2 = null) {
    const n2 = { type: "VariableDeclarator", id: e2, init: t2 }, r2 = a2.VariableDeclarator;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.init, n2, "init", t2, 1), n2;
  }
  function ye(e2, t2) {
    const n2 = { type: "WhileStatement", test: e2, body: t2 }, r2 = a2.WhileStatement;
    return o2(r2.test, n2, "test", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function fe(e2, t2) {
    const n2 = { type: "WithStatement", object: e2, body: t2 }, r2 = a2.WithStatement;
    return o2(r2.object, n2, "object", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function me(e2, t2) {
    const n2 = { type: "AssignmentPattern", left: e2, right: t2 }, r2 = a2.AssignmentPattern;
    return o2(r2.left, n2, "left", e2, 1), o2(r2.right, n2, "right", t2, 1), n2;
  }
  function Te(e2) {
    const t2 = { type: "ArrayPattern", elements: e2 }, n2 = a2.ArrayPattern;
    return o2(n2.elements, t2, "elements", e2, 1), t2;
  }
  function Se(e2, t2, n2 = false) {
    const r2 = { type: "ArrowFunctionExpression", params: e2, body: t2, async: n2, expression: null }, i2 = a2.ArrowFunctionExpression;
    return o2(i2.params, r2, "params", e2, 1), o2(i2.body, r2, "body", t2, 1), o2(i2.async, r2, "async", n2), r2;
  }
  function xe(e2) {
    const t2 = { type: "ClassBody", body: e2 }, n2 = a2.ClassBody;
    return o2(n2.body, t2, "body", e2, 1), t2;
  }
  function Ee(e2 = null, t2 = null, n2, r2 = null) {
    const i2 = { type: "ClassExpression", id: e2, superClass: t2, body: n2, decorators: r2 }, c2 = a2.ClassExpression;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.superClass, i2, "superClass", t2, 1), o2(c2.body, i2, "body", n2, 1), o2(c2.decorators, i2, "decorators", r2, 1), i2;
  }
  function be(e2 = null, t2 = null, n2, r2 = null) {
    const i2 = { type: "ClassDeclaration", id: e2, superClass: t2, body: n2, decorators: r2 }, c2 = a2.ClassDeclaration;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.superClass, i2, "superClass", t2, 1), o2(c2.body, i2, "body", n2, 1), o2(c2.decorators, i2, "decorators", r2, 1), i2;
  }
  function Ae(e2) {
    const t2 = { type: "ExportAllDeclaration", source: e2 }, n2 = a2.ExportAllDeclaration;
    return o2(n2.source, t2, "source", e2, 1), t2;
  }
  function ge(e2) {
    const t2 = { type: "ExportDefaultDeclaration", declaration: e2 }, n2 = a2.ExportDefaultDeclaration;
    return o2(n2.declaration, t2, "declaration", e2, 1), t2;
  }
  function Pe(e2 = null, t2 = [], n2 = null) {
    const r2 = { type: "ExportNamedDeclaration", declaration: e2, specifiers: t2, source: n2 }, i2 = a2.ExportNamedDeclaration;
    return o2(i2.declaration, r2, "declaration", e2, 1), o2(i2.specifiers, r2, "specifiers", t2, 1), o2(i2.source, r2, "source", n2, 1), r2;
  }
  function De(e2, t2) {
    const n2 = { type: "ExportSpecifier", local: e2, exported: t2 }, r2 = a2.ExportSpecifier;
    return o2(r2.local, n2, "local", e2, 1), o2(r2.exported, n2, "exported", t2, 1), n2;
  }
  function Ie(e2, t2, n2, r2 = false) {
    const i2 = { type: "ForOfStatement", left: e2, right: t2, body: n2, await: r2 }, c2 = a2.ForOfStatement;
    return o2(c2.left, i2, "left", e2, 1), o2(c2.right, i2, "right", t2, 1), o2(c2.body, i2, "body", n2, 1), o2(c2.await, i2, "await", r2), i2;
  }
  function he(e2, t2) {
    const n2 = { type: "ImportDeclaration", specifiers: e2, source: t2 }, r2 = a2.ImportDeclaration;
    return o2(r2.specifiers, n2, "specifiers", e2, 1), o2(r2.source, n2, "source", t2, 1), n2;
  }
  function je(e2) {
    const t2 = { type: "ImportDefaultSpecifier", local: e2 }, n2 = a2.ImportDefaultSpecifier;
    return o2(n2.local, t2, "local", e2, 1), t2;
  }
  function Me(e2) {
    const t2 = { type: "ImportNamespaceSpecifier", local: e2 }, n2 = a2.ImportNamespaceSpecifier;
    return o2(n2.local, t2, "local", e2, 1), t2;
  }
  function we(e2, t2) {
    const n2 = { type: "ImportSpecifier", local: e2, imported: t2 }, r2 = a2.ImportSpecifier;
    return o2(r2.local, n2, "local", e2, 1), o2(r2.imported, n2, "imported", t2, 1), n2;
  }
  function Ce(e2, t2 = null) {
    const n2 = { type: "ImportExpression", source: e2, options: t2 }, r2 = a2.ImportExpression;
    return o2(r2.source, n2, "source", e2, 1), o2(r2.options, n2, "options", t2, 1), n2;
  }
  function Ne(e2, t2) {
    const n2 = { type: "MetaProperty", meta: e2, property: t2 }, r2 = a2.MetaProperty;
    return o2(r2.meta, n2, "meta", e2, 1), o2(r2.property, n2, "property", t2, 1), n2;
  }
  function Le(e2 = "method", t2, n2, r2, i2 = false, c2 = false, p2 = false, l2 = false) {
    const u2 = { type: "ClassMethod", kind: e2, key: t2, params: n2, body: r2, computed: i2, static: c2, generator: p2, async: l2 }, d2 = a2.ClassMethod;
    return o2(d2.kind, u2, "kind", e2), o2(d2.key, u2, "key", t2, 1), o2(d2.params, u2, "params", n2, 1), o2(d2.body, u2, "body", r2, 1), o2(d2.computed, u2, "computed", i2), o2(d2.static, u2, "static", c2), o2(d2.generator, u2, "generator", p2), o2(d2.async, u2, "async", l2), u2;
  }
  function ve(e2) {
    const t2 = { type: "ObjectPattern", properties: e2 }, n2 = a2.ObjectPattern;
    return o2(n2.properties, t2, "properties", e2, 1), t2;
  }
  function S(e2) {
    const t2 = { type: "SpreadElement", argument: e2 }, n2 = a2.SpreadElement;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function Be() {
    return { type: "Super" };
  }
  function Oe(e2, t2) {
    const n2 = { type: "TaggedTemplateExpression", tag: e2, quasi: t2 }, r2 = a2.TaggedTemplateExpression;
    return o2(r2.tag, n2, "tag", e2, 1), o2(r2.quasi, n2, "quasi", t2, 1), n2;
  }
  function Fe(e2, t2 = false) {
    const n2 = { type: "TemplateElement", value: e2, tail: t2 }, r2 = a2.TemplateElement;
    return o2(r2.value, n2, "value", e2), o2(r2.tail, n2, "tail", t2), n2;
  }
  function Ke(e2, t2) {
    const n2 = { type: "TemplateLiteral", quasis: e2, expressions: t2 }, r2 = a2.TemplateLiteral;
    return o2(r2.quasis, n2, "quasis", e2, 1), o2(r2.expressions, n2, "expressions", t2, 1), n2;
  }
  function ke(e2 = null, t2 = false) {
    const n2 = { type: "YieldExpression", argument: e2, delegate: t2 }, r2 = a2.YieldExpression;
    return o2(r2.argument, n2, "argument", e2, 1), o2(r2.delegate, n2, "delegate", t2), n2;
  }
  function Xe(e2) {
    const t2 = { type: "AwaitExpression", argument: e2 }, n2 = a2.AwaitExpression;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function Re() {
    return { type: "Import" };
  }
  function qe(e2) {
    const t2 = { type: "BigIntLiteral", value: e2 }, n2 = a2.BigIntLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function Je(e2) {
    const t2 = { type: "ExportNamespaceSpecifier", exported: e2 }, n2 = a2.ExportNamespaceSpecifier;
    return o2(n2.exported, t2, "exported", e2, 1), t2;
  }
  function Ue(e2, t2, n2 = false, r2) {
    const i2 = { type: "OptionalMemberExpression", object: e2, property: t2, computed: n2, optional: r2 }, c2 = a2.OptionalMemberExpression;
    return o2(c2.object, i2, "object", e2, 1), o2(c2.property, i2, "property", t2, 1), o2(c2.computed, i2, "computed", n2), o2(c2.optional, i2, "optional", r2), i2;
  }
  function Ve(e2, t2, n2) {
    const r2 = { type: "OptionalCallExpression", callee: e2, arguments: t2, optional: n2 }, i2 = a2.OptionalCallExpression;
    return o2(i2.callee, r2, "callee", e2, 1), o2(i2.arguments, r2, "arguments", t2, 1), o2(i2.optional, r2, "optional", n2), r2;
  }
  function We(e2, t2 = null, n2 = null, r2 = null, i2 = false, c2 = false) {
    const p2 = { type: "ClassProperty", key: e2, value: t2, typeAnnotation: n2, decorators: r2, computed: i2, static: c2 }, l2 = a2.ClassProperty;
    return o2(l2.key, p2, "key", e2, 1), o2(l2.value, p2, "value", t2, 1), o2(l2.typeAnnotation, p2, "typeAnnotation", n2, 1), o2(l2.decorators, p2, "decorators", r2, 1), o2(l2.computed, p2, "computed", i2), o2(l2.static, p2, "static", c2), p2;
  }
  function Qe(e2, t2 = null, n2 = null, r2 = null, i2 = false, c2 = false) {
    const p2 = { type: "ClassAccessorProperty", key: e2, value: t2, typeAnnotation: n2, decorators: r2, computed: i2, static: c2 }, l2 = a2.ClassAccessorProperty;
    return o2(l2.key, p2, "key", e2, 1), o2(l2.value, p2, "value", t2, 1), o2(l2.typeAnnotation, p2, "typeAnnotation", n2, 1), o2(l2.decorators, p2, "decorators", r2, 1), o2(l2.computed, p2, "computed", i2), o2(l2.static, p2, "static", c2), p2;
  }
  function ze(e2, t2 = null, n2 = null, r2 = false) {
    const i2 = { type: "ClassPrivateProperty", key: e2, value: t2, decorators: n2, static: r2 }, c2 = a2.ClassPrivateProperty;
    return o2(c2.key, i2, "key", e2, 1), o2(c2.value, i2, "value", t2, 1), o2(c2.decorators, i2, "decorators", n2, 1), o2(c2.static, i2, "static", r2), i2;
  }
  function $e(e2 = "method", t2, n2, r2, i2 = false) {
    const c2 = { type: "ClassPrivateMethod", kind: e2, key: t2, params: n2, body: r2, static: i2 }, p2 = a2.ClassPrivateMethod;
    return o2(p2.kind, c2, "kind", e2), o2(p2.key, c2, "key", t2, 1), o2(p2.params, c2, "params", n2, 1), o2(p2.body, c2, "body", r2, 1), o2(p2.static, c2, "static", i2), c2;
  }
  function Ge(e2) {
    const t2 = { type: "PrivateName", id: e2 }, n2 = a2.PrivateName;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function Ye(e2) {
    const t2 = { type: "StaticBlock", body: e2 }, n2 = a2.StaticBlock;
    return o2(n2.body, t2, "body", e2, 1), t2;
  }
  function He() {
    return { type: "AnyTypeAnnotation" };
  }
  function Ze(e2) {
    const t2 = { type: "ArrayTypeAnnotation", elementType: e2 }, n2 = a2.ArrayTypeAnnotation;
    return o2(n2.elementType, t2, "elementType", e2, 1), t2;
  }
  function _e() {
    return { type: "BooleanTypeAnnotation" };
  }
  function et(e2) {
    const t2 = { type: "BooleanLiteralTypeAnnotation", value: e2 }, n2 = a2.BooleanLiteralTypeAnnotation;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function tt() {
    return { type: "NullLiteralTypeAnnotation" };
  }
  function nt(e2, t2 = null) {
    const n2 = { type: "ClassImplements", id: e2, typeParameters: t2 }, r2 = a2.ClassImplements;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function ot(e2, t2 = null, n2 = null, r2) {
    const i2 = { type: "DeclareClass", id: e2, typeParameters: t2, extends: n2, body: r2 }, c2 = a2.DeclareClass;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.extends, i2, "extends", n2, 1), o2(c2.body, i2, "body", r2, 1), i2;
  }
  function rt(e2) {
    const t2 = { type: "DeclareFunction", id: e2 }, n2 = a2.DeclareFunction;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function st(e2, t2 = null, n2 = null, r2) {
    const i2 = { type: "DeclareInterface", id: e2, typeParameters: t2, extends: n2, body: r2 }, c2 = a2.DeclareInterface;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.extends, i2, "extends", n2, 1), o2(c2.body, i2, "body", r2, 1), i2;
  }
  function it(e2, t2, n2 = null) {
    const r2 = { type: "DeclareModule", id: e2, body: t2, kind: n2 }, i2 = a2.DeclareModule;
    return o2(i2.id, r2, "id", e2, 1), o2(i2.body, r2, "body", t2, 1), o2(i2.kind, r2, "kind", n2), r2;
  }
  function at(e2) {
    const t2 = { type: "DeclareModuleExports", typeAnnotation: e2 }, n2 = a2.DeclareModuleExports;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function ct(e2, t2 = null, n2) {
    const r2 = { type: "DeclareTypeAlias", id: e2, typeParameters: t2, right: n2 }, i2 = a2.DeclareTypeAlias;
    return o2(i2.id, r2, "id", e2, 1), o2(i2.typeParameters, r2, "typeParameters", t2, 1), o2(i2.right, r2, "right", n2, 1), r2;
  }
  function pt(e2, t2 = null, n2 = null) {
    const r2 = { type: "DeclareOpaqueType", id: e2, typeParameters: t2, supertype: n2 }, i2 = a2.DeclareOpaqueType;
    return o2(i2.id, r2, "id", e2, 1), o2(i2.typeParameters, r2, "typeParameters", t2, 1), o2(i2.supertype, r2, "supertype", n2, 1), r2;
  }
  function lt(e2) {
    const t2 = { type: "DeclareVariable", id: e2 }, n2 = a2.DeclareVariable;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function ut(e2 = null, t2 = null, n2 = null, r2 = null) {
    const i2 = { type: "DeclareExportDeclaration", declaration: e2, specifiers: t2, source: n2, attributes: r2 }, c2 = a2.DeclareExportDeclaration;
    return o2(c2.declaration, i2, "declaration", e2, 1), o2(c2.specifiers, i2, "specifiers", t2, 1), o2(c2.source, i2, "source", n2, 1), o2(c2.attributes, i2, "attributes", r2, 1), i2;
  }
  function dt(e2, t2 = null) {
    const n2 = { type: "DeclareExportAllDeclaration", source: e2, attributes: t2 }, r2 = a2.DeclareExportAllDeclaration;
    return o2(r2.source, n2, "source", e2, 1), o2(r2.attributes, n2, "attributes", t2, 1), n2;
  }
  function yt(e2) {
    const t2 = { type: "DeclaredPredicate", value: e2 }, n2 = a2.DeclaredPredicate;
    return o2(n2.value, t2, "value", e2, 1), t2;
  }
  function ft() {
    return { type: "ExistsTypeAnnotation" };
  }
  function mt(e2 = null, t2, n2 = null, r2) {
    const i2 = { type: "FunctionTypeAnnotation", typeParameters: e2, params: t2, rest: n2, returnType: r2 }, c2 = a2.FunctionTypeAnnotation;
    return o2(c2.typeParameters, i2, "typeParameters", e2, 1), o2(c2.params, i2, "params", t2, 1), o2(c2.rest, i2, "rest", n2, 1), o2(c2.returnType, i2, "returnType", r2, 1), i2;
  }
  function Tt(e2 = null, t2) {
    const n2 = { type: "FunctionTypeParam", name: e2, typeAnnotation: t2 }, r2 = a2.FunctionTypeParam;
    return o2(r2.name, n2, "name", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function St(e2, t2 = null) {
    const n2 = { type: "GenericTypeAnnotation", id: e2, typeParameters: t2 }, r2 = a2.GenericTypeAnnotation;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function xt() {
    return { type: "InferredPredicate" };
  }
  function Et(e2, t2 = null) {
    const n2 = { type: "InterfaceExtends", id: e2, typeParameters: t2 }, r2 = a2.InterfaceExtends;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function bt(e2, t2 = null, n2 = null, r2) {
    const i2 = { type: "InterfaceDeclaration", id: e2, typeParameters: t2, extends: n2, body: r2 }, c2 = a2.InterfaceDeclaration;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.extends, i2, "extends", n2, 1), o2(c2.body, i2, "body", r2, 1), i2;
  }
  function At(e2 = null, t2) {
    const n2 = { type: "InterfaceTypeAnnotation", extends: e2, body: t2 }, r2 = a2.InterfaceTypeAnnotation;
    return o2(r2.extends, n2, "extends", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function gt(e2) {
    const t2 = { type: "IntersectionTypeAnnotation", types: e2 }, n2 = a2.IntersectionTypeAnnotation;
    return o2(n2.types, t2, "types", e2, 1), t2;
  }
  function Pt() {
    return { type: "MixedTypeAnnotation" };
  }
  function Dt() {
    return { type: "EmptyTypeAnnotation" };
  }
  function It(e2) {
    const t2 = { type: "NullableTypeAnnotation", typeAnnotation: e2 }, n2 = a2.NullableTypeAnnotation;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function ht(e2) {
    const t2 = { type: "NumberLiteralTypeAnnotation", value: e2 }, n2 = a2.NumberLiteralTypeAnnotation;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function jt() {
    return { type: "NumberTypeAnnotation" };
  }
  function Mt(e2, t2 = [], n2 = [], r2 = [], i2 = false) {
    const c2 = { type: "ObjectTypeAnnotation", properties: e2, indexers: t2, callProperties: n2, internalSlots: r2, exact: i2 }, p2 = a2.ObjectTypeAnnotation;
    return o2(p2.properties, c2, "properties", e2, 1), o2(p2.indexers, c2, "indexers", t2, 1), o2(p2.callProperties, c2, "callProperties", n2, 1), o2(p2.internalSlots, c2, "internalSlots", r2, 1), o2(p2.exact, c2, "exact", i2), c2;
  }
  function wt(e2, t2, n2, r2, i2) {
    const c2 = { type: "ObjectTypeInternalSlot", id: e2, value: t2, optional: n2, static: r2, method: i2 }, p2 = a2.ObjectTypeInternalSlot;
    return o2(p2.id, c2, "id", e2, 1), o2(p2.value, c2, "value", t2, 1), o2(p2.optional, c2, "optional", n2), o2(p2.static, c2, "static", r2), o2(p2.method, c2, "method", i2), c2;
  }
  function Ct(e2) {
    const t2 = { type: "ObjectTypeCallProperty", value: e2, static: null }, n2 = a2.ObjectTypeCallProperty;
    return o2(n2.value, t2, "value", e2, 1), t2;
  }
  function Nt(e2 = null, t2, n2, r2 = null) {
    const i2 = { type: "ObjectTypeIndexer", id: e2, key: t2, value: n2, variance: r2, static: null }, c2 = a2.ObjectTypeIndexer;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.key, i2, "key", t2, 1), o2(c2.value, i2, "value", n2, 1), o2(c2.variance, i2, "variance", r2, 1), i2;
  }
  function Lt(e2, t2, n2 = null) {
    const r2 = { type: "ObjectTypeProperty", key: e2, value: t2, variance: n2, kind: null, method: null, optional: null, proto: null, static: null }, i2 = a2.ObjectTypeProperty;
    return o2(i2.key, r2, "key", e2, 1), o2(i2.value, r2, "value", t2, 1), o2(i2.variance, r2, "variance", n2, 1), r2;
  }
  function vt(e2) {
    const t2 = { type: "ObjectTypeSpreadProperty", argument: e2 }, n2 = a2.ObjectTypeSpreadProperty;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function Bt(e2, t2 = null, n2 = null, r2) {
    const i2 = { type: "OpaqueType", id: e2, typeParameters: t2, supertype: n2, impltype: r2 }, c2 = a2.OpaqueType;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.supertype, i2, "supertype", n2, 1), o2(c2.impltype, i2, "impltype", r2, 1), i2;
  }
  function Ot(e2, t2) {
    const n2 = { type: "QualifiedTypeIdentifier", id: e2, qualification: t2 }, r2 = a2.QualifiedTypeIdentifier;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.qualification, n2, "qualification", t2, 1), n2;
  }
  function Ft(e2) {
    const t2 = { type: "StringLiteralTypeAnnotation", value: e2 }, n2 = a2.StringLiteralTypeAnnotation;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function Kt() {
    return { type: "StringTypeAnnotation" };
  }
  function kt() {
    return { type: "SymbolTypeAnnotation" };
  }
  function Xt() {
    return { type: "ThisTypeAnnotation" };
  }
  function Rt(e2) {
    const t2 = { type: "TupleTypeAnnotation", types: e2 }, n2 = a2.TupleTypeAnnotation;
    return o2(n2.types, t2, "types", e2, 1), t2;
  }
  function qt(e2) {
    const t2 = { type: "TypeofTypeAnnotation", argument: e2 }, n2 = a2.TypeofTypeAnnotation;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function Jt(e2, t2 = null, n2) {
    const r2 = { type: "TypeAlias", id: e2, typeParameters: t2, right: n2 }, i2 = a2.TypeAlias;
    return o2(i2.id, r2, "id", e2, 1), o2(i2.typeParameters, r2, "typeParameters", t2, 1), o2(i2.right, r2, "right", n2, 1), r2;
  }
  function Ut(e2) {
    const t2 = { type: "TypeAnnotation", typeAnnotation: e2 }, n2 = a2.TypeAnnotation;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function Vt(e2, t2) {
    const n2 = { type: "TypeCastExpression", expression: e2, typeAnnotation: t2 }, r2 = a2.TypeCastExpression;
    return o2(r2.expression, n2, "expression", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function Wt(e2 = null, t2 = null, n2 = null) {
    const r2 = { type: "TypeParameter", bound: e2, default: t2, variance: n2, name: null }, i2 = a2.TypeParameter;
    return o2(i2.bound, r2, "bound", e2, 1), o2(i2.default, r2, "default", t2, 1), o2(i2.variance, r2, "variance", n2, 1), r2;
  }
  function Qt(e2) {
    const t2 = { type: "TypeParameterDeclaration", params: e2 }, n2 = a2.TypeParameterDeclaration;
    return o2(n2.params, t2, "params", e2, 1), t2;
  }
  function zt(e2) {
    const t2 = { type: "TypeParameterInstantiation", params: e2 }, n2 = a2.TypeParameterInstantiation;
    return o2(n2.params, t2, "params", e2, 1), t2;
  }
  function $t(e2) {
    const t2 = { type: "UnionTypeAnnotation", types: e2 }, n2 = a2.UnionTypeAnnotation;
    return o2(n2.types, t2, "types", e2, 1), t2;
  }
  function Gt(e2) {
    const t2 = { type: "Variance", kind: e2 }, n2 = a2.Variance;
    return o2(n2.kind, t2, "kind", e2), t2;
  }
  function Yt() {
    return { type: "VoidTypeAnnotation" };
  }
  function Ht(e2, t2) {
    const n2 = { type: "EnumDeclaration", id: e2, body: t2 }, r2 = a2.EnumDeclaration;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function Zt(e2) {
    const t2 = { type: "EnumBooleanBody", members: e2, explicitType: null, hasUnknownMembers: null }, n2 = a2.EnumBooleanBody;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function _t(e2) {
    const t2 = { type: "EnumNumberBody", members: e2, explicitType: null, hasUnknownMembers: null }, n2 = a2.EnumNumberBody;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function en(e2) {
    const t2 = { type: "EnumStringBody", members: e2, explicitType: null, hasUnknownMembers: null }, n2 = a2.EnumStringBody;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function tn(e2) {
    const t2 = { type: "EnumSymbolBody", members: e2, hasUnknownMembers: null }, n2 = a2.EnumSymbolBody;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function nn(e2) {
    const t2 = { type: "EnumBooleanMember", id: e2, init: null }, n2 = a2.EnumBooleanMember;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function on(e2, t2) {
    const n2 = { type: "EnumNumberMember", id: e2, init: t2 }, r2 = a2.EnumNumberMember;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.init, n2, "init", t2, 1), n2;
  }
  function rn(e2, t2) {
    const n2 = { type: "EnumStringMember", id: e2, init: t2 }, r2 = a2.EnumStringMember;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.init, n2, "init", t2, 1), n2;
  }
  function sn(e2) {
    const t2 = { type: "EnumDefaultedMember", id: e2 }, n2 = a2.EnumDefaultedMember;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function an(e2, t2) {
    const n2 = { type: "IndexedAccessType", objectType: e2, indexType: t2 }, r2 = a2.IndexedAccessType;
    return o2(r2.objectType, n2, "objectType", e2, 1), o2(r2.indexType, n2, "indexType", t2, 1), n2;
  }
  function cn(e2, t2) {
    const n2 = { type: "OptionalIndexedAccessType", objectType: e2, indexType: t2, optional: null }, r2 = a2.OptionalIndexedAccessType;
    return o2(r2.objectType, n2, "objectType", e2, 1), o2(r2.indexType, n2, "indexType", t2, 1), n2;
  }
  function pn(e2, t2 = null) {
    const n2 = { type: "JSXAttribute", name: e2, value: t2 }, r2 = a2.JSXAttribute;
    return o2(r2.name, n2, "name", e2, 1), o2(r2.value, n2, "value", t2, 1), n2;
  }
  function ln(e2) {
    const t2 = { type: "JSXClosingElement", name: e2 }, n2 = a2.JSXClosingElement;
    return o2(n2.name, t2, "name", e2, 1), t2;
  }
  function un(e2, t2 = null, n2, r2 = null) {
    const i2 = { type: "JSXElement", openingElement: e2, closingElement: t2, children: n2, selfClosing: r2 }, c2 = a2.JSXElement;
    return o2(c2.openingElement, i2, "openingElement", e2, 1), o2(c2.closingElement, i2, "closingElement", t2, 1), o2(c2.children, i2, "children", n2, 1), o2(c2.selfClosing, i2, "selfClosing", r2), i2;
  }
  function dn() {
    return { type: "JSXEmptyExpression" };
  }
  function yn(e2) {
    const t2 = { type: "JSXExpressionContainer", expression: e2 }, n2 = a2.JSXExpressionContainer;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function fn(e2) {
    const t2 = { type: "JSXSpreadChild", expression: e2 }, n2 = a2.JSXSpreadChild;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function mn(e2) {
    const t2 = { type: "JSXIdentifier", name: e2 }, n2 = a2.JSXIdentifier;
    return o2(n2.name, t2, "name", e2), t2;
  }
  function Tn(e2, t2) {
    const n2 = { type: "JSXMemberExpression", object: e2, property: t2 }, r2 = a2.JSXMemberExpression;
    return o2(r2.object, n2, "object", e2, 1), o2(r2.property, n2, "property", t2, 1), n2;
  }
  function Sn(e2, t2) {
    const n2 = { type: "JSXNamespacedName", namespace: e2, name: t2 }, r2 = a2.JSXNamespacedName;
    return o2(r2.namespace, n2, "namespace", e2, 1), o2(r2.name, n2, "name", t2, 1), n2;
  }
  function xn(e2, t2, n2 = false) {
    const r2 = { type: "JSXOpeningElement", name: e2, attributes: t2, selfClosing: n2 }, i2 = a2.JSXOpeningElement;
    return o2(i2.name, r2, "name", e2, 1), o2(i2.attributes, r2, "attributes", t2, 1), o2(i2.selfClosing, r2, "selfClosing", n2), r2;
  }
  function En(e2) {
    const t2 = { type: "JSXSpreadAttribute", argument: e2 }, n2 = a2.JSXSpreadAttribute;
    return o2(n2.argument, t2, "argument", e2, 1), t2;
  }
  function bn(e2) {
    const t2 = { type: "JSXText", value: e2 }, n2 = a2.JSXText;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function An(e2, t2, n2) {
    const r2 = { type: "JSXFragment", openingFragment: e2, closingFragment: t2, children: n2 }, i2 = a2.JSXFragment;
    return o2(i2.openingFragment, r2, "openingFragment", e2, 1), o2(i2.closingFragment, r2, "closingFragment", t2, 1), o2(i2.children, r2, "children", n2, 1), r2;
  }
  function gn() {
    return { type: "JSXOpeningFragment" };
  }
  function Pn() {
    return { type: "JSXClosingFragment" };
  }
  function Dn() {
    return { type: "Noop" };
  }
  function In(e2, t2) {
    const n2 = { type: "Placeholder", expectedNode: e2, name: t2 }, r2 = a2.Placeholder;
    return o2(r2.expectedNode, n2, "expectedNode", e2), o2(r2.name, n2, "name", t2, 1), n2;
  }
  function hn(e2) {
    const t2 = { type: "V8IntrinsicIdentifier", name: e2 }, n2 = a2.V8IntrinsicIdentifier;
    return o2(n2.name, t2, "name", e2), t2;
  }
  function jn() {
    return { type: "ArgumentPlaceholder" };
  }
  function Mn(e2, t2) {
    const n2 = { type: "BindExpression", object: e2, callee: t2 }, r2 = a2.BindExpression;
    return o2(r2.object, n2, "object", e2, 1), o2(r2.callee, n2, "callee", t2, 1), n2;
  }
  function wn(e2, t2) {
    const n2 = { type: "ImportAttribute", key: e2, value: t2 }, r2 = a2.ImportAttribute;
    return o2(r2.key, n2, "key", e2, 1), o2(r2.value, n2, "value", t2, 1), n2;
  }
  function Cn(e2) {
    const t2 = { type: "Decorator", expression: e2 }, n2 = a2.Decorator;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function Nn(e2, t2 = false) {
    const n2 = { type: "DoExpression", body: e2, async: t2 }, r2 = a2.DoExpression;
    return o2(r2.body, n2, "body", e2, 1), o2(r2.async, n2, "async", t2), n2;
  }
  function Ln(e2) {
    const t2 = { type: "ExportDefaultSpecifier", exported: e2 }, n2 = a2.ExportDefaultSpecifier;
    return o2(n2.exported, t2, "exported", e2, 1), t2;
  }
  function vn(e2) {
    const t2 = { type: "RecordExpression", properties: e2 }, n2 = a2.RecordExpression;
    return o2(n2.properties, t2, "properties", e2, 1), t2;
  }
  function Bn(e2 = []) {
    const t2 = { type: "TupleExpression", elements: e2 }, n2 = a2.TupleExpression;
    return o2(n2.elements, t2, "elements", e2, 1), t2;
  }
  function On(e2) {
    const t2 = { type: "DecimalLiteral", value: e2 }, n2 = a2.DecimalLiteral;
    return o2(n2.value, t2, "value", e2), t2;
  }
  function Fn(e2) {
    const t2 = { type: "ModuleExpression", body: e2 }, n2 = a2.ModuleExpression;
    return o2(n2.body, t2, "body", e2, 1), t2;
  }
  function Kn() {
    return { type: "TopicReference" };
  }
  function kn(e2) {
    const t2 = { type: "PipelineTopicExpression", expression: e2 }, n2 = a2.PipelineTopicExpression;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function Xn(e2) {
    const t2 = { type: "PipelineBareFunction", callee: e2 }, n2 = a2.PipelineBareFunction;
    return o2(n2.callee, t2, "callee", e2, 1), t2;
  }
  function Rn() {
    return { type: "PipelinePrimaryTopicReference" };
  }
  function qn2(e2) {
    const t2 = { type: "TSParameterProperty", parameter: e2 }, n2 = a2.TSParameterProperty;
    return o2(n2.parameter, t2, "parameter", e2, 1), t2;
  }
  function Jn(e2 = null, t2 = null, n2, r2 = null) {
    const i2 = { type: "TSDeclareFunction", id: e2, typeParameters: t2, params: n2, returnType: r2 }, c2 = a2.TSDeclareFunction;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.params, i2, "params", n2, 1), o2(c2.returnType, i2, "returnType", r2, 1), i2;
  }
  function Un(e2 = null, t2, n2 = null, r2, i2 = null) {
    const c2 = { type: "TSDeclareMethod", decorators: e2, key: t2, typeParameters: n2, params: r2, returnType: i2 }, p2 = a2.TSDeclareMethod;
    return o2(p2.decorators, c2, "decorators", e2, 1), o2(p2.key, c2, "key", t2, 1), o2(p2.typeParameters, c2, "typeParameters", n2, 1), o2(p2.params, c2, "params", r2, 1), o2(p2.returnType, c2, "returnType", i2, 1), c2;
  }
  function Vn(e2, t2) {
    const n2 = { type: "TSQualifiedName", left: e2, right: t2 }, r2 = a2.TSQualifiedName;
    return o2(r2.left, n2, "left", e2, 1), o2(r2.right, n2, "right", t2, 1), n2;
  }
  function Wn(e2 = null, t2, n2 = null) {
    const r2 = { type: "TSCallSignatureDeclaration", typeParameters: e2, parameters: t2, typeAnnotation: n2 }, i2 = a2.TSCallSignatureDeclaration;
    return o2(i2.typeParameters, r2, "typeParameters", e2, 1), o2(i2.parameters, r2, "parameters", t2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", n2, 1), r2;
  }
  function Qn(e2 = null, t2, n2 = null) {
    const r2 = { type: "TSConstructSignatureDeclaration", typeParameters: e2, parameters: t2, typeAnnotation: n2 }, i2 = a2.TSConstructSignatureDeclaration;
    return o2(i2.typeParameters, r2, "typeParameters", e2, 1), o2(i2.parameters, r2, "parameters", t2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", n2, 1), r2;
  }
  function zn2(e2, t2 = null) {
    const n2 = { type: "TSPropertySignature", key: e2, typeAnnotation: t2 }, r2 = a2.TSPropertySignature;
    return o2(r2.key, n2, "key", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function $n(e2, t2 = null, n2, r2 = null) {
    const i2 = { type: "TSMethodSignature", key: e2, typeParameters: t2, parameters: n2, typeAnnotation: r2, kind: null }, c2 = a2.TSMethodSignature;
    return o2(c2.key, i2, "key", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.parameters, i2, "parameters", n2, 1), o2(c2.typeAnnotation, i2, "typeAnnotation", r2, 1), i2;
  }
  function Gn(e2, t2 = null) {
    const n2 = { type: "TSIndexSignature", parameters: e2, typeAnnotation: t2 }, r2 = a2.TSIndexSignature;
    return o2(r2.parameters, n2, "parameters", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function Yn() {
    return { type: "TSAnyKeyword" };
  }
  function Hn() {
    return { type: "TSBooleanKeyword" };
  }
  function Zn() {
    return { type: "TSBigIntKeyword" };
  }
  function _n() {
    return { type: "TSIntrinsicKeyword" };
  }
  function eo() {
    return { type: "TSNeverKeyword" };
  }
  function to() {
    return { type: "TSNullKeyword" };
  }
  function no() {
    return { type: "TSNumberKeyword" };
  }
  function oo() {
    return { type: "TSObjectKeyword" };
  }
  function ro() {
    return { type: "TSStringKeyword" };
  }
  function so() {
    return { type: "TSSymbolKeyword" };
  }
  function io() {
    return { type: "TSUndefinedKeyword" };
  }
  function ao() {
    return { type: "TSUnknownKeyword" };
  }
  function co() {
    return { type: "TSVoidKeyword" };
  }
  function po() {
    return { type: "TSThisType" };
  }
  function lo(e2 = null, t2, n2 = null) {
    const r2 = { type: "TSFunctionType", typeParameters: e2, parameters: t2, typeAnnotation: n2 }, i2 = a2.TSFunctionType;
    return o2(i2.typeParameters, r2, "typeParameters", e2, 1), o2(i2.parameters, r2, "parameters", t2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", n2, 1), r2;
  }
  function uo(e2 = null, t2, n2 = null) {
    const r2 = { type: "TSConstructorType", typeParameters: e2, parameters: t2, typeAnnotation: n2 }, i2 = a2.TSConstructorType;
    return o2(i2.typeParameters, r2, "typeParameters", e2, 1), o2(i2.parameters, r2, "parameters", t2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", n2, 1), r2;
  }
  function yo(e2, t2 = null) {
    const n2 = { type: "TSTypeReference", typeName: e2, typeParameters: t2 }, r2 = a2.TSTypeReference;
    return o2(r2.typeName, n2, "typeName", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function fo(e2, t2 = null, n2 = null) {
    const r2 = { type: "TSTypePredicate", parameterName: e2, typeAnnotation: t2, asserts: n2 }, i2 = a2.TSTypePredicate;
    return o2(i2.parameterName, r2, "parameterName", e2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", t2, 1), o2(i2.asserts, r2, "asserts", n2), r2;
  }
  function mo(e2, t2 = null) {
    const n2 = { type: "TSTypeQuery", exprName: e2, typeParameters: t2 }, r2 = a2.TSTypeQuery;
    return o2(r2.exprName, n2, "exprName", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function To(e2) {
    const t2 = { type: "TSTypeLiteral", members: e2 }, n2 = a2.TSTypeLiteral;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function So(e2) {
    const t2 = { type: "TSArrayType", elementType: e2 }, n2 = a2.TSArrayType;
    return o2(n2.elementType, t2, "elementType", e2, 1), t2;
  }
  function xo(e2) {
    const t2 = { type: "TSTupleType", elementTypes: e2 }, n2 = a2.TSTupleType;
    return o2(n2.elementTypes, t2, "elementTypes", e2, 1), t2;
  }
  function Eo(e2) {
    const t2 = { type: "TSOptionalType", typeAnnotation: e2 }, n2 = a2.TSOptionalType;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function bo(e2) {
    const t2 = { type: "TSRestType", typeAnnotation: e2 }, n2 = a2.TSRestType;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function Ao(e2, t2, n2 = false) {
    const r2 = { type: "TSNamedTupleMember", label: e2, elementType: t2, optional: n2 }, i2 = a2.TSNamedTupleMember;
    return o2(i2.label, r2, "label", e2, 1), o2(i2.elementType, r2, "elementType", t2, 1), o2(i2.optional, r2, "optional", n2), r2;
  }
  function go(e2) {
    const t2 = { type: "TSUnionType", types: e2 }, n2 = a2.TSUnionType;
    return o2(n2.types, t2, "types", e2, 1), t2;
  }
  function Po(e2) {
    const t2 = { type: "TSIntersectionType", types: e2 }, n2 = a2.TSIntersectionType;
    return o2(n2.types, t2, "types", e2, 1), t2;
  }
  function Do(e2, t2, n2, r2) {
    const i2 = { type: "TSConditionalType", checkType: e2, extendsType: t2, trueType: n2, falseType: r2 }, c2 = a2.TSConditionalType;
    return o2(c2.checkType, i2, "checkType", e2, 1), o2(c2.extendsType, i2, "extendsType", t2, 1), o2(c2.trueType, i2, "trueType", n2, 1), o2(c2.falseType, i2, "falseType", r2, 1), i2;
  }
  function Io(e2) {
    const t2 = { type: "TSInferType", typeParameter: e2 }, n2 = a2.TSInferType;
    return o2(n2.typeParameter, t2, "typeParameter", e2, 1), t2;
  }
  function ho(e2) {
    const t2 = { type: "TSParenthesizedType", typeAnnotation: e2 }, n2 = a2.TSParenthesizedType;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function jo(e2) {
    const t2 = { type: "TSTypeOperator", typeAnnotation: e2, operator: null }, n2 = a2.TSTypeOperator;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function Mo(e2, t2) {
    const n2 = { type: "TSIndexedAccessType", objectType: e2, indexType: t2 }, r2 = a2.TSIndexedAccessType;
    return o2(r2.objectType, n2, "objectType", e2, 1), o2(r2.indexType, n2, "indexType", t2, 1), n2;
  }
  function wo(e2, t2 = null, n2 = null) {
    const r2 = { type: "TSMappedType", typeParameter: e2, typeAnnotation: t2, nameType: n2 }, i2 = a2.TSMappedType;
    return o2(i2.typeParameter, r2, "typeParameter", e2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", t2, 1), o2(i2.nameType, r2, "nameType", n2, 1), r2;
  }
  function Co(e2, t2) {
    const n2 = { type: "TSTemplateLiteralType", quasis: e2, types: t2 }, r2 = a2.TSTemplateLiteralType;
    return o2(r2.quasis, n2, "quasis", e2, 1), o2(r2.types, n2, "types", t2, 1), n2;
  }
  function No(e2) {
    const t2 = { type: "TSLiteralType", literal: e2 }, n2 = a2.TSLiteralType;
    return o2(n2.literal, t2, "literal", e2, 1), t2;
  }
  function Lo(e2, t2 = null) {
    const n2 = { type: "TSExpressionWithTypeArguments", expression: e2, typeParameters: t2 }, r2 = a2.TSExpressionWithTypeArguments;
    return o2(r2.expression, n2, "expression", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function vo(e2, t2 = null, n2 = null, r2) {
    const i2 = { type: "TSInterfaceDeclaration", id: e2, typeParameters: t2, extends: n2, body: r2 }, c2 = a2.TSInterfaceDeclaration;
    return o2(c2.id, i2, "id", e2, 1), o2(c2.typeParameters, i2, "typeParameters", t2, 1), o2(c2.extends, i2, "extends", n2, 1), o2(c2.body, i2, "body", r2, 1), i2;
  }
  function Bo(e2) {
    const t2 = { type: "TSInterfaceBody", body: e2 }, n2 = a2.TSInterfaceBody;
    return o2(n2.body, t2, "body", e2, 1), t2;
  }
  function Oo(e2, t2 = null, n2) {
    const r2 = { type: "TSTypeAliasDeclaration", id: e2, typeParameters: t2, typeAnnotation: n2 }, i2 = a2.TSTypeAliasDeclaration;
    return o2(i2.id, r2, "id", e2, 1), o2(i2.typeParameters, r2, "typeParameters", t2, 1), o2(i2.typeAnnotation, r2, "typeAnnotation", n2, 1), r2;
  }
  function Fo(e2, t2 = null) {
    const n2 = { type: "TSInstantiationExpression", expression: e2, typeParameters: t2 }, r2 = a2.TSInstantiationExpression;
    return o2(r2.expression, n2, "expression", e2, 1), o2(r2.typeParameters, n2, "typeParameters", t2, 1), n2;
  }
  function Ko(e2, t2) {
    const n2 = { type: "TSAsExpression", expression: e2, typeAnnotation: t2 }, r2 = a2.TSAsExpression;
    return o2(r2.expression, n2, "expression", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function ko(e2, t2) {
    const n2 = { type: "TSSatisfiesExpression", expression: e2, typeAnnotation: t2 }, r2 = a2.TSSatisfiesExpression;
    return o2(r2.expression, n2, "expression", e2, 1), o2(r2.typeAnnotation, n2, "typeAnnotation", t2, 1), n2;
  }
  function Xo(e2, t2) {
    const n2 = { type: "TSTypeAssertion", typeAnnotation: e2, expression: t2 }, r2 = a2.TSTypeAssertion;
    return o2(r2.typeAnnotation, n2, "typeAnnotation", e2, 1), o2(r2.expression, n2, "expression", t2, 1), n2;
  }
  function Ro(e2) {
    const t2 = { type: "TSEnumBody", members: e2 }, n2 = a2.TSEnumBody;
    return o2(n2.members, t2, "members", e2, 1), t2;
  }
  function qo(e2, t2) {
    const n2 = { type: "TSEnumDeclaration", id: e2, members: t2 }, r2 = a2.TSEnumDeclaration;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.members, n2, "members", t2, 1), n2;
  }
  function Jo(e2, t2 = null) {
    const n2 = { type: "TSEnumMember", id: e2, initializer: t2 }, r2 = a2.TSEnumMember;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.initializer, n2, "initializer", t2, 1), n2;
  }
  function Uo(e2, t2) {
    const n2 = { type: "TSModuleDeclaration", id: e2, body: t2, kind: null }, r2 = a2.TSModuleDeclaration;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.body, n2, "body", t2, 1), n2;
  }
  function Vo(e2) {
    const t2 = { type: "TSModuleBlock", body: e2 }, n2 = a2.TSModuleBlock;
    return o2(n2.body, t2, "body", e2, 1), t2;
  }
  function Wo(e2, t2 = null, n2 = null) {
    const r2 = { type: "TSImportType", argument: e2, qualifier: t2, typeParameters: n2 }, i2 = a2.TSImportType;
    return o2(i2.argument, r2, "argument", e2, 1), o2(i2.qualifier, r2, "qualifier", t2, 1), o2(i2.typeParameters, r2, "typeParameters", n2, 1), r2;
  }
  function Qo(e2, t2) {
    const n2 = { type: "TSImportEqualsDeclaration", id: e2, moduleReference: t2, isExport: null }, r2 = a2.TSImportEqualsDeclaration;
    return o2(r2.id, n2, "id", e2, 1), o2(r2.moduleReference, n2, "moduleReference", t2, 1), n2;
  }
  function zo(e2) {
    const t2 = { type: "TSExternalModuleReference", expression: e2 }, n2 = a2.TSExternalModuleReference;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function $o(e2) {
    const t2 = { type: "TSNonNullExpression", expression: e2 }, n2 = a2.TSNonNullExpression;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function Go(e2) {
    const t2 = { type: "TSExportAssignment", expression: e2 }, n2 = a2.TSExportAssignment;
    return o2(n2.expression, t2, "expression", e2, 1), t2;
  }
  function Yo(e2) {
    const t2 = { type: "TSNamespaceExportDeclaration", id: e2 }, n2 = a2.TSNamespaceExportDeclaration;
    return o2(n2.id, t2, "id", e2, 1), t2;
  }
  function Ho(e2) {
    const t2 = { type: "TSTypeAnnotation", typeAnnotation: e2 }, n2 = a2.TSTypeAnnotation;
    return o2(n2.typeAnnotation, t2, "typeAnnotation", e2, 1), t2;
  }
  function Zo(e2) {
    const t2 = { type: "TSTypeParameterInstantiation", params: e2 }, n2 = a2.TSTypeParameterInstantiation;
    return o2(n2.params, t2, "params", e2, 1), t2;
  }
  function _o(e2) {
    const t2 = { type: "TSTypeParameterDeclaration", params: e2 }, n2 = a2.TSTypeParameterDeclaration;
    return o2(n2.params, t2, "params", e2, 1), t2;
  }
  function er(e2 = null, t2 = null, n2) {
    const r2 = { type: "TSTypeParameter", constraint: e2, default: t2, name: n2 }, i2 = a2.TSTypeParameter;
    return o2(i2.constraint, r2, "constraint", e2, 1), o2(i2.default, r2, "default", t2, 1), o2(i2.name, r2, "name", n2), r2;
  }
  function tr(e2) {
    return (0, y2.default)("NumberLiteral", "NumericLiteral", "The node type "), f2(e2);
  }
  function nr(e2, t2 = "") {
    return (0, y2.default)("RegexLiteral", "RegExpLiteral", "The node type "), m2(e2, t2);
  }
  function or(e2) {
    return (0, y2.default)("RestProperty", "RestElement", "The node type "), T2(e2);
  }
  function rr(e2) {
    return (0, y2.default)("SpreadProperty", "SpreadElement", "The node type "), S(e2);
  }
  return e$M;
}
var e$D = {};
var r$g;
function i$e() {
  return r$g ? e$D : (r$g = 1, (function(e2) {
    Object.defineProperty(e2, "__esModule", { value: true }), Object.defineProperty(e2, "AnyTypeAnnotation", { enumerable: true, get: function() {
      return t2.anyTypeAnnotation;
    } }), Object.defineProperty(e2, "ArgumentPlaceholder", { enumerable: true, get: function() {
      return t2.argumentPlaceholder;
    } }), Object.defineProperty(e2, "ArrayExpression", { enumerable: true, get: function() {
      return t2.arrayExpression;
    } }), Object.defineProperty(e2, "ArrayPattern", { enumerable: true, get: function() {
      return t2.arrayPattern;
    } }), Object.defineProperty(e2, "ArrayTypeAnnotation", { enumerable: true, get: function() {
      return t2.arrayTypeAnnotation;
    } }), Object.defineProperty(e2, "ArrowFunctionExpression", { enumerable: true, get: function() {
      return t2.arrowFunctionExpression;
    } }), Object.defineProperty(e2, "AssignmentExpression", { enumerable: true, get: function() {
      return t2.assignmentExpression;
    } }), Object.defineProperty(e2, "AssignmentPattern", { enumerable: true, get: function() {
      return t2.assignmentPattern;
    } }), Object.defineProperty(e2, "AwaitExpression", { enumerable: true, get: function() {
      return t2.awaitExpression;
    } }), Object.defineProperty(e2, "BigIntLiteral", { enumerable: true, get: function() {
      return t2.bigIntLiteral;
    } }), Object.defineProperty(e2, "BinaryExpression", { enumerable: true, get: function() {
      return t2.binaryExpression;
    } }), Object.defineProperty(e2, "BindExpression", { enumerable: true, get: function() {
      return t2.bindExpression;
    } }), Object.defineProperty(e2, "BlockStatement", { enumerable: true, get: function() {
      return t2.blockStatement;
    } }), Object.defineProperty(e2, "BooleanLiteral", { enumerable: true, get: function() {
      return t2.booleanLiteral;
    } }), Object.defineProperty(e2, "BooleanLiteralTypeAnnotation", { enumerable: true, get: function() {
      return t2.booleanLiteralTypeAnnotation;
    } }), Object.defineProperty(e2, "BooleanTypeAnnotation", { enumerable: true, get: function() {
      return t2.booleanTypeAnnotation;
    } }), Object.defineProperty(e2, "BreakStatement", { enumerable: true, get: function() {
      return t2.breakStatement;
    } }), Object.defineProperty(e2, "CallExpression", { enumerable: true, get: function() {
      return t2.callExpression;
    } }), Object.defineProperty(e2, "CatchClause", { enumerable: true, get: function() {
      return t2.catchClause;
    } }), Object.defineProperty(e2, "ClassAccessorProperty", { enumerable: true, get: function() {
      return t2.classAccessorProperty;
    } }), Object.defineProperty(e2, "ClassBody", { enumerable: true, get: function() {
      return t2.classBody;
    } }), Object.defineProperty(e2, "ClassDeclaration", { enumerable: true, get: function() {
      return t2.classDeclaration;
    } }), Object.defineProperty(e2, "ClassExpression", { enumerable: true, get: function() {
      return t2.classExpression;
    } }), Object.defineProperty(e2, "ClassImplements", { enumerable: true, get: function() {
      return t2.classImplements;
    } }), Object.defineProperty(e2, "ClassMethod", { enumerable: true, get: function() {
      return t2.classMethod;
    } }), Object.defineProperty(e2, "ClassPrivateMethod", { enumerable: true, get: function() {
      return t2.classPrivateMethod;
    } }), Object.defineProperty(e2, "ClassPrivateProperty", { enumerable: true, get: function() {
      return t2.classPrivateProperty;
    } }), Object.defineProperty(e2, "ClassProperty", { enumerable: true, get: function() {
      return t2.classProperty;
    } }), Object.defineProperty(e2, "ConditionalExpression", { enumerable: true, get: function() {
      return t2.conditionalExpression;
    } }), Object.defineProperty(e2, "ContinueStatement", { enumerable: true, get: function() {
      return t2.continueStatement;
    } }), Object.defineProperty(e2, "DebuggerStatement", { enumerable: true, get: function() {
      return t2.debuggerStatement;
    } }), Object.defineProperty(e2, "DecimalLiteral", { enumerable: true, get: function() {
      return t2.decimalLiteral;
    } }), Object.defineProperty(e2, "DeclareClass", { enumerable: true, get: function() {
      return t2.declareClass;
    } }), Object.defineProperty(e2, "DeclareExportAllDeclaration", { enumerable: true, get: function() {
      return t2.declareExportAllDeclaration;
    } }), Object.defineProperty(e2, "DeclareExportDeclaration", { enumerable: true, get: function() {
      return t2.declareExportDeclaration;
    } }), Object.defineProperty(e2, "DeclareFunction", { enumerable: true, get: function() {
      return t2.declareFunction;
    } }), Object.defineProperty(e2, "DeclareInterface", { enumerable: true, get: function() {
      return t2.declareInterface;
    } }), Object.defineProperty(e2, "DeclareModule", { enumerable: true, get: function() {
      return t2.declareModule;
    } }), Object.defineProperty(e2, "DeclareModuleExports", { enumerable: true, get: function() {
      return t2.declareModuleExports;
    } }), Object.defineProperty(e2, "DeclareOpaqueType", { enumerable: true, get: function() {
      return t2.declareOpaqueType;
    } }), Object.defineProperty(e2, "DeclareTypeAlias", { enumerable: true, get: function() {
      return t2.declareTypeAlias;
    } }), Object.defineProperty(e2, "DeclareVariable", { enumerable: true, get: function() {
      return t2.declareVariable;
    } }), Object.defineProperty(e2, "DeclaredPredicate", { enumerable: true, get: function() {
      return t2.declaredPredicate;
    } }), Object.defineProperty(e2, "Decorator", { enumerable: true, get: function() {
      return t2.decorator;
    } }), Object.defineProperty(e2, "Directive", { enumerable: true, get: function() {
      return t2.directive;
    } }), Object.defineProperty(e2, "DirectiveLiteral", { enumerable: true, get: function() {
      return t2.directiveLiteral;
    } }), Object.defineProperty(e2, "DoExpression", { enumerable: true, get: function() {
      return t2.doExpression;
    } }), Object.defineProperty(e2, "DoWhileStatement", { enumerable: true, get: function() {
      return t2.doWhileStatement;
    } }), Object.defineProperty(e2, "EmptyStatement", { enumerable: true, get: function() {
      return t2.emptyStatement;
    } }), Object.defineProperty(e2, "EmptyTypeAnnotation", { enumerable: true, get: function() {
      return t2.emptyTypeAnnotation;
    } }), Object.defineProperty(e2, "EnumBooleanBody", { enumerable: true, get: function() {
      return t2.enumBooleanBody;
    } }), Object.defineProperty(e2, "EnumBooleanMember", { enumerable: true, get: function() {
      return t2.enumBooleanMember;
    } }), Object.defineProperty(e2, "EnumDeclaration", { enumerable: true, get: function() {
      return t2.enumDeclaration;
    } }), Object.defineProperty(e2, "EnumDefaultedMember", { enumerable: true, get: function() {
      return t2.enumDefaultedMember;
    } }), Object.defineProperty(e2, "EnumNumberBody", { enumerable: true, get: function() {
      return t2.enumNumberBody;
    } }), Object.defineProperty(e2, "EnumNumberMember", { enumerable: true, get: function() {
      return t2.enumNumberMember;
    } }), Object.defineProperty(e2, "EnumStringBody", { enumerable: true, get: function() {
      return t2.enumStringBody;
    } }), Object.defineProperty(e2, "EnumStringMember", { enumerable: true, get: function() {
      return t2.enumStringMember;
    } }), Object.defineProperty(e2, "EnumSymbolBody", { enumerable: true, get: function() {
      return t2.enumSymbolBody;
    } }), Object.defineProperty(e2, "ExistsTypeAnnotation", { enumerable: true, get: function() {
      return t2.existsTypeAnnotation;
    } }), Object.defineProperty(e2, "ExportAllDeclaration", { enumerable: true, get: function() {
      return t2.exportAllDeclaration;
    } }), Object.defineProperty(e2, "ExportDefaultDeclaration", { enumerable: true, get: function() {
      return t2.exportDefaultDeclaration;
    } }), Object.defineProperty(e2, "ExportDefaultSpecifier", { enumerable: true, get: function() {
      return t2.exportDefaultSpecifier;
    } }), Object.defineProperty(e2, "ExportNamedDeclaration", { enumerable: true, get: function() {
      return t2.exportNamedDeclaration;
    } }), Object.defineProperty(e2, "ExportNamespaceSpecifier", { enumerable: true, get: function() {
      return t2.exportNamespaceSpecifier;
    } }), Object.defineProperty(e2, "ExportSpecifier", { enumerable: true, get: function() {
      return t2.exportSpecifier;
    } }), Object.defineProperty(e2, "ExpressionStatement", { enumerable: true, get: function() {
      return t2.expressionStatement;
    } }), Object.defineProperty(e2, "File", { enumerable: true, get: function() {
      return t2.file;
    } }), Object.defineProperty(e2, "ForInStatement", { enumerable: true, get: function() {
      return t2.forInStatement;
    } }), Object.defineProperty(e2, "ForOfStatement", { enumerable: true, get: function() {
      return t2.forOfStatement;
    } }), Object.defineProperty(e2, "ForStatement", { enumerable: true, get: function() {
      return t2.forStatement;
    } }), Object.defineProperty(e2, "FunctionDeclaration", { enumerable: true, get: function() {
      return t2.functionDeclaration;
    } }), Object.defineProperty(e2, "FunctionExpression", { enumerable: true, get: function() {
      return t2.functionExpression;
    } }), Object.defineProperty(e2, "FunctionTypeAnnotation", { enumerable: true, get: function() {
      return t2.functionTypeAnnotation;
    } }), Object.defineProperty(e2, "FunctionTypeParam", { enumerable: true, get: function() {
      return t2.functionTypeParam;
    } }), Object.defineProperty(e2, "GenericTypeAnnotation", { enumerable: true, get: function() {
      return t2.genericTypeAnnotation;
    } }), Object.defineProperty(e2, "Identifier", { enumerable: true, get: function() {
      return t2.identifier;
    } }), Object.defineProperty(e2, "IfStatement", { enumerable: true, get: function() {
      return t2.ifStatement;
    } }), Object.defineProperty(e2, "Import", { enumerable: true, get: function() {
      return t2.import;
    } }), Object.defineProperty(e2, "ImportAttribute", { enumerable: true, get: function() {
      return t2.importAttribute;
    } }), Object.defineProperty(e2, "ImportDeclaration", { enumerable: true, get: function() {
      return t2.importDeclaration;
    } }), Object.defineProperty(e2, "ImportDefaultSpecifier", { enumerable: true, get: function() {
      return t2.importDefaultSpecifier;
    } }), Object.defineProperty(e2, "ImportExpression", { enumerable: true, get: function() {
      return t2.importExpression;
    } }), Object.defineProperty(e2, "ImportNamespaceSpecifier", { enumerable: true, get: function() {
      return t2.importNamespaceSpecifier;
    } }), Object.defineProperty(e2, "ImportSpecifier", { enumerable: true, get: function() {
      return t2.importSpecifier;
    } }), Object.defineProperty(e2, "IndexedAccessType", { enumerable: true, get: function() {
      return t2.indexedAccessType;
    } }), Object.defineProperty(e2, "InferredPredicate", { enumerable: true, get: function() {
      return t2.inferredPredicate;
    } }), Object.defineProperty(e2, "InterfaceDeclaration", { enumerable: true, get: function() {
      return t2.interfaceDeclaration;
    } }), Object.defineProperty(e2, "InterfaceExtends", { enumerable: true, get: function() {
      return t2.interfaceExtends;
    } }), Object.defineProperty(e2, "InterfaceTypeAnnotation", { enumerable: true, get: function() {
      return t2.interfaceTypeAnnotation;
    } }), Object.defineProperty(e2, "InterpreterDirective", { enumerable: true, get: function() {
      return t2.interpreterDirective;
    } }), Object.defineProperty(e2, "IntersectionTypeAnnotation", { enumerable: true, get: function() {
      return t2.intersectionTypeAnnotation;
    } }), Object.defineProperty(e2, "JSXAttribute", { enumerable: true, get: function() {
      return t2.jsxAttribute;
    } }), Object.defineProperty(e2, "JSXClosingElement", { enumerable: true, get: function() {
      return t2.jsxClosingElement;
    } }), Object.defineProperty(e2, "JSXClosingFragment", { enumerable: true, get: function() {
      return t2.jsxClosingFragment;
    } }), Object.defineProperty(e2, "JSXElement", { enumerable: true, get: function() {
      return t2.jsxElement;
    } }), Object.defineProperty(e2, "JSXEmptyExpression", { enumerable: true, get: function() {
      return t2.jsxEmptyExpression;
    } }), Object.defineProperty(e2, "JSXExpressionContainer", { enumerable: true, get: function() {
      return t2.jsxExpressionContainer;
    } }), Object.defineProperty(e2, "JSXFragment", { enumerable: true, get: function() {
      return t2.jsxFragment;
    } }), Object.defineProperty(e2, "JSXIdentifier", { enumerable: true, get: function() {
      return t2.jsxIdentifier;
    } }), Object.defineProperty(e2, "JSXMemberExpression", { enumerable: true, get: function() {
      return t2.jsxMemberExpression;
    } }), Object.defineProperty(e2, "JSXNamespacedName", { enumerable: true, get: function() {
      return t2.jsxNamespacedName;
    } }), Object.defineProperty(e2, "JSXOpeningElement", { enumerable: true, get: function() {
      return t2.jsxOpeningElement;
    } }), Object.defineProperty(e2, "JSXOpeningFragment", { enumerable: true, get: function() {
      return t2.jsxOpeningFragment;
    } }), Object.defineProperty(e2, "JSXSpreadAttribute", { enumerable: true, get: function() {
      return t2.jsxSpreadAttribute;
    } }), Object.defineProperty(e2, "JSXSpreadChild", { enumerable: true, get: function() {
      return t2.jsxSpreadChild;
    } }), Object.defineProperty(e2, "JSXText", { enumerable: true, get: function() {
      return t2.jsxText;
    } }), Object.defineProperty(e2, "LabeledStatement", { enumerable: true, get: function() {
      return t2.labeledStatement;
    } }), Object.defineProperty(e2, "LogicalExpression", { enumerable: true, get: function() {
      return t2.logicalExpression;
    } }), Object.defineProperty(e2, "MemberExpression", { enumerable: true, get: function() {
      return t2.memberExpression;
    } }), Object.defineProperty(e2, "MetaProperty", { enumerable: true, get: function() {
      return t2.metaProperty;
    } }), Object.defineProperty(e2, "MixedTypeAnnotation", { enumerable: true, get: function() {
      return t2.mixedTypeAnnotation;
    } }), Object.defineProperty(e2, "ModuleExpression", { enumerable: true, get: function() {
      return t2.moduleExpression;
    } }), Object.defineProperty(e2, "NewExpression", { enumerable: true, get: function() {
      return t2.newExpression;
    } }), Object.defineProperty(e2, "Noop", { enumerable: true, get: function() {
      return t2.noop;
    } }), Object.defineProperty(e2, "NullLiteral", { enumerable: true, get: function() {
      return t2.nullLiteral;
    } }), Object.defineProperty(e2, "NullLiteralTypeAnnotation", { enumerable: true, get: function() {
      return t2.nullLiteralTypeAnnotation;
    } }), Object.defineProperty(e2, "NullableTypeAnnotation", { enumerable: true, get: function() {
      return t2.nullableTypeAnnotation;
    } }), Object.defineProperty(e2, "NumberLiteral", { enumerable: true, get: function() {
      return t2.numberLiteral;
    } }), Object.defineProperty(e2, "NumberLiteralTypeAnnotation", { enumerable: true, get: function() {
      return t2.numberLiteralTypeAnnotation;
    } }), Object.defineProperty(e2, "NumberTypeAnnotation", { enumerable: true, get: function() {
      return t2.numberTypeAnnotation;
    } }), Object.defineProperty(e2, "NumericLiteral", { enumerable: true, get: function() {
      return t2.numericLiteral;
    } }), Object.defineProperty(e2, "ObjectExpression", { enumerable: true, get: function() {
      return t2.objectExpression;
    } }), Object.defineProperty(e2, "ObjectMethod", { enumerable: true, get: function() {
      return t2.objectMethod;
    } }), Object.defineProperty(e2, "ObjectPattern", { enumerable: true, get: function() {
      return t2.objectPattern;
    } }), Object.defineProperty(e2, "ObjectProperty", { enumerable: true, get: function() {
      return t2.objectProperty;
    } }), Object.defineProperty(e2, "ObjectTypeAnnotation", { enumerable: true, get: function() {
      return t2.objectTypeAnnotation;
    } }), Object.defineProperty(e2, "ObjectTypeCallProperty", { enumerable: true, get: function() {
      return t2.objectTypeCallProperty;
    } }), Object.defineProperty(e2, "ObjectTypeIndexer", { enumerable: true, get: function() {
      return t2.objectTypeIndexer;
    } }), Object.defineProperty(e2, "ObjectTypeInternalSlot", { enumerable: true, get: function() {
      return t2.objectTypeInternalSlot;
    } }), Object.defineProperty(e2, "ObjectTypeProperty", { enumerable: true, get: function() {
      return t2.objectTypeProperty;
    } }), Object.defineProperty(e2, "ObjectTypeSpreadProperty", { enumerable: true, get: function() {
      return t2.objectTypeSpreadProperty;
    } }), Object.defineProperty(e2, "OpaqueType", { enumerable: true, get: function() {
      return t2.opaqueType;
    } }), Object.defineProperty(e2, "OptionalCallExpression", { enumerable: true, get: function() {
      return t2.optionalCallExpression;
    } }), Object.defineProperty(e2, "OptionalIndexedAccessType", { enumerable: true, get: function() {
      return t2.optionalIndexedAccessType;
    } }), Object.defineProperty(e2, "OptionalMemberExpression", { enumerable: true, get: function() {
      return t2.optionalMemberExpression;
    } }), Object.defineProperty(e2, "ParenthesizedExpression", { enumerable: true, get: function() {
      return t2.parenthesizedExpression;
    } }), Object.defineProperty(e2, "PipelineBareFunction", { enumerable: true, get: function() {
      return t2.pipelineBareFunction;
    } }), Object.defineProperty(e2, "PipelinePrimaryTopicReference", { enumerable: true, get: function() {
      return t2.pipelinePrimaryTopicReference;
    } }), Object.defineProperty(e2, "PipelineTopicExpression", { enumerable: true, get: function() {
      return t2.pipelineTopicExpression;
    } }), Object.defineProperty(e2, "Placeholder", { enumerable: true, get: function() {
      return t2.placeholder;
    } }), Object.defineProperty(e2, "PrivateName", { enumerable: true, get: function() {
      return t2.privateName;
    } }), Object.defineProperty(e2, "Program", { enumerable: true, get: function() {
      return t2.program;
    } }), Object.defineProperty(e2, "QualifiedTypeIdentifier", { enumerable: true, get: function() {
      return t2.qualifiedTypeIdentifier;
    } }), Object.defineProperty(e2, "RecordExpression", { enumerable: true, get: function() {
      return t2.recordExpression;
    } }), Object.defineProperty(e2, "RegExpLiteral", { enumerable: true, get: function() {
      return t2.regExpLiteral;
    } }), Object.defineProperty(e2, "RegexLiteral", { enumerable: true, get: function() {
      return t2.regexLiteral;
    } }), Object.defineProperty(e2, "RestElement", { enumerable: true, get: function() {
      return t2.restElement;
    } }), Object.defineProperty(e2, "RestProperty", { enumerable: true, get: function() {
      return t2.restProperty;
    } }), Object.defineProperty(e2, "ReturnStatement", { enumerable: true, get: function() {
      return t2.returnStatement;
    } }), Object.defineProperty(e2, "SequenceExpression", { enumerable: true, get: function() {
      return t2.sequenceExpression;
    } }), Object.defineProperty(e2, "SpreadElement", { enumerable: true, get: function() {
      return t2.spreadElement;
    } }), Object.defineProperty(e2, "SpreadProperty", { enumerable: true, get: function() {
      return t2.spreadProperty;
    } }), Object.defineProperty(e2, "StaticBlock", { enumerable: true, get: function() {
      return t2.staticBlock;
    } }), Object.defineProperty(e2, "StringLiteral", { enumerable: true, get: function() {
      return t2.stringLiteral;
    } }), Object.defineProperty(e2, "StringLiteralTypeAnnotation", { enumerable: true, get: function() {
      return t2.stringLiteralTypeAnnotation;
    } }), Object.defineProperty(e2, "StringTypeAnnotation", { enumerable: true, get: function() {
      return t2.stringTypeAnnotation;
    } }), Object.defineProperty(e2, "Super", { enumerable: true, get: function() {
      return t2.super;
    } }), Object.defineProperty(e2, "SwitchCase", { enumerable: true, get: function() {
      return t2.switchCase;
    } }), Object.defineProperty(e2, "SwitchStatement", { enumerable: true, get: function() {
      return t2.switchStatement;
    } }), Object.defineProperty(e2, "SymbolTypeAnnotation", { enumerable: true, get: function() {
      return t2.symbolTypeAnnotation;
    } }), Object.defineProperty(e2, "TSAnyKeyword", { enumerable: true, get: function() {
      return t2.tsAnyKeyword;
    } }), Object.defineProperty(e2, "TSArrayType", { enumerable: true, get: function() {
      return t2.tsArrayType;
    } }), Object.defineProperty(e2, "TSAsExpression", { enumerable: true, get: function() {
      return t2.tsAsExpression;
    } }), Object.defineProperty(e2, "TSBigIntKeyword", { enumerable: true, get: function() {
      return t2.tsBigIntKeyword;
    } }), Object.defineProperty(e2, "TSBooleanKeyword", { enumerable: true, get: function() {
      return t2.tsBooleanKeyword;
    } }), Object.defineProperty(e2, "TSCallSignatureDeclaration", { enumerable: true, get: function() {
      return t2.tsCallSignatureDeclaration;
    } }), Object.defineProperty(e2, "TSConditionalType", { enumerable: true, get: function() {
      return t2.tsConditionalType;
    } }), Object.defineProperty(e2, "TSConstructSignatureDeclaration", { enumerable: true, get: function() {
      return t2.tsConstructSignatureDeclaration;
    } }), Object.defineProperty(e2, "TSConstructorType", { enumerable: true, get: function() {
      return t2.tsConstructorType;
    } }), Object.defineProperty(e2, "TSDeclareFunction", { enumerable: true, get: function() {
      return t2.tsDeclareFunction;
    } }), Object.defineProperty(e2, "TSDeclareMethod", { enumerable: true, get: function() {
      return t2.tsDeclareMethod;
    } }), Object.defineProperty(e2, "TSEnumBody", { enumerable: true, get: function() {
      return t2.tsEnumBody;
    } }), Object.defineProperty(e2, "TSEnumDeclaration", { enumerable: true, get: function() {
      return t2.tsEnumDeclaration;
    } }), Object.defineProperty(e2, "TSEnumMember", { enumerable: true, get: function() {
      return t2.tsEnumMember;
    } }), Object.defineProperty(e2, "TSExportAssignment", { enumerable: true, get: function() {
      return t2.tsExportAssignment;
    } }), Object.defineProperty(e2, "TSExpressionWithTypeArguments", { enumerable: true, get: function() {
      return t2.tsExpressionWithTypeArguments;
    } }), Object.defineProperty(e2, "TSExternalModuleReference", { enumerable: true, get: function() {
      return t2.tsExternalModuleReference;
    } }), Object.defineProperty(e2, "TSFunctionType", { enumerable: true, get: function() {
      return t2.tsFunctionType;
    } }), Object.defineProperty(e2, "TSImportEqualsDeclaration", { enumerable: true, get: function() {
      return t2.tsImportEqualsDeclaration;
    } }), Object.defineProperty(e2, "TSImportType", { enumerable: true, get: function() {
      return t2.tsImportType;
    } }), Object.defineProperty(e2, "TSIndexSignature", { enumerable: true, get: function() {
      return t2.tsIndexSignature;
    } }), Object.defineProperty(e2, "TSIndexedAccessType", { enumerable: true, get: function() {
      return t2.tsIndexedAccessType;
    } }), Object.defineProperty(e2, "TSInferType", { enumerable: true, get: function() {
      return t2.tsInferType;
    } }), Object.defineProperty(e2, "TSInstantiationExpression", { enumerable: true, get: function() {
      return t2.tsInstantiationExpression;
    } }), Object.defineProperty(e2, "TSInterfaceBody", { enumerable: true, get: function() {
      return t2.tsInterfaceBody;
    } }), Object.defineProperty(e2, "TSInterfaceDeclaration", { enumerable: true, get: function() {
      return t2.tsInterfaceDeclaration;
    } }), Object.defineProperty(e2, "TSIntersectionType", { enumerable: true, get: function() {
      return t2.tsIntersectionType;
    } }), Object.defineProperty(e2, "TSIntrinsicKeyword", { enumerable: true, get: function() {
      return t2.tsIntrinsicKeyword;
    } }), Object.defineProperty(e2, "TSLiteralType", { enumerable: true, get: function() {
      return t2.tsLiteralType;
    } }), Object.defineProperty(e2, "TSMappedType", { enumerable: true, get: function() {
      return t2.tsMappedType;
    } }), Object.defineProperty(e2, "TSMethodSignature", { enumerable: true, get: function() {
      return t2.tsMethodSignature;
    } }), Object.defineProperty(e2, "TSModuleBlock", { enumerable: true, get: function() {
      return t2.tsModuleBlock;
    } }), Object.defineProperty(e2, "TSModuleDeclaration", { enumerable: true, get: function() {
      return t2.tsModuleDeclaration;
    } }), Object.defineProperty(e2, "TSNamedTupleMember", { enumerable: true, get: function() {
      return t2.tsNamedTupleMember;
    } }), Object.defineProperty(e2, "TSNamespaceExportDeclaration", { enumerable: true, get: function() {
      return t2.tsNamespaceExportDeclaration;
    } }), Object.defineProperty(e2, "TSNeverKeyword", { enumerable: true, get: function() {
      return t2.tsNeverKeyword;
    } }), Object.defineProperty(e2, "TSNonNullExpression", { enumerable: true, get: function() {
      return t2.tsNonNullExpression;
    } }), Object.defineProperty(e2, "TSNullKeyword", { enumerable: true, get: function() {
      return t2.tsNullKeyword;
    } }), Object.defineProperty(e2, "TSNumberKeyword", { enumerable: true, get: function() {
      return t2.tsNumberKeyword;
    } }), Object.defineProperty(e2, "TSObjectKeyword", { enumerable: true, get: function() {
      return t2.tsObjectKeyword;
    } }), Object.defineProperty(e2, "TSOptionalType", { enumerable: true, get: function() {
      return t2.tsOptionalType;
    } }), Object.defineProperty(e2, "TSParameterProperty", { enumerable: true, get: function() {
      return t2.tsParameterProperty;
    } }), Object.defineProperty(e2, "TSParenthesizedType", { enumerable: true, get: function() {
      return t2.tsParenthesizedType;
    } }), Object.defineProperty(e2, "TSPropertySignature", { enumerable: true, get: function() {
      return t2.tsPropertySignature;
    } }), Object.defineProperty(e2, "TSQualifiedName", { enumerable: true, get: function() {
      return t2.tsQualifiedName;
    } }), Object.defineProperty(e2, "TSRestType", { enumerable: true, get: function() {
      return t2.tsRestType;
    } }), Object.defineProperty(e2, "TSSatisfiesExpression", { enumerable: true, get: function() {
      return t2.tsSatisfiesExpression;
    } }), Object.defineProperty(e2, "TSStringKeyword", { enumerable: true, get: function() {
      return t2.tsStringKeyword;
    } }), Object.defineProperty(e2, "TSSymbolKeyword", { enumerable: true, get: function() {
      return t2.tsSymbolKeyword;
    } }), Object.defineProperty(e2, "TSTemplateLiteralType", { enumerable: true, get: function() {
      return t2.tsTemplateLiteralType;
    } }), Object.defineProperty(e2, "TSThisType", { enumerable: true, get: function() {
      return t2.tsThisType;
    } }), Object.defineProperty(e2, "TSTupleType", { enumerable: true, get: function() {
      return t2.tsTupleType;
    } }), Object.defineProperty(e2, "TSTypeAliasDeclaration", { enumerable: true, get: function() {
      return t2.tsTypeAliasDeclaration;
    } }), Object.defineProperty(e2, "TSTypeAnnotation", { enumerable: true, get: function() {
      return t2.tsTypeAnnotation;
    } }), Object.defineProperty(e2, "TSTypeAssertion", { enumerable: true, get: function() {
      return t2.tsTypeAssertion;
    } }), Object.defineProperty(e2, "TSTypeLiteral", { enumerable: true, get: function() {
      return t2.tsTypeLiteral;
    } }), Object.defineProperty(e2, "TSTypeOperator", { enumerable: true, get: function() {
      return t2.tsTypeOperator;
    } }), Object.defineProperty(e2, "TSTypeParameter", { enumerable: true, get: function() {
      return t2.tsTypeParameter;
    } }), Object.defineProperty(e2, "TSTypeParameterDeclaration", { enumerable: true, get: function() {
      return t2.tsTypeParameterDeclaration;
    } }), Object.defineProperty(e2, "TSTypeParameterInstantiation", { enumerable: true, get: function() {
      return t2.tsTypeParameterInstantiation;
    } }), Object.defineProperty(e2, "TSTypePredicate", { enumerable: true, get: function() {
      return t2.tsTypePredicate;
    } }), Object.defineProperty(e2, "TSTypeQuery", { enumerable: true, get: function() {
      return t2.tsTypeQuery;
    } }), Object.defineProperty(e2, "TSTypeReference", { enumerable: true, get: function() {
      return t2.tsTypeReference;
    } }), Object.defineProperty(e2, "TSUndefinedKeyword", { enumerable: true, get: function() {
      return t2.tsUndefinedKeyword;
    } }), Object.defineProperty(e2, "TSUnionType", { enumerable: true, get: function() {
      return t2.tsUnionType;
    } }), Object.defineProperty(e2, "TSUnknownKeyword", { enumerable: true, get: function() {
      return t2.tsUnknownKeyword;
    } }), Object.defineProperty(e2, "TSVoidKeyword", { enumerable: true, get: function() {
      return t2.tsVoidKeyword;
    } }), Object.defineProperty(e2, "TaggedTemplateExpression", { enumerable: true, get: function() {
      return t2.taggedTemplateExpression;
    } }), Object.defineProperty(e2, "TemplateElement", { enumerable: true, get: function() {
      return t2.templateElement;
    } }), Object.defineProperty(e2, "TemplateLiteral", { enumerable: true, get: function() {
      return t2.templateLiteral;
    } }), Object.defineProperty(e2, "ThisExpression", { enumerable: true, get: function() {
      return t2.thisExpression;
    } }), Object.defineProperty(e2, "ThisTypeAnnotation", { enumerable: true, get: function() {
      return t2.thisTypeAnnotation;
    } }), Object.defineProperty(e2, "ThrowStatement", { enumerable: true, get: function() {
      return t2.throwStatement;
    } }), Object.defineProperty(e2, "TopicReference", { enumerable: true, get: function() {
      return t2.topicReference;
    } }), Object.defineProperty(e2, "TryStatement", { enumerable: true, get: function() {
      return t2.tryStatement;
    } }), Object.defineProperty(e2, "TupleExpression", { enumerable: true, get: function() {
      return t2.tupleExpression;
    } }), Object.defineProperty(e2, "TupleTypeAnnotation", { enumerable: true, get: function() {
      return t2.tupleTypeAnnotation;
    } }), Object.defineProperty(e2, "TypeAlias", { enumerable: true, get: function() {
      return t2.typeAlias;
    } }), Object.defineProperty(e2, "TypeAnnotation", { enumerable: true, get: function() {
      return t2.typeAnnotation;
    } }), Object.defineProperty(e2, "TypeCastExpression", { enumerable: true, get: function() {
      return t2.typeCastExpression;
    } }), Object.defineProperty(e2, "TypeParameter", { enumerable: true, get: function() {
      return t2.typeParameter;
    } }), Object.defineProperty(e2, "TypeParameterDeclaration", { enumerable: true, get: function() {
      return t2.typeParameterDeclaration;
    } }), Object.defineProperty(e2, "TypeParameterInstantiation", { enumerable: true, get: function() {
      return t2.typeParameterInstantiation;
    } }), Object.defineProperty(e2, "TypeofTypeAnnotation", { enumerable: true, get: function() {
      return t2.typeofTypeAnnotation;
    } }), Object.defineProperty(e2, "UnaryExpression", { enumerable: true, get: function() {
      return t2.unaryExpression;
    } }), Object.defineProperty(e2, "UnionTypeAnnotation", { enumerable: true, get: function() {
      return t2.unionTypeAnnotation;
    } }), Object.defineProperty(e2, "UpdateExpression", { enumerable: true, get: function() {
      return t2.updateExpression;
    } }), Object.defineProperty(e2, "V8IntrinsicIdentifier", { enumerable: true, get: function() {
      return t2.v8IntrinsicIdentifier;
    } }), Object.defineProperty(e2, "VariableDeclaration", { enumerable: true, get: function() {
      return t2.variableDeclaration;
    } }), Object.defineProperty(e2, "VariableDeclarator", { enumerable: true, get: function() {
      return t2.variableDeclarator;
    } }), Object.defineProperty(e2, "Variance", { enumerable: true, get: function() {
      return t2.variance;
    } }), Object.defineProperty(e2, "VoidTypeAnnotation", { enumerable: true, get: function() {
      return t2.voidTypeAnnotation;
    } }), Object.defineProperty(e2, "WhileStatement", { enumerable: true, get: function() {
      return t2.whileStatement;
    } }), Object.defineProperty(e2, "WithStatement", { enumerable: true, get: function() {
      return t2.withStatement;
    } }), Object.defineProperty(e2, "YieldExpression", { enumerable: true, get: function() {
      return t2.yieldExpression;
    } });
    var t2 = cr();
  })(e$D), e$D);
}
var i$d;
function o$i() {
  return i$d ? e$N : (i$d = 1, (function(r2) {
    Object.defineProperty(r2, "__esModule", { value: true });
    var u2 = cr();
    Object.keys(u2).forEach(function(e2) {
      e2 === "default" || e2 === "__esModule" || e2 in r2 && r2[e2] === u2[e2] || Object.defineProperty(r2, e2, { enumerable: true, get: function() {
        return u2[e2];
      } });
    });
    var t2 = i$e();
    Object.keys(t2).forEach(function(e2) {
      e2 === "default" || e2 === "__esModule" || e2 in r2 && r2[e2] === t2[e2] || Object.defineProperty(r2, e2, { enumerable: true, get: function() {
        return t2[e2];
      } });
    });
  })(e$N), e$N);
}
var a$c;
function q$1() {
  if (a$c) return e$O;
  a$c = 1, Object.defineProperty(e$O, "__esModule", { value: true }), e$O.default = m2;
  var o2 = o$i(), u2 = Mr();
  function m2(l2, f2) {
    const t2 = l2.value.split(/\r\n|\n|\r/);
    let s2 = 0;
    for (let e2 = 0; e2 < t2.length; e2++) /[^ \t]/.exec(t2[e2]) && (s2 = e2);
    let n2 = "";
    for (let e2 = 0; e2 < t2.length; e2++) {
      const c2 = t2[e2], p2 = e2 === 0, _2 = e2 === t2.length - 1, L = e2 === s2;
      let r2 = c2.replace(/\t/g, " ");
      p2 || (r2 = r2.replace(/^ +/, "")), _2 || (r2 = r2.replace(/ +$/, "")), r2 && (L || (r2 += " "), n2 += r2);
    }
    n2 && f2.push((0, u2.inherits)((0, o2.stringLiteral)(n2), l2));
  }
  return e$O;
}
var l$4;
function f$8() {
  if (l$4) return r$s;
  l$4 = 1, Object.defineProperty(r$s, "__esModule", { value: true }), r$s.default = o2;
  var i2 = qn(), s2 = q$1();
  function o2(u2) {
    const t2 = [];
    for (let n2 = 0; n2 < u2.children.length; n2++) {
      let e2 = u2.children[n2];
      if ((0, i2.isJSXText)(e2)) {
        (0, s2.default)(e2, t2);
        continue;
      }
      (0, i2.isJSXExpressionContainer)(e2) && (e2 = e2.expression), !(0, i2.isJSXEmptyExpression)(e2) && t2.push(e2);
    }
    return t2;
  }
  return r$s;
}
var e$C = {};
var e$B = {};
var o$h;
function s$4() {
  if (o$h) return e$B;
  o$h = 1, Object.defineProperty(e$B, "__esModule", { value: true }), e$B.default = u2;
  var t2 = I$1();
  function u2(r2) {
    return !!(r2 && t2.VISITOR_KEYS[r2.type]);
  }
  return e$B;
}
var o$g;
function f$7() {
  if (o$g) return e$C;
  o$g = 1, Object.defineProperty(e$C, "__esModule", { value: true }), e$C.default = i2;
  var s2 = s$4();
  function i2(r2) {
    if (!(0, s2.default)(r2)) {
      var t2;
      const u2 = (t2 = _optionalChain([r2, 'optionalAccess', _6 => _6.type])) != null ? t2 : JSON.stringify(r2);
      throw new TypeError(`Not a valid node of type "${u2}"`);
    }
  }
  return e$C;
}
var e$A = {};
var o$f;
function zn() {
  if (o$f) return e$A;
  o$f = 1, Object.defineProperty(e$A, "__esModule", { value: true }), e$A.assertAccessor = gn, e$A.assertAnyTypeAnnotation = Ue, e$A.assertArgumentPlaceholder = ds, e$A.assertArrayExpression = c2, e$A.assertArrayPattern = oe, e$A.assertArrayTypeAnnotation = Ve, e$A.assertArrowFunctionExpression = ie, e$A.assertAssignmentExpression = p2, e$A.assertAssignmentPattern = ae, e$A.assertAwaitExpression = Le, e$A.assertBigIntLiteral = we, e$A.assertBinary = _r, e$A.assertBinaryExpression = l2, e$A.assertBindExpression = Es, e$A.assertBlock = $r, e$A.assertBlockParent = Qr, e$A.assertBlockStatement = f2, e$A.assertBooleanLiteral = X, e$A.assertBooleanLiteralTypeAnnotation = qe, e$A.assertBooleanTypeAnnotation = We, e$A.assertBreakStatement = y2, e$A.assertCallExpression = m2, e$A.assertCatchClause = d2, e$A.assertClass = Dn, e$A.assertClassAccessorProperty = Ke, e$A.assertClassBody = ce, e$A.assertClassDeclaration = le, e$A.assertClassExpression = pe, e$A.assertClassImplements = ze, e$A.assertClassMethod = Pe, e$A.assertClassPrivateMethod = Re, e$A.assertClassPrivateProperty = je, e$A.assertClassProperty = Je, e$A.assertCompletionStatement = Hr, e$A.assertConditional = Zr, e$A.assertConditionalExpression = E, e$A.assertContinueStatement = x2, e$A.assertDebuggerStatement = A2, e$A.assertDecimalLiteral = gs, e$A.assertDeclaration = pn, e$A.assertDeclareClass = Qe, e$A.assertDeclareExportAllDeclaration = rt, e$A.assertDeclareExportDeclaration = st, e$A.assertDeclareFunction = $e, e$A.assertDeclareInterface = Ge, e$A.assertDeclareModule = Ye, e$A.assertDeclareModuleExports = He, e$A.assertDeclareOpaqueType = et, e$A.assertDeclareTypeAlias = Ze, e$A.assertDeclareVariable = tt, e$A.assertDeclaredPredicate = nt, e$A.assertDecorator = As, e$A.assertDirective = T2, e$A.assertDirectiveLiteral = S, e$A.assertDoExpression = Ds, e$A.assertDoWhileStatement = D, e$A.assertEmptyStatement = P2, e$A.assertEmptyTypeAnnotation = yt, e$A.assertEnumBody = wn, e$A.assertEnumBooleanBody = Vt, e$A.assertEnumBooleanMember = zt, e$A.assertEnumDeclaration = Ut, e$A.assertEnumDefaultedMember = Gt, e$A.assertEnumMember = Fn, e$A.assertEnumNumberBody = Wt, e$A.assertEnumNumberMember = Qt, e$A.assertEnumStringBody = qt, e$A.assertEnumStringMember = $t, e$A.assertEnumSymbolBody = _t, e$A.assertExistsTypeAnnotation = at, e$A.assertExportAllDeclaration = ue, e$A.assertExportDeclaration = bn, e$A.assertExportDefaultDeclaration = Te, e$A.assertExportDefaultSpecifier = Ps, e$A.assertExportNamedDeclaration = Se, e$A.assertExportNamespaceSpecifier = Fe, e$A.assertExportSpecifier = fe, e$A.assertExpression = qr, e$A.assertExpressionStatement = b2, e$A.assertExpressionWrapper = sn, e$A.assertFile = I2, e$A.assertFlow = Mn, e$A.assertFlowBaseAnnotation = Nn, e$A.assertFlowDeclaration = Ln, e$A.assertFlowPredicate = hn, e$A.assertFlowType = Bn, e$A.assertFor = rn, e$A.assertForInStatement = g2, e$A.assertForOfStatement = ye, e$A.assertForStatement = C, e$A.assertForXStatement = nn, e$A.assertFunction = an, e$A.assertFunctionDeclaration = M, e$A.assertFunctionExpression = B2, e$A.assertFunctionParent = on, e$A.assertFunctionTypeAnnotation = ot, e$A.assertFunctionTypeParam = it, e$A.assertGenericTypeAnnotation = ct, e$A.assertIdentifier = N2, e$A.assertIfStatement = L, e$A.assertImmutable = fn, e$A.assertImport = he, e$A.assertImportAttribute = xs, e$A.assertImportDeclaration = me, e$A.assertImportDefaultSpecifier = de, e$A.assertImportExpression = Ae, e$A.assertImportNamespaceSpecifier = Ee, e$A.assertImportOrExportDeclaration = Pn, e$A.assertImportSpecifier = xe, e$A.assertIndexedAccessType = Yt, e$A.assertInferredPredicate = pt, e$A.assertInterfaceDeclaration = ut, e$A.assertInterfaceExtends = lt, e$A.assertInterfaceTypeAnnotation = Tt, e$A.assertInterpreterDirective = u2, e$A.assertIntersectionTypeAnnotation = St, e$A.assertJSX = On, e$A.assertJSXAttribute = Zt, e$A.assertJSXClosingElement = es, e$A.assertJSXClosingFragment = Ss, e$A.assertJSXElement = ts, e$A.assertJSXEmptyExpression = ss, e$A.assertJSXExpressionContainer = rs, e$A.assertJSXFragment = us, e$A.assertJSXIdentifier = as, e$A.assertJSXMemberExpression = os, e$A.assertJSXNamespacedName = is, e$A.assertJSXOpeningElement = cs, e$A.assertJSXOpeningFragment = Ts, e$A.assertJSXSpreadAttribute = ps, e$A.assertJSXSpreadChild = ns, e$A.assertJSXText = ls, e$A.assertLVal = un, e$A.assertLabeledStatement = h, e$A.assertLiteral = Sn, e$A.assertLogicalExpression = K, e$A.assertLoop = en, e$A.assertMemberExpression = j, e$A.assertMetaProperty = De, e$A.assertMethod = mn, e$A.assertMiscellaneous = Xn, e$A.assertMixedTypeAnnotation = ft, e$A.assertModuleDeclaration = Wn, e$A.assertModuleExpression = Cs, e$A.assertModuleSpecifier = In, e$A.assertNewExpression = R, e$A.assertNoop = fs, e$A.assertNullLiteral = O, e$A.assertNullLiteralTypeAnnotation = _e, e$A.assertNullableTypeAnnotation = mt, e$A.assertNumberLiteral = vn, e$A.assertNumberLiteralTypeAnnotation = dt, e$A.assertNumberTypeAnnotation = Et, e$A.assertNumericLiteral = F, e$A.assertObjectExpression = k, e$A.assertObjectMember = dn, e$A.assertObjectMethod = U, e$A.assertObjectPattern = be, e$A.assertObjectProperty = V, e$A.assertObjectTypeAnnotation = xt, e$A.assertObjectTypeCallProperty = Dt, e$A.assertObjectTypeIndexer = Pt, e$A.assertObjectTypeInternalSlot = At, e$A.assertObjectTypeProperty = bt, e$A.assertObjectTypeSpreadProperty = It, e$A.assertOpaqueType = gt, e$A.assertOptionalCallExpression = Xe, e$A.assertOptionalIndexedAccessType = Ht, e$A.assertOptionalMemberExpression = Oe, e$A.assertParenthesizedExpression = z, e$A.assertPattern = An, e$A.assertPatternLike = ln, e$A.assertPipelineBareFunction = Ns, e$A.assertPipelinePrimaryTopicReference = Ls, e$A.assertPipelineTopicExpression = Bs, e$A.assertPlaceholder = ys, e$A.assertPrivate = Cn, e$A.assertPrivateName = ve, e$A.assertProgram = v2, e$A.assertProperty = En, e$A.assertPureish = cn, e$A.assertQualifiedTypeIdentifier = Ct, e$A.assertRecordExpression = bs, e$A.assertRegExpLiteral = J2, e$A.assertRegexLiteral = kn, e$A.assertRestElement = W, e$A.assertRestProperty = Un, e$A.assertReturnStatement = q2, e$A.assertScopable = zr, e$A.assertSequenceExpression = _2, e$A.assertSpreadElement = Ie, e$A.assertSpreadProperty = Vn, e$A.assertStandardized = Wr, e$A.assertStatement = Gr, e$A.assertStaticBlock = ke, e$A.assertStringLiteral = w, e$A.assertStringLiteralTypeAnnotation = Mt, e$A.assertStringTypeAnnotation = Bt, e$A.assertSuper = ge, e$A.assertSwitchCase = Q, e$A.assertSwitchStatement = $, e$A.assertSymbolTypeAnnotation = Nt, e$A.assertTSAnyKeyword = vs, e$A.assertTSArrayType = or, e$A.assertTSAsExpression = Cr, e$A.assertTSBaseType = Rn, e$A.assertTSBigIntKeyword = Us, e$A.assertTSBooleanKeyword = ks, e$A.assertTSCallSignatureDeclaration = Xs, e$A.assertTSConditionalType = Sr, e$A.assertTSConstructSignatureDeclaration = Js, e$A.assertTSConstructorType = tr, e$A.assertTSDeclareFunction = ws, e$A.assertTSDeclareMethod = Fs, e$A.assertTSEntityName = Tn, e$A.assertTSEnumBody = Nr, e$A.assertTSEnumDeclaration = Lr, e$A.assertTSEnumMember = hr, e$A.assertTSExportAssignment = jr, e$A.assertTSExpressionWithTypeArguments = Dr, e$A.assertTSExternalModuleReference = Jr, e$A.assertTSFunctionType = er, e$A.assertTSImportEqualsDeclaration = Xr, e$A.assertTSImportType = Or, e$A.assertTSIndexSignature = Rs, e$A.assertTSIndexedAccessType = dr, e$A.assertTSInferType = fr, e$A.assertTSInstantiationExpression = gr, e$A.assertTSInterfaceBody = br, e$A.assertTSInterfaceDeclaration = Pr, e$A.assertTSIntersectionType = Tr, e$A.assertTSIntrinsicKeyword = Vs, e$A.assertTSLiteralType = Ar, e$A.assertTSMappedType = Er, e$A.assertTSMethodSignature = js, e$A.assertTSModuleBlock = Fr, e$A.assertTSModuleDeclaration = wr, e$A.assertTSNamedTupleMember = lr, e$A.assertTSNamespaceExportDeclaration = Rr, e$A.assertTSNeverKeyword = Ws, e$A.assertTSNonNullExpression = Kr, e$A.assertTSNullKeyword = qs, e$A.assertTSNumberKeyword = _s, e$A.assertTSObjectKeyword = zs, e$A.assertTSOptionalType = cr2, e$A.assertTSParameterProperty = hs, e$A.assertTSParenthesizedType = yr, e$A.assertTSPropertySignature = Ks, e$A.assertTSQualifiedName = Os, e$A.assertTSRestType = pr, e$A.assertTSSatisfiesExpression = Mr2, e$A.assertTSStringKeyword = Qs, e$A.assertTSSymbolKeyword = $s, e$A.assertTSTemplateLiteralType = xr, e$A.assertTSThisType = Zs, e$A.assertTSTupleType = ir, e$A.assertTSType = jn, e$A.assertTSTypeAliasDeclaration = Ir, e$A.assertTSTypeAnnotation = vr, e$A.assertTSTypeAssertion = Br, e$A.assertTSTypeElement = Kn, e$A.assertTSTypeLiteral = ar, e$A.assertTSTypeOperator = mr, e$A.assertTSTypeParameter = Vr, e$A.assertTSTypeParameterDeclaration = Ur, e$A.assertTSTypeParameterInstantiation = kr, e$A.assertTSTypePredicate = rr, e$A.assertTSTypeQuery = nr, e$A.assertTSTypeReference = sr, e$A.assertTSUndefinedKeyword = Gs, e$A.assertTSUnionType = ur, e$A.assertTSUnknownKeyword = Ys, e$A.assertTSVoidKeyword = Hs, e$A.assertTaggedTemplateExpression = Ce, e$A.assertTemplateElement = Me, e$A.assertTemplateLiteral = Be, e$A.assertTerminatorless = Yr, e$A.assertThisExpression = G, e$A.assertThisTypeAnnotation = Lt, e$A.assertThrowStatement = Y2, e$A.assertTopicReference = Ms, e$A.assertTryStatement = H, e$A.assertTupleExpression = Is, e$A.assertTupleTypeAnnotation = ht, e$A.assertTypeAlias = Ft, e$A.assertTypeAnnotation = Ot, e$A.assertTypeCastExpression = Xt, e$A.assertTypeParameter = Jt, e$A.assertTypeParameterDeclaration = Kt, e$A.assertTypeParameterInstantiation = jt, e$A.assertTypeScript = Jn, e$A.assertTypeofTypeAnnotation = wt, e$A.assertUnaryExpression = Z, e$A.assertUnaryLike = xn, e$A.assertUnionTypeAnnotation = Rt, e$A.assertUpdateExpression = ee, e$A.assertUserWhitespacable = yn, e$A.assertV8IntrinsicIdentifier = ms, e$A.assertVariableDeclaration = te, e$A.assertVariableDeclarator = se, e$A.assertVariance = vt, e$A.assertVoidTypeAnnotation = kt, e$A.assertWhile = tn, e$A.assertWhileStatement = re, e$A.assertWithStatement = ne, e$A.assertYieldExpression = Ne;
  var i2 = c$7(), n2 = m$4();
  function r2(e2, t2, a2) {
    if (!(0, i2.default)(e2, t2, a2)) throw new Error(`Expected type "${e2}" with option ${JSON.stringify(a2)}, but instead got "${t2.type}".`);
  }
  function c2(e2, t2) {
    r2("ArrayExpression", e2, t2);
  }
  function p2(e2, t2) {
    r2("AssignmentExpression", e2, t2);
  }
  function l2(e2, t2) {
    r2("BinaryExpression", e2, t2);
  }
  function u2(e2, t2) {
    r2("InterpreterDirective", e2, t2);
  }
  function T2(e2, t2) {
    r2("Directive", e2, t2);
  }
  function S(e2, t2) {
    r2("DirectiveLiteral", e2, t2);
  }
  function f2(e2, t2) {
    r2("BlockStatement", e2, t2);
  }
  function y2(e2, t2) {
    r2("BreakStatement", e2, t2);
  }
  function m2(e2, t2) {
    r2("CallExpression", e2, t2);
  }
  function d2(e2, t2) {
    r2("CatchClause", e2, t2);
  }
  function E(e2, t2) {
    r2("ConditionalExpression", e2, t2);
  }
  function x2(e2, t2) {
    r2("ContinueStatement", e2, t2);
  }
  function A2(e2, t2) {
    r2("DebuggerStatement", e2, t2);
  }
  function D(e2, t2) {
    r2("DoWhileStatement", e2, t2);
  }
  function P2(e2, t2) {
    r2("EmptyStatement", e2, t2);
  }
  function b2(e2, t2) {
    r2("ExpressionStatement", e2, t2);
  }
  function I2(e2, t2) {
    r2("File", e2, t2);
  }
  function g2(e2, t2) {
    r2("ForInStatement", e2, t2);
  }
  function C(e2, t2) {
    r2("ForStatement", e2, t2);
  }
  function M(e2, t2) {
    r2("FunctionDeclaration", e2, t2);
  }
  function B2(e2, t2) {
    r2("FunctionExpression", e2, t2);
  }
  function N2(e2, t2) {
    r2("Identifier", e2, t2);
  }
  function L(e2, t2) {
    r2("IfStatement", e2, t2);
  }
  function h(e2, t2) {
    r2("LabeledStatement", e2, t2);
  }
  function w(e2, t2) {
    r2("StringLiteral", e2, t2);
  }
  function F(e2, t2) {
    r2("NumericLiteral", e2, t2);
  }
  function O(e2, t2) {
    r2("NullLiteral", e2, t2);
  }
  function X(e2, t2) {
    r2("BooleanLiteral", e2, t2);
  }
  function J2(e2, t2) {
    r2("RegExpLiteral", e2, t2);
  }
  function K(e2, t2) {
    r2("LogicalExpression", e2, t2);
  }
  function j(e2, t2) {
    r2("MemberExpression", e2, t2);
  }
  function R(e2, t2) {
    r2("NewExpression", e2, t2);
  }
  function v2(e2, t2) {
    r2("Program", e2, t2);
  }
  function k(e2, t2) {
    r2("ObjectExpression", e2, t2);
  }
  function U(e2, t2) {
    r2("ObjectMethod", e2, t2);
  }
  function V(e2, t2) {
    r2("ObjectProperty", e2, t2);
  }
  function W(e2, t2) {
    r2("RestElement", e2, t2);
  }
  function q2(e2, t2) {
    r2("ReturnStatement", e2, t2);
  }
  function _2(e2, t2) {
    r2("SequenceExpression", e2, t2);
  }
  function z(e2, t2) {
    r2("ParenthesizedExpression", e2, t2);
  }
  function Q(e2, t2) {
    r2("SwitchCase", e2, t2);
  }
  function $(e2, t2) {
    r2("SwitchStatement", e2, t2);
  }
  function G(e2, t2) {
    r2("ThisExpression", e2, t2);
  }
  function Y2(e2, t2) {
    r2("ThrowStatement", e2, t2);
  }
  function H(e2, t2) {
    r2("TryStatement", e2, t2);
  }
  function Z(e2, t2) {
    r2("UnaryExpression", e2, t2);
  }
  function ee(e2, t2) {
    r2("UpdateExpression", e2, t2);
  }
  function te(e2, t2) {
    r2("VariableDeclaration", e2, t2);
  }
  function se(e2, t2) {
    r2("VariableDeclarator", e2, t2);
  }
  function re(e2, t2) {
    r2("WhileStatement", e2, t2);
  }
  function ne(e2, t2) {
    r2("WithStatement", e2, t2);
  }
  function ae(e2, t2) {
    r2("AssignmentPattern", e2, t2);
  }
  function oe(e2, t2) {
    r2("ArrayPattern", e2, t2);
  }
  function ie(e2, t2) {
    r2("ArrowFunctionExpression", e2, t2);
  }
  function ce(e2, t2) {
    r2("ClassBody", e2, t2);
  }
  function pe(e2, t2) {
    r2("ClassExpression", e2, t2);
  }
  function le(e2, t2) {
    r2("ClassDeclaration", e2, t2);
  }
  function ue(e2, t2) {
    r2("ExportAllDeclaration", e2, t2);
  }
  function Te(e2, t2) {
    r2("ExportDefaultDeclaration", e2, t2);
  }
  function Se(e2, t2) {
    r2("ExportNamedDeclaration", e2, t2);
  }
  function fe(e2, t2) {
    r2("ExportSpecifier", e2, t2);
  }
  function ye(e2, t2) {
    r2("ForOfStatement", e2, t2);
  }
  function me(e2, t2) {
    r2("ImportDeclaration", e2, t2);
  }
  function de(e2, t2) {
    r2("ImportDefaultSpecifier", e2, t2);
  }
  function Ee(e2, t2) {
    r2("ImportNamespaceSpecifier", e2, t2);
  }
  function xe(e2, t2) {
    r2("ImportSpecifier", e2, t2);
  }
  function Ae(e2, t2) {
    r2("ImportExpression", e2, t2);
  }
  function De(e2, t2) {
    r2("MetaProperty", e2, t2);
  }
  function Pe(e2, t2) {
    r2("ClassMethod", e2, t2);
  }
  function be(e2, t2) {
    r2("ObjectPattern", e2, t2);
  }
  function Ie(e2, t2) {
    r2("SpreadElement", e2, t2);
  }
  function ge(e2, t2) {
    r2("Super", e2, t2);
  }
  function Ce(e2, t2) {
    r2("TaggedTemplateExpression", e2, t2);
  }
  function Me(e2, t2) {
    r2("TemplateElement", e2, t2);
  }
  function Be(e2, t2) {
    r2("TemplateLiteral", e2, t2);
  }
  function Ne(e2, t2) {
    r2("YieldExpression", e2, t2);
  }
  function Le(e2, t2) {
    r2("AwaitExpression", e2, t2);
  }
  function he(e2, t2) {
    r2("Import", e2, t2);
  }
  function we(e2, t2) {
    r2("BigIntLiteral", e2, t2);
  }
  function Fe(e2, t2) {
    r2("ExportNamespaceSpecifier", e2, t2);
  }
  function Oe(e2, t2) {
    r2("OptionalMemberExpression", e2, t2);
  }
  function Xe(e2, t2) {
    r2("OptionalCallExpression", e2, t2);
  }
  function Je(e2, t2) {
    r2("ClassProperty", e2, t2);
  }
  function Ke(e2, t2) {
    r2("ClassAccessorProperty", e2, t2);
  }
  function je(e2, t2) {
    r2("ClassPrivateProperty", e2, t2);
  }
  function Re(e2, t2) {
    r2("ClassPrivateMethod", e2, t2);
  }
  function ve(e2, t2) {
    r2("PrivateName", e2, t2);
  }
  function ke(e2, t2) {
    r2("StaticBlock", e2, t2);
  }
  function Ue(e2, t2) {
    r2("AnyTypeAnnotation", e2, t2);
  }
  function Ve(e2, t2) {
    r2("ArrayTypeAnnotation", e2, t2);
  }
  function We(e2, t2) {
    r2("BooleanTypeAnnotation", e2, t2);
  }
  function qe(e2, t2) {
    r2("BooleanLiteralTypeAnnotation", e2, t2);
  }
  function _e(e2, t2) {
    r2("NullLiteralTypeAnnotation", e2, t2);
  }
  function ze(e2, t2) {
    r2("ClassImplements", e2, t2);
  }
  function Qe(e2, t2) {
    r2("DeclareClass", e2, t2);
  }
  function $e(e2, t2) {
    r2("DeclareFunction", e2, t2);
  }
  function Ge(e2, t2) {
    r2("DeclareInterface", e2, t2);
  }
  function Ye(e2, t2) {
    r2("DeclareModule", e2, t2);
  }
  function He(e2, t2) {
    r2("DeclareModuleExports", e2, t2);
  }
  function Ze(e2, t2) {
    r2("DeclareTypeAlias", e2, t2);
  }
  function et(e2, t2) {
    r2("DeclareOpaqueType", e2, t2);
  }
  function tt(e2, t2) {
    r2("DeclareVariable", e2, t2);
  }
  function st(e2, t2) {
    r2("DeclareExportDeclaration", e2, t2);
  }
  function rt(e2, t2) {
    r2("DeclareExportAllDeclaration", e2, t2);
  }
  function nt(e2, t2) {
    r2("DeclaredPredicate", e2, t2);
  }
  function at(e2, t2) {
    r2("ExistsTypeAnnotation", e2, t2);
  }
  function ot(e2, t2) {
    r2("FunctionTypeAnnotation", e2, t2);
  }
  function it(e2, t2) {
    r2("FunctionTypeParam", e2, t2);
  }
  function ct(e2, t2) {
    r2("GenericTypeAnnotation", e2, t2);
  }
  function pt(e2, t2) {
    r2("InferredPredicate", e2, t2);
  }
  function lt(e2, t2) {
    r2("InterfaceExtends", e2, t2);
  }
  function ut(e2, t2) {
    r2("InterfaceDeclaration", e2, t2);
  }
  function Tt(e2, t2) {
    r2("InterfaceTypeAnnotation", e2, t2);
  }
  function St(e2, t2) {
    r2("IntersectionTypeAnnotation", e2, t2);
  }
  function ft(e2, t2) {
    r2("MixedTypeAnnotation", e2, t2);
  }
  function yt(e2, t2) {
    r2("EmptyTypeAnnotation", e2, t2);
  }
  function mt(e2, t2) {
    r2("NullableTypeAnnotation", e2, t2);
  }
  function dt(e2, t2) {
    r2("NumberLiteralTypeAnnotation", e2, t2);
  }
  function Et(e2, t2) {
    r2("NumberTypeAnnotation", e2, t2);
  }
  function xt(e2, t2) {
    r2("ObjectTypeAnnotation", e2, t2);
  }
  function At(e2, t2) {
    r2("ObjectTypeInternalSlot", e2, t2);
  }
  function Dt(e2, t2) {
    r2("ObjectTypeCallProperty", e2, t2);
  }
  function Pt(e2, t2) {
    r2("ObjectTypeIndexer", e2, t2);
  }
  function bt(e2, t2) {
    r2("ObjectTypeProperty", e2, t2);
  }
  function It(e2, t2) {
    r2("ObjectTypeSpreadProperty", e2, t2);
  }
  function gt(e2, t2) {
    r2("OpaqueType", e2, t2);
  }
  function Ct(e2, t2) {
    r2("QualifiedTypeIdentifier", e2, t2);
  }
  function Mt(e2, t2) {
    r2("StringLiteralTypeAnnotation", e2, t2);
  }
  function Bt(e2, t2) {
    r2("StringTypeAnnotation", e2, t2);
  }
  function Nt(e2, t2) {
    r2("SymbolTypeAnnotation", e2, t2);
  }
  function Lt(e2, t2) {
    r2("ThisTypeAnnotation", e2, t2);
  }
  function ht(e2, t2) {
    r2("TupleTypeAnnotation", e2, t2);
  }
  function wt(e2, t2) {
    r2("TypeofTypeAnnotation", e2, t2);
  }
  function Ft(e2, t2) {
    r2("TypeAlias", e2, t2);
  }
  function Ot(e2, t2) {
    r2("TypeAnnotation", e2, t2);
  }
  function Xt(e2, t2) {
    r2("TypeCastExpression", e2, t2);
  }
  function Jt(e2, t2) {
    r2("TypeParameter", e2, t2);
  }
  function Kt(e2, t2) {
    r2("TypeParameterDeclaration", e2, t2);
  }
  function jt(e2, t2) {
    r2("TypeParameterInstantiation", e2, t2);
  }
  function Rt(e2, t2) {
    r2("UnionTypeAnnotation", e2, t2);
  }
  function vt(e2, t2) {
    r2("Variance", e2, t2);
  }
  function kt(e2, t2) {
    r2("VoidTypeAnnotation", e2, t2);
  }
  function Ut(e2, t2) {
    r2("EnumDeclaration", e2, t2);
  }
  function Vt(e2, t2) {
    r2("EnumBooleanBody", e2, t2);
  }
  function Wt(e2, t2) {
    r2("EnumNumberBody", e2, t2);
  }
  function qt(e2, t2) {
    r2("EnumStringBody", e2, t2);
  }
  function _t(e2, t2) {
    r2("EnumSymbolBody", e2, t2);
  }
  function zt(e2, t2) {
    r2("EnumBooleanMember", e2, t2);
  }
  function Qt(e2, t2) {
    r2("EnumNumberMember", e2, t2);
  }
  function $t(e2, t2) {
    r2("EnumStringMember", e2, t2);
  }
  function Gt(e2, t2) {
    r2("EnumDefaultedMember", e2, t2);
  }
  function Yt(e2, t2) {
    r2("IndexedAccessType", e2, t2);
  }
  function Ht(e2, t2) {
    r2("OptionalIndexedAccessType", e2, t2);
  }
  function Zt(e2, t2) {
    r2("JSXAttribute", e2, t2);
  }
  function es(e2, t2) {
    r2("JSXClosingElement", e2, t2);
  }
  function ts(e2, t2) {
    r2("JSXElement", e2, t2);
  }
  function ss(e2, t2) {
    r2("JSXEmptyExpression", e2, t2);
  }
  function rs(e2, t2) {
    r2("JSXExpressionContainer", e2, t2);
  }
  function ns(e2, t2) {
    r2("JSXSpreadChild", e2, t2);
  }
  function as(e2, t2) {
    r2("JSXIdentifier", e2, t2);
  }
  function os(e2, t2) {
    r2("JSXMemberExpression", e2, t2);
  }
  function is(e2, t2) {
    r2("JSXNamespacedName", e2, t2);
  }
  function cs(e2, t2) {
    r2("JSXOpeningElement", e2, t2);
  }
  function ps(e2, t2) {
    r2("JSXSpreadAttribute", e2, t2);
  }
  function ls(e2, t2) {
    r2("JSXText", e2, t2);
  }
  function us(e2, t2) {
    r2("JSXFragment", e2, t2);
  }
  function Ts(e2, t2) {
    r2("JSXOpeningFragment", e2, t2);
  }
  function Ss(e2, t2) {
    r2("JSXClosingFragment", e2, t2);
  }
  function fs(e2, t2) {
    r2("Noop", e2, t2);
  }
  function ys(e2, t2) {
    r2("Placeholder", e2, t2);
  }
  function ms(e2, t2) {
    r2("V8IntrinsicIdentifier", e2, t2);
  }
  function ds(e2, t2) {
    r2("ArgumentPlaceholder", e2, t2);
  }
  function Es(e2, t2) {
    r2("BindExpression", e2, t2);
  }
  function xs(e2, t2) {
    r2("ImportAttribute", e2, t2);
  }
  function As(e2, t2) {
    r2("Decorator", e2, t2);
  }
  function Ds(e2, t2) {
    r2("DoExpression", e2, t2);
  }
  function Ps(e2, t2) {
    r2("ExportDefaultSpecifier", e2, t2);
  }
  function bs(e2, t2) {
    r2("RecordExpression", e2, t2);
  }
  function Is(e2, t2) {
    r2("TupleExpression", e2, t2);
  }
  function gs(e2, t2) {
    r2("DecimalLiteral", e2, t2);
  }
  function Cs(e2, t2) {
    r2("ModuleExpression", e2, t2);
  }
  function Ms(e2, t2) {
    r2("TopicReference", e2, t2);
  }
  function Bs(e2, t2) {
    r2("PipelineTopicExpression", e2, t2);
  }
  function Ns(e2, t2) {
    r2("PipelineBareFunction", e2, t2);
  }
  function Ls(e2, t2) {
    r2("PipelinePrimaryTopicReference", e2, t2);
  }
  function hs(e2, t2) {
    r2("TSParameterProperty", e2, t2);
  }
  function ws(e2, t2) {
    r2("TSDeclareFunction", e2, t2);
  }
  function Fs(e2, t2) {
    r2("TSDeclareMethod", e2, t2);
  }
  function Os(e2, t2) {
    r2("TSQualifiedName", e2, t2);
  }
  function Xs(e2, t2) {
    r2("TSCallSignatureDeclaration", e2, t2);
  }
  function Js(e2, t2) {
    r2("TSConstructSignatureDeclaration", e2, t2);
  }
  function Ks(e2, t2) {
    r2("TSPropertySignature", e2, t2);
  }
  function js(e2, t2) {
    r2("TSMethodSignature", e2, t2);
  }
  function Rs(e2, t2) {
    r2("TSIndexSignature", e2, t2);
  }
  function vs(e2, t2) {
    r2("TSAnyKeyword", e2, t2);
  }
  function ks(e2, t2) {
    r2("TSBooleanKeyword", e2, t2);
  }
  function Us(e2, t2) {
    r2("TSBigIntKeyword", e2, t2);
  }
  function Vs(e2, t2) {
    r2("TSIntrinsicKeyword", e2, t2);
  }
  function Ws(e2, t2) {
    r2("TSNeverKeyword", e2, t2);
  }
  function qs(e2, t2) {
    r2("TSNullKeyword", e2, t2);
  }
  function _s(e2, t2) {
    r2("TSNumberKeyword", e2, t2);
  }
  function zs(e2, t2) {
    r2("TSObjectKeyword", e2, t2);
  }
  function Qs(e2, t2) {
    r2("TSStringKeyword", e2, t2);
  }
  function $s(e2, t2) {
    r2("TSSymbolKeyword", e2, t2);
  }
  function Gs(e2, t2) {
    r2("TSUndefinedKeyword", e2, t2);
  }
  function Ys(e2, t2) {
    r2("TSUnknownKeyword", e2, t2);
  }
  function Hs(e2, t2) {
    r2("TSVoidKeyword", e2, t2);
  }
  function Zs(e2, t2) {
    r2("TSThisType", e2, t2);
  }
  function er(e2, t2) {
    r2("TSFunctionType", e2, t2);
  }
  function tr(e2, t2) {
    r2("TSConstructorType", e2, t2);
  }
  function sr(e2, t2) {
    r2("TSTypeReference", e2, t2);
  }
  function rr(e2, t2) {
    r2("TSTypePredicate", e2, t2);
  }
  function nr(e2, t2) {
    r2("TSTypeQuery", e2, t2);
  }
  function ar(e2, t2) {
    r2("TSTypeLiteral", e2, t2);
  }
  function or(e2, t2) {
    r2("TSArrayType", e2, t2);
  }
  function ir(e2, t2) {
    r2("TSTupleType", e2, t2);
  }
  function cr2(e2, t2) {
    r2("TSOptionalType", e2, t2);
  }
  function pr(e2, t2) {
    r2("TSRestType", e2, t2);
  }
  function lr(e2, t2) {
    r2("TSNamedTupleMember", e2, t2);
  }
  function ur(e2, t2) {
    r2("TSUnionType", e2, t2);
  }
  function Tr(e2, t2) {
    r2("TSIntersectionType", e2, t2);
  }
  function Sr(e2, t2) {
    r2("TSConditionalType", e2, t2);
  }
  function fr(e2, t2) {
    r2("TSInferType", e2, t2);
  }
  function yr(e2, t2) {
    r2("TSParenthesizedType", e2, t2);
  }
  function mr(e2, t2) {
    r2("TSTypeOperator", e2, t2);
  }
  function dr(e2, t2) {
    r2("TSIndexedAccessType", e2, t2);
  }
  function Er(e2, t2) {
    r2("TSMappedType", e2, t2);
  }
  function xr(e2, t2) {
    r2("TSTemplateLiteralType", e2, t2);
  }
  function Ar(e2, t2) {
    r2("TSLiteralType", e2, t2);
  }
  function Dr(e2, t2) {
    r2("TSExpressionWithTypeArguments", e2, t2);
  }
  function Pr(e2, t2) {
    r2("TSInterfaceDeclaration", e2, t2);
  }
  function br(e2, t2) {
    r2("TSInterfaceBody", e2, t2);
  }
  function Ir(e2, t2) {
    r2("TSTypeAliasDeclaration", e2, t2);
  }
  function gr(e2, t2) {
    r2("TSInstantiationExpression", e2, t2);
  }
  function Cr(e2, t2) {
    r2("TSAsExpression", e2, t2);
  }
  function Mr2(e2, t2) {
    r2("TSSatisfiesExpression", e2, t2);
  }
  function Br(e2, t2) {
    r2("TSTypeAssertion", e2, t2);
  }
  function Nr(e2, t2) {
    r2("TSEnumBody", e2, t2);
  }
  function Lr(e2, t2) {
    r2("TSEnumDeclaration", e2, t2);
  }
  function hr(e2, t2) {
    r2("TSEnumMember", e2, t2);
  }
  function wr(e2, t2) {
    r2("TSModuleDeclaration", e2, t2);
  }
  function Fr(e2, t2) {
    r2("TSModuleBlock", e2, t2);
  }
  function Or(e2, t2) {
    r2("TSImportType", e2, t2);
  }
  function Xr(e2, t2) {
    r2("TSImportEqualsDeclaration", e2, t2);
  }
  function Jr(e2, t2) {
    r2("TSExternalModuleReference", e2, t2);
  }
  function Kr(e2, t2) {
    r2("TSNonNullExpression", e2, t2);
  }
  function jr(e2, t2) {
    r2("TSExportAssignment", e2, t2);
  }
  function Rr(e2, t2) {
    r2("TSNamespaceExportDeclaration", e2, t2);
  }
  function vr(e2, t2) {
    r2("TSTypeAnnotation", e2, t2);
  }
  function kr(e2, t2) {
    r2("TSTypeParameterInstantiation", e2, t2);
  }
  function Ur(e2, t2) {
    r2("TSTypeParameterDeclaration", e2, t2);
  }
  function Vr(e2, t2) {
    r2("TSTypeParameter", e2, t2);
  }
  function Wr(e2, t2) {
    r2("Standardized", e2, t2);
  }
  function qr(e2, t2) {
    r2("Expression", e2, t2);
  }
  function _r(e2, t2) {
    r2("Binary", e2, t2);
  }
  function zr(e2, t2) {
    r2("Scopable", e2, t2);
  }
  function Qr(e2, t2) {
    r2("BlockParent", e2, t2);
  }
  function $r(e2, t2) {
    r2("Block", e2, t2);
  }
  function Gr(e2, t2) {
    r2("Statement", e2, t2);
  }
  function Yr(e2, t2) {
    r2("Terminatorless", e2, t2);
  }
  function Hr(e2, t2) {
    r2("CompletionStatement", e2, t2);
  }
  function Zr(e2, t2) {
    r2("Conditional", e2, t2);
  }
  function en(e2, t2) {
    r2("Loop", e2, t2);
  }
  function tn(e2, t2) {
    r2("While", e2, t2);
  }
  function sn(e2, t2) {
    r2("ExpressionWrapper", e2, t2);
  }
  function rn(e2, t2) {
    r2("For", e2, t2);
  }
  function nn(e2, t2) {
    r2("ForXStatement", e2, t2);
  }
  function an(e2, t2) {
    r2("Function", e2, t2);
  }
  function on(e2, t2) {
    r2("FunctionParent", e2, t2);
  }
  function cn(e2, t2) {
    r2("Pureish", e2, t2);
  }
  function pn(e2, t2) {
    r2("Declaration", e2, t2);
  }
  function ln(e2, t2) {
    r2("PatternLike", e2, t2);
  }
  function un(e2, t2) {
    r2("LVal", e2, t2);
  }
  function Tn(e2, t2) {
    r2("TSEntityName", e2, t2);
  }
  function Sn(e2, t2) {
    r2("Literal", e2, t2);
  }
  function fn(e2, t2) {
    r2("Immutable", e2, t2);
  }
  function yn(e2, t2) {
    r2("UserWhitespacable", e2, t2);
  }
  function mn(e2, t2) {
    r2("Method", e2, t2);
  }
  function dn(e2, t2) {
    r2("ObjectMember", e2, t2);
  }
  function En(e2, t2) {
    r2("Property", e2, t2);
  }
  function xn(e2, t2) {
    r2("UnaryLike", e2, t2);
  }
  function An(e2, t2) {
    r2("Pattern", e2, t2);
  }
  function Dn(e2, t2) {
    r2("Class", e2, t2);
  }
  function Pn(e2, t2) {
    r2("ImportOrExportDeclaration", e2, t2);
  }
  function bn(e2, t2) {
    r2("ExportDeclaration", e2, t2);
  }
  function In(e2, t2) {
    r2("ModuleSpecifier", e2, t2);
  }
  function gn(e2, t2) {
    r2("Accessor", e2, t2);
  }
  function Cn(e2, t2) {
    r2("Private", e2, t2);
  }
  function Mn(e2, t2) {
    r2("Flow", e2, t2);
  }
  function Bn(e2, t2) {
    r2("FlowType", e2, t2);
  }
  function Nn(e2, t2) {
    r2("FlowBaseAnnotation", e2, t2);
  }
  function Ln(e2, t2) {
    r2("FlowDeclaration", e2, t2);
  }
  function hn(e2, t2) {
    r2("FlowPredicate", e2, t2);
  }
  function wn(e2, t2) {
    r2("EnumBody", e2, t2);
  }
  function Fn(e2, t2) {
    r2("EnumMember", e2, t2);
  }
  function On(e2, t2) {
    r2("JSX", e2, t2);
  }
  function Xn(e2, t2) {
    r2("Miscellaneous", e2, t2);
  }
  function Jn(e2, t2) {
    r2("TypeScript", e2, t2);
  }
  function Kn(e2, t2) {
    r2("TSTypeElement", e2, t2);
  }
  function jn(e2, t2) {
    r2("TSType", e2, t2);
  }
  function Rn(e2, t2) {
    r2("TSBaseType", e2, t2);
  }
  function vn(e2, t2) {
    (0, n2.default)("assertNumberLiteral", "assertNumericLiteral"), r2("NumberLiteral", e2, t2);
  }
  function kn(e2, t2) {
    (0, n2.default)("assertRegexLiteral", "assertRegExpLiteral"), r2("RegexLiteral", e2, t2);
  }
  function Un(e2, t2) {
    (0, n2.default)("assertRestProperty", "assertRestElement"), r2("RestProperty", e2, t2);
  }
  function Vn(e2, t2) {
    (0, n2.default)("assertSpreadProperty", "assertSpreadElement"), r2("SpreadProperty", e2, t2);
  }
  function Wn(e2, t2) {
    (0, n2.default)("assertModuleDeclaration", "assertImportOrExportDeclaration"), r2("ModuleDeclaration", e2, t2);
  }
  return e$A;
}
var e$z = {};
var r$f;
function a$b() {
  if (r$f) return e$z;
  r$f = 1, Object.defineProperty(e$z, "__esModule", { value: true }), e$z.default = void 0;
  var e2 = o$i();
  e$z.default = o2;
  function o2(t2) {
    switch (t2) {
      case "string":
        return (0, e2.stringTypeAnnotation)();
      case "number":
        return (0, e2.numberTypeAnnotation)();
      case "undefined":
        return (0, e2.voidTypeAnnotation)();
      case "boolean":
        return (0, e2.booleanTypeAnnotation)();
      case "function":
        return (0, e2.genericTypeAnnotation)((0, e2.identifier)("Function"));
      case "object":
        return (0, e2.genericTypeAnnotation)((0, e2.identifier)("Object"));
      case "symbol":
        return (0, e2.genericTypeAnnotation)((0, e2.identifier)("Symbol"));
      case "bigint":
        return (0, e2.anyTypeAnnotation)();
    }
    throw new Error("Invalid typeof value: " + t2);
  }
  return e$z;
}
var e$y = {};
var e$x = {};
var l$3;
function _$5() {
  if (l$3) return e$x;
  l$3 = 1, Object.defineProperty(e$x, "__esModule", { value: true }), e$x.default = m2;
  var s2 = qn();
  function c2(r2) {
    return (0, s2.isIdentifier)(r2) ? r2.name : `${r2.id.name}.${c2(r2.qualification)}`;
  }
  function m2(r2) {
    const p2 = Array.from(r2), a2 = /* @__PURE__ */ new Map(), f2 = /* @__PURE__ */ new Map(), y2 = /* @__PURE__ */ new Set(), n2 = [];
    for (let t2 = 0; t2 < p2.length; t2++) {
      const e2 = p2[t2];
      if (e2 && !n2.includes(e2)) {
        if ((0, s2.isAnyTypeAnnotation)(e2)) return [e2];
        if ((0, s2.isFlowBaseAnnotation)(e2)) {
          f2.set(e2.type, e2);
          continue;
        }
        if ((0, s2.isUnionTypeAnnotation)(e2)) {
          y2.has(e2.types) || (p2.push(...e2.types), y2.add(e2.types));
          continue;
        }
        if ((0, s2.isGenericTypeAnnotation)(e2)) {
          const u2 = c2(e2.id);
          if (a2.has(u2)) {
            let i2 = a2.get(u2);
            i2.typeParameters ? e2.typeParameters && (i2.typeParameters.params.push(...e2.typeParameters.params), i2.typeParameters.params = m2(i2.typeParameters.params)) : i2 = e2.typeParameters;
          } else a2.set(u2, e2);
          continue;
        }
        n2.push(e2);
      }
    }
    for (const [, t2] of f2) n2.push(t2);
    for (const [, t2] of a2) n2.push(t2);
    return n2;
  }
  return e$x;
}
var t$5;
function s$3() {
  if (t$5) return e$y;
  t$5 = 1, Object.defineProperty(e$y, "__esModule", { value: true }), e$y.default = i2;
  var o2 = o$i(), n2 = _$5();
  function i2(u2) {
    const r2 = (0, n2.default)(u2);
    return r2.length === 1 ? r2[0] : (0, o2.unionTypeAnnotation)(r2);
  }
  return e$y;
}
var e$w = {};
var e$v = {};
var g;
function d() {
  if (g) return e$v;
  g = 1, Object.defineProperty(e$v, "__esModule", { value: true }), e$v.default = m2;
  var r2 = qn();
  function f2(s2) {
    return (0, r2.isIdentifier)(s2) ? s2.name : (0, r2.isThisExpression)(s2) ? "this" : `${s2.right.name}.${f2(s2.left)}`;
  }
  function m2(s2) {
    const u2 = Array.from(s2), n2 = /* @__PURE__ */ new Map(), y2 = /* @__PURE__ */ new Map(), l2 = /* @__PURE__ */ new Set(), i2 = [];
    for (let t2 = 0; t2 < u2.length; t2++) {
      const e2 = u2[t2];
      if (!e2 || i2.includes(e2)) continue;
      if ((0, r2.isTSAnyKeyword)(e2)) return [e2];
      if ((0, r2.isTSBaseType)(e2)) {
        y2.set(e2.type, e2);
        continue;
      }
      if ((0, r2.isTSUnionType)(e2)) {
        l2.has(e2.types) || (u2.push(...e2.types), l2.add(e2.types));
        continue;
      }
      const a2 = "typeParameters";
      if ((0, r2.isTSTypeReference)(e2) && e2[a2]) {
        const T2 = e2[a2], c2 = f2(e2.typeName);
        if (n2.has(c2)) {
          let h = n2.get(c2);
          const o2 = h[a2];
          o2 ? (o2.params.push(...T2.params), o2.params = m2(o2.params)) : h = T2;
        } else n2.set(c2, e2);
        continue;
      }
      i2.push(e2);
    }
    for (const [, t2] of y2) i2.push(t2);
    for (const [, t2] of n2) i2.push(t2);
    return i2;
  }
  return e$v;
}
var n$6;
function T() {
  if (n$6) return e$w;
  n$6 = 1, Object.defineProperty(e$w, "__esModule", { value: true }), e$w.default = a2;
  var i2 = o$i(), o2 = d(), u2 = qn();
  function a2(s2) {
    const p2 = s2.map((t2) => (0, u2.isTSTypeAnnotation)(t2) ? t2.typeAnnotation : t2), r2 = (0, o2.default)(p2);
    return r2.length === 1 ? r2[0] : (0, i2.tsUnionType)(r2);
  }
  return e$w;
}
var o$e = {};
var i$c;
function n$5() {
  if (i$c) return o$e;
  i$c = 1, Object.defineProperty(o$e, "__esModule", { value: true }), o$e.buildUndefinedNode = o2;
  var e2 = o$i();
  function o2() {
    return (0, e2.unaryExpression)("void", (0, e2.numericLiteral)(0), true);
  }
  return o$e;
}
var e$u = {};
var N;
function I() {
  if (N) return e$u;
  N = 1, Object.defineProperty(e$u, "__esModule", { value: true }), e$u.default = O;
  var y2 = I$1(), m2 = qn();
  const { hasOwn: l2 } = { hasOwn: Function.call.bind(Object.prototype.hasOwnProperty) };
  function _2(r2, e2, t2, i2) {
    return r2 && typeof r2.type == "string" ? c2(r2, e2, t2, i2) : r2;
  }
  function u2(r2, e2, t2, i2) {
    return Array.isArray(r2) ? r2.map((a2) => _2(a2, e2, t2, i2)) : _2(r2, e2, t2, i2);
  }
  function O(r2, e2 = true, t2 = false) {
    return c2(r2, e2, t2, /* @__PURE__ */ new Map());
  }
  function c2(r2, e2 = true, t2 = false, i2) {
    if (!r2) return r2;
    const { type: a2 } = r2, n2 = { type: r2.type };
    if ((0, m2.isIdentifier)(r2)) n2.name = r2.name, l2(r2, "optional") && typeof r2.optional == "boolean" && (n2.optional = r2.optional), l2(r2, "typeAnnotation") && (n2.typeAnnotation = e2 ? u2(r2.typeAnnotation, true, t2, i2) : r2.typeAnnotation), l2(r2, "decorators") && (n2.decorators = e2 ? u2(r2.decorators, true, t2, i2) : r2.decorators);
    else if (l2(y2.NODE_FIELDS, a2)) for (const f2 of Object.keys(y2.NODE_FIELDS[a2])) l2(r2, f2) && (e2 ? n2[f2] = (0, m2.isFile)(r2) && f2 === "comments" ? s2(r2.comments, e2, t2, i2) : u2(r2[f2], true, t2, i2) : n2[f2] = r2[f2]);
    else throw new Error(`Unknown node type: "${a2}"`);
    return l2(r2, "loc") && (t2 ? n2.loc = null : n2.loc = r2.loc), l2(r2, "leadingComments") && (n2.leadingComments = s2(r2.leadingComments, e2, t2, i2)), l2(r2, "innerComments") && (n2.innerComments = s2(r2.innerComments, e2, t2, i2)), l2(r2, "trailingComments") && (n2.trailingComments = s2(r2.trailingComments, e2, t2, i2)), l2(r2, "extra") && (n2.extra = Object.assign({}, r2.extra)), n2;
  }
  function s2(r2, e2, t2, i2) {
    return !r2 || !e2 ? r2 : r2.map((a2) => {
      const n2 = i2.get(a2);
      if (n2) return n2;
      const { type: f2, value: g2, loc: q2 } = a2, p2 = { type: f2, value: g2, loc: q2 };
      return t2 && (p2.loc = null), i2.set(a2, p2), p2;
    });
  }
  return e$u;
}
var e$t = {};
var r$e;
function i$b() {
  if (r$e) return e$t;
  r$e = 1, Object.defineProperty(e$t, "__esModule", { value: true }), e$t.default = u2;
  var o2 = I();
  function u2(t2) {
    return (0, o2.default)(t2, false);
  }
  return e$t;
}
var e$s = {};
var r$d;
function i$a() {
  if (r$d) return e$s;
  r$d = 1, Object.defineProperty(e$s, "__esModule", { value: true }), e$s.default = u2;
  var o2 = I();
  function u2(t2) {
    return (0, o2.default)(t2);
  }
  return e$s;
}
var e$r = {};
var r$c;
function n$4() {
  if (r$c) return e$r;
  r$c = 1, Object.defineProperty(e$r, "__esModule", { value: true }), e$r.default = t2;
  var o2 = I();
  function t2(u2) {
    return (0, o2.default)(u2, true, true);
  }
  return e$r;
}
var o$d = {};
var r$b;
function n$3() {
  if (r$b) return o$d;
  r$b = 1, Object.defineProperty(o$d, "__esModule", { value: true }), o$d.default = t2;
  var o2 = I();
  function t2(u2) {
    return (0, o2.default)(u2, false, true);
  }
  return o$d;
}
var a$a = {};
var a$9 = {};
var i$9;
function f$6() {
  if (i$9) return a$9;
  i$9 = 1, Object.defineProperty(a$9, "__esModule", { value: true }), a$9.default = a2;
  function a2(r2, u2, t2) {
    if (!t2 || !r2) return r2;
    const e2 = `${u2}Comments`;
    return r2[e2] ? u2 === "leading" ? r2[e2] = t2.concat(r2[e2]) : r2[e2].push(...t2) : r2[e2] = t2, r2;
  }
  return a$9;
}
var r$a;
function i$8() {
  if (r$a) return a$a;
  r$a = 1, Object.defineProperty(a$a, "__esModule", { value: true }), a$a.default = m2;
  var t2 = f$6();
  function m2(o2, u2, n2, d2) {
    return (0, t2.default)(o2, u2, [{ type: d2 ? "CommentLine" : "CommentBlock", value: n2 }]);
  }
  return a$a;
}
var e$q = {};
var r$9 = {};
var o$c;
function u$8() {
  if (o$c) return r$9;
  o$c = 1, Object.defineProperty(r$9, "__esModule", { value: true }), r$9.default = n2;
  function n2(e2, t2, i2) {
    t2 && i2 && (t2[e2] = Array.from(new Set([].concat(t2[e2], i2[e2]).filter(Boolean))));
  }
  return r$9;
}
var r$8;
function u$7() {
  if (r$8) return e$q;
  r$8 = 1, Object.defineProperty(e$q, "__esModule", { value: true }), e$q.default = t2;
  var n2 = u$8();
  function t2(i2, o2) {
    (0, n2.default)("innerComments", i2, o2);
  }
  return e$q;
}
var e$p = {};
var r$7;
function u$6() {
  if (r$7) return e$p;
  r$7 = 1, Object.defineProperty(e$p, "__esModule", { value: true }), e$p.default = t2;
  var i2 = u$8();
  function t2(n2, o2) {
    (0, i2.default)("leadingComments", n2, o2);
  }
  return e$p;
}
var e$o = {};
var r$6 = {};
var e$n;
function u$5() {
  if (e$n) return r$6;
  e$n = 1, Object.defineProperty(r$6, "__esModule", { value: true }), r$6.default = t2;
  var i2 = u$8();
  function t2(n2, o2) {
    (0, i2.default)("trailingComments", n2, o2);
  }
  return r$6;
}
var i$7;
function f$5() {
  if (i$7) return e$o;
  i$7 = 1, Object.defineProperty(e$o, "__esModule", { value: true }), e$o.default = o2;
  var m2 = u$5(), u2 = u$6(), n2 = u$7();
  function o2(e2, t2) {
    return (0, m2.default)(e2, t2), (0, u2.default)(e2, t2), (0, n2.default)(e2, t2), e2;
  }
  return e$o;
}
var e$m = {};
var o$b;
function i$6() {
  if (o$b) return e$m;
  o$b = 1, Object.defineProperty(e$m, "__esModule", { value: true }), e$m.default = t2;
  var m2 = B$1();
  function t2(r2) {
    return m2.COMMENT_KEYS.forEach((u2) => {
      r2[u2] = null;
    }), r2;
  }
  return e$m;
}
var e$l = {};
var P;
function Y() {
  if (P) return e$l;
  P = 1, Object.defineProperty(e$l, "__esModule", { value: true }), e$l.WHILE_TYPES = e$l.USERWHITESPACABLE_TYPES = e$l.UNARYLIKE_TYPES = e$l.TYPESCRIPT_TYPES = e$l.TSTYPE_TYPES = e$l.TSTYPEELEMENT_TYPES = e$l.TSENTITYNAME_TYPES = e$l.TSBASETYPE_TYPES = e$l.TERMINATORLESS_TYPES = e$l.STATEMENT_TYPES = e$l.STANDARDIZED_TYPES = e$l.SCOPABLE_TYPES = e$l.PUREISH_TYPES = e$l.PROPERTY_TYPES = e$l.PRIVATE_TYPES = e$l.PATTERN_TYPES = e$l.PATTERNLIKE_TYPES = e$l.OBJECTMEMBER_TYPES = e$l.MODULESPECIFIER_TYPES = e$l.MODULEDECLARATION_TYPES = e$l.MISCELLANEOUS_TYPES = e$l.METHOD_TYPES = e$l.LVAL_TYPES = e$l.LOOP_TYPES = e$l.LITERAL_TYPES = e$l.JSX_TYPES = e$l.IMPORTOREXPORTDECLARATION_TYPES = e$l.IMMUTABLE_TYPES = e$l.FUNCTION_TYPES = e$l.FUNCTIONPARENT_TYPES = e$l.FOR_TYPES = e$l.FORXSTATEMENT_TYPES = e$l.FLOW_TYPES = e$l.FLOWTYPE_TYPES = e$l.FLOWPREDICATE_TYPES = e$l.FLOWDECLARATION_TYPES = e$l.FLOWBASEANNOTATION_TYPES = e$l.EXPRESSION_TYPES = e$l.EXPRESSIONWRAPPER_TYPES = e$l.EXPORTDECLARATION_TYPES = e$l.ENUMMEMBER_TYPES = e$l.ENUMBODY_TYPES = e$l.DECLARATION_TYPES = e$l.CONDITIONAL_TYPES = e$l.COMPLETIONSTATEMENT_TYPES = e$l.CLASS_TYPES = e$l.BLOCK_TYPES = e$l.BLOCKPARENT_TYPES = e$l.BINARY_TYPES = e$l.ACCESSOR_TYPES = void 0;
  var S = I$1();
  e$l.STANDARDIZED_TYPES = S.FLIPPED_ALIAS_KEYS.Standardized;
  e$l.EXPRESSION_TYPES = S.FLIPPED_ALIAS_KEYS.Expression;
  e$l.BINARY_TYPES = S.FLIPPED_ALIAS_KEYS.Binary;
  e$l.SCOPABLE_TYPES = S.FLIPPED_ALIAS_KEYS.Scopable;
  e$l.BLOCKPARENT_TYPES = S.FLIPPED_ALIAS_KEYS.BlockParent;
  e$l.BLOCK_TYPES = S.FLIPPED_ALIAS_KEYS.Block;
  e$l.STATEMENT_TYPES = S.FLIPPED_ALIAS_KEYS.Statement;
  e$l.TERMINATORLESS_TYPES = S.FLIPPED_ALIAS_KEYS.Terminatorless;
  e$l.COMPLETIONSTATEMENT_TYPES = S.FLIPPED_ALIAS_KEYS.CompletionStatement;
  e$l.CONDITIONAL_TYPES = S.FLIPPED_ALIAS_KEYS.Conditional;
  e$l.LOOP_TYPES = S.FLIPPED_ALIAS_KEYS.Loop;
  e$l.WHILE_TYPES = S.FLIPPED_ALIAS_KEYS.While;
  e$l.EXPRESSIONWRAPPER_TYPES = S.FLIPPED_ALIAS_KEYS.ExpressionWrapper;
  e$l.FOR_TYPES = S.FLIPPED_ALIAS_KEYS.For;
  e$l.FORXSTATEMENT_TYPES = S.FLIPPED_ALIAS_KEYS.ForXStatement;
  e$l.FUNCTION_TYPES = S.FLIPPED_ALIAS_KEYS.Function;
  e$l.FUNCTIONPARENT_TYPES = S.FLIPPED_ALIAS_KEYS.FunctionParent;
  e$l.PUREISH_TYPES = S.FLIPPED_ALIAS_KEYS.Pureish;
  e$l.DECLARATION_TYPES = S.FLIPPED_ALIAS_KEYS.Declaration;
  e$l.PATTERNLIKE_TYPES = S.FLIPPED_ALIAS_KEYS.PatternLike;
  e$l.LVAL_TYPES = S.FLIPPED_ALIAS_KEYS.LVal;
  e$l.TSENTITYNAME_TYPES = S.FLIPPED_ALIAS_KEYS.TSEntityName;
  e$l.LITERAL_TYPES = S.FLIPPED_ALIAS_KEYS.Literal;
  e$l.IMMUTABLE_TYPES = S.FLIPPED_ALIAS_KEYS.Immutable;
  e$l.USERWHITESPACABLE_TYPES = S.FLIPPED_ALIAS_KEYS.UserWhitespacable;
  e$l.METHOD_TYPES = S.FLIPPED_ALIAS_KEYS.Method;
  e$l.OBJECTMEMBER_TYPES = S.FLIPPED_ALIAS_KEYS.ObjectMember;
  e$l.PROPERTY_TYPES = S.FLIPPED_ALIAS_KEYS.Property;
  e$l.UNARYLIKE_TYPES = S.FLIPPED_ALIAS_KEYS.UnaryLike;
  e$l.PATTERN_TYPES = S.FLIPPED_ALIAS_KEYS.Pattern;
  e$l.CLASS_TYPES = S.FLIPPED_ALIAS_KEYS.Class;
  const T2 = e$l.IMPORTOREXPORTDECLARATION_TYPES = S.FLIPPED_ALIAS_KEYS.ImportOrExportDeclaration;
  e$l.EXPORTDECLARATION_TYPES = S.FLIPPED_ALIAS_KEYS.ExportDeclaration;
  e$l.MODULESPECIFIER_TYPES = S.FLIPPED_ALIAS_KEYS.ModuleSpecifier;
  e$l.ACCESSOR_TYPES = S.FLIPPED_ALIAS_KEYS.Accessor;
  e$l.PRIVATE_TYPES = S.FLIPPED_ALIAS_KEYS.Private;
  e$l.FLOW_TYPES = S.FLIPPED_ALIAS_KEYS.Flow;
  e$l.FLOWTYPE_TYPES = S.FLIPPED_ALIAS_KEYS.FlowType;
  e$l.FLOWBASEANNOTATION_TYPES = S.FLIPPED_ALIAS_KEYS.FlowBaseAnnotation;
  e$l.FLOWDECLARATION_TYPES = S.FLIPPED_ALIAS_KEYS.FlowDeclaration;
  e$l.FLOWPREDICATE_TYPES = S.FLIPPED_ALIAS_KEYS.FlowPredicate;
  e$l.ENUMBODY_TYPES = S.FLIPPED_ALIAS_KEYS.EnumBody;
  e$l.ENUMMEMBER_TYPES = S.FLIPPED_ALIAS_KEYS.EnumMember;
  e$l.JSX_TYPES = S.FLIPPED_ALIAS_KEYS.JSX;
  e$l.MISCELLANEOUS_TYPES = S.FLIPPED_ALIAS_KEYS.Miscellaneous;
  e$l.TYPESCRIPT_TYPES = S.FLIPPED_ALIAS_KEYS.TypeScript;
  e$l.TSTYPEELEMENT_TYPES = S.FLIPPED_ALIAS_KEYS.TSTypeElement;
  e$l.TSTYPE_TYPES = S.FLIPPED_ALIAS_KEYS.TSType;
  e$l.TSBASETYPE_TYPES = S.FLIPPED_ALIAS_KEYS.TSBaseType;
  e$l.MODULEDECLARATION_TYPES = T2;
  return e$l;
}
var e$k = {};
var o$a = {};
var o$9;
function n$2() {
  if (o$9) return o$a;
  o$9 = 1, Object.defineProperty(o$a, "__esModule", { value: true }), o$a.default = s2;
  var r2 = qn(), i2 = o$i();
  function s2(e2, a2) {
    if ((0, r2.isBlockStatement)(e2)) return e2;
    let u2 = [];
    return (0, r2.isEmptyStatement)(e2) ? u2 = [] : ((0, r2.isStatement)(e2) || ((0, r2.isFunction)(a2) ? e2 = (0, i2.returnStatement)(e2) : e2 = (0, i2.expressionStatement)(e2)), u2 = [e2]), (0, i2.blockStatement)(u2);
  }
  return o$a;
}
var t$4;
function c$6() {
  if (t$4) return e$k;
  t$4 = 1, Object.defineProperty(e$k, "__esModule", { value: true }), e$k.default = i2;
  var s2 = n$2();
  function i2(e2, u2 = "body") {
    const o2 = (0, s2.default)(e2[u2], e2);
    return e2[u2] = o2, o2;
  }
  return e$k;
}
var e$j = {};
var e$i = {};
var a$8;
function _$4() {
  if (a$8) return e$i;
  a$8 = 1, Object.defineProperty(e$i, "__esModule", { value: true }), e$i.default = n2;
  var f2 = d$2(), u2 = o$l();
  function n2(i2) {
    i2 = i2 + "";
    let e2 = "";
    for (const t2 of i2) e2 += (0, u2.isIdentifierChar)(t2.codePointAt(0)) ? t2 : "-";
    return e2 = e2.replace(/^[-0-9]+/, ""), e2 = e2.replace(/[-\s]+(.)?/g, function(t2, o2) {
      return o2 ? o2.toUpperCase() : "";
    }), (0, f2.default)(e2) || (e2 = `_${e2}`), e2 || "_";
  }
  return e$i;
}
var i$5;
function n$1() {
  if (i$5) return e$j;
  i$5 = 1, Object.defineProperty(e$j, "__esModule", { value: true }), e$j.default = o2;
  var t2 = _$4();
  function o2(e2) {
    return e2 = (0, t2.default)(e2), (e2 === "eval" || e2 === "arguments") && (e2 = "_" + e2), e2;
  }
  return e$j;
}
var e$h = {};
var u$4;
function a$7() {
  if (u$4) return e$h;
  u$4 = 1, Object.defineProperty(e$h, "__esModule", { value: true }), e$h.default = m2;
  var i2 = qn(), o2 = o$i();
  function m2(t2, e2 = t2.key || t2.property) {
    return !t2.computed && (0, i2.isIdentifier)(e2) && (e2 = (0, o2.stringLiteral)(e2.name)), e2;
  }
  return e$h;
}
var o$8 = {};
var i$4;
function u$3() {
  if (i$4) return o$8;
  i$4 = 1, Object.defineProperty(o$8, "__esModule", { value: true }), o$8.default = void 0;
  var s2 = qn();
  o$8.default = t2;
  function t2(r2) {
    if ((0, s2.isExpressionStatement)(r2) && (r2 = r2.expression), (0, s2.isExpression)(r2)) return r2;
    if ((0, s2.isClass)(r2) ? r2.type = "ClassExpression" : (0, s2.isFunction)(r2) && (r2.type = "FunctionExpression"), !(0, s2.isExpression)(r2)) throw new Error(`cannot turn ${r2.type} to an expression`);
    return r2;
  }
  return o$8;
}
var a$6 = {};
var e$g = {};
var r$5 = {};
var o$7;
function m$2() {
  if (o$7) return r$5;
  o$7 = 1, Object.defineProperty(r$5, "__esModule", { value: true }), r$5.default = t2;
  var f2 = I$1();
  function t2(e2, a2, r2) {
    if (!e2) return;
    const i2 = f2.VISITOR_KEYS[e2.type];
    if (i2) {
      r2 = r2 || {}, a2(e2, r2);
      for (const n2 of i2) {
        const u2 = e2[n2];
        if (Array.isArray(u2)) for (const _2 of u2) t2(_2, a2, r2);
        else t2(u2, a2, r2);
      }
    }
  }
  return r$5;
}
var e$f = {};
var s$2;
function a$5() {
  if (s$2) return e$f;
  s$2 = 1, Object.defineProperty(e$f, "__esModule", { value: true }), e$f.default = u2;
  var i2 = B$1();
  const t2 = ["tokens", "start", "end", "loc", "raw", "rawValue"], n2 = [...i2.COMMENT_KEYS, "comments", ...t2];
  function u2(r2, m2 = {}) {
    const f2 = m2.preserveComments ? t2 : n2;
    for (const e2 of f2) r2[e2] != null && (r2[e2] = void 0);
    for (const e2 of Object.keys(r2)) e2[0] === "_" && r2[e2] != null && (r2[e2] = void 0);
    const c2 = Object.getOwnPropertySymbols(r2);
    for (const e2 of c2) r2[e2] = null;
  }
  return e$f;
}
var o$6;
function m$1() {
  if (o$6) return e$g;
  o$6 = 1, Object.defineProperty(e$g, "__esModule", { value: true }), e$g.default = i2;
  var t2 = m$2(), u2 = a$5();
  function i2(r2, s2) {
    return (0, t2.default)(r2, u2.default, s2), r2;
  }
  return e$g;
}
var a$4;
function _$3() {
  if (a$4) return a$6;
  a$4 = 1, Object.defineProperty(a$6, "__esModule", { value: true }), a$6.default = r2;
  var s2 = qn(), o2 = I(), n2 = m$1();
  function r2(t2, i2 = t2.key) {
    let e2;
    return t2.kind === "method" ? r2.increment() + "" : ((0, s2.isIdentifier)(i2) ? e2 = i2.name : (0, s2.isStringLiteral)(i2) ? e2 = JSON.stringify(i2.value) : e2 = JSON.stringify((0, n2.default)((0, o2.default)(i2))), t2.computed && (e2 = `[${e2}]`), t2.static && (e2 = `static:${e2}`), e2);
  }
  return r2.uid = 0, r2.increment = function() {
    return r2.uid >= Number.MAX_SAFE_INTEGER ? r2.uid = 0 : r2.uid++;
  }, a$6;
}
var t$3 = {};
var a$3;
function l$2() {
  if (a$3) return t$3;
  a$3 = 1, Object.defineProperty(t$3, "__esModule", { value: true }), t$3.default = void 0;
  var i2 = qn(), u2 = o$i();
  t$3.default = n2;
  function n2(e2, o2) {
    if ((0, i2.isStatement)(e2)) return e2;
    let s2 = false, t2;
    if ((0, i2.isClass)(e2)) s2 = true, t2 = "ClassDeclaration";
    else if ((0, i2.isFunction)(e2)) s2 = true, t2 = "FunctionDeclaration";
    else if ((0, i2.isAssignmentExpression)(e2)) return (0, u2.expressionStatement)(e2);
    if (s2 && !e2.id && (t2 = false), !t2) {
      if (o2) return false;
      throw new Error(`cannot turn ${e2.type} to a statement`);
    }
    return e2.type = t2, e2;
  }
  return t$3;
}
var e$e = {};
var f$4;
function b$1() {
  if (f$4) return e$e;
  f$4 = 1, Object.defineProperty(e$e, "__esModule", { value: true }), e$e.default = void 0;
  var u2 = d$2(), e2 = o$i();
  e$e.default = n2;
  const c2 = Function.call.bind(Object.prototype.toString);
  function p2(r2) {
    return c2(r2) === "[object RegExp]";
  }
  function a2(r2) {
    if (typeof r2 != "object" || r2 === null || Object.prototype.toString.call(r2) !== "[object Object]") return false;
    const t2 = Object.getPrototypeOf(r2);
    return t2 === null || Object.getPrototypeOf(t2) === null;
  }
  function n2(r2) {
    if (r2 === void 0) return (0, e2.identifier)("undefined");
    if (r2 === true || r2 === false) return (0, e2.booleanLiteral)(r2);
    if (r2 === null) return (0, e2.nullLiteral)();
    if (typeof r2 == "string") return (0, e2.stringLiteral)(r2);
    if (typeof r2 == "number") {
      let t2;
      if (Number.isFinite(r2)) t2 = (0, e2.numericLiteral)(Math.abs(r2));
      else {
        let i2;
        Number.isNaN(r2) ? i2 = (0, e2.numericLiteral)(0) : i2 = (0, e2.numericLiteral)(1), t2 = (0, e2.binaryExpression)("/", i2, (0, e2.numericLiteral)(0));
      }
      return (r2 < 0 || Object.is(r2, -0)) && (t2 = (0, e2.unaryExpression)("-", t2)), t2;
    }
    if (p2(r2)) {
      const t2 = r2.source, i2 = /\/([a-z]*)$/.exec(r2.toString())[1];
      return (0, e2.regExpLiteral)(t2, i2);
    }
    if (Array.isArray(r2)) return (0, e2.arrayExpression)(r2.map(n2));
    if (a2(r2)) {
      const t2 = [];
      for (const i2 of Object.keys(r2)) {
        let s2;
        (0, u2.default)(i2) ? s2 = (0, e2.identifier)(i2) : s2 = (0, e2.stringLiteral)(i2), t2.push((0, e2.objectProperty)(s2, n2(r2[i2])));
      }
      return (0, e2.objectExpression)(t2);
    }
    throw new Error("don't know how to turn this value into a node");
  }
  return e$e;
}
var e$d = {};
var o$5;
function u$2() {
  if (o$5) return e$d;
  o$5 = 1, Object.defineProperty(e$d, "__esModule", { value: true }), e$d.default = s2;
  var p2 = o$i();
  function s2(e2, t2, i2 = false) {
    return e2.object = (0, p2.memberExpression)(e2.object, e2.property, e2.computed), e2.property = t2, e2.computed = !!i2, e2;
  }
  return e$d;
}
var r$4 = {};
var i$3;
function m() {
  if (i$3) return r$4;
  i$3 = 1, Object.defineProperty(r$4, "__esModule", { value: true }), r$4.default = f2;
  var u2 = B$1(), s2 = f$5();
  function f2(e2, o2) {
    if (!e2 || !o2) return e2;
    for (const r2 of u2.INHERIT_KEYS.optional) e2[r2] == null && (e2[r2] = o2[r2]);
    for (const r2 of Object.keys(o2)) r2[0] === "_" && r2 !== "__clone" && (e2[r2] = o2[r2]);
    for (const r2 of u2.INHERIT_KEYS.force) e2[r2] = o2[r2];
    return (0, s2.default)(e2, o2), e2;
  }
  return r$4;
}
var e$c = {};
var o$4;
function a$2() {
  if (o$4) return e$c;
  o$4 = 1, Object.defineProperty(e$c, "__esModule", { value: true }), e$c.default = i2;
  var s2 = o$i(), p2 = Mr();
  function i2(e2, n2) {
    if ((0, p2.isSuper)(e2.object)) throw new Error("Cannot prepend node to super property access (`super.foo`).");
    return e2.object = (0, s2.memberExpression)(n2, e2.object), e2;
  }
  return e$c;
}
var e$b = {};
var n;
function c$5() {
  if (n) return e$b;
  n = 1, Object.defineProperty(e$b, "__esModule", { value: true }), e$b.default = a2;
  function a2(i2) {
    const t2 = [].concat(i2), r2 = /* @__PURE__ */ Object.create(null);
    for (; t2.length; ) {
      const e2 = t2.pop();
      if (e2) switch (e2.type) {
        case "ArrayPattern":
          t2.push(...e2.elements);
          break;
        case "AssignmentExpression":
        case "AssignmentPattern":
        case "ForInStatement":
        case "ForOfStatement":
          t2.push(e2.left);
          break;
        case "ObjectPattern":
          t2.push(...e2.properties);
          break;
        case "ObjectProperty":
          t2.push(e2.value);
          break;
        case "RestElement":
        case "UpdateExpression":
          t2.push(e2.argument);
          break;
        case "UnaryExpression":
          e2.operator === "delete" && t2.push(e2.argument);
          break;
        case "Identifier":
          r2[e2.name] = e2;
          break;
      }
    }
    return r2;
  }
  return e$b;
}
var e$a = {};
var l$1;
function y$1() {
  if (l$1) return e$a;
  l$1 = 1, Object.defineProperty(e$a, "__esModule", { value: true }), e$a.default = o2;
  var i2 = qn();
  function o2(d2, u2, f2, m2) {
    const r2 = [].concat(d2), t2 = /* @__PURE__ */ Object.create(null);
    for (; r2.length; ) {
      const e2 = r2.shift();
      if (!e2 || m2 && ((0, i2.isAssignmentExpression)(e2) || (0, i2.isUnaryExpression)(e2) || (0, i2.isUpdateExpression)(e2))) continue;
      if ((0, i2.isIdentifier)(e2)) {
        u2 ? (t2[e2.name] = t2[e2.name] || []).push(e2) : t2[e2.name] = e2;
        continue;
      }
      if ((0, i2.isExportDeclaration)(e2) && !(0, i2.isExportAllDeclaration)(e2)) {
        (0, i2.isDeclaration)(e2.declaration) && r2.push(e2.declaration);
        continue;
      }
      if (f2) {
        if ((0, i2.isFunctionDeclaration)(e2)) {
          r2.push(e2.id);
          continue;
        }
        if ((0, i2.isFunctionExpression)(e2)) continue;
      }
      const c2 = o2.keys[e2.type];
      if (c2) for (let a2 = 0; a2 < c2.length; a2++) {
        const x2 = c2[a2], n2 = e2[x2];
        n2 && (Array.isArray(n2) ? r2.push(...n2) : r2.push(n2));
      }
    }
    return t2;
  }
  const p2 = { DeclareClass: ["id"], DeclareFunction: ["id"], DeclareModule: ["id"], DeclareVariable: ["id"], DeclareInterface: ["id"], DeclareTypeAlias: ["id"], DeclareOpaqueType: ["id"], InterfaceDeclaration: ["id"], TypeAlias: ["id"], OpaqueType: ["id"], CatchClause: ["param"], LabeledStatement: ["label"], UnaryExpression: ["argument"], AssignmentExpression: ["left"], ImportSpecifier: ["local"], ImportNamespaceSpecifier: ["local"], ImportDefaultSpecifier: ["local"], ImportDeclaration: ["specifiers"], TSImportEqualsDeclaration: ["id"], ExportSpecifier: ["exported"], ExportNamespaceSpecifier: ["exported"], ExportDefaultSpecifier: ["exported"], FunctionDeclaration: ["id", "params"], FunctionExpression: ["id", "params"], ArrowFunctionExpression: ["params"], ObjectMethod: ["params"], ClassMethod: ["params"], ClassPrivateMethod: ["params"], ForInStatement: ["left"], ForOfStatement: ["left"], ClassDeclaration: ["id"], ClassExpression: ["id"], RestElement: ["argument"], UpdateExpression: ["argument"], ObjectProperty: ["value"], AssignmentPattern: ["left"], ArrayPattern: ["elements"], ObjectPattern: ["properties"], VariableDeclaration: ["declarations"], VariableDeclarator: ["id"] };
  return o2.keys = p2, e$a;
}
var e$9 = {};
var r$3;
function f$3() {
  if (r$3) return e$9;
  r$3 = 1, Object.defineProperty(e$9, "__esModule", { value: true }), e$9.default = void 0;
  var i2 = y$1();
  e$9.default = t2;
  function t2(u2, n2) {
    return (0, i2.default)(u2, n2, true);
  }
  return e$9;
}
var e$8 = {};
var s$1;
function c$4() {
  if (s$1) return e$8;
  s$1 = 1, Object.defineProperty(e$8, "__esModule", { value: true }), e$8.default = m2;
  var i2 = qn();
  function f2(e2) {
    return (0, i2.isNullLiteral)(e2) ? "null" : (0, i2.isRegExpLiteral)(e2) ? `/${e2.pattern}/${e2.flags}` : (0, i2.isTemplateLiteral)(e2) ? e2.quasis.map((t2) => t2.value.raw).join("") : e2.value !== void 0 ? String(e2.value) : null;
  }
  function a2(e2) {
    if (!e2.computed || (0, i2.isLiteral)(e2.key)) return e2.key;
  }
  function m2(e2, t2) {
    if ("id" in e2 && e2.id) return { name: e2.id.name, originalNode: e2.id };
    let l2 = "", r2;
    if ((0, i2.isObjectProperty)(t2, { value: e2 }) ? r2 = a2(t2) : (0, i2.isObjectMethod)(e2) || (0, i2.isClassMethod)(e2) ? (r2 = a2(e2), e2.kind === "get" ? l2 = "get " : e2.kind === "set" && (l2 = "set ")) : (0, i2.isVariableDeclarator)(t2, { init: e2 }) ? r2 = t2.id : (0, i2.isAssignmentExpression)(t2, { operator: "=", right: e2 }) && (r2 = t2.left), !r2) return null;
    const n2 = (0, i2.isLiteral)(r2) ? f2(r2) : (0, i2.isIdentifier)(r2) ? r2.name : (0, i2.isPrivateName)(r2) ? r2.id.name : null;
    return n2 == null ? null : { name: l2 + n2, originalNode: r2 };
  }
  return e$8;
}
var r$2 = {};
var l;
function q() {
  if (l) return r$2;
  l = 1, Object.defineProperty(r$2, "__esModule", { value: true }), r$2.default = s2;
  var n2 = I$1();
  function s2(i2, e2, u2) {
    typeof e2 == "function" && (e2 = { enter: e2 });
    const { enter: f2, exit: r2 } = e2;
    _2(i2, f2, r2, u2, []);
  }
  function _2(i2, e2, u2, f2, r2) {
    const v2 = n2.VISITOR_KEYS[i2.type];
    if (v2) {
      e2 && e2(i2, r2, f2);
      for (const m2 of v2) {
        const o2 = i2[m2];
        if (Array.isArray(o2)) for (let p2 = 0; p2 < o2.length; p2++) {
          const c2 = o2[p2];
          c2 && (r2.push({ node: i2, key: m2, index: p2 }), _2(c2, e2, u2, f2, r2), r2.pop());
        }
        else o2 && (r2.push({ node: i2, key: m2 }), _2(o2, e2, u2, f2, r2), r2.pop());
      }
      u2 && u2(i2, r2, f2);
    }
  }
  return r$2;
}
var i$2 = {};
var f$2;
function y() {
  if (f$2) return i$2;
  f$2 = 1, Object.defineProperty(i$2, "__esModule", { value: true }), i$2.default = l2;
  var o2 = y$1();
  function l2(r2, i2, u2) {
    if (u2 && r2.type === "Identifier" && i2.type === "ObjectProperty" && u2.type === "ObjectExpression") return false;
    const t2 = o2.default.keys[i2.type];
    if (t2) for (let s2 = 0; s2 < t2.length; s2++) {
      const a2 = t2[s2], n2 = i2[a2];
      if (Array.isArray(n2)) {
        if (n2.includes(r2)) return true;
      } else if (n2 === r2) return true;
    }
    return false;
  }
  return i$2;
}
var o$3 = {};
var e$7 = {};
var i$1;
function _$2() {
  if (i$1) return e$7;
  i$1 = 1, Object.defineProperty(e$7, "__esModule", { value: true }), e$7.default = s2;
  var t2 = qn(), u2 = B$1();
  function s2(e2) {
    return (0, t2.isVariableDeclaration)(e2) && (e2.kind !== "var" || e2[u2.BLOCK_SCOPED_SYMBOL]);
  }
  return e$7;
}
var o$2;
function c$3() {
  if (o$2) return o$3;
  o$2 = 1, Object.defineProperty(o$3, "__esModule", { value: true }), o$3.default = u2;
  var i2 = qn(), t2 = _$2();
  function u2(e2) {
    return (0, i2.isFunctionDeclaration)(e2) || (0, i2.isClassDeclaration)(e2) || (0, t2.default)(e2);
  }
  return o$3;
}
var a$1 = {};
var u$1;
function f$1() {
  if (u$1) return a$1;
  u$1 = 1, Object.defineProperty(a$1, "__esModule", { value: true }), a$1.default = m2;
  var t2 = a$e(), i2 = qn();
  function m2(r2) {
    return (0, t2.default)(r2.type, "Immutable") ? true : (0, i2.isIdentifier)(r2) ? r2.name === "undefined" : false;
  }
  return a$1;
}
var e$6 = {};
var a;
function p() {
  if (a) return e$6;
  a = 1, Object.defineProperty(e$6, "__esModule", { value: true }), e$6.default = u2;
  var f2 = I$1();
  function u2(r2, i2) {
    if (typeof r2 != "object" || typeof i2 != "object" || r2 == null || i2 == null) return r2 === i2;
    if (r2.type !== i2.type) return false;
    const c2 = Object.keys(f2.NODE_FIELDS[r2.type] || r2.type), l2 = f2.VISITOR_KEYS[r2.type];
    for (const o2 of c2) {
      const e2 = r2[o2], t2 = i2[o2];
      if (typeof e2 != typeof t2) return false;
      if (!(e2 == null && t2 == null)) {
        if (e2 == null || t2 == null) return false;
        if (Array.isArray(e2)) {
          if (!Array.isArray(t2) || e2.length !== t2.length) return false;
          for (let n2 = 0; n2 < e2.length; n2++) if (!u2(e2[n2], t2[n2])) return false;
          continue;
        }
        if (typeof e2 == "object" && !(l2 != null && l2.includes(o2))) {
          for (const n2 of Object.keys(e2)) if (e2[n2] !== t2[n2]) return false;
          continue;
        }
        if (!u2(e2, t2)) return false;
      }
    }
    return true;
  }
  return e$6;
}
var e$5 = {};
var c$2;
function u() {
  if (c$2) return e$5;
  c$2 = 1, Object.defineProperty(e$5, "__esModule", { value: true }), e$5.default = a2;
  function a2(r2, e2, s2) {
    switch (e2.type) {
      case "MemberExpression":
      case "OptionalMemberExpression":
        return e2.property === r2 ? !!e2.computed : e2.object === r2;
      case "JSXMemberExpression":
        return e2.object === r2;
      case "VariableDeclarator":
        return e2.init === r2;
      case "ArrowFunctionExpression":
        return e2.body === r2;
      case "PrivateName":
        return false;
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "ObjectMethod":
        return e2.key === r2 ? !!e2.computed : false;
      case "ObjectProperty":
        return e2.key === r2 ? !!e2.computed : !s2 || s2.type !== "ObjectPattern";
      case "ClassProperty":
      case "ClassAccessorProperty":
        return e2.key === r2 ? !!e2.computed : true;
      case "ClassPrivateProperty":
        return e2.key !== r2;
      case "ClassDeclaration":
      case "ClassExpression":
        return e2.superClass === r2;
      case "AssignmentExpression":
        return e2.right === r2;
      case "AssignmentPattern":
        return e2.right === r2;
      case "LabeledStatement":
        return false;
      case "CatchClause":
        return false;
      case "RestElement":
        return false;
      case "BreakStatement":
      case "ContinueStatement":
        return false;
      case "FunctionDeclaration":
      case "FunctionExpression":
        return false;
      case "ExportNamespaceSpecifier":
      case "ExportDefaultSpecifier":
        return false;
      case "ExportSpecifier":
        return s2 != null && s2.source ? false : e2.local === r2;
      case "ImportDefaultSpecifier":
      case "ImportNamespaceSpecifier":
      case "ImportSpecifier":
        return false;
      case "ImportAttribute":
        return false;
      case "JSXAttribute":
        return false;
      case "ObjectPattern":
      case "ArrayPattern":
        return false;
      case "MetaProperty":
        return false;
      case "ObjectTypeProperty":
        return e2.key !== r2;
      case "TSEnumMember":
        return e2.id !== r2;
      case "TSPropertySignature":
        return e2.key === r2 ? !!e2.computed : true;
    }
    return true;
  }
  return e$5;
}
var e$4 = {};
var t$2;
function c$1() {
  if (t$2) return e$4;
  t$2 = 1, Object.defineProperty(e$4, "__esModule", { value: true }), e$4.default = u2;
  var e2 = qn();
  function u2(s2, r2) {
    return (0, e2.isBlockStatement)(s2) && ((0, e2.isFunction)(r2) || (0, e2.isCatchClause)(r2)) ? false : (0, e2.isPattern)(s2) && ((0, e2.isFunction)(r2) || (0, e2.isCatchClause)(r2)) ? true : (0, e2.isScopable)(s2);
  }
  return e$4;
}
var e$3 = {};
var t$1;
function o$1() {
  if (t$1) return e$3;
  t$1 = 1, Object.defineProperty(e$3, "__esModule", { value: true }), e$3.default = u2;
  var i2 = qn();
  function u2(r2) {
    return (0, i2.isImportDefaultSpecifier)(r2) || (0, i2.isIdentifier)(r2.imported || r2.exported, { name: "default" });
  }
  return e$3;
}
var e$2 = {};
var t;
function s() {
  if (t) return e$2;
  t = 1, Object.defineProperty(e$2, "__esModule", { value: true }), e$2.default = n2;
  var i2 = d$2();
  const a2 = /* @__PURE__ */ new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
  function n2(r2) {
    return (0, i2.default)(r2) && !a2.has(r2);
  }
  return e$2;
}
var r$1 = {};
var i;
function _$1() {
  if (i) return r$1;
  i = 1, Object.defineProperty(r$1, "__esModule", { value: true }), r$1.default = t2;
  var a2 = qn(), u2 = B$1();
  function t2(e2) {
    return (0, a2.isVariableDeclaration)(e2, { kind: "var" }) && !e2[u2.BLOCK_SCOPED_SYMBOL];
  }
  return r$1;
}
var e$1 = {};
var e = {};
var c;
function b() {
  if (c) return e;
  c = 1, Object.defineProperty(e, "__esModule", { value: true }), e.default = s2;
  var l2 = y$1(), t2 = qn(), f2 = o$i(), d2 = n$5(), m2 = I();
  function s2(p2, o2) {
    const i2 = [];
    let u2 = true;
    for (const e2 of p2) if ((0, t2.isEmptyStatement)(e2) || (u2 = false), (0, t2.isExpression)(e2)) i2.push(e2);
    else if ((0, t2.isExpressionStatement)(e2)) i2.push(e2.expression);
    else if ((0, t2.isVariableDeclaration)(e2)) {
      if (e2.kind !== "var") return;
      for (const r2 of e2.declarations) {
        const n2 = (0, l2.default)(r2);
        for (const _2 of Object.keys(n2)) o2.push({ kind: e2.kind, id: (0, m2.default)(n2[_2]) });
        r2.init && i2.push((0, f2.assignmentExpression)("=", r2.id, r2.init));
      }
      u2 = true;
    } else if ((0, t2.isIfStatement)(e2)) {
      const r2 = e2.consequent ? s2([e2.consequent], o2) : (0, d2.buildUndefinedNode)(), n2 = e2.alternate ? s2([e2.alternate], o2) : (0, d2.buildUndefinedNode)();
      if (!r2 || !n2) return;
      i2.push((0, f2.conditionalExpression)(e2.test, r2, n2));
    } else if ((0, t2.isBlockStatement)(e2)) {
      const r2 = s2(e2.body, o2);
      if (!r2) return;
      i2.push(r2);
    } else if ((0, t2.isEmptyStatement)(e2)) p2.indexOf(e2) === 0 && (u2 = true);
    else return;
    return u2 && i2.push((0, d2.buildUndefinedNode)()), i2.length === 1 ? i2[0] : (0, f2.sequenceExpression)(i2);
  }
  return e;
}
var o;
function f() {
  if (o) return e$1;
  o = 1, Object.defineProperty(e$1, "__esModule", { value: true }), e$1.default = n2;
  var s2 = b();
  function n2(r2, i2) {
    if (!(r2 != null && r2.length)) return;
    const u2 = [], t2 = (0, s2.default)(r2, u2);
    if (t2) {
      for (const c2 of u2) i2.push(c2);
      return t2;
    }
  }
  return e$1;
}
var _;
function Mr() {
  return _ ? r$w : (_ = 1, (function(e2) {
    Object.defineProperty(e2, "__esModule", { value: true });
    var t2 = { react: true, assertNode: true, createTypeAnnotationBasedOnTypeof: true, createUnionTypeAnnotation: true, createFlowUnionType: true, createTSUnionType: true, cloneNode: true, clone: true, cloneDeep: true, cloneDeepWithoutLoc: true, cloneWithoutLoc: true, addComment: true, addComments: true, inheritInnerComments: true, inheritLeadingComments: true, inheritsComments: true, inheritTrailingComments: true, removeComments: true, ensureBlock: true, toBindingIdentifierName: true, toBlock: true, toComputedKey: true, toExpression: true, toIdentifier: true, toKeyAlias: true, toStatement: true, valueToNode: true, appendToMemberExpression: true, inherits: true, prependToMemberExpression: true, removeProperties: true, removePropertiesDeep: true, removeTypeDuplicates: true, getAssignmentIdentifiers: true, getBindingIdentifiers: true, getOuterBindingIdentifiers: true, getFunctionName: true, traverse: true, traverseFast: true, shallowEqual: true, is: true, isBinding: true, isBlockScoped: true, isImmutable: true, isLet: true, isNode: true, isNodesEquivalent: true, isPlaceholderType: true, isReferenced: true, isScope: true, isSpecifierDefault: true, isType: true, isValidES3Identifier: true, isValidIdentifier: true, isVar: true, matchesPattern: true, validate: true, buildMatchMemberExpression: true, __internal__deprecationWarning: true };
    Object.defineProperty(e2, "__internal__deprecationWarning", { enumerable: true, get: function() {
      return qe.default;
    } }), Object.defineProperty(e2, "addComment", { enumerable: true, get: function() {
      return h.default;
    } }), Object.defineProperty(e2, "addComments", { enumerable: true, get: function() {
      return T$1.default;
    } }), Object.defineProperty(e2, "appendToMemberExpression", { enumerable: true, get: function() {
      return W.default;
    } }), Object.defineProperty(e2, "assertNode", { enumerable: true, get: function() {
      return q$12.default;
    } }), Object.defineProperty(e2, "buildMatchMemberExpression", { enumerable: true, get: function() {
      return be.default;
    } }), Object.defineProperty(e2, "clone", { enumerable: true, get: function() {
      return O.default;
    } }), Object.defineProperty(e2, "cloneDeep", { enumerable: true, get: function() {
      return P2.default;
    } }), Object.defineProperty(e2, "cloneDeepWithoutLoc", { enumerable: true, get: function() {
      return j.default;
    } }), Object.defineProperty(e2, "cloneNode", { enumerable: true, get: function() {
      return v2.default;
    } }), Object.defineProperty(e2, "cloneWithoutLoc", { enumerable: true, get: function() {
      return y$22.default;
    } }), Object.defineProperty(e2, "createFlowUnionType", { enumerable: true, get: function() {
      return l2.default;
    } }), Object.defineProperty(e2, "createTSUnionType", { enumerable: true, get: function() {
      return g2.default;
    } }), Object.defineProperty(e2, "createTypeAnnotationBasedOnTypeof", { enumerable: true, get: function() {
      return $.default;
    } }), Object.defineProperty(e2, "createUnionTypeAnnotation", { enumerable: true, get: function() {
      return l2.default;
    } }), Object.defineProperty(e2, "ensureBlock", { enumerable: true, get: function() {
      return S.default;
    } }), Object.defineProperty(e2, "getAssignmentIdentifiers", { enumerable: true, get: function() {
      return z.default;
    } }), Object.defineProperty(e2, "getBindingIdentifiers", { enumerable: true, get: function() {
      return J2.default;
    } }), Object.defineProperty(e2, "getFunctionName", { enumerable: true, get: function() {
      return X.default;
    } }), Object.defineProperty(e2, "getOuterBindingIdentifiers", { enumerable: true, get: function() {
      return Q.default;
    } }), Object.defineProperty(e2, "inheritInnerComments", { enumerable: true, get: function() {
      return E.default;
    } }), Object.defineProperty(e2, "inheritLeadingComments", { enumerable: true, get: function() {
      return B2.default;
    } }), Object.defineProperty(e2, "inheritTrailingComments", { enumerable: true, get: function() {
      return I$2.default;
    } }), Object.defineProperty(e2, "inherits", { enumerable: true, get: function() {
      return K.default;
    } }), Object.defineProperty(e2, "inheritsComments", { enumerable: true, get: function() {
      return C.default;
    } }), Object.defineProperty(e2, "is", { enumerable: true, get: function() {
      return x2.default;
    } }), Object.defineProperty(e2, "isBinding", { enumerable: true, get: function() {
      return ee.default;
    } }), Object.defineProperty(e2, "isBlockScoped", { enumerable: true, get: function() {
      return re.default;
    } }), Object.defineProperty(e2, "isImmutable", { enumerable: true, get: function() {
      return te.default;
    } }), Object.defineProperty(e2, "isLet", { enumerable: true, get: function() {
      return ue.default;
    } }), Object.defineProperty(e2, "isNode", { enumerable: true, get: function() {
      return ie.default;
    } }), Object.defineProperty(e2, "isNodesEquivalent", { enumerable: true, get: function() {
      return ne.default;
    } }), Object.defineProperty(e2, "isPlaceholderType", { enumerable: true, get: function() {
      return oe.default;
    } }), Object.defineProperty(e2, "isReferenced", { enumerable: true, get: function() {
      return ae.default;
    } }), Object.defineProperty(e2, "isScope", { enumerable: true, get: function() {
      return fe.default;
    } }), Object.defineProperty(e2, "isSpecifierDefault", { enumerable: true, get: function() {
      return me.default;
    } }), Object.defineProperty(e2, "isType", { enumerable: true, get: function() {
      return ce.default;
    } }), Object.defineProperty(e2, "isValidES3Identifier", { enumerable: true, get: function() {
      return de.default;
    } }), Object.defineProperty(e2, "isValidIdentifier", { enumerable: true, get: function() {
      return le.default;
    } }), Object.defineProperty(e2, "isVar", { enumerable: true, get: function() {
      return _e.default;
    } }), Object.defineProperty(e2, "matchesPattern", { enumerable: true, get: function() {
      return se.default;
    } }), Object.defineProperty(e2, "prependToMemberExpression", { enumerable: true, get: function() {
      return R.default;
    } }), e2.react = void 0, Object.defineProperty(e2, "removeComments", { enumerable: true, get: function() {
      return N2.default;
    } }), Object.defineProperty(e2, "removeProperties", { enumerable: true, get: function() {
      return G.default;
    } }), Object.defineProperty(e2, "removePropertiesDeep", { enumerable: true, get: function() {
      return Y$1.default;
    } }), Object.defineProperty(e2, "removeTypeDuplicates", { enumerable: true, get: function() {
      return H.default;
    } }), Object.defineProperty(e2, "shallowEqual", { enumerable: true, get: function() {
      return k.default;
    } }), Object.defineProperty(e2, "toBindingIdentifierName", { enumerable: true, get: function() {
      return M.default;
    } }), Object.defineProperty(e2, "toBlock", { enumerable: true, get: function() {
      return L.default;
    } }), Object.defineProperty(e2, "toComputedKey", { enumerable: true, get: function() {
      return w.default;
    } }), Object.defineProperty(e2, "toExpression", { enumerable: true, get: function() {
      return A2.default;
    } }), Object.defineProperty(e2, "toIdentifier", { enumerable: true, get: function() {
      return D.default;
    } }), Object.defineProperty(e2, "toKeyAlias", { enumerable: true, get: function() {
      return F.default;
    } }), Object.defineProperty(e2, "toStatement", { enumerable: true, get: function() {
      return U.default;
    } }), Object.defineProperty(e2, "traverse", { enumerable: true, get: function() {
      return u$12.default;
    } }), Object.defineProperty(e2, "traverseFast", { enumerable: true, get: function() {
      return Z.default;
    } }), Object.defineProperty(e2, "validate", { enumerable: true, get: function() {
      return pe.default;
    } }), Object.defineProperty(e2, "valueToNode", { enumerable: true, get: function() {
      return V.default;
    } });
    var s$12 = u$a(), p$12 = s$8(), b2 = f$8(), q$12 = f$7(), i2 = zn();
    Object.keys(i2).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === i2[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return i2[r2];
      } });
    });
    var $ = a$b(), l2 = s$3(), g2 = T(), n2 = n$5();
    Object.keys(n2).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === n2[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return n2[r2];
      } });
    });
    var o2 = o$i();
    Object.keys(o2).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === o2[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return o2[r2];
      } });
    });
    var v2 = I(), O = i$b(), P2 = i$a(), j = n$4(), y$22 = n$3(), h = i$8(), T$1 = f$6(), E = u$7(), B2 = u$6(), C = f$5(), I$2 = u$5(), N2 = i$6(), a2 = Y();
    Object.keys(a2).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === a2[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return a2[r2];
      } });
    });
    var f$22 = B$1();
    Object.keys(f$22).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === f$22[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return f$22[r2];
      } });
    });
    var S = c$6(), M = n$1(), L = n$2(), w = a$7(), A2 = u$3(), D = _$4(), F = _$3(), U = l$2(), V = b$1(), m$5 = I$1();
    Object.keys(m$5).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === m$5[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return m$5[r2];
      } });
    });
    var W = u$2(), K = m(), R = a$2(), G = a$5(), Y$1 = m$1(), H = _$5(), z = c$5(), J2 = y$1(), Q = f$3(), X = c$4(), u$12 = q();
    Object.keys(u$12).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === u$12[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return u$12[r2];
      } });
    });
    var Z = m$2(), k = a$h(), x2 = c$7(), ee = y(), re = c$3(), te = f$1(), ue = _$2(), ie = s$4(), ne = p(), oe = n$8(), ae = u(), fe = c$1(), me = o$1(), ce = a$e(), de = s(), le = d$2(), _e = _$1(), se = d$4(), pe = N$1(), be = m$3(), c2 = qn();
    Object.keys(c2).forEach(function(r2) {
      r2 === "default" || r2 === "__esModule" || Object.prototype.hasOwnProperty.call(t2, r2) || r2 in e2 && e2[r2] === c2[r2] || Object.defineProperty(e2, r2, { enumerable: true, get: function() {
        return c2[r2];
      } });
    });
    var qe = m$4(), $e = f();
    e2.react = { isReactComponent: s$12.default, isCompatTag: p$12.default, buildChildren: b2.default };
    e2.toSequenceExpression = $e.default, process.env.BABEL_TYPES_8_BREAKING && console.warn("BABEL_TYPES_8_BREAKING is not supported anymore. Use the latest Babel 8.0.0 pre-release instead!");
  })(r$w), r$w);
}
var r = Mr();
getDefaultExportFromCjs(r);
var version = "2.0.0";
var babelPluginUntyped = function(api, options) {
  const name = "untyped";
  api.cache.using(() => version);
  return {
    name,
    manipulateOptions(opts) {
      opts.plugins.sort((a2) => a2.key === name ? -1 : 0);
    },
    visitor: {
      VariableDeclaration(p2) {
        const declaration = p2.node.declarations[0];
        if (r.isIdentifier(declaration.id) && (r.isFunctionExpression(declaration.init) || r.isArrowFunctionExpression(declaration.init))) {
          const newDeclaration = r.functionDeclaration(
            declaration.id,
            declaration.init.params,
            r.isBlockStatement(declaration.init.body) ? declaration.init.body : r.blockStatement([r.returnStatement(declaration.init.body)])
          );
          newDeclaration.returnType = declaration.init.returnType;
          p2.replaceWith(newDeclaration);
        }
      },
      ObjectProperty(p2) {
        if (p2.node.leadingComments && p2.node.leadingComments.length > 0) {
          const schema = parseJSDocs(
            p2.node.leadingComments.filter((c2) => c2.type === "CommentBlock").map((c2) => c2.value)
          );
          const valueNode = p2.node.value.type === "TSTypeAssertion" || p2.node.value.type === "TSAsExpression" ? p2.node.value.expression : p2.node.value;
          if (valueNode.type === "ObjectExpression") {
            const schemaProp = valueNode.properties.find(
              (prop) => "key" in prop && prop.key.type === "Identifier" && prop.key.name === "$schema"
            );
            if (schemaProp && "value" in schemaProp) {
              if (schemaProp.value.type === "ObjectExpression") {
                schemaProp.value.properties.push(
                  ...astify(schema).properties
                );
              }
            } else {
              valueNode.properties.unshift(
                ...astify({ $schema: schema }).properties
              );
            }
          } else {
            p2.node.value = r.objectExpression([
              r.objectProperty(r.identifier("$default"), valueNode),
              r.objectProperty(r.identifier("$schema"), astify(schema))
            ]);
          }
          p2.node.leadingComments = [];
        }
      },
      FunctionDeclaration(p2) {
        const schema = parseJSDocs(
          (p2.parent.leadingComments || []).filter((c2) => c2.type === "CommentBlock").map((c2) => c2.value)
        );
        schema.type = "function";
        schema.args = [];
        if (!options.experimentalFunctions && !_optionalChain([schema, 'access', _7 => _7.tags, 'optionalAccess', _8 => _8.includes, 'call', _9 => _9("@untyped")])) {
          return;
        }
        if (p2.parent.type !== "ExportNamedDeclaration" && p2.parent.type !== "ExportDefaultDeclaration") {
          return;
        }
        const _getLines = _chunkGXKBPF6Rcjs.cachedFn.call(void 0, () => this.file.code.split("\n"));
        const getCode = (loc) => {
          if (!loc) {
            return "";
          }
          const _lines = _getLines();
          return _optionalChain([_lines, 'access', _10 => _10[loc.start.line - 1], 'optionalAccess', _11 => _11.slice, 'call', _12 => _12(loc.start.column, loc.end.column), 'access', _13 => _13.trim, 'call', _14 => _14()]) || "";
        };
        for (const [index, param] of p2.node.params.entries()) {
          if (_optionalChain([param, 'access', _15 => _15.loc, 'optionalAccess', _16 => _16.end, 'access', _17 => _17.line]) !== _optionalChain([param, 'access', _18 => _18.loc, 'optionalAccess', _19 => _19.start, 'access', _20 => _20.line])) {
            continue;
          }
          if (!r.isAssignmentPattern(param) && !r.isIdentifier(param)) {
            continue;
          }
          const lparam = r.isAssignmentPattern(param) ? param.left : param;
          if (!r.isIdentifier(lparam)) {
            continue;
          }
          const arg = {
            name: lparam.name || "arg" + index,
            optional: lparam.optional || void 0
          };
          if (lparam.typeAnnotation) {
            Object.assign(
              arg,
              _chunkGXKBPF6Rcjs.mergedTypes.call(void 0, 
                arg,
                inferAnnotationType(lparam.typeAnnotation, getCode)
              )
            );
          }
          if (param.type === "AssignmentPattern") {
            Object.assign(
              arg,
              _chunkGXKBPF6Rcjs.mergedTypes.call(void 0, arg, inferArgType(param.right))
            );
          }
          schema.args = schema.args || [];
          schema.args.push(arg);
        }
        if (_optionalChain([p2, 'access', _21 => _21.node, 'access', _22 => _22.returnType, 'optionalAccess', _23 => _23.type]) === "TSTypeAnnotation") {
          schema.returns = inferAnnotationType(p2.node.returnType, getCode);
        }
        schema.tags = _optionalChain([schema, 'access', _24 => _24.tags, 'optionalAccess', _25 => _25.filter, 'call', _26 => _26((tag) => {
          if (tag.startsWith("@returns")) {
            const { type } = _optionalChain([tag, 'access', _27 => _27.match, 'call', _28 => _28(/^@returns\s+{(?<type>[\S\s]+)}/), 'optionalAccess', _29 => _29.groups]) || {};
            if (type) {
              schema.returns = schema.returns || {};
              Object.assign(schema.returns, _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, type));
              return false;
            }
          }
          if (tag.startsWith("@param")) {
            const { type, param } = _optionalChain([tag, 'access', _30 => _30.match, 'call', _31 => _31(/^@param\s+{(?<type>[\S\s]+)}\s+(?<param>\w+)/), 'optionalAccess', _32 => _32.groups]) || {};
            if (type && param) {
              const arg = _optionalChain([schema, 'access', _33 => _33.args, 'optionalAccess', _34 => _34.find, 'call', _35 => _35((arg2) => arg2.name === param)]);
              if (arg) {
                Object.assign(arg, _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, type));
                return false;
              }
            }
          }
          return true;
        })]);
        if (p2.parent.type === "ExportDefaultDeclaration") {
          p2.replaceWith(astify({ $schema: schema }));
        } else {
          p2.replaceWith(
            r.variableDeclaration("const", [
              r.variableDeclarator(
                r.identifier(p2.node.id.name),
                astify({ $schema: schema })
              )
            ])
          );
        }
      }
    }
  };
};
function containsIncompleteCodeblock(line = "") {
  const codeDelimiters = line.split("\n").filter((line2) => line2.startsWith("```")).length;
  return !!(codeDelimiters % 2);
}
function clumpLines(lines, delimiters = [" "], separator = " ") {
  const clumps = [];
  while (lines.length > 0) {
    const line = lines.shift();
    if (line && !delimiters.includes(line[0]) && clumps.at(-1) || containsIncompleteCodeblock(clumps.at(-1))) {
      clumps[clumps.length - 1] += separator + line;
    } else {
      clumps.push(line);
    }
  }
  return clumps.filter(Boolean);
}
function parseJSDocs(input) {
  const schema = {
    title: "",
    description: "",
    tags: []
  };
  const lines = (Array.isArray(input) ? input : [input]).flatMap(
    (c2) => c2.split("\n").map((l2) => l2.replace(/(^\s*\*+ )|([\s*]+$)/g, ""))
  );
  const firstTag = lines.findIndex((l2) => l2.startsWith("@"));
  const comments = clumpLines(
    lines.slice(0, firstTag === -1 ? void 0 : firstTag)
  );
  if (comments.length === 1) {
    schema.title = comments[0];
  } else if (comments.length > 1) {
    schema.title = comments[0];
    schema.description = comments.splice(1).join("\n");
  }
  if (firstTag !== -1) {
    const tags = clumpLines(lines.slice(firstTag), ["@"], "\n");
    const typedefs = tags.reduce(
      (typedefs2, tag) => {
        const { typedef, alias } = _optionalChain([tag, 'access', _36 => _36.match, 'call', _37 => _37(/@typedef\s+{(?<typedef>[\S\s]+)} (?<alias>.*)/), 'optionalAccess', _38 => _38.groups]) || {};
        if (typedef && alias) {
          typedefs2[typedef] = alias;
        }
        return typedefs2;
      },
      {}
    );
    for (const tag of tags) {
      if (tag.startsWith("@type")) {
        const type = _optionalChain([tag, 'access', _39 => _39.match, 'call', _40 => _40(/@type\s+{([\S\s]+)}/), 'optionalAccess', _41 => _41[1]]);
        if (!type) {
          continue;
        }
        Object.assign(schema, _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, type));
        for (const typedef in typedefs) {
          schema.markdownType = type;
          if (schema.tsType) {
            schema.tsType = schema.tsType.replace(
              new RegExp(typedefs[typedef], "g"),
              typedef
            );
          }
        }
        continue;
      }
      schema.tags.push(tag.trim());
    }
  }
  return schema;
}
function astify(val) {
  if (typeof val === "string") {
    return r.stringLiteral(val);
  }
  if (typeof val === "boolean") {
    return r.booleanLiteral(val);
  }
  if (typeof val === "number") {
    return r.numericLiteral(val);
  }
  if (val === null) {
    return r.nullLiteral();
  }
  if (val === void 0) {
    return r.identifier("undefined");
  }
  if (Array.isArray(val)) {
    return r.arrayExpression(val.map((item) => astify(item)));
  }
  return r.objectExpression(
    Object.getOwnPropertyNames(val).filter(
      (key) => val[key] !== void 0 && val[key] !== null
    ).map(
      (key) => r.objectProperty(
        r.identifier(key),
        astify(val[key])
      )
    )
  );
}
var AST_JSTYPE_MAP = {
  StringLiteral: "string",
  BooleanLiteral: "boolean",
  BigIntLiteral: "bigint",
  DecimalLiteral: "number",
  NumericLiteral: "number",
  ObjectExpression: "object",
  FunctionExpression: "function",
  ArrowFunctionExpression: "function",
  RegExpLiteral: "RegExp"
};
function inferArgType(e2, getCode) {
  if (AST_JSTYPE_MAP[e2.type]) {
    return _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, AST_JSTYPE_MAP[e2.type]);
  }
  if (e2.type === "AssignmentExpression") {
    return inferArgType(e2.right);
  }
  if (e2.type === "NewExpression" && e2.callee.type === "Identifier") {
    return _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, e2.callee.name);
  }
  if (e2.type === "ArrayExpression" || e2.type === "TupleExpression") {
    const itemTypes = e2.elements.filter((el) => r.isExpression(el)).flatMap((el) => inferArgType(el).type);
    return {
      type: "array",
      items: {
        type: _chunkGXKBPF6Rcjs.normalizeTypes.call(void 0, itemTypes)
      }
    };
  }
  return {};
}
function inferAnnotationType(ann, getCode) {
  if (_optionalChain([ann, 'optionalAccess', _42 => _42.type]) !== "TSTypeAnnotation") {
    return void 0;
  }
  return inferTSType(ann.typeAnnotation, getCode);
}
function inferTSType(tsType, getCode) {
  if (tsType.type === "TSParenthesizedType") {
    return inferTSType(tsType.typeAnnotation, getCode);
  }
  if (tsType.type === "TSTypeReference") {
    if (tsType.typeParameters && "name" in tsType.typeName && tsType.typeName.name === "Array") {
      return {
        type: "array",
        items: inferTSType(tsType.typeParameters.params[0], getCode)
      };
    }
    return _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, getCode(tsType.loc));
  }
  if (tsType.type === "TSUnionType") {
    return _chunkGXKBPF6Rcjs.mergedTypes.call(void 0, ...tsType.types.map((t2) => inferTSType(t2, getCode)));
  }
  if (tsType.type === "TSArrayType") {
    return {
      type: "array",
      items: inferTSType(tsType.elementType, getCode)
    };
  }
  return _chunkGXKBPF6Rcjs.getTypeDescriptor.call(void 0, getCode(tsType.loc));
}

// ../../node_modules/.pnpm/untyped@2.0.0/node_modules/untyped/dist/loader/loader.mjs

async function loadSchema(entryPath, options = {}) {
  const jiti = _jiti.createJiti.call(void 0, 
    options.cwd || process.cwd(),
    _defu.defu.call(void 0, options.jiti, {
      interopDefault: true,
      transformOptions: {
        babel: {
          plugins: [[babelPluginUntyped, { experimentalFunctions: true }]]
        }
      }
    })
  );
  let rawSchema = await jiti.import(entryPath);
  const rawSchemaKeys = Object.keys(rawSchema);
  if (rawSchemaKeys.length === 1 && rawSchemaKeys[0] === "default") {
    rawSchema = rawSchema.default;
  }
  const schema = await _chunkGXKBPF6Rcjs.resolveSchema.call(void 0, rawSchema, options.defaults, {
    ignoreDefaults: options.ignoreDefaults
  });
  return schema;
}

// src/generate.ts
var getGenerateAction = (config) => async (options) => {
  _chunkDUNUNFJ4cjs.writeTrace.call(void 0, 
    `Running Storm Untyped with options: ${JSON.stringify(options)}`,
    config
  );
  const files = await _glob.glob.call(void 0, options.entry || "**/{untyped.ts,*.untyped.ts}", {
    ignore: [
      "**/{*.stories.tsx,*.stories.ts,*.spec.tsx,*.spec.ts}",
      "**/dist/**",
      "**/tmp/**",
      "**/node_modules/**",
      "**/.git/**",
      "**/.cache/**",
      "**/.nx/**"
    ],
    withFileTypes: true,
    cwd: config.workspaceRoot
  });
  await Promise.all(
    files.map(async (file) => {
      _chunkDUNUNFJ4cjs.writeTrace.call(void 0, 
        `Generating files for schema file: ${_chunk4G3IU22Jcjs.joinPaths.call(void 0, file.parentPath, file.name)}`,
        config
      );
      let schema;
      try {
        schema = await loadSchema(_chunk4G3IU22Jcjs.joinPaths.call(void 0, file.parentPath, file.name), {
          jiti: {
            fsCache: config.skipCache ? false : _chunk4G3IU22Jcjs.joinPaths.call(void 0, 
              config.directories.cache || _chunk4G3IU22Jcjs.joinPaths.call(void 0, 
                config.workspaceRoot,
                "node_modules/.cache/storm"
              ),
              "jiti"
            ),
            interopDefault: true
          }
        });
      } catch (error) {
        _chunkDUNUNFJ4cjs.writeError.call(void 0, 
          `Error while parsing schema file: ${_chunk4G3IU22Jcjs.joinPaths.call(void 0, file.parentPath, file.name)}

Error:
${_optionalChain([error, 'optionalAccess', _43 => _43.message]) ? error.message : JSON.stringify(error)}${_optionalChain([error, 'optionalAccess', _44 => _44.stack]) ? `
Stack Trace: ${error.stack}` : ""}

Parsed schema:
${JSON.stringify(schema)}
`,
          config
        );
        throw error;
      }
      const promises = [];
      promises.push(
        _chunkGXKBPF6Rcjs.generateDeclarationFile.call(void 0, schema, file, options.generatedBy, config)
      );
      promises.push(
        _chunkAA55W4PIcjs.generateMarkdownFile.call(void 0, schema, file, options.generatedBy, config)
      );
      promises.push(_chunkDNUXDRL4cjs.generateJsonSchemaFile.call(void 0, schema, file, config));
      return Promise.all(promises);
    })
  );
};



exports.getGenerateAction = getGenerateAction;