(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
  typeof define === 'function' && define.amd ? define(['exports'], factory) :
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Babel = {}));
})(this, (function (exports) { 'use strict';

  var NodePath_context = /*#__PURE__*/Object.freeze({
    __proto__: null,
    get _call () { return _call; },
    get _getQueueContexts () { return _getQueueContexts; },
    get _resyncKey () { return _resyncKey; },
    get _resyncList () { return _resyncList; },
    get _resyncParent () { return _resyncParent; },
    get _resyncRemoved () { return _resyncRemoved; },
    get call () { return call; },
    get isDenylisted () { return isDenylisted; },
    get popContext () { return popContext; },
    get pushContext () { return pushContext; },
    get requeue () { return requeue; },
    get requeueComputedKeyAndDecorators () { return requeueComputedKeyAndDecorators; },
    get resync () { return resync; },
    get setContext () { return setContext; },
    get setKey () { return setKey; },
    get setScope () { return setScope; },
    get setup () { return setup; },
    get skip () { return skip; },
    get skipKey () { return skipKey; },
    get stop () { return stop; },
    get visit () { return visit$1; }
  });
  var _babel = /*#__PURE__*/Object.freeze({
    __proto__: null,
    get DEFAULT_EXTENSIONS () { return DEFAULT_EXTENSIONS; },
    get File () { return File; },
    get buildExternalHelpers () { return babelBuildExternalHelpers; },
    get createConfigItem () { return createConfigItem; },
    get createConfigItemAsync () { return createConfigItemAsync; },
    get createConfigItemSync () { return createConfigItemSync; },
    get getEnv () { return getEnv; },
    get loadOptions () { return loadOptions; },
    get loadOptionsAsync () { return loadOptionsAsync; },
    get loadOptionsSync () { return loadOptionsSync; },
    get loadPartialConfig () { return loadPartialConfig; },
    get loadPartialConfigAsync () { return loadPartialConfigAsync; },
    get loadPartialConfigSync () { return loadPartialConfigSync; },
    get parse () { return parse$1; },
    get parseAsync () { return parseAsync; },
    get parseSync () { return parseSync; },
    get resolvePlugin () { return resolvePlugin; },
    get resolvePreset () { return resolvePreset; },
    get template () { return template$1; },
    get tokTypes () { return tokTypes; },
    get transform () { return transform$3; },
    get transformAsync () { return transformAsync; },
    get transformFile () { return transformFile; },
    get transformFileAsync () { return transformFileAsync; },
    get transformFileSync () { return transformFileSync; },
    get transformFromAst () { return transformFromAst$1; },
    get transformFromAstAsync () { return transformFromAstAsync; },
    get transformFromAstSync () { return transformFromAstSync; },
    get transformSync () { return transformSync; },
    get traverse () { return traverse; },
    get types () { return t$4; },
    get version () { return version$1; }
  });

  function _arrayLikeToArray(r, a) {
    (null == a || a > r.length) && (a = r.length);
    for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e];
    return n;
  }
  function _arrayWithHoles(r) {
    if (Array.isArray(r)) return r;
  }
  function _arrayWithoutHoles(r) {
    if (Array.isArray(r)) return _arrayLikeToArray(r);
  }
  function asyncGeneratorStep(n, t, e, r, o, a, c) {
    try {
      var i = n[a](c),
        u = i.value;
    } catch (n) {
      return void e(n);
    }
    i.done ? t(u) : Promise.resolve(u).then(r, o);
  }
  function _asyncToGenerator(n) {
    return function () {
      var t = this,
        e = arguments;
      return new Promise(function (r, o) {
        var a = n.apply(t, e);
        function _next(n) {
          asyncGeneratorStep(a, r, o, _next, _throw, "next", n);
        }
        function _throw(n) {
          asyncGeneratorStep(a, r, o, _next, _throw, "throw", n);
        }
        _next(void 0);
      });
    };
  }
  function _construct(t, e, r) {
    if (_isNativeReflectConstruct()) return Reflect.construct.apply(null, arguments);
    var o = [null];
    o.push.apply(o, e);
    var p = new (t.bind.apply(t, o))();
    return r && _setPrototypeOf(p, r.prototype), p;
  }
  function _defineProperties(e, r) {
    for (var t = 0; t < r.length; t++) {
      var o = r[t];
      o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o);
    }
  }
  function _createClass(e, r, t) {
    return r && _defineProperties(e.prototype, r), Object.defineProperty(e, "prototype", {
      writable: !1
    }), e;
  }
  function _createForOfIteratorHelperLoose(r, e) {
    var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (t) return (t = t.call(r)).next.bind(t);
    if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e  ) {
      t && (r = t);
      var o = 0;
      return function () {
        return o >= r.length ? {
          done: !0
        } : {
          done: !1,
          value: r[o++]
        };
      };
    }
    throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function _getPrototypeOf(t) {
    return _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function (t) {
      return t.__proto__ || Object.getPrototypeOf(t);
    }, _getPrototypeOf(t);
  }
  function _inherits(t, e) {
    if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function");
    t.prototype = Object.create(e && e.prototype, {
      constructor: {
        value: t,
        writable: !0,
        configurable: !0
      }
    }), Object.defineProperty(t, "prototype", {
      writable: !1
    }), e && _setPrototypeOf(t, e);
  }
  function _isNativeFunction(t) {
    try {
      return -1 !== Function.toString.call(t).indexOf("[native code]");
    } catch (n) {
      return "function" == typeof t;
    }
  }
  function _isNativeReflectConstruct() {
    try {
      var t = !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
    } catch (t) {}
    return (_isNativeReflectConstruct = function () {
      return !!t;
    })();
  }
  function _iterableToArray(r) {
    if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r);
  }
  function _iterableToArrayLimit(r, l) {
    var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"];
    if (null != t) {
      var e,
        n,
        i,
        u,
        a = [],
        f = !0,
        o = !1;
      try {
        if (i = (t = t.call(r)).next, 0 === l) {
          if (Object(t) !== t) return;
          f = !1;
        } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0);
      } catch (r) {
        o = !0, n = r;
      } finally {
        try {
          if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return;
        } finally {
          if (o) throw n;
        }
      }
      return a;
    }
  }
  function _nonIterableRest() {
    throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function _nonIterableSpread() {
    throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  }
  function _objectWithoutProperties(e, t) {
    if (null == e) return {};
    var o,
      r,
      i = _objectWithoutPropertiesLoose(e, t);
    if (Object.getOwnPropertySymbols) {
      var s = Object.getOwnPropertySymbols(e);
      for (r = 0; r < s.length; r++) o = s[r], t.includes(o) || {}.propertyIsEnumerable.call(e, o) && (i[o] = e[o]);
    }
    return i;
  }
  function _objectWithoutPropertiesLoose(r, e) {
    if (null == r) return {};
    var t = {};
    for (var n in r) if ({}.hasOwnProperty.call(r, n)) {
      if (e.includes(n)) continue;
      t[n] = r[n];
    }
    return t;
  }
  function _regeneratorRuntime() {
    _regeneratorRuntime = function () {
      return e;
    };
    var t,
      e = {},
      r = Object.prototype,
      n = r.hasOwnProperty,
      o = Object.defineProperty || function (t, e, r) {
        t[e] = r.value;
      },
      i = "function" == typeof Symbol ? Symbol : {},
      a = i.iterator || "@@iterator",
      c = i.asyncIterator || "@@asyncIterator",
      u = i.toStringTag || "@@toStringTag";
    function define(t, e, r) {
      return Object.defineProperty(t, e, {
        value: r,
        enumerable: !0,
        configurable: !0,
        writable: !0
      }), t[e];
    }
    try {
      define({}, "");
    } catch (t) {
      define = function (t, e, r) {
        return t[e] = r;
      };
    }
    function wrap(t, e, r, n) {
      var i = e && e.prototype instanceof Generator ? e : Generator,
        a = Object.create(i.prototype),
        c = new Context(n || []);
      return o(a, "_invoke", {
        value: makeInvokeMethod(t, r, c)
      }), a;
    }
    function tryCatch(t, e, r) {
      try {
        return {
          type: "normal",
          arg: t.call(e, r)
        };
      } catch (t) {
        return {
          type: "throw",
          arg: t
        };
      }
    }
    e.wrap = wrap;
    var h = "suspendedStart",
      l = "suspendedYield",
      f = "executing",
      s = "completed",
      y = {};
    function Generator() {}
    function GeneratorFunction() {}
    function GeneratorFunctionPrototype() {}
    var p = {};
    define(p, a, function () {
      return this;
    });
    var d = Object.getPrototypeOf,
      v = d && d(d(values([])));
    v && v !== r && n.call(v, a) && (p = v);
    var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p);
    function defineIteratorMethods(t) {
      ["next", "throw", "return"].forEach(function (e) {
        define(t, e, function (t) {
          return this._invoke(e, t);
        });
      });
    }
    function AsyncIterator(t, e) {
      function invoke(r, o, i, a) {
        var c = tryCatch(t[r], t, o);
        if ("throw" !== c.type) {
          var u = c.arg,
            h = u.value;
          return h && "object" == typeof h && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) {
            invoke("next", t, i, a);
          }, function (t) {
            invoke("throw", t, i, a);
          }) : e.resolve(h).then(function (t) {
            u.value = t, i(u);
          }, function (t) {
            return invoke("throw", t, i, a);
          });
        }
        a(c.arg);
      }
      var r;
      o(this, "_invoke", {
        value: function (t, n) {
          function callInvokeWithMethodAndArg() {
            return new e(function (e, r) {
              invoke(t, n, e, r);
            });
          }
          return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
        }
      });
    }
    function makeInvokeMethod(e, r, n) {
      var o = h;
      return function (i, a) {
        if (o === f) throw Error("Generator is already running");
        if (o === s) {
          if ("throw" === i) throw a;
          return {
            value: t,
            done: !0
          };
        }
        for (n.method = i, n.arg = a;;) {
          var c = n.delegate;
          if (c) {
            var u = maybeInvokeDelegate(c, n);
            if (u) {
              if (u === y) continue;
              return u;
            }
          }
          if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) {
            if (o === h) throw o = s, n.arg;
            n.dispatchException(n.arg);
          } else "return" === n.method && n.abrupt("return", n.arg);
          o = f;
          var p = tryCatch(e, r, n);
          if ("normal" === p.type) {
            if (o = n.done ? s : l, p.arg === y) continue;
            return {
              value: p.arg,
              done: n.done
            };
          }
          "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg);
        }
      };
    }
    function maybeInvokeDelegate(e, r) {
      var n = r.method,
        o = e.iterator[n];
      if (o === t) return r.delegate = null, "throw" === n && e.iterator.return && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y;
      var i = tryCatch(o, e.iterator, r.arg);
      if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y;
      var a = i.arg;
      return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y);
    }
    function pushTryEntry(t) {
      var e = {
        tryLoc: t[0]
      };
      1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e);
    }
    function resetTryEntry(t) {
      var e = t.completion || {};
      e.type = "normal", delete e.arg, t.completion = e;
    }
    function Context(t) {
      this.tryEntries = [{
        tryLoc: "root"
      }], t.forEach(pushTryEntry, this), this.reset(!0);
    }
    function values(e) {
      if (e || "" === e) {
        var r = e[a];
        if (r) return r.call(e);
        if ("function" == typeof e.next) return e;
        if (!isNaN(e.length)) {
          var o = -1,
            i = function next() {
              for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next;
              return next.value = t, next.done = !0, next;
            };
          return i.next = i;
        }
      }
      throw new TypeError(typeof e + " is not iterable");
    }
    return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", {
      value: GeneratorFunctionPrototype,
      configurable: !0
    }), o(GeneratorFunctionPrototype, "constructor", {
      value: GeneratorFunction,
      configurable: !0
    }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) {
      var e = "function" == typeof t && t.constructor;
      return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name));
    }, e.mark = function (t) {
      return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t;
    }, e.awrap = function (t) {
      return {
        __await: t
      };
    }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () {
      return this;
    }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) {
      void 0 === i && (i = Promise);
      var a = new AsyncIterator(wrap(t, r, n, o), i);
      return e.isGeneratorFunction(r) ? a : a.next().then(function (t) {
        return t.done ? t.value : a.next();
      });
    }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () {
      return this;
    }), define(g, "toString", function () {
      return "[object Generator]";
    }), e.keys = function (t) {
      var e = Object(t),
        r = [];
      for (var n in e) r.push(n);
      return r.reverse(), function next() {
        for (; r.length;) {
          var t = r.pop();
          if (t in e) return next.value = t, next.done = !1, next;
        }
        return next.done = !0, next;
      };
    }, e.values = values, Context.prototype = {
      constructor: Context,
      reset: function (e) {
        if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t);
      },
      stop: function () {
        this.done = !0;
        var t = this.tryEntries[0].completion;
        if ("throw" === t.type) throw t.arg;
        return this.rval;
      },
      dispatchException: function (e) {
        if (this.done) throw e;
        var r = this;
        function handle(n, o) {
          return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o;
        }
        for (var o = this.tryEntries.length - 1; o >= 0; --o) {
          var i = this.tryEntries[o],
            a = i.completion;
          if ("root" === i.tryLoc) return handle("end");
          if (i.tryLoc <= this.prev) {
            var c = n.call(i, "catchLoc"),
              u = n.call(i, "finallyLoc");
            if (c && u) {
              if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
              if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
            } else if (c) {
              if (this.prev < i.catchLoc) return handle(i.catchLoc, !0);
            } else {
              if (!u) throw Error("try statement without catch or finally");
              if (this.prev < i.finallyLoc) return handle(i.finallyLoc);
            }
          }
        }
      },
      abrupt: function (t, e) {
        for (var r = this.tryEntries.length - 1; r >= 0; --r) {
          var o = this.tryEntries[r];
          if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) {
            var i = o;
            break;
          }
        }
        i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
        var a = i ? i.completion : {};
        return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a);
      },
      complete: function (t, e) {
        if ("throw" === t.type) throw t.arg;
        return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y;
      },
      finish: function (t) {
        for (var e = this.tryEntries.length - 1; e >= 0; --e) {
          var r = this.tryEntries[e];
          if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y;
        }
      },
      catch: function (t) {
        for (var e = this.tryEntries.length - 1; e >= 0; --e) {
          var r = this.tryEntries[e];
          if (r.tryLoc === t) {
            var n = r.completion;
            if ("throw" === n.type) {
              var o = n.arg;
              resetTryEntry(r);
            }
            return o;
          }
        }
        throw Error("illegal catch attempt");
      },
      delegateYield: function (e, r, n) {
        return this.delegate = {
          iterator: values(e),
          resultName: r,
          nextLoc: n
        }, "next" === this.method && (this.arg = t), y;
      }
    }, e;
  }
  function _setPrototypeOf(t, e) {
    return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) {
      return t.__proto__ = e, t;
    }, _setPrototypeOf(t, e);
  }
  function _slicedToArray(r, e) {
    return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest();
  }
  function _taggedTemplateLiteralLoose(e, t) {
    return t || (t = e.slice(0)), e.raw = t, e;
  }
  function _toConsumableArray(r) {
    return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread();
  }
  function _toPrimitive(t, r) {
    if ("object" != typeof t || !t) return t;
    var e = t[Symbol.toPrimitive];
    if (void 0 !== e) {
      var i = e.call(t, r );
      if ("object" != typeof i) return i;
      throw new TypeError("@@toPrimitive must return a primitive value.");
    }
    return (String )(t);
  }
  function _toPropertyKey(t) {
    var i = _toPrimitive(t, "string");
    return "symbol" == typeof i ? i : i + "";
  }
  function _unsupportedIterableToArray(r, a) {
    if (r) {
      if ("string" == typeof r) return _arrayLikeToArray(r, a);
      var t = {}.toString.call(r).slice(8, -1);
      return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0;
    }
  }
  function _wrapNativeSuper(t) {
    var r = "function" == typeof Map ? new Map() : void 0;
    return _wrapNativeSuper = function (t) {
      if (null === t || !_isNativeFunction(t)) return t;
      if ("function" != typeof t) throw new TypeError("Super expression must either be null or a function");
      if (void 0 !== r) {
        if (r.has(t)) return r.get(t);
        r.set(t, Wrapper);
      }
      function Wrapper() {
        return _construct(t, arguments, _getPrototypeOf(this).constructor);
      }
      return Wrapper.prototype = Object.create(t.prototype, {
        constructor: {
          value: Wrapper,
          enumerable: !1,
          writable: !0,
          configurable: !0
        }
      }), _setPrototypeOf(Wrapper, t);
    }, _wrapNativeSuper(t);
  }

  function shallowEqual(actual, expected) {
    var keys = Object.keys(expected);
    for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
      var key = _keys[_i];
      if (actual[key] !== expected[key]) {
        return false;
      }
    }
    return true;
  }

  var warnings = new Set();
  function deprecationWarning$1(oldName, newName, prefix) {
    if (prefix === void 0) {
      prefix = "";
    }
    if (warnings.has(oldName)) return;
    warnings.add(oldName);
    var _captureShortStackTra = captureShortStackTrace(1, 2),
      internal = _captureShortStackTra.internal,
      trace = _captureShortStackTra.trace;
    if (internal) {
      return;
    }
    console.warn(prefix + "`" + oldName + "` has been deprecated, please migrate to `" + newName + "`\n" + trace);
  }
  function captureShortStackTrace(skip, length) {
    var stackTraceLimit = Error.stackTraceLimit,
      prepareStackTrace = Error.prepareStackTrace;
    var stackTrace;
    Error.stackTraceLimit = 1 + skip + length;
    Error.prepareStackTrace = function (err, stack) {
      stackTrace = stack;
    };
    new Error().stack;
    Error.stackTraceLimit = stackTraceLimit;
    Error.prepareStackTrace = prepareStackTrace;
    if (!stackTrace) return {
      internal: false,
      trace: ""
    };
    var shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);
    return {
      internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()),
      trace: shortStackTrace.map(function (frame) {
        return "    at " + frame;
      }).join("\n")
    };
  }

  function isArrayExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ArrayExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isAssignmentExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "AssignmentExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBinaryExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "BinaryExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isInterpreterDirective(node, opts) {
    if (!node) return false;
    if (node.type !== "InterpreterDirective") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDirective(node, opts) {
    if (!node) return false;
    if (node.type !== "Directive") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDirectiveLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "DirectiveLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBlockStatement$3(node, opts) {
    if (!node) return false;
    if (node.type !== "BlockStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBreakStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "BreakStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isCallExpression$8(node, opts) {
    if (!node) return false;
    if (node.type !== "CallExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isCatchClause(node, opts) {
    if (!node) return false;
    if (node.type !== "CatchClause") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isConditionalExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "ConditionalExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isContinueStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "ContinueStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDebuggerStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "DebuggerStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDoWhileStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "DoWhileStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEmptyStatement$1(node, opts) {
    if (!node) return false;
    if (node.type !== "EmptyStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExpressionStatement$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ExpressionStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isFile(node, opts) {
    if (!node) return false;
    if (node.type !== "File") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isForInStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "ForInStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isForStatement$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ForStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isFunctionDeclaration$2(node, opts) {
    if (!node) return false;
    if (node.type !== "FunctionDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isFunctionExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "FunctionExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isIdentifier$f(node, opts) {
    if (!node) return false;
    if (node.type !== "Identifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isIfStatement$2(node, opts) {
    if (!node) return false;
    if (node.type !== "IfStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isLabeledStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "LabeledStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isStringLiteral$5(node, opts) {
    if (!node) return false;
    if (node.type !== "StringLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNumericLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "NumericLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNullLiteral$1(node, opts) {
    if (!node) return false;
    if (node.type !== "NullLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBooleanLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "BooleanLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isRegExpLiteral$1(node, opts) {
    if (!node) return false;
    if (node.type !== "RegExpLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isLogicalExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "LogicalExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isMemberExpression$8(node, opts) {
    if (!node) return false;
    if (node.type !== "MemberExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNewExpression$3(node, opts) {
    if (!node) return false;
    if (node.type !== "NewExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isProgram$1(node, opts) {
    if (!node) return false;
    if (node.type !== "Program") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectExpression$3(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectMethod(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectMethod") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectProperty$3(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isRestElement$2(node, opts) {
    if (!node) return false;
    if (node.type !== "RestElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isReturnStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "ReturnStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSequenceExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "SequenceExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isParenthesizedExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ParenthesizedExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSwitchCase(node, opts) {
    if (!node) return false;
    if (node.type !== "SwitchCase") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSwitchStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "SwitchStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isThisExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ThisExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isThrowStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "ThrowStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTryStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "TryStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isUnaryExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "UnaryExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isUpdateExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "UpdateExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isVariableDeclaration$3(node, opts) {
    if (!node) return false;
    if (node.type !== "VariableDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isVariableDeclarator(node, opts) {
    if (!node) return false;
    if (node.type !== "VariableDeclarator") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isWhileStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "WhileStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isWithStatement(node, opts) {
    if (!node) return false;
    if (node.type !== "WithStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isAssignmentPattern$4(node, opts) {
    if (!node) return false;
    if (node.type !== "AssignmentPattern") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isArrayPattern(node, opts) {
    if (!node) return false;
    if (node.type !== "ArrayPattern") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isArrowFunctionExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "ArrowFunctionExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassBody$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassDeclaration$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportAllDeclaration$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportAllDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportDefaultDeclaration$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportDefaultDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportNamedDeclaration$3(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportNamedDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportSpecifier(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isForOfStatement$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ForOfStatement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportDeclaration$3(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportDefaultSpecifier$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportDefaultSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportNamespaceSpecifier$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportNamespaceSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportSpecifier$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isMetaProperty$1(node, opts) {
    if (!node) return false;
    if (node.type !== "MetaProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassMethod(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassMethod") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectPattern$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectPattern") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSpreadElement$1(node, opts) {
    if (!node) return false;
    if (node.type !== "SpreadElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSuper$3(node, opts) {
    if (!node) return false;
    if (node.type !== "Super") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTaggedTemplateExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TaggedTemplateExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTemplateElement(node, opts) {
    if (!node) return false;
    if (node.type !== "TemplateElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTemplateLiteral$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TemplateLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isYieldExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "YieldExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isAwaitExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "AwaitExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImport(node, opts) {
    if (!node) return false;
    if (node.type !== "Import") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBigIntLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "BigIntLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportNamespaceSpecifier$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportNamespaceSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isOptionalMemberExpression$3(node, opts) {
    if (!node) return false;
    if (node.type !== "OptionalMemberExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isOptionalCallExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "OptionalCallExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassAccessorProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassAccessorProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassPrivateProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassPrivateProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassPrivateMethod(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassPrivateMethod") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isPrivateName$3(node, opts) {
    if (!node) return false;
    if (node.type !== "PrivateName") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isStaticBlock(node, opts) {
    if (!node) return false;
    if (node.type !== "StaticBlock") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isAnyTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "AnyTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isArrayTypeAnnotation$2(node, opts) {
    if (!node) return false;
    if (node.type !== "ArrayTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBooleanTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "BooleanTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBooleanLiteralTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "BooleanLiteralTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNullLiteralTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "NullLiteralTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isClassImplements(node, opts) {
    if (!node) return false;
    if (node.type !== "ClassImplements") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareClass(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareClass") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareFunction(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareFunction") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareInterface(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareInterface") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareModule(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareModule") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareModuleExports(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareModuleExports") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareTypeAlias(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareTypeAlias") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareOpaqueType(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareOpaqueType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareVariable(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareVariable") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareExportDeclaration$1(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareExportDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclareExportAllDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclareExportAllDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclaredPredicate(node, opts) {
    if (!node) return false;
    if (node.type !== "DeclaredPredicate") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExistsTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "ExistsTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isFunctionTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "FunctionTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isFunctionTypeParam(node, opts) {
    if (!node) return false;
    if (node.type !== "FunctionTypeParam") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isGenericTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "GenericTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isInferredPredicate(node, opts) {
    if (!node) return false;
    if (node.type !== "InferredPredicate") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isInterfaceExtends(node, opts) {
    if (!node) return false;
    if (node.type !== "InterfaceExtends") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isInterfaceDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "InterfaceDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isInterfaceTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "InterfaceTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isIntersectionTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "IntersectionTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isMixedTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "MixedTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEmptyTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "EmptyTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNullableTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "NullableTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNumberLiteralTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "NumberLiteralTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNumberTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "NumberTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeInternalSlot(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeInternalSlot") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeCallProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeCallProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeIndexer(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeIndexer") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectTypeSpreadProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "ObjectTypeSpreadProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isOpaqueType(node, opts) {
    if (!node) return false;
    if (node.type !== "OpaqueType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isQualifiedTypeIdentifier(node, opts) {
    if (!node) return false;
    if (node.type !== "QualifiedTypeIdentifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isStringLiteralTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "StringLiteralTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isStringTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "StringTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSymbolTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "SymbolTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isThisTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "ThisTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTupleTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TupleTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeofTypeAnnotation(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeofTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeAlias(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeAlias") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeCastExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeCastExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeParameter(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeParameter") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeParameterDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeParameterDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeParameterInstantiation(node, opts) {
    if (!node) return false;
    if (node.type !== "TypeParameterInstantiation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isUnionTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "UnionTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isVariance(node, opts) {
    if (!node) return false;
    if (node.type !== "Variance") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isVoidTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "VoidTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumBooleanBody(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumBooleanBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumNumberBody(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumNumberBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumStringBody(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumStringBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumSymbolBody(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumSymbolBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumBooleanMember(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumBooleanMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumNumberMember(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumNumberMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumStringMember(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumStringMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumDefaultedMember(node, opts) {
    if (!node) return false;
    if (node.type !== "EnumDefaultedMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isIndexedAccessType$1(node, opts) {
    if (!node) return false;
    if (node.type !== "IndexedAccessType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isOptionalIndexedAccessType(node, opts) {
    if (!node) return false;
    if (node.type !== "OptionalIndexedAccessType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXAttribute(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXAttribute") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXClosingElement(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXClosingElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXElement(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXEmptyExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXEmptyExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXExpressionContainer$1(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXExpressionContainer") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXSpreadChild(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXSpreadChild") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXIdentifier$3(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXIdentifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXMemberExpression$2(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXMemberExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXNamespacedName$1(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXNamespacedName") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXOpeningElement(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXOpeningElement") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXSpreadAttribute$1(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXSpreadAttribute") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXText(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXText") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXFragment(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXFragment") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXOpeningFragment(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXOpeningFragment") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isJSXClosingFragment(node, opts) {
    if (!node) return false;
    if (node.type !== "JSXClosingFragment") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isNoop(node, opts) {
    if (!node) return false;
    if (node.type !== "Noop") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isPlaceholder$1(node, opts) {
    if (!node) return false;
    if (node.type !== "Placeholder") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isV8IntrinsicIdentifier(node, opts) {
    if (!node) return false;
    if (node.type !== "V8IntrinsicIdentifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isArgumentPlaceholder(node, opts) {
    if (!node) return false;
    if (node.type !== "ArgumentPlaceholder") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isBindExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "BindExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isImportAttribute(node, opts) {
    if (!node) return false;
    if (node.type !== "ImportAttribute") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDecorator$1(node, opts) {
    if (!node) return false;
    if (node.type !== "Decorator") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDoExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "DoExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isExportDefaultSpecifier$1(node, opts) {
    if (!node) return false;
    if (node.type !== "ExportDefaultSpecifier") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isRecordExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "RecordExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTupleExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TupleExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isDecimalLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "DecimalLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isModuleExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "ModuleExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTopicReference$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TopicReference") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isPipelineTopicExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "PipelineTopicExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isPipelineBareFunction(node, opts) {
    if (!node) return false;
    if (node.type !== "PipelineBareFunction") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isPipelinePrimaryTopicReference(node, opts) {
    if (!node) return false;
    if (node.type !== "PipelinePrimaryTopicReference") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSParameterProperty(node, opts) {
    if (!node) return false;
    if (node.type !== "TSParameterProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSDeclareFunction(node, opts) {
    if (!node) return false;
    if (node.type !== "TSDeclareFunction") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSDeclareMethod(node, opts) {
    if (!node) return false;
    if (node.type !== "TSDeclareMethod") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSQualifiedName(node, opts) {
    if (!node) return false;
    if (node.type !== "TSQualifiedName") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSCallSignatureDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSCallSignatureDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSConstructSignatureDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSConstructSignatureDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSPropertySignature(node, opts) {
    if (!node) return false;
    if (node.type !== "TSPropertySignature") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSMethodSignature(node, opts) {
    if (!node) return false;
    if (node.type !== "TSMethodSignature") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSIndexSignature(node, opts) {
    if (!node) return false;
    if (node.type !== "TSIndexSignature") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSAnyKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSAnyKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSBooleanKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSBooleanKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSBigIntKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSBigIntKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSIntrinsicKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSIntrinsicKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNeverKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNeverKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNullKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNullKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNumberKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNumberKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSObjectKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSObjectKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSStringKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSStringKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSSymbolKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSSymbolKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSUndefinedKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSUndefinedKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSUnknownKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSUnknownKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSVoidKeyword(node, opts) {
    if (!node) return false;
    if (node.type !== "TSVoidKeyword") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSThisType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSThisType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSFunctionType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSFunctionType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSConstructorType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSConstructorType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeReference$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeReference") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypePredicate(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypePredicate") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeQuery(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeQuery") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeLiteral(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSArrayType$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSArrayType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTupleType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTupleType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSOptionalType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSOptionalType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSRestType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSRestType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNamedTupleMember(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNamedTupleMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSUnionType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSUnionType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSIntersectionType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSIntersectionType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSConditionalType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSConditionalType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSInferType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSInferType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSParenthesizedType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSParenthesizedType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeOperator(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeOperator") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSIndexedAccessType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSIndexedAccessType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSMappedType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSMappedType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSLiteralType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSLiteralType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSExpressionWithTypeArguments(node, opts) {
    if (!node) return false;
    if (node.type !== "TSExpressionWithTypeArguments") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSInterfaceDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSInterfaceDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSInterfaceBody$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSInterfaceBody") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeAliasDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeAliasDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSInstantiationExpression(node, opts) {
    if (!node) return false;
    if (node.type !== "TSInstantiationExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSAsExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSAsExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSSatisfiesExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSSatisfiesExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeAssertion$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeAssertion") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSEnumDeclaration$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSEnumDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSEnumMember(node, opts) {
    if (!node) return false;
    if (node.type !== "TSEnumMember") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSModuleDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSModuleDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSModuleBlock(node, opts) {
    if (!node) return false;
    if (node.type !== "TSModuleBlock") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSImportType(node, opts) {
    if (!node) return false;
    if (node.type !== "TSImportType") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSImportEqualsDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSImportEqualsDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSExternalModuleReference(node, opts) {
    if (!node) return false;
    if (node.type !== "TSExternalModuleReference") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNonNullExpression$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNonNullExpression") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSExportAssignment(node, opts) {
    if (!node) return false;
    if (node.type !== "TSExportAssignment") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSNamespaceExportDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSNamespaceExportDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeAnnotation$1(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeAnnotation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeParameterInstantiation(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeParameterInstantiation") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeParameterDeclaration(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeParameterDeclaration") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isTSTypeParameter(node, opts) {
    if (!node) return false;
    if (node.type !== "TSTypeParameter") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isStandardized(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode) {
          case "Identifier":
          case "StringLiteral":
          case "BlockStatement":
          case "ClassBody":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isExpression$4(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode) {
          case "Expression":
          case "Identifier":
          case "StringLiteral":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isBinary$2(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "BinaryExpression":
      case "LogicalExpression":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isScopable(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isBlockParent(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isBlock(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "BlockStatement":
      case "Program":
      case "TSModuleBlock":
        break;
      case "Placeholder":
        if (node.expectedNode === "BlockStatement") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isStatement$9(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode) {
          case "Statement":
          case "Declaration":
          case "BlockStatement":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isTerminatorless(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "BreakStatement":
      case "ContinueStatement":
      case "ReturnStatement":
      case "ThrowStatement":
      case "YieldExpression":
      case "AwaitExpression":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isCompletionStatement(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "BreakStatement":
      case "ContinueStatement":
      case "ReturnStatement":
      case "ThrowStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isConditional(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ConditionalExpression":
      case "IfStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isLoop$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "DoWhileStatement":
      case "ForInStatement":
      case "ForStatement":
      case "WhileStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isWhile(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "DoWhileStatement":
      case "WhileStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isExpressionWrapper(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ExpressionStatement":
      case "ParenthesizedExpression":
      case "TypeCastExpression":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isFor$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ForInStatement":
      case "ForStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isForXStatement$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ForInStatement":
      case "ForOfStatement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isFunction$5(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "ObjectMethod":
      case "ArrowFunctionExpression":
      case "ClassMethod":
      case "ClassPrivateMethod":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isFunctionParent(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "FunctionDeclaration":
      case "FunctionExpression":
      case "ObjectMethod":
      case "ArrowFunctionExpression":
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "StaticBlock":
      case "TSModuleBlock":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isPureish$2(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode === "StringLiteral") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isDeclaration(node, opts) {
    if (!node) return false;
    switch (node.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":
        break;
      case "Placeholder":
        if (node.expectedNode === "Declaration") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isPatternLike(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "Identifier":
      case "RestElement":
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ObjectPattern":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      case "TSNonNullExpression":
        break;
      case "Placeholder":
        switch (node.expectedNode) {
          case "Pattern":
          case "Identifier":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isLVal(node, opts) {
    if (!node) return false;
    switch (node.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 (node.expectedNode) {
          case "Pattern":
          case "Identifier":
            break;
          default:
            return false;
        }
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isTSEntityName(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "Identifier":
      case "TSQualifiedName":
        break;
      case "Placeholder":
        if (node.expectedNode === "Identifier") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isLiteral$5(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "StringLiteral":
      case "NumericLiteral":
      case "NullLiteral":
      case "BooleanLiteral":
      case "RegExpLiteral":
      case "TemplateLiteral":
      case "BigIntLiteral":
      case "DecimalLiteral":
        break;
      case "Placeholder":
        if (node.expectedNode === "StringLiteral") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isUserWhitespacable(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ObjectMethod":
      case "ObjectProperty":
      case "ObjectTypeInternalSlot":
      case "ObjectTypeCallProperty":
      case "ObjectTypeIndexer":
      case "ObjectTypeProperty":
      case "ObjectTypeSpreadProperty":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isMethod$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ObjectMethod":
      case "ClassMethod":
      case "ClassPrivateMethod":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isObjectMember(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ObjectMethod":
      case "ObjectProperty":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isProperty$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ObjectProperty":
      case "ClassProperty":
      case "ClassAccessorProperty":
      case "ClassPrivateProperty":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isUnaryLike(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "UnaryExpression":
      case "SpreadElement":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isPattern(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "AssignmentPattern":
      case "ArrayPattern":
      case "ObjectPattern":
        break;
      case "Placeholder":
        if (node.expectedNode === "Pattern") break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isClass$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ClassExpression":
      case "ClassDeclaration":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isImportOrExportDeclaration(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
      case "ImportDeclaration":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isExportDeclaration$2(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ExportAllDeclaration":
      case "ExportDefaultDeclaration":
      case "ExportNamedDeclaration":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isModuleSpecifier$1(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ExportSpecifier":
      case "ImportDefaultSpecifier":
      case "ImportNamespaceSpecifier":
      case "ImportSpecifier":
      case "ExportNamespaceSpecifier":
      case "ExportDefaultSpecifier":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isAccessor(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ClassAccessorProperty":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isPrivate(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "ClassPrivateProperty":
      case "ClassPrivateMethod":
      case "PrivateName":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isFlow$1(node, opts) {
    if (!node) return false;
    switch (node.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 opts == null || shallowEqual(node, opts);
  }
  function isFlowType$1(node, opts) {
    if (!node) return false;
    switch (node.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 opts == null || shallowEqual(node, opts);
  }
  function isFlowBaseAnnotation$1(node, opts) {
    if (!node) return false;
    switch (node.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 opts == null || shallowEqual(node, opts);
  }
  function isFlowDeclaration(node, opts) {
    if (!node) return false;
    switch (node.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 opts == null || shallowEqual(node, opts);
  }
  function isFlowPredicate(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "DeclaredPredicate":
      case "InferredPredicate":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumBody(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "EnumBooleanBody":
      case "EnumNumberBody":
      case "EnumStringBody":
      case "EnumSymbolBody":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isEnumMember(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "EnumBooleanMember":
      case "EnumNumberMember":
      case "EnumStringMember":
      case "EnumDefaultedMember":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isJSX(node, opts) {
    if (!node) return false;
    switch (node.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 opts == null || shallowEqual(node, opts);
  }
  function isMiscellaneous(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "Noop":
      case "Placeholder":
      case "V8IntrinsicIdentifier":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isTypeScript(node, opts) {
    if (!node) return false;
    switch (node.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 "TSLiteralType":
      case "TSExpressionWithTypeArguments":
      case "TSInterfaceDeclaration":
      case "TSInterfaceBody":
      case "TSTypeAliasDeclaration":
      case "TSInstantiationExpression":
      case "TSAsExpression":
      case "TSSatisfiesExpression":
      case "TSTypeAssertion":
      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 opts == null || shallowEqual(node, opts);
  }
  function isTSTypeElement(node, opts) {
    if (!node) return false;
    switch (node.type) {
      case "TSCallSignatureDeclaration":
      case "TSConstructSignatureDeclaration":
      case "TSPropertySignature":
      case "TSMethodSignature":
      case "TSIndexSignature":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isTSType$1(node, opts) {
    if (!node) return false;
    switch (node.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 "TSLiteralType":
      case "TSExpressionWithTypeArguments":
      case "TSImportType":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isTSBaseType(node, opts) {
    if (!node) return false;
    switch (node.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 "TSLiteralType":
        break;
      default:
        return false;
    }
    return opts == null || shallowEqual(node, opts);
  }
  function isNumberLiteral(node, opts) {
    deprecationWarning$1("isNumberLiteral", "isNumericLiteral");
    if (!node) return false;
    if (node.type !== "NumberLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isRegexLiteral(node, opts) {
    deprecationWarning$1("isRegexLiteral", "isRegExpLiteral");
    if (!node) return false;
    if (node.type !== "RegexLiteral") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isRestProperty$1(node, opts) {
    deprecationWarning$1("isRestProperty", "isRestElement");
    if (!node) return false;
    if (node.type !== "RestProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isSpreadProperty$1(node, opts) {
    deprecationWarning$1("isSpreadProperty", "isSpreadElement");
    if (!node) return false;
    if (node.type !== "SpreadProperty") return false;
    return opts == null || shallowEqual(node, opts);
  }
  function isModuleDeclaration(node, opts) {
    deprecationWarning$1("isModuleDeclaration", "isImportOrExportDeclaration");
    return isImportOrExportDeclaration(node, opts);
  }

  function matchesPattern$2(member, match, allowPartial) {
    if (!isMemberExpression$8(member)) return false;
    var parts = Array.isArray(match) ? match : match.split(".");
    var nodes = [];
    var node;
    for (node = member; isMemberExpression$8(node); node = node.object) {
      nodes.push(node.property);
    }
    nodes.push(node);
    if (nodes.length < parts.length) return false;
    if (!allowPartial && nodes.length > parts.length) return false;
    for (var i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
      var _node = nodes[j];
      var value = void 0;
      if (isIdentifier$f(_node)) {
        value = _node.name;
      } else if (isStringLiteral$5(_node)) {
        value = _node.value;
      } else if (isThisExpression$2(_node)) {
        value = "this";
      } else {
        return false;
      }
      if (parts[i] !== value) return false;
    }
    return true;
  }

  function buildMatchMemberExpression$1(match, allowPartial) {
    var parts = match.split(".");
    return function (member) {
      return matchesPattern$2(member, parts, allowPartial);
    };
  }

  var isReactComponent = buildMatchMemberExpression$1("React.Component");

  function isCompatTag$1(tagName) {
    return !!tagName && /^[a-z]/.test(tagName);
  }

  var global$1 = (typeof global !== "undefined" ? global :
    typeof self !== "undefined" ? self :
    typeof window !== "undefined" ? window : {});

  // shim for using process in browser
  // based off https://github.com/defunctzombie/node-process/blob/master/browser.js

  function defaultSetTimout() {
      throw new Error('setTimeout has not been defined');
  }
  function defaultClearTimeout () {
      throw new Error('clearTimeout has not been defined');
  }
  var cachedSetTimeout = defaultSetTimout;
  var cachedClearTimeout = defaultClearTimeout;
  if (typeof global$1.setTimeout === 'function') {
      cachedSetTimeout = setTimeout;
  }
  if (typeof global$1.clearTimeout === 'function') {
      cachedClearTimeout = clearTimeout;
  }

  function runTimeout(fun) {
      if (cachedSetTimeout === setTimeout) {
          //normal enviroments in sane situations
          return setTimeout(fun, 0);
      }
      // if setTimeout wasn't available but was latter defined
      if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
          cachedSetTimeout = setTimeout;
          return setTimeout(fun, 0);
      }
      try {
          // when when somebody has screwed with setTimeout but no I.E. maddness
          return cachedSetTimeout(fun, 0);
      } catch(e){
          try {
              // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
              return cachedSetTimeout.call(null, fun, 0);
          } catch(e){
              // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
              return cachedSetTimeout.call(this, fun, 0);
          }
      }


  }
  function runClearTimeout(marker) {
      if (cachedClearTimeout === clearTimeout) {
          //normal enviroments in sane situations
          return clearTimeout(marker);
      }
      // if clearTimeout wasn't available but was latter defined
      if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
          cachedClearTimeout = clearTimeout;
          return clearTimeout(marker);
      }
      try {
          // when when somebody has screwed with setTimeout but no I.E. maddness
          return cachedClearTimeout(marker);
      } catch (e){
          try {
              // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
              return cachedClearTimeout.call(null, marker);
          } catch (e){
              // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
              // Some versions of I.E. have different rules for clearTimeout vs setTimeout
              return cachedClearTimeout.call(this, marker);
          }
      }



  }
  var queue = [];
  var draining = false;
  var currentQueue;
  var queueIndex = -1;

  function cleanUpNextTick() {
      if (!draining || !currentQueue) {
          return;
      }
      draining = false;
      if (currentQueue.length) {
          queue = currentQueue.concat(queue);
      } else {
          queueIndex = -1;
      }
      if (queue.length) {
          drainQueue();
      }
  }

  function drainQueue() {
      if (draining) {
          return;
      }
      var timeout = runTimeout(cleanUpNextTick);
      draining = true;

      var len = queue.length;
      while(len) {
          currentQueue = queue;
          queue = [];
          while (++queueIndex < len) {
              if (currentQueue) {
                  currentQueue[queueIndex].run();
              }
          }
          queueIndex = -1;
          len = queue.length;
      }
      currentQueue = null;
      draining = false;
      runClearTimeout(timeout);
  }
  function nextTick(fun) {
      var args = new Array(arguments.length - 1);
      if (arguments.length > 1) {
          for (var i = 1; i < arguments.length; i++) {
              args[i - 1] = arguments[i];
          }
      }
      queue.push(new Item(fun, args));
      if (queue.length === 1 && !draining) {
          runTimeout(drainQueue);
      }
  }
  // v8 likes predictible objects
  function Item(fun, array) {
      this.fun = fun;
      this.array = array;
  }
  Item.prototype.run = function () {
      this.fun.apply(null, this.array);
  };
  var title = 'browser';
  var platform = 'browser';
  var browser$3 = true;
  var env$1 = {};
  var argv = [];
  var version$2 = ''; // empty string to avoid regexp issues
  var versions$2 = {};
  var release = {};
  var config$1 = {};

  function noop$2() {}

  var on = noop$2;
  var addListener = noop$2;
  var once$1 = noop$2;
  var off = noop$2;
  var removeListener = noop$2;
  var removeAllListeners = noop$2;
  var emit$1 = noop$2;

  function binding(name) {
      throw new Error('process.binding is not supported');
  }

  function cwd () { return '/' }
  function chdir (dir) {
      throw new Error('process.chdir is not supported');
  }function umask() { return 0; }

  // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
  var performance = global$1.performance || {};
  var performanceNow =
    performance.now        ||
    performance.mozNow     ||
    performance.msNow      ||
    performance.oNow       ||
    performance.webkitNow  ||
    function(){ return (new Date()).getTime() };

  // generate timestamp or delta
  // see http://nodejs.org/api/process.html#process_process_hrtime
  function hrtime(previousTimestamp){
    var clocktime = performanceNow.call(performance)*1e-3;
    var seconds = Math.floor(clocktime);
    var nanoseconds = Math.floor((clocktime%1)*1e9);
    if (previousTimestamp) {
      seconds = seconds - previousTimestamp[0];
      nanoseconds = nanoseconds - previousTimestamp[1];
      if (nanoseconds<0) {
        seconds--;
        nanoseconds += 1e9;
      }
    }
    return [seconds,nanoseconds]
  }

  var startTime = new Date();
  function uptime() {
    var currentTime = new Date();
    var dif = currentTime - startTime;
    return dif / 1000;
  }

  var browser$1$1 = {
    nextTick: nextTick,
    title: title,
    browser: browser$3,
    env: env$1,
    argv: argv,
    version: version$2,
    versions: versions$2,
    on: on,
    addListener: addListener,
    once: once$1,
    off: off,
    removeListener: removeListener,
    removeAllListeners: removeAllListeners,
    emit: emit$1,
    binding: binding,
    cwd: cwd,
    chdir: chdir,
    umask: umask,
    hrtime: hrtime,
    platform: platform,
    release: release,
    config: config$1,
    uptime: uptime
  };

  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

  function getAugmentedNamespace(n) {
    if (n.__esModule) return n;
    var f = n.default;
  	if (typeof f == "function") {
  		var a = function a () {
  			if (this instanceof a) {
          return Reflect.construct(f, arguments, this.constructor);
  			}
  			return f.apply(this, arguments);
  		};
  		a.prototype = f.prototype;
    } else a = {};
    Object.defineProperty(a, '__esModule', {value: true});
  	Object.keys(n).forEach(function (k) {
  		var d = Object.getOwnPropertyDescriptor(n, k);
  		Object.defineProperty(a, k, d.get ? d : {
  			enumerable: true,
  			get: function () {
  				return n[k];
  			}
  		});
  	});
  	return a;
  }

  var toFastPropertiesBABEL_8_BREAKINGFalse;
  var hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse;
  function requireToFastPropertiesBABEL_8_BREAKINGFalse() {
    if (hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse) return toFastPropertiesBABEL_8_BREAKINGFalse;
    hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse = 1;
    var fastProto = null;
    function FastObject(o) {
      if (fastProto !== null && typeof fastProto.property) {
        var result = fastProto;
        fastProto = FastObject.prototype = null;
        return result;
      }
      fastProto = FastObject.prototype = o == null ? Object.create(null) : o;
      return new FastObject();
    }
    FastObject();
    toFastPropertiesBABEL_8_BREAKINGFalse = function toFastproperties(o) {
      return FastObject(o);
    };
    return toFastPropertiesBABEL_8_BREAKINGFalse;
  }

  function bool$c(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var toFastProperties = bool$c(browser$1$1.env["BABEL_8_BREAKING"]) ? requireToFastPropertiesBABEL_8_BREAKINGFalse() : requireToFastPropertiesBABEL_8_BREAKINGFalse();

  function isType$2(nodeType, targetType) {
    if (nodeType === targetType) return true;
    if (nodeType == null) return false;
    if (ALIAS_KEYS[targetType]) return false;
    var aliases = FLIPPED_ALIAS_KEYS$3[targetType];
    if (aliases) {
      if (aliases[0] === nodeType) return true;
      for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
        var alias = _step.value;
        if (nodeType === alias) return true;
      }
    }
    return false;
  }

  function isPlaceholderType(placeholderType, targetType) {
    if (placeholderType === targetType) return true;
    var aliases = PLACEHOLDERS_ALIAS[placeholderType];
    if (aliases) {
      for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
        var alias = _step.value;
        if (targetType === alias) return true;
      }
    }
    return false;
  }

  function is(type, node, opts) {
    if (!node) return false;
    var matches = isType$2(node.type, type);
    if (!matches) {
      if (!opts && node.type === "Placeholder" && type in FLIPPED_ALIAS_KEYS$3) {
        return isPlaceholderType(node.expectedNode, type);
      }
      return false;
    }
    if (typeof opts === "undefined") {
      return true;
    } else {
      return shallowEqual(node, opts);
    }
  }

  var nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\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-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\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";
  var nonASCIIidentifierChars = "\u200C\u200D\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\u0898-\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";
  var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
  var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
  nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
  var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 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, 349, 41, 7, 1, 79, 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, 159, 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, 264, 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, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 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, 757, 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];
  var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 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, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 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, 406, 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, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 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, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
  function isInAstralSet(code, set) {
    var pos = 0x10000;
    for (var i = 0, length = set.length; i < length; i += 2) {
      pos += set[i];
      if (pos > code) return false;
      pos += set[i + 1];
      if (pos >= code) return true;
    }
    return false;
  }
  function isIdentifierStart(code) {
    if (code < 65) return code === 36;
    if (code <= 90) return true;
    if (code < 97) return code === 95;
    if (code <= 122) return true;
    if (code <= 0xffff) {
      return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
    }
    return isInAstralSet(code, astralIdentifierStartCodes);
  }
  function isIdentifierChar(code) {
    if (code < 48) return code === 36;
    if (code < 58) return true;
    if (code < 65) return false;
    if (code <= 90) return true;
    if (code < 97) return code === 95;
    if (code <= 122) return true;
    if (code <= 0xffff) {
      return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
    }
    return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
  }
  function isIdentifierName(name) {
    var isFirst = true;
    for (var i = 0; i < name.length; i++) {
      var cp = name.charCodeAt(i);
      if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
        var trail = name.charCodeAt(++i);
        if ((trail & 0xfc00) === 0xdc00) {
          cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
        }
      }
      if (isFirst) {
        isFirst = false;
        if (!isIdentifierStart(cp)) {
          return false;
        }
      } else if (!isIdentifierChar(cp)) {
        return false;
      }
    }
    return !isFirst;
  }

  var reservedWords = {
    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"]
  };
  var keywords$1 = new Set(reservedWords.keyword);
  var reservedWordsStrictSet = new Set(reservedWords.strict);
  var reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
  function isReservedWord(word, inModule) {
    return inModule && word === "await" || word === "enum";
  }
  function isStrictReservedWord(word, inModule) {
    return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
  }
  function isStrictBindOnlyReservedWord(word) {
    return reservedWordsStrictBindSet.has(word);
  }
  function isStrictBindReservedWord(word, inModule) {
    return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
  }
  function isKeyword(word) {
    return keywords$1.has(word);
  }

  function isValidIdentifier$1(name, reserved) {
    if (reserved === void 0) {
      reserved = true;
    }
    if (typeof name !== "string") return false;
    if (reserved) {
      if (isKeyword(name) || isStrictReservedWord(name, true)) {
        return false;
      }
    }
    return isIdentifierName(name);
  }

  var _isDigit = function isDigit(code) {
    return code >= 48 && code <= 57;
  };
  var forbiddenNumericSeparatorSiblings = {
    decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
    hex: new Set([46, 88, 95, 120])
  };
  var isAllowedNumericSeparatorSibling = {
    bin: function bin(ch) {
      return ch === 48 || ch === 49;
    },
    oct: function oct(ch) {
      return ch >= 48 && ch <= 55;
    },
    dec: function dec(ch) {
      return ch >= 48 && ch <= 57;
    },
    hex: function hex(ch) {
      return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
    }
  };
  function readStringContents(type, input, pos, lineStart, curLine, errors) {
    var initialPos = pos;
    var initialLineStart = lineStart;
    var initialCurLine = curLine;
    var out = "";
    var firstInvalidLoc = null;
    var chunkStart = pos;
    var length = input.length;
    for (;;) {
      if (pos >= length) {
        errors.unterminated(initialPos, initialLineStart, initialCurLine);
        out += input.slice(chunkStart, pos);
        break;
      }
      var ch = input.charCodeAt(pos);
      if (isStringEnd(type, ch, input, pos)) {
        out += input.slice(chunkStart, pos);
        break;
      }
      if (ch === 92) {
        out += input.slice(chunkStart, pos);
        var res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
        if (res.ch === null && !firstInvalidLoc) {
          firstInvalidLoc = {
            pos: pos,
            lineStart: lineStart,
            curLine: curLine
          };
        } else {
          out += res.ch;
        }
        pos = res.pos;
        lineStart = res.lineStart;
        curLine = res.curLine;
        chunkStart = pos;
      } else if (ch === 8232 || ch === 8233) {
        ++pos;
        ++curLine;
        lineStart = pos;
      } else if (ch === 10 || ch === 13) {
        if (type === "template") {
          out += input.slice(chunkStart, pos) + "\n";
          ++pos;
          if (ch === 13 && input.charCodeAt(pos) === 10) {
            ++pos;
          }
          ++curLine;
          chunkStart = lineStart = pos;
        } else {
          errors.unterminated(initialPos, initialLineStart, initialCurLine);
        }
      } else {
        ++pos;
      }
    }
    return {
      pos: pos,
      str: out,
      firstInvalidLoc: firstInvalidLoc,
      lineStart: lineStart,
      curLine: curLine,
      containsInvalid: !!firstInvalidLoc
    };
  }
  function isStringEnd(type, ch, input, pos) {
    if (type === "template") {
      return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
    }
    return ch === (type === "double" ? 34 : 39);
  }
  function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
    var throwOnInvalid = !inTemplate;
    pos++;
    var res = function res(ch) {
      return {
        pos: pos,
        ch: ch,
        lineStart: lineStart,
        curLine: curLine
      };
    };
    var ch = input.charCodeAt(pos++);
    switch (ch) {
      case 110:
        return res("\n");
      case 114:
        return res("\r");
      case 120:
        {
          var code;
          var _readHexChar = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors);
          code = _readHexChar.code;
          pos = _readHexChar.pos;
          return res(code === null ? null : String.fromCharCode(code));
        }
      case 117:
        {
          var _code;
          var _readCodePoint = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors);
          _code = _readCodePoint.code;
          pos = _readCodePoint.pos;
          return res(_code === null ? null : String.fromCodePoint(_code));
        }
      case 116:
        return res("\t");
      case 98:
        return res("\b");
      case 118:
        return res("\x0B");
      case 102:
        return res("\f");
      case 13:
        if (input.charCodeAt(pos) === 10) {
          ++pos;
        }
      case 10:
        lineStart = pos;
        ++curLine;
      case 8232:
      case 8233:
        return res("");
      case 56:
      case 57:
        if (inTemplate) {
          return res(null);
        } else {
          errors.strictNumericEscape(pos - 1, lineStart, curLine);
        }
      default:
        if (ch >= 48 && ch <= 55) {
          var startPos = pos - 1;
          var match = /^[0-7]+/.exec(input.slice(startPos, pos + 2));
          var octalStr = match[0];
          var octal = parseInt(octalStr, 8);
          if (octal > 255) {
            octalStr = octalStr.slice(0, -1);
            octal = parseInt(octalStr, 8);
          }
          pos += octalStr.length - 1;
          var next = input.charCodeAt(pos);
          if (octalStr !== "0" || next === 56 || next === 57) {
            if (inTemplate) {
              return res(null);
            } else {
              errors.strictNumericEscape(startPos, lineStart, curLine);
            }
          }
          return res(String.fromCharCode(octal));
        }
        return res(String.fromCharCode(ch));
    }
  }
  function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
    var initialPos = pos;
    var n;
    var _readInt = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid);
    n = _readInt.n;
    pos = _readInt.pos;
    if (n === null) {
      if (throwOnInvalid) {
        errors.invalidEscapeSequence(initialPos, lineStart, curLine);
      } else {
        pos = initialPos - 1;
      }
    }
    return {
      code: n,
      pos: pos
    };
  }
  function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
    var start = pos;
    var forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
    var isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
    var invalid = false;
    var total = 0;
    for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {
      var code = input.charCodeAt(pos);
      var val = void 0;
      if (code === 95 && allowNumSeparator !== "bail") {
        var prev = input.charCodeAt(pos - 1);
        var next = input.charCodeAt(pos + 1);
        if (!allowNumSeparator) {
          if (bailOnError) return {
            n: null,
            pos: pos
          };
          errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
        } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
          if (bailOnError) return {
            n: null,
            pos: pos
          };
          errors.unexpectedNumericSeparator(pos, lineStart, curLine);
        }
        ++pos;
        continue;
      }
      if (code >= 97) {
        val = code - 97 + 10;
      } else if (code >= 65) {
        val = code - 65 + 10;
      } else if (_isDigit(code)) {
        val = code - 48;
      } else {
        val = Infinity;
      }
      if (val >= radix) {
        if (val <= 9 && bailOnError) {
          return {
            n: null,
            pos: pos
          };
        } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
          val = 0;
        } else if (forceLen) {
          val = 0;
          invalid = true;
        } else {
          break;
        }
      }
      ++pos;
      total = total * radix + val;
    }
    if (pos === start || len != null && pos - start !== len || invalid) {
      return {
        n: null,
        pos: pos
      };
    }
    return {
      n: total,
      pos: pos
    };
  }
  function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
    var ch = input.charCodeAt(pos);
    var code;
    if (ch === 123) {
      ++pos;
      var _readHexChar2 = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors);
      code = _readHexChar2.code;
      pos = _readHexChar2.pos;
      ++pos;
      if (code !== null && code > 0x10ffff) {
        if (throwOnInvalid) {
          errors.invalidCodePoint(pos, lineStart, curLine);
        } else {
          return {
            code: null,
            pos: pos
          };
        }
      }
    } else {
      var _readHexChar3 = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors);
      code = _readHexChar3.code;
      pos = _readHexChar3.pos;
    }
    return {
      code: code,
      pos: pos
    };
  }

  var STATEMENT_OR_BLOCK_KEYS$1 = ["consequent", "body", "alternate"];
  var FLATTENABLE_KEYS = ["body", "expressions"];
  var FOR_INIT_KEYS = ["left", "init"];
  var COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
  var LOGICAL_OPERATORS$3 = ["||", "&&", "??"];
  var UPDATE_OPERATORS = ["++", "--"];
  var BOOLEAN_NUMBER_BINARY_OPERATORS$1 = [">", "<", ">=", "<="];
  var EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
  var COMPARISON_BINARY_OPERATORS = [].concat(EQUALITY_BINARY_OPERATORS, ["in", "instanceof"]);
  var BOOLEAN_BINARY_OPERATORS$1 = [].concat(_toConsumableArray(COMPARISON_BINARY_OPERATORS), BOOLEAN_NUMBER_BINARY_OPERATORS$1);
  var NUMBER_BINARY_OPERATORS$1 = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
  var BINARY_OPERATORS = ["+"].concat(NUMBER_BINARY_OPERATORS$1, _toConsumableArray(BOOLEAN_BINARY_OPERATORS$1), ["|>"]);
  var ASSIGNMENT_OPERATORS = ["=", "+="].concat(_toConsumableArray(NUMBER_BINARY_OPERATORS$1.map(function (op) {
    return op + "=";
  })), _toConsumableArray(LOGICAL_OPERATORS$3.map(function (op) {
    return op + "=";
  })));
  var BOOLEAN_UNARY_OPERATORS$1 = ["delete", "!"];
  var NUMBER_UNARY_OPERATORS$1 = ["+", "-", "~"];
  var STRING_UNARY_OPERATORS$1 = ["typeof"];
  var UNARY_OPERATORS = ["void", "throw"].concat(BOOLEAN_UNARY_OPERATORS$1, NUMBER_UNARY_OPERATORS$1, STRING_UNARY_OPERATORS$1);
  var INHERIT_KEYS = {
    optional: ["typeAnnotation", "typeParameters", "returnType"],
    force: ["start", "loc", "end"]
  };
  var BLOCK_SCOPED_SYMBOL = Symbol["for"]("var used to be block scoped");
  var NOT_LOCAL_BINDING$1 = Symbol["for"]("should not be considered a local binding");

  var VISITOR_KEYS$5 = {};
  var ALIAS_KEYS = {};
  var FLIPPED_ALIAS_KEYS$3 = {};
  var NODE_FIELDS = {};
  var BUILDER_KEYS = {};
  var DEPRECATED_KEYS$1 = {};
  var NODE_PARENT_VALIDATIONS = {};
  function getType$1(val) {
    if (Array.isArray(val)) {
      return "array";
    } else if (val === null) {
      return "null";
    } else {
      return typeof val;
    }
  }
  function validate$6(validate) {
    return {
      validate: validate
    };
  }
  function typeIs(typeName) {
    return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType.apply(void 0, _toConsumableArray(typeName));
  }
  function validateType(typeName) {
    return validate$6(typeIs(typeName));
  }
  function validateOptional(validate) {
    return {
      validate: validate,
      optional: true
    };
  }
  function validateOptionalType(typeName) {
    return {
      validate: typeIs(typeName),
      optional: true
    };
  }
  function arrayOf(elementType) {
    return chain$1(assertValueType("array"), assertEach(elementType));
  }
  function arrayOfType(typeName) {
    return arrayOf(typeIs(typeName));
  }
  function validateArrayOfType(typeName) {
    return validate$6(arrayOfType(typeName));
  }
  function assertEach(callback) {
    function validator(node, key, val) {
      if (!Array.isArray(val)) return;
      for (var i = 0; i < val.length; i++) {
        var subkey = key + "[" + i + "]";
        var v = val[i];
        callback(node, subkey, v);
        if (browser$1$1.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);
      }
    }
    validator.each = callback;
    return validator;
  }
  function assertOneOf() {
    for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
      values[_key] = arguments[_key];
    }
    function validate(node, key, val) {
      if (!values.includes(val)) {
        throw new TypeError("Property " + key + " expected value to be one of " + JSON.stringify(values) + " but got " + JSON.stringify(val));
      }
    }
    validate.oneOf = values;
    return validate;
  }
  function assertNodeType() {
    for (var _len2 = arguments.length, types = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
      types[_key2] = arguments[_key2];
    }
    function validate(node, key, val) {
      for (var _iterator = _createForOfIteratorHelperLoose(types), _step; !(_step = _iterator()).done;) {
        var type = _step.value;
        if (is(type, val)) {
          validateChild(node, key, val);
          return;
        }
      }
      throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " but instead got " + JSON.stringify(val == null ? void 0 : val.type));
    }
    validate.oneOfNodeTypes = types;
    return validate;
  }
  function assertNodeOrValueType() {
    for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
      types[_key3] = arguments[_key3];
    }
    function validate(node, key, val) {
      for (var _iterator2 = _createForOfIteratorHelperLoose(types), _step2; !(_step2 = _iterator2()).done;) {
        var type = _step2.value;
        if (getType$1(val) === type || is(type, val)) {
          validateChild(node, key, val);
          return;
        }
      }
      throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " but instead got " + JSON.stringify(val == null ? void 0 : val.type));
    }
    validate.oneOfNodeOrValueTypes = types;
    return validate;
  }
  function assertValueType(type) {
    function validate(node, key, val) {
      var valid = getType$1(val) === type;
      if (!valid) {
        throw new TypeError("Property " + key + " expected type of " + type + " but got " + getType$1(val));
      }
    }
    validate.type = type;
    return validate;
  }
  function assertShape(shape) {
    function validate(node, key, val) {
      var errors = [];
      for (var _i = 0, _Object$keys = Object.keys(shape); _i < _Object$keys.length; _i++) {
        var property = _Object$keys[_i];
        try {
          validateField(node, property, val[property], shape[property]);
        } catch (error) {
          if (error instanceof TypeError) {
            errors.push(error.message);
            continue;
          }
          throw error;
        }
      }
      if (errors.length) {
        throw new TypeError("Property " + key + " of " + node.type + " expected to have the following:\n" + errors.join("\n"));
      }
    }
    validate.shapeOf = shape;
    return validate;
  }
  function assertOptionalChainStart() {
    function validate(node) {
      var _current2;
      var current = node;
      while (node) {
        var _current = current,
          type = _current.type;
        if (type === "OptionalCallExpression") {
          if (current.optional) return;
          current = current.callee;
          continue;
        }
        if (type === "OptionalMemberExpression") {
          if (current.optional) return;
          current = current.object;
          continue;
        }
        break;
      }
      throw new TypeError("Non-optional " + node.type + " must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from " + ((_current2 = current) == null ? void 0 : _current2.type));
    }
    return validate;
  }
  function chain$1() {
    for (var _len4 = arguments.length, fns = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
      fns[_key4] = arguments[_key4];
    }
    function validate() {
      for (var _iterator3 = _createForOfIteratorHelperLoose(fns), _step3; !(_step3 = _iterator3()).done;) {
        var fn = _step3.value;
        fn.apply(void 0, arguments);
      }
    }
    validate.chainOf = fns;
    if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
      throw new Error("An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.");
    }
    return validate;
  }
  var validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"];
  var validFieldKeys = ["default", "optional", "deprecated", "validate"];
  var store = {};
  function defineAliasedType() {
    for (var _len5 = arguments.length, aliases = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
      aliases[_key5] = arguments[_key5];
    }
    return function (type, opts) {
      var _defined2;
      if (opts === void 0) {
        opts = {};
      }
      var defined = opts.aliases;
      if (!defined) {
        var _store$opts$inherits$, _defined;
        if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
        (_defined = defined) != null ? _defined : defined = [];
        opts.aliases = defined;
      }
      var additional = aliases.filter(function (a) {
        return !defined.includes(a);
      });
      (_defined2 = defined).unshift.apply(_defined2, _toConsumableArray(additional));
      defineType$5(type, opts);
    };
  }
  function defineType$5(type, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var inherits = opts.inherits && store[opts.inherits] || {};
    var fields = opts.fields;
    if (!fields) {
      fields = {};
      if (inherits.fields) {
        var keys = Object.getOwnPropertyNames(inherits.fields);
        for (var _iterator4 = _createForOfIteratorHelperLoose(keys), _step4; !(_step4 = _iterator4()).done;) {
          var _key6 = _step4.value;
          var field = inherits.fields[_key6];
          var def = field["default"];
          if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
            throw new Error("field defaults can only be primitives or empty arrays currently");
          }
          fields[_key6] = {
            "default": Array.isArray(def) ? [] : def,
            optional: field.optional,
            deprecated: field.deprecated,
            validate: field.validate
          };
        }
      }
    }
    var visitor = opts.visitor || inherits.visitor || [];
    var aliases = opts.aliases || inherits.aliases || [];
    var builder = opts.builder || inherits.builder || opts.visitor || [];
    for (var _i2 = 0, _Object$keys2 = Object.keys(opts); _i2 < _Object$keys2.length; _i2++) {
      var k = _Object$keys2[_i2];
      if (!validTypeOpts.includes(k)) {
        throw new Error("Unknown type option \"" + k + "\" on " + type);
      }
    }
    if (opts.deprecatedAlias) {
      DEPRECATED_KEYS$1[opts.deprecatedAlias] = type;
    }
    for (var _iterator5 = _createForOfIteratorHelperLoose(visitor.concat(builder)), _step5; !(_step5 = _iterator5()).done;) {
      var _key8 = _step5.value;
      fields[_key8] = fields[_key8] || {};
    }
    for (var _i3 = 0, _Object$keys3 = Object.keys(fields); _i3 < _Object$keys3.length; _i3++) {
      var _key7 = _Object$keys3[_i3];
      var _field = fields[_key7];
      if (_field["default"] !== undefined && !builder.includes(_key7)) {
        _field.optional = true;
      }
      if (_field["default"] === undefined) {
        _field["default"] = null;
      } else if (!_field.validate && _field["default"] != null) {
        _field.validate = assertValueType(getType$1(_field["default"]));
      }
      for (var _i4 = 0, _Object$keys4 = Object.keys(_field); _i4 < _Object$keys4.length; _i4++) {
        var _k = _Object$keys4[_i4];
        if (!validFieldKeys.includes(_k)) {
          throw new Error("Unknown field key \"" + _k + "\" on " + type + "." + _key7);
        }
      }
    }
    VISITOR_KEYS$5[type] = opts.visitor = visitor;
    BUILDER_KEYS[type] = opts.builder = builder;
    NODE_FIELDS[type] = opts.fields = fields;
    ALIAS_KEYS[type] = opts.aliases = aliases;
    aliases.forEach(function (alias) {
      FLIPPED_ALIAS_KEYS$3[alias] = FLIPPED_ALIAS_KEYS$3[alias] || [];
      FLIPPED_ALIAS_KEYS$3[alias].push(type);
    });
    if (opts.validate) {
      NODE_PARENT_VALIDATIONS[type] = opts.validate;
    }
    store[type] = opts;
  }

  var defineType$4 = defineAliasedType("Standardized");
  defineType$4("ArrayExpression", {
    fields: {
      elements: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeOrValueType("null", "Expression", "SpreadElement"))),
        "default": !browser$1$1.env.BABEL_TYPES_8_BREAKING ? [] : undefined
      }
    },
    visitor: ["elements"],
    aliases: ["Expression"]
  });
  defineType$4("AssignmentExpression", {
    fields: {
      operator: {
        validate: function () {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
            return assertValueType("string");
          }
          var identifier = assertOneOf.apply(void 0, _toConsumableArray(ASSIGNMENT_OPERATORS));
          var pattern = assertOneOf("=");
          return function (node, key, val) {
            var validator = is("Pattern", node.left) ? pattern : identifier;
            validator(node, key, val);
          };
        }()
      },
      left: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("LVal", "OptionalMemberExpression") : assertNodeType("Identifier", "MemberExpression", "OptionalMemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
      },
      right: {
        validate: assertNodeType("Expression")
      }
    },
    builder: ["operator", "left", "right"],
    visitor: ["left", "right"],
    aliases: ["Expression"]
  });
  defineType$4("BinaryExpression", {
    builder: ["operator", "left", "right"],
    fields: {
      operator: {
        validate: assertOneOf.apply(void 0, _toConsumableArray(BINARY_OPERATORS))
      },
      left: {
        validate: function () {
          var expression = assertNodeType("Expression");
          var inOp = assertNodeType("Expression", "PrivateName");
          var validator = Object.assign(function (node, key, val) {
            var validator = node.operator === "in" ? inOp : expression;
            validator(node, key, val);
          }, {
            oneOfNodeTypes: ["Expression", "PrivateName"]
          });
          return validator;
        }()
      },
      right: {
        validate: assertNodeType("Expression")
      }
    },
    visitor: ["left", "right"],
    aliases: ["Binary", "Expression"]
  });
  defineType$4("InterpreterDirective", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    }
  });
  defineType$4("Directive", {
    visitor: ["value"],
    fields: {
      value: {
        validate: assertNodeType("DirectiveLiteral")
      }
    }
  });
  defineType$4("DirectiveLiteral", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    }
  });
  defineType$4("BlockStatement", {
    builder: ["body", "directives"],
    visitor: ["directives", "body"],
    fields: {
      directives: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Directive"))),
        "default": []
      },
      body: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
      }
    },
    aliases: ["Scopable", "BlockParent", "Block", "Statement"]
  });
  defineType$4("BreakStatement", {
    visitor: ["label"],
    fields: {
      label: {
        validate: assertNodeType("Identifier"),
        optional: true
      }
    },
    aliases: ["Statement", "Terminatorless", "CompletionStatement"]
  });
  defineType$4("CallExpression", {
    visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
    builder: ["callee", "arguments"],
    aliases: ["Expression"],
    fields: Object.assign({
      callee: {
        validate: assertNodeType("Expression", "Super", "V8IntrinsicIdentifier")
      },
      arguments: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement", "ArgumentPlaceholder")))
      }
    }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
      optional: {
        validate: assertOneOf(true, false),
        optional: true
      }
    } : {}, {
      typeArguments: {
        validate: assertNodeType("TypeParameterInstantiation"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TSTypeParameterInstantiation"),
        optional: true
      }
    })
  });
  defineType$4("CatchClause", {
    visitor: ["param", "body"],
    fields: {
      param: {
        validate: assertNodeType("Identifier", "ArrayPattern", "ObjectPattern"),
        optional: true
      },
      body: {
        validate: assertNodeType("BlockStatement")
      }
    },
    aliases: ["Scopable", "BlockParent"]
  });
  defineType$4("ConditionalExpression", {
    visitor: ["test", "consequent", "alternate"],
    fields: {
      test: {
        validate: assertNodeType("Expression")
      },
      consequent: {
        validate: assertNodeType("Expression")
      },
      alternate: {
        validate: assertNodeType("Expression")
      }
    },
    aliases: ["Expression", "Conditional"]
  });
  defineType$4("ContinueStatement", {
    visitor: ["label"],
    fields: {
      label: {
        validate: assertNodeType("Identifier"),
        optional: true
      }
    },
    aliases: ["Statement", "Terminatorless", "CompletionStatement"]
  });
  defineType$4("DebuggerStatement", {
    aliases: ["Statement"]
  });
  defineType$4("DoWhileStatement", {
    builder: ["test", "body"],
    visitor: ["body", "test"],
    fields: {
      test: {
        validate: assertNodeType("Expression")
      },
      body: {
        validate: assertNodeType("Statement")
      }
    },
    aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
  });
  defineType$4("EmptyStatement", {
    aliases: ["Statement"]
  });
  defineType$4("ExpressionStatement", {
    visitor: ["expression"],
    fields: {
      expression: {
        validate: assertNodeType("Expression")
      }
    },
    aliases: ["Statement", "ExpressionWrapper"]
  });
  defineType$4("File", {
    builder: ["program", "comments", "tokens"],
    visitor: ["program"],
    fields: {
      program: {
        validate: assertNodeType("Program")
      },
      comments: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? Object.assign(function () {}, {
          each: {
            oneOfNodeTypes: ["CommentBlock", "CommentLine"]
          }
        }) : assertEach(assertNodeType("CommentBlock", "CommentLine")),
        optional: true
      },
      tokens: {
        validate: assertEach(Object.assign(function () {}, {
          type: "any"
        })),
        optional: true
      }
    }
  });
  defineType$4("ForInStatement", {
    visitor: ["left", "right", "body"],
    aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
    fields: {
      left: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("VariableDeclaration", "LVal") : assertNodeType("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
      },
      right: {
        validate: assertNodeType("Expression")
      },
      body: {
        validate: assertNodeType("Statement")
      }
    }
  });
  defineType$4("ForStatement", {
    visitor: ["init", "test", "update", "body"],
    aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
    fields: {
      init: {
        validate: assertNodeType("VariableDeclaration", "Expression"),
        optional: true
      },
      test: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      update: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      body: {
        validate: assertNodeType("Statement")
      }
    }
  });
  var functionCommon = function functionCommon() {
    return {
      params: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Identifier", "Pattern", "RestElement")))
      },
      generator: {
        "default": false
      },
      async: {
        "default": false
      }
    };
  };
  var functionTypeAnnotationCommon = function functionTypeAnnotationCommon() {
    return {
      returnType: {
        validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
        optional: true
      }
    };
  };
  var functionDeclarationCommon = function functionDeclarationCommon() {
    return Object.assign({}, functionCommon(), {
      declare: {
        validate: assertValueType("boolean"),
        optional: true
      },
      id: {
        validate: assertNodeType("Identifier"),
        optional: true
      }
    });
  };
  defineType$4("FunctionDeclaration", {
    builder: ["id", "params", "body", "generator", "async"],
    visitor: ["id", "typeParameters", "params", "returnType", "body"],
    fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
      body: {
        validate: assertNodeType("BlockStatement")
      },
      predicate: {
        validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
        optional: true
      }
    }),
    aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
    validate: function () {
      if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return function () {};
      var identifier = assertNodeType("Identifier");
      return function (parent, key, node) {
        if (!is("ExportDefaultDeclaration", parent)) {
          identifier(node, "id", node.id);
        }
      };
    }()
  });
  defineType$4("FunctionExpression", {
    inherits: "FunctionDeclaration",
    aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
    fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
      id: {
        validate: assertNodeType("Identifier"),
        optional: true
      },
      body: {
        validate: assertNodeType("BlockStatement")
      },
      predicate: {
        validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
        optional: true
      }
    })
  });
  var patternLikeCommon = function patternLikeCommon() {
    return {
      typeAnnotation: {
        validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
        optional: true
      },
      optional: {
        validate: assertValueType("boolean"),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      }
    };
  };
  defineType$4("Identifier", {
    builder: ["name"],
    visitor: ["typeAnnotation", "decorators"],
    aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"],
    fields: Object.assign({}, patternLikeCommon(), {
      name: {
        validate: chain$1(assertValueType("string"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (!isValidIdentifier$1(val, false)) {
            throw new TypeError("\"" + val + "\" is not a valid identifier name");
          }
        }, {
          type: "string"
        }))
      }
    }),
    validate: function validate(parent, key, node) {
      if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
      var match = /\.(\w+)$/.exec(key);
      if (!match) return;
      var _match = _slicedToArray(match, 2),
        parentKey = _match[1];
      var nonComp = {
        computed: false
      };
      if (parentKey === "property") {
        if (is("MemberExpression", parent, nonComp)) return;
        if (is("OptionalMemberExpression", parent, nonComp)) return;
      } else if (parentKey === "key") {
        if (is("Property", parent, nonComp)) return;
        if (is("Method", parent, nonComp)) return;
      } else if (parentKey === "exported") {
        if (is("ExportSpecifier", parent)) return;
      } else if (parentKey === "imported") {
        if (is("ImportSpecifier", parent, {
          imported: node
        })) return;
      } else if (parentKey === "meta") {
        if (is("MetaProperty", parent, {
          meta: node
        })) return;
      }
      if ((isKeyword(node.name) || isReservedWord(node.name, false)) && node.name !== "this") {
        throw new TypeError("\"" + node.name + "\" is not a valid identifier");
      }
    }
  });
  defineType$4("IfStatement", {
    visitor: ["test", "consequent", "alternate"],
    aliases: ["Statement", "Conditional"],
    fields: {
      test: {
        validate: assertNodeType("Expression")
      },
      consequent: {
        validate: assertNodeType("Statement")
      },
      alternate: {
        optional: true,
        validate: assertNodeType("Statement")
      }
    }
  });
  defineType$4("LabeledStatement", {
    visitor: ["label", "body"],
    aliases: ["Statement"],
    fields: {
      label: {
        validate: assertNodeType("Identifier")
      },
      body: {
        validate: assertNodeType("Statement")
      }
    }
  });
  defineType$4("StringLiteral", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    },
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$4("NumericLiteral", {
    builder: ["value"],
    deprecatedAlias: "NumberLiteral",
    fields: {
      value: {
        validate: chain$1(assertValueType("number"), Object.assign(function (node, key, val) {
        }, {
          type: "number"
        }))
      }
    },
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$4("NullLiteral", {
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$4("BooleanLiteral", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("boolean")
      }
    },
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$4("RegExpLiteral", {
    builder: ["pattern", "flags"],
    deprecatedAlias: "RegexLiteral",
    aliases: ["Expression", "Pureish", "Literal"],
    fields: {
      pattern: {
        validate: assertValueType("string")
      },
      flags: {
        validate: chain$1(assertValueType("string"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          var invalid = /[^gimsuy]/.exec(val);
          if (invalid) {
            throw new TypeError("\"" + invalid[0] + "\" is not a valid RegExp flag");
          }
        }, {
          type: "string"
        })),
        "default": ""
      }
    }
  });
  defineType$4("LogicalExpression", {
    builder: ["operator", "left", "right"],
    visitor: ["left", "right"],
    aliases: ["Binary", "Expression"],
    fields: {
      operator: {
        validate: assertOneOf.apply(void 0, _toConsumableArray(LOGICAL_OPERATORS$3))
      },
      left: {
        validate: assertNodeType("Expression")
      },
      right: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("MemberExpression", {
    builder: ["object", "property", "computed"].concat(_toConsumableArray(!browser$1$1.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])),
    visitor: ["object", "property"],
    aliases: ["Expression", "LVal"],
    fields: Object.assign({
      object: {
        validate: assertNodeType("Expression", "Super")
      },
      property: {
        validate: function () {
          var normal = assertNodeType("Identifier", "PrivateName");
          var computed = assertNodeType("Expression");
          var validator = function validator(node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          };
          validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
          return validator;
        }()
      },
      computed: {
        "default": false
      }
    }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
      optional: {
        validate: assertOneOf(true, false),
        optional: true
      }
    } : {})
  });
  defineType$4("NewExpression", {
    inherits: "CallExpression"
  });
  defineType$4("Program", {
    visitor: ["directives", "body"],
    builder: ["body", "directives", "sourceType", "interpreter"],
    fields: {
      sourceType: {
        validate: assertOneOf("script", "module"),
        "default": "script"
      },
      interpreter: {
        validate: assertNodeType("InterpreterDirective"),
        "default": null,
        optional: true
      },
      directives: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Directive"))),
        "default": []
      },
      body: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
      }
    },
    aliases: ["Scopable", "BlockParent", "Block"]
  });
  defineType$4("ObjectExpression", {
    visitor: ["properties"],
    aliases: ["Expression"],
    fields: {
      properties: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ObjectMethod", "ObjectProperty", "SpreadElement")))
      }
    }
  });
  defineType$4("ObjectMethod", {
    builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
    visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
    fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
      kind: Object.assign({
        validate: assertOneOf("method", "get", "set")
      }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
        "default": "method"
      } : {}),
      computed: {
        "default": false
      },
      key: {
        validate: function () {
          var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
          var computed = assertNodeType("Expression");
          var validator = function validator(node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          };
          validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"];
          return validator;
        }()
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      body: {
        validate: assertNodeType("BlockStatement")
      }
    }),
    aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
  });
  defineType$4("ObjectProperty", {
    builder: ["key", "value", "computed", "shorthand"].concat(_toConsumableArray(!browser$1$1.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])),
    fields: {
      computed: {
        "default": false
      },
      key: {
        validate: function () {
          var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName");
          var computed = assertNodeType("Expression");
          var validator = Object.assign(function (node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          }, {
            oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"]
          });
          return validator;
        }()
      },
      value: {
        validate: assertNodeType("Expression", "PatternLike")
      },
      shorthand: {
        validate: chain$1(assertValueType("boolean"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (val && node.computed) {
            throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
          }
        }, {
          type: "boolean"
        }), function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (val && !is("Identifier", node.key)) {
            throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
          }
        }),
        "default": false
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      }
    },
    visitor: ["key", "value", "decorators"],
    aliases: ["UserWhitespacable", "Property", "ObjectMember"],
    validate: function () {
      var pattern = assertNodeType("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion");
      var expression = assertNodeType("Expression");
      return function (parent, key, node) {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
        var validator = is("ObjectPattern", parent) ? pattern : expression;
        validator(node, "value", node.value);
      };
    }()
  });
  defineType$4("RestElement", {
    visitor: ["argument", "typeAnnotation"],
    builder: ["argument"],
    aliases: ["LVal", "PatternLike"],
    deprecatedAlias: "RestProperty",
    fields: Object.assign({}, patternLikeCommon(), {
      argument: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("LVal") : assertNodeType("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
      }
    }),
    validate: function validate(parent, key) {
      if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
      var match = /(\w+)\[(\d+)\]/.exec(key);
      if (!match) throw new Error("Internal Babel error: malformed key.");
      var _ref = match,
        _ref2 = _slicedToArray(_ref, 3),
        listKey = _ref2[1],
        index = _ref2[2];
      if (parent[listKey].length > +index + 1) {
        throw new TypeError("RestElement must be last element of " + listKey);
      }
    }
  });
  defineType$4("ReturnStatement", {
    visitor: ["argument"],
    aliases: ["Statement", "Terminatorless", "CompletionStatement"],
    fields: {
      argument: {
        validate: assertNodeType("Expression"),
        optional: true
      }
    }
  });
  defineType$4("SequenceExpression", {
    visitor: ["expressions"],
    fields: {
      expressions: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression")))
      }
    },
    aliases: ["Expression"]
  });
  defineType$4("ParenthesizedExpression", {
    visitor: ["expression"],
    aliases: ["Expression", "ExpressionWrapper"],
    fields: {
      expression: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("SwitchCase", {
    visitor: ["test", "consequent"],
    fields: {
      test: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      consequent: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
      }
    }
  });
  defineType$4("SwitchStatement", {
    visitor: ["discriminant", "cases"],
    aliases: ["Statement", "BlockParent", "Scopable"],
    fields: {
      discriminant: {
        validate: assertNodeType("Expression")
      },
      cases: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("SwitchCase")))
      }
    }
  });
  defineType$4("ThisExpression", {
    aliases: ["Expression"]
  });
  defineType$4("ThrowStatement", {
    visitor: ["argument"],
    aliases: ["Statement", "Terminatorless", "CompletionStatement"],
    fields: {
      argument: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("TryStatement", {
    visitor: ["block", "handler", "finalizer"],
    aliases: ["Statement"],
    fields: {
      block: {
        validate: chain$1(assertNodeType("BlockStatement"), Object.assign(function (node) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (!node.handler && !node.finalizer) {
            throw new TypeError("TryStatement expects either a handler or finalizer, or both");
          }
        }, {
          oneOfNodeTypes: ["BlockStatement"]
        }))
      },
      handler: {
        optional: true,
        validate: assertNodeType("CatchClause")
      },
      finalizer: {
        optional: true,
        validate: assertNodeType("BlockStatement")
      }
    }
  });
  defineType$4("UnaryExpression", {
    builder: ["operator", "argument", "prefix"],
    fields: {
      prefix: {
        "default": true
      },
      argument: {
        validate: assertNodeType("Expression")
      },
      operator: {
        validate: assertOneOf.apply(void 0, _toConsumableArray(UNARY_OPERATORS))
      }
    },
    visitor: ["argument"],
    aliases: ["UnaryLike", "Expression"]
  });
  defineType$4("UpdateExpression", {
    builder: ["operator", "argument", "prefix"],
    fields: {
      prefix: {
        "default": false
      },
      argument: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("Expression") : assertNodeType("Identifier", "MemberExpression")
      },
      operator: {
        validate: assertOneOf.apply(void 0, _toConsumableArray(UPDATE_OPERATORS))
      }
    },
    visitor: ["argument"],
    aliases: ["Expression"]
  });
  defineType$4("VariableDeclaration", {
    builder: ["kind", "declarations"],
    visitor: ["declarations"],
    aliases: ["Statement", "Declaration"],
    fields: {
      declare: {
        validate: assertValueType("boolean"),
        optional: true
      },
      kind: {
        validate: assertOneOf("var", "let", "const", "using", "await using")
      },
      declarations: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("VariableDeclarator")))
      }
    },
    validate: function validate(parent, key, node) {
      if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
      if (!is("ForXStatement", parent, {
        left: node
      })) return;
      if (node.declarations.length !== 1) {
        throw new TypeError("Exactly one VariableDeclarator is required in the VariableDeclaration of a " + parent.type);
      }
    }
  });
  defineType$4("VariableDeclarator", {
    visitor: ["id", "init"],
    fields: {
      id: {
        validate: function () {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
            return assertNodeType("LVal");
          }
          var normal = assertNodeType("Identifier", "ArrayPattern", "ObjectPattern");
          var without = assertNodeType("Identifier");
          return function (node, key, val) {
            var validator = node.init ? normal : without;
            validator(node, key, val);
          };
        }()
      },
      definite: {
        optional: true,
        validate: assertValueType("boolean")
      },
      init: {
        optional: true,
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("WhileStatement", {
    visitor: ["test", "body"],
    aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
    fields: {
      test: {
        validate: assertNodeType("Expression")
      },
      body: {
        validate: assertNodeType("Statement")
      }
    }
  });
  defineType$4("WithStatement", {
    visitor: ["object", "body"],
    aliases: ["Statement"],
    fields: {
      object: {
        validate: assertNodeType("Expression")
      },
      body: {
        validate: assertNodeType("Statement")
      }
    }
  });
  defineType$4("AssignmentPattern", {
    visitor: ["left", "right", "decorators"],
    builder: ["left", "right"],
    aliases: ["Pattern", "PatternLike", "LVal"],
    fields: Object.assign({}, patternLikeCommon(), {
      left: {
        validate: assertNodeType("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
      },
      right: {
        validate: assertNodeType("Expression")
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      }
    })
  });
  defineType$4("ArrayPattern", {
    visitor: ["elements", "typeAnnotation"],
    builder: ["elements"],
    aliases: ["Pattern", "PatternLike", "LVal"],
    fields: Object.assign({}, patternLikeCommon(), {
      elements: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeOrValueType("null", "PatternLike", "LVal")))
      }
    })
  });
  defineType$4("ArrowFunctionExpression", {
    builder: ["params", "body", "async"],
    visitor: ["typeParameters", "params", "returnType", "body"],
    aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
    fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
      expression: {
        validate: assertValueType("boolean")
      },
      body: {
        validate: assertNodeType("BlockStatement", "Expression")
      },
      predicate: {
        validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
        optional: true
      }
    })
  });
  defineType$4("ClassBody", {
    visitor: ["body"],
    fields: {
      body: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock")))
      }
    }
  });
  defineType$4("ClassExpression", {
    builder: ["id", "superClass", "body", "decorators"],
    visitor: ["decorators", "id", "typeParameters", "superClass", "superTypeParameters", "mixins", "implements", "body"],
    aliases: ["Scopable", "Class", "Expression"],
    fields: {
      id: {
        validate: assertNodeType("Identifier"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
        optional: true
      },
      body: {
        validate: assertNodeType("ClassBody")
      },
      superClass: {
        optional: true,
        validate: assertNodeType("Expression")
      },
      superTypeParameters: {
        validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
        optional: true
      },
      "implements": {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"))),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      mixins: {
        validate: assertNodeType("InterfaceExtends"),
        optional: true
      }
    }
  });
  defineType$4("ClassDeclaration", {
    inherits: "ClassExpression",
    aliases: ["Scopable", "Class", "Statement", "Declaration"],
    fields: {
      id: {
        validate: assertNodeType("Identifier"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
        optional: true
      },
      body: {
        validate: assertNodeType("ClassBody")
      },
      superClass: {
        optional: true,
        validate: assertNodeType("Expression")
      },
      superTypeParameters: {
        validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
        optional: true
      },
      "implements": {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"))),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      mixins: {
        validate: assertNodeType("InterfaceExtends"),
        optional: true
      },
      declare: {
        validate: assertValueType("boolean"),
        optional: true
      },
      "abstract": {
        validate: assertValueType("boolean"),
        optional: true
      }
    },
    validate: function () {
      var identifier = assertNodeType("Identifier");
      return function (parent, key, node) {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
        if (!is("ExportDefaultDeclaration", parent)) {
          identifier(node, "id", node.id);
        }
      };
    }()
  });
  defineType$4("ExportAllDeclaration", {
    builder: ["source"],
    visitor: ["source", "attributes", "assertions"],
    aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
    fields: {
      source: {
        validate: assertNodeType("StringLiteral")
      },
      exportKind: validateOptional(assertOneOf("type", "value")),
      attributes: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      },
      assertions: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      }
    }
  });
  defineType$4("ExportDefaultDeclaration", {
    visitor: ["declaration"],
    aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
    fields: {
      declaration: {
        validate: assertNodeType("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression")
      },
      exportKind: validateOptional(assertOneOf("value"))
    }
  });
  defineType$4("ExportNamedDeclaration", {
    builder: ["declaration", "specifiers", "source"],
    visitor: ["declaration", "specifiers", "source", "attributes", "assertions"],
    aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
    fields: {
      declaration: {
        optional: true,
        validate: chain$1(assertNodeType("Declaration"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (val && node.specifiers.length) {
            throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
          }
        }, {
          oneOfNodeTypes: ["Declaration"]
        }), function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (val && node.source) {
            throw new TypeError("Cannot export a declaration from a source");
          }
        })
      },
      attributes: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      },
      assertions: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      },
      specifiers: {
        "default": [],
        validate: chain$1(assertValueType("array"), assertEach(function () {
          var sourced = assertNodeType("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
          var sourceless = assertNodeType("ExportSpecifier");
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return sourced;
          return function (node, key, val) {
            var validator = node.source ? sourced : sourceless;
            validator(node, key, val);
          };
        }()))
      },
      source: {
        validate: assertNodeType("StringLiteral"),
        optional: true
      },
      exportKind: validateOptional(assertOneOf("type", "value"))
    }
  });
  defineType$4("ExportSpecifier", {
    visitor: ["local", "exported"],
    aliases: ["ModuleSpecifier"],
    fields: {
      local: {
        validate: assertNodeType("Identifier")
      },
      exported: {
        validate: assertNodeType("Identifier", "StringLiteral")
      },
      exportKind: {
        validate: assertOneOf("type", "value"),
        optional: true
      }
    }
  });
  defineType$4("ForOfStatement", {
    visitor: ["left", "right", "body"],
    builder: ["left", "right", "body", "await"],
    aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
    fields: {
      left: {
        validate: function () {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
            return assertNodeType("VariableDeclaration", "LVal");
          }
          var declaration = assertNodeType("VariableDeclaration");
          var lval = assertNodeType("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
          return function (node, key, val) {
            if (is("VariableDeclaration", val)) {
              declaration(node, key, val);
            } else {
              lval(node, key, val);
            }
          };
        }()
      },
      right: {
        validate: assertNodeType("Expression")
      },
      body: {
        validate: assertNodeType("Statement")
      },
      "await": {
        "default": false
      }
    }
  });
  defineType$4("ImportDeclaration", {
    builder: ["specifiers", "source"],
    visitor: ["specifiers", "source", "attributes", "assertions"],
    aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"],
    fields: {
      attributes: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      },
      assertions: {
        optional: true,
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
      },
      module: {
        optional: true,
        validate: assertValueType("boolean")
      },
      phase: {
        "default": null,
        validate: assertOneOf("source", "defer")
      },
      specifiers: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier")))
      },
      source: {
        validate: assertNodeType("StringLiteral")
      },
      importKind: {
        validate: assertOneOf("type", "typeof", "value"),
        optional: true
      }
    }
  });
  defineType$4("ImportDefaultSpecifier", {
    visitor: ["local"],
    aliases: ["ModuleSpecifier"],
    fields: {
      local: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  defineType$4("ImportNamespaceSpecifier", {
    visitor: ["local"],
    aliases: ["ModuleSpecifier"],
    fields: {
      local: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  defineType$4("ImportSpecifier", {
    visitor: ["imported", "local"],
    builder: ["local", "imported"],
    aliases: ["ModuleSpecifier"],
    fields: {
      local: {
        validate: assertNodeType("Identifier")
      },
      imported: {
        validate: assertNodeType("Identifier", "StringLiteral")
      },
      importKind: {
        validate: assertOneOf("type", "typeof", "value"),
        optional: true
      }
    }
  });
  defineType$4("ImportExpression", {
    visitor: ["source", "options"],
    aliases: ["Expression"],
    fields: {
      phase: {
        "default": null,
        validate: assertOneOf("source", "defer")
      },
      source: {
        validate: assertNodeType("Expression")
      },
      options: {
        validate: assertNodeType("Expression"),
        optional: true
      }
    }
  });
  defineType$4("MetaProperty", {
    visitor: ["meta", "property"],
    aliases: ["Expression"],
    fields: {
      meta: {
        validate: chain$1(assertNodeType("Identifier"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          var property;
          switch (val.name) {
            case "function":
              property = "sent";
              break;
            case "new":
              property = "target";
              break;
            case "import":
              property = "meta";
              break;
          }
          if (!is("Identifier", node.property, {
            name: property
          })) {
            throw new TypeError("Unrecognised MetaProperty");
          }
        }, {
          oneOfNodeTypes: ["Identifier"]
        }))
      },
      property: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  var classMethodOrPropertyCommon = function classMethodOrPropertyCommon() {
    return {
      "abstract": {
        validate: assertValueType("boolean"),
        optional: true
      },
      accessibility: {
        validate: assertOneOf("public", "private", "protected"),
        optional: true
      },
      "static": {
        "default": false
      },
      override: {
        "default": false
      },
      computed: {
        "default": false
      },
      optional: {
        validate: assertValueType("boolean"),
        optional: true
      },
      key: {
        validate: chain$1(function () {
          var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
          var computed = assertNodeType("Expression");
          return function (node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          };
        }(), assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression"))
      }
    };
  };
  var classMethodOrDeclareMethodCommon = function classMethodOrDeclareMethodCommon() {
    return Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {
      params: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Identifier", "Pattern", "RestElement", "TSParameterProperty")))
      },
      kind: {
        validate: assertOneOf("get", "set", "method", "constructor"),
        "default": "method"
      },
      access: {
        validate: chain$1(assertValueType("string"), assertOneOf("public", "private", "protected")),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      }
    });
  };
  defineType$4("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({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
      body: {
        validate: assertNodeType("BlockStatement")
      }
    })
  });
  defineType$4("ObjectPattern", {
    visitor: ["properties", "typeAnnotation", "decorators"],
    builder: ["properties"],
    aliases: ["Pattern", "PatternLike", "LVal"],
    fields: Object.assign({}, patternLikeCommon(), {
      properties: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("RestElement", "ObjectProperty")))
      }
    })
  });
  defineType$4("SpreadElement", {
    visitor: ["argument"],
    aliases: ["UnaryLike"],
    deprecatedAlias: "SpreadProperty",
    fields: {
      argument: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("Super", {
    aliases: ["Expression"]
  });
  defineType$4("TaggedTemplateExpression", {
    visitor: ["tag", "typeParameters", "quasi"],
    builder: ["tag", "quasi"],
    aliases: ["Expression"],
    fields: {
      tag: {
        validate: assertNodeType("Expression")
      },
      quasi: {
        validate: assertNodeType("TemplateLiteral")
      },
      typeParameters: {
        validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
        optional: true
      }
    }
  });
  defineType$4("TemplateElement", {
    builder: ["value", "tail"],
    fields: {
      value: {
        validate: chain$1(assertShape({
          raw: {
            validate: assertValueType("string")
          },
          cooked: {
            validate: assertValueType("string"),
            optional: true
          }
        }), function templateElementCookedValidator(node) {
          var raw = node.value.raw;
          var unterminatedCalled = false;
          var error = function error() {
            throw new Error("Internal @babel/types error.");
          };
          var _readStringContents = readStringContents("template", raw, 0, 0, 0, {
              unterminated: function unterminated() {
                unterminatedCalled = true;
              },
              strictNumericEscape: error,
              invalidEscapeSequence: error,
              numericSeparatorInEscapeSequence: error,
              unexpectedNumericSeparator: error,
              invalidDigit: error,
              invalidCodePoint: error
            }),
            str = _readStringContents.str,
            firstInvalidLoc = _readStringContents.firstInvalidLoc;
          if (!unterminatedCalled) throw new Error("Invalid raw");
          node.value.cooked = firstInvalidLoc ? null : str;
        })
      },
      tail: {
        "default": false
      }
    }
  });
  defineType$4("TemplateLiteral", {
    visitor: ["quasis", "expressions"],
    aliases: ["Expression", "Literal"],
    fields: {
      quasis: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TemplateElement")))
      },
      expressions: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "TSType")), function (node, key, val) {
          if (node.quasis.length !== val.length + 1) {
            throw new TypeError("Number of " + node.type + " quasis should be exactly one more than the number of expressions.\nExpected " + (val.length + 1) + " quasis but got " + node.quasis.length);
          }
        })
      }
    }
  });
  defineType$4("YieldExpression", {
    builder: ["argument", "delegate"],
    visitor: ["argument"],
    aliases: ["Expression", "Terminatorless"],
    fields: {
      delegate: {
        validate: chain$1(assertValueType("boolean"), Object.assign(function (node, key, val) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (val && !node.argument) {
            throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
          }
        }, {
          type: "boolean"
        })),
        "default": false
      },
      argument: {
        optional: true,
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("AwaitExpression", {
    builder: ["argument"],
    visitor: ["argument"],
    aliases: ["Expression", "Terminatorless"],
    fields: {
      argument: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$4("Import", {
    aliases: ["Expression"]
  });
  defineType$4("BigIntLiteral", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    },
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$4("ExportNamespaceSpecifier", {
    visitor: ["exported"],
    aliases: ["ModuleSpecifier"],
    fields: {
      exported: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  defineType$4("OptionalMemberExpression", {
    builder: ["object", "property", "computed", "optional"],
    visitor: ["object", "property"],
    aliases: ["Expression"],
    fields: {
      object: {
        validate: assertNodeType("Expression")
      },
      property: {
        validate: function () {
          var normal = assertNodeType("Identifier");
          var computed = assertNodeType("Expression");
          var validator = Object.assign(function (node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          }, {
            oneOfNodeTypes: ["Expression", "Identifier"]
          });
          return validator;
        }()
      },
      computed: {
        "default": false
      },
      optional: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertValueType("boolean") : chain$1(assertValueType("boolean"), assertOptionalChainStart())
      }
    }
  });
  defineType$4("OptionalCallExpression", {
    visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
    builder: ["callee", "arguments", "optional"],
    aliases: ["Expression"],
    fields: {
      callee: {
        validate: assertNodeType("Expression")
      },
      arguments: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement", "ArgumentPlaceholder")))
      },
      optional: {
        validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertValueType("boolean") : chain$1(assertValueType("boolean"), assertOptionalChainStart())
      },
      typeArguments: {
        validate: assertNodeType("TypeParameterInstantiation"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TSTypeParameterInstantiation"),
        optional: true
      }
    }
  });
  defineType$4("ClassProperty", {
    visitor: ["decorators", "key", "typeAnnotation", "value"],
    builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
    aliases: ["Property"],
    fields: Object.assign({}, classMethodOrPropertyCommon(), {
      value: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      definite: {
        validate: assertValueType("boolean"),
        optional: true
      },
      typeAnnotation: {
        validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      readonly: {
        validate: assertValueType("boolean"),
        optional: true
      },
      declare: {
        validate: assertValueType("boolean"),
        optional: true
      },
      variance: {
        validate: assertNodeType("Variance"),
        optional: true
      }
    })
  });
  defineType$4("ClassAccessorProperty", {
    visitor: ["decorators", "key", "typeAnnotation", "value"],
    builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
    aliases: ["Property", "Accessor"],
    fields: Object.assign({}, classMethodOrPropertyCommon(), {
      key: {
        validate: chain$1(function () {
          var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName");
          var computed = assertNodeType("Expression");
          return function (node, key, val) {
            var validator = node.computed ? computed : normal;
            validator(node, key, val);
          };
        }(), assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName"))
      },
      value: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      definite: {
        validate: assertValueType("boolean"),
        optional: true
      },
      typeAnnotation: {
        validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      readonly: {
        validate: assertValueType("boolean"),
        optional: true
      },
      declare: {
        validate: assertValueType("boolean"),
        optional: true
      },
      variance: {
        validate: assertNodeType("Variance"),
        optional: true
      }
    })
  });
  defineType$4("ClassPrivateProperty", {
    visitor: ["decorators", "key", "typeAnnotation", "value"],
    builder: ["key", "value", "decorators", "static"],
    aliases: ["Property", "Private"],
    fields: {
      key: {
        validate: assertNodeType("PrivateName")
      },
      value: {
        validate: assertNodeType("Expression"),
        optional: true
      },
      typeAnnotation: {
        validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      },
      "static": {
        validate: assertValueType("boolean"),
        "default": false
      },
      readonly: {
        validate: assertValueType("boolean"),
        optional: true
      },
      definite: {
        validate: assertValueType("boolean"),
        optional: true
      },
      variance: {
        validate: assertNodeType("Variance"),
        optional: true
      }
    }
  });
  defineType$4("ClassPrivateMethod", {
    builder: ["kind", "key", "params", "body", "static"],
    visitor: ["decorators", "key", "typeParameters", "params", "returnType", "body"],
    aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
    fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
      kind: {
        validate: assertOneOf("get", "set", "method"),
        "default": "method"
      },
      key: {
        validate: assertNodeType("PrivateName")
      },
      body: {
        validate: assertNodeType("BlockStatement")
      }
    })
  });
  defineType$4("PrivateName", {
    visitor: ["id"],
    aliases: ["Private"],
    fields: {
      id: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  defineType$4("StaticBlock", {
    visitor: ["body"],
    fields: {
      body: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
      }
    },
    aliases: ["Scopable", "BlockParent", "FunctionParent"]
  });

  var defineType$3 = defineAliasedType("Flow");
  var defineInterfaceishType = function defineInterfaceishType(name) {
    var isDeclareClass = name === "DeclareClass";
    defineType$3(name, {
      builder: ["id", "typeParameters", "extends", "body"],
      visitor: ["id", "typeParameters", "extends"].concat(_toConsumableArray(isDeclareClass ? ["mixins", "implements"] : []), ["body"]),
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: Object.assign({
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        "extends": validateOptional(arrayOfType("InterfaceExtends"))
      }, isDeclareClass ? {
        mixins: validateOptional(arrayOfType("InterfaceExtends")),
        "implements": validateOptional(arrayOfType("ClassImplements"))
      } : {}, {
        body: validateType("ObjectTypeAnnotation")
      })
    });
  };
  defineType$3("AnyTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("ArrayTypeAnnotation", {
    visitor: ["elementType"],
    aliases: ["FlowType"],
    fields: {
      elementType: validateType("FlowType")
    }
  });
  defineType$3("BooleanTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("BooleanLiteralTypeAnnotation", {
    builder: ["value"],
    aliases: ["FlowType"],
    fields: {
      value: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("NullLiteralTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("ClassImplements", {
    visitor: ["id", "typeParameters"],
    fields: {
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TypeParameterInstantiation")
    }
  });
  defineInterfaceishType("DeclareClass");
  defineType$3("DeclareFunction", {
    visitor: ["id"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier"),
      predicate: validateOptionalType("DeclaredPredicate")
    }
  });
  defineInterfaceishType("DeclareInterface");
  defineType$3("DeclareModule", {
    builder: ["id", "body", "kind"],
    visitor: ["id", "body"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType(["Identifier", "StringLiteral"]),
      body: validateType("BlockStatement"),
      kind: validateOptional(assertOneOf("CommonJS", "ES"))
    }
  });
  defineType$3("DeclareModuleExports", {
    visitor: ["typeAnnotation"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      typeAnnotation: validateType("TypeAnnotation")
    }
  });
  defineType$3("DeclareTypeAlias", {
    visitor: ["id", "typeParameters", "right"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TypeParameterDeclaration"),
      right: validateType("FlowType")
    }
  });
  defineType$3("DeclareOpaqueType", {
    visitor: ["id", "typeParameters", "supertype"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TypeParameterDeclaration"),
      supertype: validateOptionalType("FlowType"),
      impltype: validateOptionalType("FlowType")
    }
  });
  defineType$3("DeclareVariable", {
    visitor: ["id"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier")
    }
  });
  defineType$3("DeclareExportDeclaration", {
    visitor: ["declaration", "specifiers", "source"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      declaration: validateOptionalType("Flow"),
      specifiers: validateOptional(arrayOfType(["ExportSpecifier", "ExportNamespaceSpecifier"])),
      source: validateOptionalType("StringLiteral"),
      "default": validateOptional(assertValueType("boolean"))
    }
  });
  defineType$3("DeclareExportAllDeclaration", {
    visitor: ["source"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      source: validateType("StringLiteral"),
      exportKind: validateOptional(assertOneOf("type", "value"))
    }
  });
  defineType$3("DeclaredPredicate", {
    visitor: ["value"],
    aliases: ["FlowPredicate"],
    fields: {
      value: validateType("Flow")
    }
  });
  defineType$3("ExistsTypeAnnotation", {
    aliases: ["FlowType"]
  });
  defineType$3("FunctionTypeAnnotation", {
    visitor: ["typeParameters", "params", "rest", "returnType"],
    aliases: ["FlowType"],
    fields: {
      typeParameters: validateOptionalType("TypeParameterDeclaration"),
      params: validate$6(arrayOfType("FunctionTypeParam")),
      rest: validateOptionalType("FunctionTypeParam"),
      "this": validateOptionalType("FunctionTypeParam"),
      returnType: validateType("FlowType")
    }
  });
  defineType$3("FunctionTypeParam", {
    visitor: ["name", "typeAnnotation"],
    fields: {
      name: validateOptionalType("Identifier"),
      typeAnnotation: validateType("FlowType"),
      optional: validateOptional(assertValueType("boolean"))
    }
  });
  defineType$3("GenericTypeAnnotation", {
    visitor: ["id", "typeParameters"],
    aliases: ["FlowType"],
    fields: {
      id: validateType(["Identifier", "QualifiedTypeIdentifier"]),
      typeParameters: validateOptionalType("TypeParameterInstantiation")
    }
  });
  defineType$3("InferredPredicate", {
    aliases: ["FlowPredicate"]
  });
  defineType$3("InterfaceExtends", {
    visitor: ["id", "typeParameters"],
    fields: {
      id: validateType(["Identifier", "QualifiedTypeIdentifier"]),
      typeParameters: validateOptionalType("TypeParameterInstantiation")
    }
  });
  defineInterfaceishType("InterfaceDeclaration");
  defineType$3("InterfaceTypeAnnotation", {
    visitor: ["extends", "body"],
    aliases: ["FlowType"],
    fields: {
      "extends": validateOptional(arrayOfType("InterfaceExtends")),
      body: validateType("ObjectTypeAnnotation")
    }
  });
  defineType$3("IntersectionTypeAnnotation", {
    visitor: ["types"],
    aliases: ["FlowType"],
    fields: {
      types: validate$6(arrayOfType("FlowType"))
    }
  });
  defineType$3("MixedTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("EmptyTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("NullableTypeAnnotation", {
    visitor: ["typeAnnotation"],
    aliases: ["FlowType"],
    fields: {
      typeAnnotation: validateType("FlowType")
    }
  });
  defineType$3("NumberLiteralTypeAnnotation", {
    builder: ["value"],
    aliases: ["FlowType"],
    fields: {
      value: validate$6(assertValueType("number"))
    }
  });
  defineType$3("NumberTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("ObjectTypeAnnotation", {
    visitor: ["properties", "indexers", "callProperties", "internalSlots"],
    aliases: ["FlowType"],
    builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
    fields: {
      properties: validate$6(arrayOfType(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])),
      indexers: {
        validate: arrayOfType("ObjectTypeIndexer"),
        optional: true,
        "default": []
      },
      callProperties: {
        validate: arrayOfType("ObjectTypeCallProperty"),
        optional: true,
        "default": []
      },
      internalSlots: {
        validate: arrayOfType("ObjectTypeInternalSlot"),
        optional: true,
        "default": []
      },
      exact: {
        validate: assertValueType("boolean"),
        "default": false
      },
      inexact: validateOptional(assertValueType("boolean"))
    }
  });
  defineType$3("ObjectTypeInternalSlot", {
    visitor: ["id", "value"],
    builder: ["id", "value", "optional", "static", "method"],
    aliases: ["UserWhitespacable"],
    fields: {
      id: validateType("Identifier"),
      value: validateType("FlowType"),
      optional: validate$6(assertValueType("boolean")),
      "static": validate$6(assertValueType("boolean")),
      method: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("ObjectTypeCallProperty", {
    visitor: ["value"],
    aliases: ["UserWhitespacable"],
    fields: {
      value: validateType("FlowType"),
      "static": validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("ObjectTypeIndexer", {
    visitor: ["variance", "id", "key", "value"],
    builder: ["id", "key", "value", "variance"],
    aliases: ["UserWhitespacable"],
    fields: {
      id: validateOptionalType("Identifier"),
      key: validateType("FlowType"),
      value: validateType("FlowType"),
      "static": validate$6(assertValueType("boolean")),
      variance: validateOptionalType("Variance")
    }
  });
  defineType$3("ObjectTypeProperty", {
    visitor: ["key", "value", "variance"],
    aliases: ["UserWhitespacable"],
    fields: {
      key: validateType(["Identifier", "StringLiteral"]),
      value: validateType("FlowType"),
      kind: validate$6(assertOneOf("init", "get", "set")),
      "static": validate$6(assertValueType("boolean")),
      proto: validate$6(assertValueType("boolean")),
      optional: validate$6(assertValueType("boolean")),
      variance: validateOptionalType("Variance"),
      method: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("ObjectTypeSpreadProperty", {
    visitor: ["argument"],
    aliases: ["UserWhitespacable"],
    fields: {
      argument: validateType("FlowType")
    }
  });
  defineType$3("OpaqueType", {
    visitor: ["id", "typeParameters", "supertype", "impltype"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TypeParameterDeclaration"),
      supertype: validateOptionalType("FlowType"),
      impltype: validateType("FlowType")
    }
  });
  defineType$3("QualifiedTypeIdentifier", {
    visitor: ["qualification", "id"],
    builder: ["id", "qualification"],
    fields: {
      id: validateType("Identifier"),
      qualification: validateType(["Identifier", "QualifiedTypeIdentifier"])
    }
  });
  defineType$3("StringLiteralTypeAnnotation", {
    builder: ["value"],
    aliases: ["FlowType"],
    fields: {
      value: validate$6(assertValueType("string"))
    }
  });
  defineType$3("StringTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("SymbolTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("ThisTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("TupleTypeAnnotation", {
    visitor: ["types"],
    aliases: ["FlowType"],
    fields: {
      types: validate$6(arrayOfType("FlowType"))
    }
  });
  defineType$3("TypeofTypeAnnotation", {
    visitor: ["argument"],
    aliases: ["FlowType"],
    fields: {
      argument: validateType("FlowType")
    }
  });
  defineType$3("TypeAlias", {
    visitor: ["id", "typeParameters", "right"],
    aliases: ["FlowDeclaration", "Statement", "Declaration"],
    fields: {
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TypeParameterDeclaration"),
      right: validateType("FlowType")
    }
  });
  defineType$3("TypeAnnotation", {
    visitor: ["typeAnnotation"],
    fields: {
      typeAnnotation: validateType("FlowType")
    }
  });
  defineType$3("TypeCastExpression", {
    visitor: ["expression", "typeAnnotation"],
    aliases: ["ExpressionWrapper", "Expression"],
    fields: {
      expression: validateType("Expression"),
      typeAnnotation: validateType("TypeAnnotation")
    }
  });
  defineType$3("TypeParameter", {
    visitor: ["bound", "default", "variance"],
    fields: {
      name: validate$6(assertValueType("string")),
      bound: validateOptionalType("TypeAnnotation"),
      "default": validateOptionalType("FlowType"),
      variance: validateOptionalType("Variance")
    }
  });
  defineType$3("TypeParameterDeclaration", {
    visitor: ["params"],
    fields: {
      params: validate$6(arrayOfType("TypeParameter"))
    }
  });
  defineType$3("TypeParameterInstantiation", {
    visitor: ["params"],
    fields: {
      params: validate$6(arrayOfType("FlowType"))
    }
  });
  defineType$3("UnionTypeAnnotation", {
    visitor: ["types"],
    aliases: ["FlowType"],
    fields: {
      types: validate$6(arrayOfType("FlowType"))
    }
  });
  defineType$3("Variance", {
    builder: ["kind"],
    fields: {
      kind: validate$6(assertOneOf("minus", "plus"))
    }
  });
  defineType$3("VoidTypeAnnotation", {
    aliases: ["FlowType", "FlowBaseAnnotation"]
  });
  defineType$3("EnumDeclaration", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "body"],
    fields: {
      id: validateType("Identifier"),
      body: validateType(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"])
    }
  });
  defineType$3("EnumBooleanBody", {
    aliases: ["EnumBody"],
    visitor: ["members"],
    fields: {
      explicitType: validate$6(assertValueType("boolean")),
      members: validateArrayOfType("EnumBooleanMember"),
      hasUnknownMembers: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("EnumNumberBody", {
    aliases: ["EnumBody"],
    visitor: ["members"],
    fields: {
      explicitType: validate$6(assertValueType("boolean")),
      members: validateArrayOfType("EnumNumberMember"),
      hasUnknownMembers: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("EnumStringBody", {
    aliases: ["EnumBody"],
    visitor: ["members"],
    fields: {
      explicitType: validate$6(assertValueType("boolean")),
      members: validateArrayOfType(["EnumStringMember", "EnumDefaultedMember"]),
      hasUnknownMembers: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("EnumSymbolBody", {
    aliases: ["EnumBody"],
    visitor: ["members"],
    fields: {
      members: validateArrayOfType("EnumDefaultedMember"),
      hasUnknownMembers: validate$6(assertValueType("boolean"))
    }
  });
  defineType$3("EnumBooleanMember", {
    aliases: ["EnumMember"],
    visitor: ["id"],
    fields: {
      id: validateType("Identifier"),
      init: validateType("BooleanLiteral")
    }
  });
  defineType$3("EnumNumberMember", {
    aliases: ["EnumMember"],
    visitor: ["id", "init"],
    fields: {
      id: validateType("Identifier"),
      init: validateType("NumericLiteral")
    }
  });
  defineType$3("EnumStringMember", {
    aliases: ["EnumMember"],
    visitor: ["id", "init"],
    fields: {
      id: validateType("Identifier"),
      init: validateType("StringLiteral")
    }
  });
  defineType$3("EnumDefaultedMember", {
    aliases: ["EnumMember"],
    visitor: ["id"],
    fields: {
      id: validateType("Identifier")
    }
  });
  defineType$3("IndexedAccessType", {
    visitor: ["objectType", "indexType"],
    aliases: ["FlowType"],
    fields: {
      objectType: validateType("FlowType"),
      indexType: validateType("FlowType")
    }
  });
  defineType$3("OptionalIndexedAccessType", {
    visitor: ["objectType", "indexType"],
    aliases: ["FlowType"],
    fields: {
      objectType: validateType("FlowType"),
      indexType: validateType("FlowType"),
      optional: validate$6(assertValueType("boolean"))
    }
  });

  var defineType$2 = defineAliasedType("JSX");
  defineType$2("JSXAttribute", {
    visitor: ["name", "value"],
    aliases: ["Immutable"],
    fields: {
      name: {
        validate: assertNodeType("JSXIdentifier", "JSXNamespacedName")
      },
      value: {
        optional: true,
        validate: assertNodeType("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
      }
    }
  });
  defineType$2("JSXClosingElement", {
    visitor: ["name"],
    aliases: ["Immutable"],
    fields: {
      name: {
        validate: assertNodeType("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
      }
    }
  });
  defineType$2("JSXElement", {
    builder: ["openingElement", "closingElement", "children", "selfClosing"],
    visitor: ["openingElement", "children", "closingElement"],
    aliases: ["Immutable", "Expression"],
    fields: Object.assign({
      openingElement: {
        validate: assertNodeType("JSXOpeningElement")
      },
      closingElement: {
        optional: true,
        validate: assertNodeType("JSXClosingElement")
      },
      children: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
      }
    }, {
      selfClosing: {
        validate: assertValueType("boolean"),
        optional: true
      }
    })
  });
  defineType$2("JSXEmptyExpression", {});
  defineType$2("JSXExpressionContainer", {
    visitor: ["expression"],
    aliases: ["Immutable"],
    fields: {
      expression: {
        validate: assertNodeType("Expression", "JSXEmptyExpression")
      }
    }
  });
  defineType$2("JSXSpreadChild", {
    visitor: ["expression"],
    aliases: ["Immutable"],
    fields: {
      expression: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$2("JSXIdentifier", {
    builder: ["name"],
    fields: {
      name: {
        validate: assertValueType("string")
      }
    }
  });
  defineType$2("JSXMemberExpression", {
    visitor: ["object", "property"],
    fields: {
      object: {
        validate: assertNodeType("JSXMemberExpression", "JSXIdentifier")
      },
      property: {
        validate: assertNodeType("JSXIdentifier")
      }
    }
  });
  defineType$2("JSXNamespacedName", {
    visitor: ["namespace", "name"],
    fields: {
      namespace: {
        validate: assertNodeType("JSXIdentifier")
      },
      name: {
        validate: assertNodeType("JSXIdentifier")
      }
    }
  });
  defineType$2("JSXOpeningElement", {
    builder: ["name", "attributes", "selfClosing"],
    visitor: ["name", "attributes"],
    aliases: ["Immutable"],
    fields: {
      name: {
        validate: assertNodeType("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
      },
      selfClosing: {
        "default": false
      },
      attributes: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXAttribute", "JSXSpreadAttribute")))
      },
      typeParameters: {
        validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
        optional: true
      }
    }
  });
  defineType$2("JSXSpreadAttribute", {
    visitor: ["argument"],
    fields: {
      argument: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$2("JSXText", {
    aliases: ["Immutable"],
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    }
  });
  defineType$2("JSXFragment", {
    builder: ["openingFragment", "closingFragment", "children"],
    visitor: ["openingFragment", "children", "closingFragment"],
    aliases: ["Immutable", "Expression"],
    fields: {
      openingFragment: {
        validate: assertNodeType("JSXOpeningFragment")
      },
      closingFragment: {
        validate: assertNodeType("JSXClosingFragment")
      },
      children: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
      }
    }
  });
  defineType$2("JSXOpeningFragment", {
    aliases: ["Immutable"]
  });
  defineType$2("JSXClosingFragment", {
    aliases: ["Immutable"]
  });

  var PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
  var PLACEHOLDERS_ALIAS = {
    Declaration: ["Statement"],
    Pattern: ["PatternLike", "LVal"]
  };
  for (var _i$2 = 0, _PLACEHOLDERS = PLACEHOLDERS; _i$2 < _PLACEHOLDERS.length; _i$2++) {
    var type$2 = _PLACEHOLDERS[_i$2];
    var alias = ALIAS_KEYS[type$2];
    if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type$2] = alias;
  }
  var PLACEHOLDERS_FLIPPED_ALIAS = {};
  Object.keys(PLACEHOLDERS_ALIAS).forEach(function (type) {
    PLACEHOLDERS_ALIAS[type].forEach(function (alias) {
      if (!hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
        PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];
      }
      PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);
    });
  });

  var defineType$1 = defineAliasedType("Miscellaneous");
  {
    defineType$1("Noop", {
      visitor: []
    });
  }
  defineType$1("Placeholder", {
    visitor: [],
    builder: ["expectedNode", "name"],
    fields: {
      name: {
        validate: assertNodeType("Identifier")
      },
      expectedNode: {
        validate: assertOneOf.apply(void 0, _toConsumableArray(PLACEHOLDERS))
      }
    }
  });
  defineType$1("V8IntrinsicIdentifier", {
    builder: ["name"],
    fields: {
      name: {
        validate: assertValueType("string")
      }
    }
  });

  defineType$5("ArgumentPlaceholder", {});
  defineType$5("BindExpression", {
    visitor: ["object", "callee"],
    aliases: ["Expression"],
    fields: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
      object: {
        validate: Object.assign(function () {}, {
          oneOfNodeTypes: ["Expression"]
        })
      },
      callee: {
        validate: Object.assign(function () {}, {
          oneOfNodeTypes: ["Expression"]
        })
      }
    } : {
      object: {
        validate: assertNodeType("Expression")
      },
      callee: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$5("ImportAttribute", {
    visitor: ["key", "value"],
    fields: {
      key: {
        validate: assertNodeType("Identifier", "StringLiteral")
      },
      value: {
        validate: assertNodeType("StringLiteral")
      }
    }
  });
  defineType$5("Decorator", {
    visitor: ["expression"],
    fields: {
      expression: {
        validate: assertNodeType("Expression")
      }
    }
  });
  defineType$5("DoExpression", {
    visitor: ["body"],
    builder: ["body", "async"],
    aliases: ["Expression"],
    fields: {
      body: {
        validate: assertNodeType("BlockStatement")
      },
      async: {
        validate: assertValueType("boolean"),
        "default": false
      }
    }
  });
  defineType$5("ExportDefaultSpecifier", {
    visitor: ["exported"],
    aliases: ["ModuleSpecifier"],
    fields: {
      exported: {
        validate: assertNodeType("Identifier")
      }
    }
  });
  defineType$5("RecordExpression", {
    visitor: ["properties"],
    aliases: ["Expression"],
    fields: {
      properties: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ObjectProperty", "SpreadElement")))
      }
    }
  });
  defineType$5("TupleExpression", {
    fields: {
      elements: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement"))),
        "default": []
      }
    },
    visitor: ["elements"],
    aliases: ["Expression"]
  });
  defineType$5("DecimalLiteral", {
    builder: ["value"],
    fields: {
      value: {
        validate: assertValueType("string")
      }
    },
    aliases: ["Expression", "Pureish", "Literal", "Immutable"]
  });
  defineType$5("ModuleExpression", {
    visitor: ["body"],
    fields: {
      body: {
        validate: assertNodeType("Program")
      }
    },
    aliases: ["Expression"]
  });
  defineType$5("TopicReference", {
    aliases: ["Expression"]
  });
  defineType$5("PipelineTopicExpression", {
    builder: ["expression"],
    visitor: ["expression"],
    fields: {
      expression: {
        validate: assertNodeType("Expression")
      }
    },
    aliases: ["Expression"]
  });
  defineType$5("PipelineBareFunction", {
    builder: ["callee"],
    visitor: ["callee"],
    fields: {
      callee: {
        validate: assertNodeType("Expression")
      }
    },
    aliases: ["Expression"]
  });
  defineType$5("PipelinePrimaryTopicReference", {
    aliases: ["Expression"]
  });

  var defineType = defineAliasedType("TypeScript");
  var bool$b = assertValueType("boolean");
  var tSFunctionTypeAnnotationCommon = function tSFunctionTypeAnnotationCommon() {
    return {
      returnType: {
        validate: assertNodeType("TSTypeAnnotation", "Noop"),
        optional: true
      },
      typeParameters: {
        validate: assertNodeType("TSTypeParameterDeclaration", "Noop"),
        optional: true
      }
    };
  };
  defineType("TSParameterProperty", {
    aliases: ["LVal"],
    visitor: ["parameter"],
    fields: {
      accessibility: {
        validate: assertOneOf("public", "private", "protected"),
        optional: true
      },
      readonly: {
        validate: assertValueType("boolean"),
        optional: true
      },
      parameter: {
        validate: assertNodeType("Identifier", "AssignmentPattern")
      },
      override: {
        validate: assertValueType("boolean"),
        optional: true
      },
      decorators: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
        optional: true
      }
    }
  });
  defineType("TSDeclareFunction", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "typeParameters", "params", "returnType"],
    fields: Object.assign({}, functionDeclarationCommon(), tSFunctionTypeAnnotationCommon())
  });
  defineType("TSDeclareMethod", {
    visitor: ["decorators", "key", "typeParameters", "params", "returnType"],
    fields: Object.assign({}, classMethodOrDeclareMethodCommon(), tSFunctionTypeAnnotationCommon())
  });
  defineType("TSQualifiedName", {
    aliases: ["TSEntityName"],
    visitor: ["left", "right"],
    fields: {
      left: validateType("TSEntityName"),
      right: validateType("Identifier")
    }
  });
  var signatureDeclarationCommon = function signatureDeclarationCommon() {
    var _ref;
    return _ref = {
      typeParameters: validateOptionalType("TSTypeParameterDeclaration")
    }, _ref["parameters"] = validateArrayOfType(["ArrayPattern", "Identifier", "ObjectPattern", "RestElement"]), _ref["typeAnnotation"] = validateOptionalType("TSTypeAnnotation"), _ref;
  };
  var callConstructSignatureDeclaration = {
    aliases: ["TSTypeElement"],
    visitor: ["typeParameters", "parameters", "typeAnnotation"],
    fields: signatureDeclarationCommon()
  };
  defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
  defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
  var namedTypeElementCommon = function namedTypeElementCommon() {
    return {
      key: validateType("Expression"),
      computed: {
        "default": false
      },
      optional: validateOptional(bool$b)
    };
  };
  defineType("TSPropertySignature", {
    aliases: ["TSTypeElement"],
    visitor: ["key", "typeAnnotation"],
    fields: Object.assign({}, namedTypeElementCommon(), {
      readonly: validateOptional(bool$b),
      typeAnnotation: validateOptionalType("TSTypeAnnotation"),
      kind: {
        validate: assertOneOf("get", "set")
      }
    })
  });
  defineType("TSMethodSignature", {
    aliases: ["TSTypeElement"],
    visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
    fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), {
      kind: {
        validate: assertOneOf("method", "get", "set")
      }
    })
  });
  defineType("TSIndexSignature", {
    aliases: ["TSTypeElement"],
    visitor: ["parameters", "typeAnnotation"],
    fields: {
      readonly: validateOptional(bool$b),
      "static": validateOptional(bool$b),
      parameters: validateArrayOfType("Identifier"),
      typeAnnotation: validateOptionalType("TSTypeAnnotation")
    }
  });
  var tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
  for (var _i$1 = 0, _tsKeywordTypes = tsKeywordTypes; _i$1 < _tsKeywordTypes.length; _i$1++) {
    var type$1 = _tsKeywordTypes[_i$1];
    defineType(type$1, {
      aliases: ["TSType", "TSBaseType"],
      visitor: [],
      fields: {}
    });
  }
  defineType("TSThisType", {
    aliases: ["TSType", "TSBaseType"],
    visitor: [],
    fields: {}
  });
  var fnOrCtrBase = {
    aliases: ["TSType"],
    visitor: ["typeParameters", "parameters", "typeAnnotation"]
  };
  defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, {
    fields: signatureDeclarationCommon()
  }));
  defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, {
    fields: Object.assign({}, signatureDeclarationCommon(), {
      "abstract": validateOptional(bool$b)
    })
  }));
  defineType("TSTypeReference", {
    aliases: ["TSType"],
    visitor: ["typeName", "typeParameters"],
    fields: {
      typeName: validateType("TSEntityName"),
      typeParameters: validateOptionalType("TSTypeParameterInstantiation")
    }
  });
  defineType("TSTypePredicate", {
    aliases: ["TSType"],
    visitor: ["parameterName", "typeAnnotation"],
    builder: ["parameterName", "typeAnnotation", "asserts"],
    fields: {
      parameterName: validateType(["Identifier", "TSThisType"]),
      typeAnnotation: validateOptionalType("TSTypeAnnotation"),
      asserts: validateOptional(bool$b)
    }
  });
  defineType("TSTypeQuery", {
    aliases: ["TSType"],
    visitor: ["exprName", "typeParameters"],
    fields: {
      exprName: validateType(["TSEntityName", "TSImportType"]),
      typeParameters: validateOptionalType("TSTypeParameterInstantiation")
    }
  });
  defineType("TSTypeLiteral", {
    aliases: ["TSType"],
    visitor: ["members"],
    fields: {
      members: validateArrayOfType("TSTypeElement")
    }
  });
  defineType("TSArrayType", {
    aliases: ["TSType"],
    visitor: ["elementType"],
    fields: {
      elementType: validateType("TSType")
    }
  });
  defineType("TSTupleType", {
    aliases: ["TSType"],
    visitor: ["elementTypes"],
    fields: {
      elementTypes: validateArrayOfType(["TSType", "TSNamedTupleMember"])
    }
  });
  defineType("TSOptionalType", {
    aliases: ["TSType"],
    visitor: ["typeAnnotation"],
    fields: {
      typeAnnotation: validateType("TSType")
    }
  });
  defineType("TSRestType", {
    aliases: ["TSType"],
    visitor: ["typeAnnotation"],
    fields: {
      typeAnnotation: validateType("TSType")
    }
  });
  defineType("TSNamedTupleMember", {
    visitor: ["label", "elementType"],
    builder: ["label", "elementType", "optional"],
    fields: {
      label: validateType("Identifier"),
      optional: {
        validate: bool$b,
        "default": false
      },
      elementType: validateType("TSType")
    }
  });
  var unionOrIntersection = {
    aliases: ["TSType"],
    visitor: ["types"],
    fields: {
      types: validateArrayOfType("TSType")
    }
  };
  defineType("TSUnionType", unionOrIntersection);
  defineType("TSIntersectionType", unionOrIntersection);
  defineType("TSConditionalType", {
    aliases: ["TSType"],
    visitor: ["checkType", "extendsType", "trueType", "falseType"],
    fields: {
      checkType: validateType("TSType"),
      extendsType: validateType("TSType"),
      trueType: validateType("TSType"),
      falseType: validateType("TSType")
    }
  });
  defineType("TSInferType", {
    aliases: ["TSType"],
    visitor: ["typeParameter"],
    fields: {
      typeParameter: validateType("TSTypeParameter")
    }
  });
  defineType("TSParenthesizedType", {
    aliases: ["TSType"],
    visitor: ["typeAnnotation"],
    fields: {
      typeAnnotation: validateType("TSType")
    }
  });
  defineType("TSTypeOperator", {
    aliases: ["TSType"],
    visitor: ["typeAnnotation"],
    fields: {
      operator: validate$6(assertValueType("string")),
      typeAnnotation: validateType("TSType")
    }
  });
  defineType("TSIndexedAccessType", {
    aliases: ["TSType"],
    visitor: ["objectType", "indexType"],
    fields: {
      objectType: validateType("TSType"),
      indexType: validateType("TSType")
    }
  });
  defineType("TSMappedType", {
    aliases: ["TSType"],
    visitor: ["typeParameter", "nameType", "typeAnnotation"],
    builder: ["typeParameter", "typeAnnotation", "nameType"],
    fields: Object.assign({}, {
      typeParameter: validateType("TSTypeParameter")
    }, {
      readonly: validateOptional(assertOneOf(true, false, "+", "-")),
      optional: validateOptional(assertOneOf(true, false, "+", "-")),
      typeAnnotation: validateOptionalType("TSType"),
      nameType: validateOptionalType("TSType")
    })
  });
  defineType("TSLiteralType", {
    aliases: ["TSType", "TSBaseType"],
    visitor: ["literal"],
    fields: {
      literal: {
        validate: function () {
          var unaryExpression = assertNodeType("NumericLiteral", "BigIntLiteral");
          var unaryOperator = assertOneOf("-");
          var literal = assertNodeType("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral");
          function validator(parent, key, node) {
            if (is("UnaryExpression", node)) {
              unaryOperator(node, "operator", node.operator);
              unaryExpression(node, "argument", node.argument);
            } else {
              literal(parent, key, node);
            }
          }
          validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"];
          return validator;
        }()
      }
    }
  });
  defineType("TSExpressionWithTypeArguments", {
    aliases: ["TSType"],
    visitor: ["expression", "typeParameters"],
    fields: {
      expression: validateType("TSEntityName"),
      typeParameters: validateOptionalType("TSTypeParameterInstantiation")
    }
  });
  defineType("TSInterfaceDeclaration", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "typeParameters", "extends", "body"],
    fields: {
      declare: validateOptional(bool$b),
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TSTypeParameterDeclaration"),
      "extends": validateOptional(arrayOfType("TSExpressionWithTypeArguments")),
      body: validateType("TSInterfaceBody")
    }
  });
  defineType("TSInterfaceBody", {
    visitor: ["body"],
    fields: {
      body: validateArrayOfType("TSTypeElement")
    }
  });
  defineType("TSTypeAliasDeclaration", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "typeParameters", "typeAnnotation"],
    fields: {
      declare: validateOptional(bool$b),
      id: validateType("Identifier"),
      typeParameters: validateOptionalType("TSTypeParameterDeclaration"),
      typeAnnotation: validateType("TSType")
    }
  });
  defineType("TSInstantiationExpression", {
    aliases: ["Expression"],
    visitor: ["expression", "typeParameters"],
    fields: {
      expression: validateType("Expression"),
      typeParameters: validateOptionalType("TSTypeParameterInstantiation")
    }
  });
  var TSTypeExpression$1 = {
    aliases: ["Expression", "LVal", "PatternLike"],
    visitor: ["expression", "typeAnnotation"],
    fields: {
      expression: validateType("Expression"),
      typeAnnotation: validateType("TSType")
    }
  };
  defineType("TSAsExpression", TSTypeExpression$1);
  defineType("TSSatisfiesExpression", TSTypeExpression$1);
  defineType("TSTypeAssertion", {
    aliases: ["Expression", "LVal", "PatternLike"],
    visitor: ["typeAnnotation", "expression"],
    fields: {
      typeAnnotation: validateType("TSType"),
      expression: validateType("Expression")
    }
  });
  defineType("TSEnumDeclaration", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "members"],
    fields: {
      declare: validateOptional(bool$b),
      "const": validateOptional(bool$b),
      id: validateType("Identifier"),
      members: validateArrayOfType("TSEnumMember"),
      initializer: validateOptionalType("Expression")
    }
  });
  defineType("TSEnumMember", {
    visitor: ["id", "initializer"],
    fields: {
      id: validateType(["Identifier", "StringLiteral"]),
      initializer: validateOptionalType("Expression")
    }
  });
  defineType("TSModuleDeclaration", {
    aliases: ["Statement", "Declaration"],
    visitor: ["id", "body"],
    fields: {
      declare: validateOptional(bool$b),
      global: validateOptional(bool$b),
      id: validateType(["Identifier", "StringLiteral"]),
      body: validateType(["TSModuleBlock", "TSModuleDeclaration"])
    }
  });
  defineType("TSModuleBlock", {
    aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"],
    visitor: ["body"],
    fields: {
      body: validateArrayOfType("Statement")
    }
  });
  defineType("TSImportType", {
    aliases: ["TSType"],
    visitor: ["argument", "qualifier", "typeParameters"],
    fields: {
      argument: validateType("StringLiteral"),
      qualifier: validateOptionalType("TSEntityName"),
      typeParameters: validateOptionalType("TSTypeParameterInstantiation"),
      options: {
        validate: assertNodeType("Expression"),
        optional: true
      }
    }
  });
  defineType("TSImportEqualsDeclaration", {
    aliases: ["Statement"],
    visitor: ["id", "moduleReference"],
    fields: {
      isExport: validate$6(bool$b),
      id: validateType("Identifier"),
      moduleReference: validateType(["TSEntityName", "TSExternalModuleReference"]),
      importKind: {
        validate: assertOneOf("type", "value"),
        optional: true
      }
    }
  });
  defineType("TSExternalModuleReference", {
    visitor: ["expression"],
    fields: {
      expression: validateType("StringLiteral")
    }
  });
  defineType("TSNonNullExpression", {
    aliases: ["Expression", "LVal", "PatternLike"],
    visitor: ["expression"],
    fields: {
      expression: validateType("Expression")
    }
  });
  defineType("TSExportAssignment", {
    aliases: ["Statement"],
    visitor: ["expression"],
    fields: {
      expression: validateType("Expression")
    }
  });
  defineType("TSNamespaceExportDeclaration", {
    aliases: ["Statement"],
    visitor: ["id"],
    fields: {
      id: validateType("Identifier")
    }
  });
  defineType("TSTypeAnnotation", {
    visitor: ["typeAnnotation"],
    fields: {
      typeAnnotation: {
        validate: assertNodeType("TSType")
      }
    }
  });
  defineType("TSTypeParameterInstantiation", {
    visitor: ["params"],
    fields: {
      params: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSType")))
      }
    }
  });
  defineType("TSTypeParameterDeclaration", {
    visitor: ["params"],
    fields: {
      params: {
        validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSTypeParameter")))
      }
    }
  });
  defineType("TSTypeParameter", {
    builder: ["constraint", "default", "name"],
    visitor: ["constraint", "default"],
    fields: {
      name: {
        validate: assertValueType("string")
      },
      "in": {
        validate: assertValueType("boolean"),
        optional: true
      },
      out: {
        validate: assertValueType("boolean"),
        optional: true
      },
      "const": {
        validate: assertValueType("boolean"),
        optional: true
      },
      constraint: {
        validate: assertNodeType("TSType"),
        optional: true
      },
      "default": {
        validate: assertNodeType("TSType"),
        optional: true
      }
    }
  });

  var DEPRECATED_ALIASES$1 = {
    ModuleDeclaration: "ImportOrExportDeclaration"
  };

  Object.keys(DEPRECATED_ALIASES$1).forEach(function (deprecatedAlias) {
    FLIPPED_ALIAS_KEYS$3[deprecatedAlias] = FLIPPED_ALIAS_KEYS$3[DEPRECATED_ALIASES$1[deprecatedAlias]];
  });
  toFastProperties(VISITOR_KEYS$5);
  toFastProperties(ALIAS_KEYS);
  toFastProperties(FLIPPED_ALIAS_KEYS$3);
  toFastProperties(NODE_FIELDS);
  toFastProperties(BUILDER_KEYS);
  toFastProperties(DEPRECATED_KEYS$1);
  toFastProperties(PLACEHOLDERS_ALIAS);
  toFastProperties(PLACEHOLDERS_FLIPPED_ALIAS);
  var TYPES$1 = [].concat(Object.keys(VISITOR_KEYS$5), Object.keys(FLIPPED_ALIAS_KEYS$3), Object.keys(DEPRECATED_KEYS$1));

  function validate$5(node, key, val) {
    if (!node) return;
    var fields = NODE_FIELDS[node.type];
    if (!fields) return;
    var field = fields[key];
    validateField(node, key, val, field);
    validateChild(node, key, val);
  }
  function validateField(node, key, val, field) {
    if (!(field != null && field.validate)) return;
    if (field.optional && val == null) return;
    field.validate(node, key, val);
  }
  function validateChild(node, key, val) {
    if (val == null) return;
    var validate = NODE_PARENT_VALIDATIONS[val.type];
    if (!validate) return;
    validate(node, key, val);
  }

  function validateNode(node) {
    var keys = BUILDER_KEYS[node.type];
    for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
      var key = _step.value;
      validate$5(node, key, node[key]);
    }
    return node;
  }

  function arrayExpression$1(elements) {
    if (elements === void 0) {
      elements = [];
    }
    return validateNode({
      type: "ArrayExpression",
      elements: elements
    });
  }
  function assignmentExpression$b(operator, left, right) {
    return validateNode({
      type: "AssignmentExpression",
      operator: operator,
      left: left,
      right: right
    });
  }
  function binaryExpression$5(operator, left, right) {
    return validateNode({
      type: "BinaryExpression",
      operator: operator,
      left: left,
      right: right
    });
  }
  function interpreterDirective$1(value) {
    return validateNode({
      type: "InterpreterDirective",
      value: value
    });
  }
  function directive(value) {
    return validateNode({
      type: "Directive",
      value: value
    });
  }
  function directiveLiteral(value) {
    return validateNode({
      type: "DirectiveLiteral",
      value: value
    });
  }
  function blockStatement$6(body, directives) {
    if (directives === void 0) {
      directives = [];
    }
    return validateNode({
      type: "BlockStatement",
      body: body,
      directives: directives
    });
  }
  function breakStatement(label) {
    if (label === void 0) {
      label = null;
    }
    return validateNode({
      type: "BreakStatement",
      label: label
    });
  }
  function callExpression$c(callee, _arguments) {
    return validateNode({
      type: "CallExpression",
      callee: callee,
      arguments: _arguments
    });
  }
  function catchClause(param, body) {
    if (param === void 0) {
      param = null;
    }
    return validateNode({
      type: "CatchClause",
      param: param,
      body: body
    });
  }
  function conditionalExpression$5(test, consequent, alternate) {
    return validateNode({
      type: "ConditionalExpression",
      test: test,
      consequent: consequent,
      alternate: alternate
    });
  }
  function continueStatement(label) {
    if (label === void 0) {
      label = null;
    }
    return validateNode({
      type: "ContinueStatement",
      label: label
    });
  }
  function debuggerStatement() {
    return {
      type: "DebuggerStatement"
    };
  }
  function doWhileStatement(test, body) {
    return validateNode({
      type: "DoWhileStatement",
      test: test,
      body: body
    });
  }
  function emptyStatement$1() {
    return {
      type: "EmptyStatement"
    };
  }
  function expressionStatement$7(expression) {
    return validateNode({
      type: "ExpressionStatement",
      expression: expression
    });
  }
  function file$1(program, comments, tokens) {
    if (comments === void 0) {
      comments = null;
    }
    if (tokens === void 0) {
      tokens = null;
    }
    return validateNode({
      type: "File",
      program: program,
      comments: comments,
      tokens: tokens
    });
  }
  function forInStatement(left, right, body) {
    return validateNode({
      type: "ForInStatement",
      left: left,
      right: right,
      body: body
    });
  }
  function forStatement(init, test, update, body) {
    if (init === void 0) {
      init = null;
    }
    if (test === void 0) {
      test = null;
    }
    if (update === void 0) {
      update = null;
    }
    return validateNode({
      type: "ForStatement",
      init: init,
      test: test,
      update: update,
      body: body
    });
  }
  function functionDeclaration(id, params, body, generator, async) {
    if (id === void 0) {
      id = null;
    }
    if (generator === void 0) {
      generator = false;
    }
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "FunctionDeclaration",
      id: id,
      params: params,
      body: body,
      generator: generator,
      async: async
    });
  }
  function functionExpression$2(id, params, body, generator, async) {
    if (id === void 0) {
      id = null;
    }
    if (generator === void 0) {
      generator = false;
    }
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "FunctionExpression",
      id: id,
      params: params,
      body: body,
      generator: generator,
      async: async
    });
  }
  function identifier$e(name) {
    return validateNode({
      type: "Identifier",
      name: name
    });
  }
  function ifStatement(test, consequent, alternate) {
    if (alternate === void 0) {
      alternate = null;
    }
    return validateNode({
      type: "IfStatement",
      test: test,
      consequent: consequent,
      alternate: alternate
    });
  }
  function labeledStatement(label, body) {
    return validateNode({
      type: "LabeledStatement",
      label: label,
      body: body
    });
  }
  function stringLiteral$6(value) {
    return validateNode({
      type: "StringLiteral",
      value: value
    });
  }
  function numericLiteral$6(value) {
    return validateNode({
      type: "NumericLiteral",
      value: value
    });
  }
  function nullLiteral$2() {
    return {
      type: "NullLiteral"
    };
  }
  function booleanLiteral$2(value) {
    return validateNode({
      type: "BooleanLiteral",
      value: value
    });
  }
  function regExpLiteral(pattern, flags) {
    if (flags === void 0) {
      flags = "";
    }
    return validateNode({
      type: "RegExpLiteral",
      pattern: pattern,
      flags: flags
    });
  }
  function logicalExpression$3(operator, left, right) {
    return validateNode({
      type: "LogicalExpression",
      operator: operator,
      left: left,
      right: right
    });
  }
  function memberExpression$a(object, property, computed, optional) {
    if (computed === void 0) {
      computed = false;
    }
    if (optional === void 0) {
      optional = null;
    }
    return validateNode({
      type: "MemberExpression",
      object: object,
      property: property,
      computed: computed,
      optional: optional
    });
  }
  function newExpression(callee, _arguments) {
    return validateNode({
      type: "NewExpression",
      callee: callee,
      arguments: _arguments
    });
  }
  function program$3(body, directives, sourceType, interpreter) {
    if (directives === void 0) {
      directives = [];
    }
    if (sourceType === void 0) {
      sourceType = "script";
    }
    if (interpreter === void 0) {
      interpreter = null;
    }
    return validateNode({
      type: "Program",
      body: body,
      directives: directives,
      sourceType: sourceType,
      interpreter: interpreter
    });
  }
  function objectExpression$3(properties) {
    return validateNode({
      type: "ObjectExpression",
      properties: properties
    });
  }
  function objectMethod(kind, key, params, body, computed, generator, async) {
    if (kind === void 0) {
      kind = "method";
    }
    if (computed === void 0) {
      computed = false;
    }
    if (generator === void 0) {
      generator = false;
    }
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "ObjectMethod",
      kind: kind,
      key: key,
      params: params,
      body: body,
      computed: computed,
      generator: generator,
      async: async
    });
  }
  function objectProperty$1(key, value, computed, shorthand, decorators) {
    if (computed === void 0) {
      computed = false;
    }
    if (shorthand === void 0) {
      shorthand = false;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    return validateNode({
      type: "ObjectProperty",
      key: key,
      value: value,
      computed: computed,
      shorthand: shorthand,
      decorators: decorators
    });
  }
  function restElement$2(argument) {
    return validateNode({
      type: "RestElement",
      argument: argument
    });
  }
  function returnStatement$3(argument) {
    if (argument === void 0) {
      argument = null;
    }
    return validateNode({
      type: "ReturnStatement",
      argument: argument
    });
  }
  function sequenceExpression$8(expressions) {
    return validateNode({
      type: "SequenceExpression",
      expressions: expressions
    });
  }
  function parenthesizedExpression(expression) {
    return validateNode({
      type: "ParenthesizedExpression",
      expression: expression
    });
  }
  function switchCase(test, consequent) {
    if (test === void 0) {
      test = null;
    }
    return validateNode({
      type: "SwitchCase",
      test: test,
      consequent: consequent
    });
  }
  function switchStatement(discriminant, cases) {
    return validateNode({
      type: "SwitchStatement",
      discriminant: discriminant,
      cases: cases
    });
  }
  function thisExpression$4() {
    return {
      type: "ThisExpression"
    };
  }
  function throwStatement(argument) {
    return validateNode({
      type: "ThrowStatement",
      argument: argument
    });
  }
  function tryStatement(block, handler, finalizer) {
    if (handler === void 0) {
      handler = null;
    }
    if (finalizer === void 0) {
      finalizer = null;
    }
    return validateNode({
      type: "TryStatement",
      block: block,
      handler: handler,
      finalizer: finalizer
    });
  }
  function unaryExpression$5(operator, argument, prefix) {
    if (prefix === void 0) {
      prefix = true;
    }
    return validateNode({
      type: "UnaryExpression",
      operator: operator,
      argument: argument,
      prefix: prefix
    });
  }
  function updateExpression$1(operator, argument, prefix) {
    if (prefix === void 0) {
      prefix = false;
    }
    return validateNode({
      type: "UpdateExpression",
      operator: operator,
      argument: argument,
      prefix: prefix
    });
  }
  function variableDeclaration$6(kind, declarations) {
    return validateNode({
      type: "VariableDeclaration",
      kind: kind,
      declarations: declarations
    });
  }
  function variableDeclarator$6(id, init) {
    if (init === void 0) {
      init = null;
    }
    return validateNode({
      type: "VariableDeclarator",
      id: id,
      init: init
    });
  }
  function whileStatement(test, body) {
    return validateNode({
      type: "WhileStatement",
      test: test,
      body: body
    });
  }
  function withStatement(object, body) {
    return validateNode({
      type: "WithStatement",
      object: object,
      body: body
    });
  }
  function assignmentPattern(left, right) {
    return validateNode({
      type: "AssignmentPattern",
      left: left,
      right: right
    });
  }
  function arrayPattern(elements) {
    return validateNode({
      type: "ArrayPattern",
      elements: elements
    });
  }
  function arrowFunctionExpression$4(params, body, async) {
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "ArrowFunctionExpression",
      params: params,
      body: body,
      async: async,
      expression: null
    });
  }
  function classBody(body) {
    return validateNode({
      type: "ClassBody",
      body: body
    });
  }
  function classExpression(id, superClass, body, decorators) {
    if (id === void 0) {
      id = null;
    }
    if (superClass === void 0) {
      superClass = null;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    return validateNode({
      type: "ClassExpression",
      id: id,
      superClass: superClass,
      body: body,
      decorators: decorators
    });
  }
  function classDeclaration(id, superClass, body, decorators) {
    if (id === void 0) {
      id = null;
    }
    if (superClass === void 0) {
      superClass = null;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    return validateNode({
      type: "ClassDeclaration",
      id: id,
      superClass: superClass,
      body: body,
      decorators: decorators
    });
  }
  function exportAllDeclaration(source) {
    return validateNode({
      type: "ExportAllDeclaration",
      source: source
    });
  }
  function exportDefaultDeclaration(declaration) {
    return validateNode({
      type: "ExportDefaultDeclaration",
      declaration: declaration
    });
  }
  function exportNamedDeclaration$2(declaration, specifiers, source) {
    if (declaration === void 0) {
      declaration = null;
    }
    if (specifiers === void 0) {
      specifiers = [];
    }
    if (source === void 0) {
      source = null;
    }
    return validateNode({
      type: "ExportNamedDeclaration",
      declaration: declaration,
      specifiers: specifiers,
      source: source
    });
  }
  function exportSpecifier$2(local, exported) {
    return validateNode({
      type: "ExportSpecifier",
      local: local,
      exported: exported
    });
  }
  function forOfStatement(left, right, body, _await) {
    if (_await === void 0) {
      _await = false;
    }
    return validateNode({
      type: "ForOfStatement",
      left: left,
      right: right,
      body: body,
      "await": _await
    });
  }
  function importDeclaration$1(specifiers, source) {
    return validateNode({
      type: "ImportDeclaration",
      specifiers: specifiers,
      source: source
    });
  }
  function importDefaultSpecifier$1(local) {
    return validateNode({
      type: "ImportDefaultSpecifier",
      local: local
    });
  }
  function importNamespaceSpecifier$1(local) {
    return validateNode({
      type: "ImportNamespaceSpecifier",
      local: local
    });
  }
  function importSpecifier$2(local, imported) {
    return validateNode({
      type: "ImportSpecifier",
      local: local,
      imported: imported
    });
  }
  function importExpression(source, options) {
    if (options === void 0) {
      options = null;
    }
    return validateNode({
      type: "ImportExpression",
      source: source,
      options: options
    });
  }
  function metaProperty$1(meta, property) {
    return validateNode({
      type: "MetaProperty",
      meta: meta,
      property: property
    });
  }
  function classMethod(kind, key, params, body, computed, _static, generator, async) {
    if (kind === void 0) {
      kind = "method";
    }
    if (computed === void 0) {
      computed = false;
    }
    if (_static === void 0) {
      _static = false;
    }
    if (generator === void 0) {
      generator = false;
    }
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "ClassMethod",
      kind: kind,
      key: key,
      params: params,
      body: body,
      computed: computed,
      "static": _static,
      generator: generator,
      async: async
    });
  }
  function objectPattern$1(properties) {
    return validateNode({
      type: "ObjectPattern",
      properties: properties
    });
  }
  function spreadElement$2(argument) {
    return validateNode({
      type: "SpreadElement",
      argument: argument
    });
  }
  function _super$1() {
    return {
      type: "Super"
    };
  }
  function taggedTemplateExpression(tag, quasi) {
    return validateNode({
      type: "TaggedTemplateExpression",
      tag: tag,
      quasi: quasi
    });
  }
  function templateElement(value, tail) {
    if (tail === void 0) {
      tail = false;
    }
    return validateNode({
      type: "TemplateElement",
      value: value,
      tail: tail
    });
  }
  function templateLiteral(quasis, expressions) {
    return validateNode({
      type: "TemplateLiteral",
      quasis: quasis,
      expressions: expressions
    });
  }
  function yieldExpression$2(argument, delegate) {
    if (argument === void 0) {
      argument = null;
    }
    if (delegate === void 0) {
      delegate = false;
    }
    return validateNode({
      type: "YieldExpression",
      argument: argument,
      delegate: delegate
    });
  }
  function awaitExpression$1(argument) {
    return validateNode({
      type: "AwaitExpression",
      argument: argument
    });
  }
  function _import() {
    return {
      type: "Import"
    };
  }
  function bigIntLiteral(value) {
    return validateNode({
      type: "BigIntLiteral",
      value: value
    });
  }
  function exportNamespaceSpecifier(exported) {
    return validateNode({
      type: "ExportNamespaceSpecifier",
      exported: exported
    });
  }
  function optionalMemberExpression$2(object, property, computed, optional) {
    if (computed === void 0) {
      computed = false;
    }
    return validateNode({
      type: "OptionalMemberExpression",
      object: object,
      property: property,
      computed: computed,
      optional: optional
    });
  }
  function optionalCallExpression$2(callee, _arguments, optional) {
    return validateNode({
      type: "OptionalCallExpression",
      callee: callee,
      arguments: _arguments,
      optional: optional
    });
  }
  function classProperty(key, value, typeAnnotation, decorators, computed, _static) {
    if (value === void 0) {
      value = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    if (computed === void 0) {
      computed = false;
    }
    if (_static === void 0) {
      _static = false;
    }
    return validateNode({
      type: "ClassProperty",
      key: key,
      value: value,
      typeAnnotation: typeAnnotation,
      decorators: decorators,
      computed: computed,
      "static": _static
    });
  }
  function classAccessorProperty(key, value, typeAnnotation, decorators, computed, _static) {
    if (value === void 0) {
      value = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    if (computed === void 0) {
      computed = false;
    }
    if (_static === void 0) {
      _static = false;
    }
    return validateNode({
      type: "ClassAccessorProperty",
      key: key,
      value: value,
      typeAnnotation: typeAnnotation,
      decorators: decorators,
      computed: computed,
      "static": _static
    });
  }
  function classPrivateProperty(key, value, decorators, _static) {
    if (value === void 0) {
      value = null;
    }
    if (decorators === void 0) {
      decorators = null;
    }
    if (_static === void 0) {
      _static = false;
    }
    return validateNode({
      type: "ClassPrivateProperty",
      key: key,
      value: value,
      decorators: decorators,
      "static": _static
    });
  }
  function classPrivateMethod(kind, key, params, body, _static) {
    if (kind === void 0) {
      kind = "method";
    }
    if (_static === void 0) {
      _static = false;
    }
    return validateNode({
      type: "ClassPrivateMethod",
      kind: kind,
      key: key,
      params: params,
      body: body,
      "static": _static
    });
  }
  function privateName(id) {
    return validateNode({
      type: "PrivateName",
      id: id
    });
  }
  function staticBlock(body) {
    return validateNode({
      type: "StaticBlock",
      body: body
    });
  }
  function anyTypeAnnotation$2() {
    return {
      type: "AnyTypeAnnotation"
    };
  }
  function arrayTypeAnnotation$1(elementType) {
    return validateNode({
      type: "ArrayTypeAnnotation",
      elementType: elementType
    });
  }
  function booleanTypeAnnotation$1() {
    return {
      type: "BooleanTypeAnnotation"
    };
  }
  function booleanLiteralTypeAnnotation(value) {
    return validateNode({
      type: "BooleanLiteralTypeAnnotation",
      value: value
    });
  }
  function nullLiteralTypeAnnotation$1() {
    return {
      type: "NullLiteralTypeAnnotation"
    };
  }
  function classImplements(id, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "ClassImplements",
      id: id,
      typeParameters: typeParameters
    });
  }
  function declareClass(id, typeParameters, _extends, body) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (_extends === void 0) {
      _extends = null;
    }
    return validateNode({
      type: "DeclareClass",
      id: id,
      typeParameters: typeParameters,
      "extends": _extends,
      body: body
    });
  }
  function declareFunction(id) {
    return validateNode({
      type: "DeclareFunction",
      id: id
    });
  }
  function declareInterface(id, typeParameters, _extends, body) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (_extends === void 0) {
      _extends = null;
    }
    return validateNode({
      type: "DeclareInterface",
      id: id,
      typeParameters: typeParameters,
      "extends": _extends,
      body: body
    });
  }
  function declareModule(id, body, kind) {
    if (kind === void 0) {
      kind = null;
    }
    return validateNode({
      type: "DeclareModule",
      id: id,
      body: body,
      kind: kind
    });
  }
  function declareModuleExports(typeAnnotation) {
    return validateNode({
      type: "DeclareModuleExports",
      typeAnnotation: typeAnnotation
    });
  }
  function declareTypeAlias(id, typeParameters, right) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "DeclareTypeAlias",
      id: id,
      typeParameters: typeParameters,
      right: right
    });
  }
  function declareOpaqueType(id, typeParameters, supertype) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (supertype === void 0) {
      supertype = null;
    }
    return validateNode({
      type: "DeclareOpaqueType",
      id: id,
      typeParameters: typeParameters,
      supertype: supertype
    });
  }
  function declareVariable(id) {
    return validateNode({
      type: "DeclareVariable",
      id: id
    });
  }
  function declareExportDeclaration(declaration, specifiers, source) {
    if (declaration === void 0) {
      declaration = null;
    }
    if (specifiers === void 0) {
      specifiers = null;
    }
    if (source === void 0) {
      source = null;
    }
    return validateNode({
      type: "DeclareExportDeclaration",
      declaration: declaration,
      specifiers: specifiers,
      source: source
    });
  }
  function declareExportAllDeclaration(source) {
    return validateNode({
      type: "DeclareExportAllDeclaration",
      source: source
    });
  }
  function declaredPredicate(value) {
    return validateNode({
      type: "DeclaredPredicate",
      value: value
    });
  }
  function existsTypeAnnotation() {
    return {
      type: "ExistsTypeAnnotation"
    };
  }
  function functionTypeAnnotation(typeParameters, params, rest, returnType) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (rest === void 0) {
      rest = null;
    }
    return validateNode({
      type: "FunctionTypeAnnotation",
      typeParameters: typeParameters,
      params: params,
      rest: rest,
      returnType: returnType
    });
  }
  function functionTypeParam(name, typeAnnotation) {
    if (name === void 0) {
      name = null;
    }
    return validateNode({
      type: "FunctionTypeParam",
      name: name,
      typeAnnotation: typeAnnotation
    });
  }
  function genericTypeAnnotation$1(id, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "GenericTypeAnnotation",
      id: id,
      typeParameters: typeParameters
    });
  }
  function inferredPredicate() {
    return {
      type: "InferredPredicate"
    };
  }
  function interfaceExtends(id, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "InterfaceExtends",
      id: id,
      typeParameters: typeParameters
    });
  }
  function interfaceDeclaration(id, typeParameters, _extends, body) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (_extends === void 0) {
      _extends = null;
    }
    return validateNode({
      type: "InterfaceDeclaration",
      id: id,
      typeParameters: typeParameters,
      "extends": _extends,
      body: body
    });
  }
  function interfaceTypeAnnotation(_extends, body) {
    if (_extends === void 0) {
      _extends = null;
    }
    return validateNode({
      type: "InterfaceTypeAnnotation",
      "extends": _extends,
      body: body
    });
  }
  function intersectionTypeAnnotation(types) {
    return validateNode({
      type: "IntersectionTypeAnnotation",
      types: types
    });
  }
  function mixedTypeAnnotation() {
    return {
      type: "MixedTypeAnnotation"
    };
  }
  function emptyTypeAnnotation() {
    return {
      type: "EmptyTypeAnnotation"
    };
  }
  function nullableTypeAnnotation(typeAnnotation) {
    return validateNode({
      type: "NullableTypeAnnotation",
      typeAnnotation: typeAnnotation
    });
  }
  function numberLiteralTypeAnnotation(value) {
    return validateNode({
      type: "NumberLiteralTypeAnnotation",
      value: value
    });
  }
  function numberTypeAnnotation$2() {
    return {
      type: "NumberTypeAnnotation"
    };
  }
  function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) {
    if (indexers === void 0) {
      indexers = [];
    }
    if (callProperties === void 0) {
      callProperties = [];
    }
    if (internalSlots === void 0) {
      internalSlots = [];
    }
    if (exact === void 0) {
      exact = false;
    }
    return validateNode({
      type: "ObjectTypeAnnotation",
      properties: properties,
      indexers: indexers,
      callProperties: callProperties,
      internalSlots: internalSlots,
      exact: exact
    });
  }
  function objectTypeInternalSlot(id, value, optional, _static, method) {
    return validateNode({
      type: "ObjectTypeInternalSlot",
      id: id,
      value: value,
      optional: optional,
      "static": _static,
      method: method
    });
  }
  function objectTypeCallProperty(value) {
    return validateNode({
      type: "ObjectTypeCallProperty",
      value: value,
      "static": null
    });
  }
  function objectTypeIndexer(id, key, value, variance) {
    if (id === void 0) {
      id = null;
    }
    if (variance === void 0) {
      variance = null;
    }
    return validateNode({
      type: "ObjectTypeIndexer",
      id: id,
      key: key,
      value: value,
      variance: variance,
      "static": null
    });
  }
  function objectTypeProperty(key, value, variance) {
    if (variance === void 0) {
      variance = null;
    }
    return validateNode({
      type: "ObjectTypeProperty",
      key: key,
      value: value,
      variance: variance,
      kind: null,
      method: null,
      optional: null,
      proto: null,
      "static": null
    });
  }
  function objectTypeSpreadProperty(argument) {
    return validateNode({
      type: "ObjectTypeSpreadProperty",
      argument: argument
    });
  }
  function opaqueType(id, typeParameters, supertype, impltype) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (supertype === void 0) {
      supertype = null;
    }
    return validateNode({
      type: "OpaqueType",
      id: id,
      typeParameters: typeParameters,
      supertype: supertype,
      impltype: impltype
    });
  }
  function qualifiedTypeIdentifier(id, qualification) {
    return validateNode({
      type: "QualifiedTypeIdentifier",
      id: id,
      qualification: qualification
    });
  }
  function stringLiteralTypeAnnotation(value) {
    return validateNode({
      type: "StringLiteralTypeAnnotation",
      value: value
    });
  }
  function stringTypeAnnotation$2() {
    return {
      type: "StringTypeAnnotation"
    };
  }
  function symbolTypeAnnotation() {
    return {
      type: "SymbolTypeAnnotation"
    };
  }
  function thisTypeAnnotation() {
    return {
      type: "ThisTypeAnnotation"
    };
  }
  function tupleTypeAnnotation$1(types) {
    return validateNode({
      type: "TupleTypeAnnotation",
      types: types
    });
  }
  function typeofTypeAnnotation(argument) {
    return validateNode({
      type: "TypeofTypeAnnotation",
      argument: argument
    });
  }
  function typeAlias(id, typeParameters, right) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TypeAlias",
      id: id,
      typeParameters: typeParameters,
      right: right
    });
  }
  function typeAnnotation(typeAnnotation) {
    return validateNode({
      type: "TypeAnnotation",
      typeAnnotation: typeAnnotation
    });
  }
  function typeCastExpression(expression, typeAnnotation) {
    return validateNode({
      type: "TypeCastExpression",
      expression: expression,
      typeAnnotation: typeAnnotation
    });
  }
  function typeParameter(bound, _default, variance) {
    if (bound === void 0) {
      bound = null;
    }
    if (_default === void 0) {
      _default = null;
    }
    if (variance === void 0) {
      variance = null;
    }
    return validateNode({
      type: "TypeParameter",
      bound: bound,
      "default": _default,
      variance: variance,
      name: null
    });
  }
  function typeParameterDeclaration(params) {
    return validateNode({
      type: "TypeParameterDeclaration",
      params: params
    });
  }
  function typeParameterInstantiation(params) {
    return validateNode({
      type: "TypeParameterInstantiation",
      params: params
    });
  }
  function unionTypeAnnotation$1(types) {
    return validateNode({
      type: "UnionTypeAnnotation",
      types: types
    });
  }
  function variance(kind) {
    return validateNode({
      type: "Variance",
      kind: kind
    });
  }
  function voidTypeAnnotation$3() {
    return {
      type: "VoidTypeAnnotation"
    };
  }
  function enumDeclaration(id, body) {
    return validateNode({
      type: "EnumDeclaration",
      id: id,
      body: body
    });
  }
  function enumBooleanBody(members) {
    return validateNode({
      type: "EnumBooleanBody",
      members: members,
      explicitType: null,
      hasUnknownMembers: null
    });
  }
  function enumNumberBody(members) {
    return validateNode({
      type: "EnumNumberBody",
      members: members,
      explicitType: null,
      hasUnknownMembers: null
    });
  }
  function enumStringBody(members) {
    return validateNode({
      type: "EnumStringBody",
      members: members,
      explicitType: null,
      hasUnknownMembers: null
    });
  }
  function enumSymbolBody(members) {
    return validateNode({
      type: "EnumSymbolBody",
      members: members,
      hasUnknownMembers: null
    });
  }
  function enumBooleanMember(id) {
    return validateNode({
      type: "EnumBooleanMember",
      id: id,
      init: null
    });
  }
  function enumNumberMember(id, init) {
    return validateNode({
      type: "EnumNumberMember",
      id: id,
      init: init
    });
  }
  function enumStringMember(id, init) {
    return validateNode({
      type: "EnumStringMember",
      id: id,
      init: init
    });
  }
  function enumDefaultedMember(id) {
    return validateNode({
      type: "EnumDefaultedMember",
      id: id
    });
  }
  function indexedAccessType(objectType, indexType) {
    return validateNode({
      type: "IndexedAccessType",
      objectType: objectType,
      indexType: indexType
    });
  }
  function optionalIndexedAccessType(objectType, indexType) {
    return validateNode({
      type: "OptionalIndexedAccessType",
      objectType: objectType,
      indexType: indexType,
      optional: null
    });
  }
  function jsxAttribute(name, value) {
    if (value === void 0) {
      value = null;
    }
    return validateNode({
      type: "JSXAttribute",
      name: name,
      value: value
    });
  }
  function jsxClosingElement(name) {
    return validateNode({
      type: "JSXClosingElement",
      name: name
    });
  }
  function jsxElement(openingElement, closingElement, children, selfClosing) {
    if (closingElement === void 0) {
      closingElement = null;
    }
    if (selfClosing === void 0) {
      selfClosing = null;
    }
    return validateNode({
      type: "JSXElement",
      openingElement: openingElement,
      closingElement: closingElement,
      children: children,
      selfClosing: selfClosing
    });
  }
  function jsxEmptyExpression() {
    return {
      type: "JSXEmptyExpression"
    };
  }
  function jsxExpressionContainer$1(expression) {
    return validateNode({
      type: "JSXExpressionContainer",
      expression: expression
    });
  }
  function jsxSpreadChild(expression) {
    return validateNode({
      type: "JSXSpreadChild",
      expression: expression
    });
  }
  function jsxIdentifier$1(name) {
    return validateNode({
      type: "JSXIdentifier",
      name: name
    });
  }
  function jsxMemberExpression(object, property) {
    return validateNode({
      type: "JSXMemberExpression",
      object: object,
      property: property
    });
  }
  function jsxNamespacedName(namespace, name) {
    return validateNode({
      type: "JSXNamespacedName",
      namespace: namespace,
      name: name
    });
  }
  function jsxOpeningElement(name, attributes, selfClosing) {
    if (selfClosing === void 0) {
      selfClosing = false;
    }
    return validateNode({
      type: "JSXOpeningElement",
      name: name,
      attributes: attributes,
      selfClosing: selfClosing
    });
  }
  function jsxSpreadAttribute(argument) {
    return validateNode({
      type: "JSXSpreadAttribute",
      argument: argument
    });
  }
  function jsxText(value) {
    return validateNode({
      type: "JSXText",
      value: value
    });
  }
  function jsxFragment(openingFragment, closingFragment, children) {
    return validateNode({
      type: "JSXFragment",
      openingFragment: openingFragment,
      closingFragment: closingFragment,
      children: children
    });
  }
  function jsxOpeningFragment() {
    return {
      type: "JSXOpeningFragment"
    };
  }
  function jsxClosingFragment() {
    return {
      type: "JSXClosingFragment"
    };
  }
  function noop$1() {
    return {
      type: "Noop"
    };
  }
  function placeholder(expectedNode, name) {
    return validateNode({
      type: "Placeholder",
      expectedNode: expectedNode,
      name: name
    });
  }
  function v8IntrinsicIdentifier(name) {
    return validateNode({
      type: "V8IntrinsicIdentifier",
      name: name
    });
  }
  function argumentPlaceholder() {
    return {
      type: "ArgumentPlaceholder"
    };
  }
  function bindExpression(object, callee) {
    return validateNode({
      type: "BindExpression",
      object: object,
      callee: callee
    });
  }
  function importAttribute(key, value) {
    return validateNode({
      type: "ImportAttribute",
      key: key,
      value: value
    });
  }
  function decorator(expression) {
    return validateNode({
      type: "Decorator",
      expression: expression
    });
  }
  function doExpression(body, async) {
    if (async === void 0) {
      async = false;
    }
    return validateNode({
      type: "DoExpression",
      body: body,
      async: async
    });
  }
  function exportDefaultSpecifier(exported) {
    return validateNode({
      type: "ExportDefaultSpecifier",
      exported: exported
    });
  }
  function recordExpression(properties) {
    return validateNode({
      type: "RecordExpression",
      properties: properties
    });
  }
  function tupleExpression(elements) {
    if (elements === void 0) {
      elements = [];
    }
    return validateNode({
      type: "TupleExpression",
      elements: elements
    });
  }
  function decimalLiteral(value) {
    return validateNode({
      type: "DecimalLiteral",
      value: value
    });
  }
  function moduleExpression(body) {
    return validateNode({
      type: "ModuleExpression",
      body: body
    });
  }
  function topicReference() {
    return {
      type: "TopicReference"
    };
  }
  function pipelineTopicExpression(expression) {
    return validateNode({
      type: "PipelineTopicExpression",
      expression: expression
    });
  }
  function pipelineBareFunction(callee) {
    return validateNode({
      type: "PipelineBareFunction",
      callee: callee
    });
  }
  function pipelinePrimaryTopicReference() {
    return {
      type: "PipelinePrimaryTopicReference"
    };
  }
  function tsParameterProperty(parameter) {
    return validateNode({
      type: "TSParameterProperty",
      parameter: parameter
    });
  }
  function tsDeclareFunction(id, typeParameters, params, returnType) {
    if (id === void 0) {
      id = null;
    }
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (returnType === void 0) {
      returnType = null;
    }
    return validateNode({
      type: "TSDeclareFunction",
      id: id,
      typeParameters: typeParameters,
      params: params,
      returnType: returnType
    });
  }
  function tsDeclareMethod(decorators, key, typeParameters, params, returnType) {
    if (decorators === void 0) {
      decorators = null;
    }
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (returnType === void 0) {
      returnType = null;
    }
    return validateNode({
      type: "TSDeclareMethod",
      decorators: decorators,
      key: key,
      typeParameters: typeParameters,
      params: params,
      returnType: returnType
    });
  }
  function tsQualifiedName(left, right) {
    return validateNode({
      type: "TSQualifiedName",
      left: left,
      right: right
    });
  }
  function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSCallSignatureDeclaration",
      typeParameters: typeParameters,
      parameters: parameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSConstructSignatureDeclaration",
      typeParameters: typeParameters,
      parameters: parameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsPropertySignature(key, typeAnnotation) {
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSPropertySignature",
      key: key,
      typeAnnotation: typeAnnotation,
      kind: null
    });
  }
  function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSMethodSignature",
      key: key,
      typeParameters: typeParameters,
      parameters: parameters,
      typeAnnotation: typeAnnotation,
      kind: null
    });
  }
  function tsIndexSignature(parameters, typeAnnotation) {
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSIndexSignature",
      parameters: parameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsAnyKeyword() {
    return {
      type: "TSAnyKeyword"
    };
  }
  function tsBooleanKeyword() {
    return {
      type: "TSBooleanKeyword"
    };
  }
  function tsBigIntKeyword() {
    return {
      type: "TSBigIntKeyword"
    };
  }
  function tsIntrinsicKeyword() {
    return {
      type: "TSIntrinsicKeyword"
    };
  }
  function tsNeverKeyword() {
    return {
      type: "TSNeverKeyword"
    };
  }
  function tsNullKeyword() {
    return {
      type: "TSNullKeyword"
    };
  }
  function tsNumberKeyword() {
    return {
      type: "TSNumberKeyword"
    };
  }
  function tsObjectKeyword() {
    return {
      type: "TSObjectKeyword"
    };
  }
  function tsStringKeyword() {
    return {
      type: "TSStringKeyword"
    };
  }
  function tsSymbolKeyword() {
    return {
      type: "TSSymbolKeyword"
    };
  }
  function tsUndefinedKeyword() {
    return {
      type: "TSUndefinedKeyword"
    };
  }
  function tsUnknownKeyword() {
    return {
      type: "TSUnknownKeyword"
    };
  }
  function tsVoidKeyword() {
    return {
      type: "TSVoidKeyword"
    };
  }
  function tsThisType() {
    return {
      type: "TSThisType"
    };
  }
  function tsFunctionType(typeParameters, parameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSFunctionType",
      typeParameters: typeParameters,
      parameters: parameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsConstructorType(typeParameters, parameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    return validateNode({
      type: "TSConstructorType",
      typeParameters: typeParameters,
      parameters: parameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsTypeReference(typeName, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSTypeReference",
      typeName: typeName,
      typeParameters: typeParameters
    });
  }
  function tsTypePredicate(parameterName, typeAnnotation, asserts) {
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    if (asserts === void 0) {
      asserts = null;
    }
    return validateNode({
      type: "TSTypePredicate",
      parameterName: parameterName,
      typeAnnotation: typeAnnotation,
      asserts: asserts
    });
  }
  function tsTypeQuery(exprName, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSTypeQuery",
      exprName: exprName,
      typeParameters: typeParameters
    });
  }
  function tsTypeLiteral(members) {
    return validateNode({
      type: "TSTypeLiteral",
      members: members
    });
  }
  function tsArrayType(elementType) {
    return validateNode({
      type: "TSArrayType",
      elementType: elementType
    });
  }
  function tsTupleType(elementTypes) {
    return validateNode({
      type: "TSTupleType",
      elementTypes: elementTypes
    });
  }
  function tsOptionalType(typeAnnotation) {
    return validateNode({
      type: "TSOptionalType",
      typeAnnotation: typeAnnotation
    });
  }
  function tsRestType(typeAnnotation) {
    return validateNode({
      type: "TSRestType",
      typeAnnotation: typeAnnotation
    });
  }
  function tsNamedTupleMember(label, elementType, optional) {
    if (optional === void 0) {
      optional = false;
    }
    return validateNode({
      type: "TSNamedTupleMember",
      label: label,
      elementType: elementType,
      optional: optional
    });
  }
  function tsUnionType(types) {
    return validateNode({
      type: "TSUnionType",
      types: types
    });
  }
  function tsIntersectionType(types) {
    return validateNode({
      type: "TSIntersectionType",
      types: types
    });
  }
  function tsConditionalType(checkType, extendsType, trueType, falseType) {
    return validateNode({
      type: "TSConditionalType",
      checkType: checkType,
      extendsType: extendsType,
      trueType: trueType,
      falseType: falseType
    });
  }
  function tsInferType(typeParameter) {
    return validateNode({
      type: "TSInferType",
      typeParameter: typeParameter
    });
  }
  function tsParenthesizedType(typeAnnotation) {
    return validateNode({
      type: "TSParenthesizedType",
      typeAnnotation: typeAnnotation
    });
  }
  function tsTypeOperator(typeAnnotation) {
    return validateNode({
      type: "TSTypeOperator",
      typeAnnotation: typeAnnotation,
      operator: null
    });
  }
  function tsIndexedAccessType(objectType, indexType) {
    return validateNode({
      type: "TSIndexedAccessType",
      objectType: objectType,
      indexType: indexType
    });
  }
  function tsMappedType(typeParameter, typeAnnotation, nameType) {
    if (typeAnnotation === void 0) {
      typeAnnotation = null;
    }
    if (nameType === void 0) {
      nameType = null;
    }
    return validateNode({
      type: "TSMappedType",
      typeParameter: typeParameter,
      typeAnnotation: typeAnnotation,
      nameType: nameType
    });
  }
  function tsLiteralType(literal) {
    return validateNode({
      type: "TSLiteralType",
      literal: literal
    });
  }
  function tsExpressionWithTypeArguments(expression, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSExpressionWithTypeArguments",
      expression: expression,
      typeParameters: typeParameters
    });
  }
  function tsInterfaceDeclaration(id, typeParameters, _extends, body) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    if (_extends === void 0) {
      _extends = null;
    }
    return validateNode({
      type: "TSInterfaceDeclaration",
      id: id,
      typeParameters: typeParameters,
      "extends": _extends,
      body: body
    });
  }
  function tsInterfaceBody(body) {
    return validateNode({
      type: "TSInterfaceBody",
      body: body
    });
  }
  function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSTypeAliasDeclaration",
      id: id,
      typeParameters: typeParameters,
      typeAnnotation: typeAnnotation
    });
  }
  function tsInstantiationExpression(expression, typeParameters) {
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSInstantiationExpression",
      expression: expression,
      typeParameters: typeParameters
    });
  }
  function tsAsExpression(expression, typeAnnotation) {
    return validateNode({
      type: "TSAsExpression",
      expression: expression,
      typeAnnotation: typeAnnotation
    });
  }
  function tsSatisfiesExpression(expression, typeAnnotation) {
    return validateNode({
      type: "TSSatisfiesExpression",
      expression: expression,
      typeAnnotation: typeAnnotation
    });
  }
  function tsTypeAssertion(typeAnnotation, expression) {
    return validateNode({
      type: "TSTypeAssertion",
      typeAnnotation: typeAnnotation,
      expression: expression
    });
  }
  function tsEnumDeclaration(id, members) {
    return validateNode({
      type: "TSEnumDeclaration",
      id: id,
      members: members
    });
  }
  function tsEnumMember(id, initializer) {
    if (initializer === void 0) {
      initializer = null;
    }
    return validateNode({
      type: "TSEnumMember",
      id: id,
      initializer: initializer
    });
  }
  function tsModuleDeclaration(id, body) {
    return validateNode({
      type: "TSModuleDeclaration",
      id: id,
      body: body
    });
  }
  function tsModuleBlock(body) {
    return validateNode({
      type: "TSModuleBlock",
      body: body
    });
  }
  function tsImportType(argument, qualifier, typeParameters) {
    if (qualifier === void 0) {
      qualifier = null;
    }
    if (typeParameters === void 0) {
      typeParameters = null;
    }
    return validateNode({
      type: "TSImportType",
      argument: argument,
      qualifier: qualifier,
      typeParameters: typeParameters
    });
  }
  function tsImportEqualsDeclaration(id, moduleReference) {
    return validateNode({
      type: "TSImportEqualsDeclaration",
      id: id,
      moduleReference: moduleReference,
      isExport: null
    });
  }
  function tsExternalModuleReference(expression) {
    return validateNode({
      type: "TSExternalModuleReference",
      expression: expression
    });
  }
  function tsNonNullExpression(expression) {
    return validateNode({
      type: "TSNonNullExpression",
      expression: expression
    });
  }
  function tsExportAssignment(expression) {
    return validateNode({
      type: "TSExportAssignment",
      expression: expression
    });
  }
  function tsNamespaceExportDeclaration(id) {
    return validateNode({
      type: "TSNamespaceExportDeclaration",
      id: id
    });
  }
  function tsTypeAnnotation(typeAnnotation) {
    return validateNode({
      type: "TSTypeAnnotation",
      typeAnnotation: typeAnnotation
    });
  }
  function tsTypeParameterInstantiation(params) {
    return validateNode({
      type: "TSTypeParameterInstantiation",
      params: params
    });
  }
  function tsTypeParameterDeclaration(params) {
    return validateNode({
      type: "TSTypeParameterDeclaration",
      params: params
    });
  }
  function tsTypeParameter(constraint, _default, name) {
    if (constraint === void 0) {
      constraint = null;
    }
    if (_default === void 0) {
      _default = null;
    }
    return validateNode({
      type: "TSTypeParameter",
      constraint: constraint,
      "default": _default,
      name: name
    });
  }
  function NumberLiteral(value) {
    deprecationWarning$1("NumberLiteral", "NumericLiteral", "The node type ");
    return numericLiteral$6(value);
  }
  function RegexLiteral(pattern, flags) {
    if (flags === void 0) {
      flags = "";
    }
    deprecationWarning$1("RegexLiteral", "RegExpLiteral", "The node type ");
    return regExpLiteral(pattern, flags);
  }
  function RestProperty$1(argument) {
    deprecationWarning$1("RestProperty", "RestElement", "The node type ");
    return restElement$2(argument);
  }
  function SpreadProperty$1(argument) {
    deprecationWarning$1("SpreadProperty", "SpreadElement", "The node type ");
    return spreadElement$2(argument);
  }

  function cleanJSXElementLiteralChild(child, args) {
    var lines = child.value.split(/\r\n|\n|\r/);
    var lastNonEmptyLine = 0;
    for (var i = 0; i < lines.length; i++) {
      if (/[^ \t]/.exec(lines[i])) {
        lastNonEmptyLine = i;
      }
    }
    var str = "";
    for (var _i = 0; _i < lines.length; _i++) {
      var line = lines[_i];
      var isFirstLine = _i === 0;
      var isLastLine = _i === lines.length - 1;
      var isLastNonEmptyLine = _i === lastNonEmptyLine;
      var trimmedLine = line.replace(/\t/g, " ");
      if (!isFirstLine) {
        trimmedLine = trimmedLine.replace(/^ +/, "");
      }
      if (!isLastLine) {
        trimmedLine = trimmedLine.replace(/ +$/, "");
      }
      if (trimmedLine) {
        if (!isLastNonEmptyLine) {
          trimmedLine += " ";
        }
        str += trimmedLine;
      }
    }
    if (str) args.push(inherits$3(stringLiteral$6(str), child));
  }

  function buildChildren(node) {
    var elements = [];
    for (var i = 0; i < node.children.length; i++) {
      var child = node.children[i];
      if (isJSXText(child)) {
        cleanJSXElementLiteralChild(child, elements);
        continue;
      }
      if (isJSXExpressionContainer$1(child)) child = child.expression;
      if (isJSXEmptyExpression(child)) continue;
      elements.push(child);
    }
    return elements;
  }

  function isNode(node) {
    return !!(node && VISITOR_KEYS$5[node.type]);
  }

  function assertNode(node) {
    if (!isNode(node)) {
      var _node$type;
      var type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
      throw new TypeError("Not a valid node of type \"" + type + "\"");
    }
  }

  function assert$2(type, node, opts) {
    if (!is(type, node, opts)) {
      throw new Error("Expected type \"" + type + "\" with option " + JSON.stringify(opts) + ", " + ("but instead got \"" + node.type + "\"."));
    }
  }
  function assertArrayExpression(node, opts) {
    assert$2("ArrayExpression", node, opts);
  }
  function assertAssignmentExpression(node, opts) {
    assert$2("AssignmentExpression", node, opts);
  }
  function assertBinaryExpression(node, opts) {
    assert$2("BinaryExpression", node, opts);
  }
  function assertInterpreterDirective(node, opts) {
    assert$2("InterpreterDirective", node, opts);
  }
  function assertDirective(node, opts) {
    assert$2("Directive", node, opts);
  }
  function assertDirectiveLiteral(node, opts) {
    assert$2("DirectiveLiteral", node, opts);
  }
  function assertBlockStatement(node, opts) {
    assert$2("BlockStatement", node, opts);
  }
  function assertBreakStatement(node, opts) {
    assert$2("BreakStatement", node, opts);
  }
  function assertCallExpression(node, opts) {
    assert$2("CallExpression", node, opts);
  }
  function assertCatchClause(node, opts) {
    assert$2("CatchClause", node, opts);
  }
  function assertConditionalExpression(node, opts) {
    assert$2("ConditionalExpression", node, opts);
  }
  function assertContinueStatement(node, opts) {
    assert$2("ContinueStatement", node, opts);
  }
  function assertDebuggerStatement(node, opts) {
    assert$2("DebuggerStatement", node, opts);
  }
  function assertDoWhileStatement(node, opts) {
    assert$2("DoWhileStatement", node, opts);
  }
  function assertEmptyStatement(node, opts) {
    assert$2("EmptyStatement", node, opts);
  }
  function assertExpressionStatement$1(node, opts) {
    assert$2("ExpressionStatement", node, opts);
  }
  function assertFile(node, opts) {
    assert$2("File", node, opts);
  }
  function assertForInStatement(node, opts) {
    assert$2("ForInStatement", node, opts);
  }
  function assertForStatement(node, opts) {
    assert$2("ForStatement", node, opts);
  }
  function assertFunctionDeclaration(node, opts) {
    assert$2("FunctionDeclaration", node, opts);
  }
  function assertFunctionExpression(node, opts) {
    assert$2("FunctionExpression", node, opts);
  }
  function assertIdentifier(node, opts) {
    assert$2("Identifier", node, opts);
  }
  function assertIfStatement(node, opts) {
    assert$2("IfStatement", node, opts);
  }
  function assertLabeledStatement(node, opts) {
    assert$2("LabeledStatement", node, opts);
  }
  function assertStringLiteral(node, opts) {
    assert$2("StringLiteral", node, opts);
  }
  function assertNumericLiteral(node, opts) {
    assert$2("NumericLiteral", node, opts);
  }
  function assertNullLiteral(node, opts) {
    assert$2("NullLiteral", node, opts);
  }
  function assertBooleanLiteral(node, opts) {
    assert$2("BooleanLiteral", node, opts);
  }
  function assertRegExpLiteral(node, opts) {
    assert$2("RegExpLiteral", node, opts);
  }
  function assertLogicalExpression(node, opts) {
    assert$2("LogicalExpression", node, opts);
  }
  function assertMemberExpression(node, opts) {
    assert$2("MemberExpression", node, opts);
  }
  function assertNewExpression(node, opts) {
    assert$2("NewExpression", node, opts);
  }
  function assertProgram(node, opts) {
    assert$2("Program", node, opts);
  }
  function assertObjectExpression(node, opts) {
    assert$2("ObjectExpression", node, opts);
  }
  function assertObjectMethod(node, opts) {
    assert$2("ObjectMethod", node, opts);
  }
  function assertObjectProperty(node, opts) {
    assert$2("ObjectProperty", node, opts);
  }
  function assertRestElement(node, opts) {
    assert$2("RestElement", node, opts);
  }
  function assertReturnStatement(node, opts) {
    assert$2("ReturnStatement", node, opts);
  }
  function assertSequenceExpression(node, opts) {
    assert$2("SequenceExpression", node, opts);
  }
  function assertParenthesizedExpression(node, opts) {
    assert$2("ParenthesizedExpression", node, opts);
  }
  function assertSwitchCase(node, opts) {
    assert$2("SwitchCase", node, opts);
  }
  function assertSwitchStatement(node, opts) {
    assert$2("SwitchStatement", node, opts);
  }
  function assertThisExpression(node, opts) {
    assert$2("ThisExpression", node, opts);
  }
  function assertThrowStatement(node, opts) {
    assert$2("ThrowStatement", node, opts);
  }
  function assertTryStatement(node, opts) {
    assert$2("TryStatement", node, opts);
  }
  function assertUnaryExpression(node, opts) {
    assert$2("UnaryExpression", node, opts);
  }
  function assertUpdateExpression(node, opts) {
    assert$2("UpdateExpression", node, opts);
  }
  function assertVariableDeclaration(node, opts) {
    assert$2("VariableDeclaration", node, opts);
  }
  function assertVariableDeclarator(node, opts) {
    assert$2("VariableDeclarator", node, opts);
  }
  function assertWhileStatement(node, opts) {
    assert$2("WhileStatement", node, opts);
  }
  function assertWithStatement(node, opts) {
    assert$2("WithStatement", node, opts);
  }
  function assertAssignmentPattern(node, opts) {
    assert$2("AssignmentPattern", node, opts);
  }
  function assertArrayPattern(node, opts) {
    assert$2("ArrayPattern", node, opts);
  }
  function assertArrowFunctionExpression(node, opts) {
    assert$2("ArrowFunctionExpression", node, opts);
  }
  function assertClassBody(node, opts) {
    assert$2("ClassBody", node, opts);
  }
  function assertClassExpression(node, opts) {
    assert$2("ClassExpression", node, opts);
  }
  function assertClassDeclaration(node, opts) {
    assert$2("ClassDeclaration", node, opts);
  }
  function assertExportAllDeclaration(node, opts) {
    assert$2("ExportAllDeclaration", node, opts);
  }
  function assertExportDefaultDeclaration(node, opts) {
    assert$2("ExportDefaultDeclaration", node, opts);
  }
  function assertExportNamedDeclaration(node, opts) {
    assert$2("ExportNamedDeclaration", node, opts);
  }
  function assertExportSpecifier$1(node, opts) {
    assert$2("ExportSpecifier", node, opts);
  }
  function assertForOfStatement(node, opts) {
    assert$2("ForOfStatement", node, opts);
  }
  function assertImportDeclaration(node, opts) {
    assert$2("ImportDeclaration", node, opts);
  }
  function assertImportDefaultSpecifier(node, opts) {
    assert$2("ImportDefaultSpecifier", node, opts);
  }
  function assertImportNamespaceSpecifier(node, opts) {
    assert$2("ImportNamespaceSpecifier", node, opts);
  }
  function assertImportSpecifier(node, opts) {
    assert$2("ImportSpecifier", node, opts);
  }
  function assertImportExpression(node, opts) {
    assert$2("ImportExpression", node, opts);
  }
  function assertMetaProperty(node, opts) {
    assert$2("MetaProperty", node, opts);
  }
  function assertClassMethod(node, opts) {
    assert$2("ClassMethod", node, opts);
  }
  function assertObjectPattern(node, opts) {
    assert$2("ObjectPattern", node, opts);
  }
  function assertSpreadElement(node, opts) {
    assert$2("SpreadElement", node, opts);
  }
  function assertSuper(node, opts) {
    assert$2("Super", node, opts);
  }
  function assertTaggedTemplateExpression(node, opts) {
    assert$2("TaggedTemplateExpression", node, opts);
  }
  function assertTemplateElement(node, opts) {
    assert$2("TemplateElement", node, opts);
  }
  function assertTemplateLiteral(node, opts) {
    assert$2("TemplateLiteral", node, opts);
  }
  function assertYieldExpression(node, opts) {
    assert$2("YieldExpression", node, opts);
  }
  function assertAwaitExpression(node, opts) {
    assert$2("AwaitExpression", node, opts);
  }
  function assertImport(node, opts) {
    assert$2("Import", node, opts);
  }
  function assertBigIntLiteral(node, opts) {
    assert$2("BigIntLiteral", node, opts);
  }
  function assertExportNamespaceSpecifier(node, opts) {
    assert$2("ExportNamespaceSpecifier", node, opts);
  }
  function assertOptionalMemberExpression(node, opts) {
    assert$2("OptionalMemberExpression", node, opts);
  }
  function assertOptionalCallExpression(node, opts) {
    assert$2("OptionalCallExpression", node, opts);
  }
  function assertClassProperty(node, opts) {
    assert$2("ClassProperty", node, opts);
  }
  function assertClassAccessorProperty(node, opts) {
    assert$2("ClassAccessorProperty", node, opts);
  }
  function assertClassPrivateProperty(node, opts) {
    assert$2("ClassPrivateProperty", node, opts);
  }
  function assertClassPrivateMethod(node, opts) {
    assert$2("ClassPrivateMethod", node, opts);
  }
  function assertPrivateName(node, opts) {
    assert$2("PrivateName", node, opts);
  }
  function assertStaticBlock(node, opts) {
    assert$2("StaticBlock", node, opts);
  }
  function assertAnyTypeAnnotation(node, opts) {
    assert$2("AnyTypeAnnotation", node, opts);
  }
  function assertArrayTypeAnnotation(node, opts) {
    assert$2("ArrayTypeAnnotation", node, opts);
  }
  function assertBooleanTypeAnnotation(node, opts) {
    assert$2("BooleanTypeAnnotation", node, opts);
  }
  function assertBooleanLiteralTypeAnnotation(node, opts) {
    assert$2("BooleanLiteralTypeAnnotation", node, opts);
  }
  function assertNullLiteralTypeAnnotation(node, opts) {
    assert$2("NullLiteralTypeAnnotation", node, opts);
  }
  function assertClassImplements(node, opts) {
    assert$2("ClassImplements", node, opts);
  }
  function assertDeclareClass(node, opts) {
    assert$2("DeclareClass", node, opts);
  }
  function assertDeclareFunction(node, opts) {
    assert$2("DeclareFunction", node, opts);
  }
  function assertDeclareInterface(node, opts) {
    assert$2("DeclareInterface", node, opts);
  }
  function assertDeclareModule(node, opts) {
    assert$2("DeclareModule", node, opts);
  }
  function assertDeclareModuleExports(node, opts) {
    assert$2("DeclareModuleExports", node, opts);
  }
  function assertDeclareTypeAlias(node, opts) {
    assert$2("DeclareTypeAlias", node, opts);
  }
  function assertDeclareOpaqueType(node, opts) {
    assert$2("DeclareOpaqueType", node, opts);
  }
  function assertDeclareVariable(node, opts) {
    assert$2("DeclareVariable", node, opts);
  }
  function assertDeclareExportDeclaration(node, opts) {
    assert$2("DeclareExportDeclaration", node, opts);
  }
  function assertDeclareExportAllDeclaration(node, opts) {
    assert$2("DeclareExportAllDeclaration", node, opts);
  }
  function assertDeclaredPredicate(node, opts) {
    assert$2("DeclaredPredicate", node, opts);
  }
  function assertExistsTypeAnnotation(node, opts) {
    assert$2("ExistsTypeAnnotation", node, opts);
  }
  function assertFunctionTypeAnnotation(node, opts) {
    assert$2("FunctionTypeAnnotation", node, opts);
  }
  function assertFunctionTypeParam(node, opts) {
    assert$2("FunctionTypeParam", node, opts);
  }
  function assertGenericTypeAnnotation(node, opts) {
    assert$2("GenericTypeAnnotation", node, opts);
  }
  function assertInferredPredicate(node, opts) {
    assert$2("InferredPredicate", node, opts);
  }
  function assertInterfaceExtends(node, opts) {
    assert$2("InterfaceExtends", node, opts);
  }
  function assertInterfaceDeclaration(node, opts) {
    assert$2("InterfaceDeclaration", node, opts);
  }
  function assertInterfaceTypeAnnotation(node, opts) {
    assert$2("InterfaceTypeAnnotation", node, opts);
  }
  function assertIntersectionTypeAnnotation(node, opts) {
    assert$2("IntersectionTypeAnnotation", node, opts);
  }
  function assertMixedTypeAnnotation(node, opts) {
    assert$2("MixedTypeAnnotation", node, opts);
  }
  function assertEmptyTypeAnnotation(node, opts) {
    assert$2("EmptyTypeAnnotation", node, opts);
  }
  function assertNullableTypeAnnotation(node, opts) {
    assert$2("NullableTypeAnnotation", node, opts);
  }
  function assertNumberLiteralTypeAnnotation(node, opts) {
    assert$2("NumberLiteralTypeAnnotation", node, opts);
  }
  function assertNumberTypeAnnotation(node, opts) {
    assert$2("NumberTypeAnnotation", node, opts);
  }
  function assertObjectTypeAnnotation(node, opts) {
    assert$2("ObjectTypeAnnotation", node, opts);
  }
  function assertObjectTypeInternalSlot(node, opts) {
    assert$2("ObjectTypeInternalSlot", node, opts);
  }
  function assertObjectTypeCallProperty(node, opts) {
    assert$2("ObjectTypeCallProperty", node, opts);
  }
  function assertObjectTypeIndexer(node, opts) {
    assert$2("ObjectTypeIndexer", node, opts);
  }
  function assertObjectTypeProperty(node, opts) {
    assert$2("ObjectTypeProperty", node, opts);
  }
  function assertObjectTypeSpreadProperty(node, opts) {
    assert$2("ObjectTypeSpreadProperty", node, opts);
  }
  function assertOpaqueType(node, opts) {
    assert$2("OpaqueType", node, opts);
  }
  function assertQualifiedTypeIdentifier(node, opts) {
    assert$2("QualifiedTypeIdentifier", node, opts);
  }
  function assertStringLiteralTypeAnnotation(node, opts) {
    assert$2("StringLiteralTypeAnnotation", node, opts);
  }
  function assertStringTypeAnnotation(node, opts) {
    assert$2("StringTypeAnnotation", node, opts);
  }
  function assertSymbolTypeAnnotation(node, opts) {
    assert$2("SymbolTypeAnnotation", node, opts);
  }
  function assertThisTypeAnnotation(node, opts) {
    assert$2("ThisTypeAnnotation", node, opts);
  }
  function assertTupleTypeAnnotation(node, opts) {
    assert$2("TupleTypeAnnotation", node, opts);
  }
  function assertTypeofTypeAnnotation(node, opts) {
    assert$2("TypeofTypeAnnotation", node, opts);
  }
  function assertTypeAlias(node, opts) {
    assert$2("TypeAlias", node, opts);
  }
  function assertTypeAnnotation(node, opts) {
    assert$2("TypeAnnotation", node, opts);
  }
  function assertTypeCastExpression(node, opts) {
    assert$2("TypeCastExpression", node, opts);
  }
  function assertTypeParameter(node, opts) {
    assert$2("TypeParameter", node, opts);
  }
  function assertTypeParameterDeclaration(node, opts) {
    assert$2("TypeParameterDeclaration", node, opts);
  }
  function assertTypeParameterInstantiation(node, opts) {
    assert$2("TypeParameterInstantiation", node, opts);
  }
  function assertUnionTypeAnnotation(node, opts) {
    assert$2("UnionTypeAnnotation", node, opts);
  }
  function assertVariance(node, opts) {
    assert$2("Variance", node, opts);
  }
  function assertVoidTypeAnnotation(node, opts) {
    assert$2("VoidTypeAnnotation", node, opts);
  }
  function assertEnumDeclaration(node, opts) {
    assert$2("EnumDeclaration", node, opts);
  }
  function assertEnumBooleanBody(node, opts) {
    assert$2("EnumBooleanBody", node, opts);
  }
  function assertEnumNumberBody(node, opts) {
    assert$2("EnumNumberBody", node, opts);
  }
  function assertEnumStringBody(node, opts) {
    assert$2("EnumStringBody", node, opts);
  }
  function assertEnumSymbolBody(node, opts) {
    assert$2("EnumSymbolBody", node, opts);
  }
  function assertEnumBooleanMember(node, opts) {
    assert$2("EnumBooleanMember", node, opts);
  }
  function assertEnumNumberMember(node, opts) {
    assert$2("EnumNumberMember", node, opts);
  }
  function assertEnumStringMember(node, opts) {
    assert$2("EnumStringMember", node, opts);
  }
  function assertEnumDefaultedMember(node, opts) {
    assert$2("EnumDefaultedMember", node, opts);
  }
  function assertIndexedAccessType(node, opts) {
    assert$2("IndexedAccessType", node, opts);
  }
  function assertOptionalIndexedAccessType(node, opts) {
    assert$2("OptionalIndexedAccessType", node, opts);
  }
  function assertJSXAttribute(node, opts) {
    assert$2("JSXAttribute", node, opts);
  }
  function assertJSXClosingElement(node, opts) {
    assert$2("JSXClosingElement", node, opts);
  }
  function assertJSXElement(node, opts) {
    assert$2("JSXElement", node, opts);
  }
  function assertJSXEmptyExpression(node, opts) {
    assert$2("JSXEmptyExpression", node, opts);
  }
  function assertJSXExpressionContainer(node, opts) {
    assert$2("JSXExpressionContainer", node, opts);
  }
  function assertJSXSpreadChild(node, opts) {
    assert$2("JSXSpreadChild", node, opts);
  }
  function assertJSXIdentifier(node, opts) {
    assert$2("JSXIdentifier", node, opts);
  }
  function assertJSXMemberExpression(node, opts) {
    assert$2("JSXMemberExpression", node, opts);
  }
  function assertJSXNamespacedName(node, opts) {
    assert$2("JSXNamespacedName", node, opts);
  }
  function assertJSXOpeningElement(node, opts) {
    assert$2("JSXOpeningElement", node, opts);
  }
  function assertJSXSpreadAttribute(node, opts) {
    assert$2("JSXSpreadAttribute", node, opts);
  }
  function assertJSXText(node, opts) {
    assert$2("JSXText", node, opts);
  }
  function assertJSXFragment(node, opts) {
    assert$2("JSXFragment", node, opts);
  }
  function assertJSXOpeningFragment(node, opts) {
    assert$2("JSXOpeningFragment", node, opts);
  }
  function assertJSXClosingFragment(node, opts) {
    assert$2("JSXClosingFragment", node, opts);
  }
  function assertNoop(node, opts) {
    assert$2("Noop", node, opts);
  }
  function assertPlaceholder(node, opts) {
    assert$2("Placeholder", node, opts);
  }
  function assertV8IntrinsicIdentifier(node, opts) {
    assert$2("V8IntrinsicIdentifier", node, opts);
  }
  function assertArgumentPlaceholder(node, opts) {
    assert$2("ArgumentPlaceholder", node, opts);
  }
  function assertBindExpression(node, opts) {
    assert$2("BindExpression", node, opts);
  }
  function assertImportAttribute(node, opts) {
    assert$2("ImportAttribute", node, opts);
  }
  function assertDecorator(node, opts) {
    assert$2("Decorator", node, opts);
  }
  function assertDoExpression(node, opts) {
    assert$2("DoExpression", node, opts);
  }
  function assertExportDefaultSpecifier(node, opts) {
    assert$2("ExportDefaultSpecifier", node, opts);
  }
  function assertRecordExpression(node, opts) {
    assert$2("RecordExpression", node, opts);
  }
  function assertTupleExpression(node, opts) {
    assert$2("TupleExpression", node, opts);
  }
  function assertDecimalLiteral(node, opts) {
    assert$2("DecimalLiteral", node, opts);
  }
  function assertModuleExpression(node, opts) {
    assert$2("ModuleExpression", node, opts);
  }
  function assertTopicReference(node, opts) {
    assert$2("TopicReference", node, opts);
  }
  function assertPipelineTopicExpression(node, opts) {
    assert$2("PipelineTopicExpression", node, opts);
  }
  function assertPipelineBareFunction(node, opts) {
    assert$2("PipelineBareFunction", node, opts);
  }
  function assertPipelinePrimaryTopicReference(node, opts) {
    assert$2("PipelinePrimaryTopicReference", node, opts);
  }
  function assertTSParameterProperty(node, opts) {
    assert$2("TSParameterProperty", node, opts);
  }
  function assertTSDeclareFunction(node, opts) {
    assert$2("TSDeclareFunction", node, opts);
  }
  function assertTSDeclareMethod(node, opts) {
    assert$2("TSDeclareMethod", node, opts);
  }
  function assertTSQualifiedName(node, opts) {
    assert$2("TSQualifiedName", node, opts);
  }
  function assertTSCallSignatureDeclaration(node, opts) {
    assert$2("TSCallSignatureDeclaration", node, opts);
  }
  function assertTSConstructSignatureDeclaration(node, opts) {
    assert$2("TSConstructSignatureDeclaration", node, opts);
  }
  function assertTSPropertySignature(node, opts) {
    assert$2("TSPropertySignature", node, opts);
  }
  function assertTSMethodSignature(node, opts) {
    assert$2("TSMethodSignature", node, opts);
  }
  function assertTSIndexSignature(node, opts) {
    assert$2("TSIndexSignature", node, opts);
  }
  function assertTSAnyKeyword(node, opts) {
    assert$2("TSAnyKeyword", node, opts);
  }
  function assertTSBooleanKeyword(node, opts) {
    assert$2("TSBooleanKeyword", node, opts);
  }
  function assertTSBigIntKeyword(node, opts) {
    assert$2("TSBigIntKeyword", node, opts);
  }
  function assertTSIntrinsicKeyword(node, opts) {
    assert$2("TSIntrinsicKeyword", node, opts);
  }
  function assertTSNeverKeyword(node, opts) {
    assert$2("TSNeverKeyword", node, opts);
  }
  function assertTSNullKeyword(node, opts) {
    assert$2("TSNullKeyword", node, opts);
  }
  function assertTSNumberKeyword(node, opts) {
    assert$2("TSNumberKeyword", node, opts);
  }
  function assertTSObjectKeyword(node, opts) {
    assert$2("TSObjectKeyword", node, opts);
  }
  function assertTSStringKeyword(node, opts) {
    assert$2("TSStringKeyword", node, opts);
  }
  function assertTSSymbolKeyword(node, opts) {
    assert$2("TSSymbolKeyword", node, opts);
  }
  function assertTSUndefinedKeyword(node, opts) {
    assert$2("TSUndefinedKeyword", node, opts);
  }
  function assertTSUnknownKeyword(node, opts) {
    assert$2("TSUnknownKeyword", node, opts);
  }
  function assertTSVoidKeyword(node, opts) {
    assert$2("TSVoidKeyword", node, opts);
  }
  function assertTSThisType(node, opts) {
    assert$2("TSThisType", node, opts);
  }
  function assertTSFunctionType(node, opts) {
    assert$2("TSFunctionType", node, opts);
  }
  function assertTSConstructorType(node, opts) {
    assert$2("TSConstructorType", node, opts);
  }
  function assertTSTypeReference(node, opts) {
    assert$2("TSTypeReference", node, opts);
  }
  function assertTSTypePredicate(node, opts) {
    assert$2("TSTypePredicate", node, opts);
  }
  function assertTSTypeQuery(node, opts) {
    assert$2("TSTypeQuery", node, opts);
  }
  function assertTSTypeLiteral(node, opts) {
    assert$2("TSTypeLiteral", node, opts);
  }
  function assertTSArrayType(node, opts) {
    assert$2("TSArrayType", node, opts);
  }
  function assertTSTupleType(node, opts) {
    assert$2("TSTupleType", node, opts);
  }
  function assertTSOptionalType(node, opts) {
    assert$2("TSOptionalType", node, opts);
  }
  function assertTSRestType(node, opts) {
    assert$2("TSRestType", node, opts);
  }
  function assertTSNamedTupleMember(node, opts) {
    assert$2("TSNamedTupleMember", node, opts);
  }
  function assertTSUnionType(node, opts) {
    assert$2("TSUnionType", node, opts);
  }
  function assertTSIntersectionType(node, opts) {
    assert$2("TSIntersectionType", node, opts);
  }
  function assertTSConditionalType(node, opts) {
    assert$2("TSConditionalType", node, opts);
  }
  function assertTSInferType(node, opts) {
    assert$2("TSInferType", node, opts);
  }
  function assertTSParenthesizedType(node, opts) {
    assert$2("TSParenthesizedType", node, opts);
  }
  function assertTSTypeOperator(node, opts) {
    assert$2("TSTypeOperator", node, opts);
  }
  function assertTSIndexedAccessType(node, opts) {
    assert$2("TSIndexedAccessType", node, opts);
  }
  function assertTSMappedType(node, opts) {
    assert$2("TSMappedType", node, opts);
  }
  function assertTSLiteralType(node, opts) {
    assert$2("TSLiteralType", node, opts);
  }
  function assertTSExpressionWithTypeArguments(node, opts) {
    assert$2("TSExpressionWithTypeArguments", node, opts);
  }
  function assertTSInterfaceDeclaration(node, opts) {
    assert$2("TSInterfaceDeclaration", node, opts);
  }
  function assertTSInterfaceBody(node, opts) {
    assert$2("TSInterfaceBody", node, opts);
  }
  function assertTSTypeAliasDeclaration(node, opts) {
    assert$2("TSTypeAliasDeclaration", node, opts);
  }
  function assertTSInstantiationExpression(node, opts) {
    assert$2("TSInstantiationExpression", node, opts);
  }
  function assertTSAsExpression(node, opts) {
    assert$2("TSAsExpression", node, opts);
  }
  function assertTSSatisfiesExpression(node, opts) {
    assert$2("TSSatisfiesExpression", node, opts);
  }
  function assertTSTypeAssertion(node, opts) {
    assert$2("TSTypeAssertion", node, opts);
  }
  function assertTSEnumDeclaration(node, opts) {
    assert$2("TSEnumDeclaration", node, opts);
  }
  function assertTSEnumMember(node, opts) {
    assert$2("TSEnumMember", node, opts);
  }
  function assertTSModuleDeclaration(node, opts) {
    assert$2("TSModuleDeclaration", node, opts);
  }
  function assertTSModuleBlock(node, opts) {
    assert$2("TSModuleBlock", node, opts);
  }
  function assertTSImportType(node, opts) {
    assert$2("TSImportType", node, opts);
  }
  function assertTSImportEqualsDeclaration(node, opts) {
    assert$2("TSImportEqualsDeclaration", node, opts);
  }
  function assertTSExternalModuleReference(node, opts) {
    assert$2("TSExternalModuleReference", node, opts);
  }
  function assertTSNonNullExpression(node, opts) {
    assert$2("TSNonNullExpression", node, opts);
  }
  function assertTSExportAssignment(node, opts) {
    assert$2("TSExportAssignment", node, opts);
  }
  function assertTSNamespaceExportDeclaration(node, opts) {
    assert$2("TSNamespaceExportDeclaration", node, opts);
  }
  function assertTSTypeAnnotation(node, opts) {
    assert$2("TSTypeAnnotation", node, opts);
  }
  function assertTSTypeParameterInstantiation(node, opts) {
    assert$2("TSTypeParameterInstantiation", node, opts);
  }
  function assertTSTypeParameterDeclaration(node, opts) {
    assert$2("TSTypeParameterDeclaration", node, opts);
  }
  function assertTSTypeParameter(node, opts) {
    assert$2("TSTypeParameter", node, opts);
  }
  function assertStandardized(node, opts) {
    assert$2("Standardized", node, opts);
  }
  function assertExpression$1(node, opts) {
    assert$2("Expression", node, opts);
  }
  function assertBinary(node, opts) {
    assert$2("Binary", node, opts);
  }
  function assertScopable(node, opts) {
    assert$2("Scopable", node, opts);
  }
  function assertBlockParent(node, opts) {
    assert$2("BlockParent", node, opts);
  }
  function assertBlock(node, opts) {
    assert$2("Block", node, opts);
  }
  function assertStatement(node, opts) {
    assert$2("Statement", node, opts);
  }
  function assertTerminatorless(node, opts) {
    assert$2("Terminatorless", node, opts);
  }
  function assertCompletionStatement(node, opts) {
    assert$2("CompletionStatement", node, opts);
  }
  function assertConditional(node, opts) {
    assert$2("Conditional", node, opts);
  }
  function assertLoop(node, opts) {
    assert$2("Loop", node, opts);
  }
  function assertWhile(node, opts) {
    assert$2("While", node, opts);
  }
  function assertExpressionWrapper(node, opts) {
    assert$2("ExpressionWrapper", node, opts);
  }
  function assertFor(node, opts) {
    assert$2("For", node, opts);
  }
  function assertForXStatement(node, opts) {
    assert$2("ForXStatement", node, opts);
  }
  function assertFunction$1(node, opts) {
    assert$2("Function", node, opts);
  }
  function assertFunctionParent(node, opts) {
    assert$2("FunctionParent", node, opts);
  }
  function assertPureish(node, opts) {
    assert$2("Pureish", node, opts);
  }
  function assertDeclaration(node, opts) {
    assert$2("Declaration", node, opts);
  }
  function assertPatternLike(node, opts) {
    assert$2("PatternLike", node, opts);
  }
  function assertLVal(node, opts) {
    assert$2("LVal", node, opts);
  }
  function assertTSEntityName(node, opts) {
    assert$2("TSEntityName", node, opts);
  }
  function assertLiteral(node, opts) {
    assert$2("Literal", node, opts);
  }
  function assertImmutable(node, opts) {
    assert$2("Immutable", node, opts);
  }
  function assertUserWhitespacable(node, opts) {
    assert$2("UserWhitespacable", node, opts);
  }
  function assertMethod(node, opts) {
    assert$2("Method", node, opts);
  }
  function assertObjectMember(node, opts) {
    assert$2("ObjectMember", node, opts);
  }
  function assertProperty(node, opts) {
    assert$2("Property", node, opts);
  }
  function assertUnaryLike(node, opts) {
    assert$2("UnaryLike", node, opts);
  }
  function assertPattern(node, opts) {
    assert$2("Pattern", node, opts);
  }
  function assertClass(node, opts) {
    assert$2("Class", node, opts);
  }
  function assertImportOrExportDeclaration(node, opts) {
    assert$2("ImportOrExportDeclaration", node, opts);
  }
  function assertExportDeclaration(node, opts) {
    assert$2("ExportDeclaration", node, opts);
  }
  function assertModuleSpecifier(node, opts) {
    assert$2("ModuleSpecifier", node, opts);
  }
  function assertAccessor(node, opts) {
    assert$2("Accessor", node, opts);
  }
  function assertPrivate(node, opts) {
    assert$2("Private", node, opts);
  }
  function assertFlow(node, opts) {
    assert$2("Flow", node, opts);
  }
  function assertFlowType(node, opts) {
    assert$2("FlowType", node, opts);
  }
  function assertFlowBaseAnnotation(node, opts) {
    assert$2("FlowBaseAnnotation", node, opts);
  }
  function assertFlowDeclaration(node, opts) {
    assert$2("FlowDeclaration", node, opts);
  }
  function assertFlowPredicate(node, opts) {
    assert$2("FlowPredicate", node, opts);
  }
  function assertEnumBody(node, opts) {
    assert$2("EnumBody", node, opts);
  }
  function assertEnumMember(node, opts) {
    assert$2("EnumMember", node, opts);
  }
  function assertJSX(node, opts) {
    assert$2("JSX", node, opts);
  }
  function assertMiscellaneous(node, opts) {
    assert$2("Miscellaneous", node, opts);
  }
  function assertTypeScript(node, opts) {
    assert$2("TypeScript", node, opts);
  }
  function assertTSTypeElement(node, opts) {
    assert$2("TSTypeElement", node, opts);
  }
  function assertTSType(node, opts) {
    assert$2("TSType", node, opts);
  }
  function assertTSBaseType(node, opts) {
    assert$2("TSBaseType", node, opts);
  }
  function assertNumberLiteral(node, opts) {
    deprecationWarning$1("assertNumberLiteral", "assertNumericLiteral");
    assert$2("NumberLiteral", node, opts);
  }
  function assertRegexLiteral(node, opts) {
    deprecationWarning$1("assertRegexLiteral", "assertRegExpLiteral");
    assert$2("RegexLiteral", node, opts);
  }
  function assertRestProperty(node, opts) {
    deprecationWarning$1("assertRestProperty", "assertRestElement");
    assert$2("RestProperty", node, opts);
  }
  function assertSpreadProperty(node, opts) {
    deprecationWarning$1("assertSpreadProperty", "assertSpreadElement");
    assert$2("SpreadProperty", node, opts);
  }
  function assertModuleDeclaration(node, opts) {
    deprecationWarning$1("assertModuleDeclaration", "assertImportOrExportDeclaration");
    assert$2("ModuleDeclaration", node, opts);
  }

  function createTypeAnnotationBasedOnTypeof$1(type) {
    switch (type) {
      case "string":
        return stringTypeAnnotation$2();
      case "number":
        return numberTypeAnnotation$2();
      case "undefined":
        return voidTypeAnnotation$3();
      case "boolean":
        return booleanTypeAnnotation$1();
      case "function":
        return genericTypeAnnotation$1(identifier$e("Function"));
      case "object":
        return genericTypeAnnotation$1(identifier$e("Object"));
      case "symbol":
        return genericTypeAnnotation$1(identifier$e("Symbol"));
      case "bigint":
        return anyTypeAnnotation$2();
    }
    throw new Error("Invalid typeof value: " + type);
  }

  function getQualifiedName$1(node) {
    return isIdentifier$f(node) ? node.name : node.id.name + "." + getQualifiedName$1(node.qualification);
  }
  function removeTypeDuplicates$1(nodesIn) {
    var nodes = Array.from(nodesIn);
    var generics = new Map();
    var bases = new Map();
    var typeGroups = new Set();
    var types = [];
    for (var i = 0; i < nodes.length; i++) {
      var node = nodes[i];
      if (!node) continue;
      if (types.includes(node)) {
        continue;
      }
      if (isAnyTypeAnnotation$1(node)) {
        return [node];
      }
      if (isFlowBaseAnnotation$1(node)) {
        bases.set(node.type, node);
        continue;
      }
      if (isUnionTypeAnnotation$1(node)) {
        if (!typeGroups.has(node.types)) {
          nodes.push.apply(nodes, _toConsumableArray(node.types));
          typeGroups.add(node.types);
        }
        continue;
      }
      if (isGenericTypeAnnotation$1(node)) {
        var name = getQualifiedName$1(node.id);
        if (generics.has(name)) {
          var existing = generics.get(name);
          if (existing.typeParameters) {
            if (node.typeParameters) {
              var _existing$typeParamet;
              (_existing$typeParamet = existing.typeParameters.params).push.apply(_existing$typeParamet, _toConsumableArray(node.typeParameters.params));
              existing.typeParameters.params = removeTypeDuplicates$1(existing.typeParameters.params);
            }
          } else {
            existing = node.typeParameters;
          }
        } else {
          generics.set(name, node);
        }
        continue;
      }
      types.push(node);
    }
    for (var _iterator = _createForOfIteratorHelperLoose(bases), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        baseType = _step$value[1];
      types.push(baseType);
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(generics), _step2; !(_step2 = _iterator2()).done;) {
      var _step2$value = _slicedToArray(_step2.value, 2),
        genericName = _step2$value[1];
      types.push(genericName);
    }
    return types;
  }

  function createFlowUnionType$1(types) {
    var flattened = removeTypeDuplicates$1(types);
    if (flattened.length === 1) {
      return flattened[0];
    } else {
      return unionTypeAnnotation$1(flattened);
    }
  }

  function getQualifiedName(node) {
    return isIdentifier$f(node) ? node.name : node.right.name + "." + getQualifiedName(node.left);
  }
  function removeTypeDuplicates(nodesIn) {
    var nodes = Array.from(nodesIn);
    var generics = new Map();
    var bases = new Map();
    var typeGroups = new Set();
    var types = [];
    for (var i = 0; i < nodes.length; i++) {
      var node = nodes[i];
      if (!node) continue;
      if (types.includes(node)) {
        continue;
      }
      if (isTSAnyKeyword(node)) {
        return [node];
      }
      if (isTSBaseType(node)) {
        bases.set(node.type, node);
        continue;
      }
      if (isTSUnionType(node)) {
        if (!typeGroups.has(node.types)) {
          nodes.push.apply(nodes, _toConsumableArray(node.types));
          typeGroups.add(node.types);
        }
        continue;
      }
      if (isTSTypeReference$1(node) && node.typeParameters) {
        var name = getQualifiedName(node.typeName);
        if (generics.has(name)) {
          var existing = generics.get(name);
          if (existing.typeParameters) {
            if (node.typeParameters) {
              var _existing$typeParamet;
              (_existing$typeParamet = existing.typeParameters.params).push.apply(_existing$typeParamet, _toConsumableArray(node.typeParameters.params));
              existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);
            }
          } else {
            existing = node.typeParameters;
          }
        } else {
          generics.set(name, node);
        }
        continue;
      }
      types.push(node);
    }
    for (var _iterator = _createForOfIteratorHelperLoose(bases), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        baseType = _step$value[1];
      types.push(baseType);
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(generics), _step2; !(_step2 = _iterator2()).done;) {
      var _step2$value = _slicedToArray(_step2.value, 2),
        genericName = _step2$value[1];
      types.push(genericName);
    }
    return types;
  }

  function createTSUnionType$1(typeAnnotations) {
    var types = typeAnnotations.map(function (type) {
      return isTSTypeAnnotation$1(type) ? type.typeAnnotation : type;
    });
    var flattened = removeTypeDuplicates(types);
    if (flattened.length === 1) {
      return flattened[0];
    } else {
      return tsUnionType(flattened);
    }
  }

  function buildUndefinedNode$2() {
    return unaryExpression$5("void", numericLiteral$6(0), true);
  }

  var _ref$1 = {
      hasOwn: Function.call.bind(Object.prototype.hasOwnProperty)
    },
    hasOwn$1 = _ref$1.hasOwn;
  function cloneIfNode(obj, deep, withoutLoc, commentsCache) {
    if (obj && typeof obj.type === "string") {
      return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);
    }
    return obj;
  }
  function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {
    if (Array.isArray(obj)) {
      return obj.map(function (node) {
        return cloneIfNode(node, deep, withoutLoc, commentsCache);
      });
    }
    return cloneIfNode(obj, deep, withoutLoc, commentsCache);
  }
  function cloneNode$g(node, deep, withoutLoc) {
    if (deep === void 0) {
      deep = true;
    }
    if (withoutLoc === void 0) {
      withoutLoc = false;
    }
    return cloneNodeInternal(node, deep, withoutLoc, new Map());
  }
  function cloneNodeInternal(node, deep, withoutLoc, commentsCache) {
    if (deep === void 0) {
      deep = true;
    }
    if (withoutLoc === void 0) {
      withoutLoc = false;
    }
    if (!node) return node;
    var type = node.type;
    var newNode = {
      type: node.type
    };
    if (isIdentifier$f(node)) {
      newNode.name = node.name;
      if (hasOwn$1(node, "optional") && typeof node.optional === "boolean") {
        newNode.optional = node.optional;
      }
      if (hasOwn$1(node, "typeAnnotation")) {
        newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;
      }
      if (hasOwn$1(node, "decorators")) {
        newNode.decorators = deep ? cloneIfNodeOrArray(node.decorators, true, withoutLoc, commentsCache) : node.decorators;
      }
    } else if (!hasOwn$1(NODE_FIELDS, type)) {
      throw new Error("Unknown node type: \"" + type + "\"");
    } else {
      for (var _i = 0, _Object$keys = Object.keys(NODE_FIELDS[type]); _i < _Object$keys.length; _i++) {
        var field = _Object$keys[_i];
        if (hasOwn$1(node, field)) {
          if (deep) {
            newNode[field] = isFile(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);
          } else {
            newNode[field] = node[field];
          }
        }
      }
    }
    if (hasOwn$1(node, "loc")) {
      if (withoutLoc) {
        newNode.loc = null;
      } else {
        newNode.loc = node.loc;
      }
    }
    if (hasOwn$1(node, "leadingComments")) {
      newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);
    }
    if (hasOwn$1(node, "innerComments")) {
      newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);
    }
    if (hasOwn$1(node, "trailingComments")) {
      newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);
    }
    if (hasOwn$1(node, "extra")) {
      newNode.extra = Object.assign({}, node.extra);
    }
    return newNode;
  }
  function maybeCloneComments(comments, deep, withoutLoc, commentsCache) {
    if (!comments || !deep) {
      return comments;
    }
    return comments.map(function (comment) {
      var cache = commentsCache.get(comment);
      if (cache) return cache;
      var type = comment.type,
        value = comment.value,
        loc = comment.loc;
      var ret = {
        type: type,
        value: value,
        loc: loc
      };
      if (withoutLoc) {
        ret.loc = null;
      }
      commentsCache.set(comment, ret);
      return ret;
    });
  }

  function clone(node) {
    return cloneNode$g(node, false);
  }

  function cloneDeep$1(node) {
    return cloneNode$g(node);
  }

  function cloneDeepWithoutLoc(node) {
    return cloneNode$g(node, true, true);
  }

  function cloneWithoutLoc(node) {
    return cloneNode$g(node, false, true);
  }

  function addComments$1(node, type, comments) {
    if (!comments || !node) return node;
    var key = type + "Comments";
    if (node[key]) {
      if (type === "leading") {
        node[key] = comments.concat(node[key]);
      } else {
        var _node$key;
        (_node$key = node[key]).push.apply(_node$key, _toConsumableArray(comments));
      }
    } else {
      node[key] = comments;
    }
    return node;
  }

  function addComment$2(node, type, content, line) {
    return addComments$1(node, type, [{
      type: line ? "CommentLine" : "CommentBlock",
      value: content
    }]);
  }

  function inherit(key, child, parent) {
    if (child && parent) {
      child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));
    }
  }

  function inheritInnerComments(child, parent) {
    inherit("innerComments", child, parent);
  }

  function inheritLeadingComments$1(child, parent) {
    inherit("leadingComments", child, parent);
  }

  function inheritTrailingComments$1(child, parent) {
    inherit("trailingComments", child, parent);
  }

  function inheritsComments$1(child, parent) {
    inheritTrailingComments$1(child, parent);
    inheritLeadingComments$1(child, parent);
    inheritInnerComments(child, parent);
    return child;
  }

  function removeComments$1(node) {
    COMMENT_KEYS.forEach(function (key) {
      node[key] = null;
    });
    return node;
  }

  var STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS$3["Standardized"];
  var EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS$3["Expression"];
  var BINARY_TYPES = FLIPPED_ALIAS_KEYS$3["Binary"];
  var SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS$3["Scopable"];
  var BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS$3["BlockParent"];
  var BLOCK_TYPES = FLIPPED_ALIAS_KEYS$3["Block"];
  var STATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["Statement"];
  var TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS$3["Terminatorless"];
  var COMPLETIONSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["CompletionStatement"];
  var CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS$3["Conditional"];
  var LOOP_TYPES = FLIPPED_ALIAS_KEYS$3["Loop"];
  var WHILE_TYPES = FLIPPED_ALIAS_KEYS$3["While"];
  var EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS$3["ExpressionWrapper"];
  var FOR_TYPES = FLIPPED_ALIAS_KEYS$3["For"];
  var FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["ForXStatement"];
  var FUNCTION_TYPES$1 = FLIPPED_ALIAS_KEYS$3["Function"];
  var FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS$3["FunctionParent"];
  var PUREISH_TYPES = FLIPPED_ALIAS_KEYS$3["Pureish"];
  var DECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["Declaration"];
  var PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS$3["PatternLike"];
  var LVAL_TYPES = FLIPPED_ALIAS_KEYS$3["LVal"];
  var TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS$3["TSEntityName"];
  var LITERAL_TYPES = FLIPPED_ALIAS_KEYS$3["Literal"];
  var IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS$3["Immutable"];
  var USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS$3["UserWhitespacable"];
  var METHOD_TYPES = FLIPPED_ALIAS_KEYS$3["Method"];
  var OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS$3["ObjectMember"];
  var PROPERTY_TYPES = FLIPPED_ALIAS_KEYS$3["Property"];
  var UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS$3["UnaryLike"];
  var PATTERN_TYPES = FLIPPED_ALIAS_KEYS$3["Pattern"];
  var CLASS_TYPES = FLIPPED_ALIAS_KEYS$3["Class"];
  var IMPORTOREXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["ImportOrExportDeclaration"];
  var EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["ExportDeclaration"];
  var MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS$3["ModuleSpecifier"];
  var ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS$3["Accessor"];
  var PRIVATE_TYPES = FLIPPED_ALIAS_KEYS$3["Private"];
  var FLOW_TYPES = FLIPPED_ALIAS_KEYS$3["Flow"];
  var FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS$3["FlowType"];
  var FLOWBASEANNOTATION_TYPES = FLIPPED_ALIAS_KEYS$3["FlowBaseAnnotation"];
  var FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["FlowDeclaration"];
  var FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS$3["FlowPredicate"];
  var ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS$3["EnumBody"];
  var ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS$3["EnumMember"];
  var JSX_TYPES = FLIPPED_ALIAS_KEYS$3["JSX"];
  var MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS$3["Miscellaneous"];
  var TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS$3["TypeScript"];
  var TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["TSTypeElement"];
  var TSTYPE_TYPES = FLIPPED_ALIAS_KEYS$3["TSType"];
  var TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS$3["TSBaseType"];
  var MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;

  function toBlock(node, parent) {
    if (isBlockStatement$3(node)) {
      return node;
    }
    var blockNodes = [];
    if (isEmptyStatement$1(node)) {
      blockNodes = [];
    } else {
      if (!isStatement$9(node)) {
        if (isFunction$5(parent)) {
          node = returnStatement$3(node);
        } else {
          node = expressionStatement$7(node);
        }
      }
      blockNodes = [node];
    }
    return blockStatement$6(blockNodes);
  }

  function ensureBlock$1(node, key) {
    if (key === void 0) {
      key = "body";
    }
    var result = toBlock(node[key], node);
    node[key] = result;
    return result;
  }

  function toIdentifier$1(input) {
    input = input + "";
    var name = "";
    for (var _iterator = _createForOfIteratorHelperLoose(input), _step; !(_step = _iterator()).done;) {
      var c = _step.value;
      name += isIdentifierChar(c.codePointAt(0)) ? c : "-";
    }
    name = name.replace(/^[-0-9]+/, "");
    name = name.replace(/[-\s]+(.)?/g, function (match, c) {
      return c ? c.toUpperCase() : "";
    });
    if (!isValidIdentifier$1(name)) {
      name = "_" + name;
    }
    return name || "_";
  }

  function toBindingIdentifierName$1(name) {
    name = toIdentifier$1(name);
    if (name === "eval" || name === "arguments") name = "_" + name;
    return name;
  }

  function toComputedKey$2(node, key) {
    if (key === void 0) {
      key = node.key || node.property;
    }
    if (!node.computed && isIdentifier$f(key)) key = stringLiteral$6(key.name);
    return key;
  }

  function toExpression$1(node) {
    if (isExpressionStatement$2(node)) {
      node = node.expression;
    }
    if (isExpression$4(node)) {
      return node;
    }
    if (isClass$1(node)) {
      node.type = "ClassExpression";
    } else if (isFunction$5(node)) {
      node.type = "FunctionExpression";
    }
    if (!isExpression$4(node)) {
      throw new Error("cannot turn " + node.type + " to an expression");
    }
    return node;
  }

  function traverseFast$2(node, enter, opts) {
    if (!node) return;
    var keys = VISITOR_KEYS$5[node.type];
    if (!keys) return;
    opts = opts || {};
    enter(node, opts);
    for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
      var key = _step.value;
      var subNode = node[key];
      if (Array.isArray(subNode)) {
        for (var _iterator2 = _createForOfIteratorHelperLoose(subNode), _step2; !(_step2 = _iterator2()).done;) {
          var _node = _step2.value;
          traverseFast$2(_node, enter, opts);
        }
      } else {
        traverseFast$2(subNode, enter, opts);
      }
    }
  }

  var CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
  var CLEAR_KEYS_PLUS_COMMENTS = [].concat(_toConsumableArray(COMMENT_KEYS), ["comments"], CLEAR_KEYS);
  function removeProperties$1(node, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
    for (var _iterator = _createForOfIteratorHelperLoose(map), _step; !(_step = _iterator()).done;) {
      var _key = _step.value;
      if (node[_key] != null) node[_key] = undefined;
    }
    for (var _i = 0, _Object$keys = Object.keys(node); _i < _Object$keys.length; _i++) {
      var key = _Object$keys[_i];
      if (key[0] === "_" && node[key] != null) node[key] = undefined;
    }
    var symbols = Object.getOwnPropertySymbols(node);
    for (var _iterator2 = _createForOfIteratorHelperLoose(symbols), _step2; !(_step2 = _iterator2()).done;) {
      var sym = _step2.value;
      node[sym] = null;
    }
  }

  function removePropertiesDeep$1(tree, opts) {
    traverseFast$2(tree, removeProperties$1, opts);
    return tree;
  }

  function toKeyAlias(node, key) {
    if (key === void 0) {
      key = node.key;
    }
    var alias;
    if (node.kind === "method") {
      return toKeyAlias.increment() + "";
    } else if (isIdentifier$f(key)) {
      alias = key.name;
    } else if (isStringLiteral$5(key)) {
      alias = JSON.stringify(key.value);
    } else {
      alias = JSON.stringify(removePropertiesDeep$1(cloneNode$g(key)));
    }
    if (node.computed) {
      alias = "[" + alias + "]";
    }
    if (node["static"]) {
      alias = "static:" + alias;
    }
    return alias;
  }
  toKeyAlias.uid = 0;
  toKeyAlias.increment = function () {
    if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
      return toKeyAlias.uid = 0;
    } else {
      return toKeyAlias.uid++;
    }
  };

  function toStatement(node, ignore) {
    if (isStatement$9(node)) {
      return node;
    }
    var mustHaveId = false;
    var newType;
    if (isClass$1(node)) {
      mustHaveId = true;
      newType = "ClassDeclaration";
    } else if (isFunction$5(node)) {
      mustHaveId = true;
      newType = "FunctionDeclaration";
    } else if (isAssignmentExpression$2(node)) {
      return expressionStatement$7(node);
    }
    if (mustHaveId && !node.id) {
      newType = false;
    }
    if (!newType) {
      if (ignore) {
        return false;
      } else {
        throw new Error("cannot turn " + node.type + " to a statement");
      }
    }
    node.type = newType;
    return node;
  }

  var objectToString$1 = Function.call.bind(Object.prototype.toString);
  function isRegExp$1(value) {
    return objectToString$1(value) === "[object RegExp]";
  }
  function isPlainObject(value) {
    if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") {
      return false;
    }
    var proto = Object.getPrototypeOf(value);
    return proto === null || Object.getPrototypeOf(proto) === null;
  }
  function valueToNode(value) {
    if (value === undefined) {
      return identifier$e("undefined");
    }
    if (value === true || value === false) {
      return booleanLiteral$2(value);
    }
    if (value === null) {
      return nullLiteral$2();
    }
    if (typeof value === "string") {
      return stringLiteral$6(value);
    }
    if (typeof value === "number") {
      var result;
      if (Number.isFinite(value)) {
        result = numericLiteral$6(Math.abs(value));
      } else {
        var numerator;
        if (Number.isNaN(value)) {
          numerator = numericLiteral$6(0);
        } else {
          numerator = numericLiteral$6(1);
        }
        result = binaryExpression$5("/", numerator, numericLiteral$6(0));
      }
      if (value < 0 || Object.is(value, -0)) {
        result = unaryExpression$5("-", result);
      }
      return result;
    }
    if (isRegExp$1(value)) {
      var pattern = value.source;
      var flags = /\/([a-z]*)$/.exec(value.toString())[1];
      return regExpLiteral(pattern, flags);
    }
    if (Array.isArray(value)) {
      return arrayExpression$1(value.map(valueToNode));
    }
    if (isPlainObject(value)) {
      var props = [];
      for (var _i = 0, _Object$keys = Object.keys(value); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        var nodeKey = void 0;
        if (isValidIdentifier$1(key)) {
          nodeKey = identifier$e(key);
        } else {
          nodeKey = stringLiteral$6(key);
        }
        props.push(objectProperty$1(nodeKey, valueToNode(value[key])));
      }
      return objectExpression$3(props);
    }
    throw new Error("don't know how to turn this value into a node");
  }

  function appendToMemberExpression(member, append, computed) {
    if (computed === void 0) {
      computed = false;
    }
    member.object = memberExpression$a(member.object, member.property, member.computed);
    member.property = append;
    member.computed = !!computed;
    return member;
  }

  function inherits$3(child, parent) {
    if (!child || !parent) return child;
    for (var _iterator = _createForOfIteratorHelperLoose(INHERIT_KEYS.optional), _step; !(_step = _iterator()).done;) {
      var _key = _step.value;
      if (child[_key] == null) {
        child[_key] = parent[_key];
      }
    }
    for (var _i = 0, _Object$keys = Object.keys(parent); _i < _Object$keys.length; _i++) {
      var key = _Object$keys[_i];
      if (key[0] === "_" && key !== "__clone") {
        child[key] = parent[key];
      }
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(INHERIT_KEYS.force), _step2; !(_step2 = _iterator2()).done;) {
      var _key2 = _step2.value;
      child[_key2] = parent[_key2];
    }
    inheritsComments$1(child, parent);
    return child;
  }

  function prependToMemberExpression(member, prepend) {
    if (isSuper$3(member.object)) {
      throw new Error("Cannot prepend node to super property access (`super.foo`).");
    }
    member.object = memberExpression$a(prepend, member.object);
    return member;
  }

  function getAssignmentIdentifiers$2(node) {
    var search = [].concat(node);
    var ids = Object.create(null);
    while (search.length) {
      var id = search.pop();
      if (!id) continue;
      switch (id.type) {
        case "ArrayPattern":
          search.push.apply(search, _toConsumableArray(id.elements));
          break;
        case "AssignmentExpression":
        case "AssignmentPattern":
        case "ForInStatement":
        case "ForOfStatement":
          search.push(id.left);
          break;
        case "ObjectPattern":
          search.push.apply(search, _toConsumableArray(id.properties));
          break;
        case "ObjectProperty":
          search.push(id.value);
          break;
        case "RestElement":
        case "UpdateExpression":
          search.push(id.argument);
          break;
        case "UnaryExpression":
          if (id.operator === "delete") {
            search.push(id.argument);
          }
          break;
        case "Identifier":
          ids[id.name] = id;
          break;
      }
    }
    return ids;
  }

  function getBindingIdentifiers$4(node, duplicates, outerOnly, newBindingsOnly) {
    var search = [].concat(node);
    var ids = Object.create(null);
    while (search.length) {
      var id = search.shift();
      if (!id) continue;
      if (newBindingsOnly && (isAssignmentExpression$2(id) || isUnaryExpression$1(id) || isUpdateExpression$1(id))) {
        continue;
      }
      if (isIdentifier$f(id)) {
        if (duplicates) {
          var _ids = ids[id.name] = ids[id.name] || [];
          _ids.push(id);
        } else {
          ids[id.name] = id;
        }
        continue;
      }
      if (isExportDeclaration$2(id) && !isExportAllDeclaration$1(id)) {
        if (isDeclaration(id.declaration)) {
          search.push(id.declaration);
        }
        continue;
      }
      if (outerOnly) {
        if (isFunctionDeclaration$2(id)) {
          search.push(id.id);
          continue;
        }
        if (isFunctionExpression(id)) {
          continue;
        }
      }
      var _keys = getBindingIdentifiers$4.keys[id.type];
      if (_keys) {
        for (var i = 0; i < _keys.length; i++) {
          var key = _keys[i];
          var nodes = id[key];
          if (nodes) {
            if (Array.isArray(nodes)) {
              search.push.apply(search, _toConsumableArray(nodes));
            } else {
              search.push(nodes);
            }
          }
        }
      }
    }
    return ids;
  }
  var keys$1 = {
    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"],
    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"]
  };
  getBindingIdentifiers$4.keys = keys$1;

  function getOuterBindingIdentifiers$1(node, duplicates) {
    return getBindingIdentifiers$4(node, duplicates, true);
  }

  function getNameFromLiteralId(id) {
    if (isNullLiteral$1(id)) {
      return "null";
    }
    if (isRegExpLiteral$1(id)) {
      return "/" + id.pattern + "/" + id.flags;
    }
    if (isTemplateLiteral$1(id)) {
      return id.quasis.map(function (quasi) {
        return quasi.value.raw;
      }).join("");
    }
    if (id.value !== undefined) {
      return String(id.value);
    }
    return null;
  }
  function getObjectMemberKey(node) {
    if (!node.computed || isLiteral$5(node.key)) {
      return node.key;
    }
  }
  function getFunctionName$1(node, parent) {
    if ("id" in node && node.id) {
      return {
        name: node.id.name,
        originalNode: node.id
      };
    }
    var prefix = "";
    var id;
    if (isObjectProperty$3(parent, {
      value: node
    })) {
      id = getObjectMemberKey(parent);
    } else if (isObjectMethod(node) || isClassMethod(node)) {
      id = getObjectMemberKey(node);
      if (node.kind === "get") prefix = "get ";else if (node.kind === "set") prefix = "set ";
    } else if (isVariableDeclarator(parent, {
      init: node
    })) {
      id = parent.id;
    } else if (isAssignmentExpression$2(parent, {
      operator: "=",
      right: node
    })) {
      id = parent.left;
    }
    if (!id) return null;
    var name = isLiteral$5(id) ? getNameFromLiteralId(id) : isIdentifier$f(id) ? id.name : isPrivateName$3(id) ? id.id.name : null;
    if (name == null) return null;
    return {
      name: prefix + name,
      originalNode: id
    };
  }

  function traverse$2(node, handlers, state) {
    if (typeof handlers === "function") {
      handlers = {
        enter: handlers
      };
    }
    var _handlers = handlers,
      enter = _handlers.enter,
      exit = _handlers.exit;
    traverseSimpleImpl(node, enter, exit, state, []);
  }
  function traverseSimpleImpl(node, enter, exit, state, ancestors) {
    var keys = VISITOR_KEYS$5[node.type];
    if (!keys) return;
    if (enter) enter(node, ancestors, state);
    for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
      var key = _step.value;
      var subNode = node[key];
      if (Array.isArray(subNode)) {
        for (var i = 0; i < subNode.length; i++) {
          var child = subNode[i];
          if (!child) continue;
          ancestors.push({
            node: node,
            key: key,
            index: i
          });
          traverseSimpleImpl(child, enter, exit, state, ancestors);
          ancestors.pop();
        }
      } else if (subNode) {
        ancestors.push({
          node: node,
          key: key
        });
        traverseSimpleImpl(subNode, enter, exit, state, ancestors);
        ancestors.pop();
      }
    }
    if (exit) exit(node, ancestors, state);
  }

  function isBinding$1(node, parent, grandparent) {
    if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") {
      return false;
    }
    var keys = getBindingIdentifiers$4.keys[parent.type];
    if (keys) {
      for (var i = 0; i < keys.length; i++) {
        var key = keys[i];
        var val = parent[key];
        if (Array.isArray(val)) {
          if (val.includes(node)) return true;
        } else {
          if (val === node) return true;
        }
      }
    }
    return false;
  }

  function isLet(node) {
    return isVariableDeclaration$3(node) && (node.kind !== "var" || node[BLOCK_SCOPED_SYMBOL]);
  }

  function isBlockScoped$2(node) {
    return isFunctionDeclaration$2(node) || isClassDeclaration$2(node) || isLet(node);
  }

  function isImmutable(node) {
    if (isType$2(node.type, "Immutable")) return true;
    if (isIdentifier$f(node)) {
      if (node.name === "undefined") {
        return true;
      } else {
        return false;
      }
    }
    return false;
  }

  function isNodesEquivalent(a, b) {
    if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) {
      return a === b;
    }
    if (a.type !== b.type) {
      return false;
    }
    var fields = Object.keys(NODE_FIELDS[a.type] || a.type);
    var visitorKeys = VISITOR_KEYS$5[a.type];
    for (var _i = 0, _fields = fields; _i < _fields.length; _i++) {
      var field = _fields[_i];
      var val_a = a[field];
      var val_b = b[field];
      if (typeof val_a !== typeof val_b) {
        return false;
      }
      if (val_a == null && val_b == null) {
        continue;
      } else if (val_a == null || val_b == null) {
        return false;
      }
      if (Array.isArray(val_a)) {
        if (!Array.isArray(val_b)) {
          return false;
        }
        if (val_a.length !== val_b.length) {
          return false;
        }
        for (var i = 0; i < val_a.length; i++) {
          if (!isNodesEquivalent(val_a[i], val_b[i])) {
            return false;
          }
        }
        continue;
      }
      if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) {
        for (var _i2 = 0, _Object$keys = Object.keys(val_a); _i2 < _Object$keys.length; _i2++) {
          var key = _Object$keys[_i2];
          if (val_a[key] !== val_b[key]) {
            return false;
          }
        }
        continue;
      }
      if (!isNodesEquivalent(val_a, val_b)) {
        return false;
      }
    }
    return true;
  }

  function isReferenced$2(node, parent, grandparent) {
    switch (parent.type) {
      case "MemberExpression":
      case "OptionalMemberExpression":
        if (parent.property === node) {
          return !!parent.computed;
        }
        return parent.object === node;
      case "JSXMemberExpression":
        return parent.object === node;
      case "VariableDeclarator":
        return parent.init === node;
      case "ArrowFunctionExpression":
        return parent.body === node;
      case "PrivateName":
        return false;
      case "ClassMethod":
      case "ClassPrivateMethod":
      case "ObjectMethod":
        if (parent.key === node) {
          return !!parent.computed;
        }
        return false;
      case "ObjectProperty":
        if (parent.key === node) {
          return !!parent.computed;
        }
        return !grandparent || grandparent.type !== "ObjectPattern";
      case "ClassProperty":
      case "ClassAccessorProperty":
        if (parent.key === node) {
          return !!parent.computed;
        }
        return true;
      case "ClassPrivateProperty":
        return parent.key !== node;
      case "ClassDeclaration":
      case "ClassExpression":
        return parent.superClass === node;
      case "AssignmentExpression":
        return parent.right === node;
      case "AssignmentPattern":
        return parent.right === node;
      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":
        if (grandparent != null && grandparent.source) {
          return false;
        }
        return parent.local === node;
      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 parent.key !== node;
      case "TSEnumMember":
        return parent.id !== node;
      case "TSPropertySignature":
        if (parent.key === node) {
          return !!parent.computed;
        }
        return true;
    }
    return true;
  }

  function isScope$1(node, parent) {
    if (isBlockStatement$3(node) && (isFunction$5(parent) || isCatchClause(parent))) {
      return false;
    }
    if (isPattern(node) && (isFunction$5(parent) || isCatchClause(parent))) {
      return true;
    }
    return isScopable(node);
  }

  function isSpecifierDefault(specifier) {
    return isImportDefaultSpecifier$1(specifier) || isIdentifier$f(specifier.imported || specifier.exported, {
      name: "default"
    });
  }

  var RESERVED_WORDS_ES3_ONLY = 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 isValidES3Identifier(name) {
    return isValidIdentifier$1(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
  }

  function isVar$1(node) {
    return isVariableDeclaration$3(node, {
      kind: "var"
    }) && !node[BLOCK_SCOPED_SYMBOL];
  }

  var react$3 = {
    isReactComponent: isReactComponent,
    isCompatTag: isCompatTag$1,
    buildChildren: buildChildren
  };

  var t$4 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    ACCESSOR_TYPES: ACCESSOR_TYPES,
    ALIAS_KEYS: ALIAS_KEYS,
    ASSIGNMENT_OPERATORS: ASSIGNMENT_OPERATORS,
    AnyTypeAnnotation: anyTypeAnnotation$2,
    ArgumentPlaceholder: argumentPlaceholder,
    ArrayExpression: arrayExpression$1,
    ArrayPattern: arrayPattern,
    ArrayTypeAnnotation: arrayTypeAnnotation$1,
    ArrowFunctionExpression: arrowFunctionExpression$4,
    AssignmentExpression: assignmentExpression$b,
    AssignmentPattern: assignmentPattern,
    AwaitExpression: awaitExpression$1,
    BINARY_OPERATORS: BINARY_OPERATORS,
    BINARY_TYPES: BINARY_TYPES,
    BLOCKPARENT_TYPES: BLOCKPARENT_TYPES,
    BLOCK_SCOPED_SYMBOL: BLOCK_SCOPED_SYMBOL,
    BLOCK_TYPES: BLOCK_TYPES,
    BOOLEAN_BINARY_OPERATORS: BOOLEAN_BINARY_OPERATORS$1,
    BOOLEAN_NUMBER_BINARY_OPERATORS: BOOLEAN_NUMBER_BINARY_OPERATORS$1,
    BOOLEAN_UNARY_OPERATORS: BOOLEAN_UNARY_OPERATORS$1,
    BUILDER_KEYS: BUILDER_KEYS,
    BigIntLiteral: bigIntLiteral,
    BinaryExpression: binaryExpression$5,
    BindExpression: bindExpression,
    BlockStatement: blockStatement$6,
    BooleanLiteral: booleanLiteral$2,
    BooleanLiteralTypeAnnotation: booleanLiteralTypeAnnotation,
    BooleanTypeAnnotation: booleanTypeAnnotation$1,
    BreakStatement: breakStatement,
    CLASS_TYPES: CLASS_TYPES,
    COMMENT_KEYS: COMMENT_KEYS,
    COMPARISON_BINARY_OPERATORS: COMPARISON_BINARY_OPERATORS,
    COMPLETIONSTATEMENT_TYPES: COMPLETIONSTATEMENT_TYPES,
    CONDITIONAL_TYPES: CONDITIONAL_TYPES,
    CallExpression: callExpression$c,
    CatchClause: catchClause,
    ClassAccessorProperty: classAccessorProperty,
    ClassBody: classBody,
    ClassDeclaration: classDeclaration,
    ClassExpression: classExpression,
    ClassImplements: classImplements,
    ClassMethod: classMethod,
    ClassPrivateMethod: classPrivateMethod,
    ClassPrivateProperty: classPrivateProperty,
    ClassProperty: classProperty,
    ConditionalExpression: conditionalExpression$5,
    ContinueStatement: continueStatement,
    DECLARATION_TYPES: DECLARATION_TYPES,
    DEPRECATED_ALIASES: DEPRECATED_ALIASES$1,
    DEPRECATED_KEYS: DEPRECATED_KEYS$1,
    DebuggerStatement: debuggerStatement,
    DecimalLiteral: decimalLiteral,
    DeclareClass: declareClass,
    DeclareExportAllDeclaration: declareExportAllDeclaration,
    DeclareExportDeclaration: declareExportDeclaration,
    DeclareFunction: declareFunction,
    DeclareInterface: declareInterface,
    DeclareModule: declareModule,
    DeclareModuleExports: declareModuleExports,
    DeclareOpaqueType: declareOpaqueType,
    DeclareTypeAlias: declareTypeAlias,
    DeclareVariable: declareVariable,
    DeclaredPredicate: declaredPredicate,
    Decorator: decorator,
    Directive: directive,
    DirectiveLiteral: directiveLiteral,
    DoExpression: doExpression,
    DoWhileStatement: doWhileStatement,
    ENUMBODY_TYPES: ENUMBODY_TYPES,
    ENUMMEMBER_TYPES: ENUMMEMBER_TYPES,
    EQUALITY_BINARY_OPERATORS: EQUALITY_BINARY_OPERATORS,
    EXPORTDECLARATION_TYPES: EXPORTDECLARATION_TYPES,
    EXPRESSIONWRAPPER_TYPES: EXPRESSIONWRAPPER_TYPES,
    EXPRESSION_TYPES: EXPRESSION_TYPES,
    EmptyStatement: emptyStatement$1,
    EmptyTypeAnnotation: emptyTypeAnnotation,
    EnumBooleanBody: enumBooleanBody,
    EnumBooleanMember: enumBooleanMember,
    EnumDeclaration: enumDeclaration,
    EnumDefaultedMember: enumDefaultedMember,
    EnumNumberBody: enumNumberBody,
    EnumNumberMember: enumNumberMember,
    EnumStringBody: enumStringBody,
    EnumStringMember: enumStringMember,
    EnumSymbolBody: enumSymbolBody,
    ExistsTypeAnnotation: existsTypeAnnotation,
    ExportAllDeclaration: exportAllDeclaration,
    ExportDefaultDeclaration: exportDefaultDeclaration,
    ExportDefaultSpecifier: exportDefaultSpecifier,
    ExportNamedDeclaration: exportNamedDeclaration$2,
    ExportNamespaceSpecifier: exportNamespaceSpecifier,
    ExportSpecifier: exportSpecifier$2,
    ExpressionStatement: expressionStatement$7,
    FLATTENABLE_KEYS: FLATTENABLE_KEYS,
    FLIPPED_ALIAS_KEYS: FLIPPED_ALIAS_KEYS$3,
    FLOWBASEANNOTATION_TYPES: FLOWBASEANNOTATION_TYPES,
    FLOWDECLARATION_TYPES: FLOWDECLARATION_TYPES,
    FLOWPREDICATE_TYPES: FLOWPREDICATE_TYPES,
    FLOWTYPE_TYPES: FLOWTYPE_TYPES,
    FLOW_TYPES: FLOW_TYPES,
    FORXSTATEMENT_TYPES: FORXSTATEMENT_TYPES,
    FOR_INIT_KEYS: FOR_INIT_KEYS,
    FOR_TYPES: FOR_TYPES,
    FUNCTIONPARENT_TYPES: FUNCTIONPARENT_TYPES,
    FUNCTION_TYPES: FUNCTION_TYPES$1,
    File: file$1,
    ForInStatement: forInStatement,
    ForOfStatement: forOfStatement,
    ForStatement: forStatement,
    FunctionDeclaration: functionDeclaration,
    FunctionExpression: functionExpression$2,
    FunctionTypeAnnotation: functionTypeAnnotation,
    FunctionTypeParam: functionTypeParam,
    GenericTypeAnnotation: genericTypeAnnotation$1,
    IMMUTABLE_TYPES: IMMUTABLE_TYPES,
    IMPORTOREXPORTDECLARATION_TYPES: IMPORTOREXPORTDECLARATION_TYPES,
    INHERIT_KEYS: INHERIT_KEYS,
    Identifier: identifier$e,
    IfStatement: ifStatement,
    Import: _import,
    ImportAttribute: importAttribute,
    ImportDeclaration: importDeclaration$1,
    ImportDefaultSpecifier: importDefaultSpecifier$1,
    ImportExpression: importExpression,
    ImportNamespaceSpecifier: importNamespaceSpecifier$1,
    ImportSpecifier: importSpecifier$2,
    IndexedAccessType: indexedAccessType,
    InferredPredicate: inferredPredicate,
    InterfaceDeclaration: interfaceDeclaration,
    InterfaceExtends: interfaceExtends,
    InterfaceTypeAnnotation: interfaceTypeAnnotation,
    InterpreterDirective: interpreterDirective$1,
    IntersectionTypeAnnotation: intersectionTypeAnnotation,
    JSXAttribute: jsxAttribute,
    JSXClosingElement: jsxClosingElement,
    JSXClosingFragment: jsxClosingFragment,
    JSXElement: jsxElement,
    JSXEmptyExpression: jsxEmptyExpression,
    JSXExpressionContainer: jsxExpressionContainer$1,
    JSXFragment: jsxFragment,
    JSXIdentifier: jsxIdentifier$1,
    JSXMemberExpression: jsxMemberExpression,
    JSXNamespacedName: jsxNamespacedName,
    JSXOpeningElement: jsxOpeningElement,
    JSXOpeningFragment: jsxOpeningFragment,
    JSXSpreadAttribute: jsxSpreadAttribute,
    JSXSpreadChild: jsxSpreadChild,
    JSXText: jsxText,
    JSX_TYPES: JSX_TYPES,
    LITERAL_TYPES: LITERAL_TYPES,
    LOGICAL_OPERATORS: LOGICAL_OPERATORS$3,
    LOOP_TYPES: LOOP_TYPES,
    LVAL_TYPES: LVAL_TYPES,
    LabeledStatement: labeledStatement,
    LogicalExpression: logicalExpression$3,
    METHOD_TYPES: METHOD_TYPES,
    MISCELLANEOUS_TYPES: MISCELLANEOUS_TYPES,
    MODULEDECLARATION_TYPES: MODULEDECLARATION_TYPES,
    MODULESPECIFIER_TYPES: MODULESPECIFIER_TYPES,
    MemberExpression: memberExpression$a,
    MetaProperty: metaProperty$1,
    MixedTypeAnnotation: mixedTypeAnnotation,
    ModuleExpression: moduleExpression,
    NODE_FIELDS: NODE_FIELDS,
    NODE_PARENT_VALIDATIONS: NODE_PARENT_VALIDATIONS,
    NOT_LOCAL_BINDING: NOT_LOCAL_BINDING$1,
    NUMBER_BINARY_OPERATORS: NUMBER_BINARY_OPERATORS$1,
    NUMBER_UNARY_OPERATORS: NUMBER_UNARY_OPERATORS$1,
    NewExpression: newExpression,
    Noop: noop$1,
    NullLiteral: nullLiteral$2,
    NullLiteralTypeAnnotation: nullLiteralTypeAnnotation$1,
    NullableTypeAnnotation: nullableTypeAnnotation,
    NumberLiteral: NumberLiteral,
    NumberLiteralTypeAnnotation: numberLiteralTypeAnnotation,
    NumberTypeAnnotation: numberTypeAnnotation$2,
    NumericLiteral: numericLiteral$6,
    OBJECTMEMBER_TYPES: OBJECTMEMBER_TYPES,
    ObjectExpression: objectExpression$3,
    ObjectMethod: objectMethod,
    ObjectPattern: objectPattern$1,
    ObjectProperty: objectProperty$1,
    ObjectTypeAnnotation: objectTypeAnnotation,
    ObjectTypeCallProperty: objectTypeCallProperty,
    ObjectTypeIndexer: objectTypeIndexer,
    ObjectTypeInternalSlot: objectTypeInternalSlot,
    ObjectTypeProperty: objectTypeProperty,
    ObjectTypeSpreadProperty: objectTypeSpreadProperty,
    OpaqueType: opaqueType,
    OptionalCallExpression: optionalCallExpression$2,
    OptionalIndexedAccessType: optionalIndexedAccessType,
    OptionalMemberExpression: optionalMemberExpression$2,
    PATTERNLIKE_TYPES: PATTERNLIKE_TYPES,
    PATTERN_TYPES: PATTERN_TYPES,
    PLACEHOLDERS: PLACEHOLDERS,
    PLACEHOLDERS_ALIAS: PLACEHOLDERS_ALIAS,
    PLACEHOLDERS_FLIPPED_ALIAS: PLACEHOLDERS_FLIPPED_ALIAS,
    PRIVATE_TYPES: PRIVATE_TYPES,
    PROPERTY_TYPES: PROPERTY_TYPES,
    PUREISH_TYPES: PUREISH_TYPES,
    ParenthesizedExpression: parenthesizedExpression,
    PipelineBareFunction: pipelineBareFunction,
    PipelinePrimaryTopicReference: pipelinePrimaryTopicReference,
    PipelineTopicExpression: pipelineTopicExpression,
    Placeholder: placeholder,
    PrivateName: privateName,
    Program: program$3,
    QualifiedTypeIdentifier: qualifiedTypeIdentifier,
    RecordExpression: recordExpression,
    RegExpLiteral: regExpLiteral,
    RegexLiteral: RegexLiteral,
    RestElement: restElement$2,
    RestProperty: RestProperty$1,
    ReturnStatement: returnStatement$3,
    SCOPABLE_TYPES: SCOPABLE_TYPES,
    STANDARDIZED_TYPES: STANDARDIZED_TYPES,
    STATEMENT_OR_BLOCK_KEYS: STATEMENT_OR_BLOCK_KEYS$1,
    STATEMENT_TYPES: STATEMENT_TYPES,
    STRING_UNARY_OPERATORS: STRING_UNARY_OPERATORS$1,
    SequenceExpression: sequenceExpression$8,
    SpreadElement: spreadElement$2,
    SpreadProperty: SpreadProperty$1,
    StaticBlock: staticBlock,
    StringLiteral: stringLiteral$6,
    StringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
    StringTypeAnnotation: stringTypeAnnotation$2,
    Super: _super$1,
    SwitchCase: switchCase,
    SwitchStatement: switchStatement,
    SymbolTypeAnnotation: symbolTypeAnnotation,
    TERMINATORLESS_TYPES: TERMINATORLESS_TYPES,
    TSAnyKeyword: tsAnyKeyword,
    TSArrayType: tsArrayType,
    TSAsExpression: tsAsExpression,
    TSBASETYPE_TYPES: TSBASETYPE_TYPES,
    TSBigIntKeyword: tsBigIntKeyword,
    TSBooleanKeyword: tsBooleanKeyword,
    TSCallSignatureDeclaration: tsCallSignatureDeclaration,
    TSConditionalType: tsConditionalType,
    TSConstructSignatureDeclaration: tsConstructSignatureDeclaration,
    TSConstructorType: tsConstructorType,
    TSDeclareFunction: tsDeclareFunction,
    TSDeclareMethod: tsDeclareMethod,
    TSENTITYNAME_TYPES: TSENTITYNAME_TYPES,
    TSEnumDeclaration: tsEnumDeclaration,
    TSEnumMember: tsEnumMember,
    TSExportAssignment: tsExportAssignment,
    TSExpressionWithTypeArguments: tsExpressionWithTypeArguments,
    TSExternalModuleReference: tsExternalModuleReference,
    TSFunctionType: tsFunctionType,
    TSImportEqualsDeclaration: tsImportEqualsDeclaration,
    TSImportType: tsImportType,
    TSIndexSignature: tsIndexSignature,
    TSIndexedAccessType: tsIndexedAccessType,
    TSInferType: tsInferType,
    TSInstantiationExpression: tsInstantiationExpression,
    TSInterfaceBody: tsInterfaceBody,
    TSInterfaceDeclaration: tsInterfaceDeclaration,
    TSIntersectionType: tsIntersectionType,
    TSIntrinsicKeyword: tsIntrinsicKeyword,
    TSLiteralType: tsLiteralType,
    TSMappedType: tsMappedType,
    TSMethodSignature: tsMethodSignature,
    TSModuleBlock: tsModuleBlock,
    TSModuleDeclaration: tsModuleDeclaration,
    TSNamedTupleMember: tsNamedTupleMember,
    TSNamespaceExportDeclaration: tsNamespaceExportDeclaration,
    TSNeverKeyword: tsNeverKeyword,
    TSNonNullExpression: tsNonNullExpression,
    TSNullKeyword: tsNullKeyword,
    TSNumberKeyword: tsNumberKeyword,
    TSObjectKeyword: tsObjectKeyword,
    TSOptionalType: tsOptionalType,
    TSParameterProperty: tsParameterProperty,
    TSParenthesizedType: tsParenthesizedType,
    TSPropertySignature: tsPropertySignature,
    TSQualifiedName: tsQualifiedName,
    TSRestType: tsRestType,
    TSSatisfiesExpression: tsSatisfiesExpression,
    TSStringKeyword: tsStringKeyword,
    TSSymbolKeyword: tsSymbolKeyword,
    TSTYPEELEMENT_TYPES: TSTYPEELEMENT_TYPES,
    TSTYPE_TYPES: TSTYPE_TYPES,
    TSThisType: tsThisType,
    TSTupleType: tsTupleType,
    TSTypeAliasDeclaration: tsTypeAliasDeclaration,
    TSTypeAnnotation: tsTypeAnnotation,
    TSTypeAssertion: tsTypeAssertion,
    TSTypeLiteral: tsTypeLiteral,
    TSTypeOperator: tsTypeOperator,
    TSTypeParameter: tsTypeParameter,
    TSTypeParameterDeclaration: tsTypeParameterDeclaration,
    TSTypeParameterInstantiation: tsTypeParameterInstantiation,
    TSTypePredicate: tsTypePredicate,
    TSTypeQuery: tsTypeQuery,
    TSTypeReference: tsTypeReference,
    TSUndefinedKeyword: tsUndefinedKeyword,
    TSUnionType: tsUnionType,
    TSUnknownKeyword: tsUnknownKeyword,
    TSVoidKeyword: tsVoidKeyword,
    TYPES: TYPES$1,
    TYPESCRIPT_TYPES: TYPESCRIPT_TYPES,
    TaggedTemplateExpression: taggedTemplateExpression,
    TemplateElement: templateElement,
    TemplateLiteral: templateLiteral,
    ThisExpression: thisExpression$4,
    ThisTypeAnnotation: thisTypeAnnotation,
    ThrowStatement: throwStatement,
    TopicReference: topicReference,
    TryStatement: tryStatement,
    TupleExpression: tupleExpression,
    TupleTypeAnnotation: tupleTypeAnnotation$1,
    TypeAlias: typeAlias,
    TypeAnnotation: typeAnnotation,
    TypeCastExpression: typeCastExpression,
    TypeParameter: typeParameter,
    TypeParameterDeclaration: typeParameterDeclaration,
    TypeParameterInstantiation: typeParameterInstantiation,
    TypeofTypeAnnotation: typeofTypeAnnotation,
    UNARYLIKE_TYPES: UNARYLIKE_TYPES,
    UNARY_OPERATORS: UNARY_OPERATORS,
    UPDATE_OPERATORS: UPDATE_OPERATORS,
    USERWHITESPACABLE_TYPES: USERWHITESPACABLE_TYPES,
    UnaryExpression: unaryExpression$5,
    UnionTypeAnnotation: unionTypeAnnotation$1,
    UpdateExpression: updateExpression$1,
    V8IntrinsicIdentifier: v8IntrinsicIdentifier,
    VISITOR_KEYS: VISITOR_KEYS$5,
    VariableDeclaration: variableDeclaration$6,
    VariableDeclarator: variableDeclarator$6,
    Variance: variance,
    VoidTypeAnnotation: voidTypeAnnotation$3,
    WHILE_TYPES: WHILE_TYPES,
    WhileStatement: whileStatement,
    WithStatement: withStatement,
    YieldExpression: yieldExpression$2,
    __internal__deprecationWarning: deprecationWarning$1,
    addComment: addComment$2,
    addComments: addComments$1,
    anyTypeAnnotation: anyTypeAnnotation$2,
    appendToMemberExpression: appendToMemberExpression,
    argumentPlaceholder: argumentPlaceholder,
    arrayExpression: arrayExpression$1,
    arrayPattern: arrayPattern,
    arrayTypeAnnotation: arrayTypeAnnotation$1,
    arrowFunctionExpression: arrowFunctionExpression$4,
    assertAccessor: assertAccessor,
    assertAnyTypeAnnotation: assertAnyTypeAnnotation,
    assertArgumentPlaceholder: assertArgumentPlaceholder,
    assertArrayExpression: assertArrayExpression,
    assertArrayPattern: assertArrayPattern,
    assertArrayTypeAnnotation: assertArrayTypeAnnotation,
    assertArrowFunctionExpression: assertArrowFunctionExpression,
    assertAssignmentExpression: assertAssignmentExpression,
    assertAssignmentPattern: assertAssignmentPattern,
    assertAwaitExpression: assertAwaitExpression,
    assertBigIntLiteral: assertBigIntLiteral,
    assertBinary: assertBinary,
    assertBinaryExpression: assertBinaryExpression,
    assertBindExpression: assertBindExpression,
    assertBlock: assertBlock,
    assertBlockParent: assertBlockParent,
    assertBlockStatement: assertBlockStatement,
    assertBooleanLiteral: assertBooleanLiteral,
    assertBooleanLiteralTypeAnnotation: assertBooleanLiteralTypeAnnotation,
    assertBooleanTypeAnnotation: assertBooleanTypeAnnotation,
    assertBreakStatement: assertBreakStatement,
    assertCallExpression: assertCallExpression,
    assertCatchClause: assertCatchClause,
    assertClass: assertClass,
    assertClassAccessorProperty: assertClassAccessorProperty,
    assertClassBody: assertClassBody,
    assertClassDeclaration: assertClassDeclaration,
    assertClassExpression: assertClassExpression,
    assertClassImplements: assertClassImplements,
    assertClassMethod: assertClassMethod,
    assertClassPrivateMethod: assertClassPrivateMethod,
    assertClassPrivateProperty: assertClassPrivateProperty,
    assertClassProperty: assertClassProperty,
    assertCompletionStatement: assertCompletionStatement,
    assertConditional: assertConditional,
    assertConditionalExpression: assertConditionalExpression,
    assertContinueStatement: assertContinueStatement,
    assertDebuggerStatement: assertDebuggerStatement,
    assertDecimalLiteral: assertDecimalLiteral,
    assertDeclaration: assertDeclaration,
    assertDeclareClass: assertDeclareClass,
    assertDeclareExportAllDeclaration: assertDeclareExportAllDeclaration,
    assertDeclareExportDeclaration: assertDeclareExportDeclaration,
    assertDeclareFunction: assertDeclareFunction,
    assertDeclareInterface: assertDeclareInterface,
    assertDeclareModule: assertDeclareModule,
    assertDeclareModuleExports: assertDeclareModuleExports,
    assertDeclareOpaqueType: assertDeclareOpaqueType,
    assertDeclareTypeAlias: assertDeclareTypeAlias,
    assertDeclareVariable: assertDeclareVariable,
    assertDeclaredPredicate: assertDeclaredPredicate,
    assertDecorator: assertDecorator,
    assertDirective: assertDirective,
    assertDirectiveLiteral: assertDirectiveLiteral,
    assertDoExpression: assertDoExpression,
    assertDoWhileStatement: assertDoWhileStatement,
    assertEmptyStatement: assertEmptyStatement,
    assertEmptyTypeAnnotation: assertEmptyTypeAnnotation,
    assertEnumBody: assertEnumBody,
    assertEnumBooleanBody: assertEnumBooleanBody,
    assertEnumBooleanMember: assertEnumBooleanMember,
    assertEnumDeclaration: assertEnumDeclaration,
    assertEnumDefaultedMember: assertEnumDefaultedMember,
    assertEnumMember: assertEnumMember,
    assertEnumNumberBody: assertEnumNumberBody,
    assertEnumNumberMember: assertEnumNumberMember,
    assertEnumStringBody: assertEnumStringBody,
    assertEnumStringMember: assertEnumStringMember,
    assertEnumSymbolBody: assertEnumSymbolBody,
    assertExistsTypeAnnotation: assertExistsTypeAnnotation,
    assertExportAllDeclaration: assertExportAllDeclaration,
    assertExportDeclaration: assertExportDeclaration,
    assertExportDefaultDeclaration: assertExportDefaultDeclaration,
    assertExportDefaultSpecifier: assertExportDefaultSpecifier,
    assertExportNamedDeclaration: assertExportNamedDeclaration,
    assertExportNamespaceSpecifier: assertExportNamespaceSpecifier,
    assertExportSpecifier: assertExportSpecifier$1,
    assertExpression: assertExpression$1,
    assertExpressionStatement: assertExpressionStatement$1,
    assertExpressionWrapper: assertExpressionWrapper,
    assertFile: assertFile,
    assertFlow: assertFlow,
    assertFlowBaseAnnotation: assertFlowBaseAnnotation,
    assertFlowDeclaration: assertFlowDeclaration,
    assertFlowPredicate: assertFlowPredicate,
    assertFlowType: assertFlowType,
    assertFor: assertFor,
    assertForInStatement: assertForInStatement,
    assertForOfStatement: assertForOfStatement,
    assertForStatement: assertForStatement,
    assertForXStatement: assertForXStatement,
    assertFunction: assertFunction$1,
    assertFunctionDeclaration: assertFunctionDeclaration,
    assertFunctionExpression: assertFunctionExpression,
    assertFunctionParent: assertFunctionParent,
    assertFunctionTypeAnnotation: assertFunctionTypeAnnotation,
    assertFunctionTypeParam: assertFunctionTypeParam,
    assertGenericTypeAnnotation: assertGenericTypeAnnotation,
    assertIdentifier: assertIdentifier,
    assertIfStatement: assertIfStatement,
    assertImmutable: assertImmutable,
    assertImport: assertImport,
    assertImportAttribute: assertImportAttribute,
    assertImportDeclaration: assertImportDeclaration,
    assertImportDefaultSpecifier: assertImportDefaultSpecifier,
    assertImportExpression: assertImportExpression,
    assertImportNamespaceSpecifier: assertImportNamespaceSpecifier,
    assertImportOrExportDeclaration: assertImportOrExportDeclaration,
    assertImportSpecifier: assertImportSpecifier,
    assertIndexedAccessType: assertIndexedAccessType,
    assertInferredPredicate: assertInferredPredicate,
    assertInterfaceDeclaration: assertInterfaceDeclaration,
    assertInterfaceExtends: assertInterfaceExtends,
    assertInterfaceTypeAnnotation: assertInterfaceTypeAnnotation,
    assertInterpreterDirective: assertInterpreterDirective,
    assertIntersectionTypeAnnotation: assertIntersectionTypeAnnotation,
    assertJSX: assertJSX,
    assertJSXAttribute: assertJSXAttribute,
    assertJSXClosingElement: assertJSXClosingElement,
    assertJSXClosingFragment: assertJSXClosingFragment,
    assertJSXElement: assertJSXElement,
    assertJSXEmptyExpression: assertJSXEmptyExpression,
    assertJSXExpressionContainer: assertJSXExpressionContainer,
    assertJSXFragment: assertJSXFragment,
    assertJSXIdentifier: assertJSXIdentifier,
    assertJSXMemberExpression: assertJSXMemberExpression,
    assertJSXNamespacedName: assertJSXNamespacedName,
    assertJSXOpeningElement: assertJSXOpeningElement,
    assertJSXOpeningFragment: assertJSXOpeningFragment,
    assertJSXSpreadAttribute: assertJSXSpreadAttribute,
    assertJSXSpreadChild: assertJSXSpreadChild,
    assertJSXText: assertJSXText,
    assertLVal: assertLVal,
    assertLabeledStatement: assertLabeledStatement,
    assertLiteral: assertLiteral,
    assertLogicalExpression: assertLogicalExpression,
    assertLoop: assertLoop,
    assertMemberExpression: assertMemberExpression,
    assertMetaProperty: assertMetaProperty,
    assertMethod: assertMethod,
    assertMiscellaneous: assertMiscellaneous,
    assertMixedTypeAnnotation: assertMixedTypeAnnotation,
    assertModuleDeclaration: assertModuleDeclaration,
    assertModuleExpression: assertModuleExpression,
    assertModuleSpecifier: assertModuleSpecifier,
    assertNewExpression: assertNewExpression,
    assertNode: assertNode,
    assertNoop: assertNoop,
    assertNullLiteral: assertNullLiteral,
    assertNullLiteralTypeAnnotation: assertNullLiteralTypeAnnotation,
    assertNullableTypeAnnotation: assertNullableTypeAnnotation,
    assertNumberLiteral: assertNumberLiteral,
    assertNumberLiteralTypeAnnotation: assertNumberLiteralTypeAnnotation,
    assertNumberTypeAnnotation: assertNumberTypeAnnotation,
    assertNumericLiteral: assertNumericLiteral,
    assertObjectExpression: assertObjectExpression,
    assertObjectMember: assertObjectMember,
    assertObjectMethod: assertObjectMethod,
    assertObjectPattern: assertObjectPattern,
    assertObjectProperty: assertObjectProperty,
    assertObjectTypeAnnotation: assertObjectTypeAnnotation,
    assertObjectTypeCallProperty: assertObjectTypeCallProperty,
    assertObjectTypeIndexer: assertObjectTypeIndexer,
    assertObjectTypeInternalSlot: assertObjectTypeInternalSlot,
    assertObjectTypeProperty: assertObjectTypeProperty,
    assertObjectTypeSpreadProperty: assertObjectTypeSpreadProperty,
    assertOpaqueType: assertOpaqueType,
    assertOptionalCallExpression: assertOptionalCallExpression,
    assertOptionalIndexedAccessType: assertOptionalIndexedAccessType,
    assertOptionalMemberExpression: assertOptionalMemberExpression,
    assertParenthesizedExpression: assertParenthesizedExpression,
    assertPattern: assertPattern,
    assertPatternLike: assertPatternLike,
    assertPipelineBareFunction: assertPipelineBareFunction,
    assertPipelinePrimaryTopicReference: assertPipelinePrimaryTopicReference,
    assertPipelineTopicExpression: assertPipelineTopicExpression,
    assertPlaceholder: assertPlaceholder,
    assertPrivate: assertPrivate,
    assertPrivateName: assertPrivateName,
    assertProgram: assertProgram,
    assertProperty: assertProperty,
    assertPureish: assertPureish,
    assertQualifiedTypeIdentifier: assertQualifiedTypeIdentifier,
    assertRecordExpression: assertRecordExpression,
    assertRegExpLiteral: assertRegExpLiteral,
    assertRegexLiteral: assertRegexLiteral,
    assertRestElement: assertRestElement,
    assertRestProperty: assertRestProperty,
    assertReturnStatement: assertReturnStatement,
    assertScopable: assertScopable,
    assertSequenceExpression: assertSequenceExpression,
    assertSpreadElement: assertSpreadElement,
    assertSpreadProperty: assertSpreadProperty,
    assertStandardized: assertStandardized,
    assertStatement: assertStatement,
    assertStaticBlock: assertStaticBlock,
    assertStringLiteral: assertStringLiteral,
    assertStringLiteralTypeAnnotation: assertStringLiteralTypeAnnotation,
    assertStringTypeAnnotation: assertStringTypeAnnotation,
    assertSuper: assertSuper,
    assertSwitchCase: assertSwitchCase,
    assertSwitchStatement: assertSwitchStatement,
    assertSymbolTypeAnnotation: assertSymbolTypeAnnotation,
    assertTSAnyKeyword: assertTSAnyKeyword,
    assertTSArrayType: assertTSArrayType,
    assertTSAsExpression: assertTSAsExpression,
    assertTSBaseType: assertTSBaseType,
    assertTSBigIntKeyword: assertTSBigIntKeyword,
    assertTSBooleanKeyword: assertTSBooleanKeyword,
    assertTSCallSignatureDeclaration: assertTSCallSignatureDeclaration,
    assertTSConditionalType: assertTSConditionalType,
    assertTSConstructSignatureDeclaration: assertTSConstructSignatureDeclaration,
    assertTSConstructorType: assertTSConstructorType,
    assertTSDeclareFunction: assertTSDeclareFunction,
    assertTSDeclareMethod: assertTSDeclareMethod,
    assertTSEntityName: assertTSEntityName,
    assertTSEnumDeclaration: assertTSEnumDeclaration,
    assertTSEnumMember: assertTSEnumMember,
    assertTSExportAssignment: assertTSExportAssignment,
    assertTSExpressionWithTypeArguments: assertTSExpressionWithTypeArguments,
    assertTSExternalModuleReference: assertTSExternalModuleReference,
    assertTSFunctionType: assertTSFunctionType,
    assertTSImportEqualsDeclaration: assertTSImportEqualsDeclaration,
    assertTSImportType: assertTSImportType,
    assertTSIndexSignature: assertTSIndexSignature,
    assertTSIndexedAccessType: assertTSIndexedAccessType,
    assertTSInferType: assertTSInferType,
    assertTSInstantiationExpression: assertTSInstantiationExpression,
    assertTSInterfaceBody: assertTSInterfaceBody,
    assertTSInterfaceDeclaration: assertTSInterfaceDeclaration,
    assertTSIntersectionType: assertTSIntersectionType,
    assertTSIntrinsicKeyword: assertTSIntrinsicKeyword,
    assertTSLiteralType: assertTSLiteralType,
    assertTSMappedType: assertTSMappedType,
    assertTSMethodSignature: assertTSMethodSignature,
    assertTSModuleBlock: assertTSModuleBlock,
    assertTSModuleDeclaration: assertTSModuleDeclaration,
    assertTSNamedTupleMember: assertTSNamedTupleMember,
    assertTSNamespaceExportDeclaration: assertTSNamespaceExportDeclaration,
    assertTSNeverKeyword: assertTSNeverKeyword,
    assertTSNonNullExpression: assertTSNonNullExpression,
    assertTSNullKeyword: assertTSNullKeyword,
    assertTSNumberKeyword: assertTSNumberKeyword,
    assertTSObjectKeyword: assertTSObjectKeyword,
    assertTSOptionalType: assertTSOptionalType,
    assertTSParameterProperty: assertTSParameterProperty,
    assertTSParenthesizedType: assertTSParenthesizedType,
    assertTSPropertySignature: assertTSPropertySignature,
    assertTSQualifiedName: assertTSQualifiedName,
    assertTSRestType: assertTSRestType,
    assertTSSatisfiesExpression: assertTSSatisfiesExpression,
    assertTSStringKeyword: assertTSStringKeyword,
    assertTSSymbolKeyword: assertTSSymbolKeyword,
    assertTSThisType: assertTSThisType,
    assertTSTupleType: assertTSTupleType,
    assertTSType: assertTSType,
    assertTSTypeAliasDeclaration: assertTSTypeAliasDeclaration,
    assertTSTypeAnnotation: assertTSTypeAnnotation,
    assertTSTypeAssertion: assertTSTypeAssertion,
    assertTSTypeElement: assertTSTypeElement,
    assertTSTypeLiteral: assertTSTypeLiteral,
    assertTSTypeOperator: assertTSTypeOperator,
    assertTSTypeParameter: assertTSTypeParameter,
    assertTSTypeParameterDeclaration: assertTSTypeParameterDeclaration,
    assertTSTypeParameterInstantiation: assertTSTypeParameterInstantiation,
    assertTSTypePredicate: assertTSTypePredicate,
    assertTSTypeQuery: assertTSTypeQuery,
    assertTSTypeReference: assertTSTypeReference,
    assertTSUndefinedKeyword: assertTSUndefinedKeyword,
    assertTSUnionType: assertTSUnionType,
    assertTSUnknownKeyword: assertTSUnknownKeyword,
    assertTSVoidKeyword: assertTSVoidKeyword,
    assertTaggedTemplateExpression: assertTaggedTemplateExpression,
    assertTemplateElement: assertTemplateElement,
    assertTemplateLiteral: assertTemplateLiteral,
    assertTerminatorless: assertTerminatorless,
    assertThisExpression: assertThisExpression,
    assertThisTypeAnnotation: assertThisTypeAnnotation,
    assertThrowStatement: assertThrowStatement,
    assertTopicReference: assertTopicReference,
    assertTryStatement: assertTryStatement,
    assertTupleExpression: assertTupleExpression,
    assertTupleTypeAnnotation: assertTupleTypeAnnotation,
    assertTypeAlias: assertTypeAlias,
    assertTypeAnnotation: assertTypeAnnotation,
    assertTypeCastExpression: assertTypeCastExpression,
    assertTypeParameter: assertTypeParameter,
    assertTypeParameterDeclaration: assertTypeParameterDeclaration,
    assertTypeParameterInstantiation: assertTypeParameterInstantiation,
    assertTypeScript: assertTypeScript,
    assertTypeofTypeAnnotation: assertTypeofTypeAnnotation,
    assertUnaryExpression: assertUnaryExpression,
    assertUnaryLike: assertUnaryLike,
    assertUnionTypeAnnotation: assertUnionTypeAnnotation,
    assertUpdateExpression: assertUpdateExpression,
    assertUserWhitespacable: assertUserWhitespacable,
    assertV8IntrinsicIdentifier: assertV8IntrinsicIdentifier,
    assertVariableDeclaration: assertVariableDeclaration,
    assertVariableDeclarator: assertVariableDeclarator,
    assertVariance: assertVariance,
    assertVoidTypeAnnotation: assertVoidTypeAnnotation,
    assertWhile: assertWhile,
    assertWhileStatement: assertWhileStatement,
    assertWithStatement: assertWithStatement,
    assertYieldExpression: assertYieldExpression,
    assignmentExpression: assignmentExpression$b,
    assignmentPattern: assignmentPattern,
    awaitExpression: awaitExpression$1,
    bigIntLiteral: bigIntLiteral,
    binaryExpression: binaryExpression$5,
    bindExpression: bindExpression,
    blockStatement: blockStatement$6,
    booleanLiteral: booleanLiteral$2,
    booleanLiteralTypeAnnotation: booleanLiteralTypeAnnotation,
    booleanTypeAnnotation: booleanTypeAnnotation$1,
    breakStatement: breakStatement,
    buildMatchMemberExpression: buildMatchMemberExpression$1,
    buildUndefinedNode: buildUndefinedNode$2,
    callExpression: callExpression$c,
    catchClause: catchClause,
    classAccessorProperty: classAccessorProperty,
    classBody: classBody,
    classDeclaration: classDeclaration,
    classExpression: classExpression,
    classImplements: classImplements,
    classMethod: classMethod,
    classPrivateMethod: classPrivateMethod,
    classPrivateProperty: classPrivateProperty,
    classProperty: classProperty,
    clone: clone,
    cloneDeep: cloneDeep$1,
    cloneDeepWithoutLoc: cloneDeepWithoutLoc,
    cloneNode: cloneNode$g,
    cloneWithoutLoc: cloneWithoutLoc,
    conditionalExpression: conditionalExpression$5,
    continueStatement: continueStatement,
    createFlowUnionType: createFlowUnionType$1,
    createTSUnionType: createTSUnionType$1,
    createTypeAnnotationBasedOnTypeof: createTypeAnnotationBasedOnTypeof$1,
    createUnionTypeAnnotation: createFlowUnionType$1,
    debuggerStatement: debuggerStatement,
    decimalLiteral: decimalLiteral,
    declareClass: declareClass,
    declareExportAllDeclaration: declareExportAllDeclaration,
    declareExportDeclaration: declareExportDeclaration,
    declareFunction: declareFunction,
    declareInterface: declareInterface,
    declareModule: declareModule,
    declareModuleExports: declareModuleExports,
    declareOpaqueType: declareOpaqueType,
    declareTypeAlias: declareTypeAlias,
    declareVariable: declareVariable,
    declaredPredicate: declaredPredicate,
    decorator: decorator,
    directive: directive,
    directiveLiteral: directiveLiteral,
    doExpression: doExpression,
    doWhileStatement: doWhileStatement,
    emptyStatement: emptyStatement$1,
    emptyTypeAnnotation: emptyTypeAnnotation,
    ensureBlock: ensureBlock$1,
    enumBooleanBody: enumBooleanBody,
    enumBooleanMember: enumBooleanMember,
    enumDeclaration: enumDeclaration,
    enumDefaultedMember: enumDefaultedMember,
    enumNumberBody: enumNumberBody,
    enumNumberMember: enumNumberMember,
    enumStringBody: enumStringBody,
    enumStringMember: enumStringMember,
    enumSymbolBody: enumSymbolBody,
    existsTypeAnnotation: existsTypeAnnotation,
    exportAllDeclaration: exportAllDeclaration,
    exportDefaultDeclaration: exportDefaultDeclaration,
    exportDefaultSpecifier: exportDefaultSpecifier,
    exportNamedDeclaration: exportNamedDeclaration$2,
    exportNamespaceSpecifier: exportNamespaceSpecifier,
    exportSpecifier: exportSpecifier$2,
    expressionStatement: expressionStatement$7,
    file: file$1,
    forInStatement: forInStatement,
    forOfStatement: forOfStatement,
    forStatement: forStatement,
    functionDeclaration: functionDeclaration,
    functionExpression: functionExpression$2,
    functionTypeAnnotation: functionTypeAnnotation,
    functionTypeParam: functionTypeParam,
    genericTypeAnnotation: genericTypeAnnotation$1,
    getAssignmentIdentifiers: getAssignmentIdentifiers$2,
    getBindingIdentifiers: getBindingIdentifiers$4,
    getFunctionName: getFunctionName$1,
    getOuterBindingIdentifiers: getOuterBindingIdentifiers$1,
    identifier: identifier$e,
    ifStatement: ifStatement,
    import: _import,
    importAttribute: importAttribute,
    importDeclaration: importDeclaration$1,
    importDefaultSpecifier: importDefaultSpecifier$1,
    importExpression: importExpression,
    importNamespaceSpecifier: importNamespaceSpecifier$1,
    importSpecifier: importSpecifier$2,
    indexedAccessType: indexedAccessType,
    inferredPredicate: inferredPredicate,
    inheritInnerComments: inheritInnerComments,
    inheritLeadingComments: inheritLeadingComments$1,
    inheritTrailingComments: inheritTrailingComments$1,
    inherits: inherits$3,
    inheritsComments: inheritsComments$1,
    interfaceDeclaration: interfaceDeclaration,
    interfaceExtends: interfaceExtends,
    interfaceTypeAnnotation: interfaceTypeAnnotation,
    interpreterDirective: interpreterDirective$1,
    intersectionTypeAnnotation: intersectionTypeAnnotation,
    is: is,
    isAccessor: isAccessor,
    isAnyTypeAnnotation: isAnyTypeAnnotation$1,
    isArgumentPlaceholder: isArgumentPlaceholder,
    isArrayExpression: isArrayExpression$2,
    isArrayPattern: isArrayPattern,
    isArrayTypeAnnotation: isArrayTypeAnnotation$2,
    isArrowFunctionExpression: isArrowFunctionExpression,
    isAssignmentExpression: isAssignmentExpression$2,
    isAssignmentPattern: isAssignmentPattern$4,
    isAwaitExpression: isAwaitExpression,
    isBigIntLiteral: isBigIntLiteral,
    isBinary: isBinary$2,
    isBinaryExpression: isBinaryExpression$1,
    isBindExpression: isBindExpression,
    isBinding: isBinding$1,
    isBlock: isBlock,
    isBlockParent: isBlockParent,
    isBlockScoped: isBlockScoped$2,
    isBlockStatement: isBlockStatement$3,
    isBooleanLiteral: isBooleanLiteral,
    isBooleanLiteralTypeAnnotation: isBooleanLiteralTypeAnnotation,
    isBooleanTypeAnnotation: isBooleanTypeAnnotation$1,
    isBreakStatement: isBreakStatement,
    isCallExpression: isCallExpression$8,
    isCatchClause: isCatchClause,
    isClass: isClass$1,
    isClassAccessorProperty: isClassAccessorProperty,
    isClassBody: isClassBody$2,
    isClassDeclaration: isClassDeclaration$2,
    isClassExpression: isClassExpression,
    isClassImplements: isClassImplements,
    isClassMethod: isClassMethod,
    isClassPrivateMethod: isClassPrivateMethod,
    isClassPrivateProperty: isClassPrivateProperty,
    isClassProperty: isClassProperty,
    isCompletionStatement: isCompletionStatement,
    isConditional: isConditional,
    isConditionalExpression: isConditionalExpression,
    isContinueStatement: isContinueStatement,
    isDebuggerStatement: isDebuggerStatement,
    isDecimalLiteral: isDecimalLiteral,
    isDeclaration: isDeclaration,
    isDeclareClass: isDeclareClass,
    isDeclareExportAllDeclaration: isDeclareExportAllDeclaration,
    isDeclareExportDeclaration: isDeclareExportDeclaration$1,
    isDeclareFunction: isDeclareFunction,
    isDeclareInterface: isDeclareInterface,
    isDeclareModule: isDeclareModule,
    isDeclareModuleExports: isDeclareModuleExports,
    isDeclareOpaqueType: isDeclareOpaqueType,
    isDeclareTypeAlias: isDeclareTypeAlias,
    isDeclareVariable: isDeclareVariable,
    isDeclaredPredicate: isDeclaredPredicate,
    isDecorator: isDecorator$1,
    isDirective: isDirective,
    isDirectiveLiteral: isDirectiveLiteral,
    isDoExpression: isDoExpression,
    isDoWhileStatement: isDoWhileStatement,
    isEmptyStatement: isEmptyStatement$1,
    isEmptyTypeAnnotation: isEmptyTypeAnnotation$1,
    isEnumBody: isEnumBody,
    isEnumBooleanBody: isEnumBooleanBody,
    isEnumBooleanMember: isEnumBooleanMember,
    isEnumDeclaration: isEnumDeclaration,
    isEnumDefaultedMember: isEnumDefaultedMember,
    isEnumMember: isEnumMember,
    isEnumNumberBody: isEnumNumberBody,
    isEnumNumberMember: isEnumNumberMember,
    isEnumStringBody: isEnumStringBody,
    isEnumStringMember: isEnumStringMember,
    isEnumSymbolBody: isEnumSymbolBody,
    isExistsTypeAnnotation: isExistsTypeAnnotation,
    isExportAllDeclaration: isExportAllDeclaration$1,
    isExportDeclaration: isExportDeclaration$2,
    isExportDefaultDeclaration: isExportDefaultDeclaration$2,
    isExportDefaultSpecifier: isExportDefaultSpecifier$1,
    isExportNamedDeclaration: isExportNamedDeclaration$3,
    isExportNamespaceSpecifier: isExportNamespaceSpecifier$1,
    isExportSpecifier: isExportSpecifier,
    isExpression: isExpression$4,
    isExpressionStatement: isExpressionStatement$2,
    isExpressionWrapper: isExpressionWrapper,
    isFile: isFile,
    isFlow: isFlow$1,
    isFlowBaseAnnotation: isFlowBaseAnnotation$1,
    isFlowDeclaration: isFlowDeclaration,
    isFlowPredicate: isFlowPredicate,
    isFlowType: isFlowType$1,
    isFor: isFor$1,
    isForInStatement: isForInStatement,
    isForOfStatement: isForOfStatement$2,
    isForStatement: isForStatement$2,
    isForXStatement: isForXStatement$1,
    isFunction: isFunction$5,
    isFunctionDeclaration: isFunctionDeclaration$2,
    isFunctionExpression: isFunctionExpression,
    isFunctionParent: isFunctionParent,
    isFunctionTypeAnnotation: isFunctionTypeAnnotation,
    isFunctionTypeParam: isFunctionTypeParam,
    isGenericTypeAnnotation: isGenericTypeAnnotation$1,
    isIdentifier: isIdentifier$f,
    isIfStatement: isIfStatement$2,
    isImmutable: isImmutable,
    isImport: isImport,
    isImportAttribute: isImportAttribute,
    isImportDeclaration: isImportDeclaration$3,
    isImportDefaultSpecifier: isImportDefaultSpecifier$1,
    isImportExpression: isImportExpression,
    isImportNamespaceSpecifier: isImportNamespaceSpecifier$1,
    isImportOrExportDeclaration: isImportOrExportDeclaration,
    isImportSpecifier: isImportSpecifier$1,
    isIndexedAccessType: isIndexedAccessType$1,
    isInferredPredicate: isInferredPredicate,
    isInterfaceDeclaration: isInterfaceDeclaration,
    isInterfaceExtends: isInterfaceExtends,
    isInterfaceTypeAnnotation: isInterfaceTypeAnnotation,
    isInterpreterDirective: isInterpreterDirective,
    isIntersectionTypeAnnotation: isIntersectionTypeAnnotation,
    isJSX: isJSX,
    isJSXAttribute: isJSXAttribute,
    isJSXClosingElement: isJSXClosingElement,
    isJSXClosingFragment: isJSXClosingFragment,
    isJSXElement: isJSXElement,
    isJSXEmptyExpression: isJSXEmptyExpression,
    isJSXExpressionContainer: isJSXExpressionContainer$1,
    isJSXFragment: isJSXFragment,
    isJSXIdentifier: isJSXIdentifier$3,
    isJSXMemberExpression: isJSXMemberExpression$2,
    isJSXNamespacedName: isJSXNamespacedName$1,
    isJSXOpeningElement: isJSXOpeningElement,
    isJSXOpeningFragment: isJSXOpeningFragment,
    isJSXSpreadAttribute: isJSXSpreadAttribute$1,
    isJSXSpreadChild: isJSXSpreadChild,
    isJSXText: isJSXText,
    isLVal: isLVal,
    isLabeledStatement: isLabeledStatement,
    isLet: isLet,
    isLiteral: isLiteral$5,
    isLogicalExpression: isLogicalExpression,
    isLoop: isLoop$1,
    isMemberExpression: isMemberExpression$8,
    isMetaProperty: isMetaProperty$1,
    isMethod: isMethod$1,
    isMiscellaneous: isMiscellaneous,
    isMixedTypeAnnotation: isMixedTypeAnnotation$1,
    isModuleDeclaration: isModuleDeclaration,
    isModuleExpression: isModuleExpression,
    isModuleSpecifier: isModuleSpecifier$1,
    isNewExpression: isNewExpression$3,
    isNode: isNode,
    isNodesEquivalent: isNodesEquivalent,
    isNoop: isNoop,
    isNullLiteral: isNullLiteral$1,
    isNullLiteralTypeAnnotation: isNullLiteralTypeAnnotation,
    isNullableTypeAnnotation: isNullableTypeAnnotation,
    isNumberLiteral: isNumberLiteral,
    isNumberLiteralTypeAnnotation: isNumberLiteralTypeAnnotation,
    isNumberTypeAnnotation: isNumberTypeAnnotation$1,
    isNumericLiteral: isNumericLiteral,
    isObjectExpression: isObjectExpression$3,
    isObjectMember: isObjectMember,
    isObjectMethod: isObjectMethod,
    isObjectPattern: isObjectPattern$1,
    isObjectProperty: isObjectProperty$3,
    isObjectTypeAnnotation: isObjectTypeAnnotation,
    isObjectTypeCallProperty: isObjectTypeCallProperty,
    isObjectTypeIndexer: isObjectTypeIndexer,
    isObjectTypeInternalSlot: isObjectTypeInternalSlot,
    isObjectTypeProperty: isObjectTypeProperty,
    isObjectTypeSpreadProperty: isObjectTypeSpreadProperty,
    isOpaqueType: isOpaqueType,
    isOptionalCallExpression: isOptionalCallExpression$2,
    isOptionalIndexedAccessType: isOptionalIndexedAccessType,
    isOptionalMemberExpression: isOptionalMemberExpression$3,
    isParenthesizedExpression: isParenthesizedExpression$2,
    isPattern: isPattern,
    isPatternLike: isPatternLike,
    isPipelineBareFunction: isPipelineBareFunction,
    isPipelinePrimaryTopicReference: isPipelinePrimaryTopicReference,
    isPipelineTopicExpression: isPipelineTopicExpression,
    isPlaceholder: isPlaceholder$1,
    isPlaceholderType: isPlaceholderType,
    isPrivate: isPrivate,
    isPrivateName: isPrivateName$3,
    isProgram: isProgram$1,
    isProperty: isProperty$1,
    isPureish: isPureish$2,
    isQualifiedTypeIdentifier: isQualifiedTypeIdentifier,
    isRecordExpression: isRecordExpression$1,
    isReferenced: isReferenced$2,
    isRegExpLiteral: isRegExpLiteral$1,
    isRegexLiteral: isRegexLiteral,
    isRestElement: isRestElement$2,
    isRestProperty: isRestProperty$1,
    isReturnStatement: isReturnStatement,
    isScopable: isScopable,
    isScope: isScope$1,
    isSequenceExpression: isSequenceExpression$1,
    isSpecifierDefault: isSpecifierDefault,
    isSpreadElement: isSpreadElement$1,
    isSpreadProperty: isSpreadProperty$1,
    isStandardized: isStandardized,
    isStatement: isStatement$9,
    isStaticBlock: isStaticBlock,
    isStringLiteral: isStringLiteral$5,
    isStringLiteralTypeAnnotation: isStringLiteralTypeAnnotation,
    isStringTypeAnnotation: isStringTypeAnnotation$1,
    isSuper: isSuper$3,
    isSwitchCase: isSwitchCase,
    isSwitchStatement: isSwitchStatement,
    isSymbolTypeAnnotation: isSymbolTypeAnnotation,
    isTSAnyKeyword: isTSAnyKeyword,
    isTSArrayType: isTSArrayType$1,
    isTSAsExpression: isTSAsExpression$1,
    isTSBaseType: isTSBaseType,
    isTSBigIntKeyword: isTSBigIntKeyword,
    isTSBooleanKeyword: isTSBooleanKeyword,
    isTSCallSignatureDeclaration: isTSCallSignatureDeclaration,
    isTSConditionalType: isTSConditionalType,
    isTSConstructSignatureDeclaration: isTSConstructSignatureDeclaration,
    isTSConstructorType: isTSConstructorType,
    isTSDeclareFunction: isTSDeclareFunction,
    isTSDeclareMethod: isTSDeclareMethod,
    isTSEntityName: isTSEntityName,
    isTSEnumDeclaration: isTSEnumDeclaration$1,
    isTSEnumMember: isTSEnumMember,
    isTSExportAssignment: isTSExportAssignment,
    isTSExpressionWithTypeArguments: isTSExpressionWithTypeArguments,
    isTSExternalModuleReference: isTSExternalModuleReference,
    isTSFunctionType: isTSFunctionType,
    isTSImportEqualsDeclaration: isTSImportEqualsDeclaration,
    isTSImportType: isTSImportType,
    isTSIndexSignature: isTSIndexSignature,
    isTSIndexedAccessType: isTSIndexedAccessType,
    isTSInferType: isTSInferType,
    isTSInstantiationExpression: isTSInstantiationExpression,
    isTSInterfaceBody: isTSInterfaceBody$1,
    isTSInterfaceDeclaration: isTSInterfaceDeclaration,
    isTSIntersectionType: isTSIntersectionType,
    isTSIntrinsicKeyword: isTSIntrinsicKeyword,
    isTSLiteralType: isTSLiteralType,
    isTSMappedType: isTSMappedType,
    isTSMethodSignature: isTSMethodSignature,
    isTSModuleBlock: isTSModuleBlock,
    isTSModuleDeclaration: isTSModuleDeclaration,
    isTSNamedTupleMember: isTSNamedTupleMember,
    isTSNamespaceExportDeclaration: isTSNamespaceExportDeclaration,
    isTSNeverKeyword: isTSNeverKeyword,
    isTSNonNullExpression: isTSNonNullExpression$1,
    isTSNullKeyword: isTSNullKeyword,
    isTSNumberKeyword: isTSNumberKeyword,
    isTSObjectKeyword: isTSObjectKeyword,
    isTSOptionalType: isTSOptionalType,
    isTSParameterProperty: isTSParameterProperty,
    isTSParenthesizedType: isTSParenthesizedType,
    isTSPropertySignature: isTSPropertySignature,
    isTSQualifiedName: isTSQualifiedName,
    isTSRestType: isTSRestType,
    isTSSatisfiesExpression: isTSSatisfiesExpression$1,
    isTSStringKeyword: isTSStringKeyword,
    isTSSymbolKeyword: isTSSymbolKeyword,
    isTSThisType: isTSThisType,
    isTSTupleType: isTSTupleType,
    isTSType: isTSType$1,
    isTSTypeAliasDeclaration: isTSTypeAliasDeclaration,
    isTSTypeAnnotation: isTSTypeAnnotation$1,
    isTSTypeAssertion: isTSTypeAssertion$1,
    isTSTypeElement: isTSTypeElement,
    isTSTypeLiteral: isTSTypeLiteral,
    isTSTypeOperator: isTSTypeOperator,
    isTSTypeParameter: isTSTypeParameter,
    isTSTypeParameterDeclaration: isTSTypeParameterDeclaration,
    isTSTypeParameterInstantiation: isTSTypeParameterInstantiation,
    isTSTypePredicate: isTSTypePredicate,
    isTSTypeQuery: isTSTypeQuery,
    isTSTypeReference: isTSTypeReference$1,
    isTSUndefinedKeyword: isTSUndefinedKeyword,
    isTSUnionType: isTSUnionType,
    isTSUnknownKeyword: isTSUnknownKeyword,
    isTSVoidKeyword: isTSVoidKeyword,
    isTaggedTemplateExpression: isTaggedTemplateExpression$1,
    isTemplateElement: isTemplateElement,
    isTemplateLiteral: isTemplateLiteral$1,
    isTerminatorless: isTerminatorless,
    isThisExpression: isThisExpression$2,
    isThisTypeAnnotation: isThisTypeAnnotation,
    isThrowStatement: isThrowStatement,
    isTopicReference: isTopicReference$1,
    isTryStatement: isTryStatement,
    isTupleExpression: isTupleExpression$1,
    isTupleTypeAnnotation: isTupleTypeAnnotation$1,
    isType: isType$2,
    isTypeAlias: isTypeAlias,
    isTypeAnnotation: isTypeAnnotation$1,
    isTypeCastExpression: isTypeCastExpression$1,
    isTypeParameter: isTypeParameter,
    isTypeParameterDeclaration: isTypeParameterDeclaration,
    isTypeParameterInstantiation: isTypeParameterInstantiation,
    isTypeScript: isTypeScript,
    isTypeofTypeAnnotation: isTypeofTypeAnnotation,
    isUnaryExpression: isUnaryExpression$1,
    isUnaryLike: isUnaryLike,
    isUnionTypeAnnotation: isUnionTypeAnnotation$1,
    isUpdateExpression: isUpdateExpression$1,
    isUserWhitespacable: isUserWhitespacable,
    isV8IntrinsicIdentifier: isV8IntrinsicIdentifier,
    isValidES3Identifier: isValidES3Identifier,
    isValidIdentifier: isValidIdentifier$1,
    isVar: isVar$1,
    isVariableDeclaration: isVariableDeclaration$3,
    isVariableDeclarator: isVariableDeclarator,
    isVariance: isVariance,
    isVoidTypeAnnotation: isVoidTypeAnnotation$1,
    isWhile: isWhile,
    isWhileStatement: isWhileStatement,
    isWithStatement: isWithStatement,
    isYieldExpression: isYieldExpression$1,
    jSXAttribute: jsxAttribute,
    jSXClosingElement: jsxClosingElement,
    jSXClosingFragment: jsxClosingFragment,
    jSXElement: jsxElement,
    jSXEmptyExpression: jsxEmptyExpression,
    jSXExpressionContainer: jsxExpressionContainer$1,
    jSXFragment: jsxFragment,
    jSXIdentifier: jsxIdentifier$1,
    jSXMemberExpression: jsxMemberExpression,
    jSXNamespacedName: jsxNamespacedName,
    jSXOpeningElement: jsxOpeningElement,
    jSXOpeningFragment: jsxOpeningFragment,
    jSXSpreadAttribute: jsxSpreadAttribute,
    jSXSpreadChild: jsxSpreadChild,
    jSXText: jsxText,
    jsxAttribute: jsxAttribute,
    jsxClosingElement: jsxClosingElement,
    jsxClosingFragment: jsxClosingFragment,
    jsxElement: jsxElement,
    jsxEmptyExpression: jsxEmptyExpression,
    jsxExpressionContainer: jsxExpressionContainer$1,
    jsxFragment: jsxFragment,
    jsxIdentifier: jsxIdentifier$1,
    jsxMemberExpression: jsxMemberExpression,
    jsxNamespacedName: jsxNamespacedName,
    jsxOpeningElement: jsxOpeningElement,
    jsxOpeningFragment: jsxOpeningFragment,
    jsxSpreadAttribute: jsxSpreadAttribute,
    jsxSpreadChild: jsxSpreadChild,
    jsxText: jsxText,
    labeledStatement: labeledStatement,
    logicalExpression: logicalExpression$3,
    matchesPattern: matchesPattern$2,
    memberExpression: memberExpression$a,
    metaProperty: metaProperty$1,
    mixedTypeAnnotation: mixedTypeAnnotation,
    moduleExpression: moduleExpression,
    newExpression: newExpression,
    noop: noop$1,
    nullLiteral: nullLiteral$2,
    nullLiteralTypeAnnotation: nullLiteralTypeAnnotation$1,
    nullableTypeAnnotation: nullableTypeAnnotation,
    numberLiteral: NumberLiteral,
    numberLiteralTypeAnnotation: numberLiteralTypeAnnotation,
    numberTypeAnnotation: numberTypeAnnotation$2,
    numericLiteral: numericLiteral$6,
    objectExpression: objectExpression$3,
    objectMethod: objectMethod,
    objectPattern: objectPattern$1,
    objectProperty: objectProperty$1,
    objectTypeAnnotation: objectTypeAnnotation,
    objectTypeCallProperty: objectTypeCallProperty,
    objectTypeIndexer: objectTypeIndexer,
    objectTypeInternalSlot: objectTypeInternalSlot,
    objectTypeProperty: objectTypeProperty,
    objectTypeSpreadProperty: objectTypeSpreadProperty,
    opaqueType: opaqueType,
    optionalCallExpression: optionalCallExpression$2,
    optionalIndexedAccessType: optionalIndexedAccessType,
    optionalMemberExpression: optionalMemberExpression$2,
    parenthesizedExpression: parenthesizedExpression,
    pipelineBareFunction: pipelineBareFunction,
    pipelinePrimaryTopicReference: pipelinePrimaryTopicReference,
    pipelineTopicExpression: pipelineTopicExpression,
    placeholder: placeholder,
    prependToMemberExpression: prependToMemberExpression,
    privateName: privateName,
    program: program$3,
    qualifiedTypeIdentifier: qualifiedTypeIdentifier,
    react: react$3,
    recordExpression: recordExpression,
    regExpLiteral: regExpLiteral,
    regexLiteral: RegexLiteral,
    removeComments: removeComments$1,
    removeProperties: removeProperties$1,
    removePropertiesDeep: removePropertiesDeep$1,
    removeTypeDuplicates: removeTypeDuplicates$1,
    restElement: restElement$2,
    restProperty: RestProperty$1,
    returnStatement: returnStatement$3,
    sequenceExpression: sequenceExpression$8,
    shallowEqual: shallowEqual,
    spreadElement: spreadElement$2,
    spreadProperty: SpreadProperty$1,
    staticBlock: staticBlock,
    stringLiteral: stringLiteral$6,
    stringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
    stringTypeAnnotation: stringTypeAnnotation$2,
    super: _super$1,
    switchCase: switchCase,
    switchStatement: switchStatement,
    symbolTypeAnnotation: symbolTypeAnnotation,
    tSAnyKeyword: tsAnyKeyword,
    tSArrayType: tsArrayType,
    tSAsExpression: tsAsExpression,
    tSBigIntKeyword: tsBigIntKeyword,
    tSBooleanKeyword: tsBooleanKeyword,
    tSCallSignatureDeclaration: tsCallSignatureDeclaration,
    tSConditionalType: tsConditionalType,
    tSConstructSignatureDeclaration: tsConstructSignatureDeclaration,
    tSConstructorType: tsConstructorType,
    tSDeclareFunction: tsDeclareFunction,
    tSDeclareMethod: tsDeclareMethod,
    tSEnumDeclaration: tsEnumDeclaration,
    tSEnumMember: tsEnumMember,
    tSExportAssignment: tsExportAssignment,
    tSExpressionWithTypeArguments: tsExpressionWithTypeArguments,
    tSExternalModuleReference: tsExternalModuleReference,
    tSFunctionType: tsFunctionType,
    tSImportEqualsDeclaration: tsImportEqualsDeclaration,
    tSImportType: tsImportType,
    tSIndexSignature: tsIndexSignature,
    tSIndexedAccessType: tsIndexedAccessType,
    tSInferType: tsInferType,
    tSInstantiationExpression: tsInstantiationExpression,
    tSInterfaceBody: tsInterfaceBody,
    tSInterfaceDeclaration: tsInterfaceDeclaration,
    tSIntersectionType: tsIntersectionType,
    tSIntrinsicKeyword: tsIntrinsicKeyword,
    tSLiteralType: tsLiteralType,
    tSMappedType: tsMappedType,
    tSMethodSignature: tsMethodSignature,
    tSModuleBlock: tsModuleBlock,
    tSModuleDeclaration: tsModuleDeclaration,
    tSNamedTupleMember: tsNamedTupleMember,
    tSNamespaceExportDeclaration: tsNamespaceExportDeclaration,
    tSNeverKeyword: tsNeverKeyword,
    tSNonNullExpression: tsNonNullExpression,
    tSNullKeyword: tsNullKeyword,
    tSNumberKeyword: tsNumberKeyword,
    tSObjectKeyword: tsObjectKeyword,
    tSOptionalType: tsOptionalType,
    tSParameterProperty: tsParameterProperty,
    tSParenthesizedType: tsParenthesizedType,
    tSPropertySignature: tsPropertySignature,
    tSQualifiedName: tsQualifiedName,
    tSRestType: tsRestType,
    tSSatisfiesExpression: tsSatisfiesExpression,
    tSStringKeyword: tsStringKeyword,
    tSSymbolKeyword: tsSymbolKeyword,
    tSThisType: tsThisType,
    tSTupleType: tsTupleType,
    tSTypeAliasDeclaration: tsTypeAliasDeclaration,
    tSTypeAnnotation: tsTypeAnnotation,
    tSTypeAssertion: tsTypeAssertion,
    tSTypeLiteral: tsTypeLiteral,
    tSTypeOperator: tsTypeOperator,
    tSTypeParameter: tsTypeParameter,
    tSTypeParameterDeclaration: tsTypeParameterDeclaration,
    tSTypeParameterInstantiation: tsTypeParameterInstantiation,
    tSTypePredicate: tsTypePredicate,
    tSTypeQuery: tsTypeQuery,
    tSTypeReference: tsTypeReference,
    tSUndefinedKeyword: tsUndefinedKeyword,
    tSUnionType: tsUnionType,
    tSUnknownKeyword: tsUnknownKeyword,
    tSVoidKeyword: tsVoidKeyword,
    taggedTemplateExpression: taggedTemplateExpression,
    templateElement: templateElement,
    templateLiteral: templateLiteral,
    thisExpression: thisExpression$4,
    thisTypeAnnotation: thisTypeAnnotation,
    throwStatement: throwStatement,
    toBindingIdentifierName: toBindingIdentifierName$1,
    toBlock: toBlock,
    toComputedKey: toComputedKey$2,
    toExpression: toExpression$1,
    toIdentifier: toIdentifier$1,
    toKeyAlias: toKeyAlias,
    toStatement: toStatement,
    topicReference: topicReference,
    traverse: traverse$2,
    traverseFast: traverseFast$2,
    tryStatement: tryStatement,
    tsAnyKeyword: tsAnyKeyword,
    tsArrayType: tsArrayType,
    tsAsExpression: tsAsExpression,
    tsBigIntKeyword: tsBigIntKeyword,
    tsBooleanKeyword: tsBooleanKeyword,
    tsCallSignatureDeclaration: tsCallSignatureDeclaration,
    tsConditionalType: tsConditionalType,
    tsConstructSignatureDeclaration: tsConstructSignatureDeclaration,
    tsConstructorType: tsConstructorType,
    tsDeclareFunction: tsDeclareFunction,
    tsDeclareMethod: tsDeclareMethod,
    tsEnumDeclaration: tsEnumDeclaration,
    tsEnumMember: tsEnumMember,
    tsExportAssignment: tsExportAssignment,
    tsExpressionWithTypeArguments: tsExpressionWithTypeArguments,
    tsExternalModuleReference: tsExternalModuleReference,
    tsFunctionType: tsFunctionType,
    tsImportEqualsDeclaration: tsImportEqualsDeclaration,
    tsImportType: tsImportType,
    tsIndexSignature: tsIndexSignature,
    tsIndexedAccessType: tsIndexedAccessType,
    tsInferType: tsInferType,
    tsInstantiationExpression: tsInstantiationExpression,
    tsInterfaceBody: tsInterfaceBody,
    tsInterfaceDeclaration: tsInterfaceDeclaration,
    tsIntersectionType: tsIntersectionType,
    tsIntrinsicKeyword: tsIntrinsicKeyword,
    tsLiteralType: tsLiteralType,
    tsMappedType: tsMappedType,
    tsMethodSignature: tsMethodSignature,
    tsModuleBlock: tsModuleBlock,
    tsModuleDeclaration: tsModuleDeclaration,
    tsNamedTupleMember: tsNamedTupleMember,
    tsNamespaceExportDeclaration: tsNamespaceExportDeclaration,
    tsNeverKeyword: tsNeverKeyword,
    tsNonNullExpression: tsNonNullExpression,
    tsNullKeyword: tsNullKeyword,
    tsNumberKeyword: tsNumberKeyword,
    tsObjectKeyword: tsObjectKeyword,
    tsOptionalType: tsOptionalType,
    tsParameterProperty: tsParameterProperty,
    tsParenthesizedType: tsParenthesizedType,
    tsPropertySignature: tsPropertySignature,
    tsQualifiedName: tsQualifiedName,
    tsRestType: tsRestType,
    tsSatisfiesExpression: tsSatisfiesExpression,
    tsStringKeyword: tsStringKeyword,
    tsSymbolKeyword: tsSymbolKeyword,
    tsThisType: tsThisType,
    tsTupleType: tsTupleType,
    tsTypeAliasDeclaration: tsTypeAliasDeclaration,
    tsTypeAnnotation: tsTypeAnnotation,
    tsTypeAssertion: tsTypeAssertion,
    tsTypeLiteral: tsTypeLiteral,
    tsTypeOperator: tsTypeOperator,
    tsTypeParameter: tsTypeParameter,
    tsTypeParameterDeclaration: tsTypeParameterDeclaration,
    tsTypeParameterInstantiation: tsTypeParameterInstantiation,
    tsTypePredicate: tsTypePredicate,
    tsTypeQuery: tsTypeQuery,
    tsTypeReference: tsTypeReference,
    tsUndefinedKeyword: tsUndefinedKeyword,
    tsUnionType: tsUnionType,
    tsUnknownKeyword: tsUnknownKeyword,
    tsVoidKeyword: tsVoidKeyword,
    tupleExpression: tupleExpression,
    tupleTypeAnnotation: tupleTypeAnnotation$1,
    typeAlias: typeAlias,
    typeAnnotation: typeAnnotation,
    typeCastExpression: typeCastExpression,
    typeParameter: typeParameter,
    typeParameterDeclaration: typeParameterDeclaration,
    typeParameterInstantiation: typeParameterInstantiation,
    typeofTypeAnnotation: typeofTypeAnnotation,
    unaryExpression: unaryExpression$5,
    unionTypeAnnotation: unionTypeAnnotation$1,
    updateExpression: updateExpression$1,
    v8IntrinsicIdentifier: v8IntrinsicIdentifier,
    validate: validate$5,
    valueToNode: valueToNode,
    variableDeclaration: variableDeclaration$6,
    variableDeclarator: variableDeclarator$6,
    variance: variance,
    voidTypeAnnotation: voidTypeAnnotation$3,
    whileStatement: whileStatement,
    withStatement: withStatement,
    yieldExpression: yieldExpression$2
  });

  var assertExpressionStatement = assertExpressionStatement$1;
  function makeStatementFormatter(fn) {
    return {
      code: function code(str) {
        return "/* @babel/template */;\n" + str;
      },
      validate: function validate() {},
      unwrap: function unwrap(ast) {
        return fn(ast.program.body.slice(1));
      }
    };
  }
  var smart$1 = makeStatementFormatter(function (body) {
    if (body.length > 1) {
      return body;
    } else {
      return body[0];
    }
  });
  var statements$1 = makeStatementFormatter(function (body) {
    return body;
  });
  var statement$1 = makeStatementFormatter(function (body) {
    if (body.length === 0) {
      throw new Error("Found nothing to return.");
    }
    if (body.length > 1) {
      throw new Error("Found multiple statements but wanted one");
    }
    return body[0];
  });
  var expression$1 = {
    code: function code(str) {
      return "(\n" + str + "\n)";
    },
    validate: function validate(ast) {
      if (ast.program.body.length > 1) {
        throw new Error("Found multiple statements but wanted one");
      }
      if (expression$1.unwrap(ast).start === 0) {
        throw new Error("Parse result included parens.");
      }
    },
    unwrap: function unwrap(_ref) {
      var program = _ref.program;
      var _program$body = _slicedToArray(program.body, 1),
        stmt = _program$body[0];
      assertExpressionStatement(stmt);
      return stmt.expression;
    }
  };
  var program$2 = {
    code: function code(str) {
      return str;
    },
    validate: function validate() {},
    unwrap: function unwrap(ast) {
      return ast.program;
    }
  };

  var _excluded$4 = ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"];
  function merge$1(a, b) {
    var _b$placeholderWhiteli = b.placeholderWhitelist,
      placeholderWhitelist = _b$placeholderWhiteli === void 0 ? a.placeholderWhitelist : _b$placeholderWhiteli,
      _b$placeholderPattern = b.placeholderPattern,
      placeholderPattern = _b$placeholderPattern === void 0 ? a.placeholderPattern : _b$placeholderPattern,
      _b$preserveComments = b.preserveComments,
      preserveComments = _b$preserveComments === void 0 ? a.preserveComments : _b$preserveComments,
      _b$syntacticPlacehold = b.syntacticPlaceholders,
      syntacticPlaceholders = _b$syntacticPlacehold === void 0 ? a.syntacticPlaceholders : _b$syntacticPlacehold;
    return {
      parser: Object.assign({}, a.parser, b.parser),
      placeholderWhitelist: placeholderWhitelist,
      placeholderPattern: placeholderPattern,
      preserveComments: preserveComments,
      syntacticPlaceholders: syntacticPlaceholders
    };
  }
  function validate$4(opts) {
    if (opts != null && typeof opts !== "object") {
      throw new Error("Unknown template options.");
    }
    var _ref = opts || {},
      placeholderWhitelist = _ref.placeholderWhitelist,
      placeholderPattern = _ref.placeholderPattern,
      preserveComments = _ref.preserveComments,
      syntacticPlaceholders = _ref.syntacticPlaceholders,
      parser = _objectWithoutPropertiesLoose(_ref, _excluded$4);
    if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {
      throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined");
    }
    if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) {
      throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined");
    }
    if (preserveComments != null && typeof preserveComments !== "boolean") {
      throw new Error("'.preserveComments' must be a boolean, null, or undefined");
    }
    if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") {
      throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined");
    }
    if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) {
      throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
    }
    return {
      parser: parser,
      placeholderWhitelist: placeholderWhitelist || undefined,
      placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern,
      preserveComments: preserveComments == null ? undefined : preserveComments,
      syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders
    };
  }
  function normalizeReplacements(replacements) {
    if (Array.isArray(replacements)) {
      return replacements.reduce(function (acc, replacement, i) {
        acc["$" + i] = replacement;
        return acc;
      }, {});
    } else if (typeof replacements === "object" || replacements == null) {
      return replacements || undefined;
    }
    throw new Error("Template replacements must be an array, object, null, or undefined");
  }

  var Position = _createClass(function Position(line, col, index) {
    this.line = void 0;
    this.column = void 0;
    this.index = void 0;
    this.line = line;
    this.column = col;
    this.index = index;
  });
  var SourceLocation = _createClass(function SourceLocation(start, end) {
    this.start = void 0;
    this.end = void 0;
    this.filename = void 0;
    this.identifierName = void 0;
    this.start = start;
    this.end = end;
  });
  function createPositionWithColumnOffset(position, columnOffset) {
    var line = position.line,
      column = position.column,
      index = position.index;
    return new Position(line, column + columnOffset, index + columnOffset);
  }

  var code = "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED";
  var ModuleErrors = {
    ImportMetaOutsideModule: {
      message: "import.meta may appear only with 'sourceType: \"module\"'",
      code: code
    },
    ImportOutsideModule: {
      message: "'import' and 'export' may appear only with 'sourceType: \"module\"'",
      code: code
    }
  };

  var NodeDescriptions = {
    ArrayPattern: "array destructuring pattern",
    AssignmentExpression: "assignment expression",
    AssignmentPattern: "assignment expression",
    ArrowFunctionExpression: "arrow function expression",
    ConditionalExpression: "conditional expression",
    CatchClause: "catch clause",
    ForOfStatement: "for-of statement",
    ForInStatement: "for-in statement",
    ForStatement: "for-loop",
    FormalParameters: "function parameter list",
    Identifier: "identifier",
    ImportSpecifier: "import specifier",
    ImportDefaultSpecifier: "import default specifier",
    ImportNamespaceSpecifier: "import namespace specifier",
    ObjectPattern: "object destructuring pattern",
    ParenthesizedExpression: "parenthesized expression",
    RestElement: "rest element",
    UpdateExpression: {
      "true": "prefix operation",
      "false": "postfix operation"
    },
    VariableDeclarator: "variable declaration",
    YieldExpression: "yield expression"
  };
  var toNodeDescription = function toNodeDescription(node) {
    return node.type === "UpdateExpression" ? NodeDescriptions.UpdateExpression["" + node.prefix] : NodeDescriptions[node.type];
  };

  var StandardErrors = {
    AccessorIsGenerator: function AccessorIsGenerator(_ref) {
      var kind = _ref.kind;
      return "A " + kind + "ter cannot be a generator.";
    },
    ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
    AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
    AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
    AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
    AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
    AwaitUsingNotInAsyncContext: "'await using' is only allowed within async functions and at the top levels of modules.",
    AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
    AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",
    BadGetterArity: "A 'get' accessor must not have any formal parameters.",
    BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
    BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
    ConstructorClassField: "Classes may not have a field named 'constructor'.",
    ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
    ConstructorIsAccessor: "Class constructor may not be an accessor.",
    ConstructorIsAsync: "Constructor can't be an async function.",
    ConstructorIsGenerator: "Constructor can't be a generator.",
    DeclarationMissingInitializer: function DeclarationMissingInitializer(_ref2) {
      var kind = _ref2.kind;
      return "Missing initializer in " + kind + " declaration.";
    },
    DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
    DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
    DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
    DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
    DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
    DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
    DecoratorStaticBlock: "Decorators can't be used with a static block.",
    DeferImportRequiresNamespace: 'Only `import defer * as x from "./module"` is valid.',
    DeletePrivateField: "Deleting a private field is not allowed.",
    DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
    DuplicateConstructor: "Duplicate constructor in the same class.",
    DuplicateDefaultExport: "Only one default export allowed per module.",
    DuplicateExport: function DuplicateExport(_ref3) {
      var exportName = _ref3.exportName;
      return "`" + exportName + "` has already been exported. Exported identifiers must be unique.";
    },
    DuplicateProto: "Redefinition of __proto__ property.",
    DuplicateRegExpFlags: "Duplicate regular expression flag.",
    DynamicImportPhaseRequiresImportExpressions: function DynamicImportPhaseRequiresImportExpressions(_ref4) {
      var phase = _ref4.phase;
      return "'import." + phase + "(...)' can only be parsed when using the 'createImportExpressions' option.";
    },
    ElementAfterRest: "Rest element must be last element.",
    EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
    ExportBindingIsString: function ExportBindingIsString(_ref5) {
      var localName = _ref5.localName,
        exportName = _ref5.exportName;
      return "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '" + localName + "' as '" + exportName + "' } from 'some-module'`?";
    },
    ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
    ForInOfLoopInitializer: function ForInOfLoopInitializer(_ref6) {
      var type = _ref6.type;
      return "'" + (type === "ForInStatement" ? "for-in" : "for-of") + "' loop variable declaration may not have an initializer.";
    },
    ForInUsing: "For-in loop may not start with 'using' declaration.",
    ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
    ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
    GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
    IllegalBreakContinue: function IllegalBreakContinue(_ref7) {
      var type = _ref7.type;
      return "Unsyntactic " + (type === "BreakStatement" ? "break" : "continue") + ".";
    },
    IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
    IllegalReturn: "'return' outside of function.",
    ImportAttributesUseAssert: "The `assert` keyword in import attributes is deprecated and it has been replaced by the `with` keyword. You can enable the `deprecatedAssertSyntax: true` option in the import attributes plugin to suppress this error.",
    ImportBindingIsString: function ImportBindingIsString(_ref8) {
      var importName = _ref8.importName;
      return "A string literal cannot be used as an imported binding.\n- Did you mean `import { \"" + importName + "\" as foo }`?";
    },
    ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",
    ImportCallArity: function ImportCallArity(_ref9) {
      var maxArgumentCount = _ref9.maxArgumentCount;
      return "`import()` requires exactly " + (maxArgumentCount === 1 ? "one argument" : "one or two arguments") + ".";
    },
    ImportCallNotNewExpression: "Cannot use new with import(...).",
    ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
    ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
    ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
    ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
    IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
    InvalidBigIntLiteral: "Invalid BigIntLiteral.",
    InvalidCodePoint: "Code point out of bounds.",
    InvalidCoverInitializedName: "Invalid shorthand property initializer.",
    InvalidDecimal: "Invalid decimal.",
    InvalidDigit: function InvalidDigit(_ref10) {
      var radix = _ref10.radix;
      return "Expected number in radix " + radix + ".";
    },
    InvalidEscapeSequence: "Bad character escape sequence.",
    InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
    InvalidEscapedReservedWord: function InvalidEscapedReservedWord(_ref11) {
      var reservedWord = _ref11.reservedWord;
      return "Escape sequence in keyword " + reservedWord + ".";
    },
    InvalidIdentifier: function InvalidIdentifier(_ref12) {
      var identifierName = _ref12.identifierName;
      return "Invalid identifier " + identifierName + ".";
    },
    InvalidLhs: function InvalidLhs(_ref13) {
      var ancestor = _ref13.ancestor;
      return "Invalid left-hand side in " + toNodeDescription(ancestor) + ".";
    },
    InvalidLhsBinding: function InvalidLhsBinding(_ref14) {
      var ancestor = _ref14.ancestor;
      return "Binding invalid left-hand side in " + toNodeDescription(ancestor) + ".";
    },
    InvalidLhsOptionalChaining: function InvalidLhsOptionalChaining(_ref15) {
      var ancestor = _ref15.ancestor;
      return "Invalid optional chaining in the left-hand side of " + toNodeDescription(ancestor) + ".";
    },
    InvalidNumber: "Invalid number.",
    InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
    InvalidOrUnexpectedToken: function InvalidOrUnexpectedToken(_ref16) {
      var unexpected = _ref16.unexpected;
      return "Unexpected character '" + unexpected + "'.";
    },
    InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
    InvalidPrivateFieldResolution: function InvalidPrivateFieldResolution(_ref17) {
      var identifierName = _ref17.identifierName;
      return "Private name #" + identifierName + " is not defined.";
    },
    InvalidPropertyBindingPattern: "Binding member expression.",
    InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
    InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
    LabelRedeclaration: function LabelRedeclaration(_ref18) {
      var labelName = _ref18.labelName;
      return "Label '" + labelName + "' is already declared.";
    },
    LetInLexicalBinding: "'let' is disallowed as a lexically bound name.",
    LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
    MalformedRegExpFlags: "Invalid regular expression flag.",
    MissingClassName: "A class name is required.",
    MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
    MissingSemicolon: "Missing semicolon.",
    MissingPlugin: function MissingPlugin(_ref19) {
      var missingPlugin = _ref19.missingPlugin;
      return "This experimental syntax requires enabling the parser plugin: " + missingPlugin.map(function (name) {
        return JSON.stringify(name);
      }).join(", ") + ".";
    },
    MissingOneOfPlugins: function MissingOneOfPlugins(_ref20) {
      var missingPlugin = _ref20.missingPlugin;
      return "This experimental syntax requires enabling one of the following parser plugin(s): " + missingPlugin.map(function (name) {
        return JSON.stringify(name);
      }).join(", ") + ".";
    },
    MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
    MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
    ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
    ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
    ModuleAttributesWithDuplicateKeys: function ModuleAttributesWithDuplicateKeys(_ref21) {
      var key = _ref21.key;
      return "Duplicate key \"" + key + "\" is not allowed in module attributes.";
    },
    ModuleExportNameHasLoneSurrogate: function ModuleExportNameHasLoneSurrogate(_ref22) {
      var surrogateCharCode = _ref22.surrogateCharCode;
      return "An export name cannot include a lone surrogate, found '\\u" + surrogateCharCode.toString(16) + "'.";
    },
    ModuleExportUndefined: function ModuleExportUndefined(_ref23) {
      var localName = _ref23.localName;
      return "Export '" + localName + "' is not defined.";
    },
    MultipleDefaultsInSwitch: "Multiple default clauses.",
    NewlineAfterThrow: "Illegal newline after throw.",
    NoCatchOrFinally: "Missing catch or finally clause.",
    NumberIdentifier: "Identifier directly after number.",
    NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
    ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
    OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
    OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
    OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
    ParamDupe: "Argument name clash.",
    PatternHasAccessor: "Object pattern can't contain getter or setter.",
    PatternHasMethod: "Object pattern can't contain methods.",
    PrivateInExpectedIn: function PrivateInExpectedIn(_ref24) {
      var identifierName = _ref24.identifierName;
      return "Private names are only allowed in property accesses (`obj.#" + identifierName + "`) or in `in` expressions (`#" + identifierName + " in obj`).";
    },
    PrivateNameRedeclaration: function PrivateNameRedeclaration(_ref25) {
      var identifierName = _ref25.identifierName;
      return "Duplicate private name #" + identifierName + ".";
    },
    RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    RecordNoProto: "'__proto__' is not allowed in Record expressions.",
    RestTrailingComma: "Unexpected trailing comma after rest element.",
    SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
    SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
    SourcePhaseImportRequiresDefault: 'Only `import source x from "./module"` is valid.',
    StaticPrototype: "Classes may not have static property named prototype.",
    SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
    SuperPrivateField: "Private fields can't be accessed on super.",
    TrailingDecorator: "Decorators must be attached to a class element.",
    TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
    TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
    UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
    UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
    UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
    UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
    UnexpectedKeyword: function UnexpectedKeyword(_ref26) {
      var keyword = _ref26.keyword;
      return "Unexpected keyword '" + keyword + "'.";
    },
    UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
    UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
    UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
    UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
    UnexpectedPrivateField: "Unexpected private name.",
    UnexpectedReservedWord: function UnexpectedReservedWord(_ref27) {
      var reservedWord = _ref27.reservedWord;
      return "Unexpected reserved word '" + reservedWord + "'.";
    },
    UnexpectedSuper: "'super' is only allowed in object methods and classes.",
    UnexpectedToken: function UnexpectedToken(_ref28) {
      var expected = _ref28.expected,
        unexpected = _ref28.unexpected;
      return "Unexpected token" + (unexpected ? " '" + unexpected + "'." : "") + (expected ? ", expected \"" + expected + "\"" : "");
    },
    UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
    UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.",
    UnsupportedBind: "Binding should be performed on object property.",
    UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
    UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
    UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
    UnsupportedMetaProperty: function UnsupportedMetaProperty(_ref29) {
      var target = _ref29.target,
        onlyValidPropertyName = _ref29.onlyValidPropertyName;
      return "The only valid meta property for " + target + " is " + target + "." + onlyValidPropertyName + ".";
    },
    UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
    UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
    UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
    UnterminatedComment: "Unterminated comment.",
    UnterminatedRegExp: "Unterminated regular expression.",
    UnterminatedString: "Unterminated string constant.",
    UnterminatedTemplate: "Unterminated template.",
    UsingDeclarationExport: "Using declaration cannot be exported.",
    UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
    VarRedeclaration: function VarRedeclaration(_ref30) {
      var identifierName = _ref30.identifierName;
      return "Identifier '" + identifierName + "' has already been declared.";
    },
    YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
    YieldInParameter: "Yield expression is not allowed in formal parameters.",
    ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
  };

  var StrictModeErrors = {
    StrictDelete: "Deleting local variable in strict mode.",
    StrictEvalArguments: function StrictEvalArguments(_ref) {
      var referenceName = _ref.referenceName;
      return "Assigning to '" + referenceName + "' in strict mode.";
    },
    StrictEvalArgumentsBinding: function StrictEvalArgumentsBinding(_ref2) {
      var bindingName = _ref2.bindingName;
      return "Binding '" + bindingName + "' in strict mode.";
    },
    StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
    StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
    StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
    StrictWith: "'with' in strict mode."
  };

  var UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
  var PipelineOperatorErrors = {
    PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
    PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
    PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
    PipeTopicUnconfiguredToken: function PipeTopicUnconfiguredToken(_ref) {
      var token = _ref.token;
      return "Invalid topic token " + token + ". In order to use " + token + " as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"" + token + "\" }.";
    },
    PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
    PipeUnparenthesizedBody: function PipeUnparenthesizedBody(_ref2) {
      var type = _ref2.type;
      return "Hack-style pipe body cannot be an unparenthesized " + toNodeDescription({
        type: type
      }) + "; please wrap it in parentheses.";
    },
    PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
    PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
    PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
    PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
    PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
    PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
  };

  var _templateObject$G;
  var _excluded$3 = ["message"];
  function defineHidden(obj, key, value) {
    Object.defineProperty(obj, key, {
      enumerable: false,
      configurable: true,
      value: value
    });
  }
  function toParseErrorConstructor(_ref) {
    var toMessage = _ref.toMessage,
      code = _ref.code,
      reasonCode = _ref.reasonCode,
      syntaxPlugin = _ref.syntaxPlugin;
    var hasMissingPlugin = reasonCode === "MissingPlugin" || reasonCode === "MissingOneOfPlugins";
    {
      var oldReasonCodes = {
        AccessorCannotDeclareThisParameter: "AccesorCannotDeclareThisParameter",
        AccessorCannotHaveTypeParameters: "AccesorCannotHaveTypeParameters",
        ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference",
        SetAccessorCannotHaveOptionalParameter: "SetAccesorCannotHaveOptionalParameter",
        SetAccessorCannotHaveRestParameter: "SetAccesorCannotHaveRestParameter",
        SetAccessorCannotHaveReturnType: "SetAccesorCannotHaveReturnType"
      };
      if (oldReasonCodes[reasonCode]) {
        reasonCode = oldReasonCodes[reasonCode];
      }
    }
    return function constructor(loc, details) {
      var error = new SyntaxError();
      error.code = code;
      error.reasonCode = reasonCode;
      error.loc = loc;
      error.pos = loc.index;
      error.syntaxPlugin = syntaxPlugin;
      if (hasMissingPlugin) {
        error.missingPlugin = details.missingPlugin;
      }
      defineHidden(error, "clone", function clone(overrides) {
        var _overrides$loc;
        if (overrides === void 0) {
          overrides = {};
        }
        var _ref2 = (_overrides$loc = overrides.loc) != null ? _overrides$loc : loc,
          line = _ref2.line,
          column = _ref2.column,
          index = _ref2.index;
        return constructor(new Position(line, column, index), Object.assign({}, details, overrides.details));
      });
      defineHidden(error, "details", details);
      Object.defineProperty(error, "message", {
        configurable: true,
        get: function get() {
          var message = toMessage(details) + " (" + loc.line + ":" + loc.column + ")";
          this.message = message;
          return message;
        },
        set: function set(value) {
          Object.defineProperty(this, "message", {
            value: value,
            writable: true
          });
        }
      });
      return error;
    };
  }
  function ParseErrorEnum(argument, syntaxPlugin) {
    if (Array.isArray(argument)) {
      return function (parseErrorTemplates) {
        return ParseErrorEnum(parseErrorTemplates, argument[0]);
      };
    }
    var ParseErrorConstructors = {};
    var _loop = function _loop() {
      var reasonCode = _Object$keys2[_i2];
      var template = argument[reasonCode];
      var _ref3 = typeof template === "string" ? {
          message: function message() {
            return template;
          }
        } : typeof template === "function" ? {
          message: template
        } : template,
        message = _ref3.message,
        rest = _objectWithoutPropertiesLoose(_ref3, _excluded$3);
      var toMessage = typeof message === "string" ? function () {
        return message;
      } : message;
      ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
        code: "BABEL_PARSER_SYNTAX_ERROR",
        reasonCode: reasonCode,
        toMessage: toMessage
      }, syntaxPlugin ? {
        syntaxPlugin: syntaxPlugin
      } : {}, rest));
    };
    for (var _i2 = 0, _Object$keys2 = Object.keys(argument); _i2 < _Object$keys2.length; _i2++) {
      _loop();
    }
    return ParseErrorConstructors;
  }
  var Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(_templateObject$G || (_templateObject$G = _taggedTemplateLiteralLoose(["pipelineOperator"])))(PipelineOperatorErrors));

  var defineProperty = Object.defineProperty;
  var toUnenumerable = function toUnenumerable(object, key) {
    if (object) {
      defineProperty(object, key, {
        enumerable: false,
        value: object[key]
      });
    }
  };
  function toESTreeLocation(node) {
    toUnenumerable(node.loc.start, "index");
    toUnenumerable(node.loc.end, "index");
    return node;
  }
  var estree = (function (superClass) {
    return function (_superClass) {
      function ESTreeParserMixin() {
        return _superClass.apply(this, arguments) || this;
      }
      _inherits(ESTreeParserMixin, _superClass);
      var _proto = ESTreeParserMixin.prototype;
      _proto.parse = function parse() {
        var file = toESTreeLocation(_superClass.prototype.parse.call(this));
        if (this.options.tokens) {
          file.tokens = file.tokens.map(toESTreeLocation);
        }
        return file;
      };
      _proto.parseRegExpLiteral = function parseRegExpLiteral(_ref) {
        var pattern = _ref.pattern,
          flags = _ref.flags;
        var regex = null;
        try {
          regex = new RegExp(pattern, flags);
        } catch (_) {}
        var node = this.estreeParseLiteral(regex);
        node.regex = {
          pattern: pattern,
          flags: flags
        };
        return node;
      };
      _proto.parseBigIntLiteral = function parseBigIntLiteral(value) {
        var bigInt;
        try {
          bigInt = BigInt(value);
        } catch (_unused) {
          bigInt = null;
        }
        var node = this.estreeParseLiteral(bigInt);
        node.bigint = String(node.value || value);
        return node;
      };
      _proto.parseDecimalLiteral = function parseDecimalLiteral(value) {
        var decimal = null;
        var node = this.estreeParseLiteral(decimal);
        node.decimal = String(node.value || value);
        return node;
      };
      _proto.estreeParseLiteral = function estreeParseLiteral(value) {
        return this.parseLiteral(value, "Literal");
      };
      _proto.parseStringLiteral = function parseStringLiteral(value) {
        return this.estreeParseLiteral(value);
      };
      _proto.parseNumericLiteral = function parseNumericLiteral(value) {
        return this.estreeParseLiteral(value);
      };
      _proto.parseNullLiteral = function parseNullLiteral() {
        return this.estreeParseLiteral(null);
      };
      _proto.parseBooleanLiteral = function parseBooleanLiteral(value) {
        return this.estreeParseLiteral(value);
      };
      _proto.directiveToStmt = function directiveToStmt(directive) {
        var expression = directive.value;
        delete directive.value;
        expression.type = "Literal";
        expression.raw = expression.extra.raw;
        expression.value = expression.extra.expressionValue;
        var stmt = directive;
        stmt.type = "ExpressionStatement";
        stmt.expression = expression;
        stmt.directive = expression.extra.rawValue;
        delete expression.extra;
        return stmt;
      };
      _proto.initFunction = function initFunction(node, isAsync) {
        _superClass.prototype.initFunction.call(this, node, isAsync);
        node.expression = false;
      };
      _proto.checkDeclaration = function checkDeclaration(node) {
        if (node != null && this.isObjectProperty(node)) {
          this.checkDeclaration(node.value);
        } else {
          _superClass.prototype.checkDeclaration.call(this, node);
        }
      };
      _proto.getObjectOrClassMethodParams = function getObjectOrClassMethodParams(method) {
        return method.value.params;
      };
      _proto.isValidDirective = function isValidDirective(stmt) {
        var _stmt$expression$extr;
        return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
      };
      _proto.parseBlockBody = function parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
        var _this = this;
        _superClass.prototype.parseBlockBody.call(this, node, allowDirectives, topLevel, end, afterBlockParse);
        var directiveStatements = node.directives.map(function (d) {
          return _this.directiveToStmt(d);
        });
        node.body = directiveStatements.concat(node.body);
        delete node.directives;
      };
      _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
        this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
        if (method.typeParameters) {
          method.value.typeParameters = method.typeParameters;
          delete method.typeParameters;
        }
        classBody.body.push(method);
      };
      _proto.parsePrivateName = function parsePrivateName() {
        var node = _superClass.prototype.parsePrivateName.call(this);
        {
          if (!this.getPluginOption("estree", "classFeatures")) {
            return node;
          }
        }
        return this.convertPrivateNameToPrivateIdentifier(node);
      };
      _proto.convertPrivateNameToPrivateIdentifier = function convertPrivateNameToPrivateIdentifier(node) {
        var name = _superClass.prototype.getPrivateNameSV.call(this, node);
        node = node;
        delete node.id;
        node.name = name;
        node.type = "PrivateIdentifier";
        return node;
      };
      _proto.isPrivateName = function isPrivateName(node) {
        {
          if (!this.getPluginOption("estree", "classFeatures")) {
            return _superClass.prototype.isPrivateName.call(this, node);
          }
        }
        return node.type === "PrivateIdentifier";
      };
      _proto.getPrivateNameSV = function getPrivateNameSV(node) {
        {
          if (!this.getPluginOption("estree", "classFeatures")) {
            return _superClass.prototype.getPrivateNameSV.call(this, node);
          }
        }
        return node.name;
      };
      _proto.parseLiteral = function parseLiteral(value, type) {
        var node = _superClass.prototype.parseLiteral.call(this, value, type);
        node.raw = node.extra.raw;
        delete node.extra;
        return node;
      };
      _proto.parseFunctionBody = function parseFunctionBody(node, allowExpression, isMethod) {
        if (isMethod === void 0) {
          isMethod = false;
        }
        _superClass.prototype.parseFunctionBody.call(this, node, allowExpression, isMethod);
        node.expression = node.body.type !== "BlockStatement";
      };
      _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
        if (inClassScope === void 0) {
          inClassScope = false;
        }
        var funcNode = this.startNode();
        funcNode.kind = node.kind;
        funcNode = _superClass.prototype.parseMethod.call(this, funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
        funcNode.type = "FunctionExpression";
        delete funcNode.kind;
        node.value = funcNode;
        if (type === "ClassPrivateMethod") {
          node.computed = false;
        }
        return this.finishNode(node, "MethodDefinition");
      };
      _proto.nameIsConstructor = function nameIsConstructor(key) {
        if (key.type === "Literal") return key.value === "constructor";
        return _superClass.prototype.nameIsConstructor.call(this, key);
      };
      _proto.parseClassProperty = function parseClassProperty() {
        var _superClass$prototype;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        var propertyNode = (_superClass$prototype = _superClass.prototype.parseClassProperty).call.apply(_superClass$prototype, [this].concat(args));
        {
          if (!this.getPluginOption("estree", "classFeatures")) {
            return propertyNode;
          }
        }
        propertyNode.type = "PropertyDefinition";
        return propertyNode;
      };
      _proto.parseClassPrivateProperty = function parseClassPrivateProperty() {
        var _superClass$prototype2;
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        var propertyNode = (_superClass$prototype2 = _superClass.prototype.parseClassPrivateProperty).call.apply(_superClass$prototype2, [this].concat(args));
        {
          if (!this.getPluginOption("estree", "classFeatures")) {
            return propertyNode;
          }
        }
        propertyNode.type = "PropertyDefinition";
        propertyNode.computed = false;
        return propertyNode;
      };
      _proto.parseObjectMethod = function parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
        var node = _superClass.prototype.parseObjectMethod.call(this, prop, isGenerator, isAsync, isPattern, isAccessor);
        if (node) {
          node.type = "Property";
          if (node.kind === "method") {
            node.kind = "init";
          }
          node.shorthand = false;
        }
        return node;
      };
      _proto.parseObjectProperty = function parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
        var node = _superClass.prototype.parseObjectProperty.call(this, prop, startLoc, isPattern, refExpressionErrors);
        if (node) {
          node.kind = "init";
          node.type = "Property";
        }
        return node;
      };
      _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
        return type === "Property" ? "value" : _superClass.prototype.isValidLVal.call(this, type, isUnparenthesizedInAssign, binding);
      };
      _proto.isAssignable = function isAssignable(node, isBinding) {
        if (node != null && this.isObjectProperty(node)) {
          return this.isAssignable(node.value, isBinding);
        }
        return _superClass.prototype.isAssignable.call(this, node, isBinding);
      };
      _proto.toAssignable = function toAssignable(node, isLHS) {
        if (isLHS === void 0) {
          isLHS = false;
        }
        if (node != null && this.isObjectProperty(node)) {
          var key = node.key,
            value = node.value;
          if (this.isPrivateName(key)) {
            this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
          }
          this.toAssignable(value, isLHS);
        } else {
          _superClass.prototype.toAssignable.call(this, node, isLHS);
        }
      };
      _proto.toAssignableObjectExpressionProp = function toAssignableObjectExpressionProp(prop, isLast, isLHS) {
        if (prop.type === "Property" && (prop.kind === "get" || prop.kind === "set")) {
          this.raise(Errors.PatternHasAccessor, prop.key);
        } else if (prop.type === "Property" && prop.method) {
          this.raise(Errors.PatternHasMethod, prop.key);
        } else {
          _superClass.prototype.toAssignableObjectExpressionProp.call(this, prop, isLast, isLHS);
        }
      };
      _proto.finishCallExpression = function finishCallExpression(unfinished, optional) {
        var node = _superClass.prototype.finishCallExpression.call(this, unfinished, optional);
        if (node.callee.type === "Import") {
          node.type = "ImportExpression";
          node.source = node.arguments[0];
          if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) {
            var _ref2, _ref3;
            node.options = (_ref2 = node.arguments[1]) != null ? _ref2 : null;
            node.attributes = (_ref3 = node.arguments[1]) != null ? _ref3 : null;
          }
          delete node.arguments;
          delete node.callee;
        }
        return node;
      };
      _proto.toReferencedArguments = function toReferencedArguments(node) {
        if (node.type === "ImportExpression") {
          return;
        }
        _superClass.prototype.toReferencedArguments.call(this, node);
      };
      _proto.parseExport = function parseExport(unfinished, decorators) {
        var exportStartLoc = this.state.lastTokStartLoc;
        var node = _superClass.prototype.parseExport.call(this, unfinished, decorators);
        switch (node.type) {
          case "ExportAllDeclaration":
            node.exported = null;
            break;
          case "ExportNamedDeclaration":
            if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
              node.type = "ExportAllDeclaration";
              node.exported = node.specifiers[0].exported;
              delete node.specifiers;
            }
          case "ExportDefaultDeclaration":
            {
              var _declaration$decorato;
              var declaration = node.declaration;
              if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
                this.resetStartLocation(node, exportStartLoc);
              }
            }
            break;
        }
        return node;
      };
      _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
        var node = _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, state);
        if (state.optionalChainMember) {
          if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {
            node.type = node.type.substring(8);
          }
          if (state.stop) {
            var chain = this.startNodeAtNode(node);
            chain.expression = node;
            return this.finishNode(chain, "ChainExpression");
          }
        } else if (node.type === "MemberExpression" || node.type === "CallExpression") {
          node.optional = false;
        }
        return node;
      };
      _proto.isOptionalMemberExpression = function isOptionalMemberExpression(node) {
        if (node.type === "ChainExpression") {
          return node.expression.type === "MemberExpression";
        }
        return _superClass.prototype.isOptionalMemberExpression.call(this, node);
      };
      _proto.hasPropertyAsPrivateName = function hasPropertyAsPrivateName(node) {
        if (node.type === "ChainExpression") {
          node = node.expression;
        }
        return _superClass.prototype.hasPropertyAsPrivateName.call(this, node);
      };
      _proto.isObjectProperty = function isObjectProperty(node) {
        return node.type === "Property" && node.kind === "init" && !node.method;
      };
      _proto.isObjectMethod = function isObjectMethod(node) {
        return node.type === "Property" && (node.method || node.kind === "get" || node.kind === "set");
      };
      _proto.finishNodeAt = function finishNodeAt(node, type, endLoc) {
        return toESTreeLocation(_superClass.prototype.finishNodeAt.call(this, node, type, endLoc));
      };
      _proto.resetStartLocation = function resetStartLocation(node, startLoc) {
        _superClass.prototype.resetStartLocation.call(this, node, startLoc);
        toESTreeLocation(node);
      };
      _proto.resetEndLocation = function resetEndLocation(node, endLoc) {
        if (endLoc === void 0) {
          endLoc = this.state.lastTokEndLoc;
        }
        _superClass.prototype.resetEndLocation.call(this, node, endLoc);
        toESTreeLocation(node);
      };
      return _createClass(ESTreeParserMixin);
    }(superClass);
  });

  var TokContext = _createClass(function TokContext(token, preserveSpace) {
    this.token = void 0;
    this.preserveSpace = void 0;
    this.token = token;
    this.preserveSpace = !!preserveSpace;
  });
  var types = {
    brace: new TokContext("{"),
    j_oTag: new TokContext("<tag"),
    j_cTag: new TokContext("</tag"),
    j_expr: new TokContext("<tag>...</tag>", true)
  };
  {
    types.template = new TokContext("`", true);
  }

  var beforeExpr = true;
  var startsExpr = true;
  var isLoop = true;
  var isAssign = true;
  var prefix = true;
  var postfix = true;
  var ExportedTokenType = _createClass(function ExportedTokenType(label, conf) {
    if (conf === void 0) {
      conf = {};
    }
    this.label = void 0;
    this.keyword = void 0;
    this.beforeExpr = void 0;
    this.startsExpr = void 0;
    this.rightAssociative = void 0;
    this.isLoop = void 0;
    this.isAssign = void 0;
    this.prefix = void 0;
    this.postfix = void 0;
    this.binop = void 0;
    this.label = label;
    this.keyword = conf.keyword;
    this.beforeExpr = !!conf.beforeExpr;
    this.startsExpr = !!conf.startsExpr;
    this.rightAssociative = !!conf.rightAssociative;
    this.isLoop = !!conf.isLoop;
    this.isAssign = !!conf.isAssign;
    this.prefix = !!conf.prefix;
    this.postfix = !!conf.postfix;
    this.binop = conf.binop != null ? conf.binop : null;
    {
      this.updateContext = null;
    }
  });
  var keywords = new Map();
  function createKeyword(name, options) {
    if (options === void 0) {
      options = {};
    }
    options.keyword = name;
    var token = createToken(name, options);
    keywords.set(name, token);
    return token;
  }
  function createBinop(name, binop) {
    return createToken(name, {
      beforeExpr: beforeExpr,
      binop: binop
    });
  }
  var tokenTypeCounter = -1;
  var tokenTypes = [];
  var tokenLabels = [];
  var tokenBinops = [];
  var tokenBeforeExprs = [];
  var tokenStartsExprs = [];
  var tokenPrefixes = [];
  function createToken(name, options) {
    var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;
    if (options === void 0) {
      options = {};
    }
    ++tokenTypeCounter;
    tokenLabels.push(name);
    tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);
    tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);
    tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);
    tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);
    tokenTypes.push(new ExportedTokenType(name, options));
    return tokenTypeCounter;
  }
  function createKeywordLike(name, options) {
    var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;
    if (options === void 0) {
      options = {};
    }
    ++tokenTypeCounter;
    keywords.set(name, tokenTypeCounter);
    tokenLabels.push(name);
    tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);
    tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);
    tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);
    tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);
    tokenTypes.push(new ExportedTokenType("name", options));
    return tokenTypeCounter;
  }
  var tt = {
    bracketL: createToken("[", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    bracketHashL: createToken("#[", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    bracketBarL: createToken("[|", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    bracketR: createToken("]"),
    bracketBarR: createToken("|]"),
    braceL: createToken("{", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    braceBarL: createToken("{|", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    braceHashL: createToken("#{", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    braceR: createToken("}"),
    braceBarR: createToken("|}"),
    parenL: createToken("(", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    parenR: createToken(")"),
    comma: createToken(",", {
      beforeExpr: beforeExpr
    }),
    semi: createToken(";", {
      beforeExpr: beforeExpr
    }),
    colon: createToken(":", {
      beforeExpr: beforeExpr
    }),
    doubleColon: createToken("::", {
      beforeExpr: beforeExpr
    }),
    dot: createToken("."),
    question: createToken("?", {
      beforeExpr: beforeExpr
    }),
    questionDot: createToken("?."),
    arrow: createToken("=>", {
      beforeExpr: beforeExpr
    }),
    template: createToken("template"),
    ellipsis: createToken("...", {
      beforeExpr: beforeExpr
    }),
    backQuote: createToken("`", {
      startsExpr: startsExpr
    }),
    dollarBraceL: createToken("${", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    templateTail: createToken("...`", {
      startsExpr: startsExpr
    }),
    templateNonTail: createToken("...${", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    at: createToken("@"),
    hash: createToken("#", {
      startsExpr: startsExpr
    }),
    interpreterDirective: createToken("#!..."),
    eq: createToken("=", {
      beforeExpr: beforeExpr,
      isAssign: isAssign
    }),
    assign: createToken("_=", {
      beforeExpr: beforeExpr,
      isAssign: isAssign
    }),
    slashAssign: createToken("_=", {
      beforeExpr: beforeExpr,
      isAssign: isAssign
    }),
    xorAssign: createToken("_=", {
      beforeExpr: beforeExpr,
      isAssign: isAssign
    }),
    moduloAssign: createToken("_=", {
      beforeExpr: beforeExpr,
      isAssign: isAssign
    }),
    incDec: createToken("++/--", {
      prefix: prefix,
      postfix: postfix,
      startsExpr: startsExpr
    }),
    bang: createToken("!", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    tilde: createToken("~", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    doubleCaret: createToken("^^", {
      startsExpr: startsExpr
    }),
    doubleAt: createToken("@@", {
      startsExpr: startsExpr
    }),
    pipeline: createBinop("|>", 0),
    nullishCoalescing: createBinop("??", 1),
    logicalOR: createBinop("||", 1),
    logicalAND: createBinop("&&", 2),
    bitwiseOR: createBinop("|", 3),
    bitwiseXOR: createBinop("^", 4),
    bitwiseAND: createBinop("&", 5),
    equality: createBinop("==/!=/===/!==", 6),
    lt: createBinop("</>/<=/>=", 7),
    gt: createBinop("</>/<=/>=", 7),
    relational: createBinop("</>/<=/>=", 7),
    bitShift: createBinop("<</>>/>>>", 8),
    bitShiftL: createBinop("<</>>/>>>", 8),
    bitShiftR: createBinop("<</>>/>>>", 8),
    plusMin: createToken("+/-", {
      beforeExpr: beforeExpr,
      binop: 9,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    modulo: createToken("%", {
      binop: 10,
      startsExpr: startsExpr
    }),
    star: createToken("*", {
      binop: 10
    }),
    slash: createBinop("/", 10),
    exponent: createToken("**", {
      beforeExpr: beforeExpr,
      binop: 11,
      rightAssociative: true
    }),
    _in: createKeyword("in", {
      beforeExpr: beforeExpr,
      binop: 7
    }),
    _instanceof: createKeyword("instanceof", {
      beforeExpr: beforeExpr,
      binop: 7
    }),
    _break: createKeyword("break"),
    _case: createKeyword("case", {
      beforeExpr: beforeExpr
    }),
    _catch: createKeyword("catch"),
    _continue: createKeyword("continue"),
    _debugger: createKeyword("debugger"),
    _default: createKeyword("default", {
      beforeExpr: beforeExpr
    }),
    _else: createKeyword("else", {
      beforeExpr: beforeExpr
    }),
    _finally: createKeyword("finally"),
    _function: createKeyword("function", {
      startsExpr: startsExpr
    }),
    _if: createKeyword("if"),
    _return: createKeyword("return", {
      beforeExpr: beforeExpr
    }),
    _switch: createKeyword("switch"),
    _throw: createKeyword("throw", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    _try: createKeyword("try"),
    _var: createKeyword("var"),
    _const: createKeyword("const"),
    _with: createKeyword("with"),
    _new: createKeyword("new", {
      beforeExpr: beforeExpr,
      startsExpr: startsExpr
    }),
    _this: createKeyword("this", {
      startsExpr: startsExpr
    }),
    _super: createKeyword("super", {
      startsExpr: startsExpr
    }),
    _class: createKeyword("class", {
      startsExpr: startsExpr
    }),
    _extends: createKeyword("extends", {
      beforeExpr: beforeExpr
    }),
    _export: createKeyword("export"),
    _import: createKeyword("import", {
      startsExpr: startsExpr
    }),
    _null: createKeyword("null", {
      startsExpr: startsExpr
    }),
    _true: createKeyword("true", {
      startsExpr: startsExpr
    }),
    _false: createKeyword("false", {
      startsExpr: startsExpr
    }),
    _typeof: createKeyword("typeof", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    _void: createKeyword("void", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    _delete: createKeyword("delete", {
      beforeExpr: beforeExpr,
      prefix: prefix,
      startsExpr: startsExpr
    }),
    _do: createKeyword("do", {
      isLoop: isLoop,
      beforeExpr: beforeExpr
    }),
    _for: createKeyword("for", {
      isLoop: isLoop
    }),
    _while: createKeyword("while", {
      isLoop: isLoop
    }),
    _as: createKeywordLike("as", {
      startsExpr: startsExpr
    }),
    _assert: createKeywordLike("assert", {
      startsExpr: startsExpr
    }),
    _async: createKeywordLike("async", {
      startsExpr: startsExpr
    }),
    _await: createKeywordLike("await", {
      startsExpr: startsExpr
    }),
    _defer: createKeywordLike("defer", {
      startsExpr: startsExpr
    }),
    _from: createKeywordLike("from", {
      startsExpr: startsExpr
    }),
    _get: createKeywordLike("get", {
      startsExpr: startsExpr
    }),
    _let: createKeywordLike("let", {
      startsExpr: startsExpr
    }),
    _meta: createKeywordLike("meta", {
      startsExpr: startsExpr
    }),
    _of: createKeywordLike("of", {
      startsExpr: startsExpr
    }),
    _sent: createKeywordLike("sent", {
      startsExpr: startsExpr
    }),
    _set: createKeywordLike("set", {
      startsExpr: startsExpr
    }),
    _source: createKeywordLike("source", {
      startsExpr: startsExpr
    }),
    _static: createKeywordLike("static", {
      startsExpr: startsExpr
    }),
    _using: createKeywordLike("using", {
      startsExpr: startsExpr
    }),
    _yield: createKeywordLike("yield", {
      startsExpr: startsExpr
    }),
    _asserts: createKeywordLike("asserts", {
      startsExpr: startsExpr
    }),
    _checks: createKeywordLike("checks", {
      startsExpr: startsExpr
    }),
    _exports: createKeywordLike("exports", {
      startsExpr: startsExpr
    }),
    _global: createKeywordLike("global", {
      startsExpr: startsExpr
    }),
    _implements: createKeywordLike("implements", {
      startsExpr: startsExpr
    }),
    _intrinsic: createKeywordLike("intrinsic", {
      startsExpr: startsExpr
    }),
    _infer: createKeywordLike("infer", {
      startsExpr: startsExpr
    }),
    _is: createKeywordLike("is", {
      startsExpr: startsExpr
    }),
    _mixins: createKeywordLike("mixins", {
      startsExpr: startsExpr
    }),
    _proto: createKeywordLike("proto", {
      startsExpr: startsExpr
    }),
    _require: createKeywordLike("require", {
      startsExpr: startsExpr
    }),
    _satisfies: createKeywordLike("satisfies", {
      startsExpr: startsExpr
    }),
    _keyof: createKeywordLike("keyof", {
      startsExpr: startsExpr
    }),
    _readonly: createKeywordLike("readonly", {
      startsExpr: startsExpr
    }),
    _unique: createKeywordLike("unique", {
      startsExpr: startsExpr
    }),
    _abstract: createKeywordLike("abstract", {
      startsExpr: startsExpr
    }),
    _declare: createKeywordLike("declare", {
      startsExpr: startsExpr
    }),
    _enum: createKeywordLike("enum", {
      startsExpr: startsExpr
    }),
    _module: createKeywordLike("module", {
      startsExpr: startsExpr
    }),
    _namespace: createKeywordLike("namespace", {
      startsExpr: startsExpr
    }),
    _interface: createKeywordLike("interface", {
      startsExpr: startsExpr
    }),
    _type: createKeywordLike("type", {
      startsExpr: startsExpr
    }),
    _opaque: createKeywordLike("opaque", {
      startsExpr: startsExpr
    }),
    name: createToken("name", {
      startsExpr: startsExpr
    }),
    string: createToken("string", {
      startsExpr: startsExpr
    }),
    num: createToken("num", {
      startsExpr: startsExpr
    }),
    bigint: createToken("bigint", {
      startsExpr: startsExpr
    }),
    decimal: createToken("decimal", {
      startsExpr: startsExpr
    }),
    regexp: createToken("regexp", {
      startsExpr: startsExpr
    }),
    privateName: createToken("#name", {
      startsExpr: startsExpr
    }),
    eof: createToken("eof"),
    jsxName: createToken("jsxName"),
    jsxText: createToken("jsxText", {
      beforeExpr: true
    }),
    jsxTagStart: createToken("jsxTagStart", {
      startsExpr: true
    }),
    jsxTagEnd: createToken("jsxTagEnd"),
    placeholder: createToken("%%", {
      startsExpr: true
    })
  };
  function tokenIsIdentifier(token) {
    return token >= 93 && token <= 132;
  }
  function tokenKeywordOrIdentifierIsKeyword(token) {
    return token <= 92;
  }
  function tokenIsKeywordOrIdentifier(token) {
    return token >= 58 && token <= 132;
  }
  function tokenIsLiteralPropertyName(token) {
    return token >= 58 && token <= 136;
  }
  function tokenComesBeforeExpression(token) {
    return tokenBeforeExprs[token];
  }
  function tokenCanStartExpression(token) {
    return tokenStartsExprs[token];
  }
  function tokenIsAssignment(token) {
    return token >= 29 && token <= 33;
  }
  function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
    return token >= 129 && token <= 131;
  }
  function tokenIsLoop(token) {
    return token >= 90 && token <= 92;
  }
  function tokenIsKeyword(token) {
    return token >= 58 && token <= 92;
  }
  function tokenIsOperator(token) {
    return token >= 39 && token <= 59;
  }
  function tokenIsPostfix(token) {
    return token === 34;
  }
  function tokenIsPrefix(token) {
    return tokenPrefixes[token];
  }
  function tokenIsTSTypeOperator(token) {
    return token >= 121 && token <= 123;
  }
  function tokenIsTSDeclarationStart(token) {
    return token >= 124 && token <= 130;
  }
  function tokenLabelName(token) {
    return tokenLabels[token];
  }
  function tokenOperatorPrecedence(token) {
    return tokenBinops[token];
  }
  function tokenIsRightAssociative(token) {
    return token === 57;
  }
  function tokenIsTemplate(token) {
    return token >= 24 && token <= 25;
  }
  function getExportedToken(token) {
    return tokenTypes[token];
  }
  {
    tokenTypes[8].updateContext = function (context) {
      context.pop();
    };
    tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = function (context) {
      context.push(types.brace);
    };
    tokenTypes[22].updateContext = function (context) {
      if (context[context.length - 1] === types.template) {
        context.pop();
      } else {
        context.push(types.template);
      }
    };
    tokenTypes[142].updateContext = function (context) {
      context.push(types.j_expr, types.j_oTag);
    };
  }

  function isIteratorStart(current, next, next2) {
    return current === 64 && next === 64 && isIdentifierStart(next2);
  }
  var reservedWordLikeSet = new Set(["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", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);
  function canBeReservedWord(word) {
    return reservedWordLikeSet.has(word);
  }

  var ScopeFlag = {
    OTHER: 0,
    PROGRAM: 1,
    FUNCTION: 2,
    ARROW: 4,
    SIMPLE_CATCH: 8,
    SUPER: 16,
    DIRECT_SUPER: 32,
    CLASS: 64,
    STATIC_BLOCK: 128,
    TS_MODULE: 256,
    VAR: 387
  };
  var BindingFlag = {
    KIND_VALUE: 1,
    KIND_TYPE: 2,
    SCOPE_VAR: 4,
    SCOPE_LEXICAL: 8,
    SCOPE_FUNCTION: 16,
    SCOPE_OUTSIDE: 32,
    FLAG_NONE: 64,
    FLAG_CLASS: 128,
    FLAG_TS_ENUM: 256,
    FLAG_TS_CONST_ENUM: 512,
    FLAG_TS_EXPORT_ONLY: 1024,
    FLAG_FLOW_DECLARE_FN: 2048,
    FLAG_TS_IMPORT: 4096,
    FLAG_NO_LET_IN_LEXICAL: 8192,
    TYPE_CLASS: 8331,
    TYPE_LEXICAL: 8201,
    TYPE_CATCH_PARAM: 9,
    TYPE_VAR: 5,
    TYPE_FUNCTION: 17,
    TYPE_TS_INTERFACE: 130,
    TYPE_TS_TYPE: 2,
    TYPE_TS_ENUM: 8459,
    TYPE_TS_AMBIENT: 1024,
    TYPE_NONE: 64,
    TYPE_OUTSIDE: 65,
    TYPE_TS_CONST_ENUM: 8971,
    TYPE_TS_NAMESPACE: 1024,
    TYPE_TS_TYPE_IMPORT: 4098,
    TYPE_TS_VALUE_IMPORT: 4096,
    TYPE_FLOW_DECLARE_FN: 2048
  };
  var ClassElementType = {
    OTHER: 0,
    FLAG_STATIC: 4,
    KIND_GETTER: 2,
    KIND_SETTER: 1,
    KIND_ACCESSOR: 3,
    STATIC_GETTER: 6,
    STATIC_SETTER: 5,
    INSTANCE_GETTER: 2,
    INSTANCE_SETTER: 1
  };

  var NameType = {
    Var: 1,
    Lexical: 2,
    Function: 4
  };
  var Scope$2 = _createClass(function Scope(flags) {
    this.flags = 0;
    this.names = new Map();
    this.firstLexicalName = "";
    this.flags = flags;
  });
  var ScopeHandler = function () {
    function ScopeHandler(parser, inModule) {
      this.parser = void 0;
      this.scopeStack = [];
      this.inModule = void 0;
      this.undefinedExports = new Map();
      this.parser = parser;
      this.inModule = inModule;
    }
    var _proto = ScopeHandler.prototype;
    _proto.createScope = function createScope(flags) {
      return new Scope$2(flags);
    };
    _proto.enter = function enter(flags) {
      this.scopeStack.push(this.createScope(flags));
    };
    _proto.exit = function exit() {
      var scope = this.scopeStack.pop();
      return scope.flags;
    };
    _proto.treatFunctionsAsVarInScope = function treatFunctionsAsVarInScope(scope) {
      return !!(scope.flags & (ScopeFlag.FUNCTION | ScopeFlag.STATIC_BLOCK) || !this.parser.inModule && scope.flags & ScopeFlag.PROGRAM);
    };
    _proto.declareName = function declareName(name, bindingType, loc) {
      var scope = this.currentScope();
      if (bindingType & BindingFlag.SCOPE_LEXICAL || bindingType & BindingFlag.SCOPE_FUNCTION) {
        this.checkRedeclarationInScope(scope, name, bindingType, loc);
        var type = scope.names.get(name) || 0;
        if (bindingType & BindingFlag.SCOPE_FUNCTION) {
          type = type | NameType.Function;
        } else {
          if (!scope.firstLexicalName) {
            scope.firstLexicalName = name;
          }
          type = type | NameType.Lexical;
        }
        scope.names.set(name, type);
        if (bindingType & BindingFlag.SCOPE_LEXICAL) {
          this.maybeExportDefined(scope, name);
        }
      } else if (bindingType & BindingFlag.SCOPE_VAR) {
        for (var i = this.scopeStack.length - 1; i >= 0; --i) {
          scope = this.scopeStack[i];
          this.checkRedeclarationInScope(scope, name, bindingType, loc);
          scope.names.set(name, (scope.names.get(name) || 0) | NameType.Var);
          this.maybeExportDefined(scope, name);
          if (scope.flags & ScopeFlag.VAR) break;
        }
      }
      if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {
        this.undefinedExports["delete"](name);
      }
    };
    _proto.maybeExportDefined = function maybeExportDefined(scope, name) {
      if (this.parser.inModule && scope.flags & ScopeFlag.PROGRAM) {
        this.undefinedExports["delete"](name);
      }
    };
    _proto.checkRedeclarationInScope = function checkRedeclarationInScope(scope, name, bindingType, loc) {
      if (this.isRedeclaredInScope(scope, name, bindingType)) {
        this.parser.raise(Errors.VarRedeclaration, loc, {
          identifierName: name
        });
      }
    };
    _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
      if (!(bindingType & BindingFlag.KIND_VALUE)) return false;
      if (bindingType & BindingFlag.SCOPE_LEXICAL) {
        return scope.names.has(name);
      }
      var type = scope.names.get(name);
      if (bindingType & BindingFlag.SCOPE_FUNCTION) {
        return (type & NameType.Lexical) > 0 || !this.treatFunctionsAsVarInScope(scope) && (type & NameType.Var) > 0;
      }
      return (type & NameType.Lexical) > 0 && !(scope.flags & ScopeFlag.SIMPLE_CATCH && scope.firstLexicalName === name) || !this.treatFunctionsAsVarInScope(scope) && (type & NameType.Function) > 0;
    };
    _proto.checkLocalExport = function checkLocalExport(id) {
      var name = id.name;
      var topLevelScope = this.scopeStack[0];
      if (!topLevelScope.names.has(name)) {
        this.undefinedExports.set(name, id.loc.start);
      }
    };
    _proto.currentScope = function currentScope() {
      return this.scopeStack[this.scopeStack.length - 1];
    };
    _proto.currentVarScopeFlags = function currentVarScopeFlags() {
      for (var i = this.scopeStack.length - 1;; i--) {
        var flags = this.scopeStack[i].flags;
        if (flags & ScopeFlag.VAR) {
          return flags;
        }
      }
    };
    _proto.currentThisScopeFlags = function currentThisScopeFlags() {
      for (var i = this.scopeStack.length - 1;; i--) {
        var flags = this.scopeStack[i].flags;
        if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS) && !(flags & ScopeFlag.ARROW)) {
          return flags;
        }
      }
    };
    return _createClass(ScopeHandler, [{
      key: "inTopLevel",
      get: function get() {
        return (this.currentScope().flags & ScopeFlag.PROGRAM) > 0;
      }
    }, {
      key: "inFunction",
      get: function get() {
        return (this.currentVarScopeFlags() & ScopeFlag.FUNCTION) > 0;
      }
    }, {
      key: "allowSuper",
      get: function get() {
        return (this.currentThisScopeFlags() & ScopeFlag.SUPER) > 0;
      }
    }, {
      key: "allowDirectSuper",
      get: function get() {
        return (this.currentThisScopeFlags() & ScopeFlag.DIRECT_SUPER) > 0;
      }
    }, {
      key: "inClass",
      get: function get() {
        return (this.currentThisScopeFlags() & ScopeFlag.CLASS) > 0;
      }
    }, {
      key: "inClassAndNotInNonArrowFunction",
      get: function get() {
        var flags = this.currentThisScopeFlags();
        return (flags & ScopeFlag.CLASS) > 0 && (flags & ScopeFlag.FUNCTION) === 0;
      }
    }, {
      key: "inStaticBlock",
      get: function get() {
        for (var i = this.scopeStack.length - 1;; i--) {
          var flags = this.scopeStack[i].flags;
          if (flags & ScopeFlag.STATIC_BLOCK) {
            return true;
          }
          if (flags & (ScopeFlag.VAR | ScopeFlag.CLASS)) {
            return false;
          }
        }
      }
    }, {
      key: "inNonArrowFunction",
      get: function get() {
        return (this.currentThisScopeFlags() & ScopeFlag.FUNCTION) > 0;
      }
    }, {
      key: "treatFunctionsAsVar",
      get: function get() {
        return this.treatFunctionsAsVarInScope(this.currentScope());
      }
    }]);
  }();

  var FlowScope = function (_Scope) {
    function FlowScope() {
      var _this;
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
      _this = _Scope.call.apply(_Scope, [this].concat(args)) || this;
      _this.declareFunctions = new Set();
      return _this;
    }
    _inherits(FlowScope, _Scope);
    return _createClass(FlowScope);
  }(Scope$2);
  var FlowScopeHandler = function (_ScopeHandler) {
    function FlowScopeHandler() {
      return _ScopeHandler.apply(this, arguments) || this;
    }
    _inherits(FlowScopeHandler, _ScopeHandler);
    var _proto = FlowScopeHandler.prototype;
    _proto.createScope = function createScope(flags) {
      return new FlowScope(flags);
    };
    _proto.declareName = function declareName(name, bindingType, loc) {
      var scope = this.currentScope();
      if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN) {
        this.checkRedeclarationInScope(scope, name, bindingType, loc);
        this.maybeExportDefined(scope, name);
        scope.declareFunctions.add(name);
        return;
      }
      _ScopeHandler.prototype.declareName.call(this, name, bindingType, loc);
    };
    _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
      if (_ScopeHandler.prototype.isRedeclaredInScope.call(this, scope, name, bindingType)) return true;
      if (bindingType & BindingFlag.FLAG_FLOW_DECLARE_FN && !scope.declareFunctions.has(name)) {
        var type = scope.names.get(name);
        return (type & NameType.Function) > 0 || (type & NameType.Lexical) > 0;
      }
      return false;
    };
    _proto.checkLocalExport = function checkLocalExport(id) {
      if (!this.scopeStack[0].declareFunctions.has(id.name)) {
        _ScopeHandler.prototype.checkLocalExport.call(this, id);
      }
    };
    return _createClass(FlowScopeHandler);
  }(ScopeHandler);

  var BaseParser = function () {
    function BaseParser() {
      this.sawUnambiguousESM = false;
      this.ambiguousScriptDifferentAst = false;
    }
    var _proto = BaseParser.prototype;
    _proto.hasPlugin = function hasPlugin(pluginConfig) {
      if (typeof pluginConfig === "string") {
        return this.plugins.has(pluginConfig);
      } else {
        var pluginName = pluginConfig[0],
          pluginOptions = pluginConfig[1];
        if (!this.hasPlugin(pluginName)) {
          return false;
        }
        var actualOptions = this.plugins.get(pluginName);
        for (var _i2 = 0, _Object$keys2 = Object.keys(pluginOptions); _i2 < _Object$keys2.length; _i2++) {
          var key = _Object$keys2[_i2];
          if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {
            return false;
          }
        }
        return true;
      }
    };
    _proto.getPluginOption = function getPluginOption(plugin, name) {
      var _this$plugins$get;
      return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];
    };
    return _createClass(BaseParser);
  }();

  function setTrailingComments(node, comments) {
    if (node.trailingComments === undefined) {
      node.trailingComments = comments;
    } else {
      var _node$trailingComment;
      (_node$trailingComment = node.trailingComments).unshift.apply(_node$trailingComment, comments);
    }
  }
  function setLeadingComments(node, comments) {
    if (node.leadingComments === undefined) {
      node.leadingComments = comments;
    } else {
      var _node$leadingComments;
      (_node$leadingComments = node.leadingComments).unshift.apply(_node$leadingComments, comments);
    }
  }
  function setInnerComments(node, comments) {
    if (node.innerComments === undefined) {
      node.innerComments = comments;
    } else {
      var _node$innerComments;
      (_node$innerComments = node.innerComments).unshift.apply(_node$innerComments, comments);
    }
  }
  function adjustInnerComments(node, elements, commentWS) {
    var lastElement = null;
    var i = elements.length;
    while (lastElement === null && i > 0) {
      lastElement = elements[--i];
    }
    if (lastElement === null || lastElement.start > commentWS.start) {
      setInnerComments(node, commentWS.comments);
    } else {
      setTrailingComments(lastElement, commentWS.comments);
    }
  }
  var CommentsParser = function (_BaseParser) {
    function CommentsParser() {
      return _BaseParser.apply(this, arguments) || this;
    }
    _inherits(CommentsParser, _BaseParser);
    var _proto = CommentsParser.prototype;
    _proto.addComment = function addComment(comment) {
      if (this.filename) comment.loc.filename = this.filename;
      var commentsLen = this.state.commentsLen;
      if (this.comments.length !== commentsLen) {
        this.comments.length = commentsLen;
      }
      this.comments.push(comment);
      this.state.commentsLen++;
    };
    _proto.processComment = function processComment(node) {
      var commentStack = this.state.commentStack;
      var commentStackLength = commentStack.length;
      if (commentStackLength === 0) return;
      var i = commentStackLength - 1;
      var lastCommentWS = commentStack[i];
      if (lastCommentWS.start === node.end) {
        lastCommentWS.leadingNode = node;
        i--;
      }
      var nodeStart = node.start;
      for (; i >= 0; i--) {
        var commentWS = commentStack[i];
        var commentEnd = commentWS.end;
        if (commentEnd > nodeStart) {
          commentWS.containingNode = node;
          this.finalizeComment(commentWS);
          commentStack.splice(i, 1);
        } else {
          if (commentEnd === nodeStart) {
            commentWS.trailingNode = node;
          }
          break;
        }
      }
    };
    _proto.finalizeComment = function finalizeComment(commentWS) {
      var comments = commentWS.comments;
      if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {
        if (commentWS.leadingNode !== null) {
          setTrailingComments(commentWS.leadingNode, comments);
        }
        if (commentWS.trailingNode !== null) {
          setLeadingComments(commentWS.trailingNode, comments);
        }
      } else {
        var node = commentWS.containingNode,
          commentStart = commentWS.start;
        if (this.input.charCodeAt(commentStart - 1) === 44) {
          switch (node.type) {
            case "ObjectExpression":
            case "ObjectPattern":
            case "RecordExpression":
              adjustInnerComments(node, node.properties, commentWS);
              break;
            case "CallExpression":
            case "OptionalCallExpression":
              adjustInnerComments(node, node.arguments, commentWS);
              break;
            case "FunctionDeclaration":
            case "FunctionExpression":
            case "ArrowFunctionExpression":
            case "ObjectMethod":
            case "ClassMethod":
            case "ClassPrivateMethod":
              adjustInnerComments(node, node.params, commentWS);
              break;
            case "ArrayExpression":
            case "ArrayPattern":
            case "TupleExpression":
              adjustInnerComments(node, node.elements, commentWS);
              break;
            case "ExportNamedDeclaration":
            case "ImportDeclaration":
              adjustInnerComments(node, node.specifiers, commentWS);
              break;
            default:
              {
                setInnerComments(node, comments);
              }
          }
        } else {
          setInnerComments(node, comments);
        }
      }
    };
    _proto.finalizeRemainingComments = function finalizeRemainingComments() {
      var commentStack = this.state.commentStack;
      for (var i = commentStack.length - 1; i >= 0; i--) {
        this.finalizeComment(commentStack[i]);
      }
      this.state.commentStack = [];
    };
    _proto.resetPreviousNodeTrailingComments = function resetPreviousNodeTrailingComments(node) {
      var commentStack = this.state.commentStack;
      var length = commentStack.length;
      if (length === 0) return;
      var commentWS = commentStack[length - 1];
      if (commentWS.leadingNode === node) {
        commentWS.leadingNode = null;
      }
    };
    _proto.resetPreviousIdentifierLeadingComments = function resetPreviousIdentifierLeadingComments(node) {
      var commentStack = this.state.commentStack;
      var length = commentStack.length;
      if (length === 0) return;
      if (commentStack[length - 1].trailingNode === node) {
        commentStack[length - 1].trailingNode = null;
      } else if (length >= 2 && commentStack[length - 2].trailingNode === node) {
        commentStack[length - 2].trailingNode = null;
      }
    };
    _proto.takeSurroundingComments = function takeSurroundingComments(node, start, end) {
      var commentStack = this.state.commentStack;
      var commentStackLength = commentStack.length;
      if (commentStackLength === 0) return;
      var i = commentStackLength - 1;
      for (; i >= 0; i--) {
        var commentWS = commentStack[i];
        var commentEnd = commentWS.end;
        var commentStart = commentWS.start;
        if (commentStart === end) {
          commentWS.leadingNode = node;
        } else if (commentEnd === start) {
          commentWS.trailingNode = node;
        } else if (commentEnd < start) {
          break;
        }
      }
    };
    return _createClass(CommentsParser);
  }(BaseParser);

  var lineBreak = /\r\n|[\r\n\u2028\u2029]/;
  var lineBreakG = new RegExp(lineBreak.source, "g");
  function isNewLine(code) {
    switch (code) {
      case 10:
      case 13:
      case 8232:
      case 8233:
        return true;
      default:
        return false;
    }
  }
  function hasNewLine(input, start, end) {
    for (var i = start; i < end; i++) {
      if (isNewLine(input.charCodeAt(i))) {
        return true;
      }
    }
    return false;
  }
  var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
  var skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;
  function isWhitespace(code) {
    switch (code) {
      case 0x0009:
      case 0x000b:
      case 0x000c:
      case 32:
      case 160:
      case 5760:
      case 0x2000:
      case 0x2001:
      case 0x2002:
      case 0x2003:
      case 0x2004:
      case 0x2005:
      case 0x2006:
      case 0x2007:
      case 0x2008:
      case 0x2009:
      case 0x200a:
      case 0x202f:
      case 0x205f:
      case 0x3000:
      case 0xfeff:
        return true;
      default:
        return false;
    }
  }

  var LoopLabelKind = {
    Loop: 1,
    Switch: 2
  };
  var State = function () {
    function State() {
      this.flags = 1024;
      this.curLine = void 0;
      this.lineStart = void 0;
      this.startLoc = void 0;
      this.endLoc = void 0;
      this.errors = [];
      this.potentialArrowAt = -1;
      this.noArrowAt = [];
      this.noArrowParamsConversionAt = [];
      this.topicContext = {
        maxNumOfResolvableTopics: 0,
        maxTopicIndex: null
      };
      this.labels = [];
      this.commentsLen = 0;
      this.commentStack = [];
      this.pos = 0;
      this.type = 139;
      this.value = null;
      this.start = 0;
      this.end = 0;
      this.lastTokEndLoc = null;
      this.lastTokStartLoc = null;
      this.context = [types.brace];
      this.firstInvalidTemplateEscapePos = null;
      this.strictErrors = new Map();
      this.tokensLength = 0;
    }
    var _proto = State.prototype;
    _proto.init = function init(_ref) {
      var strictMode = _ref.strictMode,
        sourceType = _ref.sourceType,
        startLine = _ref.startLine,
        startColumn = _ref.startColumn;
      this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";
      this.curLine = startLine;
      this.lineStart = -startColumn;
      this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);
    };
    _proto.curPosition = function curPosition() {
      return new Position(this.curLine, this.pos - this.lineStart, this.pos);
    };
    _proto.clone = function clone() {
      var state = new State();
      state.flags = this.flags;
      state.curLine = this.curLine;
      state.lineStart = this.lineStart;
      state.startLoc = this.startLoc;
      state.endLoc = this.endLoc;
      state.errors = this.errors.slice();
      state.potentialArrowAt = this.potentialArrowAt;
      state.noArrowAt = this.noArrowAt.slice();
      state.noArrowParamsConversionAt = this.noArrowParamsConversionAt.slice();
      state.topicContext = this.topicContext;
      state.labels = this.labels.slice();
      state.commentsLen = this.commentsLen;
      state.commentStack = this.commentStack.slice();
      state.pos = this.pos;
      state.type = this.type;
      state.value = this.value;
      state.start = this.start;
      state.end = this.end;
      state.lastTokEndLoc = this.lastTokEndLoc;
      state.lastTokStartLoc = this.lastTokStartLoc;
      state.context = this.context.slice();
      state.firstInvalidTemplateEscapePos = this.firstInvalidTemplateEscapePos;
      state.strictErrors = this.strictErrors;
      state.tokensLength = this.tokensLength;
      return state;
    };
    return _createClass(State, [{
      key: "strict",
      get: function get() {
        return (this.flags & 1) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 1;else this.flags &= -2;
      }
    }, {
      key: "maybeInArrowParameters",
      get: function get() {
        return (this.flags & 2) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 2;else this.flags &= -3;
      }
    }, {
      key: "inType",
      get: function get() {
        return (this.flags & 4) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 4;else this.flags &= -5;
      }
    }, {
      key: "noAnonFunctionType",
      get: function get() {
        return (this.flags & 8) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 8;else this.flags &= -9;
      }
    }, {
      key: "hasFlowComment",
      get: function get() {
        return (this.flags & 16) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 16;else this.flags &= -17;
      }
    }, {
      key: "isAmbientContext",
      get: function get() {
        return (this.flags & 32) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 32;else this.flags &= -33;
      }
    }, {
      key: "inAbstractClass",
      get: function get() {
        return (this.flags & 64) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 64;else this.flags &= -65;
      }
    }, {
      key: "inDisallowConditionalTypesContext",
      get: function get() {
        return (this.flags & 128) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 128;else this.flags &= -129;
      }
    }, {
      key: "soloAwait",
      get: function get() {
        return (this.flags & 256) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 256;else this.flags &= -257;
      }
    }, {
      key: "inFSharpPipelineDirectBody",
      get: function get() {
        return (this.flags & 512) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 512;else this.flags &= -513;
      }
    }, {
      key: "canStartJSXElement",
      get: function get() {
        return (this.flags & 1024) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 1024;else this.flags &= -1025;
      }
    }, {
      key: "containsEsc",
      get: function get() {
        return (this.flags & 2048) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 2048;else this.flags &= -2049;
      }
    }, {
      key: "hasTopLevelAwait",
      get: function get() {
        return (this.flags & 4096) > 0;
      },
      set: function set(v) {
        if (v) this.flags |= 4096;else this.flags &= -4097;
      }
    }]);
  }();

  function buildPosition(pos, lineStart, curLine) {
    return new Position(curLine, pos - lineStart, pos);
  }
  var VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);
  var Token = _createClass(function Token(state) {
    this.type = state.type;
    this.value = state.value;
    this.start = state.start;
    this.end = state.end;
    this.loc = new SourceLocation(state.startLoc, state.endLoc);
  });
  var Tokenizer = function (_CommentsParser) {
    function Tokenizer(options, input) {
      var _this;
      _this = _CommentsParser.call(this) || this;
      _this.isLookahead = void 0;
      _this.tokens = [];
      _this.errorHandlers_readInt = {
        invalidDigit: function invalidDigit(pos, lineStart, curLine, radix) {
          if (!_this.options.errorRecovery) return false;
          _this.raise(Errors.InvalidDigit, buildPosition(pos, lineStart, curLine), {
            radix: radix
          });
          return true;
        },
        numericSeparatorInEscapeSequence: _this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),
        unexpectedNumericSeparator: _this.errorBuilder(Errors.UnexpectedNumericSeparator)
      };
      _this.errorHandlers_readCodePoint = Object.assign({}, _this.errorHandlers_readInt, {
        invalidEscapeSequence: _this.errorBuilder(Errors.InvalidEscapeSequence),
        invalidCodePoint: _this.errorBuilder(Errors.InvalidCodePoint)
      });
      _this.errorHandlers_readStringContents_string = Object.assign({}, _this.errorHandlers_readCodePoint, {
        strictNumericEscape: function strictNumericEscape(pos, lineStart, curLine) {
          _this.recordStrictModeErrors(Errors.StrictNumericEscape, buildPosition(pos, lineStart, curLine));
        },
        unterminated: function unterminated(pos, lineStart, curLine) {
          throw _this.raise(Errors.UnterminatedString, buildPosition(pos - 1, lineStart, curLine));
        }
      });
      _this.errorHandlers_readStringContents_template = Object.assign({}, _this.errorHandlers_readCodePoint, {
        strictNumericEscape: _this.errorBuilder(Errors.StrictNumericEscape),
        unterminated: function unterminated(pos, lineStart, curLine) {
          throw _this.raise(Errors.UnterminatedTemplate, buildPosition(pos, lineStart, curLine));
        }
      });
      _this.state = new State();
      _this.state.init(options);
      _this.input = input;
      _this.length = input.length;
      _this.comments = [];
      _this.isLookahead = false;
      return _this;
    }
    _inherits(Tokenizer, _CommentsParser);
    var _proto = Tokenizer.prototype;
    _proto.pushToken = function pushToken(token) {
      this.tokens.length = this.state.tokensLength;
      this.tokens.push(token);
      ++this.state.tokensLength;
    };
    _proto.next = function next() {
      this.checkKeywordEscapes();
      if (this.options.tokens) {
        this.pushToken(new Token(this.state));
      }
      this.state.lastTokEndLoc = this.state.endLoc;
      this.state.lastTokStartLoc = this.state.startLoc;
      this.nextToken();
    };
    _proto.eat = function eat(type) {
      if (this.match(type)) {
        this.next();
        return true;
      } else {
        return false;
      }
    };
    _proto.match = function match(type) {
      return this.state.type === type;
    };
    _proto.createLookaheadState = function createLookaheadState(state) {
      return {
        pos: state.pos,
        value: null,
        type: state.type,
        start: state.start,
        end: state.end,
        context: [this.curContext()],
        inType: state.inType,
        startLoc: state.startLoc,
        lastTokEndLoc: state.lastTokEndLoc,
        curLine: state.curLine,
        lineStart: state.lineStart,
        curPosition: state.curPosition
      };
    };
    _proto.lookahead = function lookahead() {
      var old = this.state;
      this.state = this.createLookaheadState(old);
      this.isLookahead = true;
      this.nextToken();
      this.isLookahead = false;
      var curr = this.state;
      this.state = old;
      return curr;
    };
    _proto.nextTokenStart = function nextTokenStart() {
      return this.nextTokenStartSince(this.state.pos);
    };
    _proto.nextTokenStartSince = function nextTokenStartSince(pos) {
      skipWhiteSpace.lastIndex = pos;
      return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;
    };
    _proto.lookaheadCharCode = function lookaheadCharCode() {
      return this.input.charCodeAt(this.nextTokenStart());
    };
    _proto.nextTokenInLineStart = function nextTokenInLineStart() {
      return this.nextTokenInLineStartSince(this.state.pos);
    };
    _proto.nextTokenInLineStartSince = function nextTokenInLineStartSince(pos) {
      skipWhiteSpaceInLine.lastIndex = pos;
      return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;
    };
    _proto.lookaheadInLineCharCode = function lookaheadInLineCharCode() {
      return this.input.charCodeAt(this.nextTokenInLineStart());
    };
    _proto.codePointAtPos = function codePointAtPos(pos) {
      var cp = this.input.charCodeAt(pos);
      if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {
        var trail = this.input.charCodeAt(pos);
        if ((trail & 0xfc00) === 0xdc00) {
          cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
        }
      }
      return cp;
    };
    _proto.setStrict = function setStrict(strict) {
      var _this2 = this;
      this.state.strict = strict;
      if (strict) {
        this.state.strictErrors.forEach(function (_ref) {
          var toParseError = _ref[0],
            at = _ref[1];
          return _this2.raise(toParseError, at);
        });
        this.state.strictErrors.clear();
      }
    };
    _proto.curContext = function curContext() {
      return this.state.context[this.state.context.length - 1];
    };
    _proto.nextToken = function nextToken() {
      this.skipSpace();
      this.state.start = this.state.pos;
      if (!this.isLookahead) this.state.startLoc = this.state.curPosition();
      if (this.state.pos >= this.length) {
        this.finishToken(139);
        return;
      }
      this.getTokenFromCode(this.codePointAtPos(this.state.pos));
    };
    _proto.skipBlockComment = function skipBlockComment(commentEnd) {
      var startLoc;
      if (!this.isLookahead) startLoc = this.state.curPosition();
      var start = this.state.pos;
      var end = this.input.indexOf(commentEnd, start + 2);
      if (end === -1) {
        throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
      }
      this.state.pos = end + commentEnd.length;
      lineBreakG.lastIndex = start + 2;
      while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {
        ++this.state.curLine;
        this.state.lineStart = lineBreakG.lastIndex;
      }
      if (this.isLookahead) return;
      var comment = {
        type: "CommentBlock",
        value: this.input.slice(start + 2, end),
        start: start,
        end: end + commentEnd.length,
        loc: new SourceLocation(startLoc, this.state.curPosition())
      };
      if (this.options.tokens) this.pushToken(comment);
      return comment;
    };
    _proto.skipLineComment = function skipLineComment(startSkip) {
      var start = this.state.pos;
      var startLoc;
      if (!this.isLookahead) startLoc = this.state.curPosition();
      var ch = this.input.charCodeAt(this.state.pos += startSkip);
      if (this.state.pos < this.length) {
        while (!isNewLine(ch) && ++this.state.pos < this.length) {
          ch = this.input.charCodeAt(this.state.pos);
        }
      }
      if (this.isLookahead) return;
      var end = this.state.pos;
      var value = this.input.slice(start + startSkip, end);
      var comment = {
        type: "CommentLine",
        value: value,
        start: start,
        end: end,
        loc: new SourceLocation(startLoc, this.state.curPosition())
      };
      if (this.options.tokens) this.pushToken(comment);
      return comment;
    };
    _proto.skipSpace = function skipSpace() {
      var spaceStart = this.state.pos;
      var comments = [];
      loop: while (this.state.pos < this.length) {
        var ch = this.input.charCodeAt(this.state.pos);
        switch (ch) {
          case 32:
          case 160:
          case 9:
            ++this.state.pos;
            break;
          case 13:
            if (this.input.charCodeAt(this.state.pos + 1) === 10) {
              ++this.state.pos;
            }
          case 10:
          case 8232:
          case 8233:
            ++this.state.pos;
            ++this.state.curLine;
            this.state.lineStart = this.state.pos;
            break;
          case 47:
            switch (this.input.charCodeAt(this.state.pos + 1)) {
              case 42:
                {
                  var comment = this.skipBlockComment("*/");
                  if (comment !== undefined) {
                    this.addComment(comment);
                    if (this.options.attachComment) comments.push(comment);
                  }
                  break;
                }
              case 47:
                {
                  var _comment = this.skipLineComment(2);
                  if (_comment !== undefined) {
                    this.addComment(_comment);
                    if (this.options.attachComment) comments.push(_comment);
                  }
                  break;
                }
              default:
                break loop;
            }
            break;
          default:
            if (isWhitespace(ch)) {
              ++this.state.pos;
            } else if (ch === 45 && !this.inModule && this.options.annexB) {
              var pos = this.state.pos;
              if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
                var _comment2 = this.skipLineComment(3);
                if (_comment2 !== undefined) {
                  this.addComment(_comment2);
                  if (this.options.attachComment) comments.push(_comment2);
                }
              } else {
                break loop;
              }
            } else if (ch === 60 && !this.inModule && this.options.annexB) {
              var _pos = this.state.pos;
              if (this.input.charCodeAt(_pos + 1) === 33 && this.input.charCodeAt(_pos + 2) === 45 && this.input.charCodeAt(_pos + 3) === 45) {
                var _comment3 = this.skipLineComment(4);
                if (_comment3 !== undefined) {
                  this.addComment(_comment3);
                  if (this.options.attachComment) comments.push(_comment3);
                }
              } else {
                break loop;
              }
            } else {
              break loop;
            }
        }
      }
      if (comments.length > 0) {
        var end = this.state.pos;
        var commentWhitespace = {
          start: spaceStart,
          end: end,
          comments: comments,
          leadingNode: null,
          trailingNode: null,
          containingNode: null
        };
        this.state.commentStack.push(commentWhitespace);
      }
    };
    _proto.finishToken = function finishToken(type, val) {
      this.state.end = this.state.pos;
      this.state.endLoc = this.state.curPosition();
      var prevType = this.state.type;
      this.state.type = type;
      this.state.value = val;
      if (!this.isLookahead) {
        this.updateContext(prevType);
      }
    };
    _proto.replaceToken = function replaceToken(type) {
      this.state.type = type;
      this.updateContext();
    };
    _proto.readToken_numberSign = function readToken_numberSign() {
      if (this.state.pos === 0 && this.readToken_interpreter()) {
        return;
      }
      var nextPos = this.state.pos + 1;
      var next = this.codePointAtPos(nextPos);
      if (next >= 48 && next <= 57) {
        throw this.raise(Errors.UnexpectedDigitAfterHash, this.state.curPosition());
      }
      if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {
        this.expectPlugin("recordAndTuple");
        if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") {
          throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, this.state.curPosition());
        }
        this.state.pos += 2;
        if (next === 123) {
          this.finishToken(7);
        } else {
          this.finishToken(1);
        }
      } else if (isIdentifierStart(next)) {
        ++this.state.pos;
        this.finishToken(138, this.readWord1(next));
      } else if (next === 92) {
        ++this.state.pos;
        this.finishToken(138, this.readWord1());
      } else {
        this.finishOp(27, 1);
      }
    };
    _proto.readToken_dot = function readToken_dot() {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next >= 48 && next <= 57) {
        this.readNumber(true);
        return;
      }
      if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {
        this.state.pos += 3;
        this.finishToken(21);
      } else {
        ++this.state.pos;
        this.finishToken(16);
      }
    };
    _proto.readToken_slash = function readToken_slash() {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === 61) {
        this.finishOp(31, 2);
      } else {
        this.finishOp(56, 1);
      }
    };
    _proto.readToken_interpreter = function readToken_interpreter() {
      if (this.state.pos !== 0 || this.length < 2) return false;
      var ch = this.input.charCodeAt(this.state.pos + 1);
      if (ch !== 33) return false;
      var start = this.state.pos;
      this.state.pos += 1;
      while (!isNewLine(ch) && ++this.state.pos < this.length) {
        ch = this.input.charCodeAt(this.state.pos);
      }
      var value = this.input.slice(start + 2, this.state.pos);
      this.finishToken(28, value);
      return true;
    };
    _proto.readToken_mult_modulo = function readToken_mult_modulo(code) {
      var type = code === 42 ? 55 : 54;
      var width = 1;
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (code === 42 && next === 42) {
        width++;
        next = this.input.charCodeAt(this.state.pos + 2);
        type = 57;
      }
      if (next === 61 && !this.state.inType) {
        width++;
        type = code === 37 ? 33 : 30;
      }
      this.finishOp(type, width);
    };
    _proto.readToken_pipe_amp = function readToken_pipe_amp(code) {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === code) {
        if (this.input.charCodeAt(this.state.pos + 2) === 61) {
          this.finishOp(30, 3);
        } else {
          this.finishOp(code === 124 ? 41 : 42, 2);
        }
        return;
      }
      if (code === 124) {
        if (next === 62) {
          this.finishOp(39, 2);
          return;
        }
        if (this.hasPlugin("recordAndTuple") && next === 125) {
          if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
            throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
          }
          this.state.pos += 2;
          this.finishToken(9);
          return;
        }
        if (this.hasPlugin("recordAndTuple") && next === 93) {
          if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
            throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, this.state.curPosition());
          }
          this.state.pos += 2;
          this.finishToken(4);
          return;
        }
      }
      if (next === 61) {
        this.finishOp(30, 2);
        return;
      }
      this.finishOp(code === 124 ? 43 : 45, 1);
    };
    _proto.readToken_caret = function readToken_caret() {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === 61 && !this.state.inType) {
        this.finishOp(32, 2);
      } else if (next === 94 && this.hasPlugin(["pipelineOperator", {
        proposal: "hack",
        topicToken: "^^"
      }])) {
        this.finishOp(37, 2);
        var lookaheadCh = this.input.codePointAt(this.state.pos);
        if (lookaheadCh === 94) {
          this.unexpected();
        }
      } else {
        this.finishOp(44, 1);
      }
    };
    _proto.readToken_atSign = function readToken_atSign() {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === 64 && this.hasPlugin(["pipelineOperator", {
        proposal: "hack",
        topicToken: "@@"
      }])) {
        this.finishOp(38, 2);
      } else {
        this.finishOp(26, 1);
      }
    };
    _proto.readToken_plus_min = function readToken_plus_min(code) {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === code) {
        this.finishOp(34, 2);
        return;
      }
      if (next === 61) {
        this.finishOp(30, 2);
      } else {
        this.finishOp(53, 1);
      }
    };
    _proto.readToken_lt = function readToken_lt() {
      var pos = this.state.pos;
      var next = this.input.charCodeAt(pos + 1);
      if (next === 60) {
        if (this.input.charCodeAt(pos + 2) === 61) {
          this.finishOp(30, 3);
          return;
        }
        this.finishOp(51, 2);
        return;
      }
      if (next === 61) {
        this.finishOp(49, 2);
        return;
      }
      this.finishOp(47, 1);
    };
    _proto.readToken_gt = function readToken_gt() {
      var pos = this.state.pos;
      var next = this.input.charCodeAt(pos + 1);
      if (next === 62) {
        var size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;
        if (this.input.charCodeAt(pos + size) === 61) {
          this.finishOp(30, size + 1);
          return;
        }
        this.finishOp(52, size);
        return;
      }
      if (next === 61) {
        this.finishOp(49, 2);
        return;
      }
      this.finishOp(48, 1);
    };
    _proto.readToken_eq_excl = function readToken_eq_excl(code) {
      var next = this.input.charCodeAt(this.state.pos + 1);
      if (next === 61) {
        this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
        return;
      }
      if (code === 61 && next === 62) {
        this.state.pos += 2;
        this.finishToken(19);
        return;
      }
      this.finishOp(code === 61 ? 29 : 35, 1);
    };
    _proto.readToken_question = function readToken_question() {
      var next = this.input.charCodeAt(this.state.pos + 1);
      var next2 = this.input.charCodeAt(this.state.pos + 2);
      if (next === 63) {
        if (next2 === 61) {
          this.finishOp(30, 3);
        } else {
          this.finishOp(40, 2);
        }
      } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
        this.state.pos += 2;
        this.finishToken(18);
      } else {
        ++this.state.pos;
        this.finishToken(17);
      }
    };
    _proto.getTokenFromCode = function getTokenFromCode(code) {
      switch (code) {
        case 46:
          this.readToken_dot();
          return;
        case 40:
          ++this.state.pos;
          this.finishToken(10);
          return;
        case 41:
          ++this.state.pos;
          this.finishToken(11);
          return;
        case 59:
          ++this.state.pos;
          this.finishToken(13);
          return;
        case 44:
          ++this.state.pos;
          this.finishToken(12);
          return;
        case 91:
          if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
            if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
              throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
            }
            this.state.pos += 2;
            this.finishToken(2);
          } else {
            ++this.state.pos;
            this.finishToken(0);
          }
          return;
        case 93:
          ++this.state.pos;
          this.finishToken(3);
          return;
        case 123:
          if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
            if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
              throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, this.state.curPosition());
            }
            this.state.pos += 2;
            this.finishToken(6);
          } else {
            ++this.state.pos;
            this.finishToken(5);
          }
          return;
        case 125:
          ++this.state.pos;
          this.finishToken(8);
          return;
        case 58:
          if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
            this.finishOp(15, 2);
          } else {
            ++this.state.pos;
            this.finishToken(14);
          }
          return;
        case 63:
          this.readToken_question();
          return;
        case 96:
          this.readTemplateToken();
          return;
        case 48:
          {
            var next = this.input.charCodeAt(this.state.pos + 1);
            if (next === 120 || next === 88) {
              this.readRadixNumber(16);
              return;
            }
            if (next === 111 || next === 79) {
              this.readRadixNumber(8);
              return;
            }
            if (next === 98 || next === 66) {
              this.readRadixNumber(2);
              return;
            }
          }
        case 49:
        case 50:
        case 51:
        case 52:
        case 53:
        case 54:
        case 55:
        case 56:
        case 57:
          this.readNumber(false);
          return;
        case 34:
        case 39:
          this.readString(code);
          return;
        case 47:
          this.readToken_slash();
          return;
        case 37:
        case 42:
          this.readToken_mult_modulo(code);
          return;
        case 124:
        case 38:
          this.readToken_pipe_amp(code);
          return;
        case 94:
          this.readToken_caret();
          return;
        case 43:
        case 45:
          this.readToken_plus_min(code);
          return;
        case 60:
          this.readToken_lt();
          return;
        case 62:
          this.readToken_gt();
          return;
        case 61:
        case 33:
          this.readToken_eq_excl(code);
          return;
        case 126:
          this.finishOp(36, 1);
          return;
        case 64:
          this.readToken_atSign();
          return;
        case 35:
          this.readToken_numberSign();
          return;
        case 92:
          this.readWord();
          return;
        default:
          if (isIdentifierStart(code)) {
            this.readWord(code);
            return;
          }
      }
      throw this.raise(Errors.InvalidOrUnexpectedToken, this.state.curPosition(), {
        unexpected: String.fromCodePoint(code)
      });
    };
    _proto.finishOp = function finishOp(type, size) {
      var str = this.input.slice(this.state.pos, this.state.pos + size);
      this.state.pos += size;
      this.finishToken(type, str);
    };
    _proto.readRegexp = function readRegexp() {
      var startLoc = this.state.startLoc;
      var start = this.state.start + 1;
      var escaped, inClass;
      var pos = this.state.pos;
      for (;; ++pos) {
        if (pos >= this.length) {
          throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
        }
        var ch = this.input.charCodeAt(pos);
        if (isNewLine(ch)) {
          throw this.raise(Errors.UnterminatedRegExp, createPositionWithColumnOffset(startLoc, 1));
        }
        if (escaped) {
          escaped = false;
        } else {
          if (ch === 91) {
            inClass = true;
          } else if (ch === 93 && inClass) {
            inClass = false;
          } else if (ch === 47 && !inClass) {
            break;
          }
          escaped = ch === 92;
        }
      }
      var content = this.input.slice(start, pos);
      ++pos;
      var mods = "";
      var nextPos = function nextPos() {
        return createPositionWithColumnOffset(startLoc, pos + 2 - start);
      };
      while (pos < this.length) {
        var cp = this.codePointAtPos(pos);
        var _char = String.fromCharCode(cp);
        if (VALID_REGEX_FLAGS.has(cp)) {
          if (cp === 118) {
            if (mods.includes("u")) {
              this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
            }
          } else if (cp === 117) {
            if (mods.includes("v")) {
              this.raise(Errors.IncompatibleRegExpUVFlags, nextPos());
            }
          }
          if (mods.includes(_char)) {
            this.raise(Errors.DuplicateRegExpFlags, nextPos());
          }
        } else if (isIdentifierChar(cp) || cp === 92) {
          this.raise(Errors.MalformedRegExpFlags, nextPos());
        } else {
          break;
        }
        ++pos;
        mods += _char;
      }
      this.state.pos = pos;
      this.finishToken(137, {
        pattern: content,
        flags: mods
      });
    };
    _proto.readInt = function readInt$1(radix, len, forceLen, allowNumSeparator) {
      if (forceLen === void 0) {
        forceLen = false;
      }
      if (allowNumSeparator === void 0) {
        allowNumSeparator = true;
      }
      var _readInt2 = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false),
        n = _readInt2.n,
        pos = _readInt2.pos;
      this.state.pos = pos;
      return n;
    };
    _proto.readRadixNumber = function readRadixNumber(radix) {
      var startLoc = this.state.curPosition();
      var isBigInt = false;
      this.state.pos += 2;
      var val = this.readInt(radix);
      if (val == null) {
        this.raise(Errors.InvalidDigit, createPositionWithColumnOffset(startLoc, 2), {
          radix: radix
        });
      }
      var next = this.input.charCodeAt(this.state.pos);
      if (next === 110) {
        ++this.state.pos;
        isBigInt = true;
      } else if (next === 109) {
        throw this.raise(Errors.InvalidDecimal, startLoc);
      }
      if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
        throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
      }
      if (isBigInt) {
        var str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, "");
        this.finishToken(135, str);
        return;
      }
      this.finishToken(134, val);
    };
    _proto.readNumber = function readNumber(startsWithDot) {
      var start = this.state.pos;
      var startLoc = this.state.curPosition();
      var isFloat = false;
      var isBigInt = false;
      var isDecimal = false;
      var hasExponent = false;
      var isOctal = false;
      if (!startsWithDot && this.readInt(10) === null) {
        this.raise(Errors.InvalidNumber, this.state.curPosition());
      }
      var hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
      if (hasLeadingZero) {
        var integer = this.input.slice(start, this.state.pos);
        this.recordStrictModeErrors(Errors.StrictOctalLiteral, startLoc);
        if (!this.state.strict) {
          var underscorePos = integer.indexOf("_");
          if (underscorePos > 0) {
            this.raise(Errors.ZeroDigitNumericSeparator, createPositionWithColumnOffset(startLoc, underscorePos));
          }
        }
        isOctal = hasLeadingZero && !/[89]/.test(integer);
      }
      var next = this.input.charCodeAt(this.state.pos);
      if (next === 46 && !isOctal) {
        ++this.state.pos;
        this.readInt(10);
        isFloat = true;
        next = this.input.charCodeAt(this.state.pos);
      }
      if ((next === 69 || next === 101) && !isOctal) {
        next = this.input.charCodeAt(++this.state.pos);
        if (next === 43 || next === 45) {
          ++this.state.pos;
        }
        if (this.readInt(10) === null) {
          this.raise(Errors.InvalidOrMissingExponent, startLoc);
        }
        isFloat = true;
        hasExponent = true;
        next = this.input.charCodeAt(this.state.pos);
      }
      if (next === 110) {
        if (isFloat || hasLeadingZero) {
          this.raise(Errors.InvalidBigIntLiteral, startLoc);
        }
        ++this.state.pos;
        isBigInt = true;
      }
      if (next === 109) {
        this.expectPlugin("decimal", this.state.curPosition());
        if (hasExponent || hasLeadingZero) {
          this.raise(Errors.InvalidDecimal, startLoc);
        }
        ++this.state.pos;
        isDecimal = true;
      }
      if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
        throw this.raise(Errors.NumberIdentifier, this.state.curPosition());
      }
      var str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");
      if (isBigInt) {
        this.finishToken(135, str);
        return;
      }
      if (isDecimal) {
        this.finishToken(136, str);
        return;
      }
      var val = isOctal ? parseInt(str, 8) : parseFloat(str);
      this.finishToken(134, val);
    };
    _proto.readCodePoint = function readCodePoint$1(throwOnInvalid) {
      var _readCodePoint2 = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint),
        code = _readCodePoint2.code,
        pos = _readCodePoint2.pos;
      this.state.pos = pos;
      return code;
    };
    _proto.readString = function readString(quote) {
      var _readStringContents = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string),
        str = _readStringContents.str,
        pos = _readStringContents.pos,
        curLine = _readStringContents.curLine,
        lineStart = _readStringContents.lineStart;
      this.state.pos = pos + 1;
      this.state.lineStart = lineStart;
      this.state.curLine = curLine;
      this.finishToken(133, str);
    };
    _proto.readTemplateContinuation = function readTemplateContinuation() {
      if (!this.match(8)) {
        this.unexpected(null, 8);
      }
      this.state.pos--;
      this.readTemplateToken();
    };
    _proto.readTemplateToken = function readTemplateToken() {
      var opening = this.input[this.state.pos];
      var _readStringContents2 = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template),
        str = _readStringContents2.str,
        firstInvalidLoc = _readStringContents2.firstInvalidLoc,
        pos = _readStringContents2.pos,
        curLine = _readStringContents2.curLine,
        lineStart = _readStringContents2.lineStart;
      this.state.pos = pos + 1;
      this.state.lineStart = lineStart;
      this.state.curLine = curLine;
      if (firstInvalidLoc) {
        this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos);
      }
      if (this.input.codePointAt(pos) === 96) {
        this.finishToken(24, firstInvalidLoc ? null : opening + str + "`");
      } else {
        this.state.pos++;
        this.finishToken(25, firstInvalidLoc ? null : opening + str + "${");
      }
    };
    _proto.recordStrictModeErrors = function recordStrictModeErrors(toParseError, at) {
      var index = at.index;
      if (this.state.strict && !this.state.strictErrors.has(index)) {
        this.raise(toParseError, at);
      } else {
        this.state.strictErrors.set(index, [toParseError, at]);
      }
    };
    _proto.readWord1 = function readWord1(firstCode) {
      this.state.containsEsc = false;
      var word = "";
      var start = this.state.pos;
      var chunkStart = this.state.pos;
      if (firstCode !== undefined) {
        this.state.pos += firstCode <= 0xffff ? 1 : 2;
      }
      while (this.state.pos < this.length) {
        var ch = this.codePointAtPos(this.state.pos);
        if (isIdentifierChar(ch)) {
          this.state.pos += ch <= 0xffff ? 1 : 2;
        } else if (ch === 92) {
          this.state.containsEsc = true;
          word += this.input.slice(chunkStart, this.state.pos);
          var escStart = this.state.curPosition();
          var identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;
          if (this.input.charCodeAt(++this.state.pos) !== 117) {
            this.raise(Errors.MissingUnicodeEscape, this.state.curPosition());
            chunkStart = this.state.pos - 1;
            continue;
          }
          ++this.state.pos;
          var esc = this.readCodePoint(true);
          if (esc !== null) {
            if (!identifierCheck(esc)) {
              this.raise(Errors.EscapedCharNotAnIdentifier, escStart);
            }
            word += String.fromCodePoint(esc);
          }
          chunkStart = this.state.pos;
        } else {
          break;
        }
      }
      return word + this.input.slice(chunkStart, this.state.pos);
    };
    _proto.readWord = function readWord(firstCode) {
      var word = this.readWord1(firstCode);
      var type = keywords.get(word);
      if (type !== undefined) {
        this.finishToken(type, tokenLabelName(type));
      } else {
        this.finishToken(132, word);
      }
    };
    _proto.checkKeywordEscapes = function checkKeywordEscapes() {
      var type = this.state.type;
      if (tokenIsKeyword(type) && this.state.containsEsc) {
        this.raise(Errors.InvalidEscapedReservedWord, this.state.startLoc, {
          reservedWord: tokenLabelName(type)
        });
      }
    };
    _proto.raise = function raise(toParseError, at, details) {
      if (details === void 0) {
        details = {};
      }
      var loc = at instanceof Position ? at : at.loc.start;
      var error = toParseError(loc, details);
      if (!this.options.errorRecovery) throw error;
      if (!this.isLookahead) this.state.errors.push(error);
      return error;
    };
    _proto.raiseOverwrite = function raiseOverwrite(toParseError, at, details) {
      if (details === void 0) {
        details = {};
      }
      var loc = at instanceof Position ? at : at.loc.start;
      var pos = loc.index;
      var errors = this.state.errors;
      for (var i = errors.length - 1; i >= 0; i--) {
        var error = errors[i];
        if (error.loc.index === pos) {
          return errors[i] = toParseError(loc, details);
        }
        if (error.loc.index < pos) break;
      }
      return this.raise(toParseError, at, details);
    };
    _proto.updateContext = function updateContext(prevType) {};
    _proto.unexpected = function unexpected(loc, type) {
      throw this.raise(Errors.UnexpectedToken, loc != null ? loc : this.state.startLoc, {
        expected: type ? tokenLabelName(type) : null
      });
    };
    _proto.expectPlugin = function expectPlugin(pluginName, loc) {
      if (this.hasPlugin(pluginName)) {
        return true;
      }
      throw this.raise(Errors.MissingPlugin, loc != null ? loc : this.state.startLoc, {
        missingPlugin: [pluginName]
      });
    };
    _proto.expectOnePlugin = function expectOnePlugin(pluginNames) {
      var _this3 = this;
      if (!pluginNames.some(function (name) {
        return _this3.hasPlugin(name);
      })) {
        throw this.raise(Errors.MissingOneOfPlugins, this.state.startLoc, {
          missingPlugin: pluginNames
        });
      }
    };
    _proto.errorBuilder = function errorBuilder(error) {
      var _this4 = this;
      return function (pos, lineStart, curLine) {
        _this4.raise(error, buildPosition(pos, lineStart, curLine));
      };
    };
    return _createClass(Tokenizer);
  }(CommentsParser);

  var ClassScope = _createClass(function ClassScope() {
    this.privateNames = new Set();
    this.loneAccessors = new Map();
    this.undefinedPrivateNames = new Map();
  });
  var ClassScopeHandler = function () {
    function ClassScopeHandler(parser) {
      this.parser = void 0;
      this.stack = [];
      this.undefinedPrivateNames = new Map();
      this.parser = parser;
    }
    var _proto = ClassScopeHandler.prototype;
    _proto.current = function current() {
      return this.stack[this.stack.length - 1];
    };
    _proto.enter = function enter() {
      this.stack.push(new ClassScope());
    };
    _proto.exit = function exit() {
      var oldClassScope = this.stack.pop();
      var current = this.current();
      for (var _i2 = 0, _Array$from2 = Array.from(oldClassScope.undefinedPrivateNames); _i2 < _Array$from2.length; _i2++) {
        var _Array$from2$_i = _Array$from2[_i2],
          name = _Array$from2$_i[0],
          loc = _Array$from2$_i[1];
        if (current) {
          if (!current.undefinedPrivateNames.has(name)) {
            current.undefinedPrivateNames.set(name, loc);
          }
        } else {
          this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
            identifierName: name
          });
        }
      }
    };
    _proto.declarePrivateName = function declarePrivateName(name, elementType, loc) {
      var _this$current = this.current(),
        privateNames = _this$current.privateNames,
        loneAccessors = _this$current.loneAccessors,
        undefinedPrivateNames = _this$current.undefinedPrivateNames;
      var redefined = privateNames.has(name);
      if (elementType & ClassElementType.KIND_ACCESSOR) {
        var accessor = redefined && loneAccessors.get(name);
        if (accessor) {
          var oldStatic = accessor & ClassElementType.FLAG_STATIC;
          var newStatic = elementType & ClassElementType.FLAG_STATIC;
          var oldKind = accessor & ClassElementType.KIND_ACCESSOR;
          var newKind = elementType & ClassElementType.KIND_ACCESSOR;
          redefined = oldKind === newKind || oldStatic !== newStatic;
          if (!redefined) loneAccessors["delete"](name);
        } else if (!redefined) {
          loneAccessors.set(name, elementType);
        }
      }
      if (redefined) {
        this.parser.raise(Errors.PrivateNameRedeclaration, loc, {
          identifierName: name
        });
      }
      privateNames.add(name);
      undefinedPrivateNames["delete"](name);
    };
    _proto.usePrivateName = function usePrivateName(name, loc) {
      var classScope;
      for (var _i4 = 0, _this$stack2 = this.stack; _i4 < _this$stack2.length; _i4++) {
        classScope = _this$stack2[_i4];
        if (classScope.privateNames.has(name)) return;
      }
      if (classScope) {
        classScope.undefinedPrivateNames.set(name, loc);
      } else {
        this.parser.raise(Errors.InvalidPrivateFieldResolution, loc, {
          identifierName: name
        });
      }
    };
    return _createClass(ClassScopeHandler);
  }();

  var ExpressionScope = function () {
    function ExpressionScope(type) {
      if (type === void 0) {
        type = 0;
      }
      this.type = type;
    }
    var _proto = ExpressionScope.prototype;
    _proto.canBeArrowParameterDeclaration = function canBeArrowParameterDeclaration() {
      return this.type === 2 || this.type === 1;
    };
    _proto.isCertainlyParameterDeclaration = function isCertainlyParameterDeclaration() {
      return this.type === 3;
    };
    return _createClass(ExpressionScope);
  }();
  var ArrowHeadParsingScope = function (_ExpressionScope) {
    function ArrowHeadParsingScope(type) {
      var _this;
      _this = _ExpressionScope.call(this, type) || this;
      _this.declarationErrors = new Map();
      return _this;
    }
    _inherits(ArrowHeadParsingScope, _ExpressionScope);
    var _proto2 = ArrowHeadParsingScope.prototype;
    _proto2.recordDeclarationError = function recordDeclarationError(ParsingErrorClass, at) {
      var index = at.index;
      this.declarationErrors.set(index, [ParsingErrorClass, at]);
    };
    _proto2.clearDeclarationError = function clearDeclarationError(index) {
      this.declarationErrors["delete"](index);
    };
    _proto2.iterateErrors = function iterateErrors(iterator) {
      this.declarationErrors.forEach(iterator);
    };
    return _createClass(ArrowHeadParsingScope);
  }(ExpressionScope);
  var ExpressionScopeHandler = function () {
    function ExpressionScopeHandler(parser) {
      this.parser = void 0;
      this.stack = [new ExpressionScope()];
      this.parser = parser;
    }
    var _proto3 = ExpressionScopeHandler.prototype;
    _proto3.enter = function enter(scope) {
      this.stack.push(scope);
    };
    _proto3.exit = function exit() {
      this.stack.pop();
    };
    _proto3.recordParameterInitializerError = function recordParameterInitializerError(toParseError, node) {
      var origin = node.loc.start;
      var stack = this.stack;
      var i = stack.length - 1;
      var scope = stack[i];
      while (!scope.isCertainlyParameterDeclaration()) {
        if (scope.canBeArrowParameterDeclaration()) {
          scope.recordDeclarationError(toParseError, origin);
        } else {
          return;
        }
        scope = stack[--i];
      }
      this.parser.raise(toParseError, origin);
    };
    _proto3.recordArrowParameterBindingError = function recordArrowParameterBindingError(error, node) {
      var stack = this.stack;
      var scope = stack[stack.length - 1];
      var origin = node.loc.start;
      if (scope.isCertainlyParameterDeclaration()) {
        this.parser.raise(error, origin);
      } else if (scope.canBeArrowParameterDeclaration()) {
        scope.recordDeclarationError(error, origin);
      } else {
        return;
      }
    };
    _proto3.recordAsyncArrowParametersError = function recordAsyncArrowParametersError(at) {
      var stack = this.stack;
      var i = stack.length - 1;
      var scope = stack[i];
      while (scope.canBeArrowParameterDeclaration()) {
        if (scope.type === 2) {
          scope.recordDeclarationError(Errors.AwaitBindingIdentifier, at);
        }
        scope = stack[--i];
      }
    };
    _proto3.validateAsPattern = function validateAsPattern() {
      var _this2 = this;
      var stack = this.stack;
      var currentScope = stack[stack.length - 1];
      if (!currentScope.canBeArrowParameterDeclaration()) return;
      currentScope.iterateErrors(function (_ref) {
        var toParseError = _ref[0],
          loc = _ref[1];
        _this2.parser.raise(toParseError, loc);
        var i = stack.length - 2;
        var scope = stack[i];
        while (scope.canBeArrowParameterDeclaration()) {
          scope.clearDeclarationError(loc.index);
          scope = stack[--i];
        }
      });
    };
    return _createClass(ExpressionScopeHandler);
  }();
  function newParameterDeclarationScope() {
    return new ExpressionScope(3);
  }
  function newArrowHeadScope() {
    return new ArrowHeadParsingScope(1);
  }
  function newAsyncArrowScope() {
    return new ArrowHeadParsingScope(2);
  }
  function newExpressionScope() {
    return new ExpressionScope();
  }

  var ParamKind = {
    PARAM: 0,
    PARAM_YIELD: 1,
    PARAM_AWAIT: 2,
    PARAM_RETURN: 4,
    PARAM_IN: 8
  };
  var ProductionParameterHandler = function () {
    function ProductionParameterHandler() {
      this.stacks = [];
    }
    var _proto = ProductionParameterHandler.prototype;
    _proto.enter = function enter(flags) {
      this.stacks.push(flags);
    };
    _proto.exit = function exit() {
      this.stacks.pop();
    };
    _proto.currentFlags = function currentFlags() {
      return this.stacks[this.stacks.length - 1];
    };
    return _createClass(ProductionParameterHandler, [{
      key: "hasAwait",
      get: function get() {
        return (this.currentFlags() & ParamKind.PARAM_AWAIT) > 0;
      }
    }, {
      key: "hasYield",
      get: function get() {
        return (this.currentFlags() & ParamKind.PARAM_YIELD) > 0;
      }
    }, {
      key: "hasReturn",
      get: function get() {
        return (this.currentFlags() & ParamKind.PARAM_RETURN) > 0;
      }
    }, {
      key: "hasIn",
      get: function get() {
        return (this.currentFlags() & ParamKind.PARAM_IN) > 0;
      }
    }]);
  }();
  function functionFlags(isAsync, isGenerator) {
    return (isAsync ? ParamKind.PARAM_AWAIT : 0) | (isGenerator ? ParamKind.PARAM_YIELD : 0);
  }

  var UtilParser = function (_Tokenizer) {
    function UtilParser() {
      return _Tokenizer.apply(this, arguments) || this;
    }
    _inherits(UtilParser, _Tokenizer);
    var _proto = UtilParser.prototype;
    _proto.addExtra = function addExtra(node, key, value, enumerable) {
      if (enumerable === void 0) {
        enumerable = true;
      }
      if (!node) return;
      var extra = node.extra;
      if (extra == null) {
        extra = {};
        node.extra = extra;
      }
      if (enumerable) {
        extra[key] = value;
      } else {
        Object.defineProperty(extra, key, {
          enumerable: enumerable,
          value: value
        });
      }
    };
    _proto.isContextual = function isContextual(token) {
      return this.state.type === token && !this.state.containsEsc;
    };
    _proto.isUnparsedContextual = function isUnparsedContextual(nameStart, name) {
      var nameEnd = nameStart + name.length;
      if (this.input.slice(nameStart, nameEnd) === name) {
        var nextCh = this.input.charCodeAt(nameEnd);
        return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);
      }
      return false;
    };
    _proto.isLookaheadContextual = function isLookaheadContextual(name) {
      var next = this.nextTokenStart();
      return this.isUnparsedContextual(next, name);
    };
    _proto.eatContextual = function eatContextual(token) {
      if (this.isContextual(token)) {
        this.next();
        return true;
      }
      return false;
    };
    _proto.expectContextual = function expectContextual(token, toParseError) {
      if (!this.eatContextual(token)) {
        if (toParseError != null) {
          throw this.raise(toParseError, this.state.startLoc);
        }
        this.unexpected(null, token);
      }
    };
    _proto.canInsertSemicolon = function canInsertSemicolon() {
      return this.match(139) || this.match(8) || this.hasPrecedingLineBreak();
    };
    _proto.hasPrecedingLineBreak = function hasPrecedingLineBreak() {
      return hasNewLine(this.input, this.state.lastTokEndLoc.index, this.state.start);
    };
    _proto.hasFollowingLineBreak = function hasFollowingLineBreak() {
      return hasNewLine(this.input, this.state.end, this.nextTokenStart());
    };
    _proto.isLineTerminator = function isLineTerminator() {
      return this.eat(13) || this.canInsertSemicolon();
    };
    _proto.semicolon = function semicolon(allowAsi) {
      if (allowAsi === void 0) {
        allowAsi = true;
      }
      if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;
      this.raise(Errors.MissingSemicolon, this.state.lastTokEndLoc);
    };
    _proto.expect = function expect(type, loc) {
      if (!this.eat(type)) {
        this.unexpected(loc, type);
      }
    };
    _proto.tryParse = function tryParse(fn, oldState) {
      if (oldState === void 0) {
        oldState = this.state.clone();
      }
      var abortSignal = {
        node: null
      };
      try {
        var node = fn(function (node) {
          if (node === void 0) {
            node = null;
          }
          abortSignal.node = node;
          throw abortSignal;
        });
        if (this.state.errors.length > oldState.errors.length) {
          var failState = this.state;
          this.state = oldState;
          this.state.tokensLength = failState.tokensLength;
          return {
            node: node,
            error: failState.errors[oldState.errors.length],
            thrown: false,
            aborted: false,
            failState: failState
          };
        }
        return {
          node: node,
          error: null,
          thrown: false,
          aborted: false,
          failState: null
        };
      } catch (error) {
        var _failState = this.state;
        this.state = oldState;
        if (error instanceof SyntaxError) {
          return {
            node: null,
            error: error,
            thrown: true,
            aborted: false,
            failState: _failState
          };
        }
        if (error === abortSignal) {
          return {
            node: abortSignal.node,
            error: null,
            thrown: false,
            aborted: true,
            failState: _failState
          };
        }
        throw error;
      }
    };
    _proto.checkExpressionErrors = function checkExpressionErrors(refExpressionErrors, andThrow) {
      if (!refExpressionErrors) return false;
      var shorthandAssignLoc = refExpressionErrors.shorthandAssignLoc,
        doubleProtoLoc = refExpressionErrors.doubleProtoLoc,
        privateKeyLoc = refExpressionErrors.privateKeyLoc,
        optionalParametersLoc = refExpressionErrors.optionalParametersLoc;
      var hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc;
      if (!andThrow) {
        return hasErrors;
      }
      if (shorthandAssignLoc != null) {
        this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
      }
      if (doubleProtoLoc != null) {
        this.raise(Errors.DuplicateProto, doubleProtoLoc);
      }
      if (privateKeyLoc != null) {
        this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
      }
      if (optionalParametersLoc != null) {
        this.unexpected(optionalParametersLoc);
      }
    };
    _proto.isLiteralPropertyName = function isLiteralPropertyName() {
      return tokenIsLiteralPropertyName(this.state.type);
    };
    _proto.isPrivateName = function isPrivateName(node) {
      return node.type === "PrivateName";
    };
    _proto.getPrivateNameSV = function getPrivateNameSV(node) {
      return node.id.name;
    };
    _proto.hasPropertyAsPrivateName = function hasPropertyAsPrivateName(node) {
      return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);
    };
    _proto.isObjectProperty = function isObjectProperty(node) {
      return node.type === "ObjectProperty";
    };
    _proto.isObjectMethod = function isObjectMethod(node) {
      return node.type === "ObjectMethod";
    };
    _proto.initializeScopes = function initializeScopes(inModule) {
      var _this = this;
      if (inModule === void 0) {
        inModule = this.options.sourceType === "module";
      }
      var oldLabels = this.state.labels;
      this.state.labels = [];
      var oldExportedIdentifiers = this.exportedIdentifiers;
      this.exportedIdentifiers = new Set();
      var oldInModule = this.inModule;
      this.inModule = inModule;
      var oldScope = this.scope;
      var ScopeHandler = this.getScopeHandler();
      this.scope = new ScopeHandler(this, inModule);
      var oldProdParam = this.prodParam;
      this.prodParam = new ProductionParameterHandler();
      var oldClassScope = this.classScope;
      this.classScope = new ClassScopeHandler(this);
      var oldExpressionScope = this.expressionScope;
      this.expressionScope = new ExpressionScopeHandler(this);
      return function () {
        _this.state.labels = oldLabels;
        _this.exportedIdentifiers = oldExportedIdentifiers;
        _this.inModule = oldInModule;
        _this.scope = oldScope;
        _this.prodParam = oldProdParam;
        _this.classScope = oldClassScope;
        _this.expressionScope = oldExpressionScope;
      };
    };
    _proto.enterInitialScopes = function enterInitialScopes() {
      var paramFlags = ParamKind.PARAM;
      if (this.inModule) {
        paramFlags |= ParamKind.PARAM_AWAIT;
      }
      this.scope.enter(ScopeFlag.PROGRAM);
      this.prodParam.enter(paramFlags);
    };
    _proto.checkDestructuringPrivate = function checkDestructuringPrivate(refExpressionErrors) {
      var privateKeyLoc = refExpressionErrors.privateKeyLoc;
      if (privateKeyLoc !== null) {
        this.expectPlugin("destructuringPrivate", privateKeyLoc);
      }
    };
    return _createClass(UtilParser);
  }(Tokenizer);
  var ExpressionErrors = _createClass(function ExpressionErrors() {
    this.shorthandAssignLoc = null;
    this.doubleProtoLoc = null;
    this.privateKeyLoc = null;
    this.optionalParametersLoc = null;
  });

  var Node = _createClass(function Node(parser, pos, loc) {
    this.type = "";
    this.start = pos;
    this.end = 0;
    this.loc = new SourceLocation(loc);
    if (parser != null && parser.options.ranges) this.range = [pos, 0];
    if (parser != null && parser.filename) this.loc.filename = parser.filename;
  });
  var NodePrototype = Node.prototype;
  {
    NodePrototype.__clone = function () {
      var newNode = new Node(undefined, this.start, this.loc.start);
      var keys = Object.keys(this);
      for (var i = 0, length = keys.length; i < length; i++) {
        var key = keys[i];
        if (key !== "leadingComments" && key !== "trailingComments" && key !== "innerComments") {
          newNode[key] = this[key];
        }
      }
      return newNode;
    };
  }
  function clonePlaceholder(node) {
    return cloneIdentifier(node);
  }
  function cloneIdentifier(node) {
    var type = node.type,
      start = node.start,
      end = node.end,
      loc = node.loc,
      range = node.range,
      extra = node.extra,
      name = node.name;
    var cloned = Object.create(NodePrototype);
    cloned.type = type;
    cloned.start = start;
    cloned.end = end;
    cloned.loc = loc;
    cloned.range = range;
    cloned.extra = extra;
    cloned.name = name;
    if (type === "Placeholder") {
      cloned.expectedNode = node.expectedNode;
    }
    return cloned;
  }
  function cloneStringLiteral(node) {
    var type = node.type,
      start = node.start,
      end = node.end,
      loc = node.loc,
      range = node.range,
      extra = node.extra;
    if (type === "Placeholder") {
      return clonePlaceholder(node);
    }
    var cloned = Object.create(NodePrototype);
    cloned.type = type;
    cloned.start = start;
    cloned.end = end;
    cloned.loc = loc;
    cloned.range = range;
    if (node.raw !== undefined) {
      cloned.raw = node.raw;
    } else {
      cloned.extra = extra;
    }
    cloned.value = node.value;
    return cloned;
  }
  var NodeUtils = function (_UtilParser) {
    function NodeUtils() {
      return _UtilParser.apply(this, arguments) || this;
    }
    _inherits(NodeUtils, _UtilParser);
    var _proto = NodeUtils.prototype;
    _proto.startNode = function startNode() {
      var loc = this.state.startLoc;
      return new Node(this, loc.index, loc);
    };
    _proto.startNodeAt = function startNodeAt(loc) {
      return new Node(this, loc.index, loc);
    };
    _proto.startNodeAtNode = function startNodeAtNode(type) {
      return this.startNodeAt(type.loc.start);
    };
    _proto.finishNode = function finishNode(node, type) {
      return this.finishNodeAt(node, type, this.state.lastTokEndLoc);
    };
    _proto.finishNodeAt = function finishNodeAt(node, type, endLoc) {
      node.type = type;
      node.end = endLoc.index;
      node.loc.end = endLoc;
      if (this.options.ranges) node.range[1] = endLoc.index;
      if (this.options.attachComment) this.processComment(node);
      return node;
    };
    _proto.resetStartLocation = function resetStartLocation(node, startLoc) {
      node.start = startLoc.index;
      node.loc.start = startLoc;
      if (this.options.ranges) node.range[0] = startLoc.index;
    };
    _proto.resetEndLocation = function resetEndLocation(node, endLoc) {
      if (endLoc === void 0) {
        endLoc = this.state.lastTokEndLoc;
      }
      node.end = endLoc.index;
      node.loc.end = endLoc;
      if (this.options.ranges) node.range[1] = endLoc.index;
    };
    _proto.resetStartLocationFromNode = function resetStartLocationFromNode(node, locationNode) {
      this.resetStartLocation(node, locationNode.loc.start);
    };
    return _createClass(NodeUtils);
  }(UtilParser);

  var _templateObject$F;
  var reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
  var FlowErrors = ParseErrorEnum(_templateObject$F || (_templateObject$F = _taggedTemplateLiteralLoose(["flow"])))({
    AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
    AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",
    AssignReservedType: function AssignReservedType(_ref) {
      var reservedType = _ref.reservedType;
      return "Cannot overwrite reserved type " + reservedType + ".";
    },
    DeclareClassElement: "The `declare` modifier can only appear on class fields.",
    DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",
    DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",
    EnumBooleanMemberNotInitialized: function EnumBooleanMemberNotInitialized(_ref2) {
      var memberName = _ref2.memberName,
        enumName = _ref2.enumName;
      return "Boolean enum members need to be initialized. Use either `" + memberName + " = true,` or `" + memberName + " = false,` in enum `" + enumName + "`.";
    },
    EnumDuplicateMemberName: function EnumDuplicateMemberName(_ref3) {
      var memberName = _ref3.memberName,
        enumName = _ref3.enumName;
      return "Enum member names need to be unique, but the name `" + memberName + "` has already been used before in enum `" + enumName + "`.";
    },
    EnumInconsistentMemberValues: function EnumInconsistentMemberValues(_ref4) {
      var enumName = _ref4.enumName;
      return "Enum `" + enumName + "` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.";
    },
    EnumInvalidExplicitType: function EnumInvalidExplicitType(_ref5) {
      var invalidEnumType = _ref5.invalidEnumType,
        enumName = _ref5.enumName;
      return "Enum type `" + invalidEnumType + "` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `" + enumName + "`.";
    },
    EnumInvalidExplicitTypeUnknownSupplied: function EnumInvalidExplicitTypeUnknownSupplied(_ref6) {
      var enumName = _ref6.enumName;
      return "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `" + enumName + "`.";
    },
    EnumInvalidMemberInitializerPrimaryType: function EnumInvalidMemberInitializerPrimaryType(_ref7) {
      var enumName = _ref7.enumName,
        memberName = _ref7.memberName,
        explicitType = _ref7.explicitType;
      return "Enum `" + enumName + "` has type `" + explicitType + "`, so the initializer of `" + memberName + "` needs to be a " + explicitType + " literal.";
    },
    EnumInvalidMemberInitializerSymbolType: function EnumInvalidMemberInitializerSymbolType(_ref8) {
      var enumName = _ref8.enumName,
        memberName = _ref8.memberName;
      return "Symbol enum members cannot be initialized. Use `" + memberName + ",` in enum `" + enumName + "`.";
    },
    EnumInvalidMemberInitializerUnknownType: function EnumInvalidMemberInitializerUnknownType(_ref9) {
      var enumName = _ref9.enumName,
        memberName = _ref9.memberName;
      return "The enum member initializer for `" + memberName + "` needs to be a literal (either a boolean, number, or string) in enum `" + enumName + "`.";
    },
    EnumInvalidMemberName: function EnumInvalidMemberName(_ref10) {
      var enumName = _ref10.enumName,
        memberName = _ref10.memberName,
        suggestion = _ref10.suggestion;
      return "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `" + memberName + "`, consider using `" + suggestion + "`, in enum `" + enumName + "`.";
    },
    EnumNumberMemberNotInitialized: function EnumNumberMemberNotInitialized(_ref11) {
      var enumName = _ref11.enumName,
        memberName = _ref11.memberName;
      return "Number enum members need to be initialized, e.g. `" + memberName + " = 1` in enum `" + enumName + "`.";
    },
    EnumStringMemberInconsistentlyInitialized: function EnumStringMemberInconsistentlyInitialized(_ref12) {
      var enumName = _ref12.enumName;
      return "String enum members need to consistently either all use initializers, or use no initializers, in enum `" + enumName + "`.";
    },
    GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",
    ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.",
    ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",
    InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",
    InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",
    InexactVariance: "Explicit inexact syntax cannot have variance.",
    InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",
    MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",
    NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",
    NestedFlowComment: "Cannot have a flow comment inside another flow comment.",
    PatternIsOptional: Object.assign({
      message: "A binding pattern parameter cannot be optional in an implementation signature."
    }, {
      reasonCode: "OptionalBindingPattern"
    }),
    SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",
    SpreadVariance: "Spread properties cannot have variance.",
    ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",
    ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",
    ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",
    ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",
    ThisParamNoDefault: "The `this` parameter may not have a default value.",
    TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
    TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",
    UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",
    UnexpectedReservedType: function UnexpectedReservedType(_ref13) {
      var reservedType = _ref13.reservedType;
      return "Unexpected reserved type " + reservedType + ".";
    },
    UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",
    UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",
    UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",
    UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',
    UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",
    UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",
    UnsupportedDeclareExportKind: function UnsupportedDeclareExportKind(_ref14) {
      var unsupportedExportKind = _ref14.unsupportedExportKind,
        suggestion = _ref14.suggestion;
      return "`declare export " + unsupportedExportKind + "` is not supported. Use `" + suggestion + "` instead.";
    },
    UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",
    UnterminatedFlowComment: "Unterminated flow-comment."
  });
  function isEsModuleType(bodyElement) {
    return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");
  }
  function hasTypeImportKind(node) {
    return node.importKind === "type" || node.importKind === "typeof";
  }
  var exportSuggestions = {
    "const": "declare export var",
    "let": "declare export var",
    type: "export type",
    "interface": "export interface"
  };
  function partition(list, test) {
    var list1 = [];
    var list2 = [];
    for (var i = 0; i < list.length; i++) {
      (test(list[i], i, list) ? list1 : list2).push(list[i]);
    }
    return [list1, list2];
  }
  var FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
  var flow = (function (superClass) {
    return function (_superClass) {
      function FlowParserMixin() {
        var _this2;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this2 = _superClass.call.apply(_superClass, [this].concat(args)) || this;
        _this2.flowPragma = undefined;
        return _this2;
      }
      _inherits(FlowParserMixin, _superClass);
      var _proto = FlowParserMixin.prototype;
      _proto.getScopeHandler = function getScopeHandler() {
        return FlowScopeHandler;
      };
      _proto.shouldParseTypes = function shouldParseTypes() {
        return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
      };
      _proto.shouldParseEnums = function shouldParseEnums() {
        return !!this.getPluginOption("flow", "enums");
      };
      _proto.finishToken = function finishToken(type, val) {
        if (type !== 133 && type !== 13 && type !== 28) {
          if (this.flowPragma === undefined) {
            this.flowPragma = null;
          }
        }
        _superClass.prototype.finishToken.call(this, type, val);
      };
      _proto.addComment = function addComment(comment) {
        if (this.flowPragma === undefined) {
          var matches = FLOW_PRAGMA_REGEX.exec(comment.value);
          if (!matches) ; else if (matches[1] === "flow") {
            this.flowPragma = "flow";
          } else if (matches[1] === "noflow") {
            this.flowPragma = "noflow";
          } else {
            throw new Error("Unexpected flow pragma");
          }
        }
        _superClass.prototype.addComment.call(this, comment);
      };
      _proto.flowParseTypeInitialiser = function flowParseTypeInitialiser(tok) {
        var oldInType = this.state.inType;
        this.state.inType = true;
        this.expect(tok || 14);
        var type = this.flowParseType();
        this.state.inType = oldInType;
        return type;
      };
      _proto.flowParsePredicate = function flowParsePredicate() {
        var node = this.startNode();
        var moduloLoc = this.state.startLoc;
        this.next();
        this.expectContextual(110);
        if (this.state.lastTokStartLoc.index > moduloLoc.index + 1) {
          this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, moduloLoc);
        }
        if (this.eat(10)) {
          node.value = _superClass.prototype.parseExpression.call(this);
          this.expect(11);
          return this.finishNode(node, "DeclaredPredicate");
        } else {
          return this.finishNode(node, "InferredPredicate");
        }
      };
      _proto.flowParseTypeAndPredicateInitialiser = function flowParseTypeAndPredicateInitialiser() {
        var oldInType = this.state.inType;
        this.state.inType = true;
        this.expect(14);
        var type = null;
        var predicate = null;
        if (this.match(54)) {
          this.state.inType = oldInType;
          predicate = this.flowParsePredicate();
        } else {
          type = this.flowParseType();
          this.state.inType = oldInType;
          if (this.match(54)) {
            predicate = this.flowParsePredicate();
          }
        }
        return [type, predicate];
      };
      _proto.flowParseDeclareClass = function flowParseDeclareClass(node) {
        this.next();
        this.flowParseInterfaceish(node, true);
        return this.finishNode(node, "DeclareClass");
      };
      _proto.flowParseDeclareFunction = function flowParseDeclareFunction(node) {
        this.next();
        var id = node.id = this.parseIdentifier();
        var typeNode = this.startNode();
        var typeContainer = this.startNode();
        if (this.match(47)) {
          typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
        } else {
          typeNode.typeParameters = null;
        }
        this.expect(10);
        var tmp = this.flowParseFunctionTypeParams();
        typeNode.params = tmp.params;
        typeNode.rest = tmp.rest;
        typeNode["this"] = tmp._this;
        this.expect(11);
        var _this$flowParseTypeAn = this.flowParseTypeAndPredicateInitialiser();
        typeNode.returnType = _this$flowParseTypeAn[0];
        node.predicate = _this$flowParseTypeAn[1];
        typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
        id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
        this.resetEndLocation(id);
        this.semicolon();
        this.scope.declareName(node.id.name, BindingFlag.TYPE_FLOW_DECLARE_FN, node.id.loc.start);
        return this.finishNode(node, "DeclareFunction");
      };
      _proto.flowParseDeclare = function flowParseDeclare(node, insideModule) {
        if (this.match(80)) {
          return this.flowParseDeclareClass(node);
        } else if (this.match(68)) {
          return this.flowParseDeclareFunction(node);
        } else if (this.match(74)) {
          return this.flowParseDeclareVariable(node);
        } else if (this.eatContextual(127)) {
          if (this.match(16)) {
            return this.flowParseDeclareModuleExports(node);
          } else {
            if (insideModule) {
              this.raise(FlowErrors.NestedDeclareModule, this.state.lastTokStartLoc);
            }
            return this.flowParseDeclareModule(node);
          }
        } else if (this.isContextual(130)) {
          return this.flowParseDeclareTypeAlias(node);
        } else if (this.isContextual(131)) {
          return this.flowParseDeclareOpaqueType(node);
        } else if (this.isContextual(129)) {
          return this.flowParseDeclareInterface(node);
        } else if (this.match(82)) {
          return this.flowParseDeclareExportDeclaration(node, insideModule);
        } else {
          this.unexpected();
        }
      };
      _proto.flowParseDeclareVariable = function flowParseDeclareVariable(node) {
        this.next();
        node.id = this.flowParseTypeAnnotatableIdentifier(true);
        this.scope.declareName(node.id.name, BindingFlag.TYPE_VAR, node.id.loc.start);
        this.semicolon();
        return this.finishNode(node, "DeclareVariable");
      };
      _proto.flowParseDeclareModule = function flowParseDeclareModule(node) {
        var _this3 = this;
        this.scope.enter(ScopeFlag.OTHER);
        if (this.match(133)) {
          node.id = _superClass.prototype.parseExprAtom.call(this);
        } else {
          node.id = this.parseIdentifier();
        }
        var bodyNode = node.body = this.startNode();
        var body = bodyNode.body = [];
        this.expect(5);
        while (!this.match(8)) {
          var _bodyNode = this.startNode();
          if (this.match(83)) {
            this.next();
            if (!this.isContextual(130) && !this.match(87)) {
              this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, this.state.lastTokStartLoc);
            }
            _superClass.prototype.parseImport.call(this, _bodyNode);
          } else {
            this.expectContextual(125, FlowErrors.UnsupportedStatementInDeclareModule);
            _bodyNode = this.flowParseDeclare(_bodyNode, true);
          }
          body.push(_bodyNode);
        }
        this.scope.exit();
        this.expect(8);
        this.finishNode(bodyNode, "BlockStatement");
        var kind = null;
        var hasModuleExport = false;
        body.forEach(function (bodyElement) {
          if (isEsModuleType(bodyElement)) {
            if (kind === "CommonJS") {
              _this3.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
            }
            kind = "ES";
          } else if (bodyElement.type === "DeclareModuleExports") {
            if (hasModuleExport) {
              _this3.raise(FlowErrors.DuplicateDeclareModuleExports, bodyElement);
            }
            if (kind === "ES") {
              _this3.raise(FlowErrors.AmbiguousDeclareModuleKind, bodyElement);
            }
            kind = "CommonJS";
            hasModuleExport = true;
          }
        });
        node.kind = kind || "CommonJS";
        return this.finishNode(node, "DeclareModule");
      };
      _proto.flowParseDeclareExportDeclaration = function flowParseDeclareExportDeclaration(node, insideModule) {
        this.expect(82);
        if (this.eat(65)) {
          if (this.match(68) || this.match(80)) {
            node.declaration = this.flowParseDeclare(this.startNode());
          } else {
            node.declaration = this.flowParseType();
            this.semicolon();
          }
          node["default"] = true;
          return this.finishNode(node, "DeclareExportDeclaration");
        } else {
          if (this.match(75) || this.isLet() || (this.isContextual(130) || this.isContextual(129)) && !insideModule) {
            var label = this.state.value;
            throw this.raise(FlowErrors.UnsupportedDeclareExportKind, this.state.startLoc, {
              unsupportedExportKind: label,
              suggestion: exportSuggestions[label]
            });
          }
          if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(131)) {
            node.declaration = this.flowParseDeclare(this.startNode());
            node["default"] = false;
            return this.finishNode(node, "DeclareExportDeclaration");
          } else if (this.match(55) || this.match(5) || this.isContextual(129) || this.isContextual(130) || this.isContextual(131)) {
            node = this.parseExport(node, null);
            if (node.type === "ExportNamedDeclaration") {
              node.type = "ExportDeclaration";
              node["default"] = false;
              delete node.exportKind;
            }
            node.type = "Declare" + node.type;
            return node;
          }
        }
        this.unexpected();
      };
      _proto.flowParseDeclareModuleExports = function flowParseDeclareModuleExports(node) {
        this.next();
        this.expectContextual(111);
        node.typeAnnotation = this.flowParseTypeAnnotation();
        this.semicolon();
        return this.finishNode(node, "DeclareModuleExports");
      };
      _proto.flowParseDeclareTypeAlias = function flowParseDeclareTypeAlias(node) {
        this.next();
        var finished = this.flowParseTypeAlias(node);
        finished.type = "DeclareTypeAlias";
        return finished;
      };
      _proto.flowParseDeclareOpaqueType = function flowParseDeclareOpaqueType(node) {
        this.next();
        var finished = this.flowParseOpaqueType(node, true);
        finished.type = "DeclareOpaqueType";
        return finished;
      };
      _proto.flowParseDeclareInterface = function flowParseDeclareInterface(node) {
        this.next();
        this.flowParseInterfaceish(node, false);
        return this.finishNode(node, "DeclareInterface");
      };
      _proto.flowParseInterfaceish = function flowParseInterfaceish(node, isClass) {
        node.id = this.flowParseRestrictedIdentifier(!isClass, true);
        this.scope.declareName(node.id.name, isClass ? BindingFlag.TYPE_FUNCTION : BindingFlag.TYPE_LEXICAL, node.id.loc.start);
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        } else {
          node.typeParameters = null;
        }
        node["extends"] = [];
        if (this.eat(81)) {
          do {
            node["extends"].push(this.flowParseInterfaceExtends());
          } while (!isClass && this.eat(12));
        }
        if (isClass) {
          node["implements"] = [];
          node.mixins = [];
          if (this.eatContextual(117)) {
            do {
              node.mixins.push(this.flowParseInterfaceExtends());
            } while (this.eat(12));
          }
          if (this.eatContextual(113)) {
            do {
              node["implements"].push(this.flowParseInterfaceExtends());
            } while (this.eat(12));
          }
        }
        node.body = this.flowParseObjectType({
          allowStatic: isClass,
          allowExact: false,
          allowSpread: false,
          allowProto: isClass,
          allowInexact: false
        });
      };
      _proto.flowParseInterfaceExtends = function flowParseInterfaceExtends() {
        var node = this.startNode();
        node.id = this.flowParseQualifiedTypeIdentifier();
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterInstantiation();
        } else {
          node.typeParameters = null;
        }
        return this.finishNode(node, "InterfaceExtends");
      };
      _proto.flowParseInterface = function flowParseInterface(node) {
        this.flowParseInterfaceish(node, false);
        return this.finishNode(node, "InterfaceDeclaration");
      };
      _proto.checkNotUnderscore = function checkNotUnderscore(word) {
        if (word === "_") {
          this.raise(FlowErrors.UnexpectedReservedUnderscore, this.state.startLoc);
        }
      };
      _proto.checkReservedType = function checkReservedType(word, startLoc, declaration) {
        if (!reservedTypes.has(word)) return;
        this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, startLoc, {
          reservedType: word
        });
      };
      _proto.flowParseRestrictedIdentifier = function flowParseRestrictedIdentifier(liberal, declaration) {
        this.checkReservedType(this.state.value, this.state.startLoc, declaration);
        return this.parseIdentifier(liberal);
      };
      _proto.flowParseTypeAlias = function flowParseTypeAlias(node) {
        node.id = this.flowParseRestrictedIdentifier(false, true);
        this.scope.declareName(node.id.name, BindingFlag.TYPE_LEXICAL, node.id.loc.start);
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        } else {
          node.typeParameters = null;
        }
        node.right = this.flowParseTypeInitialiser(29);
        this.semicolon();
        return this.finishNode(node, "TypeAlias");
      };
      _proto.flowParseOpaqueType = function flowParseOpaqueType(node, declare) {
        this.expectContextual(130);
        node.id = this.flowParseRestrictedIdentifier(true, true);
        this.scope.declareName(node.id.name, BindingFlag.TYPE_LEXICAL, node.id.loc.start);
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        } else {
          node.typeParameters = null;
        }
        node.supertype = null;
        if (this.match(14)) {
          node.supertype = this.flowParseTypeInitialiser(14);
        }
        node.impltype = null;
        if (!declare) {
          node.impltype = this.flowParseTypeInitialiser(29);
        }
        this.semicolon();
        return this.finishNode(node, "OpaqueType");
      };
      _proto.flowParseTypeParameter = function flowParseTypeParameter(requireDefault) {
        if (requireDefault === void 0) {
          requireDefault = false;
        }
        var nodeStartLoc = this.state.startLoc;
        var node = this.startNode();
        var variance = this.flowParseVariance();
        var ident = this.flowParseTypeAnnotatableIdentifier();
        node.name = ident.name;
        node.variance = variance;
        node.bound = ident.typeAnnotation;
        if (this.match(29)) {
          this.eat(29);
          node["default"] = this.flowParseType();
        } else {
          if (requireDefault) {
            this.raise(FlowErrors.MissingTypeParamDefault, nodeStartLoc);
          }
        }
        return this.finishNode(node, "TypeParameter");
      };
      _proto.flowParseTypeParameterDeclaration = function flowParseTypeParameterDeclaration() {
        var oldInType = this.state.inType;
        var node = this.startNode();
        node.params = [];
        this.state.inType = true;
        if (this.match(47) || this.match(142)) {
          this.next();
        } else {
          this.unexpected();
        }
        var defaultRequired = false;
        do {
          var typeParameter = this.flowParseTypeParameter(defaultRequired);
          node.params.push(typeParameter);
          if (typeParameter["default"]) {
            defaultRequired = true;
          }
          if (!this.match(48)) {
            this.expect(12);
          }
        } while (!this.match(48));
        this.expect(48);
        this.state.inType = oldInType;
        return this.finishNode(node, "TypeParameterDeclaration");
      };
      _proto.flowParseTypeParameterInstantiation = function flowParseTypeParameterInstantiation() {
        var node = this.startNode();
        var oldInType = this.state.inType;
        node.params = [];
        this.state.inType = true;
        this.expect(47);
        var oldNoAnonFunctionType = this.state.noAnonFunctionType;
        this.state.noAnonFunctionType = false;
        while (!this.match(48)) {
          node.params.push(this.flowParseType());
          if (!this.match(48)) {
            this.expect(12);
          }
        }
        this.state.noAnonFunctionType = oldNoAnonFunctionType;
        this.expect(48);
        this.state.inType = oldInType;
        return this.finishNode(node, "TypeParameterInstantiation");
      };
      _proto.flowParseTypeParameterInstantiationCallOrNew = function flowParseTypeParameterInstantiationCallOrNew() {
        var node = this.startNode();
        var oldInType = this.state.inType;
        node.params = [];
        this.state.inType = true;
        this.expect(47);
        while (!this.match(48)) {
          node.params.push(this.flowParseTypeOrImplicitInstantiation());
          if (!this.match(48)) {
            this.expect(12);
          }
        }
        this.expect(48);
        this.state.inType = oldInType;
        return this.finishNode(node, "TypeParameterInstantiation");
      };
      _proto.flowParseInterfaceType = function flowParseInterfaceType() {
        var node = this.startNode();
        this.expectContextual(129);
        node["extends"] = [];
        if (this.eat(81)) {
          do {
            node["extends"].push(this.flowParseInterfaceExtends());
          } while (this.eat(12));
        }
        node.body = this.flowParseObjectType({
          allowStatic: false,
          allowExact: false,
          allowSpread: false,
          allowProto: false,
          allowInexact: false
        });
        return this.finishNode(node, "InterfaceTypeAnnotation");
      };
      _proto.flowParseObjectPropertyKey = function flowParseObjectPropertyKey() {
        return this.match(134) || this.match(133) ? _superClass.prototype.parseExprAtom.call(this) : this.parseIdentifier(true);
      };
      _proto.flowParseObjectTypeIndexer = function flowParseObjectTypeIndexer(node, isStatic, variance) {
        node["static"] = isStatic;
        if (this.lookahead().type === 14) {
          node.id = this.flowParseObjectPropertyKey();
          node.key = this.flowParseTypeInitialiser();
        } else {
          node.id = null;
          node.key = this.flowParseType();
        }
        this.expect(3);
        node.value = this.flowParseTypeInitialiser();
        node.variance = variance;
        return this.finishNode(node, "ObjectTypeIndexer");
      };
      _proto.flowParseObjectTypeInternalSlot = function flowParseObjectTypeInternalSlot(node, isStatic) {
        node["static"] = isStatic;
        node.id = this.flowParseObjectPropertyKey();
        this.expect(3);
        this.expect(3);
        if (this.match(47) || this.match(10)) {
          node.method = true;
          node.optional = false;
          node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
        } else {
          node.method = false;
          if (this.eat(17)) {
            node.optional = true;
          }
          node.value = this.flowParseTypeInitialiser();
        }
        return this.finishNode(node, "ObjectTypeInternalSlot");
      };
      _proto.flowParseObjectTypeMethodish = function flowParseObjectTypeMethodish(node) {
        node.params = [];
        node.rest = null;
        node.typeParameters = null;
        node["this"] = null;
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        }
        this.expect(10);
        if (this.match(78)) {
          node["this"] = this.flowParseFunctionTypeParam(true);
          node["this"].name = null;
          if (!this.match(11)) {
            this.expect(12);
          }
        }
        while (!this.match(11) && !this.match(21)) {
          node.params.push(this.flowParseFunctionTypeParam(false));
          if (!this.match(11)) {
            this.expect(12);
          }
        }
        if (this.eat(21)) {
          node.rest = this.flowParseFunctionTypeParam(false);
        }
        this.expect(11);
        node.returnType = this.flowParseTypeInitialiser();
        return this.finishNode(node, "FunctionTypeAnnotation");
      };
      _proto.flowParseObjectTypeCallProperty = function flowParseObjectTypeCallProperty(node, isStatic) {
        var valueNode = this.startNode();
        node["static"] = isStatic;
        node.value = this.flowParseObjectTypeMethodish(valueNode);
        return this.finishNode(node, "ObjectTypeCallProperty");
      };
      _proto.flowParseObjectType = function flowParseObjectType(_ref15) {
        var allowStatic = _ref15.allowStatic,
          allowExact = _ref15.allowExact,
          allowSpread = _ref15.allowSpread,
          allowProto = _ref15.allowProto,
          allowInexact = _ref15.allowInexact;
        var oldInType = this.state.inType;
        this.state.inType = true;
        var nodeStart = this.startNode();
        nodeStart.callProperties = [];
        nodeStart.properties = [];
        nodeStart.indexers = [];
        nodeStart.internalSlots = [];
        var endDelim;
        var exact;
        var inexact = false;
        if (allowExact && this.match(6)) {
          this.expect(6);
          endDelim = 9;
          exact = true;
        } else {
          this.expect(5);
          endDelim = 8;
          exact = false;
        }
        nodeStart.exact = exact;
        while (!this.match(endDelim)) {
          var isStatic = false;
          var protoStartLoc = null;
          var inexactStartLoc = null;
          var node = this.startNode();
          if (allowProto && this.isContextual(118)) {
            var lookahead = this.lookahead();
            if (lookahead.type !== 14 && lookahead.type !== 17) {
              this.next();
              protoStartLoc = this.state.startLoc;
              allowStatic = false;
            }
          }
          if (allowStatic && this.isContextual(106)) {
            var _lookahead = this.lookahead();
            if (_lookahead.type !== 14 && _lookahead.type !== 17) {
              this.next();
              isStatic = true;
            }
          }
          var variance = this.flowParseVariance();
          if (this.eat(0)) {
            if (protoStartLoc != null) {
              this.unexpected(protoStartLoc);
            }
            if (this.eat(0)) {
              if (variance) {
                this.unexpected(variance.loc.start);
              }
              nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));
            } else {
              nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));
            }
          } else if (this.match(10) || this.match(47)) {
            if (protoStartLoc != null) {
              this.unexpected(protoStartLoc);
            }
            if (variance) {
              this.unexpected(variance.loc.start);
            }
            nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));
          } else {
            var kind = "init";
            if (this.isContextual(99) || this.isContextual(104)) {
              var _lookahead2 = this.lookahead();
              if (tokenIsLiteralPropertyName(_lookahead2.type)) {
                kind = this.state.value;
                this.next();
              }
            }
            var propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);
            if (propOrInexact === null) {
              inexact = true;
              inexactStartLoc = this.state.lastTokStartLoc;
            } else {
              nodeStart.properties.push(propOrInexact);
            }
          }
          this.flowObjectTypeSemicolon();
          if (inexactStartLoc && !this.match(8) && !this.match(9)) {
            this.raise(FlowErrors.UnexpectedExplicitInexactInObject, inexactStartLoc);
          }
        }
        this.expect(endDelim);
        if (allowSpread) {
          nodeStart.inexact = inexact;
        }
        var out = this.finishNode(nodeStart, "ObjectTypeAnnotation");
        this.state.inType = oldInType;
        return out;
      };
      _proto.flowParseObjectTypeProperty = function flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {
        if (this.eat(21)) {
          var isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);
          if (isInexactToken) {
            if (!allowSpread) {
              this.raise(FlowErrors.InexactInsideNonObject, this.state.lastTokStartLoc);
            } else if (!allowInexact) {
              this.raise(FlowErrors.InexactInsideExact, this.state.lastTokStartLoc);
            }
            if (variance) {
              this.raise(FlowErrors.InexactVariance, variance);
            }
            return null;
          }
          if (!allowSpread) {
            this.raise(FlowErrors.UnexpectedSpreadType, this.state.lastTokStartLoc);
          }
          if (protoStartLoc != null) {
            this.unexpected(protoStartLoc);
          }
          if (variance) {
            this.raise(FlowErrors.SpreadVariance, variance);
          }
          node.argument = this.flowParseType();
          return this.finishNode(node, "ObjectTypeSpreadProperty");
        } else {
          node.key = this.flowParseObjectPropertyKey();
          node["static"] = isStatic;
          node.proto = protoStartLoc != null;
          node.kind = kind;
          var optional = false;
          if (this.match(47) || this.match(10)) {
            node.method = true;
            if (protoStartLoc != null) {
              this.unexpected(protoStartLoc);
            }
            if (variance) {
              this.unexpected(variance.loc.start);
            }
            node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
            if (kind === "get" || kind === "set") {
              this.flowCheckGetterSetterParams(node);
            }
            if (!allowSpread && node.key.name === "constructor" && node.value["this"]) {
              this.raise(FlowErrors.ThisParamBannedInConstructor, node.value["this"]);
            }
          } else {
            if (kind !== "init") this.unexpected();
            node.method = false;
            if (this.eat(17)) {
              optional = true;
            }
            node.value = this.flowParseTypeInitialiser();
            node.variance = variance;
          }
          node.optional = optional;
          return this.finishNode(node, "ObjectTypeProperty");
        }
      };
      _proto.flowCheckGetterSetterParams = function flowCheckGetterSetterParams(property) {
        var paramCount = property.kind === "get" ? 0 : 1;
        var length = property.value.params.length + (property.value.rest ? 1 : 0);
        if (property.value["this"]) {
          this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, property.value["this"]);
        }
        if (length !== paramCount) {
          this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, property);
        }
        if (property.kind === "set" && property.value.rest) {
          this.raise(Errors.BadSetterRestParameter, property);
        }
      };
      _proto.flowObjectTypeSemicolon = function flowObjectTypeSemicolon() {
        if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {
          this.unexpected();
        }
      };
      _proto.flowParseQualifiedTypeIdentifier = function flowParseQualifiedTypeIdentifier(startLoc, id) {
        var _startLoc;
        (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc;
        var node = id || this.flowParseRestrictedIdentifier(true);
        while (this.eat(16)) {
          var node2 = this.startNodeAt(startLoc);
          node2.qualification = node;
          node2.id = this.flowParseRestrictedIdentifier(true);
          node = this.finishNode(node2, "QualifiedTypeIdentifier");
        }
        return node;
      };
      _proto.flowParseGenericType = function flowParseGenericType(startLoc, id) {
        var node = this.startNodeAt(startLoc);
        node.typeParameters = null;
        node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterInstantiation();
        }
        return this.finishNode(node, "GenericTypeAnnotation");
      };
      _proto.flowParseTypeofType = function flowParseTypeofType() {
        var node = this.startNode();
        this.expect(87);
        node.argument = this.flowParsePrimaryType();
        return this.finishNode(node, "TypeofTypeAnnotation");
      };
      _proto.flowParseTupleType = function flowParseTupleType() {
        var node = this.startNode();
        node.types = [];
        this.expect(0);
        while (this.state.pos < this.length && !this.match(3)) {
          node.types.push(this.flowParseType());
          if (this.match(3)) break;
          this.expect(12);
        }
        this.expect(3);
        return this.finishNode(node, "TupleTypeAnnotation");
      };
      _proto.flowParseFunctionTypeParam = function flowParseFunctionTypeParam(first) {
        var name = null;
        var optional = false;
        var typeAnnotation = null;
        var node = this.startNode();
        var lh = this.lookahead();
        var isThis = this.state.type === 78;
        if (lh.type === 14 || lh.type === 17) {
          if (isThis && !first) {
            this.raise(FlowErrors.ThisParamMustBeFirst, node);
          }
          name = this.parseIdentifier(isThis);
          if (this.eat(17)) {
            optional = true;
            if (isThis) {
              this.raise(FlowErrors.ThisParamMayNotBeOptional, node);
            }
          }
          typeAnnotation = this.flowParseTypeInitialiser();
        } else {
          typeAnnotation = this.flowParseType();
        }
        node.name = name;
        node.optional = optional;
        node.typeAnnotation = typeAnnotation;
        return this.finishNode(node, "FunctionTypeParam");
      };
      _proto.reinterpretTypeAsFunctionTypeParam = function reinterpretTypeAsFunctionTypeParam(type) {
        var node = this.startNodeAt(type.loc.start);
        node.name = null;
        node.optional = false;
        node.typeAnnotation = type;
        return this.finishNode(node, "FunctionTypeParam");
      };
      _proto.flowParseFunctionTypeParams = function flowParseFunctionTypeParams(params) {
        if (params === void 0) {
          params = [];
        }
        var rest = null;
        var _this = null;
        if (this.match(78)) {
          _this = this.flowParseFunctionTypeParam(true);
          _this.name = null;
          if (!this.match(11)) {
            this.expect(12);
          }
        }
        while (!this.match(11) && !this.match(21)) {
          params.push(this.flowParseFunctionTypeParam(false));
          if (!this.match(11)) {
            this.expect(12);
          }
        }
        if (this.eat(21)) {
          rest = this.flowParseFunctionTypeParam(false);
        }
        return {
          params: params,
          rest: rest,
          _this: _this
        };
      };
      _proto.flowIdentToTypeAnnotation = function flowIdentToTypeAnnotation(startLoc, node, id) {
        switch (id.name) {
          case "any":
            return this.finishNode(node, "AnyTypeAnnotation");
          case "bool":
          case "boolean":
            return this.finishNode(node, "BooleanTypeAnnotation");
          case "mixed":
            return this.finishNode(node, "MixedTypeAnnotation");
          case "empty":
            return this.finishNode(node, "EmptyTypeAnnotation");
          case "number":
            return this.finishNode(node, "NumberTypeAnnotation");
          case "string":
            return this.finishNode(node, "StringTypeAnnotation");
          case "symbol":
            return this.finishNode(node, "SymbolTypeAnnotation");
          default:
            this.checkNotUnderscore(id.name);
            return this.flowParseGenericType(startLoc, id);
        }
      };
      _proto.flowParsePrimaryType = function flowParsePrimaryType() {
        var startLoc = this.state.startLoc;
        var node = this.startNode();
        var tmp;
        var type;
        var isGroupedType = false;
        var oldNoAnonFunctionType = this.state.noAnonFunctionType;
        switch (this.state.type) {
          case 5:
            return this.flowParseObjectType({
              allowStatic: false,
              allowExact: false,
              allowSpread: true,
              allowProto: false,
              allowInexact: true
            });
          case 6:
            return this.flowParseObjectType({
              allowStatic: false,
              allowExact: true,
              allowSpread: true,
              allowProto: false,
              allowInexact: false
            });
          case 0:
            this.state.noAnonFunctionType = false;
            type = this.flowParseTupleType();
            this.state.noAnonFunctionType = oldNoAnonFunctionType;
            return type;
          case 47:
            {
              var _node = this.startNode();
              _node.typeParameters = this.flowParseTypeParameterDeclaration();
              this.expect(10);
              tmp = this.flowParseFunctionTypeParams();
              _node.params = tmp.params;
              _node.rest = tmp.rest;
              _node["this"] = tmp._this;
              this.expect(11);
              this.expect(19);
              _node.returnType = this.flowParseType();
              return this.finishNode(_node, "FunctionTypeAnnotation");
            }
          case 10:
            {
              var _node2 = this.startNode();
              this.next();
              if (!this.match(11) && !this.match(21)) {
                if (tokenIsIdentifier(this.state.type) || this.match(78)) {
                  var token = this.lookahead().type;
                  isGroupedType = token !== 17 && token !== 14;
                } else {
                  isGroupedType = true;
                }
              }
              if (isGroupedType) {
                this.state.noAnonFunctionType = false;
                type = this.flowParseType();
                this.state.noAnonFunctionType = oldNoAnonFunctionType;
                if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {
                  this.expect(11);
                  return type;
                } else {
                  this.eat(12);
                }
              }
              if (type) {
                tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
              } else {
                tmp = this.flowParseFunctionTypeParams();
              }
              _node2.params = tmp.params;
              _node2.rest = tmp.rest;
              _node2["this"] = tmp._this;
              this.expect(11);
              this.expect(19);
              _node2.returnType = this.flowParseType();
              _node2.typeParameters = null;
              return this.finishNode(_node2, "FunctionTypeAnnotation");
            }
          case 133:
            return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
          case 85:
          case 86:
            node.value = this.match(85);
            this.next();
            return this.finishNode(node, "BooleanLiteralTypeAnnotation");
          case 53:
            if (this.state.value === "-") {
              this.next();
              if (this.match(134)) {
                return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);
              }
              if (this.match(135)) {
                return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);
              }
              throw this.raise(FlowErrors.UnexpectedSubtractionOperand, this.state.startLoc);
            }
            this.unexpected();
            return;
          case 134:
            return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
          case 135:
            return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
          case 88:
            this.next();
            return this.finishNode(node, "VoidTypeAnnotation");
          case 84:
            this.next();
            return this.finishNode(node, "NullLiteralTypeAnnotation");
          case 78:
            this.next();
            return this.finishNode(node, "ThisTypeAnnotation");
          case 55:
            this.next();
            return this.finishNode(node, "ExistsTypeAnnotation");
          case 87:
            return this.flowParseTypeofType();
          default:
            if (tokenIsKeyword(this.state.type)) {
              var label = tokenLabelName(this.state.type);
              this.next();
              return _superClass.prototype.createIdentifier.call(this, node, label);
            } else if (tokenIsIdentifier(this.state.type)) {
              if (this.isContextual(129)) {
                return this.flowParseInterfaceType();
              }
              return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());
            }
        }
        this.unexpected();
      };
      _proto.flowParsePostfixType = function flowParsePostfixType() {
        var startLoc = this.state.startLoc;
        var type = this.flowParsePrimaryType();
        var seenOptionalIndexedAccess = false;
        while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {
          var node = this.startNodeAt(startLoc);
          var optional = this.eat(18);
          seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;
          this.expect(0);
          if (!optional && this.match(3)) {
            node.elementType = type;
            this.next();
            type = this.finishNode(node, "ArrayTypeAnnotation");
          } else {
            node.objectType = type;
            node.indexType = this.flowParseType();
            this.expect(3);
            if (seenOptionalIndexedAccess) {
              node.optional = optional;
              type = this.finishNode(node, "OptionalIndexedAccessType");
            } else {
              type = this.finishNode(node, "IndexedAccessType");
            }
          }
        }
        return type;
      };
      _proto.flowParsePrefixType = function flowParsePrefixType() {
        var node = this.startNode();
        if (this.eat(17)) {
          node.typeAnnotation = this.flowParsePrefixType();
          return this.finishNode(node, "NullableTypeAnnotation");
        } else {
          return this.flowParsePostfixType();
        }
      };
      _proto.flowParseAnonFunctionWithoutParens = function flowParseAnonFunctionWithoutParens() {
        var param = this.flowParsePrefixType();
        if (!this.state.noAnonFunctionType && this.eat(19)) {
          var node = this.startNodeAt(param.loc.start);
          node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
          node.rest = null;
          node["this"] = null;
          node.returnType = this.flowParseType();
          node.typeParameters = null;
          return this.finishNode(node, "FunctionTypeAnnotation");
        }
        return param;
      };
      _proto.flowParseIntersectionType = function flowParseIntersectionType() {
        var node = this.startNode();
        this.eat(45);
        var type = this.flowParseAnonFunctionWithoutParens();
        node.types = [type];
        while (this.eat(45)) {
          node.types.push(this.flowParseAnonFunctionWithoutParens());
        }
        return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
      };
      _proto.flowParseUnionType = function flowParseUnionType() {
        var node = this.startNode();
        this.eat(43);
        var type = this.flowParseIntersectionType();
        node.types = [type];
        while (this.eat(43)) {
          node.types.push(this.flowParseIntersectionType());
        }
        return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
      };
      _proto.flowParseType = function flowParseType() {
        var oldInType = this.state.inType;
        this.state.inType = true;
        var type = this.flowParseUnionType();
        this.state.inType = oldInType;
        return type;
      };
      _proto.flowParseTypeOrImplicitInstantiation = function flowParseTypeOrImplicitInstantiation() {
        if (this.state.type === 132 && this.state.value === "_") {
          var startLoc = this.state.startLoc;
          var node = this.parseIdentifier();
          return this.flowParseGenericType(startLoc, node);
        } else {
          return this.flowParseType();
        }
      };
      _proto.flowParseTypeAnnotation = function flowParseTypeAnnotation() {
        var node = this.startNode();
        node.typeAnnotation = this.flowParseTypeInitialiser();
        return this.finishNode(node, "TypeAnnotation");
      };
      _proto.flowParseTypeAnnotatableIdentifier = function flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {
        var ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();
        if (this.match(14)) {
          ident.typeAnnotation = this.flowParseTypeAnnotation();
          this.resetEndLocation(ident);
        }
        return ident;
      };
      _proto.typeCastToParameter = function typeCastToParameter(node) {
        node.expression.typeAnnotation = node.typeAnnotation;
        this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
        return node.expression;
      };
      _proto.flowParseVariance = function flowParseVariance() {
        var variance = null;
        if (this.match(53)) {
          variance = this.startNode();
          if (this.state.value === "+") {
            variance.kind = "plus";
          } else {
            variance.kind = "minus";
          }
          this.next();
          return this.finishNode(variance, "Variance");
        }
        return variance;
      };
      _proto.parseFunctionBody = function parseFunctionBody(node, allowExpressionBody, isMethod) {
        var _this4 = this;
        if (isMethod === void 0) {
          isMethod = false;
        }
        if (allowExpressionBody) {
          this.forwardNoArrowParamsConversionAt(node, function () {
            return _superClass.prototype.parseFunctionBody.call(_this4, node, true, isMethod);
          });
          return;
        }
        _superClass.prototype.parseFunctionBody.call(this, node, false, isMethod);
      };
      _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
        if (isMethod === void 0) {
          isMethod = false;
        }
        if (this.match(14)) {
          var typeNode = this.startNode();
          var _this$flowParseTypeAn2 = this.flowParseTypeAndPredicateInitialiser();
          typeNode.typeAnnotation = _this$flowParseTypeAn2[0];
          node.predicate = _this$flowParseTypeAn2[1];
          node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;
        }
        return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, type, isMethod);
      };
      _proto.parseStatementLike = function parseStatementLike(flags) {
        if (this.state.strict && this.isContextual(129)) {
          var lookahead = this.lookahead();
          if (tokenIsKeywordOrIdentifier(lookahead.type)) {
            var node = this.startNode();
            this.next();
            return this.flowParseInterface(node);
          }
        } else if (this.shouldParseEnums() && this.isContextual(126)) {
          var _node3 = this.startNode();
          this.next();
          return this.flowParseEnumDeclaration(_node3);
        }
        var stmt = _superClass.prototype.parseStatementLike.call(this, flags);
        if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {
          this.flowPragma = null;
        }
        return stmt;
      };
      _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
        if (expr.type === "Identifier") {
          if (expr.name === "declare") {
            if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {
              return this.flowParseDeclare(node);
            }
          } else if (tokenIsIdentifier(this.state.type)) {
            if (expr.name === "interface") {
              return this.flowParseInterface(node);
            } else if (expr.name === "type") {
              return this.flowParseTypeAlias(node);
            } else if (expr.name === "opaque") {
              return this.flowParseOpaqueType(node, false);
            }
          }
        }
        return _superClass.prototype.parseExpressionStatement.call(this, node, expr, decorators);
      };
      _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
        var type = this.state.type;
        if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) {
          return !this.state.containsEsc;
        }
        return _superClass.prototype.shouldParseExportDeclaration.call(this);
      };
      _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
        var type = this.state.type;
        if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 126) {
          return this.state.containsEsc;
        }
        return _superClass.prototype.isExportDefaultSpecifier.call(this);
      };
      _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
        if (this.shouldParseEnums() && this.isContextual(126)) {
          var node = this.startNode();
          this.next();
          return this.flowParseEnumDeclaration(node);
        }
        return _superClass.prototype.parseExportDefaultExpression.call(this);
      };
      _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
        var _this5 = this;
        if (!this.match(17)) return expr;
        if (this.state.maybeInArrowParameters) {
          var nextCh = this.lookaheadCharCode();
          if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
            this.setOptionalParametersError(refExpressionErrors);
            return expr;
          }
        }
        this.expect(17);
        var state = this.state.clone();
        var originalNoArrowAt = this.state.noArrowAt;
        var node = this.startNodeAt(startLoc);
        var _this$tryParseConditi = this.tryParseConditionalConsequent(),
          consequent = _this$tryParseConditi.consequent,
          failed = _this$tryParseConditi.failed;
        var _this$getArrowLikeExp = this.getArrowLikeExpressions(consequent),
          valid = _this$getArrowLikeExp[0],
          invalid = _this$getArrowLikeExp[1];
        if (failed || invalid.length > 0) {
          var noArrowAt = [].concat(originalNoArrowAt);
          if (invalid.length > 0) {
            this.state = state;
            this.state.noArrowAt = noArrowAt;
            for (var i = 0; i < invalid.length; i++) {
              noArrowAt.push(invalid[i].start);
            }
            var _this$tryParseConditi2 = this.tryParseConditionalConsequent();
            consequent = _this$tryParseConditi2.consequent;
            failed = _this$tryParseConditi2.failed;
            var _this$getArrowLikeExp2 = this.getArrowLikeExpressions(consequent);
            valid = _this$getArrowLikeExp2[0];
            invalid = _this$getArrowLikeExp2[1];
          }
          if (failed && valid.length > 1) {
            this.raise(FlowErrors.AmbiguousConditionalArrow, state.startLoc);
          }
          if (failed && valid.length === 1) {
            this.state = state;
            noArrowAt.push(valid[0].start);
            this.state.noArrowAt = noArrowAt;
            var _this$tryParseConditi3 = this.tryParseConditionalConsequent();
            consequent = _this$tryParseConditi3.consequent;
            failed = _this$tryParseConditi3.failed;
          }
        }
        this.getArrowLikeExpressions(consequent, true);
        this.state.noArrowAt = originalNoArrowAt;
        this.expect(14);
        node.test = expr;
        node.consequent = consequent;
        node.alternate = this.forwardNoArrowParamsConversionAt(node, function () {
          return _this5.parseMaybeAssign(undefined, undefined);
        });
        return this.finishNode(node, "ConditionalExpression");
      };
      _proto.tryParseConditionalConsequent = function tryParseConditionalConsequent() {
        this.state.noArrowParamsConversionAt.push(this.state.start);
        var consequent = this.parseMaybeAssignAllowIn();
        var failed = !this.match(14);
        this.state.noArrowParamsConversionAt.pop();
        return {
          consequent: consequent,
          failed: failed
        };
      };
      _proto.getArrowLikeExpressions = function getArrowLikeExpressions(node, disallowInvalid) {
        var _this6 = this;
        var stack = [node];
        var arrows = [];
        while (stack.length !== 0) {
          var _node4 = stack.pop();
          if (_node4.type === "ArrowFunctionExpression" && _node4.body.type !== "BlockStatement") {
            if (_node4.typeParameters || !_node4.returnType) {
              this.finishArrowValidation(_node4);
            } else {
              arrows.push(_node4);
            }
            stack.push(_node4.body);
          } else if (_node4.type === "ConditionalExpression") {
            stack.push(_node4.consequent);
            stack.push(_node4.alternate);
          }
        }
        if (disallowInvalid) {
          arrows.forEach(function (node) {
            return _this6.finishArrowValidation(node);
          });
          return [arrows, []];
        }
        return partition(arrows, function (node) {
          return node.params.every(function (param) {
            return _this6.isAssignable(param, true);
          });
        });
      };
      _proto.finishArrowValidation = function finishArrowValidation(node) {
        var _node$extra;
        this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);
        this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);
        _superClass.prototype.checkParams.call(this, node, false, true);
        this.scope.exit();
      };
      _proto.forwardNoArrowParamsConversionAt = function forwardNoArrowParamsConversionAt(node, parse) {
        var result;
        if (this.state.noArrowParamsConversionAt.includes(node.start)) {
          this.state.noArrowParamsConversionAt.push(this.state.start);
          result = parse();
          this.state.noArrowParamsConversionAt.pop();
        } else {
          result = parse();
        }
        return result;
      };
      _proto.parseParenItem = function parseParenItem(node, startLoc) {
        var newNode = _superClass.prototype.parseParenItem.call(this, node, startLoc);
        if (this.eat(17)) {
          newNode.optional = true;
          this.resetEndLocation(node);
        }
        if (this.match(14)) {
          var typeCastNode = this.startNodeAt(startLoc);
          typeCastNode.expression = newNode;
          typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
          return this.finishNode(typeCastNode, "TypeCastExpression");
        }
        return newNode;
      };
      _proto.assertModuleNodeAllowed = function assertModuleNodeAllowed(node) {
        if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {
          return;
        }
        _superClass.prototype.assertModuleNodeAllowed.call(this, node);
      };
      _proto.parseExportDeclaration = function parseExportDeclaration(node) {
        if (this.isContextual(130)) {
          node.exportKind = "type";
          var declarationNode = this.startNode();
          this.next();
          if (this.match(5)) {
            node.specifiers = this.parseExportSpecifiers(true);
            _superClass.prototype.parseExportFrom.call(this, node);
            return null;
          } else {
            return this.flowParseTypeAlias(declarationNode);
          }
        } else if (this.isContextual(131)) {
          node.exportKind = "type";
          var _declarationNode = this.startNode();
          this.next();
          return this.flowParseOpaqueType(_declarationNode, false);
        } else if (this.isContextual(129)) {
          node.exportKind = "type";
          var _declarationNode2 = this.startNode();
          this.next();
          return this.flowParseInterface(_declarationNode2);
        } else if (this.shouldParseEnums() && this.isContextual(126)) {
          node.exportKind = "value";
          var _declarationNode3 = this.startNode();
          this.next();
          return this.flowParseEnumDeclaration(_declarationNode3);
        } else {
          return _superClass.prototype.parseExportDeclaration.call(this, node);
        }
      };
      _proto.eatExportStar = function eatExportStar(node) {
        if (_superClass.prototype.eatExportStar.call(this, node)) return true;
        if (this.isContextual(130) && this.lookahead().type === 55) {
          node.exportKind = "type";
          this.next();
          this.next();
          return true;
        }
        return false;
      };
      _proto.maybeParseExportNamespaceSpecifier = function maybeParseExportNamespaceSpecifier(node) {
        var startLoc = this.state.startLoc;
        var hasNamespace = _superClass.prototype.maybeParseExportNamespaceSpecifier.call(this, node);
        if (hasNamespace && node.exportKind === "type") {
          this.unexpected(startLoc);
        }
        return hasNamespace;
      };
      _proto.parseClassId = function parseClassId(node, isStatement, optionalId) {
        _superClass.prototype.parseClassId.call(this, node, isStatement, optionalId);
        if (this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        }
      };
      _proto.parseClassMember = function parseClassMember(classBody, member, state) {
        var startLoc = this.state.startLoc;
        if (this.isContextual(125)) {
          if (_superClass.prototype.parseClassMemberFromModifier.call(this, classBody, member)) {
            return;
          }
          member.declare = true;
        }
        _superClass.prototype.parseClassMember.call(this, classBody, member, state);
        if (member.declare) {
          if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {
            this.raise(FlowErrors.DeclareClassElement, startLoc);
          } else if (member.value) {
            this.raise(FlowErrors.DeclareClassFieldInitializer, member.value);
          }
        }
      };
      _proto.isIterator = function isIterator(word) {
        return word === "iterator" || word === "asyncIterator";
      };
      _proto.readIterator = function readIterator() {
        var word = _superClass.prototype.readWord1.call(this);
        var fullWord = "@@" + word;
        if (!this.isIterator(word) || !this.state.inType) {
          this.raise(Errors.InvalidIdentifier, this.state.curPosition(), {
            identifierName: fullWord
          });
        }
        this.finishToken(132, fullWord);
      };
      _proto.getTokenFromCode = function getTokenFromCode(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (code === 123 && next === 124) {
          this.finishOp(6, 2);
        } else if (this.state.inType && (code === 62 || code === 60)) {
          this.finishOp(code === 62 ? 48 : 47, 1);
        } else if (this.state.inType && code === 63) {
          if (next === 46) {
            this.finishOp(18, 2);
          } else {
            this.finishOp(17, 1);
          }
        } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {
          this.state.pos += 2;
          this.readIterator();
        } else {
          _superClass.prototype.getTokenFromCode.call(this, code);
        }
      };
      _proto.isAssignable = function isAssignable(node, isBinding) {
        if (node.type === "TypeCastExpression") {
          return this.isAssignable(node.expression, isBinding);
        } else {
          return _superClass.prototype.isAssignable.call(this, node, isBinding);
        }
      };
      _proto.toAssignable = function toAssignable(node, isLHS) {
        if (isLHS === void 0) {
          isLHS = false;
        }
        if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") {
          node.left = this.typeCastToParameter(node.left);
        }
        _superClass.prototype.toAssignable.call(this, node, isLHS);
      };
      _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
        for (var i = 0; i < exprList.length; i++) {
          var expr = exprList[i];
          if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {
            exprList[i] = this.typeCastToParameter(expr);
          }
        }
        _superClass.prototype.toAssignableList.call(this, exprList, trailingCommaLoc, isLHS);
      };
      _proto.toReferencedList = function toReferencedList(exprList, isParenthesizedExpr) {
        for (var i = 0; i < exprList.length; i++) {
          var _expr$extra;
          var expr = exprList[i];
          if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
            this.raise(FlowErrors.TypeCastInPattern, expr.typeAnnotation);
          }
        }
        return exprList;
      };
      _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
        var node = _superClass.prototype.parseArrayLike.call(this, close, canBePattern, isTuple, refExpressionErrors);
        if (canBePattern && !this.state.maybeInArrowParameters) {
          this.toReferencedList(node.elements);
        }
        return node;
      };
      _proto.isValidLVal = function isValidLVal(type, isParenthesized, binding) {
        return type === "TypeCastExpression" || _superClass.prototype.isValidLVal.call(this, type, isParenthesized, binding);
      };
      _proto.parseClassProperty = function parseClassProperty(node) {
        if (this.match(14)) {
          node.typeAnnotation = this.flowParseTypeAnnotation();
        }
        return _superClass.prototype.parseClassProperty.call(this, node);
      };
      _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
        if (this.match(14)) {
          node.typeAnnotation = this.flowParseTypeAnnotation();
        }
        return _superClass.prototype.parseClassPrivateProperty.call(this, node);
      };
      _proto.isClassMethod = function isClassMethod() {
        return this.match(47) || _superClass.prototype.isClassMethod.call(this);
      };
      _proto.isClassProperty = function isClassProperty() {
        return this.match(14) || _superClass.prototype.isClassProperty.call(this);
      };
      _proto.isNonstaticConstructor = function isNonstaticConstructor(method) {
        return !this.match(14) && _superClass.prototype.isNonstaticConstructor.call(this, method);
      };
      _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
        if (method.variance) {
          this.unexpected(method.variance.loc.start);
        }
        delete method.variance;
        if (this.match(47)) {
          method.typeParameters = this.flowParseTypeParameterDeclaration();
        }
        _superClass.prototype.pushClassMethod.call(this, classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
        if (method.params && isConstructor) {
          var params = method.params;
          if (params.length > 0 && this.isThisParam(params[0])) {
            this.raise(FlowErrors.ThisParamBannedInConstructor, method);
          }
        } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {
          var _params = method.value.params;
          if (_params.length > 0 && this.isThisParam(_params[0])) {
            this.raise(FlowErrors.ThisParamBannedInConstructor, method);
          }
        }
      };
      _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
        if (method.variance) {
          this.unexpected(method.variance.loc.start);
        }
        delete method.variance;
        if (this.match(47)) {
          method.typeParameters = this.flowParseTypeParameterDeclaration();
        }
        _superClass.prototype.pushClassPrivateMethod.call(this, classBody, method, isGenerator, isAsync);
      };
      _proto.parseClassSuper = function parseClassSuper(node) {
        _superClass.prototype.parseClassSuper.call(this, node);
        if (node.superClass && this.match(47)) {
          node.superTypeParameters = this.flowParseTypeParameterInstantiation();
        }
        if (this.isContextual(113)) {
          this.next();
          var implemented = node["implements"] = [];
          do {
            var _node5 = this.startNode();
            _node5.id = this.flowParseRestrictedIdentifier(true);
            if (this.match(47)) {
              _node5.typeParameters = this.flowParseTypeParameterInstantiation();
            } else {
              _node5.typeParameters = null;
            }
            implemented.push(this.finishNode(_node5, "ClassImplements"));
          } while (this.eat(12));
        }
      };
      _proto.checkGetterSetterParams = function checkGetterSetterParams(method) {
        _superClass.prototype.checkGetterSetterParams.call(this, method);
        var params = this.getObjectOrClassMethodParams(method);
        if (params.length > 0) {
          var param = params[0];
          if (this.isThisParam(param) && method.kind === "get") {
            this.raise(FlowErrors.GetterMayNotHaveThisParam, param);
          } else if (this.isThisParam(param)) {
            this.raise(FlowErrors.SetterMayNotHaveThisParam, param);
          }
        }
      };
      _proto.parsePropertyNamePrefixOperator = function parsePropertyNamePrefixOperator(node) {
        node.variance = this.flowParseVariance();
      };
      _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
        if (prop.variance) {
          this.unexpected(prop.variance.loc.start);
        }
        delete prop.variance;
        var typeParameters;
        if (this.match(47) && !isAccessor) {
          typeParameters = this.flowParseTypeParameterDeclaration();
          if (!this.match(10)) this.unexpected();
        }
        var result = _superClass.prototype.parseObjPropValue.call(this, prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
        if (typeParameters) {
          (result.value || result).typeParameters = typeParameters;
        }
        return result;
      };
      _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param) {
        if (this.eat(17)) {
          if (param.type !== "Identifier") {
            this.raise(FlowErrors.PatternIsOptional, param);
          }
          if (this.isThisParam(param)) {
            this.raise(FlowErrors.ThisParamMayNotBeOptional, param);
          }
          param.optional = true;
        }
        if (this.match(14)) {
          param.typeAnnotation = this.flowParseTypeAnnotation();
        } else if (this.isThisParam(param)) {
          this.raise(FlowErrors.ThisParamAnnotationRequired, param);
        }
        if (this.match(29) && this.isThisParam(param)) {
          this.raise(FlowErrors.ThisParamNoDefault, param);
        }
        this.resetEndLocation(param);
        return param;
      };
      _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
        var node = _superClass.prototype.parseMaybeDefault.call(this, startLoc, left);
        if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
          this.raise(FlowErrors.TypeBeforeInitializer, node.typeAnnotation);
        }
        return node;
      };
      _proto.checkImportReflection = function checkImportReflection(node) {
        _superClass.prototype.checkImportReflection.call(this, node);
        if (node.module && node.importKind !== "value") {
          this.raise(FlowErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
        }
      };
      _proto.parseImportSpecifierLocal = function parseImportSpecifierLocal(node, specifier, type) {
        specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
        node.specifiers.push(this.finishImportSpecifier(specifier, type));
      };
      _proto.isPotentialImportPhase = function isPotentialImportPhase(isExport) {
        if (_superClass.prototype.isPotentialImportPhase.call(this, isExport)) return true;
        if (this.isContextual(130)) {
          if (!isExport) return true;
          var ch = this.lookaheadCharCode();
          return ch === 123 || ch === 42;
        }
        return !isExport && this.isContextual(87);
      };
      _proto.applyImportPhase = function applyImportPhase(node, isExport, phase, loc) {
        _superClass.prototype.applyImportPhase.call(this, node, isExport, phase, loc);
        if (isExport) {
          if (!phase && this.match(65)) {
            return;
          }
          node.exportKind = phase === "type" ? phase : "value";
        } else {
          if (phase === "type" && this.match(55)) this.unexpected();
          node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
        }
      };
      _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
        var firstIdent = specifier.imported;
        var specifierTypeKind = null;
        if (firstIdent.type === "Identifier") {
          if (firstIdent.name === "type") {
            specifierTypeKind = "type";
          } else if (firstIdent.name === "typeof") {
            specifierTypeKind = "typeof";
          }
        }
        var isBinding = false;
        if (this.isContextual(93) && !this.isLookaheadContextual("as")) {
          var as_ident = this.parseIdentifier(true);
          if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {
            specifier.imported = as_ident;
            specifier.importKind = specifierTypeKind;
            specifier.local = cloneIdentifier(as_ident);
          } else {
            specifier.imported = firstIdent;
            specifier.importKind = null;
            specifier.local = this.parseIdentifier();
          }
        } else {
          if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {
            specifier.imported = this.parseIdentifier(true);
            specifier.importKind = specifierTypeKind;
          } else {
            if (importedIsString) {
              throw this.raise(Errors.ImportBindingIsString, specifier, {
                importName: firstIdent.value
              });
            }
            specifier.imported = firstIdent;
            specifier.importKind = null;
          }
          if (this.eatContextual(93)) {
            specifier.local = this.parseIdentifier();
          } else {
            isBinding = true;
            specifier.local = cloneIdentifier(specifier.imported);
          }
        }
        var specifierIsTypeImport = hasTypeImportKind(specifier);
        if (isInTypeOnlyImport && specifierIsTypeImport) {
          this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, specifier);
        }
        if (isInTypeOnlyImport || specifierIsTypeImport) {
          this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);
        }
        if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {
          this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);
        }
        return this.finishImportSpecifier(specifier, "ImportSpecifier");
      };
      _proto.parseBindingAtom = function parseBindingAtom() {
        switch (this.state.type) {
          case 78:
            return this.parseIdentifier(true);
          default:
            return _superClass.prototype.parseBindingAtom.call(this);
        }
      };
      _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
        var kind = node.kind;
        if (kind !== "get" && kind !== "set" && this.match(47)) {
          node.typeParameters = this.flowParseTypeParameterDeclaration();
        }
        _superClass.prototype.parseFunctionParams.call(this, node, isConstructor);
      };
      _proto.parseVarId = function parseVarId(decl, kind) {
        _superClass.prototype.parseVarId.call(this, decl, kind);
        if (this.match(14)) {
          decl.id.typeAnnotation = this.flowParseTypeAnnotation();
          this.resetEndLocation(decl.id);
        }
      };
      _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
        if (this.match(14)) {
          var oldNoAnonFunctionType = this.state.noAnonFunctionType;
          this.state.noAnonFunctionType = true;
          node.returnType = this.flowParseTypeAnnotation();
          this.state.noAnonFunctionType = oldNoAnonFunctionType;
        }
        return _superClass.prototype.parseAsyncArrowFromCallExpression.call(this, node, call);
      };
      _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
        return this.match(14) || _superClass.prototype.shouldParseAsyncArrow.call(this);
      };
      _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
        var _this7 = this,
          _jsx;
        var state = null;
        var jsx;
        if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) {
          state = this.state.clone();
          jsx = this.tryParse(function () {
            return _superClass.prototype.parseMaybeAssign.call(_this7, refExpressionErrors, afterLeftParse);
          }, state);
          if (!jsx.error) return jsx.node;
          var context = this.state.context;
          var currentContext = context[context.length - 1];
          if (currentContext === types.j_oTag || currentContext === types.j_expr) {
            context.pop();
          }
        }
        if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {
          var _jsx2, _jsx3;
          state = state || this.state.clone();
          var typeParameters;
          var arrow = this.tryParse(function (abort) {
            var _arrowExpression$extr;
            typeParameters = _this7.flowParseTypeParameterDeclaration();
            var arrowExpression = _this7.forwardNoArrowParamsConversionAt(typeParameters, function () {
              var result = _superClass.prototype.parseMaybeAssign.call(_this7, refExpressionErrors, afterLeftParse);
              _this7.resetStartLocationFromNode(result, typeParameters);
              return result;
            });
            if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();
            var expr = _this7.maybeUnwrapTypeCastExpression(arrowExpression);
            if (expr.type !== "ArrowFunctionExpression") abort();
            expr.typeParameters = typeParameters;
            _this7.resetStartLocationFromNode(expr, typeParameters);
            return arrowExpression;
          }, state);
          var arrowExpression = null;
          if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {
            if (!arrow.error && !arrow.aborted) {
              if (arrow.node.async) {
                this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, typeParameters);
              }
              return arrow.node;
            }
            arrowExpression = arrow.node;
          }
          if ((_jsx2 = jsx) != null && _jsx2.node) {
            this.state = jsx.failState;
            return jsx.node;
          }
          if (arrowExpression) {
            this.state = arrow.failState;
            return arrowExpression;
          }
          if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
          if (arrow.thrown) throw arrow.error;
          throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, typeParameters);
        }
        return _superClass.prototype.parseMaybeAssign.call(this, refExpressionErrors, afterLeftParse);
      };
      _proto.parseArrow = function parseArrow(node) {
        var _this8 = this;
        if (this.match(14)) {
          var result = this.tryParse(function () {
            var oldNoAnonFunctionType = _this8.state.noAnonFunctionType;
            _this8.state.noAnonFunctionType = true;
            var typeNode = _this8.startNode();
            var _this8$flowParseTypeA = _this8.flowParseTypeAndPredicateInitialiser();
            typeNode.typeAnnotation = _this8$flowParseTypeA[0];
            node.predicate = _this8$flowParseTypeA[1];
            _this8.state.noAnonFunctionType = oldNoAnonFunctionType;
            if (_this8.canInsertSemicolon()) _this8.unexpected();
            if (!_this8.match(19)) _this8.unexpected();
            return typeNode;
          });
          if (result.thrown) return null;
          if (result.error) this.state = result.failState;
          node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;
        }
        return _superClass.prototype.parseArrow.call(this, node);
      };
      _proto.shouldParseArrow = function shouldParseArrow(params) {
        return this.match(14) || _superClass.prototype.shouldParseArrow.call(this, params);
      };
      _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params) {
        if (this.state.noArrowParamsConversionAt.includes(node.start)) {
          node.params = params;
        } else {
          _superClass.prototype.setArrowFunctionParameters.call(this, node, params);
        }
      };
      _proto.checkParams = function checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged) {
        if (strictModeChanged === void 0) {
          strictModeChanged = true;
        }
        if (isArrowFunction && this.state.noArrowParamsConversionAt.includes(node.start)) {
          return;
        }
        for (var i = 0; i < node.params.length; i++) {
          if (this.isThisParam(node.params[i]) && i > 0) {
            this.raise(FlowErrors.ThisParamMustBeFirst, node.params[i]);
          }
        }
        _superClass.prototype.checkParams.call(this, node, allowDuplicates, isArrowFunction, strictModeChanged);
      };
      _proto.parseParenAndDistinguishExpression = function parseParenAndDistinguishExpression(canBeArrow) {
        return _superClass.prototype.parseParenAndDistinguishExpression.call(this, canBeArrow && !this.state.noArrowAt.includes(this.state.start));
      };
      _proto.parseSubscripts = function parseSubscripts(base, startLoc, noCalls) {
        var _this9 = this;
        if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.includes(startLoc.index)) {
          this.next();
          var node = this.startNodeAt(startLoc);
          node.callee = base;
          node.arguments = _superClass.prototype.parseCallExpressionArguments.call(this, 11, false);
          base = this.finishNode(node, "CallExpression");
        } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) {
          var state = this.state.clone();
          var arrow = this.tryParse(function (abort) {
            return _this9.parseAsyncArrowWithTypeParameters(startLoc) || abort();
          }, state);
          if (!arrow.error && !arrow.aborted) return arrow.node;
          var result = this.tryParse(function () {
            return _superClass.prototype.parseSubscripts.call(_this9, base, startLoc, noCalls);
          }, state);
          if (result.node && !result.error) return result.node;
          if (arrow.node) {
            this.state = arrow.failState;
            return arrow.node;
          }
          if (result.node) {
            this.state = result.failState;
            return result.node;
          }
          throw arrow.error || result.error;
        }
        return _superClass.prototype.parseSubscripts.call(this, base, startLoc, noCalls);
      };
      _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, subscriptState) {
        var _this10 = this;
        if (this.match(18) && this.isLookaheadToken_lt()) {
          subscriptState.optionalChainMember = true;
          if (noCalls) {
            subscriptState.stop = true;
            return base;
          }
          this.next();
          var node = this.startNodeAt(startLoc);
          node.callee = base;
          node.typeArguments = this.flowParseTypeParameterInstantiation();
          this.expect(10);
          node.arguments = this.parseCallExpressionArguments(11, false);
          node.optional = true;
          return this.finishCallExpression(node, true);
        } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {
          var _node6 = this.startNodeAt(startLoc);
          _node6.callee = base;
          var result = this.tryParse(function () {
            _node6.typeArguments = _this10.flowParseTypeParameterInstantiationCallOrNew();
            _this10.expect(10);
            _node6.arguments = _superClass.prototype.parseCallExpressionArguments.call(_this10, 11, false);
            if (subscriptState.optionalChainMember) {
              _node6.optional = false;
            }
            return _this10.finishCallExpression(_node6, subscriptState.optionalChainMember);
          });
          if (result.node) {
            if (result.error) this.state = result.failState;
            return result.node;
          }
        }
        return _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, subscriptState);
      };
      _proto.parseNewCallee = function parseNewCallee(node) {
        var _this11 = this;
        _superClass.prototype.parseNewCallee.call(this, node);
        var targs = null;
        if (this.shouldParseTypes() && this.match(47)) {
          targs = this.tryParse(function () {
            return _this11.flowParseTypeParameterInstantiationCallOrNew();
          }).node;
        }
        node.typeArguments = targs;
      };
      _proto.parseAsyncArrowWithTypeParameters = function parseAsyncArrowWithTypeParameters(startLoc) {
        var node = this.startNodeAt(startLoc);
        this.parseFunctionParams(node, false);
        if (!this.parseArrow(node)) return;
        return _superClass.prototype.parseArrowExpression.call(this, node, undefined, true);
      };
      _proto.readToken_mult_modulo = function readToken_mult_modulo(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (code === 42 && next === 47 && this.state.hasFlowComment) {
          this.state.hasFlowComment = false;
          this.state.pos += 2;
          this.nextToken();
          return;
        }
        _superClass.prototype.readToken_mult_modulo.call(this, code);
      };
      _proto.readToken_pipe_amp = function readToken_pipe_amp(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (code === 124 && next === 125) {
          this.finishOp(9, 2);
          return;
        }
        _superClass.prototype.readToken_pipe_amp.call(this, code);
      };
      _proto.parseTopLevel = function parseTopLevel(file, program) {
        var fileNode = _superClass.prototype.parseTopLevel.call(this, file, program);
        if (this.state.hasFlowComment) {
          this.raise(FlowErrors.UnterminatedFlowComment, this.state.curPosition());
        }
        return fileNode;
      };
      _proto.skipBlockComment = function skipBlockComment() {
        if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
          if (this.state.hasFlowComment) {
            throw this.raise(FlowErrors.NestedFlowComment, this.state.startLoc);
          }
          this.hasFlowCommentCompletion();
          var commentSkip = this.skipFlowComment();
          if (commentSkip) {
            this.state.pos += commentSkip;
            this.state.hasFlowComment = true;
          }
          return;
        }
        return _superClass.prototype.skipBlockComment.call(this, this.state.hasFlowComment ? "*-/" : "*/");
      };
      _proto.skipFlowComment = function skipFlowComment() {
        var pos = this.state.pos;
        var shiftToFirstNonWhiteSpace = 2;
        while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {
          shiftToFirstNonWhiteSpace++;
        }
        var ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);
        var ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);
        if (ch2 === 58 && ch3 === 58) {
          return shiftToFirstNonWhiteSpace + 2;
        }
        if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {
          return shiftToFirstNonWhiteSpace + 12;
        }
        if (ch2 === 58 && ch3 !== 58) {
          return shiftToFirstNonWhiteSpace;
        }
        return false;
      };
      _proto.hasFlowCommentCompletion = function hasFlowCommentCompletion() {
        var end = this.input.indexOf("*/", this.state.pos);
        if (end === -1) {
          throw this.raise(Errors.UnterminatedComment, this.state.curPosition());
        }
      };
      _proto.flowEnumErrorBooleanMemberNotInitialized = function flowEnumErrorBooleanMemberNotInitialized(loc, _ref16) {
        var enumName = _ref16.enumName,
          memberName = _ref16.memberName;
        this.raise(FlowErrors.EnumBooleanMemberNotInitialized, loc, {
          memberName: memberName,
          enumName: enumName
        });
      };
      _proto.flowEnumErrorInvalidMemberInitializer = function flowEnumErrorInvalidMemberInitializer(loc, enumContext) {
        return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, loc, enumContext);
      };
      _proto.flowEnumErrorNumberMemberNotInitialized = function flowEnumErrorNumberMemberNotInitialized(loc, details) {
        this.raise(FlowErrors.EnumNumberMemberNotInitialized, loc, details);
      };
      _proto.flowEnumErrorStringMemberInconsistentlyInitialized = function flowEnumErrorStringMemberInconsistentlyInitialized(node, details) {
        this.raise(FlowErrors.EnumStringMemberInconsistentlyInitialized, node, details);
      };
      _proto.flowEnumMemberInit = function flowEnumMemberInit() {
        var _this12 = this;
        var startLoc = this.state.startLoc;
        var endOfInit = function endOfInit() {
          return _this12.match(12) || _this12.match(8);
        };
        switch (this.state.type) {
          case 134:
            {
              var literal = this.parseNumericLiteral(this.state.value);
              if (endOfInit()) {
                return {
                  type: "number",
                  loc: literal.loc.start,
                  value: literal
                };
              }
              return {
                type: "invalid",
                loc: startLoc
              };
            }
          case 133:
            {
              var _literal = this.parseStringLiteral(this.state.value);
              if (endOfInit()) {
                return {
                  type: "string",
                  loc: _literal.loc.start,
                  value: _literal
                };
              }
              return {
                type: "invalid",
                loc: startLoc
              };
            }
          case 85:
          case 86:
            {
              var _literal2 = this.parseBooleanLiteral(this.match(85));
              if (endOfInit()) {
                return {
                  type: "boolean",
                  loc: _literal2.loc.start,
                  value: _literal2
                };
              }
              return {
                type: "invalid",
                loc: startLoc
              };
            }
          default:
            return {
              type: "invalid",
              loc: startLoc
            };
        }
      };
      _proto.flowEnumMemberRaw = function flowEnumMemberRaw() {
        var loc = this.state.startLoc;
        var id = this.parseIdentifier(true);
        var init = this.eat(29) ? this.flowEnumMemberInit() : {
          type: "none",
          loc: loc
        };
        return {
          id: id,
          init: init
        };
      };
      _proto.flowEnumCheckExplicitTypeMismatch = function flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {
        var explicitType = context.explicitType;
        if (explicitType === null) {
          return;
        }
        if (explicitType !== expectedType) {
          this.flowEnumErrorInvalidMemberInitializer(loc, context);
        }
      };
      _proto.flowEnumMembers = function flowEnumMembers(_ref17) {
        var enumName = _ref17.enumName,
          explicitType = _ref17.explicitType;
        var seenNames = new Set();
        var members = {
          booleanMembers: [],
          numberMembers: [],
          stringMembers: [],
          defaultedMembers: []
        };
        var hasUnknownMembers = false;
        while (!this.match(8)) {
          if (this.eat(21)) {
            hasUnknownMembers = true;
            break;
          }
          var memberNode = this.startNode();
          var _this$flowEnumMemberR = this.flowEnumMemberRaw(),
            id = _this$flowEnumMemberR.id,
            init = _this$flowEnumMemberR.init;
          var memberName = id.name;
          if (memberName === "") {
            continue;
          }
          if (/^[a-z]/.test(memberName)) {
            this.raise(FlowErrors.EnumInvalidMemberName, id, {
              memberName: memberName,
              suggestion: memberName[0].toUpperCase() + memberName.slice(1),
              enumName: enumName
            });
          }
          if (seenNames.has(memberName)) {
            this.raise(FlowErrors.EnumDuplicateMemberName, id, {
              memberName: memberName,
              enumName: enumName
            });
          }
          seenNames.add(memberName);
          var context = {
            enumName: enumName,
            explicitType: explicitType,
            memberName: memberName
          };
          memberNode.id = id;
          switch (init.type) {
            case "boolean":
              {
                this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean");
                memberNode.init = init.value;
                members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));
                break;
              }
            case "number":
              {
                this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number");
                memberNode.init = init.value;
                members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));
                break;
              }
            case "string":
              {
                this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string");
                memberNode.init = init.value;
                members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));
                break;
              }
            case "invalid":
              {
                throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);
              }
            case "none":
              {
                switch (explicitType) {
                  case "boolean":
                    this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);
                    break;
                  case "number":
                    this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);
                    break;
                  default:
                    members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));
                }
              }
          }
          if (!this.match(8)) {
            this.expect(12);
          }
        }
        return {
          members: members,
          hasUnknownMembers: hasUnknownMembers
        };
      };
      _proto.flowEnumStringMembers = function flowEnumStringMembers(initializedMembers, defaultedMembers, _ref18) {
        var enumName = _ref18.enumName;
        if (initializedMembers.length === 0) {
          return defaultedMembers;
        } else if (defaultedMembers.length === 0) {
          return initializedMembers;
        } else if (defaultedMembers.length > initializedMembers.length) {
          for (var _i2 = 0; _i2 < initializedMembers.length; _i2++) {
            var member = initializedMembers[_i2];
            this.flowEnumErrorStringMemberInconsistentlyInitialized(member, {
              enumName: enumName
            });
          }
          return defaultedMembers;
        } else {
          for (var _i4 = 0; _i4 < defaultedMembers.length; _i4++) {
            var _member = defaultedMembers[_i4];
            this.flowEnumErrorStringMemberInconsistentlyInitialized(_member, {
              enumName: enumName
            });
          }
          return initializedMembers;
        }
      };
      _proto.flowEnumParseExplicitType = function flowEnumParseExplicitType(_ref19) {
        var enumName = _ref19.enumName;
        if (!this.eatContextual(102)) return null;
        if (!tokenIsIdentifier(this.state.type)) {
          throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, this.state.startLoc, {
            enumName: enumName
          });
        }
        var value = this.state.value;
        this.next();
        if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {
          this.raise(FlowErrors.EnumInvalidExplicitType, this.state.startLoc, {
            enumName: enumName,
            invalidEnumType: value
          });
        }
        return value;
      };
      _proto.flowEnumBody = function flowEnumBody(node, id) {
        var _this13 = this;
        var enumName = id.name;
        var nameLoc = id.loc.start;
        var explicitType = this.flowEnumParseExplicitType({
          enumName: enumName
        });
        this.expect(5);
        var _this$flowEnumMembers = this.flowEnumMembers({
            enumName: enumName,
            explicitType: explicitType
          }),
          members = _this$flowEnumMembers.members,
          hasUnknownMembers = _this$flowEnumMembers.hasUnknownMembers;
        node.hasUnknownMembers = hasUnknownMembers;
        switch (explicitType) {
          case "boolean":
            node.explicitType = true;
            node.members = members.booleanMembers;
            this.expect(8);
            return this.finishNode(node, "EnumBooleanBody");
          case "number":
            node.explicitType = true;
            node.members = members.numberMembers;
            this.expect(8);
            return this.finishNode(node, "EnumNumberBody");
          case "string":
            node.explicitType = true;
            node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
              enumName: enumName
            });
            this.expect(8);
            return this.finishNode(node, "EnumStringBody");
          case "symbol":
            node.members = members.defaultedMembers;
            this.expect(8);
            return this.finishNode(node, "EnumSymbolBody");
          default:
            {
              var empty = function empty() {
                node.members = [];
                _this13.expect(8);
                return _this13.finishNode(node, "EnumStringBody");
              };
              node.explicitType = false;
              var boolsLen = members.booleanMembers.length;
              var numsLen = members.numberMembers.length;
              var strsLen = members.stringMembers.length;
              var defaultedLen = members.defaultedMembers.length;
              if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {
                return empty();
              } else if (!boolsLen && !numsLen) {
                node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
                  enumName: enumName
                });
                this.expect(8);
                return this.finishNode(node, "EnumStringBody");
              } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
                for (var _i6 = 0, _members$defaultedMem2 = members.defaultedMembers; _i6 < _members$defaultedMem2.length; _i6++) {
                  var member = _members$defaultedMem2[_i6];
                  this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {
                    enumName: enumName,
                    memberName: member.id.name
                  });
                }
                node.members = members.booleanMembers;
                this.expect(8);
                return this.finishNode(node, "EnumBooleanBody");
              } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
                for (var _i8 = 0, _members$defaultedMem4 = members.defaultedMembers; _i8 < _members$defaultedMem4.length; _i8++) {
                  var _member2 = _members$defaultedMem4[_i8];
                  this.flowEnumErrorNumberMemberNotInitialized(_member2.loc.start, {
                    enumName: enumName,
                    memberName: _member2.id.name
                  });
                }
                node.members = members.numberMembers;
                this.expect(8);
                return this.finishNode(node, "EnumNumberBody");
              } else {
                this.raise(FlowErrors.EnumInconsistentMemberValues, nameLoc, {
                  enumName: enumName
                });
                return empty();
              }
            }
        }
      };
      _proto.flowParseEnumDeclaration = function flowParseEnumDeclaration(node) {
        var id = this.parseIdentifier();
        node.id = id;
        node.body = this.flowEnumBody(this.startNode(), id);
        return this.finishNode(node, "EnumDeclaration");
      };
      _proto.isLookaheadToken_lt = function isLookaheadToken_lt() {
        var next = this.nextTokenStart();
        if (this.input.charCodeAt(next) === 60) {
          var afterNext = this.input.charCodeAt(next + 1);
          return afterNext !== 60 && afterNext !== 61;
        }
        return false;
      };
      _proto.maybeUnwrapTypeCastExpression = function maybeUnwrapTypeCastExpression(node) {
        return node.type === "TypeCastExpression" ? node.expression : node;
      };
      return _createClass(FlowParserMixin);
    }(superClass);
  });

  var entities = {
    __proto__: null,
    quot: "\"",
    amp: "&",
    apos: "'",
    lt: "<",
    gt: ">",
    nbsp: "\xA0",
    iexcl: "\xA1",
    cent: "\xA2",
    pound: "\xA3",
    curren: "\xA4",
    yen: "\xA5",
    brvbar: "\xA6",
    sect: "\xA7",
    uml: "\xA8",
    copy: "\xA9",
    ordf: "\xAA",
    laquo: "\xAB",
    not: "\xAC",
    shy: "\xAD",
    reg: "\xAE",
    macr: "\xAF",
    deg: "\xB0",
    plusmn: "\xB1",
    sup2: "\xB2",
    sup3: "\xB3",
    acute: "\xB4",
    micro: "\xB5",
    para: "\xB6",
    middot: "\xB7",
    cedil: "\xB8",
    sup1: "\xB9",
    ordm: "\xBA",
    raquo: "\xBB",
    frac14: "\xBC",
    frac12: "\xBD",
    frac34: "\xBE",
    iquest: "\xBF",
    Agrave: "\xC0",
    Aacute: "\xC1",
    Acirc: "\xC2",
    Atilde: "\xC3",
    Auml: "\xC4",
    Aring: "\xC5",
    AElig: "\xC6",
    Ccedil: "\xC7",
    Egrave: "\xC8",
    Eacute: "\xC9",
    Ecirc: "\xCA",
    Euml: "\xCB",
    Igrave: "\xCC",
    Iacute: "\xCD",
    Icirc: "\xCE",
    Iuml: "\xCF",
    ETH: "\xD0",
    Ntilde: "\xD1",
    Ograve: "\xD2",
    Oacute: "\xD3",
    Ocirc: "\xD4",
    Otilde: "\xD5",
    Ouml: "\xD6",
    times: "\xD7",
    Oslash: "\xD8",
    Ugrave: "\xD9",
    Uacute: "\xDA",
    Ucirc: "\xDB",
    Uuml: "\xDC",
    Yacute: "\xDD",
    THORN: "\xDE",
    szlig: "\xDF",
    agrave: "\xE0",
    aacute: "\xE1",
    acirc: "\xE2",
    atilde: "\xE3",
    auml: "\xE4",
    aring: "\xE5",
    aelig: "\xE6",
    ccedil: "\xE7",
    egrave: "\xE8",
    eacute: "\xE9",
    ecirc: "\xEA",
    euml: "\xEB",
    igrave: "\xEC",
    iacute: "\xED",
    icirc: "\xEE",
    iuml: "\xEF",
    eth: "\xF0",
    ntilde: "\xF1",
    ograve: "\xF2",
    oacute: "\xF3",
    ocirc: "\xF4",
    otilde: "\xF5",
    ouml: "\xF6",
    divide: "\xF7",
    oslash: "\xF8",
    ugrave: "\xF9",
    uacute: "\xFA",
    ucirc: "\xFB",
    uuml: "\xFC",
    yacute: "\xFD",
    thorn: "\xFE",
    yuml: "\xFF",
    OElig: "\u0152",
    oelig: "\u0153",
    Scaron: "\u0160",
    scaron: "\u0161",
    Yuml: "\u0178",
    fnof: "\u0192",
    circ: "\u02C6",
    tilde: "\u02DC",
    Alpha: "\u0391",
    Beta: "\u0392",
    Gamma: "\u0393",
    Delta: "\u0394",
    Epsilon: "\u0395",
    Zeta: "\u0396",
    Eta: "\u0397",
    Theta: "\u0398",
    Iota: "\u0399",
    Kappa: "\u039A",
    Lambda: "\u039B",
    Mu: "\u039C",
    Nu: "\u039D",
    Xi: "\u039E",
    Omicron: "\u039F",
    Pi: "\u03A0",
    Rho: "\u03A1",
    Sigma: "\u03A3",
    Tau: "\u03A4",
    Upsilon: "\u03A5",
    Phi: "\u03A6",
    Chi: "\u03A7",
    Psi: "\u03A8",
    Omega: "\u03A9",
    alpha: "\u03B1",
    beta: "\u03B2",
    gamma: "\u03B3",
    delta: "\u03B4",
    epsilon: "\u03B5",
    zeta: "\u03B6",
    eta: "\u03B7",
    theta: "\u03B8",
    iota: "\u03B9",
    kappa: "\u03BA",
    lambda: "\u03BB",
    mu: "\u03BC",
    nu: "\u03BD",
    xi: "\u03BE",
    omicron: "\u03BF",
    pi: "\u03C0",
    rho: "\u03C1",
    sigmaf: "\u03C2",
    sigma: "\u03C3",
    tau: "\u03C4",
    upsilon: "\u03C5",
    phi: "\u03C6",
    chi: "\u03C7",
    psi: "\u03C8",
    omega: "\u03C9",
    thetasym: "\u03D1",
    upsih: "\u03D2",
    piv: "\u03D6",
    ensp: "\u2002",
    emsp: "\u2003",
    thinsp: "\u2009",
    zwnj: "\u200C",
    zwj: "\u200D",
    lrm: "\u200E",
    rlm: "\u200F",
    ndash: "\u2013",
    mdash: "\u2014",
    lsquo: "\u2018",
    rsquo: "\u2019",
    sbquo: "\u201A",
    ldquo: "\u201C",
    rdquo: "\u201D",
    bdquo: "\u201E",
    dagger: "\u2020",
    Dagger: "\u2021",
    bull: "\u2022",
    hellip: "\u2026",
    permil: "\u2030",
    prime: "\u2032",
    Prime: "\u2033",
    lsaquo: "\u2039",
    rsaquo: "\u203A",
    oline: "\u203E",
    frasl: "\u2044",
    euro: "\u20AC",
    image: "\u2111",
    weierp: "\u2118",
    real: "\u211C",
    trade: "\u2122",
    alefsym: "\u2135",
    larr: "\u2190",
    uarr: "\u2191",
    rarr: "\u2192",
    darr: "\u2193",
    harr: "\u2194",
    crarr: "\u21B5",
    lArr: "\u21D0",
    uArr: "\u21D1",
    rArr: "\u21D2",
    dArr: "\u21D3",
    hArr: "\u21D4",
    forall: "\u2200",
    part: "\u2202",
    exist: "\u2203",
    empty: "\u2205",
    nabla: "\u2207",
    isin: "\u2208",
    notin: "\u2209",
    ni: "\u220B",
    prod: "\u220F",
    sum: "\u2211",
    minus: "\u2212",
    lowast: "\u2217",
    radic: "\u221A",
    prop: "\u221D",
    infin: "\u221E",
    ang: "\u2220",
    and: "\u2227",
    or: "\u2228",
    cap: "\u2229",
    cup: "\u222A",
    "int": "\u222B",
    there4: "\u2234",
    sim: "\u223C",
    cong: "\u2245",
    asymp: "\u2248",
    ne: "\u2260",
    equiv: "\u2261",
    le: "\u2264",
    ge: "\u2265",
    sub: "\u2282",
    sup: "\u2283",
    nsub: "\u2284",
    sube: "\u2286",
    supe: "\u2287",
    oplus: "\u2295",
    otimes: "\u2297",
    perp: "\u22A5",
    sdot: "\u22C5",
    lceil: "\u2308",
    rceil: "\u2309",
    lfloor: "\u230A",
    rfloor: "\u230B",
    lang: "\u2329",
    rang: "\u232A",
    loz: "\u25CA",
    spades: "\u2660",
    clubs: "\u2663",
    hearts: "\u2665",
    diams: "\u2666"
  };

  var _templateObject$E;
  var JsxErrors = ParseErrorEnum(_templateObject$E || (_templateObject$E = _taggedTemplateLiteralLoose(["jsx"])))({
    AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
    MissingClosingTagElement: function MissingClosingTagElement(_ref) {
      var openingTagName = _ref.openingTagName;
      return "Expected corresponding JSX closing tag for <" + openingTagName + ">.";
    },
    MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",
    UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",
    UnexpectedToken: function UnexpectedToken(_ref2) {
      var unexpected = _ref2.unexpected,
        HTMLEntity = _ref2.HTMLEntity;
      return "Unexpected token `" + unexpected + "`. Did you mean `" + HTMLEntity + "` or `{'" + unexpected + "'}`?";
    },
    UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",
    UnterminatedJsxContent: "Unterminated JSX contents.",
    UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"
  });
  function isFragment(object) {
    return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;
  }
  function getQualifiedJSXName(object) {
    if (object.type === "JSXIdentifier") {
      return object.name;
    }
    if (object.type === "JSXNamespacedName") {
      return object.namespace.name + ":" + object.name.name;
    }
    if (object.type === "JSXMemberExpression") {
      return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
    }
    throw new Error("Node had unexpected type: " + object.type);
  }
  var jsx = (function (superClass) {
    return function (_superClass) {
      function JSXParserMixin() {
        return _superClass.apply(this, arguments) || this;
      }
      _inherits(JSXParserMixin, _superClass);
      var _proto = JSXParserMixin.prototype;
      _proto.jsxReadToken = function jsxReadToken() {
        var out = "";
        var chunkStart = this.state.pos;
        for (;;) {
          if (this.state.pos >= this.length) {
            throw this.raise(JsxErrors.UnterminatedJsxContent, this.state.startLoc);
          }
          var ch = this.input.charCodeAt(this.state.pos);
          switch (ch) {
            case 60:
            case 123:
              if (this.state.pos === this.state.start) {
                if (ch === 60 && this.state.canStartJSXElement) {
                  ++this.state.pos;
                  this.finishToken(142);
                } else {
                  _superClass.prototype.getTokenFromCode.call(this, ch);
                }
                return;
              }
              out += this.input.slice(chunkStart, this.state.pos);
              this.finishToken(141, out);
              return;
            case 38:
              out += this.input.slice(chunkStart, this.state.pos);
              out += this.jsxReadEntity();
              chunkStart = this.state.pos;
              break;
            case 62:
            case 125:
            default:
              if (isNewLine(ch)) {
                out += this.input.slice(chunkStart, this.state.pos);
                out += this.jsxReadNewLine(true);
                chunkStart = this.state.pos;
              } else {
                ++this.state.pos;
              }
          }
        }
      };
      _proto.jsxReadNewLine = function jsxReadNewLine(normalizeCRLF) {
        var ch = this.input.charCodeAt(this.state.pos);
        var out;
        ++this.state.pos;
        if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
          ++this.state.pos;
          out = normalizeCRLF ? "\n" : "\r\n";
        } else {
          out = String.fromCharCode(ch);
        }
        ++this.state.curLine;
        this.state.lineStart = this.state.pos;
        return out;
      };
      _proto.jsxReadString = function jsxReadString(quote) {
        var out = "";
        var chunkStart = ++this.state.pos;
        for (;;) {
          if (this.state.pos >= this.length) {
            throw this.raise(Errors.UnterminatedString, this.state.startLoc);
          }
          var ch = this.input.charCodeAt(this.state.pos);
          if (ch === quote) break;
          if (ch === 38) {
            out += this.input.slice(chunkStart, this.state.pos);
            out += this.jsxReadEntity();
            chunkStart = this.state.pos;
          } else if (isNewLine(ch)) {
            out += this.input.slice(chunkStart, this.state.pos);
            out += this.jsxReadNewLine(false);
            chunkStart = this.state.pos;
          } else {
            ++this.state.pos;
          }
        }
        out += this.input.slice(chunkStart, this.state.pos++);
        this.finishToken(133, out);
      };
      _proto.jsxReadEntity = function jsxReadEntity() {
        var startPos = ++this.state.pos;
        if (this.codePointAtPos(this.state.pos) === 35) {
          ++this.state.pos;
          var radix = 10;
          if (this.codePointAtPos(this.state.pos) === 120) {
            radix = 16;
            ++this.state.pos;
          }
          var codePoint = this.readInt(radix, undefined, false, "bail");
          if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {
            ++this.state.pos;
            return String.fromCodePoint(codePoint);
          }
        } else {
          var count = 0;
          var semi = false;
          while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) === 59)) {
            ++this.state.pos;
          }
          if (semi) {
            var desc = this.input.slice(startPos, this.state.pos);
            var entity = entities[desc];
            ++this.state.pos;
            if (entity) {
              return entity;
            }
          }
        }
        this.state.pos = startPos;
        return "&";
      };
      _proto.jsxReadWord = function jsxReadWord() {
        var ch;
        var start = this.state.pos;
        do {
          ch = this.input.charCodeAt(++this.state.pos);
        } while (isIdentifierChar(ch) || ch === 45);
        this.finishToken(140, this.input.slice(start, this.state.pos));
      };
      _proto.jsxParseIdentifier = function jsxParseIdentifier() {
        var node = this.startNode();
        if (this.match(140)) {
          node.name = this.state.value;
        } else if (tokenIsKeyword(this.state.type)) {
          node.name = tokenLabelName(this.state.type);
        } else {
          this.unexpected();
        }
        this.next();
        return this.finishNode(node, "JSXIdentifier");
      };
      _proto.jsxParseNamespacedName = function jsxParseNamespacedName() {
        var startLoc = this.state.startLoc;
        var name = this.jsxParseIdentifier();
        if (!this.eat(14)) return name;
        var node = this.startNodeAt(startLoc);
        node.namespace = name;
        node.name = this.jsxParseIdentifier();
        return this.finishNode(node, "JSXNamespacedName");
      };
      _proto.jsxParseElementName = function jsxParseElementName() {
        var startLoc = this.state.startLoc;
        var node = this.jsxParseNamespacedName();
        if (node.type === "JSXNamespacedName") {
          return node;
        }
        while (this.eat(16)) {
          var newNode = this.startNodeAt(startLoc);
          newNode.object = node;
          newNode.property = this.jsxParseIdentifier();
          node = this.finishNode(newNode, "JSXMemberExpression");
        }
        return node;
      };
      _proto.jsxParseAttributeValue = function jsxParseAttributeValue() {
        var node;
        switch (this.state.type) {
          case 5:
            node = this.startNode();
            this.setContext(types.brace);
            this.next();
            node = this.jsxParseExpressionContainer(node, types.j_oTag);
            if (node.expression.type === "JSXEmptyExpression") {
              this.raise(JsxErrors.AttributeIsEmpty, node);
            }
            return node;
          case 142:
          case 133:
            return this.parseExprAtom();
          default:
            throw this.raise(JsxErrors.UnsupportedJsxValue, this.state.startLoc);
        }
      };
      _proto.jsxParseEmptyExpression = function jsxParseEmptyExpression() {
        var node = this.startNodeAt(this.state.lastTokEndLoc);
        return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc);
      };
      _proto.jsxParseSpreadChild = function jsxParseSpreadChild(node) {
        this.next();
        node.expression = this.parseExpression();
        this.setContext(types.j_expr);
        this.state.canStartJSXElement = true;
        this.expect(8);
        return this.finishNode(node, "JSXSpreadChild");
      };
      _proto.jsxParseExpressionContainer = function jsxParseExpressionContainer(node, previousContext) {
        if (this.match(8)) {
          node.expression = this.jsxParseEmptyExpression();
        } else {
          var expression = this.parseExpression();
          node.expression = expression;
        }
        this.setContext(previousContext);
        this.state.canStartJSXElement = true;
        this.expect(8);
        return this.finishNode(node, "JSXExpressionContainer");
      };
      _proto.jsxParseAttribute = function jsxParseAttribute() {
        var node = this.startNode();
        if (this.match(5)) {
          this.setContext(types.brace);
          this.next();
          this.expect(21);
          node.argument = this.parseMaybeAssignAllowIn();
          this.setContext(types.j_oTag);
          this.state.canStartJSXElement = true;
          this.expect(8);
          return this.finishNode(node, "JSXSpreadAttribute");
        }
        node.name = this.jsxParseNamespacedName();
        node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;
        return this.finishNode(node, "JSXAttribute");
      };
      _proto.jsxParseOpeningElementAt = function jsxParseOpeningElementAt(startLoc) {
        var node = this.startNodeAt(startLoc);
        if (this.eat(143)) {
          return this.finishNode(node, "JSXOpeningFragment");
        }
        node.name = this.jsxParseElementName();
        return this.jsxParseOpeningElementAfterName(node);
      };
      _proto.jsxParseOpeningElementAfterName = function jsxParseOpeningElementAfterName(node) {
        var attributes = [];
        while (!this.match(56) && !this.match(143)) {
          attributes.push(this.jsxParseAttribute());
        }
        node.attributes = attributes;
        node.selfClosing = this.eat(56);
        this.expect(143);
        return this.finishNode(node, "JSXOpeningElement");
      };
      _proto.jsxParseClosingElementAt = function jsxParseClosingElementAt(startLoc) {
        var node = this.startNodeAt(startLoc);
        if (this.eat(143)) {
          return this.finishNode(node, "JSXClosingFragment");
        }
        node.name = this.jsxParseElementName();
        this.expect(143);
        return this.finishNode(node, "JSXClosingElement");
      };
      _proto.jsxParseElementAt = function jsxParseElementAt(startLoc) {
        var node = this.startNodeAt(startLoc);
        var children = [];
        var openingElement = this.jsxParseOpeningElementAt(startLoc);
        var closingElement = null;
        if (!openingElement.selfClosing) {
          contents: for (;;) {
            switch (this.state.type) {
              case 142:
                startLoc = this.state.startLoc;
                this.next();
                if (this.eat(56)) {
                  closingElement = this.jsxParseClosingElementAt(startLoc);
                  break contents;
                }
                children.push(this.jsxParseElementAt(startLoc));
                break;
              case 141:
                children.push(this.parseLiteral(this.state.value, "JSXText"));
                break;
              case 5:
                {
                  var _node = this.startNode();
                  this.setContext(types.brace);
                  this.next();
                  if (this.match(21)) {
                    children.push(this.jsxParseSpreadChild(_node));
                  } else {
                    children.push(this.jsxParseExpressionContainer(_node, types.j_expr));
                  }
                  break;
                }
              default:
                this.unexpected();
            }
          }
          if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {
            this.raise(JsxErrors.MissingClosingTagFragment, closingElement);
          } else if (!isFragment(openingElement) && isFragment(closingElement)) {
            this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
              openingTagName: getQualifiedJSXName(openingElement.name)
            });
          } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
            if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
              this.raise(JsxErrors.MissingClosingTagElement, closingElement, {
                openingTagName: getQualifiedJSXName(openingElement.name)
              });
            }
          }
        }
        if (isFragment(openingElement)) {
          node.openingFragment = openingElement;
          node.closingFragment = closingElement;
        } else {
          node.openingElement = openingElement;
          node.closingElement = closingElement;
        }
        node.children = children;
        if (this.match(47)) {
          throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, this.state.startLoc);
        }
        return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");
      };
      _proto.jsxParseElement = function jsxParseElement() {
        var startLoc = this.state.startLoc;
        this.next();
        return this.jsxParseElementAt(startLoc);
      };
      _proto.setContext = function setContext(newContext) {
        var context = this.state.context;
        context[context.length - 1] = newContext;
      };
      _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
        if (this.match(142)) {
          return this.jsxParseElement();
        } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {
          this.replaceToken(142);
          return this.jsxParseElement();
        } else {
          return _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
        }
      };
      _proto.skipSpace = function skipSpace() {
        var curContext = this.curContext();
        if (!curContext.preserveSpace) _superClass.prototype.skipSpace.call(this);
      };
      _proto.getTokenFromCode = function getTokenFromCode(code) {
        var context = this.curContext();
        if (context === types.j_expr) {
          this.jsxReadToken();
          return;
        }
        if (context === types.j_oTag || context === types.j_cTag) {
          if (isIdentifierStart(code)) {
            this.jsxReadWord();
            return;
          }
          if (code === 62) {
            ++this.state.pos;
            this.finishToken(143);
            return;
          }
          if ((code === 34 || code === 39) && context === types.j_oTag) {
            this.jsxReadString(code);
            return;
          }
        }
        if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
          ++this.state.pos;
          this.finishToken(142);
          return;
        }
        _superClass.prototype.getTokenFromCode.call(this, code);
      };
      _proto.updateContext = function updateContext(prevType) {
        var _this$state = this.state,
          context = _this$state.context,
          type = _this$state.type;
        if (type === 56 && prevType === 142) {
          context.splice(-2, 2, types.j_cTag);
          this.state.canStartJSXElement = false;
        } else if (type === 142) {
          context.push(types.j_oTag);
        } else if (type === 143) {
          var out = context[context.length - 1];
          if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {
            context.pop();
            this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;
          } else {
            this.setContext(types.j_expr);
            this.state.canStartJSXElement = true;
          }
        } else {
          this.state.canStartJSXElement = tokenComesBeforeExpression(type);
        }
      };
      return _createClass(JSXParserMixin);
    }(superClass);
  });

  var TypeScriptScope = function (_Scope) {
    function TypeScriptScope() {
      var _this;
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
      _this = _Scope.call.apply(_Scope, [this].concat(args)) || this;
      _this.tsNames = new Map();
      return _this;
    }
    _inherits(TypeScriptScope, _Scope);
    return _createClass(TypeScriptScope);
  }(Scope$2);
  var TypeScriptScopeHandler = function (_ScopeHandler) {
    function TypeScriptScopeHandler() {
      var _this2;
      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        args[_key2] = arguments[_key2];
      }
      _this2 = _ScopeHandler.call.apply(_ScopeHandler, [this].concat(args)) || this;
      _this2.importsStack = [];
      return _this2;
    }
    _inherits(TypeScriptScopeHandler, _ScopeHandler);
    var _proto = TypeScriptScopeHandler.prototype;
    _proto.createScope = function createScope(flags) {
      this.importsStack.push(new Set());
      return new TypeScriptScope(flags);
    };
    _proto.enter = function enter(flags) {
      if (flags === ScopeFlag.TS_MODULE) {
        this.importsStack.push(new Set());
      }
      _ScopeHandler.prototype.enter.call(this, flags);
    };
    _proto.exit = function exit() {
      var flags = _ScopeHandler.prototype.exit.call(this);
      if (flags === ScopeFlag.TS_MODULE) {
        this.importsStack.pop();
      }
      return flags;
    };
    _proto.hasImport = function hasImport(name, allowShadow) {
      var len = this.importsStack.length;
      if (this.importsStack[len - 1].has(name)) {
        return true;
      }
      if (!allowShadow && len > 1) {
        for (var i = 0; i < len - 1; i++) {
          if (this.importsStack[i].has(name)) return true;
        }
      }
      return false;
    };
    _proto.declareName = function declareName(name, bindingType, loc) {
      if (bindingType & BindingFlag.FLAG_TS_IMPORT) {
        if (this.hasImport(name, true)) {
          this.parser.raise(Errors.VarRedeclaration, loc, {
            identifierName: name
          });
        }
        this.importsStack[this.importsStack.length - 1].add(name);
        return;
      }
      var scope = this.currentScope();
      var type = scope.tsNames.get(name) || 0;
      if (bindingType & BindingFlag.FLAG_TS_EXPORT_ONLY) {
        this.maybeExportDefined(scope, name);
        scope.tsNames.set(name, type | 16);
        return;
      }
      _ScopeHandler.prototype.declareName.call(this, name, bindingType, loc);
      if (bindingType & BindingFlag.KIND_TYPE) {
        if (!(bindingType & BindingFlag.KIND_VALUE)) {
          this.checkRedeclarationInScope(scope, name, bindingType, loc);
          this.maybeExportDefined(scope, name);
        }
        type = type | 1;
      }
      if (bindingType & BindingFlag.FLAG_TS_ENUM) {
        type = type | 2;
      }
      if (bindingType & BindingFlag.FLAG_TS_CONST_ENUM) {
        type = type | 4;
      }
      if (bindingType & BindingFlag.FLAG_CLASS) {
        type = type | 8;
      }
      if (type) scope.tsNames.set(name, type);
    };
    _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
      var type = scope.tsNames.get(name);
      if ((type & 2) > 0) {
        if (bindingType & BindingFlag.FLAG_TS_ENUM) {
          var isConst = !!(bindingType & BindingFlag.FLAG_TS_CONST_ENUM);
          var wasConst = (type & 4) > 0;
          return isConst !== wasConst;
        }
        return true;
      }
      if (bindingType & BindingFlag.FLAG_CLASS && (type & 8) > 0) {
        if (scope.names.get(name) & NameType.Lexical) {
          return !!(bindingType & BindingFlag.KIND_VALUE);
        } else {
          return false;
        }
      }
      if (bindingType & BindingFlag.KIND_TYPE && (type & 1) > 0) {
        return true;
      }
      return _ScopeHandler.prototype.isRedeclaredInScope.call(this, scope, name, bindingType);
    };
    _proto.checkLocalExport = function checkLocalExport(id) {
      var name = id.name;
      if (this.hasImport(name)) return;
      var len = this.scopeStack.length;
      for (var i = len - 1; i >= 0; i--) {
        var scope = this.scopeStack[i];
        var type = scope.tsNames.get(name);
        if ((type & 1) > 0 || (type & 16) > 0) {
          return;
        }
      }
      _ScopeHandler.prototype.checkLocalExport.call(this, id);
    };
    return _createClass(TypeScriptScopeHandler);
  }(ScopeHandler);

  var _unwrapParenthesizedExpression = function unwrapParenthesizedExpression(node) {
    return node.type === "ParenthesizedExpression" ? _unwrapParenthesizedExpression(node.expression) : node;
  };
  var ParseBindingListFlags = {
    ALLOW_EMPTY: 1,
    IS_FUNCTION_PARAMS: 2,
    IS_CONSTRUCTOR_PARAMS: 4
  };
  var LValParser = function (_NodeUtils) {
    function LValParser() {
      return _NodeUtils.apply(this, arguments) || this;
    }
    _inherits(LValParser, _NodeUtils);
    var _proto = LValParser.prototype;
    _proto.toAssignable = function toAssignable(node, isLHS) {
      var _node$extra, _node$extra3;
      if (isLHS === void 0) {
        isLHS = false;
      }
      var parenthesized = undefined;
      if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {
        parenthesized = _unwrapParenthesizedExpression(node);
        if (isLHS) {
          if (parenthesized.type === "Identifier") {
            this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, node);
          } else if (parenthesized.type !== "MemberExpression" && !this.isOptionalMemberExpression(parenthesized)) {
            this.raise(Errors.InvalidParenthesizedAssignment, node);
          }
        } else {
          this.raise(Errors.InvalidParenthesizedAssignment, node);
        }
      }
      switch (node.type) {
        case "Identifier":
        case "ObjectPattern":
        case "ArrayPattern":
        case "AssignmentPattern":
        case "RestElement":
          break;
        case "ObjectExpression":
          node.type = "ObjectPattern";
          for (var i = 0, length = node.properties.length, last = length - 1; i < length; i++) {
            var _node$extra2;
            var _prop = node.properties[i];
            var isLast = i === last;
            this.toAssignableObjectExpressionProp(_prop, isLast, isLHS);
            if (isLast && _prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {
              this.raise(Errors.RestTrailingComma, node.extra.trailingCommaLoc);
            }
          }
          break;
        case "ObjectProperty":
          {
            var key = node.key,
              value = node.value;
            if (this.isPrivateName(key)) {
              this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
            }
            this.toAssignable(value, isLHS);
            break;
          }
        case "SpreadElement":
          {
            throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller.");
          }
        case "ArrayExpression":
          node.type = "ArrayPattern";
          this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);
          break;
        case "AssignmentExpression":
          if (node.operator !== "=") {
            this.raise(Errors.MissingEqInAssignment, node.left.loc.end);
          }
          node.type = "AssignmentPattern";
          delete node.operator;
          this.toAssignable(node.left, isLHS);
          break;
        case "ParenthesizedExpression":
          this.toAssignable(parenthesized, isLHS);
          break;
      }
    };
    _proto.toAssignableObjectExpressionProp = function toAssignableObjectExpressionProp(prop, isLast, isLHS) {
      if (prop.type === "ObjectMethod") {
        this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, prop.key);
      } else if (prop.type === "SpreadElement") {
        prop.type = "RestElement";
        var arg = prop.argument;
        this.checkToRestConversion(arg, false);
        this.toAssignable(arg, isLHS);
        if (!isLast) {
          this.raise(Errors.RestTrailingComma, prop);
        }
      } else {
        this.toAssignable(prop, isLHS);
      }
    };
    _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
      var end = exprList.length - 1;
      for (var i = 0; i <= end; i++) {
        var elt = exprList[i];
        if (!elt) continue;
        if (elt.type === "SpreadElement") {
          elt.type = "RestElement";
          var arg = elt.argument;
          this.checkToRestConversion(arg, true);
          this.toAssignable(arg, isLHS);
        } else {
          this.toAssignable(elt, isLHS);
        }
        if (elt.type === "RestElement") {
          if (i < end) {
            this.raise(Errors.RestTrailingComma, elt);
          } else if (trailingCommaLoc) {
            this.raise(Errors.RestTrailingComma, trailingCommaLoc);
          }
        }
      }
    };
    _proto.isAssignable = function isAssignable(node, isBinding) {
      var _this = this;
      switch (node.type) {
        case "Identifier":
        case "ObjectPattern":
        case "ArrayPattern":
        case "AssignmentPattern":
        case "RestElement":
          return true;
        case "ObjectExpression":
          {
            var last = node.properties.length - 1;
            return node.properties.every(function (prop, i) {
              return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && _this.isAssignable(prop);
            });
          }
        case "ObjectProperty":
          return this.isAssignable(node.value);
        case "SpreadElement":
          return this.isAssignable(node.argument);
        case "ArrayExpression":
          return node.elements.every(function (element) {
            return element === null || _this.isAssignable(element);
          });
        case "AssignmentExpression":
          return node.operator === "=";
        case "ParenthesizedExpression":
          return this.isAssignable(node.expression);
        case "MemberExpression":
        case "OptionalMemberExpression":
          return !isBinding;
        default:
          return false;
      }
    };
    _proto.toReferencedList = function toReferencedList(exprList, isParenthesizedExpr) {
      return exprList;
    };
    _proto.toReferencedListDeep = function toReferencedListDeep(exprList, isParenthesizedExpr) {
      this.toReferencedList(exprList, isParenthesizedExpr);
      for (var _i2 = 0; _i2 < exprList.length; _i2++) {
        var expr = exprList[_i2];
        if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {
          this.toReferencedListDeep(expr.elements);
        }
      }
    };
    _proto.parseSpread = function parseSpread(refExpressionErrors) {
      var node = this.startNode();
      this.next();
      node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);
      return this.finishNode(node, "SpreadElement");
    };
    _proto.parseRestBinding = function parseRestBinding() {
      var node = this.startNode();
      this.next();
      node.argument = this.parseBindingAtom();
      return this.finishNode(node, "RestElement");
    };
    _proto.parseBindingAtom = function parseBindingAtom() {
      switch (this.state.type) {
        case 0:
          {
            var node = this.startNode();
            this.next();
            node.elements = this.parseBindingList(3, 93, ParseBindingListFlags.ALLOW_EMPTY);
            return this.finishNode(node, "ArrayPattern");
          }
        case 5:
          return this.parseObjectLike(8, true);
      }
      return this.parseIdentifier();
    };
    _proto.parseBindingList = function parseBindingList(close, closeCharCode, flags) {
      var allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;
      var elts = [];
      var first = true;
      while (!this.eat(close)) {
        if (first) {
          first = false;
        } else {
          this.expect(12);
        }
        if (allowEmpty && this.match(12)) {
          elts.push(null);
        } else if (this.eat(close)) {
          break;
        } else if (this.match(21)) {
          elts.push(this.parseAssignableListItemTypes(this.parseRestBinding(), flags));
          if (!this.checkCommaAfterRest(closeCharCode)) {
            this.expect(close);
            break;
          }
        } else {
          var decorators = [];
          if (this.match(26) && this.hasPlugin("decorators")) {
            this.raise(Errors.UnsupportedParameterDecorator, this.state.startLoc);
          }
          while (this.match(26)) {
            decorators.push(this.parseDecorator());
          }
          elts.push(this.parseAssignableListItem(flags, decorators));
        }
      }
      return elts;
    };
    _proto.parseBindingRestProperty = function parseBindingRestProperty(prop) {
      this.next();
      prop.argument = this.parseIdentifier();
      this.checkCommaAfterRest(125);
      return this.finishNode(prop, "RestElement");
    };
    _proto.parseBindingProperty = function parseBindingProperty() {
      var _this$state = this.state,
        type = _this$state.type,
        startLoc = _this$state.startLoc;
      if (type === 21) {
        return this.parseBindingRestProperty(this.startNode());
      }
      var prop = this.startNode();
      if (type === 138) {
        this.expectPlugin("destructuringPrivate", startLoc);
        this.classScope.usePrivateName(this.state.value, startLoc);
        prop.key = this.parsePrivateName();
      } else {
        this.parsePropertyName(prop);
      }
      prop.method = false;
      return this.parseObjPropValue(prop, startLoc, false, false, true, false);
    };
    _proto.parseAssignableListItem = function parseAssignableListItem(flags, decorators) {
      var left = this.parseMaybeDefault();
      this.parseAssignableListItemTypes(left, flags);
      var elt = this.parseMaybeDefault(left.loc.start, left);
      if (decorators.length) {
        left.decorators = decorators;
      }
      return elt;
    };
    _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param, flags) {
      return param;
    };
    _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
      var _startLoc, _left;
      (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc;
      left = (_left = left) != null ? _left : this.parseBindingAtom();
      if (!this.eat(29)) return left;
      var node = this.startNodeAt(startLoc);
      node.left = left;
      node.right = this.parseMaybeAssignAllowIn();
      return this.finishNode(node, "AssignmentPattern");
    };
    _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
      switch (type) {
        case "AssignmentPattern":
          return "left";
        case "RestElement":
          return "argument";
        case "ObjectProperty":
          return "value";
        case "ParenthesizedExpression":
          return "expression";
        case "ArrayPattern":
          return "elements";
        case "ObjectPattern":
          return "properties";
      }
      return false;
    };
    _proto.isOptionalMemberExpression = function isOptionalMemberExpression(expression) {
      return expression.type === "OptionalMemberExpression";
    };
    _proto.checkLVal = function checkLVal(expression, ancestor, binding, checkClashes, strictModeChanged, hasParenthesizedAncestor) {
      var _expression$extra;
      if (binding === void 0) {
        binding = BindingFlag.TYPE_NONE;
      }
      if (checkClashes === void 0) {
        checkClashes = false;
      }
      if (strictModeChanged === void 0) {
        strictModeChanged = false;
      }
      if (hasParenthesizedAncestor === void 0) {
        hasParenthesizedAncestor = false;
      }
      var type = expression.type;
      if (this.isObjectMethod(expression)) return;
      var isOptionalMemberExpression = this.isOptionalMemberExpression(expression);
      if (isOptionalMemberExpression || type === "MemberExpression") {
        if (isOptionalMemberExpression) {
          this.expectPlugin("optionalChainingAssign", expression.loc.start);
          if (ancestor.type !== "AssignmentExpression") {
            this.raise(Errors.InvalidLhsOptionalChaining, expression, {
              ancestor: ancestor
            });
          }
        }
        if (binding !== BindingFlag.TYPE_NONE) {
          this.raise(Errors.InvalidPropertyBindingPattern, expression);
        }
        return;
      }
      if (type === "Identifier") {
        this.checkIdentifier(expression, binding, strictModeChanged);
        var name = expression.name;
        if (checkClashes) {
          if (checkClashes.has(name)) {
            this.raise(Errors.ParamDupe, expression);
          } else {
            checkClashes.add(name);
          }
        }
        return;
      }
      var validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding);
      if (validity === true) return;
      if (validity === false) {
        var ParseErrorClass = binding === BindingFlag.TYPE_NONE ? Errors.InvalidLhs : Errors.InvalidLhsBinding;
        this.raise(ParseErrorClass, expression, {
          ancestor: ancestor
        });
        return;
      }
      var key, isParenthesizedExpression;
      if (typeof validity === "string") {
        key = validity;
        isParenthesizedExpression = type === "ParenthesizedExpression";
      } else {
        key = validity[0];
        isParenthesizedExpression = validity[1];
      }
      var nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" ? {
        type: type
      } : ancestor;
      var val = expression[key];
      if (Array.isArray(val)) {
        for (var _i4 = 0; _i4 < val.length; _i4++) {
          var child = val[_i4];
          if (child) {
            this.checkLVal(child, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression);
          }
        }
      } else if (val) {
        this.checkLVal(val, nextAncestor, binding, checkClashes, strictModeChanged, isParenthesizedExpression);
      }
    };
    _proto.checkIdentifier = function checkIdentifier(at, bindingType, strictModeChanged) {
      if (strictModeChanged === void 0) {
        strictModeChanged = false;
      }
      if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {
        if (bindingType === BindingFlag.TYPE_NONE) {
          this.raise(Errors.StrictEvalArguments, at, {
            referenceName: at.name
          });
        } else {
          this.raise(Errors.StrictEvalArgumentsBinding, at, {
            bindingName: at.name
          });
        }
      }
      if (bindingType & BindingFlag.FLAG_NO_LET_IN_LEXICAL && at.name === "let") {
        this.raise(Errors.LetInLexicalBinding, at);
      }
      if (!(bindingType & BindingFlag.TYPE_NONE)) {
        this.declareNameFromIdentifier(at, bindingType);
      }
    };
    _proto.declareNameFromIdentifier = function declareNameFromIdentifier(identifier, binding) {
      this.scope.declareName(identifier.name, binding, identifier.loc.start);
    };
    _proto.checkToRestConversion = function checkToRestConversion(node, allowPattern) {
      switch (node.type) {
        case "ParenthesizedExpression":
          this.checkToRestConversion(node.expression, allowPattern);
          break;
        case "Identifier":
        case "MemberExpression":
          break;
        case "ArrayExpression":
        case "ObjectExpression":
          if (allowPattern) break;
        default:
          this.raise(Errors.InvalidRestAssignmentPattern, node);
      }
    };
    _proto.checkCommaAfterRest = function checkCommaAfterRest(close) {
      if (!this.match(12)) {
        return false;
      }
      this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, this.state.startLoc);
      return true;
    };
    return _createClass(LValParser);
  }(NodeUtils);

  var _templateObject$D;
  function nonNull(x) {
    if (x == null) {
      throw new Error("Unexpected " + x + " value.");
    }
    return x;
  }
  function assert$1(x) {
    if (!x) {
      throw new Error("Assert fail");
    }
  }
  var TSErrors = ParseErrorEnum(_templateObject$D || (_templateObject$D = _taggedTemplateLiteralLoose(["typescript"])))({
    AbstractMethodHasImplementation: function AbstractMethodHasImplementation(_ref) {
      var methodName = _ref.methodName;
      return "Method '" + methodName + "' cannot have an implementation because it is marked abstract.";
    },
    AbstractPropertyHasInitializer: function AbstractPropertyHasInitializer(_ref2) {
      var propertyName = _ref2.propertyName;
      return "Property '" + propertyName + "' cannot have an initializer because it is marked abstract.";
    },
    AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.",
    AccessorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",
    AccessorCannotHaveTypeParameters: "An accessor cannot have type parameters.",
    ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",
    ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",
    ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",
    ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",
    DeclareAccessor: function DeclareAccessor(_ref3) {
      var kind = _ref3.kind;
      return "'declare' is not allowed in " + kind + "ters.";
    },
    DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",
    DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",
    DuplicateAccessibilityModifier: function DuplicateAccessibilityModifier(_ref4) {
      _ref4.modifier;
      return "Accessibility modifier already seen.";
    },
    DuplicateModifier: function DuplicateModifier(_ref5) {
      var modifier = _ref5.modifier;
      return "Duplicate modifier: '" + modifier + "'.";
    },
    EmptyHeritageClauseType: function EmptyHeritageClauseType(_ref6) {
      var token = _ref6.token;
      return "'" + token + "' list cannot be empty.";
    },
    EmptyTypeArguments: "Type argument list cannot be empty.",
    EmptyTypeParameters: "Type parameter list cannot be empty.",
    ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",
    ImportAliasHasImportType: "An import alias can not use 'import type'.",
    ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier",
    IncompatibleModifiers: function IncompatibleModifiers(_ref7) {
      var modifiers = _ref7.modifiers;
      return "'" + modifiers[0] + "' modifier cannot be used with '" + modifiers[1] + "' modifier.";
    },
    IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",
    IndexSignatureHasAccessibility: function IndexSignatureHasAccessibility(_ref8) {
      var modifier = _ref8.modifier;
      return "Index signatures cannot have an accessibility modifier ('" + modifier + "').";
    },
    IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",
    IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",
    IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",
    InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.",
    InvalidModifierOnTypeMember: function InvalidModifierOnTypeMember(_ref9) {
      var modifier = _ref9.modifier;
      return "'" + modifier + "' modifier cannot appear on a type member.";
    },
    InvalidModifierOnTypeParameter: function InvalidModifierOnTypeParameter(_ref10) {
      var modifier = _ref10.modifier;
      return "'" + modifier + "' modifier cannot appear on a type parameter.";
    },
    InvalidModifierOnTypeParameterPositions: function InvalidModifierOnTypeParameterPositions(_ref11) {
      var modifier = _ref11.modifier;
      return "'" + modifier + "' modifier can only appear on a type parameter of a class, interface or type alias.";
    },
    InvalidModifiersOrder: function InvalidModifiersOrder(_ref12) {
      var orderedModifiers = _ref12.orderedModifiers;
      return "'" + orderedModifiers[0] + "' modifier must precede '" + orderedModifiers[1] + "' modifier.";
    },
    InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.",
    InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",
    MissingInterfaceName: "'interface' declarations must be followed by an identifier.",
    NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",
    NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.",
    OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",
    OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",
    PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
    PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",
    PrivateElementHasAccessibility: function PrivateElementHasAccessibility(_ref13) {
      var modifier = _ref13.modifier;
      return "Private elements cannot have an accessibility modifier ('" + modifier + "').";
    },
    ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",
    ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",
    ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",
    SetAccessorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",
    SetAccessorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",
    SetAccessorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",
    SingleTypeParameterWithoutTrailingComma: function SingleTypeParameterWithoutTrailingComma(_ref14) {
      var typeParameterName = _ref14.typeParameterName;
      return "Single type parameter " + typeParameterName + " should have a trailing comma. Example usage: <" + typeParameterName + ",>.";
    },
    StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
    TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",
    TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
    TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
    TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
    TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",
    UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",
    UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",
    UnexpectedTypeAnnotation: "Did not expect a type annotation here.",
    UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",
    UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",
    UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",
    UnsupportedSignatureParameterKind: function UnsupportedSignatureParameterKind(_ref15) {
      var type = _ref15.type;
      return "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got " + type + ".";
    }
  });
  function keywordTypeFromName(value) {
    switch (value) {
      case "any":
        return "TSAnyKeyword";
      case "boolean":
        return "TSBooleanKeyword";
      case "bigint":
        return "TSBigIntKeyword";
      case "never":
        return "TSNeverKeyword";
      case "number":
        return "TSNumberKeyword";
      case "object":
        return "TSObjectKeyword";
      case "string":
        return "TSStringKeyword";
      case "symbol":
        return "TSSymbolKeyword";
      case "undefined":
        return "TSUndefinedKeyword";
      case "unknown":
        return "TSUnknownKeyword";
      default:
        return undefined;
    }
  }
  function tsIsAccessModifier(modifier) {
    return modifier === "private" || modifier === "public" || modifier === "protected";
  }
  function tsIsVarianceAnnotations(modifier) {
    return modifier === "in" || modifier === "out";
  }
  var typescript = (function (superClass) {
    return function (_superClass) {
      function TypeScriptParserMixin() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _superClass.call.apply(_superClass, [this].concat(args)) || this;
        _this.tsParseInOutModifiers = _this.tsParseModifiers.bind(_this, {
          allowedModifiers: ["in", "out"],
          disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"],
          errorTemplate: TSErrors.InvalidModifierOnTypeParameter
        });
        _this.tsParseConstModifier = _this.tsParseModifiers.bind(_this, {
          allowedModifiers: ["const"],
          disallowedModifiers: ["in", "out"],
          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
        });
        _this.tsParseInOutConstModifiers = _this.tsParseModifiers.bind(_this, {
          allowedModifiers: ["in", "out", "const"],
          disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"],
          errorTemplate: TSErrors.InvalidModifierOnTypeParameter
        });
        return _this;
      }
      _inherits(TypeScriptParserMixin, _superClass);
      var _proto = TypeScriptParserMixin.prototype;
      _proto.getScopeHandler = function getScopeHandler() {
        return TypeScriptScopeHandler;
      };
      _proto.tsIsIdentifier = function tsIsIdentifier() {
        return tokenIsIdentifier(this.state.type);
      };
      _proto.tsTokenCanFollowModifier = function tsTokenCanFollowModifier() {
        return this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(138) || this.isLiteralPropertyName();
      };
      _proto.tsNextTokenOnSameLineAndCanFollowModifier = function tsNextTokenOnSameLineAndCanFollowModifier() {
        this.next();
        if (this.hasPrecedingLineBreak()) {
          return false;
        }
        return this.tsTokenCanFollowModifier();
      };
      _proto.tsNextTokenCanFollowModifier = function tsNextTokenCanFollowModifier() {
        if (this.match(106)) {
          this.next();
          return this.tsTokenCanFollowModifier();
        }
        return this.tsNextTokenOnSameLineAndCanFollowModifier();
      };
      _proto.tsParseModifier = function tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {
        if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) {
          return undefined;
        }
        var modifier = this.state.value;
        if (allowedModifiers.includes(modifier)) {
          if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {
            return undefined;
          }
          if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
            return modifier;
          }
        }
        return undefined;
      };
      _proto.tsParseModifiers = function tsParseModifiers(_ref16, modified) {
        var _this2 = this;
        var allowedModifiers = _ref16.allowedModifiers,
          disallowedModifiers = _ref16.disallowedModifiers,
          stopOnStartOfClassStaticBlock = _ref16.stopOnStartOfClassStaticBlock,
          _ref16$errorTemplate = _ref16.errorTemplate,
          errorTemplate = _ref16$errorTemplate === void 0 ? TSErrors.InvalidModifierOnTypeMember : _ref16$errorTemplate;
        var enforceOrder = function enforceOrder(loc, modifier, before, after) {
          if (modifier === before && modified[after]) {
            _this2.raise(TSErrors.InvalidModifiersOrder, loc, {
              orderedModifiers: [before, after]
            });
          }
        };
        var incompatible = function incompatible(loc, modifier, mod1, mod2) {
          if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {
            _this2.raise(TSErrors.IncompatibleModifiers, loc, {
              modifiers: [mod1, mod2]
            });
          }
        };
        for (;;) {
          var startLoc = this.state.startLoc;
          var modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);
          if (!modifier) break;
          if (tsIsAccessModifier(modifier)) {
            if (modified.accessibility) {
              this.raise(TSErrors.DuplicateAccessibilityModifier, startLoc, {
                modifier: modifier
              });
            } else {
              enforceOrder(startLoc, modifier, modifier, "override");
              enforceOrder(startLoc, modifier, modifier, "static");
              enforceOrder(startLoc, modifier, modifier, "readonly");
              modified.accessibility = modifier;
            }
          } else if (tsIsVarianceAnnotations(modifier)) {
            if (modified[modifier]) {
              this.raise(TSErrors.DuplicateModifier, startLoc, {
                modifier: modifier
              });
            }
            modified[modifier] = true;
            enforceOrder(startLoc, modifier, "in", "out");
          } else {
            if (hasOwnProperty.call(modified, modifier)) {
              this.raise(TSErrors.DuplicateModifier, startLoc, {
                modifier: modifier
              });
            } else {
              enforceOrder(startLoc, modifier, "static", "readonly");
              enforceOrder(startLoc, modifier, "static", "override");
              enforceOrder(startLoc, modifier, "override", "readonly");
              enforceOrder(startLoc, modifier, "abstract", "override");
              incompatible(startLoc, modifier, "declare", "override");
              incompatible(startLoc, modifier, "static", "abstract");
            }
            modified[modifier] = true;
          }
          if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {
            this.raise(errorTemplate, startLoc, {
              modifier: modifier
            });
          }
        }
      };
      _proto.tsIsListTerminator = function tsIsListTerminator(kind) {
        switch (kind) {
          case "EnumMembers":
          case "TypeMembers":
            return this.match(8);
          case "HeritageClauseElement":
            return this.match(5);
          case "TupleElementTypes":
            return this.match(3);
          case "TypeParametersOrArguments":
            return this.match(48);
        }
      };
      _proto.tsParseList = function tsParseList(kind, parseElement) {
        var result = [];
        while (!this.tsIsListTerminator(kind)) {
          result.push(parseElement());
        }
        return result;
      };
      _proto.tsParseDelimitedList = function tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {
        return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));
      };
      _proto.tsParseDelimitedListWorker = function tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {
        var result = [];
        var trailingCommaPos = -1;
        for (;;) {
          if (this.tsIsListTerminator(kind)) {
            break;
          }
          trailingCommaPos = -1;
          var element = parseElement();
          if (element == null) {
            return undefined;
          }
          result.push(element);
          if (this.eat(12)) {
            trailingCommaPos = this.state.lastTokStartLoc.index;
            continue;
          }
          if (this.tsIsListTerminator(kind)) {
            break;
          }
          if (expectSuccess) {
            this.expect(12);
          }
          return undefined;
        }
        if (refTrailingCommaPos) {
          refTrailingCommaPos.value = trailingCommaPos;
        }
        return result;
      };
      _proto.tsParseBracketedList = function tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {
        if (!skipFirstToken) {
          if (bracket) {
            this.expect(0);
          } else {
            this.expect(47);
          }
        }
        var result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);
        if (bracket) {
          this.expect(3);
        } else {
          this.expect(48);
        }
        return result;
      };
      _proto.tsParseImportType = function tsParseImportType() {
        var node = this.startNode();
        this.expect(83);
        this.expect(10);
        if (!this.match(133)) {
          this.raise(TSErrors.UnsupportedImportTypeArgument, this.state.startLoc);
        }
        node.argument = _superClass.prototype.parseExprAtom.call(this);
        if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) {
          node.options = null;
        }
        if (this.eat(12)) {
          this.expectImportAttributesPlugin();
          if (!this.match(11)) {
            node.options = _superClass.prototype.parseMaybeAssignAllowIn.call(this);
            this.eat(12);
          }
        }
        this.expect(11);
        if (this.eat(16)) {
          node.qualifier = this.tsParseEntityName();
        }
        if (this.match(47)) {
          node.typeParameters = this.tsParseTypeArguments();
        }
        return this.finishNode(node, "TSImportType");
      };
      _proto.tsParseEntityName = function tsParseEntityName(allowReservedWords) {
        if (allowReservedWords === void 0) {
          allowReservedWords = true;
        }
        var entity = this.parseIdentifier(allowReservedWords);
        while (this.eat(16)) {
          var node = this.startNodeAtNode(entity);
          node.left = entity;
          node.right = this.parseIdentifier(allowReservedWords);
          entity = this.finishNode(node, "TSQualifiedName");
        }
        return entity;
      };
      _proto.tsParseTypeReference = function tsParseTypeReference() {
        var node = this.startNode();
        node.typeName = this.tsParseEntityName();
        if (!this.hasPrecedingLineBreak() && this.match(47)) {
          node.typeParameters = this.tsParseTypeArguments();
        }
        return this.finishNode(node, "TSTypeReference");
      };
      _proto.tsParseThisTypePredicate = function tsParseThisTypePredicate(lhs) {
        this.next();
        var node = this.startNodeAtNode(lhs);
        node.parameterName = lhs;
        node.typeAnnotation = this.tsParseTypeAnnotation(false);
        node.asserts = false;
        return this.finishNode(node, "TSTypePredicate");
      };
      _proto.tsParseThisTypeNode = function tsParseThisTypeNode() {
        var node = this.startNode();
        this.next();
        return this.finishNode(node, "TSThisType");
      };
      _proto.tsParseTypeQuery = function tsParseTypeQuery() {
        var node = this.startNode();
        this.expect(87);
        if (this.match(83)) {
          node.exprName = this.tsParseImportType();
        } else {
          node.exprName = this.tsParseEntityName();
        }
        if (!this.hasPrecedingLineBreak() && this.match(47)) {
          node.typeParameters = this.tsParseTypeArguments();
        }
        return this.finishNode(node, "TSTypeQuery");
      };
      _proto.tsParseTypeParameter = function tsParseTypeParameter(parseModifiers) {
        var node = this.startNode();
        parseModifiers(node);
        node.name = this.tsParseTypeParameterName();
        node.constraint = this.tsEatThenParseType(81);
        node["default"] = this.tsEatThenParseType(29);
        return this.finishNode(node, "TSTypeParameter");
      };
      _proto.tsTryParseTypeParameters = function tsTryParseTypeParameters(parseModifiers) {
        if (this.match(47)) {
          return this.tsParseTypeParameters(parseModifiers);
        }
      };
      _proto.tsParseTypeParameters = function tsParseTypeParameters(parseModifiers) {
        var node = this.startNode();
        if (this.match(47) || this.match(142)) {
          this.next();
        } else {
          this.unexpected();
        }
        var refTrailingCommaPos = {
          value: -1
        };
        node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);
        if (node.params.length === 0) {
          this.raise(TSErrors.EmptyTypeParameters, node);
        }
        if (refTrailingCommaPos.value !== -1) {
          this.addExtra(node, "trailingComma", refTrailingCommaPos.value);
        }
        return this.finishNode(node, "TSTypeParameterDeclaration");
      };
      _proto.tsFillSignature = function tsFillSignature(returnToken, signature) {
        var returnTokenRequired = returnToken === 19;
        var paramsKey = "parameters";
        var returnTypeKey = "typeAnnotation";
        signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
        this.expect(10);
        signature[paramsKey] = this.tsParseBindingListForSignature();
        if (returnTokenRequired) {
          signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
        } else if (this.match(returnToken)) {
          signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
        }
      };
      _proto.tsParseBindingListForSignature = function tsParseBindingListForSignature() {
        var list = _superClass.prototype.parseBindingList.call(this, 11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS);
        for (var _i2 = 0; _i2 < list.length; _i2++) {
          var pattern = list[_i2];
          var type = pattern.type;
          if (type === "AssignmentPattern" || type === "TSParameterProperty") {
            this.raise(TSErrors.UnsupportedSignatureParameterKind, pattern, {
              type: type
            });
          }
        }
        return list;
      };
      _proto.tsParseTypeMemberSemicolon = function tsParseTypeMemberSemicolon() {
        if (!this.eat(12) && !this.isLineTerminator()) {
          this.expect(13);
        }
      };
      _proto.tsParseSignatureMember = function tsParseSignatureMember(kind, node) {
        this.tsFillSignature(14, node);
        this.tsParseTypeMemberSemicolon();
        return this.finishNode(node, kind);
      };
      _proto.tsIsUnambiguouslyIndexSignature = function tsIsUnambiguouslyIndexSignature() {
        this.next();
        if (tokenIsIdentifier(this.state.type)) {
          this.next();
          return this.match(14);
        }
        return false;
      };
      _proto.tsTryParseIndexSignature = function tsTryParseIndexSignature(node) {
        if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
          return;
        }
        this.expect(0);
        var id = this.parseIdentifier();
        id.typeAnnotation = this.tsParseTypeAnnotation();
        this.resetEndLocation(id);
        this.expect(3);
        node.parameters = [id];
        var type = this.tsTryParseTypeAnnotation();
        if (type) node.typeAnnotation = type;
        this.tsParseTypeMemberSemicolon();
        return this.finishNode(node, "TSIndexSignature");
      };
      _proto.tsParsePropertyOrMethodSignature = function tsParsePropertyOrMethodSignature(node, readonly) {
        if (this.eat(17)) node.optional = true;
        var nodeAny = node;
        if (this.match(10) || this.match(47)) {
          if (readonly) {
            this.raise(TSErrors.ReadonlyForMethodSignature, node);
          }
          var method = nodeAny;
          if (method.kind && this.match(47)) {
            this.raise(TSErrors.AccessorCannotHaveTypeParameters, this.state.curPosition());
          }
          this.tsFillSignature(14, method);
          this.tsParseTypeMemberSemicolon();
          var paramsKey = "parameters";
          var returnTypeKey = "typeAnnotation";
          if (method.kind === "get") {
            if (method[paramsKey].length > 0) {
              this.raise(Errors.BadGetterArity, this.state.curPosition());
              if (this.isThisParam(method[paramsKey][0])) {
                this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
              }
            }
          } else if (method.kind === "set") {
            if (method[paramsKey].length !== 1) {
              this.raise(Errors.BadSetterArity, this.state.curPosition());
            } else {
              var firstParameter = method[paramsKey][0];
              if (this.isThisParam(firstParameter)) {
                this.raise(TSErrors.AccessorCannotDeclareThisParameter, this.state.curPosition());
              }
              if (firstParameter.type === "Identifier" && firstParameter.optional) {
                this.raise(TSErrors.SetAccessorCannotHaveOptionalParameter, this.state.curPosition());
              }
              if (firstParameter.type === "RestElement") {
                this.raise(TSErrors.SetAccessorCannotHaveRestParameter, this.state.curPosition());
              }
            }
            if (method[returnTypeKey]) {
              this.raise(TSErrors.SetAccessorCannotHaveReturnType, method[returnTypeKey]);
            }
          } else {
            method.kind = "method";
          }
          return this.finishNode(method, "TSMethodSignature");
        } else {
          var property = nodeAny;
          if (readonly) property.readonly = true;
          var type = this.tsTryParseTypeAnnotation();
          if (type) property.typeAnnotation = type;
          this.tsParseTypeMemberSemicolon();
          return this.finishNode(property, "TSPropertySignature");
        }
      };
      _proto.tsParseTypeMember = function tsParseTypeMember() {
        var node = this.startNode();
        if (this.match(10) || this.match(47)) {
          return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
        }
        if (this.match(77)) {
          var id = this.startNode();
          this.next();
          if (this.match(10) || this.match(47)) {
            return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
          } else {
            node.key = this.createIdentifier(id, "new");
            return this.tsParsePropertyOrMethodSignature(node, false);
          }
        }
        this.tsParseModifiers({
          allowedModifiers: ["readonly"],
          disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"]
        }, node);
        var idx = this.tsTryParseIndexSignature(node);
        if (idx) {
          return idx;
        }
        _superClass.prototype.parsePropertyName.call(this, node);
        if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {
          node.kind = node.key.name;
          _superClass.prototype.parsePropertyName.call(this, node);
        }
        return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);
      };
      _proto.tsParseTypeLiteral = function tsParseTypeLiteral() {
        var node = this.startNode();
        node.members = this.tsParseObjectTypeMembers();
        return this.finishNode(node, "TSTypeLiteral");
      };
      _proto.tsParseObjectTypeMembers = function tsParseObjectTypeMembers() {
        this.expect(5);
        var members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
        this.expect(8);
        return members;
      };
      _proto.tsIsStartOfMappedType = function tsIsStartOfMappedType() {
        this.next();
        if (this.eat(53)) {
          return this.isContextual(122);
        }
        if (this.isContextual(122)) {
          this.next();
        }
        if (!this.match(0)) {
          return false;
        }
        this.next();
        if (!this.tsIsIdentifier()) {
          return false;
        }
        this.next();
        return this.match(58);
      };
      _proto.tsParseMappedType = function tsParseMappedType() {
        var node = this.startNode();
        this.expect(5);
        if (this.match(53)) {
          node.readonly = this.state.value;
          this.next();
          this.expectContextual(122);
        } else if (this.eatContextual(122)) {
          node.readonly = true;
        }
        this.expect(0);
        {
          var typeParameter = this.startNode();
          typeParameter.name = this.tsParseTypeParameterName();
          typeParameter.constraint = this.tsExpectThenParseType(58);
          node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
        }
        node.nameType = this.eatContextual(93) ? this.tsParseType() : null;
        this.expect(3);
        if (this.match(53)) {
          node.optional = this.state.value;
          this.next();
          this.expect(17);
        } else if (this.eat(17)) {
          node.optional = true;
        }
        node.typeAnnotation = this.tsTryParseType();
        this.semicolon();
        this.expect(8);
        return this.finishNode(node, "TSMappedType");
      };
      _proto.tsParseTupleType = function tsParseTupleType() {
        var _this3 = this;
        var node = this.startNode();
        node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
        var seenOptionalElement = false;
        node.elementTypes.forEach(function (elementNode) {
          var type = elementNode.type;
          if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {
            _this3.raise(TSErrors.OptionalTypeBeforeRequired, elementNode);
          }
          seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType");
        });
        return this.finishNode(node, "TSTupleType");
      };
      _proto.tsParseTupleElementType = function tsParseTupleElementType() {
        var startLoc = this.state.startLoc;
        var rest = this.eat(21);
        var labeled;
        var label;
        var optional;
        var type;
        var isWord = tokenIsKeywordOrIdentifier(this.state.type);
        var chAfterWord = isWord ? this.lookaheadCharCode() : null;
        if (chAfterWord === 58) {
          labeled = true;
          optional = false;
          label = this.parseIdentifier(true);
          this.expect(14);
          type = this.tsParseType();
        } else if (chAfterWord === 63) {
          optional = true;
          var _startLoc = this.state.startLoc;
          var wordName = this.state.value;
          var typeOrLabel = this.tsParseNonArrayType();
          if (this.lookaheadCharCode() === 58) {
            labeled = true;
            label = this.createIdentifier(this.startNodeAt(_startLoc), wordName);
            this.expect(17);
            this.expect(14);
            type = this.tsParseType();
          } else {
            labeled = false;
            type = typeOrLabel;
            this.expect(17);
          }
        } else {
          type = this.tsParseType();
          optional = this.eat(17);
          labeled = this.eat(14);
        }
        if (labeled) {
          var labeledNode;
          if (label) {
            labeledNode = this.startNodeAtNode(label);
            labeledNode.optional = optional;
            labeledNode.label = label;
            labeledNode.elementType = type;
            if (this.eat(17)) {
              labeledNode.optional = true;
              this.raise(TSErrors.TupleOptionalAfterType, this.state.lastTokStartLoc);
            }
          } else {
            labeledNode = this.startNodeAtNode(type);
            labeledNode.optional = optional;
            this.raise(TSErrors.InvalidTupleMemberLabel, type);
            labeledNode.label = type;
            labeledNode.elementType = this.tsParseType();
          }
          type = this.finishNode(labeledNode, "TSNamedTupleMember");
        } else if (optional) {
          var optionalTypeNode = this.startNodeAtNode(type);
          optionalTypeNode.typeAnnotation = type;
          type = this.finishNode(optionalTypeNode, "TSOptionalType");
        }
        if (rest) {
          var restNode = this.startNodeAt(startLoc);
          restNode.typeAnnotation = type;
          type = this.finishNode(restNode, "TSRestType");
        }
        return type;
      };
      _proto.tsParseParenthesizedType = function tsParseParenthesizedType() {
        var node = this.startNode();
        this.expect(10);
        node.typeAnnotation = this.tsParseType();
        this.expect(11);
        return this.finishNode(node, "TSParenthesizedType");
      };
      _proto.tsParseFunctionOrConstructorType = function tsParseFunctionOrConstructorType(type, _abstract) {
        var _this4 = this;
        var node = this.startNode();
        if (type === "TSConstructorType") {
          node["abstract"] = !!_abstract;
          if (_abstract) this.next();
          this.next();
        }
        this.tsInAllowConditionalTypesContext(function () {
          return _this4.tsFillSignature(19, node);
        });
        return this.finishNode(node, type);
      };
      _proto.tsParseLiteralTypeNode = function tsParseLiteralTypeNode() {
        var node = this.startNode();
        switch (this.state.type) {
          case 134:
          case 135:
          case 133:
          case 85:
          case 86:
            node.literal = _superClass.prototype.parseExprAtom.call(this);
            break;
          default:
            this.unexpected();
        }
        return this.finishNode(node, "TSLiteralType");
      };
      _proto.tsParseTemplateLiteralType = function tsParseTemplateLiteralType() {
        var node = this.startNode();
        node.literal = _superClass.prototype.parseTemplate.call(this, false);
        return this.finishNode(node, "TSLiteralType");
      };
      _proto.parseTemplateSubstitution = function parseTemplateSubstitution() {
        if (this.state.inType) return this.tsParseType();
        return _superClass.prototype.parseTemplateSubstitution.call(this);
      };
      _proto.tsParseThisTypeOrThisTypePredicate = function tsParseThisTypeOrThisTypePredicate() {
        var thisKeyword = this.tsParseThisTypeNode();
        if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
          return this.tsParseThisTypePredicate(thisKeyword);
        } else {
          return thisKeyword;
        }
      };
      _proto.tsParseNonArrayType = function tsParseNonArrayType() {
        switch (this.state.type) {
          case 133:
          case 134:
          case 135:
          case 85:
          case 86:
            return this.tsParseLiteralTypeNode();
          case 53:
            if (this.state.value === "-") {
              var node = this.startNode();
              var nextToken = this.lookahead();
              if (nextToken.type !== 134 && nextToken.type !== 135) {
                this.unexpected();
              }
              node.literal = this.parseMaybeUnary();
              return this.finishNode(node, "TSLiteralType");
            }
            break;
          case 78:
            return this.tsParseThisTypeOrThisTypePredicate();
          case 87:
            return this.tsParseTypeQuery();
          case 83:
            return this.tsParseImportType();
          case 5:
            return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
          case 0:
            return this.tsParseTupleType();
          case 10:
            return this.tsParseParenthesizedType();
          case 25:
          case 24:
            return this.tsParseTemplateLiteralType();
          default:
            {
              var type = this.state.type;
              if (tokenIsIdentifier(type) || type === 88 || type === 84) {
                var nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
                if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {
                  var _node = this.startNode();
                  this.next();
                  return this.finishNode(_node, nodeType);
                }
                return this.tsParseTypeReference();
              }
            }
        }
        this.unexpected();
      };
      _proto.tsParseArrayTypeOrHigher = function tsParseArrayTypeOrHigher() {
        var type = this.tsParseNonArrayType();
        while (!this.hasPrecedingLineBreak() && this.eat(0)) {
          if (this.match(3)) {
            var node = this.startNodeAtNode(type);
            node.elementType = type;
            this.expect(3);
            type = this.finishNode(node, "TSArrayType");
          } else {
            var _node2 = this.startNodeAtNode(type);
            _node2.objectType = type;
            _node2.indexType = this.tsParseType();
            this.expect(3);
            type = this.finishNode(_node2, "TSIndexedAccessType");
          }
        }
        return type;
      };
      _proto.tsParseTypeOperator = function tsParseTypeOperator() {
        var node = this.startNode();
        var operator = this.state.value;
        this.next();
        node.operator = operator;
        node.typeAnnotation = this.tsParseTypeOperatorOrHigher();
        if (operator === "readonly") {
          this.tsCheckTypeAnnotationForReadOnly(node);
        }
        return this.finishNode(node, "TSTypeOperator");
      };
      _proto.tsCheckTypeAnnotationForReadOnly = function tsCheckTypeAnnotationForReadOnly(node) {
        switch (node.typeAnnotation.type) {
          case "TSTupleType":
          case "TSArrayType":
            return;
          default:
            this.raise(TSErrors.UnexpectedReadonly, node);
        }
      };
      _proto.tsParseInferType = function tsParseInferType() {
        var _this5 = this;
        var node = this.startNode();
        this.expectContextual(115);
        var typeParameter = this.startNode();
        typeParameter.name = this.tsParseTypeParameterName();
        typeParameter.constraint = this.tsTryParse(function () {
          return _this5.tsParseConstraintForInferType();
        });
        node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
        return this.finishNode(node, "TSInferType");
      };
      _proto.tsParseConstraintForInferType = function tsParseConstraintForInferType() {
        var _this6 = this;
        if (this.eat(81)) {
          var constraint = this.tsInDisallowConditionalTypesContext(function () {
            return _this6.tsParseType();
          });
          if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {
            return constraint;
          }
        }
      };
      _proto.tsParseTypeOperatorOrHigher = function tsParseTypeOperatorOrHigher() {
        var _this7 = this;
        var isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;
        return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(115) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(function () {
          return _this7.tsParseArrayTypeOrHigher();
        });
      };
      _proto.tsParseUnionOrIntersectionType = function tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
        var node = this.startNode();
        var hasLeadingOperator = this.eat(operator);
        var types = [];
        do {
          types.push(parseConstituentType());
        } while (this.eat(operator));
        if (types.length === 1 && !hasLeadingOperator) {
          return types[0];
        }
        node.types = types;
        return this.finishNode(node, kind);
      };
      _proto.tsParseIntersectionTypeOrHigher = function tsParseIntersectionTypeOrHigher() {
        return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45);
      };
      _proto.tsParseUnionTypeOrHigher = function tsParseUnionTypeOrHigher() {
        return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43);
      };
      _proto.tsIsStartOfFunctionType = function tsIsStartOfFunctionType() {
        if (this.match(47)) {
          return true;
        }
        return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
      };
      _proto.tsSkipParameterStart = function tsSkipParameterStart() {
        if (tokenIsIdentifier(this.state.type) || this.match(78)) {
          this.next();
          return true;
        }
        if (this.match(5)) {
          var errors = this.state.errors;
          var previousErrorCount = errors.length;
          try {
            this.parseObjectLike(8, true);
            return errors.length === previousErrorCount;
          } catch (_unused) {
            return false;
          }
        }
        if (this.match(0)) {
          this.next();
          var _errors = this.state.errors;
          var _previousErrorCount = _errors.length;
          try {
            _superClass.prototype.parseBindingList.call(this, 3, 93, ParseBindingListFlags.ALLOW_EMPTY);
            return _errors.length === _previousErrorCount;
          } catch (_unused2) {
            return false;
          }
        }
        return false;
      };
      _proto.tsIsUnambiguouslyStartOfFunctionType = function tsIsUnambiguouslyStartOfFunctionType() {
        this.next();
        if (this.match(11) || this.match(21)) {
          return true;
        }
        if (this.tsSkipParameterStart()) {
          if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {
            return true;
          }
          if (this.match(11)) {
            this.next();
            if (this.match(19)) {
              return true;
            }
          }
        }
        return false;
      };
      _proto.tsParseTypeOrTypePredicateAnnotation = function tsParseTypeOrTypePredicateAnnotation(returnToken) {
        var _this8 = this;
        return this.tsInType(function () {
          var t = _this8.startNode();
          _this8.expect(returnToken);
          var node = _this8.startNode();
          var asserts = !!_this8.tsTryParse(_this8.tsParseTypePredicateAsserts.bind(_this8));
          if (asserts && _this8.match(78)) {
            var thisTypePredicate = _this8.tsParseThisTypeOrThisTypePredicate();
            if (thisTypePredicate.type === "TSThisType") {
              node.parameterName = thisTypePredicate;
              node.asserts = true;
              node.typeAnnotation = null;
              thisTypePredicate = _this8.finishNode(node, "TSTypePredicate");
            } else {
              _this8.resetStartLocationFromNode(thisTypePredicate, node);
              thisTypePredicate.asserts = true;
            }
            t.typeAnnotation = thisTypePredicate;
            return _this8.finishNode(t, "TSTypeAnnotation");
          }
          var typePredicateVariable = _this8.tsIsIdentifier() && _this8.tsTryParse(_this8.tsParseTypePredicatePrefix.bind(_this8));
          if (!typePredicateVariable) {
            if (!asserts) {
              return _this8.tsParseTypeAnnotation(false, t);
            }
            node.parameterName = _this8.parseIdentifier();
            node.asserts = asserts;
            node.typeAnnotation = null;
            t.typeAnnotation = _this8.finishNode(node, "TSTypePredicate");
            return _this8.finishNode(t, "TSTypeAnnotation");
          }
          var type = _this8.tsParseTypeAnnotation(false);
          node.parameterName = typePredicateVariable;
          node.typeAnnotation = type;
          node.asserts = asserts;
          t.typeAnnotation = _this8.finishNode(node, "TSTypePredicate");
          return _this8.finishNode(t, "TSTypeAnnotation");
        });
      };
      _proto.tsTryParseTypeOrTypePredicateAnnotation = function tsTryParseTypeOrTypePredicateAnnotation() {
        if (this.match(14)) {
          return this.tsParseTypeOrTypePredicateAnnotation(14);
        }
      };
      _proto.tsTryParseTypeAnnotation = function tsTryParseTypeAnnotation() {
        if (this.match(14)) {
          return this.tsParseTypeAnnotation();
        }
      };
      _proto.tsTryParseType = function tsTryParseType() {
        return this.tsEatThenParseType(14);
      };
      _proto.tsParseTypePredicatePrefix = function tsParseTypePredicatePrefix() {
        var id = this.parseIdentifier();
        if (this.isContextual(116) && !this.hasPrecedingLineBreak()) {
          this.next();
          return id;
        }
      };
      _proto.tsParseTypePredicateAsserts = function tsParseTypePredicateAsserts() {
        if (this.state.type !== 109) {
          return false;
        }
        var containsEsc = this.state.containsEsc;
        this.next();
        if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {
          return false;
        }
        if (containsEsc) {
          this.raise(Errors.InvalidEscapedReservedWord, this.state.lastTokStartLoc, {
            reservedWord: "asserts"
          });
        }
        return true;
      };
      _proto.tsParseTypeAnnotation = function tsParseTypeAnnotation(eatColon, t) {
        var _this9 = this;
        if (eatColon === void 0) {
          eatColon = true;
        }
        if (t === void 0) {
          t = this.startNode();
        }
        this.tsInType(function () {
          if (eatColon) _this9.expect(14);
          t.typeAnnotation = _this9.tsParseType();
        });
        return this.finishNode(t, "TSTypeAnnotation");
      };
      _proto.tsParseType = function tsParseType() {
        var _this10 = this;
        assert$1(this.state.inType);
        var type = this.tsParseNonConditionalType();
        if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {
          return type;
        }
        var node = this.startNodeAtNode(type);
        node.checkType = type;
        node.extendsType = this.tsInDisallowConditionalTypesContext(function () {
          return _this10.tsParseNonConditionalType();
        });
        this.expect(17);
        node.trueType = this.tsInAllowConditionalTypesContext(function () {
          return _this10.tsParseType();
        });
        this.expect(14);
        node.falseType = this.tsInAllowConditionalTypesContext(function () {
          return _this10.tsParseType();
        });
        return this.finishNode(node, "TSConditionalType");
      };
      _proto.isAbstractConstructorSignature = function isAbstractConstructorSignature() {
        return this.isContextual(124) && this.lookahead().type === 77;
      };
      _proto.tsParseNonConditionalType = function tsParseNonConditionalType() {
        if (this.tsIsStartOfFunctionType()) {
          return this.tsParseFunctionOrConstructorType("TSFunctionType");
        }
        if (this.match(77)) {
          return this.tsParseFunctionOrConstructorType("TSConstructorType");
        } else if (this.isAbstractConstructorSignature()) {
          return this.tsParseFunctionOrConstructorType("TSConstructorType", true);
        }
        return this.tsParseUnionTypeOrHigher();
      };
      _proto.tsParseTypeAssertion = function tsParseTypeAssertion() {
        var _this11 = this;
        if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
          this.raise(TSErrors.ReservedTypeAssertion, this.state.startLoc);
        }
        var node = this.startNode();
        node.typeAnnotation = this.tsInType(function () {
          _this11.next();
          return _this11.match(75) ? _this11.tsParseTypeReference() : _this11.tsParseType();
        });
        this.expect(48);
        node.expression = this.parseMaybeUnary();
        return this.finishNode(node, "TSTypeAssertion");
      };
      _proto.tsParseHeritageClause = function tsParseHeritageClause(token) {
        var _this12 = this;
        var originalStartLoc = this.state.startLoc;
        var delimitedList = this.tsParseDelimitedList("HeritageClauseElement", function () {
          var node = _this12.startNode();
          node.expression = _this12.tsParseEntityName();
          if (_this12.match(47)) {
            node.typeParameters = _this12.tsParseTypeArguments();
          }
          return _this12.finishNode(node, "TSExpressionWithTypeArguments");
        });
        if (!delimitedList.length) {
          this.raise(TSErrors.EmptyHeritageClauseType, originalStartLoc, {
            token: token
          });
        }
        return delimitedList;
      };
      _proto.tsParseInterfaceDeclaration = function tsParseInterfaceDeclaration(node, properties) {
        if (properties === void 0) {
          properties = {};
        }
        if (this.hasFollowingLineBreak()) return null;
        this.expectContextual(129);
        if (properties.declare) node.declare = true;
        if (tokenIsIdentifier(this.state.type)) {
          node.id = this.parseIdentifier();
          this.checkIdentifier(node.id, BindingFlag.TYPE_TS_INTERFACE);
        } else {
          node.id = null;
          this.raise(TSErrors.MissingInterfaceName, this.state.startLoc);
        }
        node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
        if (this.eat(81)) {
          node["extends"] = this.tsParseHeritageClause("extends");
        }
        var body = this.startNode();
        body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));
        node.body = this.finishNode(body, "TSInterfaceBody");
        return this.finishNode(node, "TSInterfaceDeclaration");
      };
      _proto.tsParseTypeAliasDeclaration = function tsParseTypeAliasDeclaration(node) {
        var _this13 = this;
        node.id = this.parseIdentifier();
        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_TYPE);
        node.typeAnnotation = this.tsInType(function () {
          node.typeParameters = _this13.tsTryParseTypeParameters(_this13.tsParseInOutModifiers);
          _this13.expect(29);
          if (_this13.isContextual(114) && _this13.lookahead().type !== 16) {
            var _node3 = _this13.startNode();
            _this13.next();
            return _this13.finishNode(_node3, "TSIntrinsicKeyword");
          }
          return _this13.tsParseType();
        });
        this.semicolon();
        return this.finishNode(node, "TSTypeAliasDeclaration");
      };
      _proto.tsInNoContext = function tsInNoContext(cb) {
        var oldContext = this.state.context;
        this.state.context = [oldContext[0]];
        try {
          return cb();
        } finally {
          this.state.context = oldContext;
        }
      };
      _proto.tsInType = function tsInType(cb) {
        var oldInType = this.state.inType;
        this.state.inType = true;
        try {
          return cb();
        } finally {
          this.state.inType = oldInType;
        }
      };
      _proto.tsInDisallowConditionalTypesContext = function tsInDisallowConditionalTypesContext(cb) {
        var oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
        this.state.inDisallowConditionalTypesContext = true;
        try {
          return cb();
        } finally {
          this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
        }
      };
      _proto.tsInAllowConditionalTypesContext = function tsInAllowConditionalTypesContext(cb) {
        var oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
        this.state.inDisallowConditionalTypesContext = false;
        try {
          return cb();
        } finally {
          this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
        }
      };
      _proto.tsEatThenParseType = function tsEatThenParseType(token) {
        if (this.match(token)) {
          return this.tsNextThenParseType();
        }
      };
      _proto.tsExpectThenParseType = function tsExpectThenParseType(token) {
        var _this14 = this;
        return this.tsInType(function () {
          _this14.expect(token);
          return _this14.tsParseType();
        });
      };
      _proto.tsNextThenParseType = function tsNextThenParseType() {
        var _this15 = this;
        return this.tsInType(function () {
          _this15.next();
          return _this15.tsParseType();
        });
      };
      _proto.tsParseEnumMember = function tsParseEnumMember() {
        var node = this.startNode();
        node.id = this.match(133) ? _superClass.prototype.parseStringLiteral.call(this, this.state.value) : this.parseIdentifier(true);
        if (this.eat(29)) {
          node.initializer = _superClass.prototype.parseMaybeAssignAllowIn.call(this);
        }
        return this.finishNode(node, "TSEnumMember");
      };
      _proto.tsParseEnumDeclaration = function tsParseEnumDeclaration(node, properties) {
        if (properties === void 0) {
          properties = {};
        }
        if (properties["const"]) node["const"] = true;
        if (properties.declare) node.declare = true;
        this.expectContextual(126);
        node.id = this.parseIdentifier();
        this.checkIdentifier(node.id, node["const"] ? BindingFlag.TYPE_TS_CONST_ENUM : BindingFlag.TYPE_TS_ENUM);
        this.expect(5);
        node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
        this.expect(8);
        return this.finishNode(node, "TSEnumDeclaration");
      };
      _proto.tsParseModuleBlock = function tsParseModuleBlock() {
        var node = this.startNode();
        this.scope.enter(ScopeFlag.OTHER);
        this.expect(5);
        _superClass.prototype.parseBlockOrModuleBlockBody.call(this, node.body = [], undefined, true, 8);
        this.scope.exit();
        return this.finishNode(node, "TSModuleBlock");
      };
      _proto.tsParseModuleOrNamespaceDeclaration = function tsParseModuleOrNamespaceDeclaration(node, nested) {
        if (nested === void 0) {
          nested = false;
        }
        node.id = this.parseIdentifier();
        if (!nested) {
          this.checkIdentifier(node.id, BindingFlag.TYPE_TS_NAMESPACE);
        }
        if (this.eat(16)) {
          var inner = this.startNode();
          this.tsParseModuleOrNamespaceDeclaration(inner, true);
          node.body = inner;
        } else {
          this.scope.enter(ScopeFlag.TS_MODULE);
          this.prodParam.enter(ParamKind.PARAM);
          node.body = this.tsParseModuleBlock();
          this.prodParam.exit();
          this.scope.exit();
        }
        return this.finishNode(node, "TSModuleDeclaration");
      };
      _proto.tsParseAmbientExternalModuleDeclaration = function tsParseAmbientExternalModuleDeclaration(node) {
        if (this.isContextual(112)) {
          node.global = true;
          node.id = this.parseIdentifier();
        } else if (this.match(133)) {
          node.id = _superClass.prototype.parseStringLiteral.call(this, this.state.value);
        } else {
          this.unexpected();
        }
        if (this.match(5)) {
          this.scope.enter(ScopeFlag.TS_MODULE);
          this.prodParam.enter(ParamKind.PARAM);
          node.body = this.tsParseModuleBlock();
          this.prodParam.exit();
          this.scope.exit();
        } else {
          this.semicolon();
        }
        return this.finishNode(node, "TSModuleDeclaration");
      };
      _proto.tsParseImportEqualsDeclaration = function tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier, isExport) {
        node.isExport = isExport || false;
        node.id = maybeDefaultIdentifier || this.parseIdentifier();
        this.checkIdentifier(node.id, BindingFlag.TYPE_TS_VALUE_IMPORT);
        this.expect(29);
        var moduleReference = this.tsParseModuleReference();
        if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {
          this.raise(TSErrors.ImportAliasHasImportType, moduleReference);
        }
        node.moduleReference = moduleReference;
        this.semicolon();
        return this.finishNode(node, "TSImportEqualsDeclaration");
      };
      _proto.tsIsExternalModuleReference = function tsIsExternalModuleReference() {
        return this.isContextual(119) && this.lookaheadCharCode() === 40;
      };
      _proto.tsParseModuleReference = function tsParseModuleReference() {
        return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);
      };
      _proto.tsParseExternalModuleReference = function tsParseExternalModuleReference() {
        var node = this.startNode();
        this.expectContextual(119);
        this.expect(10);
        if (!this.match(133)) {
          this.unexpected();
        }
        node.expression = _superClass.prototype.parseExprAtom.call(this);
        this.expect(11);
        this.sawUnambiguousESM = true;
        return this.finishNode(node, "TSExternalModuleReference");
      };
      _proto.tsLookAhead = function tsLookAhead(f) {
        var state = this.state.clone();
        var res = f();
        this.state = state;
        return res;
      };
      _proto.tsTryParseAndCatch = function tsTryParseAndCatch(f) {
        var result = this.tryParse(function (abort) {
          return f() || abort();
        });
        if (result.aborted || !result.node) return;
        if (result.error) this.state = result.failState;
        return result.node;
      };
      _proto.tsTryParse = function tsTryParse(f) {
        var state = this.state.clone();
        var result = f();
        if (result !== undefined && result !== false) {
          return result;
        }
        this.state = state;
      };
      _proto.tsTryParseDeclare = function tsTryParseDeclare(nany) {
        var _this16 = this;
        if (this.isLineTerminator()) {
          return;
        }
        var startType = this.state.type;
        var kind;
        if (this.isContextual(100)) {
          startType = 74;
          kind = "let";
        }
        return this.tsInAmbientContext(function () {
          switch (startType) {
            case 68:
              nany.declare = true;
              return _superClass.prototype.parseFunctionStatement.call(_this16, nany, false, false);
            case 80:
              nany.declare = true;
              return _this16.parseClass(nany, true, false);
            case 126:
              return _this16.tsParseEnumDeclaration(nany, {
                declare: true
              });
            case 112:
              return _this16.tsParseAmbientExternalModuleDeclaration(nany);
            case 75:
            case 74:
              if (!_this16.match(75) || !_this16.isLookaheadContextual("enum")) {
                nany.declare = true;
                return _this16.parseVarStatement(nany, kind || _this16.state.value, true);
              }
              _this16.expect(75);
              return _this16.tsParseEnumDeclaration(nany, {
                "const": true,
                declare: true
              });
            case 129:
              {
                var result = _this16.tsParseInterfaceDeclaration(nany, {
                  declare: true
                });
                if (result) return result;
              }
            default:
              if (tokenIsIdentifier(startType)) {
                return _this16.tsParseDeclaration(nany, _this16.state.value, true, null);
              }
          }
        });
      };
      _proto.tsTryParseExportDeclaration = function tsTryParseExportDeclaration() {
        return this.tsParseDeclaration(this.startNode(), this.state.value, true, null);
      };
      _proto.tsParseExpressionStatement = function tsParseExpressionStatement(node, expr, decorators) {
        switch (expr.name) {
          case "declare":
            {
              var declaration = this.tsTryParseDeclare(node);
              if (declaration) {
                declaration.declare = true;
              }
              return declaration;
            }
          case "global":
            if (this.match(5)) {
              this.scope.enter(ScopeFlag.TS_MODULE);
              this.prodParam.enter(ParamKind.PARAM);
              var mod = node;
              mod.global = true;
              mod.id = expr;
              mod.body = this.tsParseModuleBlock();
              this.scope.exit();
              this.prodParam.exit();
              return this.finishNode(mod, "TSModuleDeclaration");
            }
            break;
          default:
            return this.tsParseDeclaration(node, expr.name, false, decorators);
        }
      };
      _proto.tsParseDeclaration = function tsParseDeclaration(node, value, next, decorators) {
        switch (value) {
          case "abstract":
            if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {
              return this.tsParseAbstractDeclaration(node, decorators);
            }
            break;
          case "module":
            if (this.tsCheckLineTerminator(next)) {
              if (this.match(133)) {
                return this.tsParseAmbientExternalModuleDeclaration(node);
              } else if (tokenIsIdentifier(this.state.type)) {
                return this.tsParseModuleOrNamespaceDeclaration(node);
              }
            }
            break;
          case "namespace":
            if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
              return this.tsParseModuleOrNamespaceDeclaration(node);
            }
            break;
          case "type":
            if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
              return this.tsParseTypeAliasDeclaration(node);
            }
            break;
        }
      };
      _proto.tsCheckLineTerminator = function tsCheckLineTerminator(next) {
        if (next) {
          if (this.hasFollowingLineBreak()) return false;
          this.next();
          return true;
        }
        return !this.isLineTerminator();
      };
      _proto.tsTryParseGenericAsyncArrowFunction = function tsTryParseGenericAsyncArrowFunction(startLoc) {
        var _this17 = this;
        if (!this.match(47)) return;
        var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
        this.state.maybeInArrowParameters = true;
        var res = this.tsTryParseAndCatch(function () {
          var node = _this17.startNodeAt(startLoc);
          node.typeParameters = _this17.tsParseTypeParameters(_this17.tsParseConstModifier);
          _superClass.prototype.parseFunctionParams.call(_this17, node);
          node.returnType = _this17.tsTryParseTypeOrTypePredicateAnnotation();
          _this17.expect(19);
          return node;
        });
        this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
        if (!res) return;
        return _superClass.prototype.parseArrowExpression.call(this, res, null, true);
      };
      _proto.tsParseTypeArgumentsInExpression = function tsParseTypeArgumentsInExpression() {
        if (this.reScan_lt() !== 47) return;
        return this.tsParseTypeArguments();
      };
      _proto.tsParseTypeArguments = function tsParseTypeArguments() {
        var _this18 = this;
        var node = this.startNode();
        node.params = this.tsInType(function () {
          return _this18.tsInNoContext(function () {
            _this18.expect(47);
            return _this18.tsParseDelimitedList("TypeParametersOrArguments", _this18.tsParseType.bind(_this18));
          });
        });
        if (node.params.length === 0) {
          this.raise(TSErrors.EmptyTypeArguments, node);
        } else if (!this.state.inType && this.curContext() === types.brace) {
          this.reScan_lt_gt();
        }
        this.expect(48);
        return this.finishNode(node, "TSTypeParameterInstantiation");
      };
      _proto.tsIsDeclarationStart = function tsIsDeclarationStart() {
        return tokenIsTSDeclarationStart(this.state.type);
      };
      _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
        if (this.tsIsDeclarationStart()) return false;
        return _superClass.prototype.isExportDefaultSpecifier.call(this);
      };
      _proto.parseAssignableListItem = function parseAssignableListItem(flags, decorators) {
        var startLoc = this.state.startLoc;
        var modified = {};
        this.tsParseModifiers({
          allowedModifiers: ["public", "private", "protected", "override", "readonly"]
        }, modified);
        var accessibility = modified.accessibility;
        var override = modified.override;
        var readonly = modified.readonly;
        if (!(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) && (accessibility || readonly || override)) {
          this.raise(TSErrors.UnexpectedParameterModifier, startLoc);
        }
        var left = this.parseMaybeDefault();
        this.parseAssignableListItemTypes(left, flags);
        var elt = this.parseMaybeDefault(left.loc.start, left);
        if (accessibility || readonly || override) {
          var pp = this.startNodeAt(startLoc);
          if (decorators.length) {
            pp.decorators = decorators;
          }
          if (accessibility) pp.accessibility = accessibility;
          if (readonly) pp.readonly = readonly;
          if (override) pp.override = override;
          if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
            this.raise(TSErrors.UnsupportedParameterPropertyKind, pp);
          }
          pp.parameter = elt;
          return this.finishNode(pp, "TSParameterProperty");
        }
        if (decorators.length) {
          left.decorators = decorators;
        }
        return elt;
      };
      _proto.isSimpleParameter = function isSimpleParameter(node) {
        return node.type === "TSParameterProperty" && _superClass.prototype.isSimpleParameter.call(this, node.parameter) || _superClass.prototype.isSimpleParameter.call(this, node);
      };
      _proto.tsDisallowOptionalPattern = function tsDisallowOptionalPattern(node) {
        for (var _i4 = 0, _node$params2 = node.params; _i4 < _node$params2.length; _i4++) {
          var param = _node$params2[_i4];
          if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) {
            this.raise(TSErrors.PatternIsOptional, param);
          }
        }
      };
      _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params, trailingCommaLoc) {
        _superClass.prototype.setArrowFunctionParameters.call(this, node, params, trailingCommaLoc);
        this.tsDisallowOptionalPattern(node);
      };
      _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
        if (isMethod === void 0) {
          isMethod = false;
        }
        if (this.match(14)) {
          node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
        }
        var bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;
        if (bodilessType && !this.match(5) && this.isLineTerminator()) {
          return this.finishNode(node, bodilessType);
        }
        if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {
          this.raise(TSErrors.DeclareFunctionHasImplementation, node);
          if (node.declare) {
            return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, bodilessType, isMethod);
          }
        }
        this.tsDisallowOptionalPattern(node);
        return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, type, isMethod);
      };
      _proto.registerFunctionStatementId = function registerFunctionStatementId(node) {
        if (!node.body && node.id) {
          this.checkIdentifier(node.id, BindingFlag.TYPE_TS_AMBIENT);
        } else {
          _superClass.prototype.registerFunctionStatementId.call(this, node);
        }
      };
      _proto.tsCheckForInvalidTypeCasts = function tsCheckForInvalidTypeCasts(items) {
        var _this19 = this;
        items.forEach(function (node) {
          if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {
            _this19.raise(TSErrors.UnexpectedTypeAnnotation, node.typeAnnotation);
          }
        });
      };
      _proto.toReferencedList = function toReferencedList(exprList, isInParens) {
        this.tsCheckForInvalidTypeCasts(exprList);
        return exprList;
      };
      _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
        var node = _superClass.prototype.parseArrayLike.call(this, close, canBePattern, isTuple, refExpressionErrors);
        if (node.type === "ArrayExpression") {
          this.tsCheckForInvalidTypeCasts(node.elements);
        }
        return node;
      };
      _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
        var _this20 = this;
        if (!this.hasPrecedingLineBreak() && this.match(35)) {
          this.state.canStartJSXElement = false;
          this.next();
          var nonNullExpression = this.startNodeAt(startLoc);
          nonNullExpression.expression = base;
          return this.finishNode(nonNullExpression, "TSNonNullExpression");
        }
        var isOptionalCall = false;
        if (this.match(18) && this.lookaheadCharCode() === 60) {
          if (noCalls) {
            state.stop = true;
            return base;
          }
          state.optionalChainMember = isOptionalCall = true;
          this.next();
        }
        if (this.match(47) || this.match(51)) {
          var missingParenErrorLoc;
          var result = this.tsTryParseAndCatch(function () {
            if (!noCalls && _this20.atPossibleAsyncArrow(base)) {
              var asyncArrowFn = _this20.tsTryParseGenericAsyncArrowFunction(startLoc);
              if (asyncArrowFn) {
                return asyncArrowFn;
              }
            }
            var typeArguments = _this20.tsParseTypeArgumentsInExpression();
            if (!typeArguments) return;
            if (isOptionalCall && !_this20.match(10)) {
              missingParenErrorLoc = _this20.state.curPosition();
              return;
            }
            if (tokenIsTemplate(_this20.state.type)) {
              var _result = _superClass.prototype.parseTaggedTemplateExpression.call(_this20, base, startLoc, state);
              _result.typeParameters = typeArguments;
              return _result;
            }
            if (!noCalls && _this20.eat(10)) {
              var _node4 = _this20.startNodeAt(startLoc);
              _node4.callee = base;
              _node4.arguments = _this20.parseCallExpressionArguments(11, false);
              _this20.tsCheckForInvalidTypeCasts(_node4.arguments);
              _node4.typeParameters = typeArguments;
              if (state.optionalChainMember) {
                _node4.optional = isOptionalCall;
              }
              return _this20.finishCallExpression(_node4, state.optionalChainMember);
            }
            var tokenType = _this20.state.type;
            if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !_this20.hasPrecedingLineBreak()) {
              return;
            }
            var node = _this20.startNodeAt(startLoc);
            node.expression = base;
            node.typeParameters = typeArguments;
            return _this20.finishNode(node, "TSInstantiationExpression");
          });
          if (missingParenErrorLoc) {
            this.unexpected(missingParenErrorLoc, 10);
          }
          if (result) {
            if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) {
              this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, this.state.startLoc);
            }
            return result;
          }
        }
        return _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, state);
      };
      _proto.parseNewCallee = function parseNewCallee(node) {
        var _callee$extra;
        _superClass.prototype.parseNewCallee.call(this, node);
        var callee = node.callee;
        if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {
          node.typeParameters = callee.typeParameters;
          node.callee = callee.expression;
        }
      };
      _proto.parseExprOp = function parseExprOp(left, leftStartLoc, minPrec) {
        var _this21 = this;
        var isSatisfies;
        if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(120)))) {
          var node = this.startNodeAt(leftStartLoc);
          node.expression = left;
          node.typeAnnotation = this.tsInType(function () {
            _this21.next();
            if (_this21.match(75)) {
              if (isSatisfies) {
                _this21.raise(Errors.UnexpectedKeyword, _this21.state.startLoc, {
                  keyword: "const"
                });
              }
              return _this21.tsParseTypeReference();
            }
            return _this21.tsParseType();
          });
          this.finishNode(node, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression");
          this.reScan_lt_gt();
          return this.parseExprOp(node, leftStartLoc, minPrec);
        }
        return _superClass.prototype.parseExprOp.call(this, left, leftStartLoc, minPrec);
      };
      _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
        if (!this.state.isAmbientContext) {
          _superClass.prototype.checkReservedWord.call(this, word, startLoc, checkKeywords, isBinding);
        }
      };
      _proto.checkImportReflection = function checkImportReflection(node) {
        _superClass.prototype.checkImportReflection.call(this, node);
        if (node.module && node.importKind !== "value") {
          this.raise(TSErrors.ImportReflectionHasImportType, node.specifiers[0].loc.start);
        }
      };
      _proto.checkDuplicateExports = function checkDuplicateExports() {};
      _proto.isPotentialImportPhase = function isPotentialImportPhase(isExport) {
        if (_superClass.prototype.isPotentialImportPhase.call(this, isExport)) return true;
        if (this.isContextual(130)) {
          var ch = this.lookaheadCharCode();
          return isExport ? ch === 123 || ch === 42 : ch !== 61;
        }
        return !isExport && this.isContextual(87);
      };
      _proto.applyImportPhase = function applyImportPhase(node, isExport, phase, loc) {
        _superClass.prototype.applyImportPhase.call(this, node, isExport, phase, loc);
        if (isExport) {
          node.exportKind = phase === "type" ? "type" : "value";
        } else {
          node.importKind = phase === "type" || phase === "typeof" ? phase : "value";
        }
      };
      _proto.parseImport = function parseImport(node) {
        if (this.match(133)) {
          node.importKind = "value";
          return _superClass.prototype.parseImport.call(this, node);
        }
        var importNode;
        if (tokenIsIdentifier(this.state.type) && this.lookaheadCharCode() === 61) {
          node.importKind = "value";
          return this.tsParseImportEqualsDeclaration(node);
        } else if (this.isContextual(130)) {
          var maybeDefaultIdentifier = this.parseMaybeImportPhase(node, false);
          if (this.lookaheadCharCode() === 61) {
            return this.tsParseImportEqualsDeclaration(node, maybeDefaultIdentifier);
          } else {
            importNode = _superClass.prototype.parseImportSpecifiersAndAfter.call(this, node, maybeDefaultIdentifier);
          }
        } else {
          importNode = _superClass.prototype.parseImport.call(this, node);
        }
        if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {
          this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, importNode);
        }
        return importNode;
      };
      _proto.parseExport = function parseExport(node, decorators) {
        if (this.match(83)) {
          this.next();
          var nodeImportEquals = node;
          var maybeDefaultIdentifier = null;
          if (this.isContextual(130) && this.isPotentialImportPhase(false)) {
            maybeDefaultIdentifier = this.parseMaybeImportPhase(nodeImportEquals, false);
          } else {
            nodeImportEquals.importKind = "value";
          }
          return this.tsParseImportEqualsDeclaration(nodeImportEquals, maybeDefaultIdentifier, true);
        } else if (this.eat(29)) {
          var assign = node;
          assign.expression = _superClass.prototype.parseExpression.call(this);
          this.semicolon();
          this.sawUnambiguousESM = true;
          return this.finishNode(assign, "TSExportAssignment");
        } else if (this.eatContextual(93)) {
          var decl = node;
          this.expectContextual(128);
          decl.id = this.parseIdentifier();
          this.semicolon();
          return this.finishNode(decl, "TSNamespaceExportDeclaration");
        } else {
          return _superClass.prototype.parseExport.call(this, node, decorators);
        }
      };
      _proto.isAbstractClass = function isAbstractClass() {
        return this.isContextual(124) && this.lookahead().type === 80;
      };
      _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
        if (this.isAbstractClass()) {
          var cls = this.startNode();
          this.next();
          cls["abstract"] = true;
          return this.parseClass(cls, true, true);
        }
        if (this.match(129)) {
          var result = this.tsParseInterfaceDeclaration(this.startNode());
          if (result) return result;
        }
        return _superClass.prototype.parseExportDefaultExpression.call(this);
      };
      _proto.parseVarStatement = function parseVarStatement(node, kind, allowMissingInitializer) {
        if (allowMissingInitializer === void 0) {
          allowMissingInitializer = false;
        }
        var isAmbientContext = this.state.isAmbientContext;
        var declaration = _superClass.prototype.parseVarStatement.call(this, node, kind, allowMissingInitializer || isAmbientContext);
        if (!isAmbientContext) return declaration;
        for (var _i6 = 0, _declaration$declarat2 = declaration.declarations; _i6 < _declaration$declarat2.length; _i6++) {
          var _declaration$declarat3 = _declaration$declarat2[_i6],
            id = _declaration$declarat3.id,
            init = _declaration$declarat3.init;
          if (!init) continue;
          if (kind !== "const" || !!id.typeAnnotation) {
            this.raise(TSErrors.InitializerNotAllowedInAmbientContext, init);
          } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) {
            this.raise(TSErrors.ConstInitializerMustBeStringOrNumericLiteralOrLiteralEnumReference, init);
          }
        }
        return declaration;
      };
      _proto.parseStatementContent = function parseStatementContent(flags, decorators) {
        if (this.match(75) && this.isLookaheadContextual("enum")) {
          var node = this.startNode();
          this.expect(75);
          return this.tsParseEnumDeclaration(node, {
            "const": true
          });
        }
        if (this.isContextual(126)) {
          return this.tsParseEnumDeclaration(this.startNode());
        }
        if (this.isContextual(129)) {
          var result = this.tsParseInterfaceDeclaration(this.startNode());
          if (result) return result;
        }
        return _superClass.prototype.parseStatementContent.call(this, flags, decorators);
      };
      _proto.parseAccessModifier = function parseAccessModifier() {
        return this.tsParseModifier(["public", "protected", "private"]);
      };
      _proto.tsHasSomeModifiers = function tsHasSomeModifiers(member, modifiers) {
        return modifiers.some(function (modifier) {
          if (tsIsAccessModifier(modifier)) {
            return member.accessibility === modifier;
          }
          return !!member[modifier];
        });
      };
      _proto.tsIsStartOfStaticBlocks = function tsIsStartOfStaticBlocks() {
        return this.isContextual(106) && this.lookaheadCharCode() === 123;
      };
      _proto.parseClassMember = function parseClassMember(classBody, member, state) {
        var _this22 = this;
        var modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];
        this.tsParseModifiers({
          allowedModifiers: modifiers,
          disallowedModifiers: ["in", "out"],
          stopOnStartOfClassStaticBlock: true,
          errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
        }, member);
        var callParseClassMemberWithIsStatic = function callParseClassMemberWithIsStatic() {
          if (_this22.tsIsStartOfStaticBlocks()) {
            _this22.next();
            _this22.next();
            if (_this22.tsHasSomeModifiers(member, modifiers)) {
              _this22.raise(TSErrors.StaticBlockCannotHaveModifier, _this22.state.curPosition());
            }
            _superClass.prototype.parseClassStaticBlock.call(_this22, classBody, member);
          } else {
            _this22.parseClassMemberWithIsStatic(classBody, member, state, !!member["static"]);
          }
        };
        if (member.declare) {
          this.tsInAmbientContext(callParseClassMemberWithIsStatic);
        } else {
          callParseClassMemberWithIsStatic();
        }
      };
      _proto.parseClassMemberWithIsStatic = function parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
        var idx = this.tsTryParseIndexSignature(member);
        if (idx) {
          classBody.body.push(idx);
          if (member["abstract"]) {
            this.raise(TSErrors.IndexSignatureHasAbstract, member);
          }
          if (member.accessibility) {
            this.raise(TSErrors.IndexSignatureHasAccessibility, member, {
              modifier: member.accessibility
            });
          }
          if (member.declare) {
            this.raise(TSErrors.IndexSignatureHasDeclare, member);
          }
          if (member.override) {
            this.raise(TSErrors.IndexSignatureHasOverride, member);
          }
          return;
        }
        if (!this.state.inAbstractClass && member["abstract"]) {
          this.raise(TSErrors.NonAbstractClassHasAbstractMethod, member);
        }
        if (member.override) {
          if (!state.hadSuperClass) {
            this.raise(TSErrors.OverrideNotInSubClass, member);
          }
        }
        _superClass.prototype.parseClassMemberWithIsStatic.call(this, classBody, member, state, isStatic);
      };
      _proto.parsePostMemberNameModifiers = function parsePostMemberNameModifiers(methodOrProp) {
        var optional = this.eat(17);
        if (optional) methodOrProp.optional = true;
        if (methodOrProp.readonly && this.match(10)) {
          this.raise(TSErrors.ClassMethodHasReadonly, methodOrProp);
        }
        if (methodOrProp.declare && this.match(10)) {
          this.raise(TSErrors.ClassMethodHasDeclare, methodOrProp);
        }
      };
      _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
        var decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined;
        return decl || _superClass.prototype.parseExpressionStatement.call(this, node, expr, decorators);
      };
      _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
        if (this.tsIsDeclarationStart()) return true;
        return _superClass.prototype.shouldParseExportDeclaration.call(this);
      };
      _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
        var _this23 = this;
        if (!this.state.maybeInArrowParameters || !this.match(17)) {
          return _superClass.prototype.parseConditional.call(this, expr, startLoc, refExpressionErrors);
        }
        var result = this.tryParse(function () {
          return _superClass.prototype.parseConditional.call(_this23, expr, startLoc);
        });
        if (!result.node) {
          if (result.error) {
            _superClass.prototype.setOptionalParametersError.call(this, refExpressionErrors, result.error);
          }
          return expr;
        }
        if (result.error) this.state = result.failState;
        return result.node;
      };
      _proto.parseParenItem = function parseParenItem(node, startLoc) {
        var newNode = _superClass.prototype.parseParenItem.call(this, node, startLoc);
        if (this.eat(17)) {
          newNode.optional = true;
          this.resetEndLocation(node);
        }
        if (this.match(14)) {
          var typeCastNode = this.startNodeAt(startLoc);
          typeCastNode.expression = node;
          typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();
          return this.finishNode(typeCastNode, "TSTypeCastExpression");
        }
        return node;
      };
      _proto.parseExportDeclaration = function parseExportDeclaration(node) {
        var _this24 = this;
        if (!this.state.isAmbientContext && this.isContextual(125)) {
          return this.tsInAmbientContext(function () {
            return _this24.parseExportDeclaration(node);
          });
        }
        var startLoc = this.state.startLoc;
        var isDeclare = this.eatContextual(125);
        if (isDeclare && (this.isContextual(125) || !this.shouldParseExportDeclaration())) {
          throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, this.state.startLoc);
        }
        var isIdentifier = tokenIsIdentifier(this.state.type);
        var declaration = isIdentifier && this.tsTryParseExportDeclaration() || _superClass.prototype.parseExportDeclaration.call(this, node);
        if (!declaration) return null;
        if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) {
          node.exportKind = "type";
        }
        if (isDeclare) {
          this.resetStartLocation(declaration, startLoc);
          declaration.declare = true;
        }
        return declaration;
      };
      _proto.parseClassId = function parseClassId(node, isStatement, optionalId, bindingType) {
        if ((!isStatement || optionalId) && this.isContextual(113)) {
          return;
        }
        _superClass.prototype.parseClassId.call(this, node, isStatement, optionalId, node.declare ? BindingFlag.TYPE_TS_AMBIENT : BindingFlag.TYPE_CLASS);
        var typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
        if (typeParameters) node.typeParameters = typeParameters;
      };
      _proto.parseClassPropertyAnnotation = function parseClassPropertyAnnotation(node) {
        if (!node.optional) {
          if (this.eat(35)) {
            node.definite = true;
          } else if (this.eat(17)) {
            node.optional = true;
          }
        }
        var type = this.tsTryParseTypeAnnotation();
        if (type) node.typeAnnotation = type;
      };
      _proto.parseClassProperty = function parseClassProperty(node) {
        this.parseClassPropertyAnnotation(node);
        if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) {
          this.raise(TSErrors.DeclareClassFieldHasInitializer, this.state.startLoc);
        }
        if (node["abstract"] && this.match(29)) {
          var key = node.key;
          this.raise(TSErrors.AbstractPropertyHasInitializer, this.state.startLoc, {
            propertyName: key.type === "Identifier" && !node.computed ? key.name : "[" + this.input.slice(key.start, key.end) + "]"
          });
        }
        return _superClass.prototype.parseClassProperty.call(this, node);
      };
      _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
        if (node["abstract"]) {
          this.raise(TSErrors.PrivateElementHasAbstract, node);
        }
        if (node.accessibility) {
          this.raise(TSErrors.PrivateElementHasAccessibility, node, {
            modifier: node.accessibility
          });
        }
        this.parseClassPropertyAnnotation(node);
        return _superClass.prototype.parseClassPrivateProperty.call(this, node);
      };
      _proto.parseClassAccessorProperty = function parseClassAccessorProperty(node) {
        this.parseClassPropertyAnnotation(node);
        if (node.optional) {
          this.raise(TSErrors.AccessorCannotBeOptional, node);
        }
        return _superClass.prototype.parseClassAccessorProperty.call(this, node);
      };
      _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
        var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
        if (typeParameters && isConstructor) {
          this.raise(TSErrors.ConstructorHasTypeParameters, typeParameters);
        }
        var _method$declare = method.declare,
          declare = _method$declare === void 0 ? false : _method$declare,
          kind = method.kind;
        if (declare && (kind === "get" || kind === "set")) {
          this.raise(TSErrors.DeclareAccessor, method, {
            kind: kind
          });
        }
        if (typeParameters) method.typeParameters = typeParameters;
        _superClass.prototype.pushClassMethod.call(this, classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
      };
      _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
        var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
        if (typeParameters) method.typeParameters = typeParameters;
        _superClass.prototype.pushClassPrivateMethod.call(this, classBody, method, isGenerator, isAsync);
      };
      _proto.declareClassPrivateMethodInScope = function declareClassPrivateMethodInScope(node, kind) {
        if (node.type === "TSDeclareMethod") return;
        if (node.type === "MethodDefinition" && !hasOwnProperty.call(node.value, "body")) {
          return;
        }
        _superClass.prototype.declareClassPrivateMethodInScope.call(this, node, kind);
      };
      _proto.parseClassSuper = function parseClassSuper(node) {
        _superClass.prototype.parseClassSuper.call(this, node);
        if (node.superClass && (this.match(47) || this.match(51))) {
          node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
        }
        if (this.eatContextual(113)) {
          node["implements"] = this.tsParseHeritageClause("implements");
        }
      };
      _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
        var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
        if (typeParameters) prop.typeParameters = typeParameters;
        return _superClass.prototype.parseObjPropValue.call(this, prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
      };
      _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
        var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
        if (typeParameters) node.typeParameters = typeParameters;
        _superClass.prototype.parseFunctionParams.call(this, node, isConstructor);
      };
      _proto.parseVarId = function parseVarId(decl, kind) {
        _superClass.prototype.parseVarId.call(this, decl, kind);
        if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) {
          decl.definite = true;
        }
        var type = this.tsTryParseTypeAnnotation();
        if (type) {
          decl.id.typeAnnotation = type;
          this.resetEndLocation(decl.id);
        }
      };
      _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
        if (this.match(14)) {
          node.returnType = this.tsParseTypeAnnotation();
        }
        return _superClass.prototype.parseAsyncArrowFromCallExpression.call(this, node, call);
      };
      _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
        var _this25 = this,
          _jsx,
          _jsx2,
          _typeCast,
          _jsx3,
          _typeCast2;
        var state;
        var jsx;
        var typeCast;
        if (this.hasPlugin("jsx") && (this.match(142) || this.match(47))) {
          state = this.state.clone();
          jsx = this.tryParse(function () {
            return _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
          }, state);
          if (!jsx.error) return jsx.node;
          var context = this.state.context;
          var currentContext = context[context.length - 1];
          if (currentContext === types.j_oTag || currentContext === types.j_expr) {
            context.pop();
          }
        }
        if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {
          return _superClass.prototype.parseMaybeAssign.call(this, refExpressionErrors, afterLeftParse);
        }
        if (!state || state === this.state) state = this.state.clone();
        var typeParameters;
        var arrow = this.tryParse(function (abort) {
          var _expr$extra, _typeParameters;
          typeParameters = _this25.tsParseTypeParameters(_this25.tsParseConstModifier);
          var expr = _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
          if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
            abort();
          }
          if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {
            _this25.resetStartLocationFromNode(expr, typeParameters);
          }
          expr.typeParameters = typeParameters;
          return expr;
        }, state);
        if (!arrow.error && !arrow.aborted) {
          if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
          return arrow.node;
        }
        if (!jsx) {
          assert$1(!this.hasPlugin("jsx"));
          typeCast = this.tryParse(function () {
            return _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
          }, state);
          if (!typeCast.error) return typeCast.node;
        }
        if ((_jsx2 = jsx) != null && _jsx2.node) {
          this.state = jsx.failState;
          return jsx.node;
        }
        if (arrow.node) {
          this.state = arrow.failState;
          if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
          return arrow.node;
        }
        if ((_typeCast = typeCast) != null && _typeCast.node) {
          this.state = typeCast.failState;
          return typeCast.node;
        }
        throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error);
      };
      _proto.reportReservedArrowTypeParam = function reportReservedArrowTypeParam(node) {
        var _node$extra;
        if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
          this.raise(TSErrors.ReservedArrowTypeParam, node);
        }
      };
      _proto.parseMaybeUnary = function parseMaybeUnary(refExpressionErrors, sawUnary) {
        if (!this.hasPlugin("jsx") && this.match(47)) {
          return this.tsParseTypeAssertion();
        }
        return _superClass.prototype.parseMaybeUnary.call(this, refExpressionErrors, sawUnary);
      };
      _proto.parseArrow = function parseArrow(node) {
        var _this26 = this;
        if (this.match(14)) {
          var result = this.tryParse(function (abort) {
            var returnType = _this26.tsParseTypeOrTypePredicateAnnotation(14);
            if (_this26.canInsertSemicolon() || !_this26.match(19)) abort();
            return returnType;
          });
          if (result.aborted) return;
          if (!result.thrown) {
            if (result.error) this.state = result.failState;
            node.returnType = result.node;
          }
        }
        return _superClass.prototype.parseArrow.call(this, node);
      };
      _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param, flags) {
        if (!(flags & ParseBindingListFlags.IS_FUNCTION_PARAMS)) return param;
        if (this.eat(17)) {
          param.optional = true;
        }
        var type = this.tsTryParseTypeAnnotation();
        if (type) param.typeAnnotation = type;
        this.resetEndLocation(param);
        return param;
      };
      _proto.isAssignable = function isAssignable(node, isBinding) {
        switch (node.type) {
          case "TSTypeCastExpression":
            return this.isAssignable(node.expression, isBinding);
          case "TSParameterProperty":
            return true;
          default:
            return _superClass.prototype.isAssignable.call(this, node, isBinding);
        }
      };
      _proto.toAssignable = function toAssignable(node, isLHS) {
        if (isLHS === void 0) {
          isLHS = false;
        }
        switch (node.type) {
          case "ParenthesizedExpression":
            this.toAssignableParenthesizedExpression(node, isLHS);
            break;
          case "TSAsExpression":
          case "TSSatisfiesExpression":
          case "TSNonNullExpression":
          case "TSTypeAssertion":
            if (isLHS) {
              this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, node);
            } else {
              this.raise(TSErrors.UnexpectedTypeCastInParameter, node);
            }
            this.toAssignable(node.expression, isLHS);
            break;
          case "AssignmentExpression":
            if (!isLHS && node.left.type === "TSTypeCastExpression") {
              node.left = this.typeCastToParameter(node.left);
            }
          default:
            _superClass.prototype.toAssignable.call(this, node, isLHS);
        }
      };
      _proto.toAssignableParenthesizedExpression = function toAssignableParenthesizedExpression(node, isLHS) {
        switch (node.expression.type) {
          case "TSAsExpression":
          case "TSSatisfiesExpression":
          case "TSNonNullExpression":
          case "TSTypeAssertion":
          case "ParenthesizedExpression":
            this.toAssignable(node.expression, isLHS);
            break;
          default:
            _superClass.prototype.toAssignable.call(this, node, isLHS);
        }
      };
      _proto.checkToRestConversion = function checkToRestConversion(node, allowPattern) {
        switch (node.type) {
          case "TSAsExpression":
          case "TSSatisfiesExpression":
          case "TSTypeAssertion":
          case "TSNonNullExpression":
            this.checkToRestConversion(node.expression, false);
            break;
          default:
            _superClass.prototype.checkToRestConversion.call(this, node, allowPattern);
        }
      };
      _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
        switch (type) {
          case "TSTypeCastExpression":
            return true;
          case "TSParameterProperty":
            return "parameter";
          case "TSNonNullExpression":
          case "TSInstantiationExpression":
            return "expression";
          case "TSAsExpression":
          case "TSSatisfiesExpression":
          case "TSTypeAssertion":
            return (binding !== BindingFlag.TYPE_NONE || !isUnparenthesizedInAssign) && ["expression", true];
          default:
            return _superClass.prototype.isValidLVal.call(this, type, isUnparenthesizedInAssign, binding);
        }
      };
      _proto.parseBindingAtom = function parseBindingAtom() {
        if (this.state.type === 78) {
          return this.parseIdentifier(true);
        }
        return _superClass.prototype.parseBindingAtom.call(this);
      };
      _proto.parseMaybeDecoratorArguments = function parseMaybeDecoratorArguments(expr) {
        if (this.match(47) || this.match(51)) {
          var typeArguments = this.tsParseTypeArgumentsInExpression();
          if (this.match(10)) {
            var call = _superClass.prototype.parseMaybeDecoratorArguments.call(this, expr);
            call.typeParameters = typeArguments;
            return call;
          }
          this.unexpected(null, 10);
        }
        return _superClass.prototype.parseMaybeDecoratorArguments.call(this, expr);
      };
      _proto.checkCommaAfterRest = function checkCommaAfterRest(close) {
        if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {
          this.next();
          return false;
        }
        return _superClass.prototype.checkCommaAfterRest.call(this, close);
      };
      _proto.isClassMethod = function isClassMethod() {
        return this.match(47) || _superClass.prototype.isClassMethod.call(this);
      };
      _proto.isClassProperty = function isClassProperty() {
        return this.match(35) || this.match(14) || _superClass.prototype.isClassProperty.call(this);
      };
      _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
        var node = _superClass.prototype.parseMaybeDefault.call(this, startLoc, left);
        if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
          this.raise(TSErrors.TypeAnnotationAfterAssign, node.typeAnnotation);
        }
        return node;
      };
      _proto.getTokenFromCode = function getTokenFromCode(code) {
        if (this.state.inType) {
          if (code === 62) {
            this.finishOp(48, 1);
            return;
          }
          if (code === 60) {
            this.finishOp(47, 1);
            return;
          }
        }
        _superClass.prototype.getTokenFromCode.call(this, code);
      };
      _proto.reScan_lt_gt = function reScan_lt_gt() {
        var type = this.state.type;
        if (type === 47) {
          this.state.pos -= 1;
          this.readToken_lt();
        } else if (type === 48) {
          this.state.pos -= 1;
          this.readToken_gt();
        }
      };
      _proto.reScan_lt = function reScan_lt() {
        var type = this.state.type;
        if (type === 51) {
          this.state.pos -= 2;
          this.finishOp(47, 1);
          return 47;
        }
        return type;
      };
      _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
        for (var i = 0; i < exprList.length; i++) {
          var expr = exprList[i];
          if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") {
            exprList[i] = this.typeCastToParameter(expr);
          }
        }
        _superClass.prototype.toAssignableList.call(this, exprList, trailingCommaLoc, isLHS);
      };
      _proto.typeCastToParameter = function typeCastToParameter(node) {
        node.expression.typeAnnotation = node.typeAnnotation;
        this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
        return node.expression;
      };
      _proto.shouldParseArrow = function shouldParseArrow(params) {
        var _this27 = this;
        if (this.match(14)) {
          return params.every(function (expr) {
            return _this27.isAssignable(expr, true);
          });
        }
        return _superClass.prototype.shouldParseArrow.call(this, params);
      };
      _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
        return this.match(14) || _superClass.prototype.shouldParseAsyncArrow.call(this);
      };
      _proto.canHaveLeadingDecorator = function canHaveLeadingDecorator() {
        return _superClass.prototype.canHaveLeadingDecorator.call(this) || this.isAbstractClass();
      };
      _proto.jsxParseOpeningElementAfterName = function jsxParseOpeningElementAfterName(node) {
        var _this28 = this;
        if (this.match(47) || this.match(51)) {
          var typeArguments = this.tsTryParseAndCatch(function () {
            return _this28.tsParseTypeArgumentsInExpression();
          });
          if (typeArguments) node.typeParameters = typeArguments;
        }
        return _superClass.prototype.jsxParseOpeningElementAfterName.call(this, node);
      };
      _proto.getGetterSetterExpectedParamCount = function getGetterSetterExpectedParamCount(method) {
        var baseCount = _superClass.prototype.getGetterSetterExpectedParamCount.call(this, method);
        var params = this.getObjectOrClassMethodParams(method);
        var firstParam = params[0];
        var hasContextParam = firstParam && this.isThisParam(firstParam);
        return hasContextParam ? baseCount + 1 : baseCount;
      };
      _proto.parseCatchClauseParam = function parseCatchClauseParam() {
        var param = _superClass.prototype.parseCatchClauseParam.call(this);
        var type = this.tsTryParseTypeAnnotation();
        if (type) {
          param.typeAnnotation = type;
          this.resetEndLocation(param);
        }
        return param;
      };
      _proto.tsInAmbientContext = function tsInAmbientContext(cb) {
        var _this$state = this.state,
          oldIsAmbientContext = _this$state.isAmbientContext,
          oldStrict = _this$state.strict;
        this.state.isAmbientContext = true;
        this.state.strict = false;
        try {
          return cb();
        } finally {
          this.state.isAmbientContext = oldIsAmbientContext;
          this.state.strict = oldStrict;
        }
      };
      _proto.parseClass = function parseClass(node, isStatement, optionalId) {
        var oldInAbstractClass = this.state.inAbstractClass;
        this.state.inAbstractClass = !!node["abstract"];
        try {
          return _superClass.prototype.parseClass.call(this, node, isStatement, optionalId);
        } finally {
          this.state.inAbstractClass = oldInAbstractClass;
        }
      };
      _proto.tsParseAbstractDeclaration = function tsParseAbstractDeclaration(node, decorators) {
        if (this.match(80)) {
          node["abstract"] = true;
          return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));
        } else if (this.isContextual(129)) {
          if (!this.hasFollowingLineBreak()) {
            node["abstract"] = true;
            this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, node);
            return this.tsParseInterfaceDeclaration(node);
          }
        } else {
          this.unexpected(null, 80);
        }
      };
      _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
        var method = _superClass.prototype.parseMethod.call(this, node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
        if (method["abstract"]) {
          var hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body;
          if (hasBody) {
            var key = method.key;
            this.raise(TSErrors.AbstractMethodHasImplementation, method, {
              methodName: key.type === "Identifier" && !method.computed ? key.name : "[" + this.input.slice(key.start, key.end) + "]"
            });
          }
        }
        return method;
      };
      _proto.tsParseTypeParameterName = function tsParseTypeParameterName() {
        var typeName = this.parseIdentifier();
        return typeName.name;
      };
      _proto.shouldParseAsAmbientContext = function shouldParseAsAmbientContext() {
        return !!this.getPluginOption("typescript", "dts");
      };
      _proto.parse = function parse() {
        if (this.shouldParseAsAmbientContext()) {
          this.state.isAmbientContext = true;
        }
        return _superClass.prototype.parse.call(this);
      };
      _proto.getExpression = function getExpression() {
        if (this.shouldParseAsAmbientContext()) {
          this.state.isAmbientContext = true;
        }
        return _superClass.prototype.getExpression.call(this);
      };
      _proto.parseExportSpecifier = function parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
        if (!isString && isMaybeTypeOnly) {
          this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);
          return this.finishNode(node, "ExportSpecifier");
        }
        node.exportKind = "value";
        return _superClass.prototype.parseExportSpecifier.call(this, node, isString, isInTypeExport, isMaybeTypeOnly);
      };
      _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
        if (!importedIsString && isMaybeTypeOnly) {
          this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);
          return this.finishNode(specifier, "ImportSpecifier");
        }
        specifier.importKind = "value";
        return _superClass.prototype.parseImportSpecifier.call(this, specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? BindingFlag.TYPE_TS_TYPE_IMPORT : BindingFlag.TYPE_TS_VALUE_IMPORT);
      };
      _proto.parseTypeOnlyImportExportSpecifier = function parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {
        var leftOfAsKey = isImport ? "imported" : "local";
        var rightOfAsKey = isImport ? "local" : "exported";
        var leftOfAs = node[leftOfAsKey];
        var rightOfAs;
        var hasTypeSpecifier = false;
        var canParseAsKeyword = true;
        var loc = leftOfAs.loc.start;
        if (this.isContextual(93)) {
          var firstAs = this.parseIdentifier();
          if (this.isContextual(93)) {
            var secondAs = this.parseIdentifier();
            if (tokenIsKeywordOrIdentifier(this.state.type)) {
              hasTypeSpecifier = true;
              leftOfAs = firstAs;
              rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
              canParseAsKeyword = false;
            } else {
              rightOfAs = secondAs;
              canParseAsKeyword = false;
            }
          } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
            canParseAsKeyword = false;
            rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
          } else {
            hasTypeSpecifier = true;
            leftOfAs = firstAs;
          }
        } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
          hasTypeSpecifier = true;
          if (isImport) {
            leftOfAs = this.parseIdentifier(true);
            if (!this.isContextual(93)) {
              this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);
            }
          } else {
            leftOfAs = this.parseModuleExportName();
          }
        }
        if (hasTypeSpecifier && isInTypeOnlyImportExport) {
          this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, loc);
        }
        node[leftOfAsKey] = leftOfAs;
        node[rightOfAsKey] = rightOfAs;
        var kindKey = isImport ? "importKind" : "exportKind";
        node[kindKey] = hasTypeSpecifier ? "type" : "value";
        if (canParseAsKeyword && this.eatContextual(93)) {
          node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();
        }
        if (!node[rightOfAsKey]) {
          node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);
        }
        if (isImport) {
          this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? BindingFlag.TYPE_TS_TYPE_IMPORT : BindingFlag.TYPE_TS_VALUE_IMPORT);
        }
      };
      return _createClass(TypeScriptParserMixin);
    }(superClass);
  });
  function isPossiblyLiteralEnum(expression) {
    if (expression.type !== "MemberExpression") return false;
    var computed = expression.computed,
      property = expression.property;
    if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) {
      return false;
    }
    return isUncomputedMemberExpressionChain(expression.object);
  }
  function isValidAmbientConstInitializer(expression, estree) {
    var _expression$extra;
    var type = expression.type;
    if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) {
      return false;
    }
    if (estree) {
      if (type === "Literal") {
        var value = expression.value;
        if (typeof value === "string" || typeof value === "boolean") {
          return true;
        }
      }
    } else {
      if (type === "StringLiteral" || type === "BooleanLiteral") {
        return true;
      }
    }
    if (isNumber$1(expression, estree) || isNegativeNumber(expression, estree)) {
      return true;
    }
    if (type === "TemplateLiteral" && expression.expressions.length === 0) {
      return true;
    }
    if (isPossiblyLiteralEnum(expression)) {
      return true;
    }
    return false;
  }
  function isNumber$1(expression, estree) {
    if (estree) {
      return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression);
    }
    return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral";
  }
  function isNegativeNumber(expression, estree) {
    if (expression.type === "UnaryExpression") {
      var operator = expression.operator,
        argument = expression.argument;
      if (operator === "-" && isNumber$1(argument, estree)) {
        return true;
      }
    }
    return false;
  }
  function isUncomputedMemberExpressionChain(expression) {
    if (expression.type === "Identifier") return true;
    if (expression.type !== "MemberExpression" || expression.computed) {
      return false;
    }
    return isUncomputedMemberExpressionChain(expression.object);
  }

  var _templateObject$C;
  var PlaceholderErrors = ParseErrorEnum(_templateObject$C || (_templateObject$C = _taggedTemplateLiteralLoose(["placeholders"])))({
    ClassNameIsRequired: "A class name is required.",
    UnexpectedSpace: "Unexpected space in placeholder."
  });
  var placeholders = (function (superClass) {
    return function (_superClass) {
      function PlaceholdersParserMixin() {
        return _superClass.apply(this, arguments) || this;
      }
      _inherits(PlaceholdersParserMixin, _superClass);
      var _proto = PlaceholdersParserMixin.prototype;
      _proto.parsePlaceholder = function parsePlaceholder(expectedNode) {
        if (this.match(144)) {
          var node = this.startNode();
          this.next();
          this.assertNoSpace();
          node.name = _superClass.prototype.parseIdentifier.call(this, true);
          this.assertNoSpace();
          this.expect(144);
          return this.finishPlaceholder(node, expectedNode);
        }
      };
      _proto.finishPlaceholder = function finishPlaceholder(node, expectedNode) {
        var placeholder = node;
        if (!placeholder.expectedNode || !placeholder.type) {
          placeholder = this.finishNode(placeholder, "Placeholder");
        }
        placeholder.expectedNode = expectedNode;
        return placeholder;
      };
      _proto.getTokenFromCode = function getTokenFromCode(code) {
        if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
          this.finishOp(144, 2);
        } else {
          _superClass.prototype.getTokenFromCode.call(this, code);
        }
      };
      _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
        return this.parsePlaceholder("Expression") || _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
      };
      _proto.parseIdentifier = function parseIdentifier(liberal) {
        return this.parsePlaceholder("Identifier") || _superClass.prototype.parseIdentifier.call(this, liberal);
      };
      _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
        if (word !== undefined) {
          _superClass.prototype.checkReservedWord.call(this, word, startLoc, checkKeywords, isBinding);
        }
      };
      _proto.parseBindingAtom = function parseBindingAtom() {
        return this.parsePlaceholder("Pattern") || _superClass.prototype.parseBindingAtom.call(this);
      };
      _proto.isValidLVal = function isValidLVal(type, isParenthesized, binding) {
        return type === "Placeholder" || _superClass.prototype.isValidLVal.call(this, type, isParenthesized, binding);
      };
      _proto.toAssignable = function toAssignable(node, isLHS) {
        if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
          node.expectedNode = "Pattern";
        } else {
          _superClass.prototype.toAssignable.call(this, node, isLHS);
        }
      };
      _proto.chStartsBindingIdentifier = function chStartsBindingIdentifier(ch, pos) {
        if (_superClass.prototype.chStartsBindingIdentifier.call(this, ch, pos)) {
          return true;
        }
        var nextToken = this.lookahead();
        if (nextToken.type === 144) {
          return true;
        }
        return false;
      };
      _proto.verifyBreakContinue = function verifyBreakContinue(node, isBreak) {
        if (node.label && node.label.type === "Placeholder") return;
        _superClass.prototype.verifyBreakContinue.call(this, node, isBreak);
      };
      _proto.parseExpressionStatement = function parseExpressionStatement(node, expr) {
        var _expr$extra;
        if (expr.type !== "Placeholder" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
          return _superClass.prototype.parseExpressionStatement.call(this, node, expr);
        }
        if (this.match(14)) {
          var stmt = node;
          stmt.label = this.finishPlaceholder(expr, "Identifier");
          this.next();
          stmt.body = _superClass.prototype.parseStatementOrSloppyAnnexBFunctionDeclaration.call(this);
          return this.finishNode(stmt, "LabeledStatement");
        }
        this.semicolon();
        var stmtPlaceholder = node;
        stmtPlaceholder.name = expr.name;
        return this.finishPlaceholder(stmtPlaceholder, "Statement");
      };
      _proto.parseBlock = function parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
        return this.parsePlaceholder("BlockStatement") || _superClass.prototype.parseBlock.call(this, allowDirectives, createNewLexicalScope, afterBlockParse);
      };
      _proto.parseFunctionId = function parseFunctionId(requireId) {
        return this.parsePlaceholder("Identifier") || _superClass.prototype.parseFunctionId.call(this, requireId);
      };
      _proto.parseClass = function parseClass(node, isStatement, optionalId) {
        var type = isStatement ? "ClassDeclaration" : "ClassExpression";
        this.next();
        var oldStrict = this.state.strict;
        var placeholder = this.parsePlaceholder("Identifier");
        if (placeholder) {
          if (this.match(81) || this.match(144) || this.match(5)) {
            node.id = placeholder;
          } else if (optionalId || !isStatement) {
            node.id = null;
            node.body = this.finishPlaceholder(placeholder, "ClassBody");
            return this.finishNode(node, type);
          } else {
            throw this.raise(PlaceholderErrors.ClassNameIsRequired, this.state.startLoc);
          }
        } else {
          this.parseClassId(node, isStatement, optionalId);
        }
        _superClass.prototype.parseClassSuper.call(this, node);
        node.body = this.parsePlaceholder("ClassBody") || _superClass.prototype.parseClassBody.call(this, !!node.superClass, oldStrict);
        return this.finishNode(node, type);
      };
      _proto.parseExport = function parseExport(node, decorators) {
        var placeholder = this.parsePlaceholder("Identifier");
        if (!placeholder) return _superClass.prototype.parseExport.call(this, node, decorators);
        var node2 = node;
        if (!this.isContextual(98) && !this.match(12)) {
          node2.specifiers = [];
          node2.source = null;
          node2.declaration = this.finishPlaceholder(placeholder, "Declaration");
          return this.finishNode(node2, "ExportNamedDeclaration");
        }
        this.expectPlugin("exportDefaultFrom");
        var specifier = this.startNode();
        specifier.exported = placeholder;
        node2.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
        return _superClass.prototype.parseExport.call(this, node2, decorators);
      };
      _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
        if (this.match(65)) {
          var next = this.nextTokenStart();
          if (this.isUnparsedContextual(next, "from")) {
            if (this.input.startsWith(tokenLabelName(144), this.nextTokenStartSince(next + 4))) {
              return true;
            }
          }
        }
        return _superClass.prototype.isExportDefaultSpecifier.call(this);
      };
      _proto.maybeParseExportDefaultSpecifier = function maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
        var _specifiers;
        if ((_specifiers = node.specifiers) != null && _specifiers.length) {
          return true;
        }
        return _superClass.prototype.maybeParseExportDefaultSpecifier.call(this, node, maybeDefaultIdentifier);
      };
      _proto.checkExport = function checkExport(node) {
        var specifiers = node.specifiers;
        if (specifiers != null && specifiers.length) {
          node.specifiers = specifiers.filter(function (node) {
            return node.exported.type === "Placeholder";
          });
        }
        _superClass.prototype.checkExport.call(this, node);
        node.specifiers = specifiers;
      };
      _proto.parseImport = function parseImport(node) {
        var placeholder = this.parsePlaceholder("Identifier");
        if (!placeholder) return _superClass.prototype.parseImport.call(this, node);
        node.specifiers = [];
        if (!this.isContextual(98) && !this.match(12)) {
          node.source = this.finishPlaceholder(placeholder, "StringLiteral");
          this.semicolon();
          return this.finishNode(node, "ImportDeclaration");
        }
        var specifier = this.startNodeAtNode(placeholder);
        specifier.local = placeholder;
        node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier"));
        if (this.eat(12)) {
          var hasStarImport = this.maybeParseStarImportSpecifier(node);
          if (!hasStarImport) this.parseNamedImportSpecifiers(node);
        }
        this.expectContextual(98);
        node.source = this.parseImportSource();
        this.semicolon();
        return this.finishNode(node, "ImportDeclaration");
      };
      _proto.parseImportSource = function parseImportSource() {
        return this.parsePlaceholder("StringLiteral") || _superClass.prototype.parseImportSource.call(this);
      };
      _proto.assertNoSpace = function assertNoSpace() {
        if (this.state.start > this.state.lastTokEndLoc.index) {
          this.raise(PlaceholderErrors.UnexpectedSpace, this.state.lastTokEndLoc);
        }
      };
      return _createClass(PlaceholdersParserMixin);
    }(superClass);
  });

  var v8intrinsic = (function (superClass) {
    return function (_superClass) {
      function V8IntrinsicMixin() {
        return _superClass.apply(this, arguments) || this;
      }
      _inherits(V8IntrinsicMixin, _superClass);
      var _proto = V8IntrinsicMixin.prototype;
      _proto.parseV8Intrinsic = function parseV8Intrinsic() {
        if (this.match(54)) {
          var v8IntrinsicStartLoc = this.state.startLoc;
          var node = this.startNode();
          this.next();
          if (tokenIsIdentifier(this.state.type)) {
            var name = this.parseIdentifierName();
            var identifier = this.createIdentifier(node, name);
            identifier.type = "V8IntrinsicIdentifier";
            if (this.match(10)) {
              return identifier;
            }
          }
          this.unexpected(v8IntrinsicStartLoc);
        }
      };
      _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
        return this.parseV8Intrinsic() || _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
      };
      return _createClass(V8IntrinsicMixin);
    }(superClass);
  });

  var PIPELINE_PROPOSALS$1 = ["minimal", "fsharp", "hack", "smart"];
  var TOPIC_TOKENS$1 = ["^^", "@@", "^", "%", "#"];
  function validatePlugins(pluginsMap) {
    if (pluginsMap.has("decorators")) {
      if (pluginsMap.has("decorators-legacy")) {
        throw new Error("Cannot use the decorators and decorators-legacy plugin together");
      }
      var decoratorsBeforeExport = pluginsMap.get("decorators").decoratorsBeforeExport;
      if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") {
        throw new Error("'decoratorsBeforeExport' must be a boolean, if specified.");
      }
      var allowCallParenthesized = pluginsMap.get("decorators").allowCallParenthesized;
      if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") {
        throw new Error("'allowCallParenthesized' must be a boolean.");
      }
    }
    if (pluginsMap.has("flow") && pluginsMap.has("typescript")) {
      throw new Error("Cannot combine flow and typescript plugins.");
    }
    if (pluginsMap.has("placeholders") && pluginsMap.has("v8intrinsic")) {
      throw new Error("Cannot combine placeholders and v8intrinsic plugins.");
    }
    if (pluginsMap.has("pipelineOperator")) {
      var _pluginsMap$get;
      var proposal = pluginsMap.get("pipelineOperator").proposal;
      if (!PIPELINE_PROPOSALS$1.includes(proposal)) {
        var proposalList = PIPELINE_PROPOSALS$1.map(function (p) {
          return "\"" + p + "\"";
        }).join(", ");
        throw new Error("\"pipelineOperator\" requires \"proposal\" option whose value must be one of: " + proposalList + ".");
      }
      var tupleSyntaxIsHash = ((_pluginsMap$get = pluginsMap.get("recordAndTuple")) == null ? void 0 : _pluginsMap$get.syntaxType) === "hash";
      if (proposal === "hack") {
        if (pluginsMap.has("placeholders")) {
          throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");
        }
        if (pluginsMap.has("v8intrinsic")) {
          throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");
        }
        var topicToken = pluginsMap.get("pipelineOperator").topicToken;
        if (!TOPIC_TOKENS$1.includes(topicToken)) {
          var tokenList = TOPIC_TOKENS$1.map(function (t) {
            return "\"" + t + "\"";
          }).join(", ");
          throw new Error("\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: " + tokenList + ".");
        }
        if (topicToken === "#" && tupleSyntaxIsHash) {
          throw new Error("Plugin conflict between `[\"pipelineOperator\", { proposal: \"hack\", topicToken: \"#\" }]` and `" + JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")]) + "`.");
        }
      } else if (proposal === "smart" && tupleSyntaxIsHash) {
        throw new Error("Plugin conflict between `[\"pipelineOperator\", { proposal: \"smart\" }]` and `" + JSON.stringify(["recordAndTuple", pluginsMap.get("recordAndTuple")]) + "`.");
      }
    }
    if (pluginsMap.has("moduleAttributes")) {
      {
        if (pluginsMap.has("importAttributes") || pluginsMap.has("importAssertions")) {
          throw new Error("Cannot combine importAssertions, importAttributes and moduleAttributes plugins.");
        }
        var moduleAttributesVersionPluginOption = pluginsMap.get("moduleAttributes").version;
        if (moduleAttributesVersionPluginOption !== "may-2020") {
          throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");
        }
      }
    }
    if (pluginsMap.has("importAttributes") && pluginsMap.has("importAssertions")) {
      throw new Error("Cannot combine importAssertions and importAttributes plugins.");
    }
    if (pluginsMap.has("recordAndTuple")) {
      var syntaxType = pluginsMap.get("recordAndTuple").syntaxType;
      if (syntaxType != null) {
        {
          var RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];
          if (!RECORD_AND_TUPLE_SYNTAX_TYPES.includes(syntaxType)) {
            throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(function (p) {
              return "'" + p + "'";
            }).join(", "));
          }
        }
      }
    }
    if (pluginsMap.has("asyncDoExpressions") && !pluginsMap.has("doExpressions")) {
      var error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");
      error.missingPlugins = "doExpressions";
      throw error;
    }
    if (pluginsMap.has("optionalChainingAssign") && pluginsMap.get("optionalChainingAssign").version !== "2023-07") {
      throw new Error("The 'optionalChainingAssign' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is '2023-07'.");
    }
  }
  var mixinPlugins = {
    estree: estree,
    jsx: jsx,
    flow: flow,
    typescript: typescript,
    v8intrinsic: v8intrinsic,
    placeholders: placeholders
  };
  var mixinPluginNames = Object.keys(mixinPlugins);

  var defaultOptions = {
    sourceType: "script",
    sourceFilename: undefined,
    startColumn: 0,
    startLine: 1,
    allowAwaitOutsideFunction: false,
    allowReturnOutsideFunction: false,
    allowNewTargetOutsideFunction: false,
    allowImportExportEverywhere: false,
    allowSuperOutsideMethod: false,
    allowUndeclaredExports: false,
    plugins: [],
    strictMode: null,
    ranges: false,
    tokens: false,
    createImportExpressions: false,
    createParenthesizedExpressions: false,
    errorRecovery: false,
    attachComment: true,
    annexB: true
  };
  function getOptions(opts) {
    if (opts == null) {
      return Object.assign({}, defaultOptions);
    }
    if (opts.annexB != null && opts.annexB !== false) {
      throw new Error("The `annexB` option can only be set to `false`.");
    }
    var options = {};
    for (var _i2 = 0, _Object$keys2 = Object.keys(defaultOptions); _i2 < _Object$keys2.length; _i2++) {
      var _opts$key;
      var key = _Object$keys2[_i2];
      options[key] = (_opts$key = opts[key]) != null ? _opts$key : defaultOptions[key];
    }
    return options;
  }

  var ExpressionParser = function (_LValParser) {
    function ExpressionParser() {
      return _LValParser.apply(this, arguments) || this;
    }
    _inherits(ExpressionParser, _LValParser);
    var _proto = ExpressionParser.prototype;
    _proto.checkProto = function checkProto(prop, isRecord, protoRef, refExpressionErrors) {
      if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
        return;
      }
      var key = prop.key;
      var name = key.type === "Identifier" ? key.name : key.value;
      if (name === "__proto__") {
        if (isRecord) {
          this.raise(Errors.RecordNoProto, key);
          return;
        }
        if (protoRef.used) {
          if (refExpressionErrors) {
            if (refExpressionErrors.doubleProtoLoc === null) {
              refExpressionErrors.doubleProtoLoc = key.loc.start;
            }
          } else {
            this.raise(Errors.DuplicateProto, key);
          }
        }
        protoRef.used = true;
      }
    };
    _proto.shouldExitDescending = function shouldExitDescending(expr, potentialArrowAt) {
      return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt;
    };
    _proto.getExpression = function getExpression() {
      this.enterInitialScopes();
      this.nextToken();
      var expr = this.parseExpression();
      if (!this.match(139)) {
        this.unexpected();
      }
      this.finalizeRemainingComments();
      expr.comments = this.comments;
      expr.errors = this.state.errors;
      if (this.options.tokens) {
        expr.tokens = this.tokens;
      }
      return expr;
    };
    _proto.parseExpression = function parseExpression(disallowIn, refExpressionErrors) {
      var _this = this;
      if (disallowIn) {
        return this.disallowInAnd(function () {
          return _this.parseExpressionBase(refExpressionErrors);
        });
      }
      return this.allowInAnd(function () {
        return _this.parseExpressionBase(refExpressionErrors);
      });
    };
    _proto.parseExpressionBase = function parseExpressionBase(refExpressionErrors) {
      var startLoc = this.state.startLoc;
      var expr = this.parseMaybeAssign(refExpressionErrors);
      if (this.match(12)) {
        var _node = this.startNodeAt(startLoc);
        _node.expressions = [expr];
        while (this.eat(12)) {
          _node.expressions.push(this.parseMaybeAssign(refExpressionErrors));
        }
        this.toReferencedList(_node.expressions);
        return this.finishNode(_node, "SequenceExpression");
      }
      return expr;
    };
    _proto.parseMaybeAssignDisallowIn = function parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {
      var _this2 = this;
      return this.disallowInAnd(function () {
        return _this2.parseMaybeAssign(refExpressionErrors, afterLeftParse);
      });
    };
    _proto.parseMaybeAssignAllowIn = function parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {
      var _this3 = this;
      return this.allowInAnd(function () {
        return _this3.parseMaybeAssign(refExpressionErrors, afterLeftParse);
      });
    };
    _proto.setOptionalParametersError = function setOptionalParametersError(refExpressionErrors, resultError) {
      var _resultError$loc;
      refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc;
    };
    _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
      var startLoc = this.state.startLoc;
      if (this.isContextual(108)) {
        if (this.prodParam.hasYield) {
          var _left = this.parseYield();
          if (afterLeftParse) {
            _left = afterLeftParse.call(this, _left, startLoc);
          }
          return _left;
        }
      }
      var ownExpressionErrors;
      if (refExpressionErrors) {
        ownExpressionErrors = false;
      } else {
        refExpressionErrors = new ExpressionErrors();
        ownExpressionErrors = true;
      }
      var type = this.state.type;
      if (type === 10 || tokenIsIdentifier(type)) {
        this.state.potentialArrowAt = this.state.start;
      }
      var left = this.parseMaybeConditional(refExpressionErrors);
      if (afterLeftParse) {
        left = afterLeftParse.call(this, left, startLoc);
      }
      if (tokenIsAssignment(this.state.type)) {
        var _node2 = this.startNodeAt(startLoc);
        var operator = this.state.value;
        _node2.operator = operator;
        if (this.match(29)) {
          this.toAssignable(left, true);
          _node2.left = left;
          var startIndex = startLoc.index;
          if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {
            refExpressionErrors.doubleProtoLoc = null;
          }
          if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {
            refExpressionErrors.shorthandAssignLoc = null;
          }
          if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {
            this.checkDestructuringPrivate(refExpressionErrors);
            refExpressionErrors.privateKeyLoc = null;
          }
        } else {
          _node2.left = left;
        }
        this.next();
        _node2.right = this.parseMaybeAssign();
        this.checkLVal(left, this.finishNode(_node2, "AssignmentExpression"));
        return _node2;
      } else if (ownExpressionErrors) {
        this.checkExpressionErrors(refExpressionErrors, true);
      }
      return left;
    };
    _proto.parseMaybeConditional = function parseMaybeConditional(refExpressionErrors) {
      var startLoc = this.state.startLoc;
      var potentialArrowAt = this.state.potentialArrowAt;
      var expr = this.parseExprOps(refExpressionErrors);
      if (this.shouldExitDescending(expr, potentialArrowAt)) {
        return expr;
      }
      return this.parseConditional(expr, startLoc, refExpressionErrors);
    };
    _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
      if (this.eat(17)) {
        var _node3 = this.startNodeAt(startLoc);
        _node3.test = expr;
        _node3.consequent = this.parseMaybeAssignAllowIn();
        this.expect(14);
        _node3.alternate = this.parseMaybeAssign();
        return this.finishNode(_node3, "ConditionalExpression");
      }
      return expr;
    };
    _proto.parseMaybeUnaryOrPrivate = function parseMaybeUnaryOrPrivate(refExpressionErrors) {
      return this.match(138) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);
    };
    _proto.parseExprOps = function parseExprOps(refExpressionErrors) {
      var startLoc = this.state.startLoc;
      var potentialArrowAt = this.state.potentialArrowAt;
      var expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);
      if (this.shouldExitDescending(expr, potentialArrowAt)) {
        return expr;
      }
      return this.parseExprOp(expr, startLoc, -1);
    };
    _proto.parseExprOp = function parseExprOp(left, leftStartLoc, minPrec) {
      if (this.isPrivateName(left)) {
        var value = this.getPrivateNameSV(left);
        if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {
          this.raise(Errors.PrivateInExpectedIn, left, {
            identifierName: value
          });
        }
        this.classScope.usePrivateName(value, left.loc.start);
      }
      var op = this.state.type;
      if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {
        var prec = tokenOperatorPrecedence(op);
        if (prec > minPrec) {
          if (op === 39) {
            this.expectPlugin("pipelineOperator");
            if (this.state.inFSharpPipelineDirectBody) {
              return left;
            }
            this.checkPipelineAtInfixOperator(left, leftStartLoc);
          }
          var _node4 = this.startNodeAt(leftStartLoc);
          _node4.left = left;
          _node4.operator = this.state.value;
          var logical = op === 41 || op === 42;
          var coalesce = op === 40;
          if (coalesce) {
            prec = tokenOperatorPrecedence(42);
          }
          this.next();
          if (op === 39 && this.hasPlugin(["pipelineOperator", {
            proposal: "minimal"
          }])) {
            if (this.state.type === 96 && this.prodParam.hasAwait) {
              throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, this.state.startLoc);
            }
          }
          _node4.right = this.parseExprOpRightExpr(op, prec);
          var finishedNode = this.finishNode(_node4, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
          var nextOp = this.state.type;
          if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {
            throw this.raise(Errors.MixingCoalesceWithLogical, this.state.startLoc);
          }
          return this.parseExprOp(finishedNode, leftStartLoc, minPrec);
        }
      }
      return left;
    };
    _proto.parseExprOpRightExpr = function parseExprOpRightExpr(op, prec) {
      var _this4 = this;
      var startLoc = this.state.startLoc;
      switch (op) {
        case 39:
          switch (this.getPluginOption("pipelineOperator", "proposal")) {
            case "hack":
              return this.withTopicBindingContext(function () {
                return _this4.parseHackPipeBody();
              });
            case "smart":
              return this.withTopicBindingContext(function () {
                if (_this4.prodParam.hasYield && _this4.isContextual(108)) {
                  throw _this4.raise(Errors.PipeBodyIsTighter, _this4.state.startLoc);
                }
                return _this4.parseSmartPipelineBodyInStyle(_this4.parseExprOpBaseRightExpr(op, prec), startLoc);
              });
            case "fsharp":
              return this.withSoloAwaitPermittingContext(function () {
                return _this4.parseFSharpPipelineBody(prec);
              });
          }
        default:
          return this.parseExprOpBaseRightExpr(op, prec);
      }
    };
    _proto.parseExprOpBaseRightExpr = function parseExprOpBaseRightExpr(op, prec) {
      var startLoc = this.state.startLoc;
      return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);
    };
    _proto.parseHackPipeBody = function parseHackPipeBody() {
      var _body$extra;
      var startLoc = this.state.startLoc;
      var body = this.parseMaybeAssign();
      var requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);
      if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {
        this.raise(Errors.PipeUnparenthesizedBody, startLoc, {
          type: body.type
        });
      }
      if (!this.topicReferenceWasUsedInCurrentContext()) {
        this.raise(Errors.PipeTopicUnused, startLoc);
      }
      return body;
    };
    _proto.checkExponentialAfterUnary = function checkExponentialAfterUnary(node) {
      if (this.match(57)) {
        this.raise(Errors.UnexpectedTokenUnaryExponentiation, node.argument);
      }
    };
    _proto.parseMaybeUnary = function parseMaybeUnary(refExpressionErrors, sawUnary) {
      var startLoc = this.state.startLoc;
      var isAwait = this.isContextual(96);
      if (isAwait && this.recordAwaitIfAllowed()) {
        this.next();
        var _expr = this.parseAwait(startLoc);
        if (!sawUnary) this.checkExponentialAfterUnary(_expr);
        return _expr;
      }
      var update = this.match(34);
      var node = this.startNode();
      if (tokenIsPrefix(this.state.type)) {
        node.operator = this.state.value;
        node.prefix = true;
        if (this.match(72)) {
          this.expectPlugin("throwExpressions");
        }
        var isDelete = this.match(89);
        this.next();
        node.argument = this.parseMaybeUnary(null, true);
        this.checkExpressionErrors(refExpressionErrors, true);
        if (this.state.strict && isDelete) {
          var arg = node.argument;
          if (arg.type === "Identifier") {
            this.raise(Errors.StrictDelete, node);
          } else if (this.hasPropertyAsPrivateName(arg)) {
            this.raise(Errors.DeletePrivateField, node);
          }
        }
        if (!update) {
          if (!sawUnary) {
            this.checkExponentialAfterUnary(node);
          }
          return this.finishNode(node, "UnaryExpression");
        }
      }
      var expr = this.parseUpdate(node, update, refExpressionErrors);
      if (isAwait) {
        var type = this.state.type;
        var startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
        if (startsExpr && !this.isAmbiguousAwait()) {
          this.raiseOverwrite(Errors.AwaitNotInAsyncContext, startLoc);
          return this.parseAwait(startLoc);
        }
      }
      return expr;
    };
    _proto.parseUpdate = function parseUpdate(node, update, refExpressionErrors) {
      if (update) {
        var updateExpressionNode = node;
        this.checkLVal(updateExpressionNode.argument, this.finishNode(updateExpressionNode, "UpdateExpression"));
        return node;
      }
      var startLoc = this.state.startLoc;
      var expr = this.parseExprSubscripts(refExpressionErrors);
      if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
      while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {
        var _node5 = this.startNodeAt(startLoc);
        _node5.operator = this.state.value;
        _node5.prefix = false;
        _node5.argument = expr;
        this.next();
        this.checkLVal(expr, expr = this.finishNode(_node5, "UpdateExpression"));
      }
      return expr;
    };
    _proto.parseExprSubscripts = function parseExprSubscripts(refExpressionErrors) {
      var startLoc = this.state.startLoc;
      var potentialArrowAt = this.state.potentialArrowAt;
      var expr = this.parseExprAtom(refExpressionErrors);
      if (this.shouldExitDescending(expr, potentialArrowAt)) {
        return expr;
      }
      return this.parseSubscripts(expr, startLoc);
    };
    _proto.parseSubscripts = function parseSubscripts(base, startLoc, noCalls) {
      var state = {
        optionalChainMember: false,
        maybeAsyncArrow: this.atPossibleAsyncArrow(base),
        stop: false
      };
      do {
        base = this.parseSubscript(base, startLoc, noCalls, state);
        state.maybeAsyncArrow = false;
      } while (!state.stop);
      return base;
    };
    _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
      var type = this.state.type;
      if (!noCalls && type === 15) {
        return this.parseBind(base, startLoc, noCalls, state);
      } else if (tokenIsTemplate(type)) {
        return this.parseTaggedTemplateExpression(base, startLoc, state);
      }
      var optional = false;
      if (type === 18) {
        if (noCalls) {
          this.raise(Errors.OptionalChainingNoNew, this.state.startLoc);
          if (this.lookaheadCharCode() === 40) {
            state.stop = true;
            return base;
          }
        }
        state.optionalChainMember = optional = true;
        this.next();
      }
      if (!noCalls && this.match(10)) {
        return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);
      } else {
        var computed = this.eat(0);
        if (computed || optional || this.eat(16)) {
          return this.parseMember(base, startLoc, state, computed, optional);
        } else {
          state.stop = true;
          return base;
        }
      }
    };
    _proto.parseMember = function parseMember(base, startLoc, state, computed, optional) {
      var node = this.startNodeAt(startLoc);
      node.object = base;
      node.computed = computed;
      if (computed) {
        node.property = this.parseExpression();
        this.expect(3);
      } else if (this.match(138)) {
        if (base.type === "Super") {
          this.raise(Errors.SuperPrivateField, startLoc);
        }
        this.classScope.usePrivateName(this.state.value, this.state.startLoc);
        node.property = this.parsePrivateName();
      } else {
        node.property = this.parseIdentifier(true);
      }
      if (state.optionalChainMember) {
        node.optional = optional;
        return this.finishNode(node, "OptionalMemberExpression");
      } else {
        return this.finishNode(node, "MemberExpression");
      }
    };
    _proto.parseBind = function parseBind(base, startLoc, noCalls, state) {
      var node = this.startNodeAt(startLoc);
      node.object = base;
      this.next();
      node.callee = this.parseNoCallExpr();
      state.stop = true;
      return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls);
    };
    _proto.parseCoverCallAndAsyncArrowHead = function parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {
      var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
      var refExpressionErrors = null;
      this.state.maybeInArrowParameters = true;
      this.next();
      var node = this.startNodeAt(startLoc);
      node.callee = base;
      var maybeAsyncArrow = state.maybeAsyncArrow,
        optionalChainMember = state.optionalChainMember;
      if (maybeAsyncArrow) {
        this.expressionScope.enter(newAsyncArrowScope());
        refExpressionErrors = new ExpressionErrors();
      }
      if (optionalChainMember) {
        node.optional = optional;
      }
      if (optional) {
        node.arguments = this.parseCallExpressionArguments(11);
      } else {
        node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors);
      }
      var finishedNode = this.finishCallExpression(node, optionalChainMember);
      if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
        state.stop = true;
        this.checkDestructuringPrivate(refExpressionErrors);
        this.expressionScope.validateAsPattern();
        this.expressionScope.exit();
        finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);
      } else {
        if (maybeAsyncArrow) {
          this.checkExpressionErrors(refExpressionErrors, true);
          this.expressionScope.exit();
        }
        this.toReferencedArguments(finishedNode);
      }
      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
      return finishedNode;
    };
    _proto.toReferencedArguments = function toReferencedArguments(node, isParenthesizedExpr) {
      this.toReferencedListDeep(node.arguments, isParenthesizedExpr);
    };
    _proto.parseTaggedTemplateExpression = function parseTaggedTemplateExpression(base, startLoc, state) {
      var node = this.startNodeAt(startLoc);
      node.tag = base;
      node.quasi = this.parseTemplate(true);
      if (state.optionalChainMember) {
        this.raise(Errors.OptionalChainingNoTemplate, startLoc);
      }
      return this.finishNode(node, "TaggedTemplateExpression");
    };
    _proto.atPossibleAsyncArrow = function atPossibleAsyncArrow(base) {
      return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;
    };
    _proto.expectImportAttributesPlugin = function expectImportAttributesPlugin() {
      if (!this.hasPlugin("importAssertions")) {
        this.expectPlugin("importAttributes");
      }
    };
    _proto.finishCallExpression = function finishCallExpression(node, optional) {
      if (node.callee.type === "Import") {
        if (node.arguments.length === 2) {
          {
            if (!this.hasPlugin("moduleAttributes")) {
              this.expectImportAttributesPlugin();
            }
          }
        }
        if (node.arguments.length === 0 || node.arguments.length > 2) {
          this.raise(Errors.ImportCallArity, node, {
            maxArgumentCount: this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1
          });
        } else {
          for (var _i2 = 0, _node$arguments2 = node.arguments; _i2 < _node$arguments2.length; _i2++) {
            var arg = _node$arguments2[_i2];
            if (arg.type === "SpreadElement") {
              this.raise(Errors.ImportCallSpreadArgument, arg);
            }
          }
        }
      }
      return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
    };
    _proto.parseCallExpressionArguments = function parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {
      var elts = [];
      var first = true;
      var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
      this.state.inFSharpPipelineDirectBody = false;
      while (!this.eat(close)) {
        if (first) {
          first = false;
        } else {
          this.expect(12);
          if (this.match(close)) {
            if (dynamicImport && !this.hasPlugin("importAttributes") && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) {
              this.raise(Errors.ImportCallArgumentTrailingComma, this.state.lastTokStartLoc);
            }
            if (nodeForExtra) {
              this.addTrailingCommaExtraToNode(nodeForExtra);
            }
            this.next();
            break;
          }
        }
        elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));
      }
      this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
      return elts;
    };
    _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
      return this.match(19) && !this.canInsertSemicolon();
    };
    _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
      var _call$extra;
      this.resetPreviousNodeTrailingComments(call);
      this.expect(19);
      this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);
      if (call.innerComments) {
        setInnerComments(node, call.innerComments);
      }
      if (call.callee.trailingComments) {
        setInnerComments(node, call.callee.trailingComments);
      }
      return node;
    };
    _proto.parseNoCallExpr = function parseNoCallExpr() {
      var startLoc = this.state.startLoc;
      return this.parseSubscripts(this.parseExprAtom(), startLoc, true);
    };
    _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
      var node;
      var decorators = null;
      var type = this.state.type;
      switch (type) {
        case 79:
          return this.parseSuper();
        case 83:
          node = this.startNode();
          this.next();
          if (this.match(16)) {
            return this.parseImportMetaProperty(node);
          }
          if (this.match(10)) {
            if (this.options.createImportExpressions) {
              return this.parseImportCall(node);
            } else {
              return this.finishNode(node, "Import");
            }
          } else {
            this.raise(Errors.UnsupportedImport, this.state.lastTokStartLoc);
            return this.finishNode(node, "Import");
          }
        case 78:
          node = this.startNode();
          this.next();
          return this.finishNode(node, "ThisExpression");
        case 90:
          {
            return this.parseDo(this.startNode(), false);
          }
        case 56:
        case 31:
          {
            this.readRegexp();
            return this.parseRegExpLiteral(this.state.value);
          }
        case 134:
          return this.parseNumericLiteral(this.state.value);
        case 135:
          return this.parseBigIntLiteral(this.state.value);
        case 136:
          return this.parseDecimalLiteral(this.state.value);
        case 133:
          return this.parseStringLiteral(this.state.value);
        case 84:
          return this.parseNullLiteral();
        case 85:
          return this.parseBooleanLiteral(true);
        case 86:
          return this.parseBooleanLiteral(false);
        case 10:
          {
            var canBeArrow = this.state.potentialArrowAt === this.state.start;
            return this.parseParenAndDistinguishExpression(canBeArrow);
          }
        case 2:
        case 1:
          {
            return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);
          }
        case 0:
          {
            return this.parseArrayLike(3, true, false, refExpressionErrors);
          }
        case 6:
        case 7:
          {
            return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);
          }
        case 5:
          {
            return this.parseObjectLike(8, false, false, refExpressionErrors);
          }
        case 68:
          return this.parseFunctionOrFunctionSent();
        case 26:
          decorators = this.parseDecorators();
        case 80:
          return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);
        case 77:
          return this.parseNewOrNewTarget();
        case 25:
        case 24:
          return this.parseTemplate(false);
        case 15:
          {
            node = this.startNode();
            this.next();
            node.object = null;
            var callee = node.callee = this.parseNoCallExpr();
            if (callee.type === "MemberExpression") {
              return this.finishNode(node, "BindExpression");
            } else {
              throw this.raise(Errors.UnsupportedBind, callee);
            }
          }
        case 138:
          {
            this.raise(Errors.PrivateInExpectedIn, this.state.startLoc, {
              identifierName: this.state.value
            });
            return this.parsePrivateName();
          }
        case 33:
          {
            return this.parseTopicReferenceThenEqualsSign(54, "%");
          }
        case 32:
          {
            return this.parseTopicReferenceThenEqualsSign(44, "^");
          }
        case 37:
        case 38:
          {
            return this.parseTopicReference("hack");
          }
        case 44:
        case 54:
        case 27:
          {
            var pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
            if (pipeProposal) {
              return this.parseTopicReference(pipeProposal);
            }
            this.unexpected();
            break;
          }
        case 47:
          {
            var lookaheadCh = this.input.codePointAt(this.nextTokenStart());
            if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
              this.expectOnePlugin(["jsx", "flow", "typescript"]);
            } else {
              this.unexpected();
            }
            break;
          }
        default:
          if (tokenIsIdentifier(type)) {
            if (this.isContextual(127) && this.lookaheadInLineCharCode() === 123) {
              return this.parseModuleExpression();
            }
            var _canBeArrow = this.state.potentialArrowAt === this.state.start;
            var containsEsc = this.state.containsEsc;
            var id = this.parseIdentifier();
            if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {
              var _type = this.state.type;
              if (_type === 68) {
                this.resetPreviousNodeTrailingComments(id);
                this.next();
                return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));
              } else if (tokenIsIdentifier(_type)) {
                if (this.lookaheadCharCode() === 61) {
                  return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));
                } else {
                  return id;
                }
              } else if (_type === 90) {
                this.resetPreviousNodeTrailingComments(id);
                return this.parseDo(this.startNodeAtNode(id), true);
              }
            }
            if (_canBeArrow && this.match(19) && !this.canInsertSemicolon()) {
              this.next();
              return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);
            }
            return id;
          } else {
            this.unexpected();
          }
      }
    };
    _proto.parseTopicReferenceThenEqualsSign = function parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {
      var pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
      if (pipeProposal) {
        this.state.type = topicTokenType;
        this.state.value = topicTokenValue;
        this.state.pos--;
        this.state.end--;
        this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);
        return this.parseTopicReference(pipeProposal);
      } else {
        this.unexpected();
      }
    };
    _proto.parseTopicReference = function parseTopicReference(pipeProposal) {
      var node = this.startNode();
      var startLoc = this.state.startLoc;
      var tokenType = this.state.type;
      this.next();
      return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);
    };
    _proto.finishTopicReference = function finishTopicReference(node, startLoc, pipeProposal, tokenType) {
      if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {
        var nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference";
        if (!this.topicReferenceIsAllowedInCurrentContext()) {
          this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, startLoc);
        }
        this.registerTopicReference();
        return this.finishNode(node, nodeType);
      } else {
        throw this.raise(Errors.PipeTopicUnconfiguredToken, startLoc, {
          token: tokenLabelName(tokenType)
        });
      }
    };
    _proto.testTopicReferenceConfiguration = function testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {
      switch (pipeProposal) {
        case "hack":
          {
            return this.hasPlugin(["pipelineOperator", {
              topicToken: tokenLabelName(tokenType)
            }]);
          }
        case "smart":
          return tokenType === 27;
        default:
          throw this.raise(Errors.PipeTopicRequiresHackPipes, startLoc);
      }
    };
    _proto.parseAsyncArrowUnaryFunction = function parseAsyncArrowUnaryFunction(node) {
      this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));
      var params = [this.parseIdentifier()];
      this.prodParam.exit();
      if (this.hasPrecedingLineBreak()) {
        this.raise(Errors.LineTerminatorBeforeArrow, this.state.curPosition());
      }
      this.expect(19);
      return this.parseArrowExpression(node, params, true);
    };
    _proto.parseDo = function parseDo(node, isAsync) {
      this.expectPlugin("doExpressions");
      if (isAsync) {
        this.expectPlugin("asyncDoExpressions");
      }
      node.async = isAsync;
      this.next();
      var oldLabels = this.state.labels;
      this.state.labels = [];
      if (isAsync) {
        this.prodParam.enter(ParamKind.PARAM_AWAIT);
        node.body = this.parseBlock();
        this.prodParam.exit();
      } else {
        node.body = this.parseBlock();
      }
      this.state.labels = oldLabels;
      return this.finishNode(node, "DoExpression");
    };
    _proto.parseSuper = function parseSuper() {
      var node = this.startNode();
      this.next();
      if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
        this.raise(Errors.SuperNotAllowed, node);
      } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
        this.raise(Errors.UnexpectedSuper, node);
      }
      if (!this.match(10) && !this.match(0) && !this.match(16)) {
        this.raise(Errors.UnsupportedSuper, node);
      }
      return this.finishNode(node, "Super");
    };
    _proto.parsePrivateName = function parsePrivateName() {
      var node = this.startNode();
      var id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));
      var name = this.state.value;
      this.next();
      node.id = this.createIdentifier(id, name);
      return this.finishNode(node, "PrivateName");
    };
    _proto.parseFunctionOrFunctionSent = function parseFunctionOrFunctionSent() {
      var node = this.startNode();
      this.next();
      if (this.prodParam.hasYield && this.match(16)) {
        var meta = this.createIdentifier(this.startNodeAtNode(node), "function");
        this.next();
        if (this.match(103)) {
          this.expectPlugin("functionSent");
        } else if (!this.hasPlugin("functionSent")) {
          this.unexpected();
        }
        return this.parseMetaProperty(node, meta, "sent");
      }
      return this.parseFunction(node);
    };
    _proto.parseMetaProperty = function parseMetaProperty(node, meta, propertyName) {
      node.meta = meta;
      var containsEsc = this.state.containsEsc;
      node.property = this.parseIdentifier(true);
      if (node.property.name !== propertyName || containsEsc) {
        this.raise(Errors.UnsupportedMetaProperty, node.property, {
          target: meta.name,
          onlyValidPropertyName: propertyName
        });
      }
      return this.finishNode(node, "MetaProperty");
    };
    _proto.parseImportMetaProperty = function parseImportMetaProperty(node) {
      var id = this.createIdentifier(this.startNodeAtNode(node), "import");
      this.next();
      if (this.isContextual(101)) {
        if (!this.inModule) {
          this.raise(Errors.ImportMetaOutsideModule, id);
        }
        this.sawUnambiguousESM = true;
      } else if (this.isContextual(105) || this.isContextual(97)) {
        var isSource = this.isContextual(105);
        if (!isSource) this.unexpected();
        this.expectPlugin(isSource ? "sourcePhaseImports" : "deferredImportEvaluation");
        if (!this.options.createImportExpressions) {
          throw this.raise(Errors.DynamicImportPhaseRequiresImportExpressions, this.state.startLoc, {
            phase: this.state.value
          });
        }
        this.next();
        node.phase = isSource ? "source" : "defer";
        return this.parseImportCall(node);
      }
      return this.parseMetaProperty(node, id, "meta");
    };
    _proto.parseLiteralAtNode = function parseLiteralAtNode(value, type, node) {
      this.addExtra(node, "rawValue", value);
      this.addExtra(node, "raw", this.input.slice(node.start, this.state.end));
      node.value = value;
      this.next();
      return this.finishNode(node, type);
    };
    _proto.parseLiteral = function parseLiteral(value, type) {
      var node = this.startNode();
      return this.parseLiteralAtNode(value, type, node);
    };
    _proto.parseStringLiteral = function parseStringLiteral(value) {
      return this.parseLiteral(value, "StringLiteral");
    };
    _proto.parseNumericLiteral = function parseNumericLiteral(value) {
      return this.parseLiteral(value, "NumericLiteral");
    };
    _proto.parseBigIntLiteral = function parseBigIntLiteral(value) {
      return this.parseLiteral(value, "BigIntLiteral");
    };
    _proto.parseDecimalLiteral = function parseDecimalLiteral(value) {
      return this.parseLiteral(value, "DecimalLiteral");
    };
    _proto.parseRegExpLiteral = function parseRegExpLiteral(value) {
      var node = this.startNode();
      this.addExtra(node, "raw", this.input.slice(node.start, this.state.end));
      node.pattern = value.pattern;
      node.flags = value.flags;
      this.next();
      return this.finishNode(node, "RegExpLiteral");
    };
    _proto.parseBooleanLiteral = function parseBooleanLiteral(value) {
      var node = this.startNode();
      node.value = value;
      this.next();
      return this.finishNode(node, "BooleanLiteral");
    };
    _proto.parseNullLiteral = function parseNullLiteral() {
      var node = this.startNode();
      this.next();
      return this.finishNode(node, "NullLiteral");
    };
    _proto.parseParenAndDistinguishExpression = function parseParenAndDistinguishExpression(canBeArrow) {
      var startLoc = this.state.startLoc;
      var val;
      this.next();
      this.expressionScope.enter(newArrowHeadScope());
      var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
      var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
      this.state.maybeInArrowParameters = true;
      this.state.inFSharpPipelineDirectBody = false;
      var innerStartLoc = this.state.startLoc;
      var exprList = [];
      var refExpressionErrors = new ExpressionErrors();
      var first = true;
      var spreadStartLoc;
      var optionalCommaStartLoc;
      while (!this.match(11)) {
        if (first) {
          first = false;
        } else {
          this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);
          if (this.match(11)) {
            optionalCommaStartLoc = this.state.startLoc;
            break;
          }
        }
        if (this.match(21)) {
          var spreadNodeStartLoc = this.state.startLoc;
          spreadStartLoc = this.state.startLoc;
          exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));
          if (!this.checkCommaAfterRest(41)) {
            break;
          }
        } else {
          exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));
        }
      }
      var innerEndLoc = this.state.lastTokEndLoc;
      this.expect(11);
      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
      this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
      var arrowNode = this.startNodeAt(startLoc);
      if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {
        this.checkDestructuringPrivate(refExpressionErrors);
        this.expressionScope.validateAsPattern();
        this.expressionScope.exit();
        this.parseArrowExpression(arrowNode, exprList, false);
        return arrowNode;
      }
      this.expressionScope.exit();
      if (!exprList.length) {
        this.unexpected(this.state.lastTokStartLoc);
      }
      if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);
      if (spreadStartLoc) this.unexpected(spreadStartLoc);
      this.checkExpressionErrors(refExpressionErrors, true);
      this.toReferencedListDeep(exprList, true);
      if (exprList.length > 1) {
        val = this.startNodeAt(innerStartLoc);
        val.expressions = exprList;
        this.finishNode(val, "SequenceExpression");
        this.resetEndLocation(val, innerEndLoc);
      } else {
        val = exprList[0];
      }
      return this.wrapParenthesis(startLoc, val);
    };
    _proto.wrapParenthesis = function wrapParenthesis(startLoc, expression) {
      if (!this.options.createParenthesizedExpressions) {
        this.addExtra(expression, "parenthesized", true);
        this.addExtra(expression, "parenStart", startLoc.index);
        this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);
        return expression;
      }
      var parenExpression = this.startNodeAt(startLoc);
      parenExpression.expression = expression;
      return this.finishNode(parenExpression, "ParenthesizedExpression");
    };
    _proto.shouldParseArrow = function shouldParseArrow(params) {
      return !this.canInsertSemicolon();
    };
    _proto.parseArrow = function parseArrow(node) {
      if (this.eat(19)) {
        return node;
      }
    };
    _proto.parseParenItem = function parseParenItem(node, startLoc) {
      return node;
    };
    _proto.parseNewOrNewTarget = function parseNewOrNewTarget() {
      var node = this.startNode();
      this.next();
      if (this.match(16)) {
        var meta = this.createIdentifier(this.startNodeAtNode(node), "new");
        this.next();
        var metaProp = this.parseMetaProperty(node, meta, "target");
        if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) {
          this.raise(Errors.UnexpectedNewTarget, metaProp);
        }
        return metaProp;
      }
      return this.parseNew(node);
    };
    _proto.parseNew = function parseNew(node) {
      this.parseNewCallee(node);
      if (this.eat(10)) {
        var args = this.parseExprList(11);
        this.toReferencedList(args);
        node.arguments = args;
      } else {
        node.arguments = [];
      }
      return this.finishNode(node, "NewExpression");
    };
    _proto.parseNewCallee = function parseNewCallee(node) {
      var isImport = this.match(83);
      var callee = this.parseNoCallExpr();
      node.callee = callee;
      if (isImport && (callee.type === "Import" || callee.type === "ImportExpression")) {
        this.raise(Errors.ImportCallNotNewExpression, callee);
      }
    };
    _proto.parseTemplateElement = function parseTemplateElement(isTagged) {
      var _this$state = this.state,
        start = _this$state.start,
        startLoc = _this$state.startLoc,
        end = _this$state.end,
        value = _this$state.value;
      var elemStart = start + 1;
      var elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));
      if (value === null) {
        if (!isTagged) {
          this.raise(Errors.InvalidEscapeSequenceTemplate, createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1));
        }
      }
      var isTail = this.match(24);
      var endOffset = isTail ? -1 : -2;
      var elemEnd = end + endOffset;
      elem.value = {
        raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"),
        cooked: value === null ? null : value.slice(1, endOffset)
      };
      elem.tail = isTail;
      this.next();
      var finishedNode = this.finishNode(elem, "TemplateElement");
      this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));
      return finishedNode;
    };
    _proto.parseTemplate = function parseTemplate(isTagged) {
      var node = this.startNode();
      var curElt = this.parseTemplateElement(isTagged);
      var quasis = [curElt];
      var substitutions = [];
      while (!curElt.tail) {
        substitutions.push(this.parseTemplateSubstitution());
        this.readTemplateContinuation();
        quasis.push(curElt = this.parseTemplateElement(isTagged));
      }
      node.expressions = substitutions;
      node.quasis = quasis;
      return this.finishNode(node, "TemplateLiteral");
    };
    _proto.parseTemplateSubstitution = function parseTemplateSubstitution() {
      return this.parseExpression();
    };
    _proto.parseObjectLike = function parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {
      if (isRecord) {
        this.expectPlugin("recordAndTuple");
      }
      var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
      this.state.inFSharpPipelineDirectBody = false;
      var propHash = Object.create(null);
      var first = true;
      var node = this.startNode();
      node.properties = [];
      this.next();
      while (!this.match(close)) {
        if (first) {
          first = false;
        } else {
          this.expect(12);
          if (this.match(close)) {
            this.addTrailingCommaExtraToNode(node);
            break;
          }
        }
        var prop = void 0;
        if (isPattern) {
          prop = this.parseBindingProperty();
        } else {
          prop = this.parsePropertyDefinition(refExpressionErrors);
          this.checkProto(prop, isRecord, propHash, refExpressionErrors);
        }
        if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {
          this.raise(Errors.InvalidRecordProperty, prop);
        }
        {
          if (prop.shorthand) {
            this.addExtra(prop, "shorthand", true);
          }
        }
        node.properties.push(prop);
      }
      this.next();
      this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
      var type = "ObjectExpression";
      if (isPattern) {
        type = "ObjectPattern";
      } else if (isRecord) {
        type = "RecordExpression";
      }
      return this.finishNode(node, type);
    };
    _proto.addTrailingCommaExtraToNode = function addTrailingCommaExtraToNode(node) {
      this.addExtra(node, "trailingComma", this.state.lastTokStartLoc.index);
      this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false);
    };
    _proto.maybeAsyncOrAccessorProp = function maybeAsyncOrAccessorProp(prop) {
      return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));
    };
    _proto.parsePropertyDefinition = function parsePropertyDefinition(refExpressionErrors) {
      var decorators = [];
      if (this.match(26)) {
        if (this.hasPlugin("decorators")) {
          this.raise(Errors.UnsupportedPropertyDecorator, this.state.startLoc);
        }
        while (this.match(26)) {
          decorators.push(this.parseDecorator());
        }
      }
      var prop = this.startNode();
      var isAsync = false;
      var isAccessor = false;
      var startLoc;
      if (this.match(21)) {
        if (decorators.length) this.unexpected();
        return this.parseSpread();
      }
      if (decorators.length) {
        prop.decorators = decorators;
        decorators = [];
      }
      prop.method = false;
      if (refExpressionErrors) {
        startLoc = this.state.startLoc;
      }
      var isGenerator = this.eat(55);
      this.parsePropertyNamePrefixOperator(prop);
      var containsEsc = this.state.containsEsc;
      this.parsePropertyName(prop, refExpressionErrors);
      if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {
        var key = prop.key;
        var keyName = key.name;
        if (keyName === "async" && !this.hasPrecedingLineBreak()) {
          isAsync = true;
          this.resetPreviousNodeTrailingComments(key);
          isGenerator = this.eat(55);
          this.parsePropertyName(prop);
        }
        if (keyName === "get" || keyName === "set") {
          isAccessor = true;
          this.resetPreviousNodeTrailingComments(key);
          prop.kind = keyName;
          if (this.match(55)) {
            isGenerator = true;
            this.raise(Errors.AccessorIsGenerator, this.state.curPosition(), {
              kind: keyName
            });
            this.next();
          }
          this.parsePropertyName(prop);
        }
      }
      return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);
    };
    _proto.getGetterSetterExpectedParamCount = function getGetterSetterExpectedParamCount(method) {
      return method.kind === "get" ? 0 : 1;
    };
    _proto.getObjectOrClassMethodParams = function getObjectOrClassMethodParams(method) {
      return method.params;
    };
    _proto.checkGetterSetterParams = function checkGetterSetterParams(method) {
      var _params;
      var paramCount = this.getGetterSetterExpectedParamCount(method);
      var params = this.getObjectOrClassMethodParams(method);
      if (params.length !== paramCount) {
        this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, method);
      }
      if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {
        this.raise(Errors.BadSetterRestParameter, method);
      }
    };
    _proto.parseObjectMethod = function parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
      if (isAccessor) {
        var finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");
        this.checkGetterSetterParams(finishedProp);
        return finishedProp;
      }
      if (isAsync || isGenerator || this.match(10)) {
        if (isPattern) this.unexpected();
        prop.kind = "method";
        prop.method = true;
        return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
      }
    };
    _proto.parseObjectProperty = function parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
      prop.shorthand = false;
      if (this.eat(14)) {
        prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);
        return this.finishNode(prop, "ObjectProperty");
      }
      if (!prop.computed && prop.key.type === "Identifier") {
        this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);
        if (isPattern) {
          prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key));
        } else if (this.match(29)) {
          var shorthandAssignLoc = this.state.startLoc;
          if (refExpressionErrors != null) {
            if (refExpressionErrors.shorthandAssignLoc === null) {
              refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;
            }
          } else {
            this.raise(Errors.InvalidCoverInitializedName, shorthandAssignLoc);
          }
          prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key));
        } else {
          prop.value = cloneIdentifier(prop.key);
        }
        prop.shorthand = true;
        return this.finishNode(prop, "ObjectProperty");
      }
    };
    _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
      var node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
      if (!node) this.unexpected();
      return node;
    };
    _proto.parsePropertyName = function parsePropertyName(prop, refExpressionErrors) {
      if (this.eat(0)) {
        prop.computed = true;
        prop.key = this.parseMaybeAssignAllowIn();
        this.expect(3);
      } else {
        var _this$state2 = this.state,
          type = _this$state2.type,
          value = _this$state2.value;
        var key;
        if (tokenIsKeywordOrIdentifier(type)) {
          key = this.parseIdentifier(true);
        } else {
          switch (type) {
            case 134:
              key = this.parseNumericLiteral(value);
              break;
            case 133:
              key = this.parseStringLiteral(value);
              break;
            case 135:
              key = this.parseBigIntLiteral(value);
              break;
            case 136:
              key = this.parseDecimalLiteral(value);
              break;
            case 138:
              {
                var privateKeyLoc = this.state.startLoc;
                if (refExpressionErrors != null) {
                  if (refExpressionErrors.privateKeyLoc === null) {
                    refExpressionErrors.privateKeyLoc = privateKeyLoc;
                  }
                } else {
                  this.raise(Errors.UnexpectedPrivateField, privateKeyLoc);
                }
                key = this.parsePrivateName();
                break;
              }
            default:
              this.unexpected();
          }
        }
        prop.key = key;
        if (type !== 138) {
          prop.computed = false;
        }
      }
    };
    _proto.initFunction = function initFunction(node, isAsync) {
      node.id = null;
      node.generator = false;
      node.async = isAsync;
    };
    _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
      if (inClassScope === void 0) {
        inClassScope = false;
      }
      this.initFunction(node, isAsync);
      node.generator = isGenerator;
      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.SUPER | (inClassScope ? ScopeFlag.CLASS : 0) | (allowDirectSuper ? ScopeFlag.DIRECT_SUPER : 0));
      this.prodParam.enter(functionFlags(isAsync, node.generator));
      this.parseFunctionParams(node, isConstructor);
      var finishedNode = this.parseFunctionBodyAndFinish(node, type, true);
      this.prodParam.exit();
      this.scope.exit();
      return finishedNode;
    };
    _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
      if (isTuple) {
        this.expectPlugin("recordAndTuple");
      }
      var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
      this.state.inFSharpPipelineDirectBody = false;
      var node = this.startNode();
      this.next();
      node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);
      this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
      return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");
    };
    _proto.parseArrowExpression = function parseArrowExpression(node, params, isAsync, trailingCommaLoc) {
      this.scope.enter(ScopeFlag.FUNCTION | ScopeFlag.ARROW);
      var flags = functionFlags(isAsync, false);
      if (!this.match(5) && this.prodParam.hasIn) {
        flags |= ParamKind.PARAM_IN;
      }
      this.prodParam.enter(flags);
      this.initFunction(node, isAsync);
      var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
      if (params) {
        this.state.maybeInArrowParameters = true;
        this.setArrowFunctionParameters(node, params, trailingCommaLoc);
      }
      this.state.maybeInArrowParameters = false;
      this.parseFunctionBody(node, true);
      this.prodParam.exit();
      this.scope.exit();
      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
      return this.finishNode(node, "ArrowFunctionExpression");
    };
    _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params, trailingCommaLoc) {
      this.toAssignableList(params, trailingCommaLoc, false);
      node.params = params;
    };
    _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
      if (isMethod === void 0) {
        isMethod = false;
      }
      this.parseFunctionBody(node, false, isMethod);
      return this.finishNode(node, type);
    };
    _proto.parseFunctionBody = function parseFunctionBody(node, allowExpression, isMethod) {
      var _this5 = this;
      if (isMethod === void 0) {
        isMethod = false;
      }
      var isExpression = allowExpression && !this.match(5);
      this.expressionScope.enter(newExpressionScope());
      if (isExpression) {
        node.body = this.parseMaybeAssign();
        this.checkParams(node, false, allowExpression, false);
      } else {
        var oldStrict = this.state.strict;
        var oldLabels = this.state.labels;
        this.state.labels = [];
        this.prodParam.enter(this.prodParam.currentFlags() | ParamKind.PARAM_RETURN);
        node.body = this.parseBlock(true, false, function (hasStrictModeDirective) {
          var nonSimple = !_this5.isSimpleParamList(node.params);
          if (hasStrictModeDirective && nonSimple) {
            _this5.raise(Errors.IllegalLanguageModeDirective, (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node);
          }
          var strictModeChanged = !oldStrict && _this5.state.strict;
          _this5.checkParams(node, !_this5.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);
          if (_this5.state.strict && node.id) {
            _this5.checkIdentifier(node.id, BindingFlag.TYPE_OUTSIDE, strictModeChanged);
          }
        });
        this.prodParam.exit();
        this.state.labels = oldLabels;
      }
      this.expressionScope.exit();
    };
    _proto.isSimpleParameter = function isSimpleParameter(node) {
      return node.type === "Identifier";
    };
    _proto.isSimpleParamList = function isSimpleParamList(params) {
      for (var i = 0, len = params.length; i < len; i++) {
        if (!this.isSimpleParameter(params[i])) return false;
      }
      return true;
    };
    _proto.checkParams = function checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged) {
      if (strictModeChanged === void 0) {
        strictModeChanged = true;
      }
      var checkClashes = !allowDuplicates && new Set();
      var formalParameters = {
        type: "FormalParameters"
      };
      for (var _i4 = 0, _node$params2 = node.params; _i4 < _node$params2.length; _i4++) {
        var param = _node$params2[_i4];
        this.checkLVal(param, formalParameters, BindingFlag.TYPE_VAR, checkClashes, strictModeChanged);
      }
    };
    _proto.parseExprList = function parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
      var elts = [];
      var first = true;
      while (!this.eat(close)) {
        if (first) {
          first = false;
        } else {
          this.expect(12);
          if (this.match(close)) {
            if (nodeForExtra) {
              this.addTrailingCommaExtraToNode(nodeForExtra);
            }
            this.next();
            break;
          }
        }
        elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));
      }
      return elts;
    };
    _proto.parseExprListItem = function parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {
      var elt;
      if (this.match(12)) {
        if (!allowEmpty) {
          this.raise(Errors.UnexpectedToken, this.state.curPosition(), {
            unexpected: ","
          });
        }
        elt = null;
      } else if (this.match(21)) {
        var spreadNodeStartLoc = this.state.startLoc;
        elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);
      } else if (this.match(17)) {
        this.expectPlugin("partialApplication");
        if (!allowPlaceholder) {
          this.raise(Errors.UnexpectedArgumentPlaceholder, this.state.startLoc);
        }
        var _node6 = this.startNode();
        this.next();
        elt = this.finishNode(_node6, "ArgumentPlaceholder");
      } else {
        elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);
      }
      return elt;
    };
    _proto.parseIdentifier = function parseIdentifier(liberal) {
      var node = this.startNode();
      var name = this.parseIdentifierName(liberal);
      return this.createIdentifier(node, name);
    };
    _proto.createIdentifier = function createIdentifier(node, name) {
      node.name = name;
      node.loc.identifierName = name;
      return this.finishNode(node, "Identifier");
    };
    _proto.parseIdentifierName = function parseIdentifierName(liberal) {
      var name;
      var _this$state3 = this.state,
        startLoc = _this$state3.startLoc,
        type = _this$state3.type;
      if (tokenIsKeywordOrIdentifier(type)) {
        name = this.state.value;
      } else {
        this.unexpected();
      }
      var tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
      if (liberal) {
        if (tokenIsKeyword) {
          this.replaceToken(132);
        }
      } else {
        this.checkReservedWord(name, startLoc, tokenIsKeyword, false);
      }
      this.next();
      return name;
    };
    _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
      if (word.length > 10) {
        return;
      }
      if (!canBeReservedWord(word)) {
        return;
      }
      if (checkKeywords && isKeyword(word)) {
        this.raise(Errors.UnexpectedKeyword, startLoc, {
          keyword: word
        });
        return;
      }
      var reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
      if (reservedTest(word, this.inModule)) {
        this.raise(Errors.UnexpectedReservedWord, startLoc, {
          reservedWord: word
        });
        return;
      } else if (word === "yield") {
        if (this.prodParam.hasYield) {
          this.raise(Errors.YieldBindingIdentifier, startLoc);
          return;
        }
      } else if (word === "await") {
        if (this.prodParam.hasAwait) {
          this.raise(Errors.AwaitBindingIdentifier, startLoc);
          return;
        }
        if (this.scope.inStaticBlock) {
          this.raise(Errors.AwaitBindingIdentifierInStaticBlock, startLoc);
          return;
        }
        this.expressionScope.recordAsyncArrowParametersError(startLoc);
      } else if (word === "arguments") {
        if (this.scope.inClassAndNotInNonArrowFunction) {
          this.raise(Errors.ArgumentsInClass, startLoc);
          return;
        }
      }
    };
    _proto.recordAwaitIfAllowed = function recordAwaitIfAllowed() {
      var isAwaitAllowed = this.prodParam.hasAwait || this.options.allowAwaitOutsideFunction && !this.scope.inFunction;
      if (isAwaitAllowed && !this.scope.inFunction) {
        this.state.hasTopLevelAwait = true;
      }
      return isAwaitAllowed;
    };
    _proto.parseAwait = function parseAwait(startLoc) {
      var node = this.startNodeAt(startLoc);
      this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, node);
      if (this.eat(55)) {
        this.raise(Errors.ObsoleteAwaitStar, node);
      }
      if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
        if (this.isAmbiguousAwait()) {
          this.ambiguousScriptDifferentAst = true;
        } else {
          this.sawUnambiguousESM = true;
        }
      }
      if (!this.state.soloAwait) {
        node.argument = this.parseMaybeUnary(null, true);
      }
      return this.finishNode(node, "AwaitExpression");
    };
    _proto.isAmbiguousAwait = function isAmbiguousAwait() {
      if (this.hasPrecedingLineBreak()) return true;
      var type = this.state.type;
      return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 102 && !this.state.containsEsc || type === 137 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54;
    };
    _proto.parseYield = function parseYield() {
      var node = this.startNode();
      this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, node);
      this.next();
      var delegating = false;
      var argument = null;
      if (!this.hasPrecedingLineBreak()) {
        delegating = this.eat(55);
        switch (this.state.type) {
          case 13:
          case 139:
          case 8:
          case 11:
          case 3:
          case 9:
          case 14:
          case 12:
            if (!delegating) break;
          default:
            argument = this.parseMaybeAssign();
        }
      }
      node.delegate = delegating;
      node.argument = argument;
      return this.finishNode(node, "YieldExpression");
    };
    _proto.parseImportCall = function parseImportCall(node) {
      this.next();
      node.source = this.parseMaybeAssignAllowIn();
      if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) {
        node.options = null;
      }
      if (this.eat(12)) {
        this.expectImportAttributesPlugin();
        if (!this.match(11)) {
          node.options = this.parseMaybeAssignAllowIn();
          this.eat(12);
        }
      }
      this.expect(11);
      return this.finishNode(node, "ImportExpression");
    };
    _proto.checkPipelineAtInfixOperator = function checkPipelineAtInfixOperator(left, leftStartLoc) {
      if (this.hasPlugin(["pipelineOperator", {
        proposal: "smart"
      }])) {
        if (left.type === "SequenceExpression") {
          this.raise(Errors.PipelineHeadSequenceExpression, leftStartLoc);
        }
      }
    };
    _proto.parseSmartPipelineBodyInStyle = function parseSmartPipelineBodyInStyle(childExpr, startLoc) {
      if (this.isSimpleReference(childExpr)) {
        var bodyNode = this.startNodeAt(startLoc);
        bodyNode.callee = childExpr;
        return this.finishNode(bodyNode, "PipelineBareFunction");
      } else {
        var _bodyNode = this.startNodeAt(startLoc);
        this.checkSmartPipeTopicBodyEarlyErrors(startLoc);
        _bodyNode.expression = childExpr;
        return this.finishNode(_bodyNode, "PipelineTopicExpression");
      }
    };
    _proto.isSimpleReference = function isSimpleReference(expression) {
      switch (expression.type) {
        case "MemberExpression":
          return !expression.computed && this.isSimpleReference(expression.object);
        case "Identifier":
          return true;
        default:
          return false;
      }
    };
    _proto.checkSmartPipeTopicBodyEarlyErrors = function checkSmartPipeTopicBodyEarlyErrors(startLoc) {
      if (this.match(19)) {
        throw this.raise(Errors.PipelineBodyNoArrow, this.state.startLoc);
      }
      if (!this.topicReferenceWasUsedInCurrentContext()) {
        this.raise(Errors.PipelineTopicUnused, startLoc);
      }
    };
    _proto.withTopicBindingContext = function withTopicBindingContext(callback) {
      var outerContextTopicState = this.state.topicContext;
      this.state.topicContext = {
        maxNumOfResolvableTopics: 1,
        maxTopicIndex: null
      };
      try {
        return callback();
      } finally {
        this.state.topicContext = outerContextTopicState;
      }
    };
    _proto.withSmartMixTopicForbiddingContext = function withSmartMixTopicForbiddingContext(callback) {
      if (this.hasPlugin(["pipelineOperator", {
        proposal: "smart"
      }])) {
        var outerContextTopicState = this.state.topicContext;
        this.state.topicContext = {
          maxNumOfResolvableTopics: 0,
          maxTopicIndex: null
        };
        try {
          return callback();
        } finally {
          this.state.topicContext = outerContextTopicState;
        }
      } else {
        return callback();
      }
    };
    _proto.withSoloAwaitPermittingContext = function withSoloAwaitPermittingContext(callback) {
      var outerContextSoloAwaitState = this.state.soloAwait;
      this.state.soloAwait = true;
      try {
        return callback();
      } finally {
        this.state.soloAwait = outerContextSoloAwaitState;
      }
    };
    _proto.allowInAnd = function allowInAnd(callback) {
      var flags = this.prodParam.currentFlags();
      var prodParamToSet = ParamKind.PARAM_IN & ~flags;
      if (prodParamToSet) {
        this.prodParam.enter(flags | ParamKind.PARAM_IN);
        try {
          return callback();
        } finally {
          this.prodParam.exit();
        }
      }
      return callback();
    };
    _proto.disallowInAnd = function disallowInAnd(callback) {
      var flags = this.prodParam.currentFlags();
      var prodParamToClear = ParamKind.PARAM_IN & flags;
      if (prodParamToClear) {
        this.prodParam.enter(flags & ~ParamKind.PARAM_IN);
        try {
          return callback();
        } finally {
          this.prodParam.exit();
        }
      }
      return callback();
    };
    _proto.registerTopicReference = function registerTopicReference() {
      this.state.topicContext.maxTopicIndex = 0;
    };
    _proto.topicReferenceIsAllowedInCurrentContext = function topicReferenceIsAllowedInCurrentContext() {
      return this.state.topicContext.maxNumOfResolvableTopics >= 1;
    };
    _proto.topicReferenceWasUsedInCurrentContext = function topicReferenceWasUsedInCurrentContext() {
      return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
    };
    _proto.parseFSharpPipelineBody = function parseFSharpPipelineBody(prec) {
      var startLoc = this.state.startLoc;
      this.state.potentialArrowAt = this.state.start;
      var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
      this.state.inFSharpPipelineDirectBody = true;
      var ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);
      this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
      return ret;
    };
    _proto.parseModuleExpression = function parseModuleExpression() {
      this.expectPlugin("moduleBlocks");
      var node = this.startNode();
      this.next();
      if (!this.match(5)) {
        this.unexpected(null, 5);
      }
      var program = this.startNodeAt(this.state.endLoc);
      this.next();
      var revertScopes = this.initializeScopes(true);
      this.enterInitialScopes();
      try {
        node.body = this.parseProgram(program, 8, "module");
      } finally {
        revertScopes();
      }
      return this.finishNode(node, "ModuleExpression");
    };
    _proto.parsePropertyNamePrefixOperator = function parsePropertyNamePrefixOperator(prop) {};
    return _createClass(ExpressionParser);
  }(LValParser);

  var loopLabel = {
      kind: LoopLabelKind.Loop
    },
    switchLabel = {
      kind: LoopLabelKind.Switch
    };
  var ParseFunctionFlag = {
    Expression: 0,
    Declaration: 1,
    HangingDeclaration: 2,
    NullableId: 4,
    Async: 8
  };
  var ParseStatementFlag = {
    StatementOnly: 0,
    AllowImportExport: 1,
    AllowDeclaration: 2,
    AllowFunctionDeclaration: 4,
    AllowLabeledFunction: 8
  };
  var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/;
  var keywordRelationalOperator = new RegExp("in(?:stanceof)?", "y");
  function babel7CompatTokens(tokens, input) {
    for (var i = 0; i < tokens.length; i++) {
      var token = tokens[i];
      var type = token.type;
      if (typeof type === "number") {
        {
          if (type === 138) {
            var loc = token.loc,
              start = token.start,
              value = token.value,
              end = token.end;
            var hashEndPos = start + 1;
            var hashEndLoc = createPositionWithColumnOffset(loc.start, 1);
            tokens.splice(i, 1, new Token({
              type: getExportedToken(27),
              value: "#",
              start: start,
              end: hashEndPos,
              startLoc: loc.start,
              endLoc: hashEndLoc
            }), new Token({
              type: getExportedToken(132),
              value: value,
              start: hashEndPos,
              end: end,
              startLoc: hashEndLoc,
              endLoc: loc.end
            }));
            i++;
            continue;
          }
          if (tokenIsTemplate(type)) {
            var _loc = token.loc,
              _start = token.start,
              _value = token.value,
              _end = token.end;
            var backquoteEnd = _start + 1;
            var backquoteEndLoc = createPositionWithColumnOffset(_loc.start, 1);
            var startToken = void 0;
            if (input.charCodeAt(_start) === 96) {
              startToken = new Token({
                type: getExportedToken(22),
                value: "`",
                start: _start,
                end: backquoteEnd,
                startLoc: _loc.start,
                endLoc: backquoteEndLoc
              });
            } else {
              startToken = new Token({
                type: getExportedToken(8),
                value: "}",
                start: _start,
                end: backquoteEnd,
                startLoc: _loc.start,
                endLoc: backquoteEndLoc
              });
            }
            var templateValue = void 0,
              templateElementEnd = void 0,
              templateElementEndLoc = void 0,
              endToken = void 0;
            if (type === 24) {
              templateElementEnd = _end - 1;
              templateElementEndLoc = createPositionWithColumnOffset(_loc.end, -1);
              templateValue = _value === null ? null : _value.slice(1, -1);
              endToken = new Token({
                type: getExportedToken(22),
                value: "`",
                start: templateElementEnd,
                end: _end,
                startLoc: templateElementEndLoc,
                endLoc: _loc.end
              });
            } else {
              templateElementEnd = _end - 2;
              templateElementEndLoc = createPositionWithColumnOffset(_loc.end, -2);
              templateValue = _value === null ? null : _value.slice(1, -2);
              endToken = new Token({
                type: getExportedToken(23),
                value: "${",
                start: templateElementEnd,
                end: _end,
                startLoc: templateElementEndLoc,
                endLoc: _loc.end
              });
            }
            tokens.splice(i, 1, startToken, new Token({
              type: getExportedToken(20),
              value: templateValue,
              start: backquoteEnd,
              end: templateElementEnd,
              startLoc: backquoteEndLoc,
              endLoc: templateElementEndLoc
            }), endToken);
            i += 2;
            continue;
          }
        }
        token.type = getExportedToken(type);
      }
    }
    return tokens;
  }
  var StatementParser = function (_ExpressionParser) {
    function StatementParser() {
      return _ExpressionParser.apply(this, arguments) || this;
    }
    _inherits(StatementParser, _ExpressionParser);
    var _proto = StatementParser.prototype;
    _proto.parseTopLevel = function parseTopLevel(file, program) {
      file.program = this.parseProgram(program);
      file.comments = this.comments;
      if (this.options.tokens) {
        file.tokens = babel7CompatTokens(this.tokens, this.input);
      }
      return this.finishNode(file, "File");
    };
    _proto.parseProgram = function parseProgram(program, end, sourceType) {
      if (end === void 0) {
        end = 139;
      }
      if (sourceType === void 0) {
        sourceType = this.options.sourceType;
      }
      program.sourceType = sourceType;
      program.interpreter = this.parseInterpreterDirective();
      this.parseBlockBody(program, true, true, end);
      if (this.inModule) {
        if (!this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
          for (var _i2 = 0, _Array$from2 = Array.from(this.scope.undefinedExports); _i2 < _Array$from2.length; _i2++) {
            var _Array$from2$_i = _Array$from2[_i2],
              localName = _Array$from2$_i[0],
              at = _Array$from2$_i[1];
            this.raise(Errors.ModuleExportUndefined, at, {
              localName: localName
            });
          }
        }
        this.addExtra(program, "topLevelAwait", this.state.hasTopLevelAwait);
      }
      var finishedProgram;
      if (end === 139) {
        finishedProgram = this.finishNode(program, "Program");
      } else {
        finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1));
      }
      return finishedProgram;
    };
    _proto.stmtToDirective = function stmtToDirective(stmt) {
      var directive = stmt;
      directive.type = "Directive";
      directive.value = directive.expression;
      delete directive.expression;
      var directiveLiteral = directive.value;
      var expressionValue = directiveLiteral.value;
      var raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);
      var val = directiveLiteral.value = raw.slice(1, -1);
      this.addExtra(directiveLiteral, "raw", raw);
      this.addExtra(directiveLiteral, "rawValue", val);
      this.addExtra(directiveLiteral, "expressionValue", expressionValue);
      directiveLiteral.type = "DirectiveLiteral";
      return directive;
    };
    _proto.parseInterpreterDirective = function parseInterpreterDirective() {
      if (!this.match(28)) {
        return null;
      }
      var node = this.startNode();
      node.value = this.state.value;
      this.next();
      return this.finishNode(node, "InterpreterDirective");
    };
    _proto.isLet = function isLet() {
      if (!this.isContextual(100)) {
        return false;
      }
      return this.hasFollowingBindingAtom();
    };
    _proto.chStartsBindingIdentifier = function chStartsBindingIdentifier(ch, pos) {
      if (isIdentifierStart(ch)) {
        keywordRelationalOperator.lastIndex = pos;
        if (keywordRelationalOperator.test(this.input)) {
          var endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);
          if (!isIdentifierChar(endCh) && endCh !== 92) {
            return false;
          }
        }
        return true;
      } else if (ch === 92) {
        return true;
      } else {
        return false;
      }
    };
    _proto.chStartsBindingPattern = function chStartsBindingPattern(ch) {
      return ch === 91 || ch === 123;
    };
    _proto.hasFollowingBindingAtom = function hasFollowingBindingAtom() {
      var next = this.nextTokenStart();
      var nextCh = this.codePointAtPos(next);
      return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);
    };
    _proto.hasInLineFollowingBindingIdentifierOrBrace = function hasInLineFollowingBindingIdentifierOrBrace() {
      var next = this.nextTokenInLineStart();
      var nextCh = this.codePointAtPos(next);
      return nextCh === 123 || this.chStartsBindingIdentifier(nextCh, next);
    };
    _proto.startsUsingForOf = function startsUsingForOf() {
      var _this$lookahead = this.lookahead(),
        type = _this$lookahead.type,
        containsEsc = _this$lookahead.containsEsc;
      if (type === 102 && !containsEsc) {
        return false;
      } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) {
        this.expectPlugin("explicitResourceManagement");
        return true;
      }
    };
    _proto.startsAwaitUsing = function startsAwaitUsing() {
      var next = this.nextTokenInLineStart();
      if (this.isUnparsedContextual(next, "using")) {
        next = this.nextTokenInLineStartSince(next + 5);
        var nextCh = this.codePointAtPos(next);
        if (this.chStartsBindingIdentifier(nextCh, next)) {
          this.expectPlugin("explicitResourceManagement");
          return true;
        }
      }
      return false;
    };
    _proto.parseModuleItem = function parseModuleItem() {
      return this.parseStatementLike(ParseStatementFlag.AllowImportExport | ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | ParseStatementFlag.AllowLabeledFunction);
    };
    _proto.parseStatementListItem = function parseStatementListItem() {
      return this.parseStatementLike(ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | (!this.options.annexB || this.state.strict ? 0 : ParseStatementFlag.AllowLabeledFunction));
    };
    _proto.parseStatementOrSloppyAnnexBFunctionDeclaration = function parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction) {
      if (allowLabeledFunction === void 0) {
        allowLabeledFunction = false;
      }
      var flags = ParseStatementFlag.StatementOnly;
      if (this.options.annexB && !this.state.strict) {
        flags |= ParseStatementFlag.AllowFunctionDeclaration;
        if (allowLabeledFunction) {
          flags |= ParseStatementFlag.AllowLabeledFunction;
        }
      }
      return this.parseStatementLike(flags);
    };
    _proto.parseStatement = function parseStatement() {
      return this.parseStatementLike(ParseStatementFlag.StatementOnly);
    };
    _proto.parseStatementLike = function parseStatementLike(flags) {
      var decorators = null;
      if (this.match(26)) {
        decorators = this.parseDecorators(true);
      }
      return this.parseStatementContent(flags, decorators);
    };
    _proto.parseStatementContent = function parseStatementContent(flags, decorators) {
      var startType = this.state.type;
      var node = this.startNode();
      var allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);
      var allowFunctionDeclaration = !!(flags & ParseStatementFlag.AllowFunctionDeclaration);
      var topLevel = flags & ParseStatementFlag.AllowImportExport;
      switch (startType) {
        case 60:
          return this.parseBreakContinueStatement(node, true);
        case 63:
          return this.parseBreakContinueStatement(node, false);
        case 64:
          return this.parseDebuggerStatement(node);
        case 90:
          return this.parseDoWhileStatement(node);
        case 91:
          return this.parseForStatement(node);
        case 68:
          if (this.lookaheadCharCode() === 46) break;
          if (!allowFunctionDeclaration) {
            this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, this.state.startLoc);
          }
          return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);
        case 80:
          if (!allowDeclaration) this.unexpected();
          return this.parseClass(this.maybeTakeDecorators(decorators, node), true);
        case 69:
          return this.parseIfStatement(node);
        case 70:
          return this.parseReturnStatement(node);
        case 71:
          return this.parseSwitchStatement(node);
        case 72:
          return this.parseThrowStatement(node);
        case 73:
          return this.parseTryStatement(node);
        case 96:
          if (!this.state.containsEsc && this.startsAwaitUsing()) {
            if (!this.recordAwaitIfAllowed()) {
              this.raise(Errors.AwaitUsingNotInAsyncContext, node);
            } else if (!allowDeclaration) {
              this.raise(Errors.UnexpectedLexicalDeclaration, node);
            }
            this.next();
            return this.parseVarStatement(node, "await using");
          }
          break;
        case 107:
          if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifierOrBrace()) {
            break;
          }
          this.expectPlugin("explicitResourceManagement");
          if (!this.scope.inModule && this.scope.inTopLevel) {
            this.raise(Errors.UnexpectedUsingDeclaration, this.state.startLoc);
          } else if (!allowDeclaration) {
            this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
          }
          return this.parseVarStatement(node, "using");
        case 100:
          {
            if (this.state.containsEsc) {
              break;
            }
            var next = this.nextTokenStart();
            var nextCh = this.codePointAtPos(next);
            if (nextCh !== 91) {
              if (!allowDeclaration && this.hasFollowingLineBreak()) break;
              if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {
                break;
              }
            }
          }
        case 75:
          {
            if (!allowDeclaration) {
              this.raise(Errors.UnexpectedLexicalDeclaration, this.state.startLoc);
            }
          }
        case 74:
          {
            var kind = this.state.value;
            return this.parseVarStatement(node, kind);
          }
        case 92:
          return this.parseWhileStatement(node);
        case 76:
          return this.parseWithStatement(node);
        case 5:
          return this.parseBlock();
        case 13:
          return this.parseEmptyStatement(node);
        case 83:
          {
            var nextTokenCharCode = this.lookaheadCharCode();
            if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
              break;
            }
          }
        case 82:
          {
            if (!this.options.allowImportExportEverywhere && !topLevel) {
              this.raise(Errors.UnexpectedImportExport, this.state.startLoc);
            }
            this.next();
            var result;
            if (startType === 83) {
              result = this.parseImport(node);
              if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) {
                this.sawUnambiguousESM = true;
              }
            } else {
              result = this.parseExport(node, decorators);
              if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") {
                this.sawUnambiguousESM = true;
              }
            }
            this.assertModuleNodeAllowed(result);
            return result;
          }
        default:
          {
            if (this.isAsyncFunction()) {
              if (!allowDeclaration) {
                this.raise(Errors.AsyncFunctionInSingleStatementContext, this.state.startLoc);
              }
              this.next();
              return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);
            }
          }
      }
      var maybeName = this.state.value;
      var expr = this.parseExpression();
      if (tokenIsIdentifier(startType) && expr.type === "Identifier" && this.eat(14)) {
        return this.parseLabeledStatement(node, maybeName, expr, flags);
      } else {
        return this.parseExpressionStatement(node, expr, decorators);
      }
    };
    _proto.assertModuleNodeAllowed = function assertModuleNodeAllowed(node) {
      if (!this.options.allowImportExportEverywhere && !this.inModule) {
        this.raise(Errors.ImportOutsideModule, node);
      }
    };
    _proto.decoratorsEnabledBeforeExport = function decoratorsEnabledBeforeExport() {
      if (this.hasPlugin("decorators-legacy")) return true;
      return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false;
    };
    _proto.maybeTakeDecorators = function maybeTakeDecorators(maybeDecorators, classNode, exportNode) {
      if (maybeDecorators) {
        if (classNode.decorators && classNode.decorators.length > 0) {
          var _classNode$decorators;
          if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") {
            this.raise(Errors.DecoratorsBeforeAfterExport, classNode.decorators[0]);
          }
          (_classNode$decorators = classNode.decorators).unshift.apply(_classNode$decorators, maybeDecorators);
        } else {
          classNode.decorators = maybeDecorators;
        }
        this.resetStartLocationFromNode(classNode, maybeDecorators[0]);
        if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);
      }
      return classNode;
    };
    _proto.canHaveLeadingDecorator = function canHaveLeadingDecorator() {
      return this.match(80);
    };
    _proto.parseDecorators = function parseDecorators(allowExport) {
      var decorators = [];
      do {
        decorators.push(this.parseDecorator());
      } while (this.match(26));
      if (this.match(82)) {
        if (!allowExport) {
          this.unexpected();
        }
        if (!this.decoratorsEnabledBeforeExport()) {
          this.raise(Errors.DecoratorExportClass, this.state.startLoc);
        }
      } else if (!this.canHaveLeadingDecorator()) {
        throw this.raise(Errors.UnexpectedLeadingDecorator, this.state.startLoc);
      }
      return decorators;
    };
    _proto.parseDecorator = function parseDecorator() {
      this.expectOnePlugin(["decorators", "decorators-legacy"]);
      var node = this.startNode();
      this.next();
      if (this.hasPlugin("decorators")) {
        var startLoc = this.state.startLoc;
        var expr;
        if (this.match(10)) {
          var _startLoc = this.state.startLoc;
          this.next();
          expr = this.parseExpression();
          this.expect(11);
          expr = this.wrapParenthesis(_startLoc, expr);
          var paramsStartLoc = this.state.startLoc;
          node.expression = this.parseMaybeDecoratorArguments(expr);
          if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) {
            this.raise(Errors.DecoratorArgumentsOutsideParentheses, paramsStartLoc);
          }
        } else {
          expr = this.parseIdentifier(false);
          while (this.eat(16)) {
            var _node = this.startNodeAt(startLoc);
            _node.object = expr;
            if (this.match(138)) {
              this.classScope.usePrivateName(this.state.value, this.state.startLoc);
              _node.property = this.parsePrivateName();
            } else {
              _node.property = this.parseIdentifier(true);
            }
            _node.computed = false;
            expr = this.finishNode(_node, "MemberExpression");
          }
          node.expression = this.parseMaybeDecoratorArguments(expr);
        }
      } else {
        node.expression = this.parseExprSubscripts();
      }
      return this.finishNode(node, "Decorator");
    };
    _proto.parseMaybeDecoratorArguments = function parseMaybeDecoratorArguments(expr) {
      if (this.eat(10)) {
        var _node2 = this.startNodeAtNode(expr);
        _node2.callee = expr;
        _node2.arguments = this.parseCallExpressionArguments(11, false);
        this.toReferencedList(_node2.arguments);
        return this.finishNode(_node2, "CallExpression");
      }
      return expr;
    };
    _proto.parseBreakContinueStatement = function parseBreakContinueStatement(node, isBreak) {
      this.next();
      if (this.isLineTerminator()) {
        node.label = null;
      } else {
        node.label = this.parseIdentifier();
        this.semicolon();
      }
      this.verifyBreakContinue(node, isBreak);
      return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
    };
    _proto.verifyBreakContinue = function verifyBreakContinue(node, isBreak) {
      var i;
      for (i = 0; i < this.state.labels.length; ++i) {
        var lab = this.state.labels[i];
        if (node.label == null || lab.name === node.label.name) {
          if (lab.kind != null && (isBreak || lab.kind === LoopLabelKind.Loop)) {
            break;
          }
          if (node.label && isBreak) break;
        }
      }
      if (i === this.state.labels.length) {
        var type = isBreak ? "BreakStatement" : "ContinueStatement";
        this.raise(Errors.IllegalBreakContinue, node, {
          type: type
        });
      }
    };
    _proto.parseDebuggerStatement = function parseDebuggerStatement(node) {
      this.next();
      this.semicolon();
      return this.finishNode(node, "DebuggerStatement");
    };
    _proto.parseHeaderExpression = function parseHeaderExpression() {
      this.expect(10);
      var val = this.parseExpression();
      this.expect(11);
      return val;
    };
    _proto.parseDoWhileStatement = function parseDoWhileStatement(node) {
      var _this = this;
      this.next();
      this.state.labels.push(loopLabel);
      node.body = this.withSmartMixTopicForbiddingContext(function () {
        return _this.parseStatement();
      });
      this.state.labels.pop();
      this.expect(92);
      node.test = this.parseHeaderExpression();
      this.eat(13);
      return this.finishNode(node, "DoWhileStatement");
    };
    _proto.parseForStatement = function parseForStatement(node) {
      this.next();
      this.state.labels.push(loopLabel);
      var awaitAt = null;
      if (this.isContextual(96) && this.recordAwaitIfAllowed()) {
        awaitAt = this.state.startLoc;
        this.next();
      }
      this.scope.enter(ScopeFlag.OTHER);
      this.expect(10);
      if (this.match(13)) {
        if (awaitAt !== null) {
          this.unexpected(awaitAt);
        }
        return this.parseFor(node, null);
      }
      var startsWithLet = this.isContextual(100);
      {
        var startsWithAwaitUsing = this.isContextual(96) && this.startsAwaitUsing();
        var starsWithUsingDeclaration = startsWithAwaitUsing || this.isContextual(107) && this.startsUsingForOf();
        var isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || starsWithUsingDeclaration;
        if (this.match(74) || this.match(75) || isLetOrUsing) {
          var initNode = this.startNode();
          var kind;
          if (startsWithAwaitUsing) {
            kind = "await using";
            if (!this.recordAwaitIfAllowed()) {
              this.raise(Errors.AwaitUsingNotInAsyncContext, this.state.startLoc);
            }
            this.next();
          } else {
            kind = this.state.value;
          }
          this.next();
          this.parseVar(initNode, true, kind);
          var _init = this.finishNode(initNode, "VariableDeclaration");
          var isForIn = this.match(58);
          if (isForIn && starsWithUsingDeclaration) {
            this.raise(Errors.ForInUsing, _init);
          }
          if ((isForIn || this.isContextual(102)) && _init.declarations.length === 1) {
            return this.parseForIn(node, _init, awaitAt);
          }
          if (awaitAt !== null) {
            this.unexpected(awaitAt);
          }
          return this.parseFor(node, _init);
        }
      }
      var startsWithAsync = this.isContextual(95);
      var refExpressionErrors = new ExpressionErrors();
      var init = this.parseExpression(true, refExpressionErrors);
      var isForOf = this.isContextual(102);
      if (isForOf) {
        if (startsWithLet) {
          this.raise(Errors.ForOfLet, init);
        }
        if (awaitAt === null && startsWithAsync && init.type === "Identifier") {
          this.raise(Errors.ForOfAsync, init);
        }
      }
      if (isForOf || this.match(58)) {
        this.checkDestructuringPrivate(refExpressionErrors);
        this.toAssignable(init, true);
        var type = isForOf ? "ForOfStatement" : "ForInStatement";
        this.checkLVal(init, {
          type: type
        });
        return this.parseForIn(node, init, awaitAt);
      } else {
        this.checkExpressionErrors(refExpressionErrors, true);
      }
      if (awaitAt !== null) {
        this.unexpected(awaitAt);
      }
      return this.parseFor(node, init);
    };
    _proto.parseFunctionStatement = function parseFunctionStatement(node, isAsync, isHangingDeclaration) {
      this.next();
      return this.parseFunction(node, ParseFunctionFlag.Declaration | (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) | (isAsync ? ParseFunctionFlag.Async : 0));
    };
    _proto.parseIfStatement = function parseIfStatement(node) {
      this.next();
      node.test = this.parseHeaderExpression();
      node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();
      node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;
      return this.finishNode(node, "IfStatement");
    };
    _proto.parseReturnStatement = function parseReturnStatement(node) {
      if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {
        this.raise(Errors.IllegalReturn, this.state.startLoc);
      }
      this.next();
      if (this.isLineTerminator()) {
        node.argument = null;
      } else {
        node.argument = this.parseExpression();
        this.semicolon();
      }
      return this.finishNode(node, "ReturnStatement");
    };
    _proto.parseSwitchStatement = function parseSwitchStatement(node) {
      this.next();
      node.discriminant = this.parseHeaderExpression();
      var cases = node.cases = [];
      this.expect(5);
      this.state.labels.push(switchLabel);
      this.scope.enter(ScopeFlag.OTHER);
      var cur;
      for (var sawDefault; !this.match(8);) {
        if (this.match(61) || this.match(65)) {
          var isCase = this.match(61);
          if (cur) this.finishNode(cur, "SwitchCase");
          cases.push(cur = this.startNode());
          cur.consequent = [];
          this.next();
          if (isCase) {
            cur.test = this.parseExpression();
          } else {
            if (sawDefault) {
              this.raise(Errors.MultipleDefaultsInSwitch, this.state.lastTokStartLoc);
            }
            sawDefault = true;
            cur.test = null;
          }
          this.expect(14);
        } else {
          if (cur) {
            cur.consequent.push(this.parseStatementListItem());
          } else {
            this.unexpected();
          }
        }
      }
      this.scope.exit();
      if (cur) this.finishNode(cur, "SwitchCase");
      this.next();
      this.state.labels.pop();
      return this.finishNode(node, "SwitchStatement");
    };
    _proto.parseThrowStatement = function parseThrowStatement(node) {
      this.next();
      if (this.hasPrecedingLineBreak()) {
        this.raise(Errors.NewlineAfterThrow, this.state.lastTokEndLoc);
      }
      node.argument = this.parseExpression();
      this.semicolon();
      return this.finishNode(node, "ThrowStatement");
    };
    _proto.parseCatchClauseParam = function parseCatchClauseParam() {
      var param = this.parseBindingAtom();
      this.scope.enter(this.options.annexB && param.type === "Identifier" ? ScopeFlag.SIMPLE_CATCH : 0);
      this.checkLVal(param, {
        type: "CatchClause"
      }, BindingFlag.TYPE_CATCH_PARAM);
      return param;
    };
    _proto.parseTryStatement = function parseTryStatement(node) {
      var _this2 = this;
      this.next();
      node.block = this.parseBlock();
      node.handler = null;
      if (this.match(62)) {
        var clause = this.startNode();
        this.next();
        if (this.match(10)) {
          this.expect(10);
          clause.param = this.parseCatchClauseParam();
          this.expect(11);
        } else {
          clause.param = null;
          this.scope.enter(ScopeFlag.OTHER);
        }
        clause.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this2.parseBlock(false, false);
        });
        this.scope.exit();
        node.handler = this.finishNode(clause, "CatchClause");
      }
      node.finalizer = this.eat(67) ? this.parseBlock() : null;
      if (!node.handler && !node.finalizer) {
        this.raise(Errors.NoCatchOrFinally, node);
      }
      return this.finishNode(node, "TryStatement");
    };
    _proto.parseVarStatement = function parseVarStatement(node, kind, allowMissingInitializer) {
      if (allowMissingInitializer === void 0) {
        allowMissingInitializer = false;
      }
      this.next();
      this.parseVar(node, false, kind, allowMissingInitializer);
      this.semicolon();
      return this.finishNode(node, "VariableDeclaration");
    };
    _proto.parseWhileStatement = function parseWhileStatement(node) {
      var _this3 = this;
      this.next();
      node.test = this.parseHeaderExpression();
      this.state.labels.push(loopLabel);
      node.body = this.withSmartMixTopicForbiddingContext(function () {
        return _this3.parseStatement();
      });
      this.state.labels.pop();
      return this.finishNode(node, "WhileStatement");
    };
    _proto.parseWithStatement = function parseWithStatement(node) {
      var _this4 = this;
      if (this.state.strict) {
        this.raise(Errors.StrictWith, this.state.startLoc);
      }
      this.next();
      node.object = this.parseHeaderExpression();
      node.body = this.withSmartMixTopicForbiddingContext(function () {
        return _this4.parseStatement();
      });
      return this.finishNode(node, "WithStatement");
    };
    _proto.parseEmptyStatement = function parseEmptyStatement(node) {
      this.next();
      return this.finishNode(node, "EmptyStatement");
    };
    _proto.parseLabeledStatement = function parseLabeledStatement(node, maybeName, expr, flags) {
      for (var _i4 = 0, _this$state$labels2 = this.state.labels; _i4 < _this$state$labels2.length; _i4++) {
        var label = _this$state$labels2[_i4];
        if (label.name === maybeName) {
          this.raise(Errors.LabelRedeclaration, expr, {
            labelName: maybeName
          });
        }
      }
      var kind = tokenIsLoop(this.state.type) ? LoopLabelKind.Loop : this.match(71) ? LoopLabelKind.Switch : null;
      for (var i = this.state.labels.length - 1; i >= 0; i--) {
        var _label = this.state.labels[i];
        if (_label.statementStart === node.start) {
          _label.statementStart = this.state.start;
          _label.kind = kind;
        } else {
          break;
        }
      }
      this.state.labels.push({
        name: maybeName,
        kind: kind,
        statementStart: this.state.start
      });
      node.body = flags & ParseStatementFlag.AllowLabeledFunction ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
      this.state.labels.pop();
      node.label = expr;
      return this.finishNode(node, "LabeledStatement");
    };
    _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
      node.expression = expr;
      this.semicolon();
      return this.finishNode(node, "ExpressionStatement");
    };
    _proto.parseBlock = function parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
      if (allowDirectives === void 0) {
        allowDirectives = false;
      }
      if (createNewLexicalScope === void 0) {
        createNewLexicalScope = true;
      }
      var node = this.startNode();
      if (allowDirectives) {
        this.state.strictErrors.clear();
      }
      this.expect(5);
      if (createNewLexicalScope) {
        this.scope.enter(ScopeFlag.OTHER);
      }
      this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);
      if (createNewLexicalScope) {
        this.scope.exit();
      }
      return this.finishNode(node, "BlockStatement");
    };
    _proto.isValidDirective = function isValidDirective(stmt) {
      return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;
    };
    _proto.parseBlockBody = function parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
      var body = node.body = [];
      var directives = node.directives = [];
      this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);
    };
    _proto.parseBlockOrModuleBlockBody = function parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {
      var oldStrict = this.state.strict;
      var hasStrictModeDirective = false;
      var parsedNonDirective = false;
      while (!this.match(end)) {
        var stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();
        if (directives && !parsedNonDirective) {
          if (this.isValidDirective(stmt)) {
            var directive = this.stmtToDirective(stmt);
            directives.push(directive);
            if (!hasStrictModeDirective && directive.value.value === "use strict") {
              hasStrictModeDirective = true;
              this.setStrict(true);
            }
            continue;
          }
          parsedNonDirective = true;
          this.state.strictErrors.clear();
        }
        body.push(stmt);
      }
      afterBlockParse == null || afterBlockParse.call(this, hasStrictModeDirective);
      if (!oldStrict) {
        this.setStrict(false);
      }
      this.next();
    };
    _proto.parseFor = function parseFor(node, init) {
      var _this5 = this;
      node.init = init;
      this.semicolon(false);
      node.test = this.match(13) ? null : this.parseExpression();
      this.semicolon(false);
      node.update = this.match(11) ? null : this.parseExpression();
      this.expect(11);
      node.body = this.withSmartMixTopicForbiddingContext(function () {
        return _this5.parseStatement();
      });
      this.scope.exit();
      this.state.labels.pop();
      return this.finishNode(node, "ForStatement");
    };
    _proto.parseForIn = function parseForIn(node, init, awaitAt) {
      var _this6 = this;
      var isForIn = this.match(58);
      this.next();
      if (isForIn) {
        if (awaitAt !== null) this.unexpected(awaitAt);
      } else {
        node["await"] = awaitAt !== null;
      }
      if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {
        this.raise(Errors.ForInOfLoopInitializer, init, {
          type: isForIn ? "ForInStatement" : "ForOfStatement"
        });
      }
      if (init.type === "AssignmentPattern") {
        this.raise(Errors.InvalidLhs, init, {
          ancestor: {
            type: "ForStatement"
          }
        });
      }
      node.left = init;
      node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();
      this.expect(11);
      node.body = this.withSmartMixTopicForbiddingContext(function () {
        return _this6.parseStatement();
      });
      this.scope.exit();
      this.state.labels.pop();
      return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");
    };
    _proto.parseVar = function parseVar(node, isFor, kind, allowMissingInitializer) {
      if (allowMissingInitializer === void 0) {
        allowMissingInitializer = false;
      }
      var declarations = node.declarations = [];
      node.kind = kind;
      for (;;) {
        var decl = this.startNode();
        this.parseVarId(decl, kind);
        decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();
        if (decl.init === null && !allowMissingInitializer) {
          if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(102)))) {
            this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
              kind: "destructuring"
            });
          } else if ((kind === "const" || kind === "using" || kind === "await using") && !(this.match(58) || this.isContextual(102))) {
            this.raise(Errors.DeclarationMissingInitializer, this.state.lastTokEndLoc, {
              kind: kind
            });
          }
        }
        declarations.push(this.finishNode(decl, "VariableDeclarator"));
        if (!this.eat(12)) break;
      }
      return node;
    };
    _proto.parseVarId = function parseVarId(decl, kind) {
      var id = this.parseBindingAtom();
      if (kind === "using" || kind === "await using") {
        if (id.type === "ArrayPattern" || id.type === "ObjectPattern") {
          this.raise(Errors.UsingDeclarationHasBindingPattern, id.loc.start);
        }
      }
      this.checkLVal(id, {
        type: "VariableDeclarator"
      }, kind === "var" ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL);
      decl.id = id;
    };
    _proto.parseAsyncFunctionExpression = function parseAsyncFunctionExpression(node) {
      return this.parseFunction(node, ParseFunctionFlag.Async);
    };
    _proto.parseFunction = function parseFunction(node, flags) {
      var _this7 = this;
      if (flags === void 0) {
        flags = ParseFunctionFlag.Expression;
      }
      var hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;
      var isDeclaration = !!(flags & ParseFunctionFlag.Declaration);
      var requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);
      var isAsync = !!(flags & ParseFunctionFlag.Async);
      this.initFunction(node, isAsync);
      if (this.match(55)) {
        if (hangingDeclaration) {
          this.raise(Errors.GeneratorInSingleStatementContext, this.state.startLoc);
        }
        this.next();
        node.generator = true;
      }
      if (isDeclaration) {
        node.id = this.parseFunctionId(requireId);
      }
      var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
      this.state.maybeInArrowParameters = false;
      this.scope.enter(ScopeFlag.FUNCTION);
      this.prodParam.enter(functionFlags(isAsync, node.generator));
      if (!isDeclaration) {
        node.id = this.parseFunctionId();
      }
      this.parseFunctionParams(node, false);
      this.withSmartMixTopicForbiddingContext(function () {
        _this7.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression");
      });
      this.prodParam.exit();
      this.scope.exit();
      if (isDeclaration && !hangingDeclaration) {
        this.registerFunctionStatementId(node);
      }
      this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
      return node;
    };
    _proto.parseFunctionId = function parseFunctionId(requireId) {
      return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;
    };
    _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
      this.expect(10);
      this.expressionScope.enter(newParameterDeclarationScope());
      node.params = this.parseBindingList(11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS | (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0));
      this.expressionScope.exit();
    };
    _proto.registerFunctionStatementId = function registerFunctionStatementId(node) {
      if (!node.id) return;
      this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BindingFlag.TYPE_VAR : BindingFlag.TYPE_LEXICAL : BindingFlag.TYPE_FUNCTION, node.id.loc.start);
    };
    _proto.parseClass = function parseClass(node, isStatement, optionalId) {
      this.next();
      var oldStrict = this.state.strict;
      this.state.strict = true;
      this.parseClassId(node, isStatement, optionalId);
      this.parseClassSuper(node);
      node.body = this.parseClassBody(!!node.superClass, oldStrict);
      return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
    };
    _proto.isClassProperty = function isClassProperty() {
      return this.match(29) || this.match(13) || this.match(8);
    };
    _proto.isClassMethod = function isClassMethod() {
      return this.match(10);
    };
    _proto.nameIsConstructor = function nameIsConstructor(key) {
      return key.type === "Identifier" && key.name === "constructor" || key.type === "StringLiteral" && key.value === "constructor";
    };
    _proto.isNonstaticConstructor = function isNonstaticConstructor(method) {
      return !method.computed && !method["static"] && this.nameIsConstructor(method.key);
    };
    _proto.parseClassBody = function parseClassBody(hadSuperClass, oldStrict) {
      var _this8 = this;
      this.classScope.enter();
      var state = {
        hadConstructor: false,
        hadSuperClass: hadSuperClass
      };
      var decorators = [];
      var classBody = this.startNode();
      classBody.body = [];
      this.expect(5);
      this.withSmartMixTopicForbiddingContext(function () {
        while (!_this8.match(8)) {
          if (_this8.eat(13)) {
            if (decorators.length > 0) {
              throw _this8.raise(Errors.DecoratorSemicolon, _this8.state.lastTokEndLoc);
            }
            continue;
          }
          if (_this8.match(26)) {
            decorators.push(_this8.parseDecorator());
            continue;
          }
          var member = _this8.startNode();
          if (decorators.length) {
            member.decorators = decorators;
            _this8.resetStartLocationFromNode(member, decorators[0]);
            decorators = [];
          }
          _this8.parseClassMember(classBody, member, state);
          if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
            _this8.raise(Errors.DecoratorConstructor, member);
          }
        }
      });
      this.state.strict = oldStrict;
      this.next();
      if (decorators.length) {
        throw this.raise(Errors.TrailingDecorator, this.state.startLoc);
      }
      this.classScope.exit();
      return this.finishNode(classBody, "ClassBody");
    };
    _proto.parseClassMemberFromModifier = function parseClassMemberFromModifier(classBody, member) {
      var key = this.parseIdentifier(true);
      if (this.isClassMethod()) {
        var method = member;
        method.kind = "method";
        method.computed = false;
        method.key = key;
        method["static"] = false;
        this.pushClassMethod(classBody, method, false, false, false, false);
        return true;
      } else if (this.isClassProperty()) {
        var prop = member;
        prop.computed = false;
        prop.key = key;
        prop["static"] = false;
        classBody.body.push(this.parseClassProperty(prop));
        return true;
      }
      this.resetPreviousNodeTrailingComments(key);
      return false;
    };
    _proto.parseClassMember = function parseClassMember(classBody, member, state) {
      var isStatic = this.isContextual(106);
      if (isStatic) {
        if (this.parseClassMemberFromModifier(classBody, member)) {
          return;
        }
        if (this.eat(5)) {
          this.parseClassStaticBlock(classBody, member);
          return;
        }
      }
      this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
    };
    _proto.parseClassMemberWithIsStatic = function parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
      var publicMethod = member;
      var privateMethod = member;
      var publicProp = member;
      var privateProp = member;
      var accessorProp = member;
      var method = publicMethod;
      var publicMember = publicMethod;
      member["static"] = isStatic;
      this.parsePropertyNamePrefixOperator(member);
      if (this.eat(55)) {
        method.kind = "method";
        var isPrivateName = this.match(138);
        this.parseClassElementName(method);
        if (isPrivateName) {
          this.pushClassPrivateMethod(classBody, privateMethod, true, false);
          return;
        }
        if (this.isNonstaticConstructor(publicMethod)) {
          this.raise(Errors.ConstructorIsGenerator, publicMethod.key);
        }
        this.pushClassMethod(classBody, publicMethod, true, false, false, false);
        return;
      }
      var isContextual = !this.state.containsEsc && tokenIsIdentifier(this.state.type);
      var key = this.parseClassElementName(member);
      var maybeContextualKw = isContextual ? key.name : null;
      var isPrivate = this.isPrivateName(key);
      var maybeQuestionTokenStartLoc = this.state.startLoc;
      this.parsePostMemberNameModifiers(publicMember);
      if (this.isClassMethod()) {
        method.kind = "method";
        if (isPrivate) {
          this.pushClassPrivateMethod(classBody, privateMethod, false, false);
          return;
        }
        var isConstructor = this.isNonstaticConstructor(publicMethod);
        var allowsDirectSuper = false;
        if (isConstructor) {
          publicMethod.kind = "constructor";
          if (state.hadConstructor && !this.hasPlugin("typescript")) {
            this.raise(Errors.DuplicateConstructor, key);
          }
          if (isConstructor && this.hasPlugin("typescript") && member.override) {
            this.raise(Errors.OverrideOnConstructor, key);
          }
          state.hadConstructor = true;
          allowsDirectSuper = state.hadSuperClass;
        }
        this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);
      } else if (this.isClassProperty()) {
        if (isPrivate) {
          this.pushClassPrivateProperty(classBody, privateProp);
        } else {
          this.pushClassProperty(classBody, publicProp);
        }
      } else if (maybeContextualKw === "async" && !this.isLineTerminator()) {
        this.resetPreviousNodeTrailingComments(key);
        var isGenerator = this.eat(55);
        if (publicMember.optional) {
          this.unexpected(maybeQuestionTokenStartLoc);
        }
        method.kind = "method";
        var _isPrivate = this.match(138);
        this.parseClassElementName(method);
        this.parsePostMemberNameModifiers(publicMember);
        if (_isPrivate) {
          this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
        } else {
          if (this.isNonstaticConstructor(publicMethod)) {
            this.raise(Errors.ConstructorIsAsync, publicMethod.key);
          }
          this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
        }
      } else if ((maybeContextualKw === "get" || maybeContextualKw === "set") && !(this.match(55) && this.isLineTerminator())) {
        this.resetPreviousNodeTrailingComments(key);
        method.kind = maybeContextualKw;
        var _isPrivate2 = this.match(138);
        this.parseClassElementName(publicMethod);
        if (_isPrivate2) {
          this.pushClassPrivateMethod(classBody, privateMethod, false, false);
        } else {
          if (this.isNonstaticConstructor(publicMethod)) {
            this.raise(Errors.ConstructorIsAccessor, publicMethod.key);
          }
          this.pushClassMethod(classBody, publicMethod, false, false, false, false);
        }
        this.checkGetterSetterParams(publicMethod);
      } else if (maybeContextualKw === "accessor" && !this.isLineTerminator()) {
        this.expectPlugin("decoratorAutoAccessors");
        this.resetPreviousNodeTrailingComments(key);
        var _isPrivate3 = this.match(138);
        this.parseClassElementName(publicProp);
        this.pushClassAccessorProperty(classBody, accessorProp, _isPrivate3);
      } else if (this.isLineTerminator()) {
        if (isPrivate) {
          this.pushClassPrivateProperty(classBody, privateProp);
        } else {
          this.pushClassProperty(classBody, publicProp);
        }
      } else {
        this.unexpected();
      }
    };
    _proto.parseClassElementName = function parseClassElementName(member) {
      var _this$state = this.state,
        type = _this$state.type,
        value = _this$state.value;
      if ((type === 132 || type === 133) && member["static"] && value === "prototype") {
        this.raise(Errors.StaticPrototype, this.state.startLoc);
      }
      if (type === 138) {
        if (value === "constructor") {
          this.raise(Errors.ConstructorClassPrivateField, this.state.startLoc);
        }
        var key = this.parsePrivateName();
        member.key = key;
        return key;
      }
      this.parsePropertyName(member);
      return member.key;
    };
    _proto.parseClassStaticBlock = function parseClassStaticBlock(classBody, member) {
      var _member$decorators;
      this.scope.enter(ScopeFlag.CLASS | ScopeFlag.STATIC_BLOCK | ScopeFlag.SUPER);
      var oldLabels = this.state.labels;
      this.state.labels = [];
      this.prodParam.enter(ParamKind.PARAM);
      var body = member.body = [];
      this.parseBlockOrModuleBlockBody(body, undefined, false, 8);
      this.prodParam.exit();
      this.scope.exit();
      this.state.labels = oldLabels;
      classBody.body.push(this.finishNode(member, "StaticBlock"));
      if ((_member$decorators = member.decorators) != null && _member$decorators.length) {
        this.raise(Errors.DecoratorStaticBlock, member);
      }
    };
    _proto.pushClassProperty = function pushClassProperty(classBody, prop) {
      if (!prop.computed && this.nameIsConstructor(prop.key)) {
        this.raise(Errors.ConstructorClassField, prop.key);
      }
      classBody.body.push(this.parseClassProperty(prop));
    };
    _proto.pushClassPrivateProperty = function pushClassPrivateProperty(classBody, prop) {
      var node = this.parseClassPrivateProperty(prop);
      classBody.body.push(node);
      this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), ClassElementType.OTHER, node.key.loc.start);
    };
    _proto.pushClassAccessorProperty = function pushClassAccessorProperty(classBody, prop, isPrivate) {
      if (!isPrivate && !prop.computed && this.nameIsConstructor(prop.key)) {
        this.raise(Errors.ConstructorClassField, prop.key);
      }
      var node = this.parseClassAccessorProperty(prop);
      classBody.body.push(node);
      if (isPrivate) {
        this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), ClassElementType.OTHER, node.key.loc.start);
      }
    };
    _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
      classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));
    };
    _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
      var node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
      classBody.body.push(node);
      var kind = node.kind === "get" ? node["static"] ? ClassElementType.STATIC_GETTER : ClassElementType.INSTANCE_GETTER : node.kind === "set" ? node["static"] ? ClassElementType.STATIC_SETTER : ClassElementType.INSTANCE_SETTER : ClassElementType.OTHER;
      this.declareClassPrivateMethodInScope(node, kind);
    };
    _proto.declareClassPrivateMethodInScope = function declareClassPrivateMethodInScope(node, kind) {
      this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);
    };
    _proto.parsePostMemberNameModifiers = function parsePostMemberNameModifiers(methodOrProp) {};
    _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
      this.parseInitializer(node);
      this.semicolon();
      return this.finishNode(node, "ClassPrivateProperty");
    };
    _proto.parseClassProperty = function parseClassProperty(node) {
      this.parseInitializer(node);
      this.semicolon();
      return this.finishNode(node, "ClassProperty");
    };
    _proto.parseClassAccessorProperty = function parseClassAccessorProperty(node) {
      this.parseInitializer(node);
      this.semicolon();
      return this.finishNode(node, "ClassAccessorProperty");
    };
    _proto.parseInitializer = function parseInitializer(node) {
      this.scope.enter(ScopeFlag.CLASS | ScopeFlag.SUPER);
      this.expressionScope.enter(newExpressionScope());
      this.prodParam.enter(ParamKind.PARAM);
      node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;
      this.expressionScope.exit();
      this.prodParam.exit();
      this.scope.exit();
    };
    _proto.parseClassId = function parseClassId(node, isStatement, optionalId, bindingType) {
      if (bindingType === void 0) {
        bindingType = BindingFlag.TYPE_CLASS;
      }
      if (tokenIsIdentifier(this.state.type)) {
        node.id = this.parseIdentifier();
        if (isStatement) {
          this.declareNameFromIdentifier(node.id, bindingType);
        }
      } else {
        if (optionalId || !isStatement) {
          node.id = null;
        } else {
          throw this.raise(Errors.MissingClassName, this.state.startLoc);
        }
      }
    };
    _proto.parseClassSuper = function parseClassSuper(node) {
      node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;
    };
    _proto.parseExport = function parseExport(node, decorators) {
      var maybeDefaultIdentifier = this.parseMaybeImportPhase(node, true);
      var hasDefault = this.maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier);
      var parseAfterDefault = !hasDefault || this.eat(12);
      var hasStar = parseAfterDefault && this.eatExportStar(node);
      var hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
      var parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));
      var isFromRequired = hasDefault || hasStar;
      if (hasStar && !hasNamespace) {
        if (hasDefault) this.unexpected();
        if (decorators) {
          throw this.raise(Errors.UnsupportedDecoratorExport, node);
        }
        this.parseExportFrom(node, true);
        return this.finishNode(node, "ExportAllDeclaration");
      }
      var hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
      if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {
        this.unexpected(null, 5);
      }
      if (hasNamespace && parseAfterNamespace) {
        this.unexpected(null, 98);
      }
      var hasDeclaration;
      if (isFromRequired || hasSpecifiers) {
        hasDeclaration = false;
        if (decorators) {
          throw this.raise(Errors.UnsupportedDecoratorExport, node);
        }
        this.parseExportFrom(node, isFromRequired);
      } else {
        hasDeclaration = this.maybeParseExportDeclaration(node);
      }
      if (isFromRequired || hasSpecifiers || hasDeclaration) {
        var _node2$declaration;
        var node2 = node;
        this.checkExport(node2, true, false, !!node2.source);
        if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") {
          this.maybeTakeDecorators(decorators, node2.declaration, node2);
        } else if (decorators) {
          throw this.raise(Errors.UnsupportedDecoratorExport, node);
        }
        return this.finishNode(node2, "ExportNamedDeclaration");
      }
      if (this.eat(65)) {
        var _node3 = node;
        var decl = this.parseExportDefaultExpression();
        _node3.declaration = decl;
        if (decl.type === "ClassDeclaration") {
          this.maybeTakeDecorators(decorators, decl, _node3);
        } else if (decorators) {
          throw this.raise(Errors.UnsupportedDecoratorExport, node);
        }
        this.checkExport(_node3, true, true);
        return this.finishNode(_node3, "ExportDefaultDeclaration");
      }
      this.unexpected(null, 5);
    };
    _proto.eatExportStar = function eatExportStar(node) {
      return this.eat(55);
    };
    _proto.maybeParseExportDefaultSpecifier = function maybeParseExportDefaultSpecifier(node, maybeDefaultIdentifier) {
      if (maybeDefaultIdentifier || this.isExportDefaultSpecifier()) {
        this.expectPlugin("exportDefaultFrom", maybeDefaultIdentifier == null ? void 0 : maybeDefaultIdentifier.loc.start);
        var id = maybeDefaultIdentifier || this.parseIdentifier(true);
        var specifier = this.startNodeAtNode(id);
        specifier.exported = id;
        node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
        return true;
      }
      return false;
    };
    _proto.maybeParseExportNamespaceSpecifier = function maybeParseExportNamespaceSpecifier(node) {
      if (this.isContextual(93)) {
        var _ref, _ref$specifiers;
        (_ref$specifiers = (_ref = node).specifiers) != null ? _ref$specifiers : _ref.specifiers = [];
        var specifier = this.startNodeAt(this.state.lastTokStartLoc);
        this.next();
        specifier.exported = this.parseModuleExportName();
        node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
        return true;
      }
      return false;
    };
    _proto.maybeParseExportNamedSpecifiers = function maybeParseExportNamedSpecifiers(node) {
      if (this.match(5)) {
        var _node2$specifiers;
        var node2 = node;
        if (!node2.specifiers) node2.specifiers = [];
        var isTypeExport = node2.exportKind === "type";
        (_node2$specifiers = node2.specifiers).push.apply(_node2$specifiers, this.parseExportSpecifiers(isTypeExport));
        node2.source = null;
        node2.declaration = null;
        if (this.hasPlugin("importAssertions")) {
          node2.assertions = [];
        }
        return true;
      }
      return false;
    };
    _proto.maybeParseExportDeclaration = function maybeParseExportDeclaration(node) {
      if (this.shouldParseExportDeclaration()) {
        node.specifiers = [];
        node.source = null;
        if (this.hasPlugin("importAssertions")) {
          node.assertions = [];
        }
        node.declaration = this.parseExportDeclaration(node);
        return true;
      }
      return false;
    };
    _proto.isAsyncFunction = function isAsyncFunction() {
      if (!this.isContextual(95)) return false;
      var next = this.nextTokenInLineStart();
      return this.isUnparsedContextual(next, "function");
    };
    _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
      var expr = this.startNode();
      if (this.match(68)) {
        this.next();
        return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId);
      } else if (this.isAsyncFunction()) {
        this.next();
        this.next();
        return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId | ParseFunctionFlag.Async);
      }
      if (this.match(80)) {
        return this.parseClass(expr, true, true);
      }
      if (this.match(26)) {
        if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
          this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
        }
        return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);
      }
      if (this.match(75) || this.match(74) || this.isLet()) {
        throw this.raise(Errors.UnsupportedDefaultExport, this.state.startLoc);
      }
      var res = this.parseMaybeAssignAllowIn();
      this.semicolon();
      return res;
    };
    _proto.parseExportDeclaration = function parseExportDeclaration(node) {
      if (this.match(80)) {
        var _node4 = this.parseClass(this.startNode(), true, false);
        return _node4;
      }
      return this.parseStatementListItem();
    };
    _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
      var type = this.state.type;
      if (tokenIsIdentifier(type)) {
        if (type === 95 && !this.state.containsEsc || type === 100) {
          return false;
        }
        if ((type === 130 || type === 129) && !this.state.containsEsc) {
          var _this$lookahead2 = this.lookahead(),
            nextType = _this$lookahead2.type;
          if (tokenIsIdentifier(nextType) && nextType !== 98 || nextType === 5) {
            this.expectOnePlugin(["flow", "typescript"]);
            return false;
          }
        }
      } else if (!this.match(65)) {
        return false;
      }
      var next = this.nextTokenStart();
      var hasFrom = this.isUnparsedContextual(next, "from");
      if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {
        return true;
      }
      if (this.match(65) && hasFrom) {
        var nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));
        return nextAfterFrom === 34 || nextAfterFrom === 39;
      }
      return false;
    };
    _proto.parseExportFrom = function parseExportFrom(node, expect) {
      if (this.eatContextual(98)) {
        node.source = this.parseImportSource();
        this.checkExport(node);
        this.maybeParseImportAttributes(node);
        this.checkJSONModuleImport(node);
      } else if (expect) {
        this.unexpected();
      }
      this.semicolon();
    };
    _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
      var type = this.state.type;
      if (type === 26) {
        this.expectOnePlugin(["decorators", "decorators-legacy"]);
        if (this.hasPlugin("decorators")) {
          if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
            this.raise(Errors.DecoratorBeforeExport, this.state.startLoc);
          }
          return true;
        }
      }
      if (this.isContextual(107)) {
        this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
        return true;
      }
      if (this.isContextual(96) && this.startsAwaitUsing()) {
        this.raise(Errors.UsingDeclarationExport, this.state.startLoc);
        return true;
      }
      return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();
    };
    _proto.checkExport = function checkExport(node, checkNames, isDefault, isFrom) {
      if (checkNames) {
        var _node$specifiers;
        if (isDefault) {
          this.checkDuplicateExports(node, "default");
          if (this.hasPlugin("exportDefaultFrom")) {
            var _declaration$extra;
            var declaration = node.declaration;
            if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {
              this.raise(Errors.ExportDefaultFromAsIdentifier, declaration);
            }
          }
        } else if ((_node$specifiers = node.specifiers) != null && _node$specifiers.length) {
          for (var _i6 = 0, _node$specifiers3 = node.specifiers; _i6 < _node$specifiers3.length; _i6++) {
            var specifier = _node$specifiers3[_i6];
            var exported = specifier.exported;
            var exportName = exported.type === "Identifier" ? exported.name : exported.value;
            this.checkDuplicateExports(specifier, exportName);
            if (!isFrom && specifier.local) {
              var local = specifier.local;
              if (local.type !== "Identifier") {
                this.raise(Errors.ExportBindingIsString, specifier, {
                  localName: local.value,
                  exportName: exportName
                });
              } else {
                this.checkReservedWord(local.name, local.loc.start, true, false);
                this.scope.checkLocalExport(local);
              }
            }
          }
        } else if (node.declaration) {
          var decl = node.declaration;
          if (decl.type === "FunctionDeclaration" || decl.type === "ClassDeclaration") {
            var id = decl.id;
            if (!id) throw new Error("Assertion failure");
            this.checkDuplicateExports(node, id.name);
          } else if (decl.type === "VariableDeclaration") {
            for (var _i8 = 0, _decl$declarations2 = decl.declarations; _i8 < _decl$declarations2.length; _i8++) {
              var _declaration = _decl$declarations2[_i8];
              this.checkDeclaration(_declaration.id);
            }
          }
        }
      }
    };
    _proto.checkDeclaration = function checkDeclaration(node) {
      if (node.type === "Identifier") {
        this.checkDuplicateExports(node, node.name);
      } else if (node.type === "ObjectPattern") {
        for (var _i10 = 0, _node$properties2 = node.properties; _i10 < _node$properties2.length; _i10++) {
          var prop = _node$properties2[_i10];
          this.checkDeclaration(prop);
        }
      } else if (node.type === "ArrayPattern") {
        for (var _i12 = 0, _node$elements2 = node.elements; _i12 < _node$elements2.length; _i12++) {
          var elem = _node$elements2[_i12];
          if (elem) {
            this.checkDeclaration(elem);
          }
        }
      } else if (node.type === "ObjectProperty") {
        this.checkDeclaration(node.value);
      } else if (node.type === "RestElement") {
        this.checkDeclaration(node.argument);
      } else if (node.type === "AssignmentPattern") {
        this.checkDeclaration(node.left);
      }
    };
    _proto.checkDuplicateExports = function checkDuplicateExports(node, exportName) {
      if (this.exportedIdentifiers.has(exportName)) {
        if (exportName === "default") {
          this.raise(Errors.DuplicateDefaultExport, node);
        } else {
          this.raise(Errors.DuplicateExport, node, {
            exportName: exportName
          });
        }
      }
      this.exportedIdentifiers.add(exportName);
    };
    _proto.parseExportSpecifiers = function parseExportSpecifiers(isInTypeExport) {
      var nodes = [];
      var first = true;
      this.expect(5);
      while (!this.eat(8)) {
        if (first) {
          first = false;
        } else {
          this.expect(12);
          if (this.eat(8)) break;
        }
        var isMaybeTypeOnly = this.isContextual(130);
        var isString = this.match(133);
        var _node5 = this.startNode();
        _node5.local = this.parseModuleExportName();
        nodes.push(this.parseExportSpecifier(_node5, isString, isInTypeExport, isMaybeTypeOnly));
      }
      return nodes;
    };
    _proto.parseExportSpecifier = function parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
      if (this.eatContextual(93)) {
        node.exported = this.parseModuleExportName();
      } else if (isString) {
        node.exported = cloneStringLiteral(node.local);
      } else if (!node.exported) {
        node.exported = cloneIdentifier(node.local);
      }
      return this.finishNode(node, "ExportSpecifier");
    };
    _proto.parseModuleExportName = function parseModuleExportName() {
      if (this.match(133)) {
        var result = this.parseStringLiteral(this.state.value);
        var surrogate = loneSurrogate.exec(result.value);
        if (surrogate) {
          this.raise(Errors.ModuleExportNameHasLoneSurrogate, result, {
            surrogateCharCode: surrogate[0].charCodeAt(0)
          });
        }
        return result;
      }
      return this.parseIdentifier(true);
    };
    _proto.isJSONModuleImport = function isJSONModuleImport(node) {
      if (node.assertions != null) {
        return node.assertions.some(function (_ref2) {
          var key = _ref2.key,
            value = _ref2.value;
          return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type");
        });
      }
      return false;
    };
    _proto.checkImportReflection = function checkImportReflection(node) {
      var specifiers = node.specifiers;
      var singleBindingType = specifiers.length === 1 ? specifiers[0].type : null;
      if (node.phase === "source") {
        if (singleBindingType !== "ImportDefaultSpecifier") {
          this.raise(Errors.SourcePhaseImportRequiresDefault, specifiers[0].loc.start);
        }
      } else if (node.phase === "defer") {
        if (singleBindingType !== "ImportNamespaceSpecifier") {
          this.raise(Errors.DeferImportRequiresNamespace, specifiers[0].loc.start);
        }
      } else if (node.module) {
        var _node$assertions;
        if (singleBindingType !== "ImportDefaultSpecifier") {
          this.raise(Errors.ImportReflectionNotBinding, specifiers[0].loc.start);
        }
        if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) {
          this.raise(Errors.ImportReflectionHasAssertion, specifiers[0].loc.start);
        }
      }
    };
    _proto.checkJSONModuleImport = function checkJSONModuleImport(node) {
      if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") {
        var specifiers = node.specifiers;
        if (specifiers != null) {
          var nonDefaultNamedSpecifier = specifiers.find(function (specifier) {
            var imported;
            if (specifier.type === "ExportSpecifier") {
              imported = specifier.local;
            } else if (specifier.type === "ImportSpecifier") {
              imported = specifier.imported;
            }
            if (imported !== undefined) {
              return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default";
            }
          });
          if (nonDefaultNamedSpecifier !== undefined) {
            this.raise(Errors.ImportJSONBindingNotDefault, nonDefaultNamedSpecifier.loc.start);
          }
        }
      }
    };
    _proto.isPotentialImportPhase = function isPotentialImportPhase(isExport) {
      if (isExport) return false;
      return this.isContextual(105) || this.isContextual(97) || this.isContextual(127);
    };
    _proto.applyImportPhase = function applyImportPhase(node, isExport, phase, loc) {
      if (isExport) {
        return;
      }
      if (phase === "module") {
        this.expectPlugin("importReflection", loc);
        node.module = true;
      } else if (this.hasPlugin("importReflection")) {
        node.module = false;
      }
      if (phase === "source") {
        this.expectPlugin("sourcePhaseImports", loc);
        node.phase = "source";
      } else if (phase === "defer") {
        this.expectPlugin("deferredImportEvaluation", loc);
        node.phase = "defer";
      } else if (this.hasPlugin("sourcePhaseImports")) {
        node.phase = null;
      }
    };
    _proto.parseMaybeImportPhase = function parseMaybeImportPhase(node, isExport) {
      if (!this.isPotentialImportPhase(isExport)) {
        this.applyImportPhase(node, isExport, null);
        return null;
      }
      var phaseIdentifier = this.parseIdentifier(true);
      var type = this.state.type;
      var isImportPhase = tokenIsKeywordOrIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
      if (isImportPhase) {
        this.resetPreviousIdentifierLeadingComments(phaseIdentifier);
        this.applyImportPhase(node, isExport, phaseIdentifier.name, phaseIdentifier.loc.start);
        return null;
      } else {
        this.applyImportPhase(node, isExport, null);
        return phaseIdentifier;
      }
    };
    _proto.isPrecedingIdImportPhase = function isPrecedingIdImportPhase(phase) {
      var type = this.state.type;
      return tokenIsIdentifier(type) ? type !== 98 || this.lookaheadCharCode() === 102 : type !== 12;
    };
    _proto.parseImport = function parseImport(node) {
      if (this.match(133)) {
        return this.parseImportSourceAndAttributes(node);
      }
      return this.parseImportSpecifiersAndAfter(node, this.parseMaybeImportPhase(node, false));
    };
    _proto.parseImportSpecifiersAndAfter = function parseImportSpecifiersAndAfter(node, maybeDefaultIdentifier) {
      node.specifiers = [];
      var hasDefault = this.maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier);
      var parseNext = !hasDefault || this.eat(12);
      var hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
      if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
      this.expectContextual(98);
      return this.parseImportSourceAndAttributes(node);
    };
    _proto.parseImportSourceAndAttributes = function parseImportSourceAndAttributes(node) {
      var _node$specifiers4;
      (_node$specifiers4 = node.specifiers) != null ? _node$specifiers4 : node.specifiers = [];
      node.source = this.parseImportSource();
      this.maybeParseImportAttributes(node);
      this.checkImportReflection(node);
      this.checkJSONModuleImport(node);
      this.semicolon();
      return this.finishNode(node, "ImportDeclaration");
    };
    _proto.parseImportSource = function parseImportSource() {
      if (!this.match(133)) this.unexpected();
      return this.parseExprAtom();
    };
    _proto.parseImportSpecifierLocal = function parseImportSpecifierLocal(node, specifier, type) {
      specifier.local = this.parseIdentifier();
      node.specifiers.push(this.finishImportSpecifier(specifier, type));
    };
    _proto.finishImportSpecifier = function finishImportSpecifier(specifier, type, bindingType) {
      if (bindingType === void 0) {
        bindingType = BindingFlag.TYPE_LEXICAL;
      }
      this.checkLVal(specifier.local, {
        type: type
      }, bindingType);
      return this.finishNode(specifier, type);
    };
    _proto.parseImportAttributes = function parseImportAttributes() {
      this.expect(5);
      var attrs = [];
      var attrNames = new Set();
      do {
        if (this.match(8)) {
          break;
        }
        var _node6 = this.startNode();
        var keyName = this.state.value;
        if (attrNames.has(keyName)) {
          this.raise(Errors.ModuleAttributesWithDuplicateKeys, this.state.startLoc, {
            key: keyName
          });
        }
        attrNames.add(keyName);
        if (this.match(133)) {
          _node6.key = this.parseStringLiteral(keyName);
        } else {
          _node6.key = this.parseIdentifier(true);
        }
        this.expect(14);
        if (!this.match(133)) {
          throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
        }
        _node6.value = this.parseStringLiteral(this.state.value);
        attrs.push(this.finishNode(_node6, "ImportAttribute"));
      } while (this.eat(12));
      this.expect(8);
      return attrs;
    };
    _proto.parseModuleAttributes = function parseModuleAttributes() {
      var attrs = [];
      var attributes = new Set();
      do {
        var _node7 = this.startNode();
        _node7.key = this.parseIdentifier(true);
        if (_node7.key.name !== "type") {
          this.raise(Errors.ModuleAttributeDifferentFromType, _node7.key);
        }
        if (attributes.has(_node7.key.name)) {
          this.raise(Errors.ModuleAttributesWithDuplicateKeys, _node7.key, {
            key: _node7.key.name
          });
        }
        attributes.add(_node7.key.name);
        this.expect(14);
        if (!this.match(133)) {
          throw this.raise(Errors.ModuleAttributeInvalidValue, this.state.startLoc);
        }
        _node7.value = this.parseStringLiteral(this.state.value);
        attrs.push(this.finishNode(_node7, "ImportAttribute"));
      } while (this.eat(12));
      return attrs;
    };
    _proto.maybeParseImportAttributes = function maybeParseImportAttributes(node) {
      var attributes;
      var useWith = false;
      if (this.match(76)) {
        if (this.hasPrecedingLineBreak() && this.lookaheadCharCode() === 40) {
          return;
        }
        this.next();
        {
          if (this.hasPlugin("moduleAttributes")) {
            attributes = this.parseModuleAttributes();
          } else {
            this.expectImportAttributesPlugin();
            attributes = this.parseImportAttributes();
          }
        }
        useWith = true;
      } else if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {
        if (this.hasPlugin("importAttributes")) {
          if (this.getPluginOption("importAttributes", "deprecatedAssertSyntax") !== true) {
            this.raise(Errors.ImportAttributesUseAssert, this.state.startLoc);
          }
          this.addExtra(node, "deprecatedAssertSyntax", true);
        } else {
          this.expectOnePlugin(["importAttributes", "importAssertions"]);
        }
        this.next();
        attributes = this.parseImportAttributes();
      } else if (this.hasPlugin("importAttributes") || this.hasPlugin("importAssertions")) {
        attributes = [];
      } else {
        if (this.hasPlugin("moduleAttributes")) {
          attributes = [];
        } else return;
      }
      if (!useWith && this.hasPlugin("importAssertions")) {
        node.assertions = attributes;
      } else {
        node.attributes = attributes;
      }
    };
    _proto.maybeParseDefaultImportSpecifier = function maybeParseDefaultImportSpecifier(node, maybeDefaultIdentifier) {
      if (maybeDefaultIdentifier) {
        var specifier = this.startNodeAtNode(maybeDefaultIdentifier);
        specifier.local = maybeDefaultIdentifier;
        node.specifiers.push(this.finishImportSpecifier(specifier, "ImportDefaultSpecifier"));
        return true;
      } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
        this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier");
        return true;
      }
      return false;
    };
    _proto.maybeParseStarImportSpecifier = function maybeParseStarImportSpecifier(node) {
      if (this.match(55)) {
        var specifier = this.startNode();
        this.next();
        this.expectContextual(93);
        this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier");
        return true;
      }
      return false;
    };
    _proto.parseNamedImportSpecifiers = function parseNamedImportSpecifiers(node) {
      var first = true;
      this.expect(5);
      while (!this.eat(8)) {
        if (first) {
          first = false;
        } else {
          if (this.eat(14)) {
            throw this.raise(Errors.DestructureNamedImport, this.state.startLoc);
          }
          this.expect(12);
          if (this.eat(8)) break;
        }
        var specifier = this.startNode();
        var importedIsString = this.match(133);
        var isMaybeTypeOnly = this.isContextual(130);
        specifier.imported = this.parseModuleExportName();
        var importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined);
        node.specifiers.push(importSpecifier);
      }
    };
    _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
      if (this.eatContextual(93)) {
        specifier.local = this.parseIdentifier();
      } else {
        var imported = specifier.imported;
        if (importedIsString) {
          throw this.raise(Errors.ImportBindingIsString, specifier, {
            importName: imported.value
          });
        }
        this.checkReservedWord(imported.name, specifier.loc.start, true, true);
        if (!specifier.local) {
          specifier.local = cloneIdentifier(imported);
        }
      }
      return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType);
    };
    _proto.isThisParam = function isThisParam(param) {
      return param.type === "Identifier" && param.name === "this";
    };
    return _createClass(StatementParser);
  }(ExpressionParser);

  var Parser = function (_StatementParser) {
    function Parser(options, input, pluginsMap) {
      var _this;
      options = getOptions(options);
      _this = _StatementParser.call(this, options, input) || this;
      _this.options = options;
      _this.initializeScopes();
      _this.plugins = pluginsMap;
      _this.filename = options.sourceFilename;
      return _this;
    }
    _inherits(Parser, _StatementParser);
    var _proto = Parser.prototype;
    _proto.getScopeHandler = function getScopeHandler() {
      return ScopeHandler;
    };
    _proto.parse = function parse() {
      this.enterInitialScopes();
      var file = this.startNode();
      var program = this.startNode();
      this.nextToken();
      file.errors = null;
      this.parseTopLevel(file, program);
      file.errors = this.state.errors;
      file.comments.length = this.state.commentsLen;
      return file;
    };
    return _createClass(Parser);
  }(StatementParser);

  function parse$4(input, options) {
    var _options;
    if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
      options = Object.assign({}, options);
      try {
        options.sourceType = "module";
        var parser = getParser(options, input);
        var ast = parser.parse();
        if (parser.sawUnambiguousESM) {
          return ast;
        }
        if (parser.ambiguousScriptDifferentAst) {
          try {
            options.sourceType = "script";
            return getParser(options, input).parse();
          } catch (_unused) {}
        } else {
          ast.program.sourceType = "script";
        }
        return ast;
      } catch (moduleError) {
        try {
          options.sourceType = "script";
          return getParser(options, input).parse();
        } catch (_unused2) {}
        throw moduleError;
      }
    } else {
      return getParser(options, input).parse();
    }
  }
  function parseExpression(input, options) {
    var parser = getParser(options, input);
    if (parser.options.strictMode) {
      parser.state.strict = true;
    }
    return parser.getExpression();
  }
  function generateExportedTokenTypes(internalTokenTypes) {
    var tokenTypes = {};
    for (var _i2 = 0, _Object$keys2 = Object.keys(internalTokenTypes); _i2 < _Object$keys2.length; _i2++) {
      var typeName = _Object$keys2[_i2];
      tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);
    }
    return tokenTypes;
  }
  var tokTypes = generateExportedTokenTypes(tt);
  function getParser(options, input) {
    var cls = Parser;
    var pluginsMap = new Map();
    if (options != null && options.plugins) {
      for (var _i4 = 0, _options$plugins2 = options.plugins; _i4 < _options$plugins2.length; _i4++) {
        var plugin = _options$plugins2[_i4];
        var name = void 0,
          opts = void 0;
        if (typeof plugin === "string") {
          name = plugin;
        } else {
          name = plugin[0];
          opts = plugin[1];
        }
        if (!pluginsMap.has(name)) {
          pluginsMap.set(name, opts || {});
        }
      }
      validatePlugins(pluginsMap);
      cls = getParserClass(pluginsMap);
    }
    return new cls(options, input, pluginsMap);
  }
  var parserClassCache = new Map();
  function getParserClass(pluginsMap) {
    var pluginList = [];
    for (var _i6 = 0; _i6 < mixinPluginNames.length; _i6++) {
      var name = mixinPluginNames[_i6];
      if (pluginsMap.has(name)) {
        pluginList.push(name);
      }
    }
    var key = pluginList.join("|");
    var cls = parserClassCache.get(key);
    if (!cls) {
      cls = Parser;
      for (var _i8 = 0; _i8 < pluginList.length; _i8++) {
        var plugin = pluginList[_i8];
        cls = mixinPlugins[plugin](cls);
      }
      parserClassCache.set(key, cls);
    }
    return cls;
  }

  var index$4 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    parse: parse$4,
    parseExpression: parseExpression,
    tokTypes: tokTypes
  });

  var jsTokensBABEL_8_BREAKINGFalse = {};

  var hasRequiredJsTokensBABEL_8_BREAKINGFalse;
  function requireJsTokensBABEL_8_BREAKINGFalse() {
    if (hasRequiredJsTokensBABEL_8_BREAKINGFalse) return jsTokensBABEL_8_BREAKINGFalse;
    hasRequiredJsTokensBABEL_8_BREAKINGFalse = 1;
    Object.defineProperty(jsTokensBABEL_8_BREAKINGFalse, "__esModule", {
      value: true
    });
    jsTokensBABEL_8_BREAKINGFalse["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;
    jsTokensBABEL_8_BREAKINGFalse.matchToToken = function (match) {
      var token = {
        type: "invalid",
        value: match[0],
        closed: undefined
      };
      if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace";
      return token;
    };
    return jsTokensBABEL_8_BREAKINGFalse;
  }

  function bool$a(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var jsTokens = bool$a(browser$1$1.env["BABEL_8_BREAKING"]) ? requireJsTokensBABEL_8_BREAKINGFalse() : requireJsTokensBABEL_8_BREAKINGFalse();

  var picocolors_browser = {exports: {}};

  var x = String;
  var create = function create() {
    return {
      isColorSupported: false,
      reset: x,
      bold: x,
      dim: x,
      italic: x,
      underline: x,
      inverse: x,
      hidden: x,
      strikethrough: x,
      black: x,
      red: x,
      green: x,
      yellow: x,
      blue: x,
      magenta: x,
      cyan: x,
      white: x,
      gray: x,
      bgBlack: x,
      bgRed: x,
      bgGreen: x,
      bgYellow: x,
      bgBlue: x,
      bgMagenta: x,
      bgCyan: x,
      bgWhite: x
    };
  };
  picocolors_browser.exports = create();
  var createColors = picocolors_browser.exports.createColors = create;
  var picocolors_browserExports = picocolors_browser.exports;

  var colors$1 = typeof browser$1$1 === "object" && (browser$1$1.env.FORCE_COLOR === "0" || browser$1$1.env.FORCE_COLOR === "false") ? createColors(false) : picocolors_browserExports;
  var compose$1 = function compose(f, g) {
    return function (v) {
      return f(g(v));
    };
  };
  var sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
  function getDefs$1(colors) {
    return {
      keyword: colors.cyan,
      capitalized: colors.yellow,
      jsxIdentifier: colors.yellow,
      punctuator: colors.yellow,
      number: colors.magenta,
      string: colors.green,
      regex: colors.magenta,
      comment: colors.gray,
      invalid: compose$1(compose$1(colors.white, colors.bgRed), colors.bold)
    };
  }
  var NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
  var BRACKET = /^[()[\]{}]$/;
  var tokenize;
  {
    var JSX_TAG = /^[a-z][\w-]*$/i;
    var getTokenType = function getTokenType(token, offset, text) {
      if (token.type === "name") {
        if (isKeyword(token.value) || isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) {
          return "keyword";
        }
        if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) === "</")) {
          return "jsxIdentifier";
        }
        if (token.value[0] !== token.value[0].toLowerCase()) {
          return "capitalized";
        }
      }
      if (token.type === "punctuator" && BRACKET.test(token.value)) {
        return "bracket";
      }
      if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
        return "punctuator";
      }
      return token.type;
    };
    tokenize = _regeneratorRuntime().mark(function tokenize(text) {
      var match, token;
      return _regeneratorRuntime().wrap(function tokenize$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(match = jsTokens["default"].exec(text))) {
              _context.next = 6;
              break;
            }
            token = jsTokens.matchToToken(match);
            _context.next = 4;
            return {
              type: getTokenType(token, match.index, text),
              value: token.value
            };
          case 4:
            _context.next = 0;
            break;
          case 6:
          case "end":
            return _context.stop();
        }
      }, tokenize);
    });
  }
  function highlightTokens(defs, text) {
    var highlighted = "";
    var _loop = function _loop() {
      var _step$value = _step.value,
        type = _step$value.type,
        value = _step$value.value;
      var colorize = defs[type];
      if (colorize) {
        highlighted += value.split(NEWLINE$1).map(function (str) {
          return colorize(str);
        }).join("\n");
      } else {
        highlighted += value;
      }
    };
    for (var _iterator = _createForOfIteratorHelperLoose(tokenize(text)), _step; !(_step = _iterator()).done;) {
      _loop();
    }
    return highlighted;
  }
  function shouldHighlight(options) {
    return colors$1.isColorSupported || options.forceColor;
  }
  var pcWithForcedColor$1 = undefined;
  function getColors$1(forceColor) {
    if (forceColor) {
      var _pcWithForcedColor;
      (_pcWithForcedColor = pcWithForcedColor$1) != null ? _pcWithForcedColor : pcWithForcedColor$1 = createColors(true);
      return pcWithForcedColor$1;
    }
    return colors$1;
  }
  function highlight(code, options) {
    if (options === void 0) {
      options = {};
    }
    if (code !== "" && shouldHighlight(options)) {
      var defs = getDefs$1(getColors$1(options.forceColor));
      return highlightTokens(defs, code);
    } else {
      return code;
    }
  }

  var colors = typeof browser$1$1 === "object" && (browser$1$1.env.FORCE_COLOR === "0" || browser$1$1.env.FORCE_COLOR === "false") ? createColors(false) : picocolors_browserExports;
  var compose = function compose(f, g) {
    return function (v) {
      return f(g(v));
    };
  };
  var pcWithForcedColor = undefined;
  function getColors(forceColor) {
    if (forceColor) {
      var _pcWithForcedColor;
      (_pcWithForcedColor = pcWithForcedColor) != null ? _pcWithForcedColor : pcWithForcedColor = createColors(true);
      return pcWithForcedColor;
    }
    return colors;
  }
  function getDefs(colors) {
    return {
      gutter: colors.gray,
      marker: compose(colors.red, colors.bold),
      message: compose(colors.red, colors.bold)
    };
  }
  var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
  function getMarkerLines(loc, source, opts) {
    var startLoc = Object.assign({
      column: 0,
      line: -1
    }, loc.start);
    var endLoc = Object.assign({}, startLoc, loc.end);
    var _ref = opts || {},
      _ref$linesAbove = _ref.linesAbove,
      linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove,
      _ref$linesBelow = _ref.linesBelow,
      linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow;
    var startLine = startLoc.line;
    var startColumn = startLoc.column;
    var endLine = endLoc.line;
    var endColumn = endLoc.column;
    var start = Math.max(startLine - (linesAbove + 1), 0);
    var end = Math.min(source.length, endLine + linesBelow);
    if (startLine === -1) {
      start = 0;
    }
    if (endLine === -1) {
      end = source.length;
    }
    var lineDiff = endLine - startLine;
    var markerLines = {};
    if (lineDiff) {
      for (var i = 0; i <= lineDiff; i++) {
        var lineNumber = i + startLine;
        if (!startColumn) {
          markerLines[lineNumber] = true;
        } else if (i === 0) {
          var sourceLength = source[lineNumber - 1].length;
          markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
        } else if (i === lineDiff) {
          markerLines[lineNumber] = [0, endColumn];
        } else {
          var _sourceLength = source[lineNumber - i].length;
          markerLines[lineNumber] = [0, _sourceLength];
        }
      }
    } else {
      if (startColumn === endColumn) {
        if (startColumn) {
          markerLines[startLine] = [startColumn, 0];
        } else {
          markerLines[startLine] = true;
        }
      } else {
        markerLines[startLine] = [startColumn, endColumn - startColumn];
      }
    }
    return {
      start: start,
      end: end,
      markerLines: markerLines
    };
  }
  function codeFrameColumns(rawLines, loc, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var highlighted = (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);
    var colors = getColors(opts.forceColor);
    var defs = getDefs(colors);
    var maybeHighlight = function maybeHighlight(fmt, string) {
      return highlighted ? fmt(string) : string;
    };
    var lines = rawLines.split(NEWLINE);
    var _getMarkerLines = getMarkerLines(loc, lines, opts),
      start = _getMarkerLines.start,
      end = _getMarkerLines.end,
      markerLines = _getMarkerLines.markerLines;
    var hasColumns = loc.start && typeof loc.start.column === "number";
    var numberMaxWidth = String(end).length;
    var highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;
    var frame = highlightedLines.split(NEWLINE, end).slice(start, end).map(function (line, index) {
      var number = start + 1 + index;
      var paddedNumber = (" " + number).slice(-numberMaxWidth);
      var gutter = " " + paddedNumber + " |";
      var hasMarker = markerLines[number];
      var lastMarkerLine = !markerLines[number + 1];
      if (hasMarker) {
        var markerLine = "";
        if (Array.isArray(hasMarker)) {
          var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
          var numberOfMarkers = hasMarker[1] || 1;
          markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
          if (lastMarkerLine && opts.message) {
            markerLine += " " + maybeHighlight(defs.message, opts.message);
          }
        }
        return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? " " + line : "", markerLine].join("");
      } else {
        return " " + maybeHighlight(defs.gutter, gutter) + (line.length > 0 ? " " + line : "");
      }
    }).join("\n");
    if (opts.message && !hasColumns) {
      frame = "" + " ".repeat(numberMaxWidth + 1) + opts.message + "\n" + frame;
    }
    if (highlighted) {
      return colors.reset(frame);
    } else {
      return frame;
    }
  }

  var isCallExpression$7 = isCallExpression$8,
    isExpressionStatement$1 = isExpressionStatement$2,
    isFunction$4 = isFunction$5,
    isIdentifier$e = isIdentifier$f,
    isJSXIdentifier$2 = isJSXIdentifier$3,
    isNewExpression$2 = isNewExpression$3,
    isPlaceholder = isPlaceholder$1,
    isStatement$8 = isStatement$9,
    isStringLiteral$4 = isStringLiteral$5,
    removePropertiesDeep = removePropertiesDeep$1,
    traverse$1 = traverse$2;
  var PATTERN = /^[_$A-Z0-9]+$/;
  function parseAndBuildMetadata(formatter, code, opts) {
    var placeholderWhitelist = opts.placeholderWhitelist,
      placeholderPattern = opts.placeholderPattern,
      preserveComments = opts.preserveComments,
      syntacticPlaceholders = opts.syntacticPlaceholders;
    var ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);
    removePropertiesDeep(ast, {
      preserveComments: preserveComments
    });
    formatter.validate(ast);
    var state = {
      syntactic: {
        placeholders: [],
        placeholderNames: new Set()
      },
      legacy: {
        placeholders: [],
        placeholderNames: new Set()
      },
      placeholderWhitelist: placeholderWhitelist,
      placeholderPattern: placeholderPattern,
      syntacticPlaceholders: syntacticPlaceholders
    };
    traverse$1(ast, placeholderVisitorHandler, state);
    return Object.assign({
      ast: ast
    }, state.syntactic.placeholders.length ? state.syntactic : state.legacy);
  }
  function placeholderVisitorHandler(node, ancestors, state) {
    var _state$placeholderWhi;
    var name;
    var hasSyntacticPlaceholders = state.syntactic.placeholders.length > 0;
    if (isPlaceholder(node)) {
      if (state.syntacticPlaceholders === false) {
        throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false.");
      }
      name = node.name.name;
      hasSyntacticPlaceholders = true;
    } else if (hasSyntacticPlaceholders || state.syntacticPlaceholders) {
      return;
    } else if (isIdentifier$e(node) || isJSXIdentifier$2(node)) {
      name = node.name;
    } else if (isStringLiteral$4(node)) {
      name = node.value;
    } else {
      return;
    }
    if (hasSyntacticPlaceholders && (state.placeholderPattern != null || state.placeholderWhitelist != null)) {
      throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
    }
    if (!hasSyntacticPlaceholders && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) {
      return;
    }
    ancestors = ancestors.slice();
    var _ancestors = ancestors[ancestors.length - 1],
      parent = _ancestors.node,
      key = _ancestors.key;
    var type;
    if (isStringLiteral$4(node) || isPlaceholder(node, {
      expectedNode: "StringLiteral"
    })) {
      type = "string";
    } else if (isNewExpression$2(parent) && key === "arguments" || isCallExpression$7(parent) && key === "arguments" || isFunction$4(parent) && key === "params") {
      type = "param";
    } else if (isExpressionStatement$1(parent) && !isPlaceholder(node)) {
      type = "statement";
      ancestors = ancestors.slice(0, -1);
    } else if (isStatement$8(node) && isPlaceholder(node)) {
      type = "statement";
    } else {
      type = "other";
    }
    var _ref = !hasSyntacticPlaceholders ? state.legacy : state.syntactic,
      placeholders = _ref.placeholders,
      placeholderNames = _ref.placeholderNames;
    placeholders.push({
      name: name,
      type: type,
      resolve: function resolve(ast) {
        return resolveAncestors(ast, ancestors);
      },
      isDuplicate: placeholderNames.has(name)
    });
    placeholderNames.add(name);
  }
  function resolveAncestors(ast, ancestors) {
    var parent = ast;
    for (var i = 0; i < ancestors.length - 1; i++) {
      var _ancestors$i = ancestors[i],
        _key = _ancestors$i.key,
        _index = _ancestors$i.index;
      if (_index === undefined) {
        parent = parent[_key];
      } else {
        parent = parent[_key][_index];
      }
    }
    var _ancestors2 = ancestors[ancestors.length - 1],
      key = _ancestors2.key,
      index = _ancestors2.index;
    return {
      parent: parent,
      key: key,
      index: index
    };
  }
  function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
    var plugins = (parserOpts.plugins || []).slice();
    if (syntacticPlaceholders !== false) {
      plugins.push("placeholders");
    }
    parserOpts = Object.assign({
      allowReturnOutsideFunction: true,
      allowSuperOutsideMethod: true,
      sourceType: "module"
    }, parserOpts, {
      plugins: plugins
    });
    try {
      return parse$4(code, parserOpts);
    } catch (err) {
      var loc = err.loc;
      if (loc) {
        err.message += "\n" + codeFrameColumns(code, {
          start: loc
        });
        err.code = "BABEL_TEMPLATE_PARSE_ERROR";
      }
      throw err;
    }
  }

  var blockStatement$5 = blockStatement$6,
    cloneNode$f = cloneNode$g,
    emptyStatement = emptyStatement$1,
    expressionStatement$6 = expressionStatement$7,
    identifier$d = identifier$e,
    isStatement$7 = isStatement$9,
    isStringLiteral$3 = isStringLiteral$5,
    stringLiteral$5 = stringLiteral$6,
    validate$3 = validate$5;
  function populatePlaceholders(metadata, replacements) {
    var ast = cloneNode$f(metadata.ast);
    if (replacements) {
      metadata.placeholders.forEach(function (placeholder) {
        if (!hasOwnProperty.call(replacements, placeholder.name)) {
          var placeholderName = placeholder.name;
          throw new Error("Error: No substitution given for \"" + placeholderName + "\". If this is not meant to be a\n            placeholder you may want to consider passing one of the following options to @babel/template:\n            - { placeholderPattern: false, placeholderWhitelist: new Set(['" + placeholderName + "'])}\n            - { placeholderPattern: /^" + placeholderName + "$/ }");
        }
      });
      Object.keys(replacements).forEach(function (key) {
        if (!metadata.placeholderNames.has(key)) {
          throw new Error("Unknown substitution \"" + key + "\" given");
        }
      });
    }
    metadata.placeholders.slice().reverse().forEach(function (placeholder) {
      try {
        applyReplacement(placeholder, ast, replacements && replacements[placeholder.name] || null);
      } catch (e) {
        e.message = "@babel/template placeholder \"" + placeholder.name + "\": " + e.message;
        throw e;
      }
    });
    return ast;
  }
  function applyReplacement(placeholder, ast, replacement) {
    if (placeholder.isDuplicate) {
      if (Array.isArray(replacement)) {
        replacement = replacement.map(function (node) {
          return cloneNode$f(node);
        });
      } else if (typeof replacement === "object") {
        replacement = cloneNode$f(replacement);
      }
    }
    var _placeholder$resolve = placeholder.resolve(ast),
      parent = _placeholder$resolve.parent,
      key = _placeholder$resolve.key,
      index = _placeholder$resolve.index;
    if (placeholder.type === "string") {
      if (typeof replacement === "string") {
        replacement = stringLiteral$5(replacement);
      }
      if (!replacement || !isStringLiteral$3(replacement)) {
        throw new Error("Expected string substitution");
      }
    } else if (placeholder.type === "statement") {
      if (index === undefined) {
        if (!replacement) {
          replacement = emptyStatement();
        } else if (Array.isArray(replacement)) {
          replacement = blockStatement$5(replacement);
        } else if (typeof replacement === "string") {
          replacement = expressionStatement$6(identifier$d(replacement));
        } else if (!isStatement$7(replacement)) {
          replacement = expressionStatement$6(replacement);
        }
      } else {
        if (replacement && !Array.isArray(replacement)) {
          if (typeof replacement === "string") {
            replacement = identifier$d(replacement);
          }
          if (!isStatement$7(replacement)) {
            replacement = expressionStatement$6(replacement);
          }
        }
      }
    } else if (placeholder.type === "param") {
      if (typeof replacement === "string") {
        replacement = identifier$d(replacement);
      }
      if (index === undefined) throw new Error("Assertion failure.");
    } else {
      if (typeof replacement === "string") {
        replacement = identifier$d(replacement);
      }
      if (Array.isArray(replacement)) {
        throw new Error("Cannot replace single expression with an array.");
      }
    }
    function set(parent, key, value) {
      var node = parent[key];
      parent[key] = value;
      if (node.type === "Identifier") {
        if (node.typeAnnotation) {
          value.typeAnnotation = node.typeAnnotation;
        }
        if (node.optional) {
          value.optional = node.optional;
        }
        if (node.decorators) {
          value.decorators = node.decorators;
        }
      }
    }
    if (index === undefined) {
      validate$3(parent, key, replacement);
      set(parent, key, replacement);
    } else {
      var items = parent[key].slice();
      if (placeholder.type === "statement" || placeholder.type === "param") {
        if (replacement == null) {
          items.splice(index, 1);
        } else if (Array.isArray(replacement)) {
          items.splice.apply(items, [index, 1].concat(_toConsumableArray(replacement)));
        } else {
          set(items, index, replacement);
        }
      } else {
        set(items, index, replacement);
      }
      validate$3(parent, key, items);
      parent[key] = items;
    }
  }

  function stringTemplate(formatter, code, opts) {
    code = formatter.code(code);
    var metadata;
    return function (arg) {
      var replacements = normalizeReplacements(arg);
      if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);
      return formatter.unwrap(populatePlaceholders(metadata, replacements));
    };
  }

  function literalTemplate(formatter, tpl, opts) {
    var _buildLiteralData = buildLiteralData(formatter, tpl, opts),
      metadata = _buildLiteralData.metadata,
      names = _buildLiteralData.names;
    return function (arg) {
      var defaultReplacements = {};
      arg.forEach(function (replacement, i) {
        defaultReplacements[names[i]] = replacement;
      });
      return function (arg) {
        var replacements = normalizeReplacements(arg);
        if (replacements) {
          Object.keys(replacements).forEach(function (key) {
            if (hasOwnProperty.call(defaultReplacements, key)) {
              throw new Error("Unexpected replacement overlap.");
            }
          });
        }
        return formatter.unwrap(populatePlaceholders(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements));
      };
    };
  }
  function buildLiteralData(formatter, tpl, opts) {
    var prefix = "BABEL_TPL$";
    var raw = tpl.join("");
    do {
      prefix = "$$" + prefix;
    } while (raw.includes(prefix));
    var _buildTemplateCode = buildTemplateCode(tpl, prefix),
      names = _buildTemplateCode.names,
      code = _buildTemplateCode.code;
    var metadata = parseAndBuildMetadata(formatter, formatter.code(code), {
      parser: opts.parser,
      placeholderWhitelist: new Set(names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])),
      placeholderPattern: opts.placeholderPattern,
      preserveComments: opts.preserveComments,
      syntacticPlaceholders: opts.syntacticPlaceholders
    });
    return {
      metadata: metadata,
      names: names
    };
  }
  function buildTemplateCode(tpl, prefix) {
    var names = [];
    var code = tpl[0];
    for (var i = 1; i < tpl.length; i++) {
      var value = "" + prefix + (i - 1);
      names.push(value);
      code += value + tpl[i];
    }
    return {
      names: names,
      code: code
    };
  }

  var NO_PLACEHOLDER = validate$4({
    placeholderPattern: false
  });
  function createTemplateBuilder(formatter, defaultOpts) {
    var templateFnCache = new WeakMap();
    var templateAstCache = new WeakMap();
    var cachedOpts = defaultOpts || validate$4(null);
    return Object.assign(function (tpl) {
      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
        args[_key - 1] = arguments[_key];
      }
      if (typeof tpl === "string") {
        if (args.length > 1) throw new Error("Unexpected extra params.");
        return extendedTrace(stringTemplate(formatter, tpl, merge$1(cachedOpts, validate$4(args[0]))));
      } else if (Array.isArray(tpl)) {
        var builder = templateFnCache.get(tpl);
        if (!builder) {
          builder = literalTemplate(formatter, tpl, cachedOpts);
          templateFnCache.set(tpl, builder);
        }
        return extendedTrace(builder(args));
      } else if (typeof tpl === "object" && tpl) {
        if (args.length > 0) throw new Error("Unexpected extra params.");
        return createTemplateBuilder(formatter, merge$1(cachedOpts, validate$4(tpl)));
      }
      throw new Error("Unexpected template param " + typeof tpl);
    }, {
      ast: function ast(tpl) {
        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
          args[_key2 - 1] = arguments[_key2];
        }
        if (typeof tpl === "string") {
          if (args.length > 1) throw new Error("Unexpected extra params.");
          return stringTemplate(formatter, tpl, merge$1(merge$1(cachedOpts, validate$4(args[0])), NO_PLACEHOLDER))();
        } else if (Array.isArray(tpl)) {
          var builder = templateAstCache.get(tpl);
          if (!builder) {
            builder = literalTemplate(formatter, tpl, merge$1(cachedOpts, NO_PLACEHOLDER));
            templateAstCache.set(tpl, builder);
          }
          return builder(args)();
        }
        throw new Error("Unexpected template param " + typeof tpl);
      }
    });
  }
  function extendedTrace(fn) {
    var rootStack = "";
    try {
      throw new Error();
    } catch (error) {
      if (error.stack) {
        rootStack = error.stack.split("\n").slice(3).join("\n");
      }
    }
    return function (arg) {
      try {
        return fn(arg);
      } catch (err) {
        err.stack += "\n    =============\n" + rootStack;
        throw err;
      }
    };
  }

  var smart = createTemplateBuilder(smart$1);
  var statement = createTemplateBuilder(statement$1);
  var statements = createTemplateBuilder(statements$1);
  var expression = createTemplateBuilder(expression$1);
  var program$1 = createTemplateBuilder(program$2);
  var template$1 = Object.assign(smart.bind(undefined), {
    smart: smart,
    statement: statement,
    statements: statements,
    expression: expression,
    program: program$1,
    ast: smart.ast
  });

  var index$3 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    default: template$1,
    expression: expression,
    program: program$1,
    smart: smart,
    statement: statement,
    statements: statements
  });

  function helper$2(minVersion, source, metadata) {
    return Object.freeze({
      minVersion: minVersion,
      ast: function ast() {
        return template$1.program.ast(source, {
          preserveComments: true
        });
      },
      metadata: metadata
    });
  }
  var helpers$3 = {
    __proto__: null,
    OverloadYield: helper$2("7.18.14", "function _OverloadYield(e,d){this.v=e,this.k=d}", {
      globals: [],
      locals: {
        _OverloadYield: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_OverloadYield",
      dependencies: {}
    }),
    applyDecoratedDescriptor: helper$2("7.0.0-beta.0", 'function _applyDecoratedDescriptor(i,e,r,n,l){var a={};return Object.keys(n).forEach((function(i){a[i]=n[i]})),a.enumerable=!!a.enumerable,a.configurable=!!a.configurable,("value"in a||a.initializer)&&(a.writable=!0),a=r.slice().reverse().reduce((function(r,n){return n(i,e,r)||r}),a),l&&void 0!==a.initializer&&(a.value=a.initializer?a.initializer.call(l):void 0,a.initializer=void 0),void 0===a.initializer?(Object.defineProperty(i,e,a),null):a}', {
      globals: ["Object"],
      locals: {
        _applyDecoratedDescriptor: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_applyDecoratedDescriptor",
      dependencies: {}
    }),
    applyDecs2311: helper$2("7.24.0", 'function applyDecs2311(e,t,n,r,o,i){var a,c,u,s,f,l,p,d=Symbol.metadata||Symbol.for("Symbol.metadata"),m=Object.defineProperty,h=Object.create,y=[h(null),h(null)],v=t.length;function g(t,n,r){return function(o,i){n&&(i=o,o=e);for(var a=0;a<t.length;a++)i=t[a].apply(o,r?[i]:[]);return r?i:o}}function b(e,t,n,r){if("function"!=typeof e&&(r||void 0!==e))throw new TypeError(t+" must "+(n||"be")+" a function"+(r?"":" or undefined"));return e}function applyDec(e,t,n,r,o,i,u,s,f,l,p){function d(e){if(!p(e))throw new TypeError("Attempted to access private element on non-instance")}var h=[].concat(t[0]),v=t[3],w=!u,D=1===o,S=3===o,j=4===o,E=2===o;function I(t,n,r){return function(o,i){return n&&(i=o,o=e),r&&r(o),P[t].call(o,i)}}if(!w){var P={},k=[],F=S?"get":j||D?"set":"value";if(f?(l||D?P={get:setFunctionName((function(){return v(this)}),r,"get"),set:function(e){t[4](this,e)}}:P[F]=v,l||setFunctionName(P[F],r,E?"":F)):l||(P=Object.getOwnPropertyDescriptor(e,r)),!l&&!f){if((c=y[+s][r])&&7!=(c^o))throw Error("Decorating two elements with the same name ("+P[F].name+") is not supported yet");y[+s][r]=o<3?1:o}}for(var N=e,O=h.length-1;O>=0;O-=n?2:1){var T=b(h[O],"A decorator","be",!0),z=n?h[O-1]:void 0,A={},H={kind:["field","accessor","method","getter","setter","class"][o],name:r,metadata:a,addInitializer:function(e,t){if(e.v)throw new TypeError("attempted to call addInitializer after decoration was finished");b(t,"An initializer","be",!0),i.push(t)}.bind(null,A)};if(w)c=T.call(z,N,H),A.v=1,b(c,"class decorators","return")&&(N=c);else if(H.static=s,H.private=f,c=H.access={has:f?p.bind():function(e){return r in e}},j||(c.get=f?E?function(e){return d(e),P.value}:I("get",0,d):function(e){return e[r]}),E||S||(c.set=f?I("set",0,d):function(e,t){e[r]=t}),N=T.call(z,D?{get:P.get,set:P.set}:P[F],H),A.v=1,D){if("object"==typeof N&&N)(c=b(N.get,"accessor.get"))&&(P.get=c),(c=b(N.set,"accessor.set"))&&(P.set=c),(c=b(N.init,"accessor.init"))&&k.unshift(c);else if(void 0!==N)throw new TypeError("accessor decorators must return an object with get, set, or init properties or undefined")}else b(N,(l?"field":"method")+" decorators","return")&&(l?k.unshift(N):P[F]=N)}return o<2&&u.push(g(k,s,1),g(i,s,0)),l||w||(f?D?u.splice(-1,0,I("get",s),I("set",s)):u.push(E?P[F]:b.call.bind(P[F])):m(e,r,P)),N}function w(e){return m(e,d,{configurable:!0,enumerable:!0,value:a})}return void 0!==i&&(a=i[d]),a=h(null==a?null:a),f=[],l=function(e){e&&f.push(g(e))},p=function(t,r){for(var i=0;i<n.length;i++){var a=n[i],c=a[1],l=7&c;if((8&c)==t&&!l==r){var p=a[2],d=!!a[3],m=16&c;applyDec(t?e:e.prototype,a,m,d?"#"+p:toPropertyKey(p),l,l<2?[]:t?s=s||[]:u=u||[],f,!!t,d,r,t&&d?function(t){return checkInRHS(t)===e}:o)}}},p(8,0),p(0,0),p(8,1),p(0,1),l(u),l(s),c=f,v||w(e),{e:c,get c(){var n=[];return v&&[w(e=applyDec(e,[t],r,e.name,5,n)),g(n,1)]}}}', {
      globals: ["Symbol", "Object", "TypeError", "Error"],
      locals: {
        applyDecs2311: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "applyDecs2311",
      dependencies: {
        checkInRHS: ["body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.10.consequent.body.body.0.argument.left.callee"],
        setFunctionName: ["body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.0.consequent.right.properties.0.value.callee", "body.0.body.body.3.body.body.3.consequent.body.1.test.expressions.0.consequent.expressions.1.right.callee"],
        toPropertyKey: ["body.0.body.body.5.argument.expressions.4.right.body.body.0.body.body.1.consequent.body.1.expression.arguments.3.alternate.callee"]
      }
    }),
    arrayLikeToArray: helper$2("7.9.0", "function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}", {
      globals: ["Array"],
      locals: {
        _arrayLikeToArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_arrayLikeToArray",
      dependencies: {}
    }),
    arrayWithHoles: helper$2("7.0.0-beta.0", "function _arrayWithHoles(r){if(Array.isArray(r))return r}", {
      globals: ["Array"],
      locals: {
        _arrayWithHoles: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_arrayWithHoles",
      dependencies: {}
    }),
    arrayWithoutHoles: helper$2("7.0.0-beta.0", "function _arrayWithoutHoles(r){if(Array.isArray(r))return arrayLikeToArray(r)}", {
      globals: ["Array"],
      locals: {
        _arrayWithoutHoles: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_arrayWithoutHoles",
      dependencies: {
        arrayLikeToArray: ["body.0.body.body.0.consequent.argument.callee"]
      }
    }),
    assertClassBrand: helper$2("7.24.0", 'function _assertClassBrand(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}', {
      globals: ["TypeError"],
      locals: {
        _assertClassBrand: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_assertClassBrand",
      dependencies: {}
    }),
    assertThisInitialized: helper$2("7.0.0-beta.0", "function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");return e}", {
      globals: ["ReferenceError"],
      locals: {
        _assertThisInitialized: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_assertThisInitialized",
      dependencies: {}
    }),
    asyncGeneratorDelegate: helper$2("7.0.0-beta.0", 'function _asyncGeneratorDelegate(t){var e={},n=!1;function pump(e,r){return n=!0,r=new Promise((function(n){n(t[e](r))})),{done:!1,value:new OverloadYield(r,1)}}return e["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},e.next=function(t){return n?(n=!1,t):pump("next",t)},"function"==typeof t.throw&&(e.throw=function(t){if(n)throw n=!1,t;return pump("throw",t)}),"function"==typeof t.return&&(e.return=function(t){return n?(n=!1,t):pump("return",t)}),e}', {
      globals: ["Promise", "Symbol"],
      locals: {
        _asyncGeneratorDelegate: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_asyncGeneratorDelegate",
      dependencies: {
        OverloadYield: ["body.0.body.body.1.body.body.0.argument.expressions.2.properties.1.value.callee"]
      }
    }),
    asyncIterator: helper$2("7.15.9", 'function _asyncIterator(r){var n,t,o,e=2;for("undefined"!=typeof Symbol&&(t=Symbol.asyncIterator,o=Symbol.iterator);e--;){if(t&&null!=(n=r[t]))return n.call(r);if(o&&null!=(n=r[o]))return new AsyncFromSyncIterator(n.call(r));t="@@asyncIterator",o="@@iterator"}throw new TypeError("Object is not async iterable")}function AsyncFromSyncIterator(r){function AsyncFromSyncIteratorContinuation(r){if(Object(r)!==r)return Promise.reject(new TypeError(r+" is not an object."));var n=r.done;return Promise.resolve(r.value).then((function(r){return{value:r,done:n}}))}return AsyncFromSyncIterator=function(r){this.s=r,this.n=r.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return AsyncFromSyncIteratorContinuation(this.n.apply(this.s,arguments))},return:function(r){var n=this.s.return;return void 0===n?Promise.resolve({value:r,done:!0}):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))},throw:function(r){var n=this.s.return;return void 0===n?Promise.reject(r):AsyncFromSyncIteratorContinuation(n.apply(this.s,arguments))}},new AsyncFromSyncIterator(r)}', {
      globals: ["Symbol", "TypeError", "Object", "Promise"],
      locals: {
        _asyncIterator: ["body.0.id"],
        AsyncFromSyncIterator: ["body.1.id", "body.0.body.body.1.body.body.1.consequent.argument.callee", "body.1.body.body.1.argument.expressions.1.left.object", "body.1.body.body.1.argument.expressions.2.callee", "body.1.body.body.1.argument.expressions.0.left"]
      },
      exportBindingAssignments: [],
      exportName: "_asyncIterator",
      dependencies: {}
    }),
    asyncToGenerator: helper$2("7.0.0-beta.0", 'function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise((function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)}))}}', {
      globals: ["Promise"],
      locals: {
        asyncGeneratorStep: ["body.0.id", "body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.1.body.body.0.expression.callee", "body.1.body.body.0.argument.body.body.1.argument.arguments.0.body.body.2.body.body.0.expression.callee"],
        _asyncToGenerator: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_asyncToGenerator",
      dependencies: {}
    }),
    awaitAsyncGenerator: helper$2("7.0.0-beta.0", "function _awaitAsyncGenerator(e){return new OverloadYield(e,0)}", {
      globals: [],
      locals: {
        _awaitAsyncGenerator: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_awaitAsyncGenerator",
      dependencies: {
        OverloadYield: ["body.0.body.body.0.argument.callee"]
      }
    }),
    callSuper: helper$2("7.23.8", "function _callSuper(t,o,e){return o=getPrototypeOf(o),possibleConstructorReturn(t,isNativeReflectConstruct()?Reflect.construct(o,e||[],getPrototypeOf(t).constructor):o.apply(t,e))}", {
      globals: ["Reflect"],
      locals: {
        _callSuper: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_callSuper",
      dependencies: {
        getPrototypeOf: ["body.0.body.body.0.argument.expressions.0.right.callee", "body.0.body.body.0.argument.expressions.1.arguments.1.consequent.arguments.2.object.callee"],
        isNativeReflectConstruct: ["body.0.body.body.0.argument.expressions.1.arguments.1.test.callee"],
        possibleConstructorReturn: ["body.0.body.body.0.argument.expressions.1.callee"]
      }
    }),
    checkInRHS: helper$2("7.20.5", 'function _checkInRHS(e){if(Object(e)!==e)throw TypeError("right-hand side of \'in\' should be an object, got "+(null!==e?typeof e:"null"));return e}', {
      globals: ["Object", "TypeError"],
      locals: {
        _checkInRHS: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_checkInRHS",
      dependencies: {}
    }),
    checkPrivateRedeclaration: helper$2("7.14.1", 'function _checkPrivateRedeclaration(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}', {
      globals: ["TypeError"],
      locals: {
        _checkPrivateRedeclaration: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_checkPrivateRedeclaration",
      dependencies: {}
    }),
    classCallCheck: helper$2("7.0.0-beta.0", 'function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}', {
      globals: ["TypeError"],
      locals: {
        _classCallCheck: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classCallCheck",
      dependencies: {}
    }),
    classNameTDZError: helper$2("7.0.0-beta.0", "function _classNameTDZError(e){throw new ReferenceError('Class \"'+e+'\" cannot be referenced in computed property keys.')}", {
      globals: ["ReferenceError"],
      locals: {
        _classNameTDZError: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classNameTDZError",
      dependencies: {}
    }),
    classPrivateFieldGet2: helper$2("7.24.0", "function _classPrivateFieldGet2(s,a){return s.get(assertClassBrand(s,a))}", {
      globals: [],
      locals: {
        _classPrivateFieldGet2: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateFieldGet2",
      dependencies: {
        assertClassBrand: ["body.0.body.body.0.argument.arguments.0.callee"]
      }
    }),
    classPrivateFieldInitSpec: helper$2("7.14.1", "function _classPrivateFieldInitSpec(e,t,a){checkPrivateRedeclaration(e,t),t.set(e,a)}", {
      globals: [],
      locals: {
        _classPrivateFieldInitSpec: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateFieldInitSpec",
      dependencies: {
        checkPrivateRedeclaration: ["body.0.body.body.0.expression.expressions.0.callee"]
      }
    }),
    classPrivateFieldLooseBase: helper$2("7.0.0-beta.0", 'function _classPrivateFieldBase(e,t){if(!{}.hasOwnProperty.call(e,t))throw new TypeError("attempted to use private field on non-instance");return e}', {
      globals: ["TypeError"],
      locals: {
        _classPrivateFieldBase: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateFieldBase",
      dependencies: {}
    }),
    classPrivateFieldLooseKey: helper$2("7.0.0-beta.0", 'var id=0;function _classPrivateFieldKey(e){return"__private_"+id+++"_"+e}', {
      globals: [],
      locals: {
        id: ["body.0.declarations.0.id", "body.1.body.body.0.argument.left.left.right.argument", "body.1.body.body.0.argument.left.left.right.argument"],
        _classPrivateFieldKey: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateFieldKey",
      dependencies: {}
    }),
    classPrivateFieldSet2: helper$2("7.24.0", "function _classPrivateFieldSet2(s,a,r){return s.set(assertClassBrand(s,a),r),r}", {
      globals: [],
      locals: {
        _classPrivateFieldSet2: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateFieldSet2",
      dependencies: {
        assertClassBrand: ["body.0.body.body.0.argument.expressions.0.arguments.0.callee"]
      }
    }),
    classPrivateGetter: helper$2("7.24.0", "function _classPrivateGetter(s,r,a){return a(assertClassBrand(s,r))}", {
      globals: [],
      locals: {
        _classPrivateGetter: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateGetter",
      dependencies: {
        assertClassBrand: ["body.0.body.body.0.argument.arguments.0.callee"]
      }
    }),
    classPrivateMethodInitSpec: helper$2("7.14.1", "function _classPrivateMethodInitSpec(e,a){checkPrivateRedeclaration(e,a),a.add(e)}", {
      globals: [],
      locals: {
        _classPrivateMethodInitSpec: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateMethodInitSpec",
      dependencies: {
        checkPrivateRedeclaration: ["body.0.body.body.0.expression.expressions.0.callee"]
      }
    }),
    classPrivateSetter: helper$2("7.24.0", "function _classPrivateSetter(s,r,a,t){return r(assertClassBrand(s,a),t),t}", {
      globals: [],
      locals: {
        _classPrivateSetter: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classPrivateSetter",
      dependencies: {
        assertClassBrand: ["body.0.body.body.0.argument.expressions.0.arguments.0.callee"]
      }
    }),
    classStaticPrivateMethodGet: helper$2("7.3.2", "function _classStaticPrivateMethodGet(s,a,t){return assertClassBrand(a,s),t}", {
      globals: [],
      locals: {
        _classStaticPrivateMethodGet: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_classStaticPrivateMethodGet",
      dependencies: {
        assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"]
      }
    }),
    construct: helper$2("7.0.0-beta.0", "function _construct(t,e,r){if(isNativeReflectConstruct())return Reflect.construct.apply(null,arguments);var o=[null];o.push.apply(o,e);var p=new(t.bind.apply(t,o));return r&&setPrototypeOf(p,r.prototype),p}", {
      globals: ["Reflect"],
      locals: {
        _construct: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_construct",
      dependencies: {
        isNativeReflectConstruct: ["body.0.body.body.0.test.callee"],
        setPrototypeOf: ["body.0.body.body.4.argument.expressions.0.right.callee"]
      }
    }),
    createClass: helper$2("7.0.0-beta.0", 'function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}', {
      globals: ["Object"],
      locals: {
        _defineProperties: ["body.0.id", "body.1.body.body.0.argument.expressions.0.right.callee", "body.1.body.body.0.argument.expressions.1.right.callee"],
        _createClass: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_createClass",
      dependencies: {
        toPropertyKey: ["body.0.body.body.0.body.body.1.expression.expressions.3.arguments.1.callee"]
      }
    }),
    createForOfIteratorHelper: helper$2("7.9.0", 'function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var n=0,F=function(){};return{s:F,n:function(){return n>=r.length?{done:!0}:{done:!1,value:r[n++]}},e:function(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function(){t=t.call(r)},n:function(){var r=t.next();return a=r.done,r},e:function(r){u=!0,o=r},f:function(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}', {
      globals: ["Symbol", "Array", "TypeError"],
      locals: {
        _createForOfIteratorHelper: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_createForOfIteratorHelper",
      dependencies: {
        unsupportedIterableToArray: ["body.0.body.body.1.consequent.body.0.test.left.right.right.callee"]
      }
    }),
    createForOfIteratorHelperLoose: helper$2("7.9.0", 'function _createForOfIteratorHelperLoose(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(t)return(t=t.call(r)).next.bind(t);if(Array.isArray(r)||(t=unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var o=0;return function(){return o>=r.length?{done:!0}:{done:!1,value:r[o++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', {
      globals: ["Symbol", "Array", "TypeError"],
      locals: {
        _createForOfIteratorHelperLoose: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_createForOfIteratorHelperLoose",
      dependencies: {
        unsupportedIterableToArray: ["body.0.body.body.2.test.left.right.right.callee"]
      }
    }),
    createSuper: helper$2("7.9.0", "function _createSuper(t){var r=isNativeReflectConstruct();return function(){var e,o=getPrototypeOf(t);if(r){var s=getPrototypeOf(this).constructor;e=Reflect.construct(o,arguments,s)}else e=o.apply(this,arguments);return possibleConstructorReturn(this,e)}}", {
      globals: ["Reflect"],
      locals: {
        _createSuper: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_createSuper",
      dependencies: {
        getPrototypeOf: ["body.0.body.body.1.argument.body.body.0.declarations.1.init.callee", "body.0.body.body.1.argument.body.body.1.consequent.body.0.declarations.0.init.object.callee"],
        isNativeReflectConstruct: ["body.0.body.body.0.declarations.0.init.callee"],
        possibleConstructorReturn: ["body.0.body.body.1.argument.body.body.2.argument.callee"]
      }
    }),
    decorate: helper$2("7.1.5", 'function _decorate(e,r,t,i){var o=_getDecoratorsApi();if(i)for(var n=0;n<i.length;n++)o=i[n](o);var s=r((function(e){o.initializeInstanceElements(e,a.elements)}),t),a=o.decorateClass(_coalesceClassElements(s.d.map(_createElementDescriptor)),e);return o.initializeClassElements(s.F,a.elements),o.runClassFinishers(s.F,a.finishers)}function _getDecoratorsApi(){_getDecoratorsApi=function(){return e};var e={elementsDefinitionOrder:[["method"],["field"]],initializeInstanceElements:function(e,r){["method","field"].forEach((function(t){r.forEach((function(r){r.kind===t&&"own"===r.placement&&this.defineClassElement(e,r)}),this)}),this)},initializeClassElements:function(e,r){var t=e.prototype;["method","field"].forEach((function(i){r.forEach((function(r){var o=r.placement;if(r.kind===i&&("static"===o||"prototype"===o)){var n="static"===o?e:t;this.defineClassElement(n,r)}}),this)}),this)},defineClassElement:function(e,r){var t=r.descriptor;if("field"===r.kind){var i=r.initializer;t={enumerable:t.enumerable,writable:t.writable,configurable:t.configurable,value:void 0===i?void 0:i.call(e)}}Object.defineProperty(e,r.key,t)},decorateClass:function(e,r){var t=[],i=[],o={static:[],prototype:[],own:[]};if(e.forEach((function(e){this.addElementPlacement(e,o)}),this),e.forEach((function(e){if(!_hasDecorators(e))return t.push(e);var r=this.decorateElement(e,o);t.push(r.element),t.push.apply(t,r.extras),i.push.apply(i,r.finishers)}),this),!r)return{elements:t,finishers:i};var n=this.decorateConstructor(t,r);return i.push.apply(i,n.finishers),n.finishers=i,n},addElementPlacement:function(e,r,t){var i=r[e.placement];if(!t&&-1!==i.indexOf(e.key))throw new TypeError("Duplicated element ("+e.key+")");i.push(e.key)},decorateElement:function(e,r){for(var t=[],i=[],o=e.decorators,n=o.length-1;n>=0;n--){var s=r[e.placement];s.splice(s.indexOf(e.key),1);var a=this.fromElementDescriptor(e),l=this.toElementFinisherExtras((0,o[n])(a)||a);e=l.element,this.addElementPlacement(e,r),l.finisher&&i.push(l.finisher);var c=l.extras;if(c){for(var p=0;p<c.length;p++)this.addElementPlacement(c[p],r);t.push.apply(t,c)}}return{element:e,finishers:i,extras:t}},decorateConstructor:function(e,r){for(var t=[],i=r.length-1;i>=0;i--){var o=this.fromClassDescriptor(e),n=this.toClassDescriptor((0,r[i])(o)||o);if(void 0!==n.finisher&&t.push(n.finisher),void 0!==n.elements){e=n.elements;for(var s=0;s<e.length-1;s++)for(var a=s+1;a<e.length;a++)if(e[s].key===e[a].key&&e[s].placement===e[a].placement)throw new TypeError("Duplicated element ("+e[s].key+")")}}return{elements:e,finishers:t}},fromElementDescriptor:function(e){var r={kind:e.kind,key:e.key,placement:e.placement,descriptor:e.descriptor};return Object.defineProperty(r,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),"field"===e.kind&&(r.initializer=e.initializer),r},toElementDescriptors:function(e){if(void 0!==e)return toArray(e).map((function(e){var r=this.toElementDescriptor(e);return this.disallowProperty(e,"finisher","An element descriptor"),this.disallowProperty(e,"extras","An element descriptor"),r}),this)},toElementDescriptor:function(e){var r=e.kind+"";if("method"!==r&&"field"!==r)throw new TypeError(\'An element descriptor\\\'s .kind property must be either "method" or "field", but a decorator created an element descriptor with .kind "\'+r+\'"\');var t=toPropertyKey(e.key),i=e.placement+"";if("static"!==i&&"prototype"!==i&&"own"!==i)throw new TypeError(\'An element descriptor\\\'s .placement property must be one of "static", "prototype" or "own", but a decorator created an element descriptor with .placement "\'+i+\'"\');var o=e.descriptor;this.disallowProperty(e,"elements","An element descriptor");var n={kind:r,key:t,placement:i,descriptor:Object.assign({},o)};return"field"!==r?this.disallowProperty(e,"initializer","A method descriptor"):(this.disallowProperty(o,"get","The property descriptor of a field descriptor"),this.disallowProperty(o,"set","The property descriptor of a field descriptor"),this.disallowProperty(o,"value","The property descriptor of a field descriptor"),n.initializer=e.initializer),n},toElementFinisherExtras:function(e){return{element:this.toElementDescriptor(e),finisher:_optionalCallableProperty(e,"finisher"),extras:this.toElementDescriptors(e.extras)}},fromClassDescriptor:function(e){var r={kind:"class",elements:e.map(this.fromElementDescriptor,this)};return Object.defineProperty(r,Symbol.toStringTag,{value:"Descriptor",configurable:!0}),r},toClassDescriptor:function(e){var r=e.kind+"";if("class"!==r)throw new TypeError(\'A class descriptor\\\'s .kind property must be "class", but a decorator created a class descriptor with .kind "\'+r+\'"\');this.disallowProperty(e,"key","A class descriptor"),this.disallowProperty(e,"placement","A class descriptor"),this.disallowProperty(e,"descriptor","A class descriptor"),this.disallowProperty(e,"initializer","A class descriptor"),this.disallowProperty(e,"extras","A class descriptor");var t=_optionalCallableProperty(e,"finisher");return{elements:this.toElementDescriptors(e.elements),finisher:t}},runClassFinishers:function(e,r){for(var t=0;t<r.length;t++){var i=(0,r[t])(e);if(void 0!==i){if("function"!=typeof i)throw new TypeError("Finishers must return a constructor.");e=i}}return e},disallowProperty:function(e,r,t){if(void 0!==e[r])throw new TypeError(t+" can\'t have a ."+r+" property.")}};return e}function _createElementDescriptor(e){var r,t=toPropertyKey(e.key);"method"===e.kind?r={value:e.value,writable:!0,configurable:!0,enumerable:!1}:"get"===e.kind?r={get:e.value,configurable:!0,enumerable:!1}:"set"===e.kind?r={set:e.value,configurable:!0,enumerable:!1}:"field"===e.kind&&(r={configurable:!0,writable:!0,enumerable:!0});var i={kind:"field"===e.kind?"field":"method",key:t,placement:e.static?"static":"field"===e.kind?"own":"prototype",descriptor:r};return e.decorators&&(i.decorators=e.decorators),"field"===e.kind&&(i.initializer=e.value),i}function _coalesceGetterSetter(e,r){void 0!==e.descriptor.get?r.descriptor.get=e.descriptor.get:r.descriptor.set=e.descriptor.set}function _coalesceClassElements(e){for(var r=[],isSameElement=function(e){return"method"===e.kind&&e.key===o.key&&e.placement===o.placement},t=0;t<e.length;t++){var i,o=e[t];if("method"===o.kind&&(i=r.find(isSameElement)))if(_isDataDescriptor(o.descriptor)||_isDataDescriptor(i.descriptor)){if(_hasDecorators(o)||_hasDecorators(i))throw new ReferenceError("Duplicated methods ("+o.key+") can\'t be decorated.");i.descriptor=o.descriptor}else{if(_hasDecorators(o)){if(_hasDecorators(i))throw new ReferenceError("Decorators can\'t be placed on different accessors with for the same property ("+o.key+").");i.decorators=o.decorators}_coalesceGetterSetter(o,i)}else r.push(o)}return r}function _hasDecorators(e){return e.decorators&&e.decorators.length}function _isDataDescriptor(e){return void 0!==e&&!(void 0===e.value&&void 0===e.writable)}function _optionalCallableProperty(e,r){var t=e[r];if(void 0!==t&&"function"!=typeof t)throw new TypeError("Expected \'"+r+"\' to be a function");return t}', {
      globals: ["Object", "TypeError", "Symbol", "ReferenceError"],
      locals: {
        _decorate: ["body.0.id"],
        _getDecoratorsApi: ["body.1.id", "body.0.body.body.0.declarations.0.init.callee", "body.1.body.body.0.expression.left"],
        _createElementDescriptor: ["body.2.id", "body.0.body.body.2.declarations.1.init.arguments.0.arguments.0.arguments.0"],
        _coalesceGetterSetter: ["body.3.id", "body.4.body.body.0.body.body.1.consequent.alternate.body.1.expression.callee"],
        _coalesceClassElements: ["body.4.id", "body.0.body.body.2.declarations.1.init.arguments.0.callee"],
        _hasDecorators: ["body.5.id", "body.1.body.body.1.declarations.0.init.properties.4.value.body.body.1.test.expressions.1.arguments.0.body.body.0.test.argument.callee", "body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.left.callee", "body.4.body.body.0.body.body.1.consequent.consequent.body.0.test.right.callee", "body.4.body.body.0.body.body.1.consequent.alternate.body.0.test.callee", "body.4.body.body.0.body.body.1.consequent.alternate.body.0.consequent.body.0.test.callee"],
        _isDataDescriptor: ["body.6.id", "body.4.body.body.0.body.body.1.consequent.test.left.callee", "body.4.body.body.0.body.body.1.consequent.test.right.callee"],
        _optionalCallableProperty: ["body.7.id", "body.1.body.body.1.declarations.0.init.properties.11.value.body.body.0.argument.properties.1.value.callee", "body.1.body.body.1.declarations.0.init.properties.13.value.body.body.3.declarations.0.init.callee"]
      },
      exportBindingAssignments: [],
      exportName: "_decorate",
      dependencies: {
        toArray: ["body.1.body.body.1.declarations.0.init.properties.9.value.body.body.0.consequent.argument.callee.object.callee"],
        toPropertyKey: ["body.1.body.body.1.declarations.0.init.properties.10.value.body.body.2.declarations.0.init.callee", "body.2.body.body.0.declarations.1.init.callee"]
      }
    }),
    defaults: helper$2("7.0.0-beta.0", "function _defaults(e,r){for(var t=Object.getOwnPropertyNames(r),o=0;o<t.length;o++){var n=t[o],a=Object.getOwnPropertyDescriptor(r,n);a&&a.configurable&&void 0===e[n]&&Object.defineProperty(e,n,a)}return e}", {
      globals: ["Object"],
      locals: {
        _defaults: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_defaults",
      dependencies: {}
    }),
    defineAccessor: helper$2("7.20.7", "function _defineAccessor(e,r,n,t){var c={configurable:!0,enumerable:!0};return c[e]=t,Object.defineProperty(r,n,c)}", {
      globals: ["Object"],
      locals: {
        _defineAccessor: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_defineAccessor",
      dependencies: {}
    }),
    defineProperty: helper$2("7.0.0-beta.0", "function _defineProperty(e,r,t){return(r=toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}", {
      globals: ["Object"],
      locals: {
        _defineProperty: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_defineProperty",
      dependencies: {
        toPropertyKey: ["body.0.body.body.0.argument.expressions.0.test.left.right.callee"]
      }
    }),
    "extends": helper$2("7.0.0-beta.0", "function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}", {
      globals: ["Object"],
      locals: {
        _extends: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee.object", "body.0.body.body.0.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"],
      exportName: "_extends",
      dependencies: {}
    }),
    get: helper$2("7.0.0-beta.0", 'function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function(e,t,r){var p=superPropBase(e,t);if(p){var n=Object.getOwnPropertyDescriptor(p,t);return n.get?n.get.call(arguments.length<3?e:r):n.value}},_get.apply(null,arguments)}', {
      globals: ["Reflect", "Object"],
      locals: {
        _get: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee.object", "body.0.body.body.0.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"],
      exportName: "_get",
      dependencies: {
        superPropBase: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.0.init.callee"]
      }
    }),
    getPrototypeOf: helper$2("7.0.0-beta.0", "function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}", {
      globals: ["Object"],
      locals: {
        _getPrototypeOf: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"],
      exportName: "_getPrototypeOf",
      dependencies: {}
    }),
    identity: helper$2("7.17.0", "function _identity(t){return t}", {
      globals: [],
      locals: {
        _identity: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_identity",
      dependencies: {}
    }),
    importDeferProxy: helper$2("7.23.0", "function _importDeferProxy(e){var t=null,constValue=function(e){return function(){return e}},proxy=function(r){return function(n,o,f){return null===t&&(t=e()),r(t,o,f)}};return new Proxy({},{defineProperty:constValue(!1),deleteProperty:constValue(!1),get:proxy(Reflect.get),getOwnPropertyDescriptor:proxy(Reflect.getOwnPropertyDescriptor),getPrototypeOf:constValue(null),isExtensible:constValue(!1),has:proxy(Reflect.has),ownKeys:proxy(Reflect.ownKeys),preventExtensions:constValue(!0),set:constValue(!1),setPrototypeOf:constValue(!1)})}", {
      globals: ["Proxy", "Reflect"],
      locals: {
        _importDeferProxy: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_importDeferProxy",
      dependencies: {}
    }),
    inherits: helper$2("7.0.0-beta.0", 'function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&setPrototypeOf(t,e)}', {
      globals: ["TypeError", "Object"],
      locals: {
        _inherits: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_inherits",
      dependencies: {
        setPrototypeOf: ["body.0.body.body.1.expression.expressions.2.right.callee"]
      }
    }),
    inheritsLoose: helper$2("7.0.0-beta.0", "function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,setPrototypeOf(t,o)}", {
      globals: ["Object"],
      locals: {
        _inheritsLoose: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_inheritsLoose",
      dependencies: {
        setPrototypeOf: ["body.0.body.body.0.expression.expressions.2.callee"]
      }
    }),
    initializerDefineProperty: helper$2("7.0.0-beta.0", "function _initializerDefineProperty(e,i,r,l){r&&Object.defineProperty(e,i,{enumerable:r.enumerable,configurable:r.configurable,writable:r.writable,value:r.initializer?r.initializer.call(l):void 0})}", {
      globals: ["Object"],
      locals: {
        _initializerDefineProperty: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_initializerDefineProperty",
      dependencies: {}
    }),
    initializerWarningHelper: helper$2("7.0.0-beta.0", 'function _initializerWarningHelper(r,e){throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform.")}', {
      globals: ["Error"],
      locals: {
        _initializerWarningHelper: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_initializerWarningHelper",
      dependencies: {}
    }),
    "instanceof": helper$2("7.0.0-beta.0", 'function _instanceof(n,e){return null!=e&&"undefined"!=typeof Symbol&&e[Symbol.hasInstance]?!!e[Symbol.hasInstance](n):n instanceof e}', {
      globals: ["Symbol"],
      locals: {
        _instanceof: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_instanceof",
      dependencies: {}
    }),
    interopRequireDefault: helper$2("7.0.0-beta.0", "function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}", {
      globals: [],
      locals: {
        _interopRequireDefault: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_interopRequireDefault",
      dependencies: {}
    }),
    interopRequireWildcard: helper$2("7.14.0", 'function _getRequireWildcardCache(e){if("function"!=typeof WeakMap)return null;var r=new WeakMap,t=new WeakMap;return(_getRequireWildcardCache=function(e){return e?t:r})(e)}function _interopRequireWildcard(e,r){if(!r&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var t=_getRequireWildcardCache(r);if(t&&t.has(e))return t.get(e);var n={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var u in e)if("default"!==u&&{}.hasOwnProperty.call(e,u)){var i=a?Object.getOwnPropertyDescriptor(e,u):null;i&&(i.get||i.set)?Object.defineProperty(n,u,i):n[u]=e[u]}return n.default=e,t&&t.set(e,n),n}', {
      globals: ["WeakMap", "Object"],
      locals: {
        _getRequireWildcardCache: ["body.0.id", "body.1.body.body.2.declarations.0.init.callee", "body.0.body.body.2.argument.callee.left"],
        _interopRequireWildcard: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_interopRequireWildcard",
      dependencies: {}
    }),
    isNativeFunction: helper$2("7.0.0-beta.0", 'function _isNativeFunction(t){try{return-1!==Function.toString.call(t).indexOf("[native code]")}catch(n){return"function"==typeof t}}', {
      globals: ["Function"],
      locals: {
        _isNativeFunction: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_isNativeFunction",
      dependencies: {}
    }),
    isNativeReflectConstruct: helper$2("7.9.0", "function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(t){}return(_isNativeReflectConstruct=function(){return!!t})()}", {
      globals: ["Boolean", "Reflect"],
      locals: {
        _isNativeReflectConstruct: ["body.0.id", "body.0.body.body.1.argument.callee.left"]
      },
      exportBindingAssignments: ["body.0.body.body.1.argument.callee"],
      exportName: "_isNativeReflectConstruct",
      dependencies: {}
    }),
    iterableToArray: helper$2("7.0.0-beta.0", 'function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}', {
      globals: ["Symbol", "Array"],
      locals: {
        _iterableToArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_iterableToArray",
      dependencies: {}
    }),
    iterableToArrayLimit: helper$2("7.0.0-beta.0", 'function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}', {
      globals: ["Symbol", "Object"],
      locals: {
        _iterableToArrayLimit: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_iterableToArrayLimit",
      dependencies: {}
    }),
    jsx: helper$2("7.0.0-beta.0", 'var REACT_ELEMENT_TYPE;function _createRawReactElement(e,r,E,l){REACT_ELEMENT_TYPE||(REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103);var o=e&&e.defaultProps,n=arguments.length-3;if(r||0===n||(r={children:void 0}),1===n)r.children=l;else if(n>1){for(var t=Array(n),f=0;f<n;f++)t[f]=arguments[f+3];r.children=t}if(r&&o)for(var i in o)void 0===r[i]&&(r[i]=o[i]);else r||(r=o||{});return{$$typeof:REACT_ELEMENT_TYPE,type:e,key:void 0===E?null:""+E,ref:null,props:r,_owner:null}}', {
      globals: ["Symbol", "Array"],
      locals: {
        REACT_ELEMENT_TYPE: ["body.0.declarations.0.id", "body.1.body.body.0.expression.left", "body.1.body.body.4.argument.properties.0.value", "body.1.body.body.0.expression.right.left"],
        _createRawReactElement: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_createRawReactElement",
      dependencies: {}
    }),
    maybeArrayLike: helper$2("7.9.0", 'function _maybeArrayLike(r,a,e){if(a&&!Array.isArray(a)&&"number"==typeof a.length){var y=a.length;return arrayLikeToArray(a,void 0!==e&&e<y?e:y)}return r(a,e)}', {
      globals: ["Array"],
      locals: {
        _maybeArrayLike: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_maybeArrayLike",
      dependencies: {
        arrayLikeToArray: ["body.0.body.body.0.consequent.body.1.argument.callee"]
      }
    }),
    newArrowCheck: helper$2("7.0.0-beta.0", 'function _newArrowCheck(n,r){if(n!==r)throw new TypeError("Cannot instantiate an arrow function")}', {
      globals: ["TypeError"],
      locals: {
        _newArrowCheck: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_newArrowCheck",
      dependencies: {}
    }),
    nonIterableRest: helper$2("7.0.0-beta.0", 'function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', {
      globals: ["TypeError"],
      locals: {
        _nonIterableRest: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_nonIterableRest",
      dependencies: {}
    }),
    nonIterableSpread: helper$2("7.0.0-beta.0", 'function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}', {
      globals: ["TypeError"],
      locals: {
        _nonIterableSpread: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_nonIterableSpread",
      dependencies: {}
    }),
    nullishReceiverError: helper$2("7.22.6", 'function _nullishReceiverError(r){throw new TypeError("Cannot set property of null or undefined.")}', {
      globals: ["TypeError"],
      locals: {
        _nullishReceiverError: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_nullishReceiverError",
      dependencies: {}
    }),
    objectDestructuringEmpty: helper$2("7.0.0-beta.0", 'function _objectDestructuringEmpty(t){if(null==t)throw new TypeError("Cannot destructure "+t)}', {
      globals: ["TypeError"],
      locals: {
        _objectDestructuringEmpty: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_objectDestructuringEmpty",
      dependencies: {}
    }),
    objectSpread2: helper$2("7.5.0", "function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread2(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}", {
      globals: ["Object"],
      locals: {
        ownKeys: ["body.0.id", "body.1.body.body.0.body.body.1.expression.consequent.callee.object.callee", "body.1.body.body.0.body.body.1.expression.alternate.alternate.callee.object.callee"],
        _objectSpread2: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_objectSpread2",
      dependencies: {
        defineProperty: ["body.1.body.body.0.body.body.1.expression.consequent.arguments.0.body.body.0.expression.callee"]
      }
    }),
    objectWithoutProperties: helper$2("7.0.0-beta.0", "function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=objectWithoutPropertiesLoose(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)o=s[r],t.includes(o)||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}", {
      globals: ["Object"],
      locals: {
        _objectWithoutProperties: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_objectWithoutProperties",
      dependencies: {
        objectWithoutPropertiesLoose: ["body.0.body.body.1.declarations.2.init.callee"]
      }
    }),
    objectWithoutPropertiesLoose: helper$2("7.0.0-beta.0", "function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(e.includes(n))continue;t[n]=r[n]}return t}", {
      globals: [],
      locals: {
        _objectWithoutPropertiesLoose: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_objectWithoutPropertiesLoose",
      dependencies: {}
    }),
    possibleConstructorReturn: helper$2("7.0.0-beta.0", 'function _possibleConstructorReturn(t,e){if(e&&("object"==typeof e||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return assertThisInitialized(t)}', {
      globals: ["TypeError"],
      locals: {
        _possibleConstructorReturn: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_possibleConstructorReturn",
      dependencies: {
        assertThisInitialized: ["body.0.body.body.2.argument.callee"]
      }
    }),
    readOnlyError: helper$2("7.0.0-beta.0", "function _readOnlyError(r){throw new TypeError('\"'+r+'\" is read-only')}", {
      globals: ["TypeError"],
      locals: {
        _readOnlyError: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_readOnlyError",
      dependencies: {}
    }),
    regeneratorRuntime: helper$2("7.18.0", 'function _regeneratorRuntime(){"use strict";\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function(){return e};var t,e={},r=Object.prototype,n=r.hasOwnProperty,o=Object.defineProperty||function(t,e,r){t[e]=r.value},i="function"==typeof Symbol?Symbol:{},a=i.iterator||"@@iterator",c=i.asyncIterator||"@@asyncIterator",u=i.toStringTag||"@@toStringTag";function define(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{define({},"")}catch(t){define=function(t,e,r){return t[e]=r}}function wrap(t,e,r,n){var i=e&&e.prototype instanceof Generator?e:Generator,a=Object.create(i.prototype),c=new Context(n||[]);return o(a,"_invoke",{value:makeInvokeMethod(t,r,c)}),a}function tryCatch(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}e.wrap=wrap;var h="suspendedStart",l="suspendedYield",f="executing",s="completed",y={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var p={};define(p,a,(function(){return this}));var d=Object.getPrototypeOf,v=d&&d(d(values([])));v&&v!==r&&n.call(v,a)&&(p=v);var g=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(p);function defineIteratorMethods(t){["next","throw","return"].forEach((function(e){define(t,e,(function(t){return this._invoke(e,t)}))}))}function AsyncIterator(t,e){function invoke(r,o,i,a){var c=tryCatch(t[r],t,o);if("throw"!==c.type){var u=c.arg,h=u.value;return h&&"object"==typeof h&&n.call(h,"__await")?e.resolve(h.__await).then((function(t){invoke("next",t,i,a)}),(function(t){invoke("throw",t,i,a)})):e.resolve(h).then((function(t){u.value=t,i(u)}),(function(t){return invoke("throw",t,i,a)}))}a(c.arg)}var r;o(this,"_invoke",{value:function(t,n){function callInvokeWithMethodAndArg(){return new e((function(e,r){invoke(t,n,e,r)}))}return r=r?r.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(e,r,n){var o=h;return function(i,a){if(o===f)throw Error("Generator is already running");if(o===s){if("throw"===i)throw a;return{value:t,done:!0}}for(n.method=i,n.arg=a;;){var c=n.delegate;if(c){var u=maybeInvokeDelegate(c,n);if(u){if(u===y)continue;return u}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(o===h)throw o=s,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);o=f;var p=tryCatch(e,r,n);if("normal"===p.type){if(o=n.done?s:l,p.arg===y)continue;return{value:p.arg,done:n.done}}"throw"===p.type&&(o=s,n.method="throw",n.arg=p.arg)}}}function maybeInvokeDelegate(e,r){var n=r.method,o=e.iterator[n];if(o===t)return r.delegate=null,"throw"===n&&e.iterator.return&&(r.method="return",r.arg=t,maybeInvokeDelegate(e,r),"throw"===r.method)||"return"!==n&&(r.method="throw",r.arg=new TypeError("The iterator does not provide a \'"+n+"\' method")),y;var i=tryCatch(o,e.iterator,r.arg);if("throw"===i.type)return r.method="throw",r.arg=i.arg,r.delegate=null,y;var a=i.arg;return a?a.done?(r[e.resultName]=a.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,y):a:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,y)}function pushTryEntry(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function resetTryEntry(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function Context(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(pushTryEntry,this),this.reset(!0)}function values(e){if(e||""===e){var r=e[a];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,i=function next(){for(;++o<e.length;)if(n.call(e,o))return next.value=e[o],next.done=!1,next;return next.value=t,next.done=!0,next};return i.next=i}}throw new TypeError(typeof e+" is not iterable")}return GeneratorFunction.prototype=GeneratorFunctionPrototype,o(g,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),o(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,u,"GeneratorFunction"),e.isGeneratorFunction=function(t){var e="function"==typeof t&&t.constructor;return!!e&&(e===GeneratorFunction||"GeneratorFunction"===(e.displayName||e.name))},e.mark=function(t){return Object.setPrototypeOf?Object.setPrototypeOf(t,GeneratorFunctionPrototype):(t.__proto__=GeneratorFunctionPrototype,define(t,u,"GeneratorFunction")),t.prototype=Object.create(g),t},e.awrap=function(t){return{__await:t}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,c,(function(){return this})),e.AsyncIterator=AsyncIterator,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new AsyncIterator(wrap(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(t){return t.done?t.value:a.next()}))},defineIteratorMethods(g),define(g,u,"Generator"),define(g,a,(function(){return this})),define(g,"toString",(function(){return"[object Generator]"})),e.keys=function(t){var e=Object(t),r=[];for(var n in e)r.push(n);return r.reverse(),function next(){for(;r.length;){var t=r.pop();if(t in e)return next.value=t,next.done=!1,next}return next.done=!0,next}},e.values=values,Context.prototype={constructor:Context,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(resetTryEntry),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var t=this.tryEntries[0].completion;if("throw"===t.type)throw t.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function handle(n,o){return a.type="throw",a.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var o=this.tryEntries.length-1;o>=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return handle("end");if(i.tryLoc<=this.prev){var c=n.call(i,"catchLoc"),u=n.call(i,"finallyLoc");if(c&&u){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0);if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}else if(c){if(this.prev<i.catchLoc)return handle(i.catchLoc,!0)}else{if(!u)throw Error("try statement without catch or finally");if(this.prev<i.finallyLoc)return handle(i.finallyLoc)}}}},abrupt:function(t,e){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===t||"continue"===t)&&i.tryLoc<=e&&e<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=t,a.arg=e,i?(this.method="next",this.next=i.finallyLoc,y):this.complete(a)},complete:function(t,e){if("throw"===t.type)throw t.arg;return"break"===t.type||"continue"===t.type?this.next=t.arg:"return"===t.type?(this.rval=this.arg=t.arg,this.method="return",this.next="end"):"normal"===t.type&&e&&(this.next=e),y},finish:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),resetTryEntry(r),y}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;resetTryEntry(r)}return o}}throw Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:values(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),y}},e}', {
      globals: ["Object", "Symbol", "Error", "TypeError", "isNaN", "Promise"],
      locals: {
        _regeneratorRuntime: ["body.0.id", "body.0.body.body.0.expression.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.expression"],
      exportName: "_regeneratorRuntime",
      dependencies: {}
    }),
    set: helper$2("7.0.0-beta.0", 'function set(e,r,t,o){return set="undefined"!=typeof Reflect&&Reflect.set?Reflect.set:function(e,r,t,o){var f,i=superPropBase(e,r);if(i){if((f=Object.getOwnPropertyDescriptor(i,r)).set)return f.set.call(o,t),!0;if(!f.writable)return!1}if(f=Object.getOwnPropertyDescriptor(o,r)){if(!f.writable)return!1;f.value=t,Object.defineProperty(o,r,f)}else defineProperty(o,r,t);return!0},set(e,r,t,o)}function _set(e,r,t,o,f){if(!set(e,r,t,o||e)&&f)throw new TypeError("failed to set property");return t}', {
      globals: ["Reflect", "Object", "TypeError"],
      locals: {
        set: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.1.body.body.0.test.left.argument.callee", "body.0.body.body.0.argument.expressions.0.left"],
        _set: ["body.1.id"]
      },
      exportBindingAssignments: [],
      exportName: "_set",
      dependencies: {
        superPropBase: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.0.declarations.1.init.callee"],
        defineProperty: ["body.0.body.body.0.argument.expressions.0.right.alternate.body.body.2.alternate.expression.callee"]
      }
    }),
    setFunctionName: helper$2("7.23.6", 'function setFunctionName(e,t,n){"symbol"==typeof t&&(t=(t=t.description)?"["+t+"]":"");try{Object.defineProperty(e,"name",{configurable:!0,value:n?n+" "+t:t})}catch(e){}return e}', {
      globals: ["Object"],
      locals: {
        setFunctionName: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "setFunctionName",
      dependencies: {}
    }),
    setPrototypeOf: helper$2("7.0.0-beta.0", "function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}", {
      globals: ["Object"],
      locals: {
        _setPrototypeOf: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"],
      exportName: "_setPrototypeOf",
      dependencies: {}
    }),
    skipFirstGeneratorNext: helper$2("7.0.0-beta.0", "function _skipFirstGeneratorNext(t){return function(){var r=t.apply(this,arguments);return r.next(),r}}", {
      globals: [],
      locals: {
        _skipFirstGeneratorNext: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_skipFirstGeneratorNext",
      dependencies: {}
    }),
    slicedToArray: helper$2("7.0.0-beta.0", "function _slicedToArray(r,e){return arrayWithHoles(r)||iterableToArrayLimit(r,e)||unsupportedIterableToArray(r,e)||nonIterableRest()}", {
      globals: [],
      locals: {
        _slicedToArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_slicedToArray",
      dependencies: {
        arrayWithHoles: ["body.0.body.body.0.argument.left.left.left.callee"],
        iterableToArrayLimit: ["body.0.body.body.0.argument.left.left.right.callee"],
        unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"],
        nonIterableRest: ["body.0.body.body.0.argument.right.callee"]
      }
    }),
    superPropBase: helper$2("7.0.0-beta.0", "function _superPropBase(t,o){for(;!{}.hasOwnProperty.call(t,o)&&null!==(t=getPrototypeOf(t)););return t}", {
      globals: [],
      locals: {
        _superPropBase: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_superPropBase",
      dependencies: {
        getPrototypeOf: ["body.0.body.body.0.test.right.right.right.callee"]
      }
    }),
    superPropGet: helper$2("7.25.0", 'function _superPropertyGet(t,e,o,r){var p=get(getPrototypeOf(1&r?t.prototype:t),e,o);return 2&r&&"function"==typeof p?function(t){return p.apply(o,t)}:p}', {
      globals: [],
      locals: {
        _superPropertyGet: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_superPropertyGet",
      dependencies: {
        get: ["body.0.body.body.0.declarations.0.init.callee"],
        getPrototypeOf: ["body.0.body.body.0.declarations.0.init.arguments.0.callee"]
      }
    }),
    superPropSet: helper$2("7.25.0", "function _superPropertySet(t,e,o,r,p,f){return set(getPrototypeOf(f?t.prototype:t),e,o,r,p)}", {
      globals: [],
      locals: {
        _superPropertySet: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_superPropertySet",
      dependencies: {
        set: ["body.0.body.body.0.argument.callee"],
        getPrototypeOf: ["body.0.body.body.0.argument.arguments.0.callee"]
      }
    }),
    taggedTemplateLiteral: helper$2("7.0.0-beta.0", "function _taggedTemplateLiteral(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}", {
      globals: ["Object"],
      locals: {
        _taggedTemplateLiteral: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_taggedTemplateLiteral",
      dependencies: {}
    }),
    taggedTemplateLiteralLoose: helper$2("7.0.0-beta.0", "function _taggedTemplateLiteralLoose(e,t){return t||(t=e.slice(0)),e.raw=t,e}", {
      globals: [],
      locals: {
        _taggedTemplateLiteralLoose: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_taggedTemplateLiteralLoose",
      dependencies: {}
    }),
    tdz: helper$2("7.5.5", 'function _tdzError(e){throw new ReferenceError(e+" is not defined - temporal dead zone")}', {
      globals: ["ReferenceError"],
      locals: {
        _tdzError: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_tdzError",
      dependencies: {}
    }),
    temporalRef: helper$2("7.0.0-beta.0", "function _temporalRef(r,e){return r===undef?err(e):r}", {
      globals: [],
      locals: {
        _temporalRef: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_temporalRef",
      dependencies: {
        temporalUndefined: ["body.0.body.body.0.argument.test.right"],
        tdz: ["body.0.body.body.0.argument.consequent.callee"]
      }
    }),
    temporalUndefined: helper$2("7.0.0-beta.0", "function _temporalUndefined(){}", {
      globals: [],
      locals: {
        _temporalUndefined: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_temporalUndefined",
      dependencies: {}
    }),
    toArray: helper$2("7.0.0-beta.0", "function _toArray(r){return arrayWithHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableRest()}", {
      globals: [],
      locals: {
        _toArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_toArray",
      dependencies: {
        arrayWithHoles: ["body.0.body.body.0.argument.left.left.left.callee"],
        iterableToArray: ["body.0.body.body.0.argument.left.left.right.callee"],
        unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"],
        nonIterableRest: ["body.0.body.body.0.argument.right.callee"]
      }
    }),
    toConsumableArray: helper$2("7.0.0-beta.0", "function _toConsumableArray(r){return arrayWithoutHoles(r)||iterableToArray(r)||unsupportedIterableToArray(r)||nonIterableSpread()}", {
      globals: [],
      locals: {
        _toConsumableArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_toConsumableArray",
      dependencies: {
        arrayWithoutHoles: ["body.0.body.body.0.argument.left.left.left.callee"],
        iterableToArray: ["body.0.body.body.0.argument.left.left.right.callee"],
        unsupportedIterableToArray: ["body.0.body.body.0.argument.left.right.callee"],
        nonIterableSpread: ["body.0.body.body.0.argument.right.callee"]
      }
    }),
    toPrimitive: helper$2("7.1.5", 'function toPrimitive(t,r){if("object"!=typeof t||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=typeof i)return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}', {
      globals: ["Symbol", "TypeError", "String", "Number"],
      locals: {
        toPrimitive: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "toPrimitive",
      dependencies: {}
    }),
    toPropertyKey: helper$2("7.1.5", 'function toPropertyKey(t){var i=toPrimitive(t,"string");return"symbol"==typeof i?i:i+""}', {
      globals: [],
      locals: {
        toPropertyKey: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "toPropertyKey",
      dependencies: {
        toPrimitive: ["body.0.body.body.0.declarations.0.init.callee"]
      }
    }),
    toSetter: helper$2("7.24.0", 'function _toSetter(t,e,n){e||(e=[]);var r=e.length++;return Object.defineProperty({},"_",{set:function(o){e[r]=o,t.apply(n,e)}})}', {
      globals: ["Object"],
      locals: {
        _toSetter: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_toSetter",
      dependencies: {}
    }),
    "typeof": helper$2("7.0.0-beta.0", 'function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}', {
      globals: ["Symbol"],
      locals: {
        _typeof: ["body.0.id", "body.0.body.body.0.argument.expressions.1.callee", "body.0.body.body.0.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.argument.expressions.0"],
      exportName: "_typeof",
      dependencies: {}
    }),
    unsupportedIterableToArray: helper$2("7.9.0", 'function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?arrayLikeToArray(r,a):void 0}}', {
      globals: ["Array"],
      locals: {
        _unsupportedIterableToArray: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_unsupportedIterableToArray",
      dependencies: {
        arrayLikeToArray: ["body.0.body.body.0.consequent.body.0.consequent.argument.callee", "body.0.body.body.0.consequent.body.2.argument.expressions.1.alternate.consequent.callee"]
      }
    }),
    usingCtx: helper$2("7.23.9", 'function _usingCtx(){var r="function"==typeof SuppressedError?SuppressedError:function(r,e){var n=Error();return n.name="SuppressedError",n.error=r,n.suppressed=e,n},e={},n=[];function using(r,e){if(null!=e){if(Object(e)!==e)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(r)var o=e[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(void 0===o&&(o=e[Symbol.dispose||Symbol.for("Symbol.dispose")],r))var t=o;if("function"!=typeof o)throw new TypeError("Object is not disposable.");t&&(o=function(){try{t.call(e)}catch(r){return Promise.reject(r)}}),n.push({v:e,d:o,a:r})}else r&&n.push({d:e,a:r});return e}return{e:e,u:using.bind(null,!1),a:using.bind(null,!0),d:function(){var o,t=this.e,s=0;function next(){for(;o=n.pop();)try{if(!o.a&&1===s)return s=0,n.push(o),Promise.resolve().then(next);if(o.d){var r=o.d.call(o.v);if(o.a)return s|=2,Promise.resolve(r).then(next,err)}else s|=1}catch(r){return err(r)}if(1===s)return t!==e?Promise.reject(t):Promise.resolve();if(t!==e)throw t}function err(n){return t=t!==e?new r(n,t):n,next()}return next()}}}', {
      globals: ["SuppressedError", "Error", "Object", "TypeError", "Symbol", "Promise"],
      locals: {
        _usingCtx: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_usingCtx",
      dependencies: {}
    }),
    wrapAsyncGenerator: helper$2("7.0.0-beta.0", 'function _wrapAsyncGenerator(e){return function(){return new AsyncGenerator(e.apply(this,arguments))}}function AsyncGenerator(e){var r,t;function resume(r,t){try{var n=e[r](t),o=n.value,u=o instanceof OverloadYield;Promise.resolve(u?o.v:o).then((function(t){if(u){var i="return"===r?"return":"next";if(!o.k||t.done)return resume(i,t);t=e[i](t).value}settle(n.done?"return":"normal",t)}),(function(e){resume("throw",e)}))}catch(e){settle("throw",e)}}function settle(e,n){switch(e){case"return":r.resolve({value:n,done:!0});break;case"throw":r.reject(n);break;default:r.resolve({value:n,done:!1})}(r=r.next)?resume(r.key,r.arg):t=null}this._invoke=function(e,n){return new Promise((function(o,u){var i={key:e,arg:n,resolve:o,reject:u,next:null};t?t=t.next=i:(r=t=i,resume(e,n))}))},"function"!=typeof e.return&&(this.return=void 0)}AsyncGenerator.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},AsyncGenerator.prototype.next=function(e){return this._invoke("next",e)},AsyncGenerator.prototype.throw=function(e){return this._invoke("throw",e)},AsyncGenerator.prototype.return=function(e){return this._invoke("return",e)};', {
      globals: ["Promise", "Symbol"],
      locals: {
        _wrapAsyncGenerator: ["body.0.id"],
        AsyncGenerator: ["body.1.id", "body.0.body.body.0.argument.body.body.0.argument.callee", "body.2.expression.expressions.0.left.object.object", "body.2.expression.expressions.1.left.object.object", "body.2.expression.expressions.2.left.object.object", "body.2.expression.expressions.3.left.object.object"]
      },
      exportBindingAssignments: [],
      exportName: "_wrapAsyncGenerator",
      dependencies: {
        OverloadYield: ["body.1.body.body.1.body.body.0.block.body.0.declarations.2.init.right"]
      }
    }),
    wrapNativeSuper: helper$2("7.0.0-beta.0", 'function _wrapNativeSuper(t){var r="function"==typeof Map?new Map:void 0;return _wrapNativeSuper=function(t){if(null===t||!isNativeFunction(t))return t;if("function"!=typeof t)throw new TypeError("Super expression must either be null or a function");if(void 0!==r){if(r.has(t))return r.get(t);r.set(t,Wrapper)}function Wrapper(){return construct(t,arguments,getPrototypeOf(this).constructor)}return Wrapper.prototype=Object.create(t.prototype,{constructor:{value:Wrapper,enumerable:!1,writable:!0,configurable:!0}}),setPrototypeOf(Wrapper,t)},_wrapNativeSuper(t)}', {
      globals: ["Map", "TypeError", "Object"],
      locals: {
        _wrapNativeSuper: ["body.0.id", "body.0.body.body.1.argument.expressions.1.callee", "body.0.body.body.1.argument.expressions.0.left"]
      },
      exportBindingAssignments: ["body.0.body.body.1.argument.expressions.0"],
      exportName: "_wrapNativeSuper",
      dependencies: {
        getPrototypeOf: ["body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.arguments.2.object.callee"],
        setPrototypeOf: ["body.0.body.body.1.argument.expressions.0.right.body.body.4.argument.expressions.1.callee"],
        isNativeFunction: ["body.0.body.body.1.argument.expressions.0.right.body.body.0.test.right.argument.callee"],
        construct: ["body.0.body.body.1.argument.expressions.0.right.body.body.3.body.body.0.argument.callee"]
      }
    }),
    wrapRegExp: helper$2("7.19.0", 'function _wrapRegExp(){_wrapRegExp=function(e,r){return new BabelRegExp(e,void 0,r)};var e=RegExp.prototype,r=new WeakMap;function BabelRegExp(e,t,p){var o=RegExp(e,t);return r.set(o,p||r.get(e)),setPrototypeOf(o,BabelRegExp.prototype)}function buildGroups(e,t){var p=r.get(t);return Object.keys(p).reduce((function(r,t){var o=p[t];if("number"==typeof o)r[t]=e[o];else{for(var i=0;void 0===e[o[i]]&&i+1<o.length;)i++;r[t]=e[o[i]]}return r}),Object.create(null))}return inherits(BabelRegExp,RegExp),BabelRegExp.prototype.exec=function(r){var t=e.exec.call(this,r);if(t){t.groups=buildGroups(t,this);var p=t.indices;p&&(p.groups=buildGroups(p,this))}return t},BabelRegExp.prototype[Symbol.replace]=function(t,p){if("string"==typeof p){var o=r.get(this);return e[Symbol.replace].call(this,t,p.replace(/\\$<([^>]+)>/g,(function(e,r){var t=o[r];return"$"+(Array.isArray(t)?t.join("$"):t)})))}if("function"==typeof p){var i=this;return e[Symbol.replace].call(this,t,(function(){var e=arguments;return"object"!=typeof e[e.length-1]&&(e=[].slice.call(e)).push(buildGroups(e,i)),p.apply(this,e)}))}return e[Symbol.replace].call(this,t,p)},_wrapRegExp.apply(this,arguments)}', {
      globals: ["RegExp", "WeakMap", "Object", "Symbol", "Array"],
      locals: {
        _wrapRegExp: ["body.0.id", "body.0.body.body.4.argument.expressions.3.callee.object", "body.0.body.body.0.expression.left"]
      },
      exportBindingAssignments: ["body.0.body.body.0.expression"],
      exportName: "_wrapRegExp",
      dependencies: {
        setPrototypeOf: ["body.0.body.body.2.body.body.1.argument.expressions.1.callee"],
        inherits: ["body.0.body.body.4.argument.expressions.0.callee"]
      }
    }),
    writeOnlyError: helper$2("7.12.13", "function _writeOnlyError(r){throw new TypeError('\"'+r+'\" is write-only')}", {
      globals: ["TypeError"],
      locals: {
        _writeOnlyError: ["body.0.id"]
      },
      exportBindingAssignments: [],
      exportName: "_writeOnlyError",
      dependencies: {}
    })
  };
  {
    Object.assign(helpers$3, {
      AwaitValue: helper$2("7.0.0-beta.0", "function _AwaitValue(t){this.wrapped=t}", {
        globals: [],
        locals: {
          _AwaitValue: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_AwaitValue",
        dependencies: {}
      }),
      applyDecs: helper$2("7.17.8", 'function old_createMetadataMethodsForProperty(e,t,a,r){return{getMetadata:function(o){old_assertNotFinished(r,"getMetadata"),old_assertMetadataKey(o);var i=e[o];if(void 0!==i)if(1===t){var n=i.public;if(void 0!==n)return n[a]}else if(2===t){var l=i.private;if(void 0!==l)return l.get(a)}else if(Object.hasOwnProperty.call(i,"constructor"))return i.constructor},setMetadata:function(o,i){old_assertNotFinished(r,"setMetadata"),old_assertMetadataKey(o);var n=e[o];if(void 0===n&&(n=e[o]={}),1===t){var l=n.public;void 0===l&&(l=n.public={}),l[a]=i}else if(2===t){var s=n.priv;void 0===s&&(s=n.private=new Map),s.set(a,i)}else n.constructor=i}}}function old_convertMetadataMapToFinal(e,t){var a=e[Symbol.metadata||Symbol.for("Symbol.metadata")],r=Object.getOwnPropertySymbols(t);if(0!==r.length){for(var o=0;o<r.length;o++){var i=r[o],n=t[i],l=a?a[i]:null,s=n.public,c=l?l.public:null;s&&c&&Object.setPrototypeOf(s,c);var d=n.private;if(d){var u=Array.from(d.values()),f=l?l.private:null;f&&(u=u.concat(f)),n.private=u}l&&Object.setPrototypeOf(n,l)}a&&Object.setPrototypeOf(t,a),e[Symbol.metadata||Symbol.for("Symbol.metadata")]=t}}function old_createAddInitializerMethod(e,t){return function(a){old_assertNotFinished(t,"addInitializer"),old_assertCallable(a,"An initializer"),e.push(a)}}function old_memberDec(e,t,a,r,o,i,n,l,s){var c;switch(i){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var d,u,f={kind:c,name:l?"#"+t:toPropertyKey(t),isStatic:n,isPrivate:l},p={v:!1};if(0!==i&&(f.addInitializer=old_createAddInitializerMethod(o,p)),l){d=2,u=Symbol(t);var v={};0===i?(v.get=a.get,v.set=a.set):2===i?v.get=function(){return a.value}:(1!==i&&3!==i||(v.get=function(){return a.get.call(this)}),1!==i&&4!==i||(v.set=function(e){a.set.call(this,e)})),f.access=v}else d=1,u=t;try{return e(s,Object.assign(f,old_createMetadataMethodsForProperty(r,d,u,p)))}finally{p.v=!0}}function old_assertNotFinished(e,t){if(e.v)throw Error("attempted to call "+t+" after decoration was finished")}function old_assertMetadataKey(e){if("symbol"!=typeof e)throw new TypeError("Metadata keys must be symbols, received: "+e)}function old_assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function old_assertValidReturnValue(e,t){var a=typeof t;if(1===e){if("object"!==a||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&old_assertCallable(t.get,"accessor.get"),void 0!==t.set&&old_assertCallable(t.set,"accessor.set"),void 0!==t.init&&old_assertCallable(t.init,"accessor.init"),void 0!==t.initializer&&old_assertCallable(t.initializer,"accessor.initializer")}else if("function"!==a)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function old_getInit(e){var t;return null==(t=e.init)&&(t=e.initializer)&&void 0!==console&&console.warn(".initializer has been renamed to .init as of March 2022"),t}function old_applyMemberDec(e,t,a,r,o,i,n,l,s){var c,d,u,f,p,v,y,h=a[0];if(n?(0===o||1===o?(c={get:a[3],set:a[4]},u="get"):3===o?(c={get:a[3]},u="get"):4===o?(c={set:a[3]},u="set"):c={value:a[3]},0!==o&&(1===o&&setFunctionName(a[4],"#"+r,"set"),setFunctionName(a[3],"#"+r,u))):0!==o&&(c=Object.getOwnPropertyDescriptor(t,r)),1===o?f={get:c.get,set:c.set}:2===o?f=c.value:3===o?f=c.get:4===o&&(f=c.set),"function"==typeof h)void 0!==(p=old_memberDec(h,r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?d=p:1===o?(d=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p);else for(var m=h.length-1;m>=0;m--){var b;void 0!==(p=old_memberDec(h[m],r,c,l,s,o,i,n,f))&&(old_assertValidReturnValue(o,p),0===o?b=p:1===o?(b=old_getInit(p),v=p.get||f.get,y=p.set||f.set,f={get:v,set:y}):f=p,void 0!==b&&(void 0===d?d=b:"function"==typeof d?d=[d,b]:d.push(b)))}if(0===o||1===o){if(void 0===d)d=function(e,t){return t};else if("function"!=typeof d){var g=d;d=function(e,t){for(var a=t,r=0;r<g.length;r++)a=g[r].call(e,a);return a}}else{var _=d;d=function(e,t){return _.call(e,t)}}e.push(d)}0!==o&&(1===o?(c.get=f.get,c.set=f.set):2===o?c.value=f:3===o?c.get=f:4===o&&(c.set=f),n?1===o?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===o?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,r,c))}function old_applyMemberDecs(e,t,a,r,o){for(var i,n,l=new Map,s=new Map,c=0;c<o.length;c++){var d=o[c];if(Array.isArray(d)){var u,f,p,v=d[1],y=d[2],h=d.length>3,m=v>=5;if(m?(u=t,f=r,0!=(v-=5)&&(p=n=n||[])):(u=t.prototype,f=a,0!==v&&(p=i=i||[])),0!==v&&!h){var b=m?s:l,g=b.get(y)||0;if(!0===g||3===g&&4!==v||4===g&&3!==v)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+y);!g&&v>2?b.set(y,v):b.set(y,!0)}old_applyMemberDec(e,u,d,y,v,m,h,f,p)}}old_pushInitializers(e,i),old_pushInitializers(e,n)}function old_pushInitializers(e,t){t&&e.push((function(e){for(var a=0;a<t.length;a++)t[a].call(e);return e}))}function old_applyClassDecs(e,t,a,r){if(r.length>0){for(var o=[],i=t,n=t.name,l=r.length-1;l>=0;l--){var s={v:!1};try{var c=Object.assign({kind:"class",name:n,addInitializer:old_createAddInitializerMethod(o,s)},old_createMetadataMethodsForProperty(a,0,n,s)),d=r[l](i,c)}finally{s.v=!0}void 0!==d&&(old_assertValidReturnValue(10,d),i=d)}e.push(i,(function(){for(var e=0;e<o.length;e++)o[e].call(i)}))}}function applyDecs(e,t,a){var r=[],o={},i={};return old_applyMemberDecs(r,e,i,o,t),old_convertMetadataMapToFinal(e.prototype,i),old_applyClassDecs(r,e,o,a),old_convertMetadataMapToFinal(e,o),r}', {
        globals: ["Object", "Map", "Symbol", "Array", "Error", "TypeError", "console"],
        locals: {
          old_createMetadataMethodsForProperty: ["body.0.id", "body.3.body.body.4.block.body.0.argument.arguments.1.arguments.1.callee", "body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.1.callee"],
          old_convertMetadataMapToFinal: ["body.1.id", "body.13.body.body.1.argument.expressions.1.callee", "body.13.body.body.1.argument.expressions.3.callee"],
          old_createAddInitializerMethod: ["body.2.id", "body.3.body.body.3.test.expressions.0.right.right.callee", "body.12.body.body.0.consequent.body.0.body.body.1.block.body.0.declarations.0.init.arguments.0.properties.2.value.callee"],
          old_memberDec: ["body.3.id", "body.9.body.body.1.consequent.expression.left.right.right.callee", "body.9.body.body.1.alternate.body.body.1.expression.left.right.right.callee"],
          old_assertNotFinished: ["body.4.id", "body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.0.callee", "body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.0.callee", "body.2.body.body.0.argument.body.body.0.expression.expressions.0.callee"],
          old_assertMetadataKey: ["body.5.id", "body.0.body.body.0.argument.properties.0.value.body.body.0.expression.expressions.1.callee", "body.0.body.body.0.argument.properties.1.value.body.body.0.expression.expressions.1.callee"],
          old_assertCallable: ["body.6.id", "body.2.body.body.0.argument.body.body.0.expression.expressions.1.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.0.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.1.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.2.right.callee", "body.7.body.body.1.consequent.body.1.expression.expressions.3.right.callee"],
          old_assertValidReturnValue: ["body.7.id", "body.9.body.body.1.consequent.expression.right.expressions.0.callee", "body.9.body.body.1.alternate.body.body.1.expression.right.expressions.0.callee", "body.12.body.body.0.consequent.body.0.body.body.2.expression.right.expressions.0.callee"],
          old_getInit: ["body.8.id", "body.9.body.body.1.consequent.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee", "body.9.body.body.1.alternate.body.body.1.expression.right.expressions.1.alternate.consequent.expressions.0.right.callee"],
          old_applyMemberDec: ["body.9.id", "body.10.body.body.0.body.body.1.consequent.body.2.expression.callee"],
          old_applyMemberDecs: ["body.10.id", "body.13.body.body.1.argument.expressions.0.callee"],
          old_pushInitializers: ["body.11.id", "body.10.body.body.1.expression.expressions.0.callee", "body.10.body.body.1.expression.expressions.1.callee"],
          old_applyClassDecs: ["body.12.id", "body.13.body.body.1.argument.expressions.2.callee"],
          applyDecs: ["body.13.id"]
        },
        exportBindingAssignments: [],
        exportName: "applyDecs",
        dependencies: {
          setFunctionName: ["body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.9.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"],
          toPropertyKey: ["body.3.body.body.2.declarations.2.init.properties.1.value.alternate.callee"]
        }
      }),
      applyDecs2203: helper$2("7.19.0", 'function applyDecs2203Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function memberDec(e,t,r,a,n,i,s,o){var c;switch(n){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var l,u,f={kind:c,name:s?"#"+t:t,static:i,private:s},p={v:!1};0!==n&&(f.addInitializer=createAddInitializerMethod(a,p)),0===n?s?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===n?l=function(){return r.value}:(1!==n&&3!==n||(l=function(){return r.get.call(this)}),1!==n&&4!==n||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(o,f)}finally{p.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function applyMemberDec(e,t,r,a,n,i,s,o){var c,l,u,f,p,d,h=r[0];if(s?c=0===n||1===n?{get:r[3],set:r[4]}:3===n?{get:r[3]}:4===n?{set:r[3]}:{value:r[3]}:0!==n&&(c=Object.getOwnPropertyDescriptor(t,a)),1===n?u={get:c.get,set:c.set}:2===n?u=c.value:3===n?u=c.get:4===n&&(u=c.set),"function"==typeof h)void 0!==(f=memberDec(h,a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?l=f:1===n?(l=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f);else for(var v=h.length-1;v>=0;v--){var g;void 0!==(f=memberDec(h[v],a,c,o,n,i,s,u))&&(assertValidReturnValue(n,f),0===n?g=f:1===n?(g=f.init,p=f.get||u.get,d=f.set||u.set,u={get:p,set:d}):u=f,void 0!==g&&(void 0===l?l=g:"function"==typeof l?l=[l,g]:l.push(g)))}if(0===n||1===n){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var y=l;l=function(e,t){for(var r=t,a=0;a<y.length;a++)r=y[a].call(e,r);return r}}else{var m=l;l=function(e,t){return m.call(e,t)}}e.push(l)}0!==n&&(1===n?(c.get=u.get,c.set=u.set):2===n?c.value=u:3===n?c.get=u:4===n&&(c.set=u),s?1===n?(e.push((function(e,t){return u.get.call(e,t)})),e.push((function(e,t){return u.set.call(e,t)}))):2===n?e.push(u):e.push((function(e,t){return u.call(e,t)})):Object.defineProperty(t,a,c))}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){var a=[];return function(e,t,r){for(var a,n,i=new Map,s=new Map,o=0;o<r.length;o++){var c=r[o];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=t,0!=(f-=5)&&(u=n=n||[])):(l=t.prototype,0!==f&&(u=a=a||[])),0!==f&&!d){var v=h?s:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(e,l,c,p,f,h,d,u)}}pushInitializers(e,a),pushInitializers(e,n)}(a,e,t),function(e,t,r){if(r.length>0){for(var a=[],n=t,i=t.name,s=r.length-1;s>=0;s--){var o={v:!1};try{var c=r[s](n,{kind:"class",name:i,addInitializer:createAddInitializerMethod(a,o)})}finally{o.v=!0}void 0!==c&&(assertValidReturnValue(10,c),n=c)}e.push(n,(function(){for(var e=0;e<a.length;e++)a[e].call(n)}))}}(a,e,r),a}}var applyDecs2203Impl;function applyDecs2203(e,t,r){return(applyDecs2203Impl=applyDecs2203Impl||applyDecs2203Factory())(e,t,r)}', {
        globals: ["Error", "TypeError", "Object", "Map", "Array"],
        locals: {
          applyDecs2203Factory: ["body.0.id", "body.2.body.body.0.argument.callee.right.right.callee"],
          applyDecs2203Impl: ["body.1.declarations.0.id", "body.2.body.body.0.argument.callee.right.left", "body.2.body.body.0.argument.callee.left"],
          applyDecs2203: ["body.2.id"]
        },
        exportBindingAssignments: [],
        exportName: "applyDecs2203",
        dependencies: {}
      }),
      applyDecs2203R: helper$2("7.20.0", 'function applyDecs2203RFactory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function memberDec(e,t,r,n,a,i,o,s){var c;switch(a){case 1:c="accessor";break;case 2:c="method";break;case 3:c="getter";break;case 4:c="setter";break;default:c="field"}var l,u,f={kind:c,name:o?"#"+t:toPropertyKey(t),static:i,private:o},p={v:!1};0!==a&&(f.addInitializer=createAddInitializerMethod(n,p)),0===a?o?(l=r.get,u=r.set):(l=function(){return this[t]},u=function(e){this[t]=e}):2===a?l=function(){return r.value}:(1!==a&&3!==a||(l=function(){return r.get.call(this)}),1!==a&&4!==a||(u=function(e){r.set.call(this,e)})),f.access=l&&u?{get:l,set:u}:l?{get:l}:{set:u};try{return e(s,f)}finally{p.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function applyMemberDec(e,t,r,n,a,i,o,s){var c,l,u,f,p,d,h,v=r[0];if(o?(0===a||1===a?(c={get:r[3],set:r[4]},u="get"):3===a?(c={get:r[3]},u="get"):4===a?(c={set:r[3]},u="set"):c={value:r[3]},0!==a&&(1===a&&setFunctionName(r[4],"#"+n,"set"),setFunctionName(r[3],"#"+n,u))):0!==a&&(c=Object.getOwnPropertyDescriptor(t,n)),1===a?f={get:c.get,set:c.set}:2===a?f=c.value:3===a?f=c.get:4===a&&(f=c.set),"function"==typeof v)void 0!==(p=memberDec(v,n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?l=p:1===a?(l=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p);else for(var g=v.length-1;g>=0;g--){var y;void 0!==(p=memberDec(v[g],n,c,s,a,i,o,f))&&(assertValidReturnValue(a,p),0===a?y=p:1===a?(y=p.init,d=p.get||f.get,h=p.set||f.set,f={get:d,set:h}):f=p,void 0!==y&&(void 0===l?l=y:"function"==typeof l?l=[l,y]:l.push(y)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var m=l;l=function(e,t){for(var r=t,n=0;n<m.length;n++)r=m[n].call(e,r);return r}}else{var b=l;l=function(e,t){return b.call(e,t)}}e.push(l)}0!==a&&(1===a?(c.get=f.get,c.set=f.set):2===a?c.value=f:3===a?c.get=f:4===a&&(c.set=f),o?1===a?(e.push((function(e,t){return f.get.call(e,t)})),e.push((function(e,t){return f.set.call(e,t)}))):2===a?e.push(f):e.push((function(e,t){return f.call(e,t)})):Object.defineProperty(t,n,c))}function applyMemberDecs(e,t){for(var r,n,a=[],i=new Map,o=new Map,s=0;s<t.length;s++){var c=t[s];if(Array.isArray(c)){var l,u,f=c[1],p=c[2],d=c.length>3,h=f>=5;if(h?(l=e,0!=(f-=5)&&(u=n=n||[])):(l=e.prototype,0!==f&&(u=r=r||[])),0!==f&&!d){var v=h?o:i,g=v.get(p)||0;if(!0===g||3===g&&4!==f||4===g&&3!==f)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+p);!g&&f>2?v.set(p,f):v.set(p,!0)}applyMemberDec(a,l,c,p,f,h,d,u)}}return pushInitializers(a,r),pushInitializers(a,n),a}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r){return{e:applyMemberDecs(e,t),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var o={v:!1};try{var s=t[i](n,{kind:"class",name:a,addInitializer:createAddInitializerMethod(r,o)})}finally{o.v=!0}void 0!==s&&(assertValidReturnValue(10,s),n=s)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2203R(e,t,r){return(applyDecs2203R=applyDecs2203RFactory())(e,t,r)}', {
        globals: ["Error", "TypeError", "Object", "Map", "Array"],
        locals: {
          applyDecs2203RFactory: ["body.0.id", "body.1.body.body.0.argument.callee.right.callee"],
          applyDecs2203R: ["body.1.id", "body.1.body.body.0.argument.callee.left"]
        },
        exportBindingAssignments: ["body.1.body.body.0.argument.callee"],
        exportName: "applyDecs2203R",
        dependencies: {
          setFunctionName: ["body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.0.body.body.4.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"],
          toPropertyKey: ["body.0.body.body.1.body.body.2.declarations.2.init.properties.1.value.alternate.callee"]
        }
      }),
      applyDecs2301: helper$2("7.21.0", 'function applyDecs2301Factory(){function createAddInitializerMethod(e,t){return function(r){!function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished")}(t),assertCallable(r,"An initializer"),e.push(r)}}function assertInstanceIfPrivate(e,t){if(!e(t))throw new TypeError("Attempted to access private element on non-instance")}function memberDec(e,t,r,n,a,i,s,o,c){var u;switch(a){case 1:u="accessor";break;case 2:u="method";break;case 3:u="getter";break;case 4:u="setter";break;default:u="field"}var l,f,p={kind:u,name:s?"#"+t:toPropertyKey(t),static:i,private:s},d={v:!1};if(0!==a&&(p.addInitializer=createAddInitializerMethod(n,d)),s||0!==a&&2!==a)if(2===a)l=function(e){return assertInstanceIfPrivate(c,e),r.value};else{var h=0===a||1===a;(h||3===a)&&(l=s?function(e){return assertInstanceIfPrivate(c,e),r.get.call(e)}:function(e){return r.get.call(e)}),(h||4===a)&&(f=s?function(e,t){assertInstanceIfPrivate(c,e),r.set.call(e,t)}:function(e,t){r.set.call(e,t)})}else l=function(e){return e[t]},0===a&&(f=function(e,r){e[t]=r});var v=s?c.bind():function(e){return t in e};p.access=l&&f?{get:l,set:f,has:v}:l?{get:l,has:v}:{set:f,has:v};try{return e(o,p)}finally{d.v=!0}}function assertCallable(e,t){if("function"!=typeof e)throw new TypeError(t+" must be a function")}function assertValidReturnValue(e,t){var r=typeof t;if(1===e){if("object"!==r||null===t)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==t.get&&assertCallable(t.get,"accessor.get"),void 0!==t.set&&assertCallable(t.set,"accessor.set"),void 0!==t.init&&assertCallable(t.init,"accessor.init")}else if("function"!==r)throw new TypeError((0===e?"field":10===e?"class":"method")+" decorators must return a function or void 0")}function curryThis2(e){return function(t){e(this,t)}}function applyMemberDec(e,t,r,n,a,i,s,o,c){var u,l,f,p,d,h,v,y,g=r[0];if(s?(0===a||1===a?(u={get:(d=r[3],function(){return d(this)}),set:curryThis2(r[4])},f="get"):3===a?(u={get:r[3]},f="get"):4===a?(u={set:r[3]},f="set"):u={value:r[3]},0!==a&&(1===a&&setFunctionName(u.set,"#"+n,"set"),setFunctionName(u[f||"value"],"#"+n,f))):0!==a&&(u=Object.getOwnPropertyDescriptor(t,n)),1===a?p={get:u.get,set:u.set}:2===a?p=u.value:3===a?p=u.get:4===a&&(p=u.set),"function"==typeof g)void 0!==(h=memberDec(g,n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?l=h:1===a?(l=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h);else for(var m=g.length-1;m>=0;m--){var b;void 0!==(h=memberDec(g[m],n,u,o,a,i,s,p,c))&&(assertValidReturnValue(a,h),0===a?b=h:1===a?(b=h.init,v=h.get||p.get,y=h.set||p.set,p={get:v,set:y}):p=h,void 0!==b&&(void 0===l?l=b:"function"==typeof l?l=[l,b]:l.push(b)))}if(0===a||1===a){if(void 0===l)l=function(e,t){return t};else if("function"!=typeof l){var I=l;l=function(e,t){for(var r=t,n=0;n<I.length;n++)r=I[n].call(e,r);return r}}else{var w=l;l=function(e,t){return w.call(e,t)}}e.push(l)}0!==a&&(1===a?(u.get=p.get,u.set=p.set):2===a?u.value=p:3===a?u.get=p:4===a&&(u.set=p),s?1===a?(e.push((function(e,t){return p.get.call(e,t)})),e.push((function(e,t){return p.set.call(e,t)}))):2===a?e.push(p):e.push((function(e,t){return p.call(e,t)})):Object.defineProperty(t,n,u))}function applyMemberDecs(e,t,r){for(var n,a,i,s=[],o=new Map,c=new Map,u=0;u<t.length;u++){var l=t[u];if(Array.isArray(l)){var f,p,d=l[1],h=l[2],v=l.length>3,y=d>=5,g=r;if(y?(f=e,0!=(d-=5)&&(p=a=a||[]),v&&!i&&(i=function(t){return checkInRHS(t)===e}),g=i):(f=e.prototype,0!==d&&(p=n=n||[])),0!==d&&!v){var m=y?c:o,b=m.get(h)||0;if(!0===b||3===b&&4!==d||4===b&&3!==d)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+h);!b&&d>2?m.set(h,d):m.set(h,!0)}applyMemberDec(s,f,l,h,d,y,v,p,g)}}return pushInitializers(s,n),pushInitializers(s,a),s}function pushInitializers(e,t){t&&e.push((function(e){for(var r=0;r<t.length;r++)t[r].call(e);return e}))}return function(e,t,r,n){return{e:applyMemberDecs(e,t,n),get c(){return function(e,t){if(t.length>0){for(var r=[],n=e,a=e.name,i=t.length-1;i>=0;i--){var s={v:!1};try{var o=t[i](n,{kind:"class",name:a,addInitializer:createAddInitializerMethod(r,s)})}finally{s.v=!0}void 0!==o&&(assertValidReturnValue(10,o),n=o)}return[n,function(){for(var e=0;e<r.length;e++)r[e].call(n)}]}}(e,r)}}}}function applyDecs2301(e,t,r,n){return(applyDecs2301=applyDecs2301Factory())(e,t,r,n)}', {
        globals: ["Error", "TypeError", "Object", "Map", "Array"],
        locals: {
          applyDecs2301Factory: ["body.0.id", "body.1.body.body.0.argument.callee.right.callee"],
          applyDecs2301: ["body.1.id", "body.1.body.body.0.argument.callee.left"]
        },
        exportBindingAssignments: ["body.1.body.body.0.argument.callee"],
        exportName: "applyDecs2301",
        dependencies: {
          checkInRHS: ["body.0.body.body.7.body.body.0.body.body.1.consequent.body.1.test.expressions.0.consequent.expressions.2.right.right.body.body.0.argument.left.callee"],
          setFunctionName: ["body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.0.right.callee", "body.0.body.body.6.body.body.1.test.expressions.0.consequent.expressions.1.right.expressions.1.callee"],
          toPropertyKey: ["body.0.body.body.2.body.body.2.declarations.2.init.properties.1.value.alternate.callee"]
        }
      }),
      applyDecs2305: helper$2("7.21.0", 'function applyDecs2305(e,t,r,n,o,a){function i(e,t,r){return function(n,o){return r&&r(n),e[t].call(n,o)}}function c(e,t){for(var r=0;r<e.length;r++)e[r].call(t);return t}function s(e,t,r,n){if("function"!=typeof e&&(n||void 0!==e))throw new TypeError(t+" must "+(r||"be")+" a function"+(n?"":" or undefined"));return e}function applyDec(e,t,r,n,o,a,c,u,l,f,p,d,h){function m(e){if(!h(e))throw new TypeError("Attempted to access private element on non-instance")}var y,v=t[0],g=t[3],b=!u;if(!b){r||Array.isArray(v)||(v=[v]);var w={},S=[],A=3===o?"get":4===o||d?"set":"value";f?(p||d?w={get:setFunctionName((function(){return g(this)}),n,"get"),set:function(e){t[4](this,e)}}:w[A]=g,p||setFunctionName(w[A],n,2===o?"":A)):p||(w=Object.getOwnPropertyDescriptor(e,n))}for(var P=e,j=v.length-1;j>=0;j-=r?2:1){var D=v[j],E=r?v[j-1]:void 0,I={},O={kind:["field","accessor","method","getter","setter","class"][o],name:n,metadata:a,addInitializer:function(e,t){if(e.v)throw Error("attempted to call addInitializer after decoration was finished");s(t,"An initializer","be",!0),c.push(t)}.bind(null,I)};try{if(b)(y=s(D.call(E,P,O),"class decorators","return"))&&(P=y);else{var k,F;O.static=l,O.private=f,f?2===o?k=function(e){return m(e),w.value}:(o<4&&(k=i(w,"get",m)),3!==o&&(F=i(w,"set",m))):(k=function(e){return e[n]},(o<2||4===o)&&(F=function(e,t){e[n]=t}));var N=O.access={has:f?h.bind():function(e){return n in e}};if(k&&(N.get=k),F&&(N.set=F),P=D.call(E,d?{get:w.get,set:w.set}:w[A],O),d){if("object"==typeof P&&P)(y=s(P.get,"accessor.get"))&&(w.get=y),(y=s(P.set,"accessor.set"))&&(w.set=y),(y=s(P.init,"accessor.init"))&&S.push(y);else if(void 0!==P)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0")}else s(P,(p?"field":"method")+" decorators","return")&&(p?S.push(P):w[A]=P)}}finally{I.v=!0}}return(p||d)&&u.push((function(e,t){for(var r=S.length-1;r>=0;r--)t=S[r].call(e,t);return t})),p||b||(f?d?u.push(i(w,"get"),i(w,"set")):u.push(2===o?w[A]:i.call.bind(w[A])):Object.defineProperty(e,n,w)),P}function u(e,t){return Object.defineProperty(e,Symbol.metadata||Symbol.for("Symbol.metadata"),{configurable:!0,enumerable:!0,value:t})}if(arguments.length>=6)var l=a[Symbol.metadata||Symbol.for("Symbol.metadata")];var f=Object.create(null==l?null:l),p=function(e,t,r,n){var o,a,i=[],s=function(t){return checkInRHS(t)===e},u=new Map;function l(e){e&&i.push(c.bind(null,e))}for(var f=0;f<t.length;f++){var p=t[f];if(Array.isArray(p)){var d=p[1],h=p[2],m=p.length>3,y=16&d,v=!!(8&d),g=0==(d&=7),b=h+"/"+v;if(!g&&!m){var w=u.get(b);if(!0===w||3===w&&4!==d||4===w&&3!==d)throw Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+h);u.set(b,!(d>2)||d)}applyDec(v?e:e.prototype,p,y,m?"#"+h:toPropertyKey(h),d,n,v?a=a||[]:o=o||[],i,v,m,g,1===d,v&&m?s:r)}}return l(o),l(a),i}(e,t,o,f);return r.length||u(e,f),{e:p,get c(){var t=[];return r.length&&[u(applyDec(e,[r],n,e.name,5,f,t),f),c.bind(null,t,e)]}}}', {
        globals: ["TypeError", "Array", "Object", "Error", "Symbol", "Map"],
        locals: {
          applyDecs2305: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "applyDecs2305",
        dependencies: {
          checkInRHS: ["body.0.body.body.6.declarations.1.init.callee.body.body.0.declarations.3.init.body.body.0.argument.left.callee"],
          setFunctionName: ["body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.0.consequent.right.properties.0.value.callee", "body.0.body.body.3.body.body.2.consequent.body.2.expression.consequent.expressions.1.right.callee"],
          toPropertyKey: ["body.0.body.body.6.declarations.1.init.callee.body.body.2.body.body.1.consequent.body.2.expression.arguments.3.alternate.callee"]
        }
      }),
      classApplyDescriptorDestructureSet: helper$2("7.13.10", 'function _classApplyDescriptorDestructureSet(e,t){if(t.set)return"__destrObj"in t||(t.__destrObj={set value(r){t.set.call(e,r)}}),t.__destrObj;if(!t.writable)throw new TypeError("attempted to set read only private field");return t}', {
        globals: ["TypeError"],
        locals: {
          _classApplyDescriptorDestructureSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classApplyDescriptorDestructureSet",
        dependencies: {}
      }),
      classApplyDescriptorGet: helper$2("7.13.10", "function _classApplyDescriptorGet(e,t){return t.get?t.get.call(e):t.value}", {
        globals: [],
        locals: {
          _classApplyDescriptorGet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classApplyDescriptorGet",
        dependencies: {}
      }),
      classApplyDescriptorSet: helper$2("7.13.10", 'function _classApplyDescriptorSet(e,t,l){if(t.set)t.set.call(e,l);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=l}}', {
        globals: ["TypeError"],
        locals: {
          _classApplyDescriptorSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classApplyDescriptorSet",
        dependencies: {}
      }),
      classCheckPrivateStaticAccess: helper$2("7.13.10", "function _classCheckPrivateStaticAccess(s,a,r){return assertClassBrand(a,s,r)}", {
        globals: [],
        locals: {
          _classCheckPrivateStaticAccess: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classCheckPrivateStaticAccess",
        dependencies: {
          assertClassBrand: ["body.0.body.body.0.argument.callee"]
        }
      }),
      classCheckPrivateStaticFieldDescriptor: helper$2("7.13.10", 'function _classCheckPrivateStaticFieldDescriptor(t,e){if(void 0===t)throw new TypeError("attempted to "+e+" private static field before its declaration")}', {
        globals: ["TypeError"],
        locals: {
          _classCheckPrivateStaticFieldDescriptor: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classCheckPrivateStaticFieldDescriptor",
        dependencies: {}
      }),
      classExtractFieldDescriptor: helper$2("7.13.10", "function _classExtractFieldDescriptor(e,t){return classPrivateFieldGet2(t,e)}", {
        globals: [],
        locals: {
          _classExtractFieldDescriptor: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classExtractFieldDescriptor",
        dependencies: {
          classPrivateFieldGet2: ["body.0.body.body.0.argument.callee"]
        }
      }),
      classPrivateFieldDestructureSet: helper$2("7.4.4", "function _classPrivateFieldDestructureSet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorDestructureSet(e,r)}", {
        globals: [],
        locals: {
          _classPrivateFieldDestructureSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classPrivateFieldDestructureSet",
        dependencies: {
          classApplyDescriptorDestructureSet: ["body.0.body.body.1.argument.callee"],
          classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"]
        }
      }),
      classPrivateFieldGet: helper$2("7.0.0-beta.0", "function _classPrivateFieldGet(e,t){var r=classPrivateFieldGet2(t,e);return classApplyDescriptorGet(e,r)}", {
        globals: [],
        locals: {
          _classPrivateFieldGet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classPrivateFieldGet",
        dependencies: {
          classApplyDescriptorGet: ["body.0.body.body.1.argument.callee"],
          classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"]
        }
      }),
      classPrivateFieldSet: helper$2("7.0.0-beta.0", "function _classPrivateFieldSet(e,t,r){var s=classPrivateFieldGet2(t,e);return classApplyDescriptorSet(e,s,r),r}", {
        globals: [],
        locals: {
          _classPrivateFieldSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classPrivateFieldSet",
        dependencies: {
          classApplyDescriptorSet: ["body.0.body.body.1.argument.expressions.0.callee"],
          classPrivateFieldGet2: ["body.0.body.body.0.declarations.0.init.callee"]
        }
      }),
      classPrivateMethodGet: helper$2("7.1.6", "function _classPrivateMethodGet(s,a,r){return assertClassBrand(a,s),r}", {
        globals: [],
        locals: {
          _classPrivateMethodGet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classPrivateMethodGet",
        dependencies: {
          assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"]
        }
      }),
      classPrivateMethodSet: helper$2("7.1.6", 'function _classPrivateMethodSet(){throw new TypeError("attempted to reassign private method")}', {
        globals: ["TypeError"],
        locals: {
          _classPrivateMethodSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classPrivateMethodSet",
        dependencies: {}
      }),
      classStaticPrivateFieldDestructureSet: helper$2("7.13.10", 'function _classStaticPrivateFieldDestructureSet(t,r,s){return assertClassBrand(r,t),classCheckPrivateStaticFieldDescriptor(s,"set"),classApplyDescriptorDestructureSet(t,s)}', {
        globals: [],
        locals: {
          _classStaticPrivateFieldDestructureSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classStaticPrivateFieldDestructureSet",
        dependencies: {
          classApplyDescriptorDestructureSet: ["body.0.body.body.0.argument.expressions.2.callee"],
          assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"],
          classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"]
        }
      }),
      classStaticPrivateFieldSpecGet: helper$2("7.0.2", 'function _classStaticPrivateFieldSpecGet(t,s,r){return assertClassBrand(s,t),classCheckPrivateStaticFieldDescriptor(r,"get"),classApplyDescriptorGet(t,r)}', {
        globals: [],
        locals: {
          _classStaticPrivateFieldSpecGet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classStaticPrivateFieldSpecGet",
        dependencies: {
          classApplyDescriptorGet: ["body.0.body.body.0.argument.expressions.2.callee"],
          assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"],
          classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"]
        }
      }),
      classStaticPrivateFieldSpecSet: helper$2("7.0.2", 'function _classStaticPrivateFieldSpecSet(s,t,r,e){return assertClassBrand(t,s),classCheckPrivateStaticFieldDescriptor(r,"set"),classApplyDescriptorSet(s,r,e),e}', {
        globals: [],
        locals: {
          _classStaticPrivateFieldSpecSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classStaticPrivateFieldSpecSet",
        dependencies: {
          classApplyDescriptorSet: ["body.0.body.body.0.argument.expressions.2.callee"],
          assertClassBrand: ["body.0.body.body.0.argument.expressions.0.callee"],
          classCheckPrivateStaticFieldDescriptor: ["body.0.body.body.0.argument.expressions.1.callee"]
        }
      }),
      classStaticPrivateMethodSet: helper$2("7.3.2", 'function _classStaticPrivateMethodSet(){throw new TypeError("attempted to set read only static private field")}', {
        globals: ["TypeError"],
        locals: {
          _classStaticPrivateMethodSet: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_classStaticPrivateMethodSet",
        dependencies: {}
      }),
      defineEnumerableProperties: helper$2("7.0.0-beta.0", 'function _defineEnumerableProperties(e,r){for(var t in r){var n=r[t];n.configurable=n.enumerable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,t,n)}if(Object.getOwnPropertySymbols)for(var a=Object.getOwnPropertySymbols(r),b=0;b<a.length;b++){var i=a[b];(n=r[i]).configurable=n.enumerable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,i,n)}return e}', {
        globals: ["Object"],
        locals: {
          _defineEnumerableProperties: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_defineEnumerableProperties",
        dependencies: {}
      }),
      dispose: helper$2("7.22.0", 'function dispose_SuppressedError(r,e){return"undefined"!=typeof SuppressedError?dispose_SuppressedError=SuppressedError:(dispose_SuppressedError=function(r,e){this.suppressed=e,this.error=r,this.stack=Error().stack},dispose_SuppressedError.prototype=Object.create(Error.prototype,{constructor:{value:dispose_SuppressedError,writable:!0,configurable:!0}})),new dispose_SuppressedError(r,e)}function _dispose(r,e,s){function next(){for(;r.length>0;)try{var o=r.pop(),p=o.d.call(o.v);if(o.a)return Promise.resolve(p).then(next,err)}catch(r){return err(r)}if(s)throw e}function err(r){return e=s?new dispose_SuppressedError(e,r):r,s=!0,next()}return next()}', {
        globals: ["SuppressedError", "Error", "Object", "Promise"],
        locals: {
          dispose_SuppressedError: ["body.0.id", "body.0.body.body.0.argument.expressions.0.alternate.expressions.1.left.object", "body.0.body.body.0.argument.expressions.0.alternate.expressions.1.right.arguments.1.properties.0.value.properties.0.value", "body.0.body.body.0.argument.expressions.1.callee", "body.1.body.body.1.body.body.0.argument.expressions.0.right.consequent.callee", "body.0.body.body.0.argument.expressions.0.consequent.left", "body.0.body.body.0.argument.expressions.0.alternate.expressions.0.left"],
          _dispose: ["body.1.id"]
        },
        exportBindingAssignments: [],
        exportName: "_dispose",
        dependencies: {}
      }),
      objectSpread: helper$2("7.0.0-beta.0", 'function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?Object(arguments[r]):{},o=Object.keys(t);"function"==typeof Object.getOwnPropertySymbols&&o.push.apply(o,Object.getOwnPropertySymbols(t).filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),o.forEach((function(r){defineProperty(e,r,t[r])}))}return e}', {
        globals: ["Object"],
        locals: {
          _objectSpread: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_objectSpread",
        dependencies: {
          defineProperty: ["body.0.body.body.0.body.body.1.expression.expressions.1.arguments.0.body.body.0.expression.callee"]
        }
      }),
      using: helper$2("7.22.0", 'function _using(o,n,e){if(null==n)return n;if(Object(n)!==n)throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");if(e)var r=n[Symbol.asyncDispose||Symbol.for("Symbol.asyncDispose")];if(null==r&&(r=n[Symbol.dispose||Symbol.for("Symbol.dispose")]),"function"!=typeof r)throw new TypeError("Property [Symbol.dispose] is not a function.");return o.push({v:n,d:r,a:e}),n}', {
        globals: ["Object", "TypeError", "Symbol"],
        locals: {
          _using: ["body.0.id"]
        },
        exportBindingAssignments: [],
        exportName: "_using",
        dependencies: {}
      })
    });
  }

  var cloneNode$e = cloneNode$g,
    identifier$c = identifier$e;
  function deep(obj, path, value) {
    try {
      var parts = path.split(".");
      var last = parts.shift();
      while (parts.length > 0) {
        obj = obj[last];
        last = parts.shift();
      }
      if (arguments.length > 2) {
        obj[last] = value;
      } else {
        return obj[last];
      }
    } catch (e) {
      e.message += " (when accessing " + path + ")";
      throw e;
    }
  }
  function permuteHelperAST(ast, metadata, bindingName, localBindings, getDependency, adjustAst) {
    var locals = metadata.locals,
      dependencies = metadata.dependencies,
      exportBindingAssignments = metadata.exportBindingAssignments,
      exportName = metadata.exportName;
    var bindings = new Set(localBindings || []);
    if (bindingName) bindings.add(bindingName);
    for (var _i = 0, _Object$entries = (Object.entries || function (o) {
        return Object.keys(o).map(function (k) {
          return [k, o[k]];
        });
      })(locals); _i < _Object$entries.length; _i++) {
      var _Object$entries$_i = _slicedToArray(_Object$entries[_i], 2),
        _name = _Object$entries$_i[0],
        paths = _Object$entries$_i[1];
      var newName = _name;
      if (bindingName && _name === exportName) {
        newName = bindingName;
      } else {
        while (bindings.has(newName)) newName = "_" + newName;
      }
      if (newName !== _name) {
        for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
          var path = _step.value;
          deep(ast, path, identifier$c(newName));
        }
      }
    }
    for (var _i2 = 0, _Object$entries2 = (Object.entries || function (o) {
        return Object.keys(o).map(function (k) {
          return [k, o[k]];
        });
      })(dependencies); _i2 < _Object$entries2.length; _i2++) {
      var _Object$entries2$_i = _slicedToArray(_Object$entries2[_i2], 2),
        _name2 = _Object$entries2$_i[0],
        _paths = _Object$entries2$_i[1];
      var ref = typeof getDependency === "function" && getDependency(_name2) || identifier$c(_name2);
      for (var _iterator2 = _createForOfIteratorHelperLoose(_paths), _step2; !(_step2 = _iterator2()).done;) {
        var _path = _step2.value;
        deep(ast, _path, cloneNode$e(ref));
      }
    }
    adjustAst == null || adjustAst(ast, exportName, function (map) {
      exportBindingAssignments.forEach(function (p) {
        return deep(ast, p, map(deep(ast, p)));
      });
    });
  }
  var helperData = Object.create(null);
  function loadHelper(name) {
    if (!helperData[name]) {
      var helper = helpers$3[name];
      if (!helper) {
        throw Object.assign(new ReferenceError("Unknown helper " + name), {
          code: "BABEL_HELPER_UNKNOWN",
          helper: name
        });
      }
      helperData[name] = {
        minVersion: helper.minVersion,
        build: function build(getDependency, bindingName, localBindings, adjustAst) {
          var ast = helper.ast();
          permuteHelperAST(ast, helper.metadata, bindingName, localBindings, getDependency, adjustAst);
          return {
            nodes: ast.body,
            globals: helper.metadata.globals
          };
        },
        getDependencies: function getDependencies() {
          return Object.keys(helper.metadata.dependencies);
        }
      };
    }
    return helperData[name];
  }
  function get$2(name, getDependency, bindingName, localBindings, adjustAst) {
    {
      if (typeof bindingName === "object") {
        var id = bindingName;
        if ((id == null ? void 0 : id.type) === "Identifier") {
          bindingName = id.name;
        } else {
          bindingName = undefined;
        }
      }
    }
    return loadHelper(name).build(getDependency, bindingName, localBindings, adjustAst);
  }
  function minVersion(name) {
    return loadHelper(name).minVersion;
  }
  function getDependencies(name) {
    return loadHelper(name).getDependencies();
  }
  {
    exports.ensure = function (name) {
      loadHelper(name);
    };
  }
  var list = Object.keys(helpers$3).map(function (name) {
    return name.replace(/^_/, "");
  });

  var ReferencedIdentifier$1 = ["Identifier", "JSXIdentifier"];
  var ReferencedMemberExpression = ["MemberExpression"];
  var BindingIdentifier = ["Identifier"];
  var Statement = ["Statement"];
  var Expression = ["Expression"];
  var Scope$1 = ["Scopable", "Pattern"];
  var Referenced = null;
  var BlockScoped = null;
  var Var = ["VariableDeclaration"];
  var User = null;
  var Generated = null;
  var Pure = null;
  var Flow = ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"];
  var RestProperty = ["RestElement"];
  var SpreadProperty = ["RestElement"];
  var ExistentialTypeParam = ["ExistsTypeAnnotation"];
  var NumericLiteralTypeAnnotation = ["NumberLiteralTypeAnnotation"];
  var ForAwaitStatement = ["ForOfStatement"];

  var virtualTypes = /*#__PURE__*/Object.freeze({
    __proto__: null,
    BindingIdentifier: BindingIdentifier,
    BlockScoped: BlockScoped,
    ExistentialTypeParam: ExistentialTypeParam,
    Expression: Expression,
    Flow: Flow,
    ForAwaitStatement: ForAwaitStatement,
    Generated: Generated,
    NumericLiteralTypeAnnotation: NumericLiteralTypeAnnotation,
    Pure: Pure,
    Referenced: Referenced,
    ReferencedIdentifier: ReferencedIdentifier$1,
    ReferencedMemberExpression: ReferencedMemberExpression,
    RestProperty: RestProperty,
    Scope: Scope$1,
    SpreadProperty: SpreadProperty,
    Statement: Statement,
    User: User,
    Var: Var
  });

  var browser$2 = {exports: {}};

  var ms;
  var hasRequiredMs;
  function requireMs() {
    if (hasRequiredMs) return ms;
    hasRequiredMs = 1;
    var s = 1000;
    var m = s * 60;
    var h = m * 60;
    var d = h * 24;
    var w = d * 7;
    var y = d * 365.25;
    ms = function ms(val, options) {
      options = options || {};
      var type = typeof val;
      if (type === 'string' && val.length > 0) {
        return parse(val);
      } else if (type === 'number' && isFinite(val)) {
        return options["long"] ? fmtLong(val) : fmtShort(val);
      }
      throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));
    };
    function parse(str) {
      str = String(str);
      if (str.length > 100) {
        return;
      }
      var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
      if (!match) {
        return;
      }
      var n = parseFloat(match[1]);
      var type = (match[2] || 'ms').toLowerCase();
      switch (type) {
        case 'years':
        case 'year':
        case 'yrs':
        case 'yr':
        case 'y':
          return n * y;
        case 'weeks':
        case 'week':
        case 'w':
          return n * w;
        case 'days':
        case 'day':
        case 'd':
          return n * d;
        case 'hours':
        case 'hour':
        case 'hrs':
        case 'hr':
        case 'h':
          return n * h;
        case 'minutes':
        case 'minute':
        case 'mins':
        case 'min':
        case 'm':
          return n * m;
        case 'seconds':
        case 'second':
        case 'secs':
        case 'sec':
        case 's':
          return n * s;
        case 'milliseconds':
        case 'millisecond':
        case 'msecs':
        case 'msec':
        case 'ms':
          return n;
        default:
          return undefined;
      }
    }
    function fmtShort(ms) {
      var msAbs = Math.abs(ms);
      if (msAbs >= d) {
        return Math.round(ms / d) + 'd';
      }
      if (msAbs >= h) {
        return Math.round(ms / h) + 'h';
      }
      if (msAbs >= m) {
        return Math.round(ms / m) + 'm';
      }
      if (msAbs >= s) {
        return Math.round(ms / s) + 's';
      }
      return ms + 'ms';
    }
    function fmtLong(ms) {
      var msAbs = Math.abs(ms);
      if (msAbs >= d) {
        return plural(ms, msAbs, d, 'day');
      }
      if (msAbs >= h) {
        return plural(ms, msAbs, h, 'hour');
      }
      if (msAbs >= m) {
        return plural(ms, msAbs, m, 'minute');
      }
      if (msAbs >= s) {
        return plural(ms, msAbs, s, 'second');
      }
      return ms + ' ms';
    }
    function plural(ms, msAbs, n, name) {
      var isPlural = msAbs >= n * 1.5;
      return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
    }
    return ms;
  }

  function setup$1(env) {
    createDebug.debug = createDebug;
    createDebug["default"] = createDebug;
    createDebug.coerce = coerce;
    createDebug.disable = disable;
    createDebug.enable = enable;
    createDebug.enabled = enabled;
    createDebug.humanize = requireMs();
    createDebug.destroy = destroy;
    Object.keys(env).forEach(function (key) {
      createDebug[key] = env[key];
    });
    createDebug.names = [];
    createDebug.skips = [];
    createDebug.formatters = {};
    function selectColor(namespace) {
      var hash = 0;
      for (var i = 0; i < namespace.length; i++) {
        hash = (hash << 5) - hash + namespace.charCodeAt(i);
        hash |= 0;
      }
      return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
    }
    createDebug.selectColor = selectColor;
    function createDebug(namespace) {
      var prevTime;
      var enableOverride = null;
      var namespacesCache;
      var enabledCache;
      function debug() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        if (!debug.enabled) {
          return;
        }
        var self = debug;
        var curr = Number(new Date());
        var ms = curr - (prevTime || curr);
        self.diff = ms;
        self.prev = prevTime;
        self.curr = curr;
        prevTime = curr;
        args[0] = createDebug.coerce(args[0]);
        if (typeof args[0] !== 'string') {
          args.unshift('%O');
        }
        var index = 0;
        args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
          if (match === '%%') {
            return '%';
          }
          index++;
          var formatter = createDebug.formatters[format];
          if (typeof formatter === 'function') {
            var val = args[index];
            match = formatter.call(self, val);
            args.splice(index, 1);
            index--;
          }
          return match;
        });
        createDebug.formatArgs.call(self, args);
        var logFn = self.log || createDebug.log;
        logFn.apply(self, args);
      }
      debug.namespace = namespace;
      debug.useColors = createDebug.useColors();
      debug.color = createDebug.selectColor(namespace);
      debug.extend = extend;
      debug.destroy = createDebug.destroy;
      Object.defineProperty(debug, 'enabled', {
        enumerable: true,
        configurable: false,
        get: function get() {
          if (enableOverride !== null) {
            return enableOverride;
          }
          if (namespacesCache !== createDebug.namespaces) {
            namespacesCache = createDebug.namespaces;
            enabledCache = createDebug.enabled(namespace);
          }
          return enabledCache;
        },
        set: function set(v) {
          enableOverride = v;
        }
      });
      if (typeof createDebug.init === 'function') {
        createDebug.init(debug);
      }
      return debug;
    }
    function extend(namespace, delimiter) {
      var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
      newDebug.log = this.log;
      return newDebug;
    }
    function enable(namespaces) {
      createDebug.save(namespaces);
      createDebug.namespaces = namespaces;
      createDebug.names = [];
      createDebug.skips = [];
      var i;
      var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
      var len = split.length;
      for (i = 0; i < len; i++) {
        if (!split[i]) {
          continue;
        }
        namespaces = split[i].replace(/\*/g, '.*?');
        if (namespaces[0] === '-') {
          createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
        } else {
          createDebug.names.push(new RegExp('^' + namespaces + '$'));
        }
      }
    }
    function disable() {
      var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {
        return '-' + namespace;
      }))).join(',');
      createDebug.enable('');
      return namespaces;
    }
    function enabled(name) {
      if (name[name.length - 1] === '*') {
        return true;
      }
      var i;
      var len;
      for (i = 0, len = createDebug.skips.length; i < len; i++) {
        if (createDebug.skips[i].test(name)) {
          return false;
        }
      }
      for (i = 0, len = createDebug.names.length; i < len; i++) {
        if (createDebug.names[i].test(name)) {
          return true;
        }
      }
      return false;
    }
    function toNamespace(regexp) {
      return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*');
    }
    function coerce(val) {
      if (val instanceof Error) {
        return val.stack || val.message;
      }
      return val;
    }
    function destroy() {
      console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
    }
    createDebug.enable(createDebug.load());
    return createDebug;
  }
  var common = setup$1;

  (function (module, exports) {
    exports.formatArgs = formatArgs;
    exports.save = save;
    exports.load = load;
    exports.useColors = useColors;
    exports.storage = localstorage();
    exports.destroy = function () {
      var warned = false;
      return function () {
        if (!warned) {
          warned = true;
          console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
        }
      };
    }();
    exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];
    function useColors() {
      if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
        return true;
      }
      if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
        return false;
      }
      return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
    }
    function formatArgs(args) {
      args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);
      if (!this.useColors) {
        return;
      }
      var c = 'color: ' + this.color;
      args.splice(1, 0, c, 'color: inherit');
      var index = 0;
      var lastC = 0;
      args[0].replace(/%[a-zA-Z%]/g, function (match) {
        if (match === '%%') {
          return;
        }
        index++;
        if (match === '%c') {
          lastC = index;
        }
      });
      args.splice(lastC, 0, c);
    }
    exports.log = console.debug || console.log || function () {};
    function save(namespaces) {
      try {
        if (namespaces) {
          exports.storage.setItem('debug', namespaces);
        } else {
          exports.storage.removeItem('debug');
        }
      } catch (error) {}
    }
    function load() {
      var r;
      try {
        r = exports.storage.getItem('debug');
      } catch (error) {}
      if (!r && typeof browser$1$1 !== 'undefined' && 'env' in browser$1$1) {
        r = browser$1$1.env.DEBUG;
      }
      return r;
    }
    function localstorage() {
      try {
        return localStorage;
      } catch (error) {}
    }
    module.exports = common(exports);
    var formatters = module.exports.formatters;
    formatters.j = function (v) {
      try {
        return JSON.stringify(v);
      } catch (error) {
        return '[UnexpectedJSONParseError]: ' + error.message;
      }
    };
  })(browser$2, browser$2.exports);
  var browserExports = browser$2.exports;

  var isBinding = isBinding$1,
    nodeIsBlockScoped = isBlockScoped$2,
    isExportDeclaration$1 = isExportDeclaration$2,
    nodeIsExpression = isExpression$4,
    nodeIsFlow = isFlow$1,
    isForStatement$1 = isForStatement$2,
    isForXStatement = isForXStatement$1,
    isIdentifier$d = isIdentifier$f,
    isImportDeclaration$2 = isImportDeclaration$3,
    isImportSpecifier = isImportSpecifier$1,
    isJSXIdentifier$1 = isJSXIdentifier$3,
    isJSXMemberExpression$1 = isJSXMemberExpression$2,
    isMemberExpression$7 = isMemberExpression$8,
    nodeIsRestElement = isRestElement$2,
    nodeIsReferenced = isReferenced$2,
    nodeIsScope = isScope$1,
    nodeIsStatement = isStatement$9,
    nodeIsVar = isVar$1,
    isVariableDeclaration$2 = isVariableDeclaration$3,
    react$2 = react$3,
    isForOfStatement$1 = isForOfStatement$2;
  var isCompatTag = react$2.isCompatTag;
  function isReferencedIdentifier(opts) {
    var node = this.node,
      parent = this.parent;
    if (!isIdentifier$d(node, opts) && !isJSXMemberExpression$1(parent, opts)) {
      if (isJSXIdentifier$1(node, opts)) {
        if (isCompatTag(node.name)) return false;
      } else {
        return false;
      }
    }
    return nodeIsReferenced(node, parent, this.parentPath.parent);
  }
  function isReferencedMemberExpression() {
    var node = this.node,
      parent = this.parent;
    return isMemberExpression$7(node) && nodeIsReferenced(node, parent);
  }
  function isBindingIdentifier() {
    var node = this.node,
      parent = this.parent;
    var grandparent = this.parentPath.parent;
    return isIdentifier$d(node) && isBinding(node, parent, grandparent);
  }
  function isStatement$6() {
    var node = this.node,
      parent = this.parent;
    if (nodeIsStatement(node)) {
      if (isVariableDeclaration$2(node)) {
        if (isForXStatement(parent, {
          left: node
        })) return false;
        if (isForStatement$1(parent, {
          init: node
        })) return false;
      }
      return true;
    } else {
      return false;
    }
  }
  function isExpression$3() {
    if (this.isIdentifier()) {
      return this.isReferencedIdentifier();
    } else {
      return nodeIsExpression(this.node);
    }
  }
  function isScope() {
    return nodeIsScope(this.node, this.parent);
  }
  function isReferenced$1() {
    return nodeIsReferenced(this.node, this.parent);
  }
  function isBlockScoped$1() {
    return nodeIsBlockScoped(this.node);
  }
  function isVar() {
    return nodeIsVar(this.node);
  }
  function isUser() {
    return this.node && !!this.node.loc;
  }
  function isGenerated() {
    return !this.isUser();
  }
  function isPure(constantsOnly) {
    return this.scope.isPure(this.node, constantsOnly);
  }
  function isFlow() {
    var node = this.node;
    if (nodeIsFlow(node)) {
      return true;
    } else if (isImportDeclaration$2(node)) {
      return node.importKind === "type" || node.importKind === "typeof";
    } else if (isExportDeclaration$1(node)) {
      return node.exportKind === "type";
    } else if (isImportSpecifier(node)) {
      return node.importKind === "type" || node.importKind === "typeof";
    } else {
      return false;
    }
  }
  function isRestProperty() {
    var _this$parentPath;
    return nodeIsRestElement(this.node) && ((_this$parentPath = this.parentPath) == null ? void 0 : _this$parentPath.isObjectPattern());
  }
  function isSpreadProperty() {
    var _this$parentPath2;
    return nodeIsRestElement(this.node) && ((_this$parentPath2 = this.parentPath) == null ? void 0 : _this$parentPath2.isObjectExpression());
  }
  function isForAwaitStatement() {
    return isForOfStatement$1(this.node, {
      "await": true
    });
  }
  {
    exports.isExistentialTypeParam = function isExistentialTypeParam() {
      throw new Error("`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.");
    };
    exports.isNumericLiteralTypeAnnotation = function isNumericLiteralTypeAnnotation() {
      throw new Error("`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.");
    };
  }

  var NodePath_virtual_types_validator = /*#__PURE__*/Object.freeze({
    __proto__: null,
    isBindingIdentifier: isBindingIdentifier,
    isBlockScoped: isBlockScoped$1,
    isExpression: isExpression$3,
    isFlow: isFlow,
    isForAwaitStatement: isForAwaitStatement,
    isGenerated: isGenerated,
    isPure: isPure,
    isReferenced: isReferenced$1,
    isReferencedIdentifier: isReferencedIdentifier,
    isReferencedMemberExpression: isReferencedMemberExpression,
    isRestProperty: isRestProperty,
    isScope: isScope,
    isSpreadProperty: isSpreadProperty,
    isStatement: isStatement$6,
    isUser: isUser,
    isVar: isVar
  });

  var DEPRECATED_KEYS = DEPRECATED_KEYS$1,
    DEPRECATED_ALIASES = DEPRECATED_ALIASES$1,
    FLIPPED_ALIAS_KEYS$2 = FLIPPED_ALIAS_KEYS$3,
    TYPES = TYPES$1,
    deprecationWarning = deprecationWarning$1;
  function isVirtualType(type) {
    return type in virtualTypes;
  }
  function isExplodedVisitor(visitor) {
    return visitor == null ? void 0 : visitor._exploded;
  }
  function explode$1(visitor) {
    if (isExplodedVisitor(visitor)) return visitor;
    visitor._exploded = true;
    for (var _i = 0, _arr = Object.keys(visitor); _i < _arr.length; _i++) {
      var nodeType = _arr[_i];
      if (shouldIgnoreKey(nodeType)) continue;
      var parts = nodeType.split("|");
      if (parts.length === 1) continue;
      var fns = visitor[nodeType];
      delete visitor[nodeType];
      for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
        var part = _step.value;
        visitor[part] = fns;
      }
    }
    verify$1(visitor);
    delete visitor.__esModule;
    ensureEntranceObjects(visitor);
    ensureCallbackArrays(visitor);
    for (var _i2 = 0, _Object$keys = Object.keys(visitor); _i2 < _Object$keys.length; _i2++) {
      var _nodeType = _Object$keys[_i2];
      if (shouldIgnoreKey(_nodeType)) continue;
      if (!isVirtualType(_nodeType)) continue;
      var _fns = visitor[_nodeType];
      for (var _i3 = 0, _Object$keys2 = Object.keys(_fns); _i3 < _Object$keys2.length; _i3++) {
        var type = _Object$keys2[_i3];
        _fns[type] = wrapCheck(_nodeType, _fns[type]);
      }
      delete visitor[_nodeType];
      var types = virtualTypes[_nodeType];
      if (types !== null) {
        for (var _iterator2 = _createForOfIteratorHelperLoose(types), _step2; !(_step2 = _iterator2()).done;) {
          var _type = _step2.value;
          if (visitor[_type]) {
            mergePair(visitor[_type], _fns);
          } else {
            visitor[_type] = _fns;
          }
        }
      } else {
        mergePair(visitor, _fns);
      }
    }
    for (var _i4 = 0, _arr2 = Object.keys(visitor); _i4 < _arr2.length; _i4++) {
      var _nodeType2 = _arr2[_i4];
      if (shouldIgnoreKey(_nodeType2)) continue;
      var aliases = FLIPPED_ALIAS_KEYS$2[_nodeType2];
      if (_nodeType2 in DEPRECATED_KEYS) {
        var deprecatedKey = DEPRECATED_KEYS[_nodeType2];
        deprecationWarning(_nodeType2, deprecatedKey, "Visitor ");
        aliases = [deprecatedKey];
      } else if (_nodeType2 in DEPRECATED_ALIASES) {
        var deprecatedAlias = DEPRECATED_ALIASES[_nodeType2];
        deprecationWarning(_nodeType2, deprecatedAlias, "Visitor ");
        aliases = FLIPPED_ALIAS_KEYS$2[deprecatedAlias];
      }
      if (!aliases) continue;
      var _fns2 = visitor[_nodeType2];
      delete visitor[_nodeType2];
      for (var _iterator3 = _createForOfIteratorHelperLoose(aliases), _step3; !(_step3 = _iterator3()).done;) {
        var alias = _step3.value;
        var existing = visitor[alias];
        if (existing) {
          mergePair(existing, _fns2);
        } else {
          visitor[alias] = Object.assign({}, _fns2);
        }
      }
    }
    for (var _i5 = 0, _Object$keys3 = Object.keys(visitor); _i5 < _Object$keys3.length; _i5++) {
      var _nodeType3 = _Object$keys3[_i5];
      if (shouldIgnoreKey(_nodeType3)) continue;
      ensureCallbackArrays(visitor[_nodeType3]);
    }
    return visitor;
  }
  function verify$1(visitor) {
    if (visitor._verified) return;
    if (typeof visitor === "function") {
      throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?");
    }
    for (var _i6 = 0, _arr3 = Object.keys(visitor); _i6 < _arr3.length; _i6++) {
      var nodeType = _arr3[_i6];
      if (nodeType === "enter" || nodeType === "exit") {
        validateVisitorMethods(nodeType, visitor[nodeType]);
      }
      if (shouldIgnoreKey(nodeType)) continue;
      if (!TYPES.includes(nodeType)) {
        throw new Error("You gave us a visitor for the node type " + nodeType + " but it's not a valid type in @babel/traverse " + "7.25.6");
      }
      var _visitors = visitor[nodeType];
      if (typeof _visitors === "object") {
        for (var _i7 = 0, _Object$keys4 = Object.keys(_visitors); _i7 < _Object$keys4.length; _i7++) {
          var visitorKey = _Object$keys4[_i7];
          if (visitorKey === "enter" || visitorKey === "exit") {
            validateVisitorMethods(nodeType + "." + visitorKey, _visitors[visitorKey]);
          } else {
            throw new Error("You passed `traverse()` a visitor object with the property " + (nodeType + " that has the invalid property " + visitorKey));
          }
        }
      }
    }
    visitor._verified = true;
  }
  function validateVisitorMethods(path, val) {
    var fns = [].concat(val);
    for (var _iterator4 = _createForOfIteratorHelperLoose(fns), _step4; !(_step4 = _iterator4()).done;) {
      var fn = _step4.value;
      if (typeof fn !== "function") {
        throw new TypeError("Non-function found defined in " + path + " with type " + typeof fn);
      }
    }
  }
  function merge(visitors, states, wrapper) {
    if (states === void 0) {
      states = [];
    }
    var mergedVisitor = {
      _verified: true,
      _exploded: true
    };
    {
      Object.defineProperty(mergedVisitor, "_exploded", {
        enumerable: false
      });
      Object.defineProperty(mergedVisitor, "_verified", {
        enumerable: false
      });
    }
    for (var i = 0; i < visitors.length; i++) {
      var visitor = explode$1(visitors[i]);
      var state = states[i];
      var topVisitor = visitor;
      if (state || wrapper) {
        topVisitor = wrapWithStateOrWrapper(topVisitor, state, wrapper);
      }
      mergePair(mergedVisitor, topVisitor);
      for (var _i8 = 0, _arr4 = Object.keys(visitor); _i8 < _arr4.length; _i8++) {
        var key = _arr4[_i8];
        if (shouldIgnoreKey(key)) continue;
        var typeVisitor = visitor[key];
        if (state || wrapper) {
          typeVisitor = wrapWithStateOrWrapper(typeVisitor, state, wrapper);
        }
        var nodeVisitor = mergedVisitor[key] || (mergedVisitor[key] = {});
        mergePair(nodeVisitor, typeVisitor);
      }
    }
    return mergedVisitor;
  }
  function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
    var newVisitor = {};
    var _loop = function _loop() {
      var phase = _arr5[_i9];
      var fns = oldVisitor[phase];
      if (!Array.isArray(fns)) return 1;
      fns = fns.map(function (fn) {
        var newFn = fn;
        if (state) {
          newFn = function newFn(path) {
            fn.call(state, path, state);
          };
        }
        if (wrapper) {
          newFn = wrapper(state == null ? void 0 : state.key, phase, newFn);
        }
        if (newFn !== fn) {
          newFn.toString = function () {
            return fn.toString();
          };
        }
        return newFn;
      });
      newVisitor[phase] = fns;
    };
    for (var _i9 = 0, _arr5 = ["enter", "exit"]; _i9 < _arr5.length; _i9++) {
      if (_loop()) continue;
    }
    return newVisitor;
  }
  function ensureEntranceObjects(obj) {
    for (var _i10 = 0, _arr6 = Object.keys(obj); _i10 < _arr6.length; _i10++) {
      var key = _arr6[_i10];
      if (shouldIgnoreKey(key)) continue;
      var fns = obj[key];
      if (typeof fns === "function") {
        obj[key] = {
          enter: fns
        };
      }
    }
  }
  function ensureCallbackArrays(obj) {
    if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
    if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
  }
  function wrapCheck(nodeType, fn) {
    var fnKey = "is" + nodeType;
    var validator = NodePath_virtual_types_validator[fnKey];
    var newFn = function newFn(path) {
      if (validator.call(path)) {
        return fn.apply(this, arguments);
      }
    };
    newFn.toString = function () {
      return fn.toString();
    };
    return newFn;
  }
  function shouldIgnoreKey(key) {
    if (key[0] === "_") return true;
    if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
    if (key === "denylist" || key === "noScope" || key === "skipKeys") {
      return true;
    }
    {
      if (key === "blacklist") {
        return true;
      }
    }
    return false;
  }
  function mergePair(dest, src) {
    for (var _i11 = 0, _arr7 = ["enter", "exit"]; _i11 < _arr7.length; _i11++) {
      var phase = _arr7[_i11];
      if (!src[phase]) continue;
      dest[phase] = [].concat(dest[phase] || [], src[phase]);
    }
  }
  var _environmentVisitor = {
    FunctionParent: function FunctionParent(path) {
      if (path.isArrowFunctionExpression()) return;
      path.skip();
      if (path.isMethod()) {
        if (!path.requeueComputedKeyAndDecorators) {
          requeueComputedKeyAndDecorators.call(path);
        } else {
          path.requeueComputedKeyAndDecorators();
        }
      }
    },
    Property: function Property(path) {
      if (path.isObjectProperty()) return;
      path.skip();
      if (!path.requeueComputedKeyAndDecorators) {
        requeueComputedKeyAndDecorators.call(path);
      } else {
        path.requeueComputedKeyAndDecorators();
      }
    }
  };
  function environmentVisitor(visitor) {
    return merge([_environmentVisitor, visitor]);
  }

  var visitors$2 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    environmentVisitor: environmentVisitor,
    explode: explode$1,
    isExplodedVisitor: isExplodedVisitor,
    merge: merge,
    verify: verify$1
  });

  var getAssignmentIdentifiers$1 = getAssignmentIdentifiers$2;
  var renameVisitor = {
    ReferencedIdentifier: function ReferencedIdentifier(_ref, state) {
      var node = _ref.node;
      if (node.name === state.oldName) {
        node.name = state.newName;
      }
    },
    Scope: function Scope(path, state) {
      if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) {
        path.skip();
        if (path.isMethod()) {
          if (!path.requeueComputedKeyAndDecorators) {
            requeueComputedKeyAndDecorators.call(path);
          } else {
            path.requeueComputedKeyAndDecorators();
          }
        }
      }
    },
    ObjectProperty: function ObjectProperty(_ref2, state) {
      var node = _ref2.node,
        scope = _ref2.scope;
      var _ref3 = node.key,
        name = _ref3.name;
      if (node.shorthand && (name === state.oldName || name === state.newName) && scope.getBindingIdentifier(name) === state.binding.identifier) {
        node.shorthand = false;
        {
          var _node$extra;
          if ((_node$extra = node.extra) != null && _node$extra.shorthand) node.extra.shorthand = false;
        }
      }
    },
    "AssignmentExpression|Declaration|VariableDeclarator": function AssignmentExpressionDeclarationVariableDeclarator(path, state) {
      if (path.isVariableDeclaration()) return;
      var ids = path.isAssignmentExpression() ? getAssignmentIdentifiers$1(path.node) : path.getOuterBindingIdentifiers();
      for (var name in ids) {
        if (name === state.oldName) ids[name].name = state.newName;
      }
    }
  };
  var Renamer = function () {
    function Renamer(binding, oldName, newName) {
      this.newName = newName;
      this.oldName = oldName;
      this.binding = binding;
    }
    var _proto = Renamer.prototype;
    _proto.maybeConvertFromExportDeclaration = function maybeConvertFromExportDeclaration(parentDeclar) {
      var maybeExportDeclar = parentDeclar.parentPath;
      if (!maybeExportDeclar.isExportDeclaration()) {
        return;
      }
      if (maybeExportDeclar.isExportDefaultDeclaration()) {
        var declaration = maybeExportDeclar.node.declaration;
        if (isDeclaration(declaration) && !declaration.id) {
          return;
        }
      }
      if (maybeExportDeclar.isExportAllDeclaration()) {
        return;
      }
      maybeExportDeclar.splitExportDeclaration();
    };
    _proto.maybeConvertFromClassFunctionDeclaration = function maybeConvertFromClassFunctionDeclaration(path) {
      return path;
    };
    _proto.maybeConvertFromClassFunctionExpression = function maybeConvertFromClassFunctionExpression(path) {
      return path;
    };
    _proto.rename = function rename() {
      var binding = this.binding,
        oldName = this.oldName,
        newName = this.newName;
      var scope = binding.scope,
        path = binding.path;
      var parentDeclar = path.find(function (path) {
        return path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression();
      });
      if (parentDeclar) {
        var bindingIds = parentDeclar.getOuterBindingIdentifiers();
        if (bindingIds[oldName] === binding.identifier) {
          this.maybeConvertFromExportDeclaration(parentDeclar);
        }
      }
      var blockToTraverse = arguments[0] || scope.block;
      var skipKeys = {
        discriminant: true
      };
      if (isMethod$1(blockToTraverse)) {
        if (blockToTraverse.computed) {
          skipKeys.key = true;
        }
        if (!isObjectMethod(blockToTraverse)) {
          skipKeys.decorators = true;
        }
      }
      traverseNode(blockToTraverse, explode$1(renameVisitor), scope, this, scope.path, skipKeys);
      if (!arguments[0]) {
        scope.removeOwnBinding(oldName);
        scope.bindings[newName] = binding;
        this.binding.identifier.name = newName;
      }
      if (parentDeclar) {
        this.maybeConvertFromClassFunctionDeclaration(path);
        this.maybeConvertFromClassFunctionExpression(path);
      }
    };
    return _createClass(Renamer);
  }();

  var Binding = function () {
    function Binding(_ref) {
      var identifier = _ref.identifier,
        scope = _ref.scope,
        path = _ref.path,
        kind = _ref.kind;
      this.identifier = void 0;
      this.scope = void 0;
      this.path = void 0;
      this.kind = void 0;
      this.constantViolations = [];
      this.constant = true;
      this.referencePaths = [];
      this.referenced = false;
      this.references = 0;
      this.identifier = identifier;
      this.scope = scope;
      this.path = path;
      this.kind = kind;
      if ((kind === "var" || kind === "hoisted") && isDeclaredInLoop(path)) {
        this.reassign(path);
      }
      this.clearValue();
    }
    var _proto = Binding.prototype;
    _proto.deoptValue = function deoptValue() {
      this.clearValue();
      this.hasDeoptedValue = true;
    };
    _proto.setValue = function setValue(value) {
      if (this.hasDeoptedValue) return;
      this.hasValue = true;
      this.value = value;
    };
    _proto.clearValue = function clearValue() {
      this.hasDeoptedValue = false;
      this.hasValue = false;
      this.value = null;
    };
    _proto.reassign = function reassign(path) {
      this.constant = false;
      if (this.constantViolations.includes(path)) {
        return;
      }
      this.constantViolations.push(path);
    };
    _proto.reference = function reference(path) {
      if (this.referencePaths.includes(path)) {
        return;
      }
      this.referenced = true;
      this.references++;
      this.referencePaths.push(path);
    };
    _proto.dereference = function dereference() {
      this.references--;
      this.referenced = !!this.references;
    };
    return _createClass(Binding);
  }();
  function isDeclaredInLoop(path) {
    for (var parentPath = path.parentPath, key = path.key; parentPath; _parentPath = parentPath, parentPath = _parentPath.parentPath, key = _parentPath.key, _parentPath) {
      var _parentPath;
      if (parentPath.isFunctionParent()) return false;
      if (parentPath.isWhile() || parentPath.isForXStatement() || parentPath.isForStatement() && key === "body") {
        return true;
      }
    }
    return false;
  }

  var builtin = {
  	"Array": false,
  	"ArrayBuffer": false,
  	Atomics: false,
  	BigInt: false,
  	BigInt64Array: false,
  	BigUint64Array: false,
  	"Boolean": false,
  	constructor: false,
  	"DataView": false,
  	"Date": false,
  	"decodeURI": false,
  	"decodeURIComponent": false,
  	"encodeURI": false,
  	"encodeURIComponent": false,
  	"Error": false,
  	"escape": false,
  	"eval": false,
  	"EvalError": false,
  	"Float32Array": false,
  	"Float64Array": false,
  	"Function": false,
  	globalThis: false,
  	hasOwnProperty: false,
  	"Infinity": false,
  	"Int16Array": false,
  	"Int32Array": false,
  	"Int8Array": false,
  	"isFinite": false,
  	"isNaN": false,
  	isPrototypeOf: false,
  	"JSON": false,
  	"Map": false,
  	"Math": false,
  	"NaN": false,
  	"Number": false,
  	"Object": false,
  	"parseFloat": false,
  	"parseInt": false,
  	"Promise": false,
  	propertyIsEnumerable: false,
  	"Proxy": false,
  	"RangeError": false,
  	"ReferenceError": false,
  	"Reflect": false,
  	"RegExp": false,
  	"Set": false,
  	SharedArrayBuffer: false,
  	"String": false,
  	"Symbol": false,
  	"SyntaxError": false,
  	toLocaleString: false,
  	toString: false,
  	"TypeError": false,
  	"Uint16Array": false,
  	"Uint32Array": false,
  	"Uint8Array": false,
  	"Uint8ClampedArray": false,
  	"undefined": false,
  	"unescape": false,
  	"URIError": false,
  	valueOf: false,
  	"WeakMap": false,
  	"WeakSet": false
  };
  var es5 = {
  	"Array": false,
  	"Boolean": false,
  	constructor: false,
  	"Date": false,
  	"decodeURI": false,
  	"decodeURIComponent": false,
  	"encodeURI": false,
  	"encodeURIComponent": false,
  	"Error": false,
  	"escape": false,
  	"eval": false,
  	"EvalError": false,
  	"Function": false,
  	hasOwnProperty: false,
  	"Infinity": false,
  	"isFinite": false,
  	"isNaN": false,
  	isPrototypeOf: false,
  	"JSON": false,
  	"Math": false,
  	"NaN": false,
  	"Number": false,
  	"Object": false,
  	"parseFloat": false,
  	"parseInt": false,
  	propertyIsEnumerable: false,
  	"RangeError": false,
  	"ReferenceError": false,
  	"RegExp": false,
  	"String": false,
  	"SyntaxError": false,
  	toLocaleString: false,
  	toString: false,
  	"TypeError": false,
  	"undefined": false,
  	"unescape": false,
  	"URIError": false,
  	valueOf: false
  };
  var es2015 = {
  	"Array": false,
  	"ArrayBuffer": false,
  	"Boolean": false,
  	constructor: false,
  	"DataView": false,
  	"Date": false,
  	"decodeURI": false,
  	"decodeURIComponent": false,
  	"encodeURI": false,
  	"encodeURIComponent": false,
  	"Error": false,
  	"escape": false,
  	"eval": false,
  	"EvalError": false,
  	"Float32Array": false,
  	"Float64Array": false,
  	"Function": false,
  	hasOwnProperty: false,
  	"Infinity": false,
  	"Int16Array": false,
  	"Int32Array": false,
  	"Int8Array": false,
  	"isFinite": false,
  	"isNaN": false,
  	isPrototypeOf: false,
  	"JSON": false,
  	"Map": false,
  	"Math": false,
  	"NaN": false,
  	"Number": false,
  	"Object": false,
  	"parseFloat": false,
  	"parseInt": false,
  	"Promise": false,
  	propertyIsEnumerable: false,
  	"Proxy": false,
  	"RangeError": false,
  	"ReferenceError": false,
  	"Reflect": false,
  	"RegExp": false,
  	"Set": false,
  	"String": false,
  	"Symbol": false,
  	"SyntaxError": false,
  	toLocaleString: false,
  	toString: false,
  	"TypeError": false,
  	"Uint16Array": false,
  	"Uint32Array": false,
  	"Uint8Array": false,
  	"Uint8ClampedArray": false,
  	"undefined": false,
  	"unescape": false,
  	"URIError": false,
  	valueOf: false,
  	"WeakMap": false,
  	"WeakSet": false
  };
  var es2017 = {
  	"Array": false,
  	"ArrayBuffer": false,
  	Atomics: false,
  	"Boolean": false,
  	constructor: false,
  	"DataView": false,
  	"Date": false,
  	"decodeURI": false,
  	"decodeURIComponent": false,
  	"encodeURI": false,
  	"encodeURIComponent": false,
  	"Error": false,
  	"escape": false,
  	"eval": false,
  	"EvalError": false,
  	"Float32Array": false,
  	"Float64Array": false,
  	"Function": false,
  	hasOwnProperty: false,
  	"Infinity": false,
  	"Int16Array": false,
  	"Int32Array": false,
  	"Int8Array": false,
  	"isFinite": false,
  	"isNaN": false,
  	isPrototypeOf: false,
  	"JSON": false,
  	"Map": false,
  	"Math": false,
  	"NaN": false,
  	"Number": false,
  	"Object": false,
  	"parseFloat": false,
  	"parseInt": false,
  	"Promise": false,
  	propertyIsEnumerable: false,
  	"Proxy": false,
  	"RangeError": false,
  	"ReferenceError": false,
  	"Reflect": false,
  	"RegExp": false,
  	"Set": false,
  	SharedArrayBuffer: false,
  	"String": false,
  	"Symbol": false,
  	"SyntaxError": false,
  	toLocaleString: false,
  	toString: false,
  	"TypeError": false,
  	"Uint16Array": false,
  	"Uint32Array": false,
  	"Uint8Array": false,
  	"Uint8ClampedArray": false,
  	"undefined": false,
  	"unescape": false,
  	"URIError": false,
  	valueOf: false,
  	"WeakMap": false,
  	"WeakSet": false
  };
  var browser$1 = {
  	AbortController: false,
  	AbortSignal: false,
  	addEventListener: false,
  	alert: false,
  	AnalyserNode: false,
  	Animation: false,
  	AnimationEffectReadOnly: false,
  	AnimationEffectTiming: false,
  	AnimationEffectTimingReadOnly: false,
  	AnimationEvent: false,
  	AnimationPlaybackEvent: false,
  	AnimationTimeline: false,
  	applicationCache: false,
  	ApplicationCache: false,
  	ApplicationCacheErrorEvent: false,
  	atob: false,
  	Attr: false,
  	Audio: false,
  	AudioBuffer: false,
  	AudioBufferSourceNode: false,
  	AudioContext: false,
  	AudioDestinationNode: false,
  	AudioListener: false,
  	AudioNode: false,
  	AudioParam: false,
  	AudioProcessingEvent: false,
  	AudioScheduledSourceNode: false,
  	"AudioWorkletGlobalScope ": false,
  	AudioWorkletNode: false,
  	AudioWorkletProcessor: false,
  	BarProp: false,
  	BaseAudioContext: false,
  	BatteryManager: false,
  	BeforeUnloadEvent: false,
  	BiquadFilterNode: false,
  	Blob: false,
  	BlobEvent: false,
  	blur: false,
  	BroadcastChannel: false,
  	btoa: false,
  	BudgetService: false,
  	ByteLengthQueuingStrategy: false,
  	Cache: false,
  	caches: false,
  	CacheStorage: false,
  	cancelAnimationFrame: false,
  	cancelIdleCallback: false,
  	CanvasCaptureMediaStreamTrack: false,
  	CanvasGradient: false,
  	CanvasPattern: false,
  	CanvasRenderingContext2D: false,
  	ChannelMergerNode: false,
  	ChannelSplitterNode: false,
  	CharacterData: false,
  	clearInterval: false,
  	clearTimeout: false,
  	clientInformation: false,
  	ClipboardEvent: false,
  	close: false,
  	closed: false,
  	CloseEvent: false,
  	Comment: false,
  	CompositionEvent: false,
  	confirm: false,
  	console: false,
  	ConstantSourceNode: false,
  	ConvolverNode: false,
  	CountQueuingStrategy: false,
  	createImageBitmap: false,
  	Credential: false,
  	CredentialsContainer: false,
  	crypto: false,
  	Crypto: false,
  	CryptoKey: false,
  	CSS: false,
  	CSSConditionRule: false,
  	CSSFontFaceRule: false,
  	CSSGroupingRule: false,
  	CSSImportRule: false,
  	CSSKeyframeRule: false,
  	CSSKeyframesRule: false,
  	CSSMediaRule: false,
  	CSSNamespaceRule: false,
  	CSSPageRule: false,
  	CSSRule: false,
  	CSSRuleList: false,
  	CSSStyleDeclaration: false,
  	CSSStyleRule: false,
  	CSSStyleSheet: false,
  	CSSSupportsRule: false,
  	CustomElementRegistry: false,
  	customElements: false,
  	CustomEvent: false,
  	DataTransfer: false,
  	DataTransferItem: false,
  	DataTransferItemList: false,
  	defaultstatus: false,
  	defaultStatus: false,
  	DelayNode: false,
  	DeviceMotionEvent: false,
  	DeviceOrientationEvent: false,
  	devicePixelRatio: false,
  	dispatchEvent: false,
  	document: false,
  	Document: false,
  	DocumentFragment: false,
  	DocumentType: false,
  	DOMError: false,
  	DOMException: false,
  	DOMImplementation: false,
  	DOMMatrix: false,
  	DOMMatrixReadOnly: false,
  	DOMParser: false,
  	DOMPoint: false,
  	DOMPointReadOnly: false,
  	DOMQuad: false,
  	DOMRect: false,
  	DOMRectReadOnly: false,
  	DOMStringList: false,
  	DOMStringMap: false,
  	DOMTokenList: false,
  	DragEvent: false,
  	DynamicsCompressorNode: false,
  	Element: false,
  	ErrorEvent: false,
  	event: false,
  	Event: false,
  	EventSource: false,
  	EventTarget: false,
  	external: false,
  	fetch: false,
  	File: false,
  	FileList: false,
  	FileReader: false,
  	find: false,
  	focus: false,
  	FocusEvent: false,
  	FontFace: false,
  	FontFaceSetLoadEvent: false,
  	FormData: false,
  	frameElement: false,
  	frames: false,
  	GainNode: false,
  	Gamepad: false,
  	GamepadButton: false,
  	GamepadEvent: false,
  	getComputedStyle: false,
  	getSelection: false,
  	HashChangeEvent: false,
  	Headers: false,
  	history: false,
  	History: false,
  	HTMLAllCollection: false,
  	HTMLAnchorElement: false,
  	HTMLAreaElement: false,
  	HTMLAudioElement: false,
  	HTMLBaseElement: false,
  	HTMLBodyElement: false,
  	HTMLBRElement: false,
  	HTMLButtonElement: false,
  	HTMLCanvasElement: false,
  	HTMLCollection: false,
  	HTMLContentElement: false,
  	HTMLDataElement: false,
  	HTMLDataListElement: false,
  	HTMLDetailsElement: false,
  	HTMLDialogElement: false,
  	HTMLDirectoryElement: false,
  	HTMLDivElement: false,
  	HTMLDListElement: false,
  	HTMLDocument: false,
  	HTMLElement: false,
  	HTMLEmbedElement: false,
  	HTMLFieldSetElement: false,
  	HTMLFontElement: false,
  	HTMLFormControlsCollection: false,
  	HTMLFormElement: false,
  	HTMLFrameElement: false,
  	HTMLFrameSetElement: false,
  	HTMLHeadElement: false,
  	HTMLHeadingElement: false,
  	HTMLHRElement: false,
  	HTMLHtmlElement: false,
  	HTMLIFrameElement: false,
  	HTMLImageElement: false,
  	HTMLInputElement: false,
  	HTMLLabelElement: false,
  	HTMLLegendElement: false,
  	HTMLLIElement: false,
  	HTMLLinkElement: false,
  	HTMLMapElement: false,
  	HTMLMarqueeElement: false,
  	HTMLMediaElement: false,
  	HTMLMenuElement: false,
  	HTMLMetaElement: false,
  	HTMLMeterElement: false,
  	HTMLModElement: false,
  	HTMLObjectElement: false,
  	HTMLOListElement: false,
  	HTMLOptGroupElement: false,
  	HTMLOptionElement: false,
  	HTMLOptionsCollection: false,
  	HTMLOutputElement: false,
  	HTMLParagraphElement: false,
  	HTMLParamElement: false,
  	HTMLPictureElement: false,
  	HTMLPreElement: false,
  	HTMLProgressElement: false,
  	HTMLQuoteElement: false,
  	HTMLScriptElement: false,
  	HTMLSelectElement: false,
  	HTMLShadowElement: false,
  	HTMLSlotElement: false,
  	HTMLSourceElement: false,
  	HTMLSpanElement: false,
  	HTMLStyleElement: false,
  	HTMLTableCaptionElement: false,
  	HTMLTableCellElement: false,
  	HTMLTableColElement: false,
  	HTMLTableElement: false,
  	HTMLTableRowElement: false,
  	HTMLTableSectionElement: false,
  	HTMLTemplateElement: false,
  	HTMLTextAreaElement: false,
  	HTMLTimeElement: false,
  	HTMLTitleElement: false,
  	HTMLTrackElement: false,
  	HTMLUListElement: false,
  	HTMLUnknownElement: false,
  	HTMLVideoElement: false,
  	IDBCursor: false,
  	IDBCursorWithValue: false,
  	IDBDatabase: false,
  	IDBFactory: false,
  	IDBIndex: false,
  	IDBKeyRange: false,
  	IDBObjectStore: false,
  	IDBOpenDBRequest: false,
  	IDBRequest: false,
  	IDBTransaction: false,
  	IDBVersionChangeEvent: false,
  	IdleDeadline: false,
  	IIRFilterNode: false,
  	Image: false,
  	ImageBitmap: false,
  	ImageBitmapRenderingContext: false,
  	ImageCapture: false,
  	ImageData: false,
  	indexedDB: false,
  	innerHeight: false,
  	innerWidth: false,
  	InputEvent: false,
  	IntersectionObserver: false,
  	IntersectionObserverEntry: false,
  	"Intl": false,
  	isSecureContext: false,
  	KeyboardEvent: false,
  	KeyframeEffect: false,
  	KeyframeEffectReadOnly: false,
  	length: false,
  	localStorage: false,
  	location: true,
  	Location: false,
  	locationbar: false,
  	matchMedia: false,
  	MediaDeviceInfo: false,
  	MediaDevices: false,
  	MediaElementAudioSourceNode: false,
  	MediaEncryptedEvent: false,
  	MediaError: false,
  	MediaKeyMessageEvent: false,
  	MediaKeySession: false,
  	MediaKeyStatusMap: false,
  	MediaKeySystemAccess: false,
  	MediaList: false,
  	MediaQueryList: false,
  	MediaQueryListEvent: false,
  	MediaRecorder: false,
  	MediaSettingsRange: false,
  	MediaSource: false,
  	MediaStream: false,
  	MediaStreamAudioDestinationNode: false,
  	MediaStreamAudioSourceNode: false,
  	MediaStreamEvent: false,
  	MediaStreamTrack: false,
  	MediaStreamTrackEvent: false,
  	menubar: false,
  	MessageChannel: false,
  	MessageEvent: false,
  	MessagePort: false,
  	MIDIAccess: false,
  	MIDIConnectionEvent: false,
  	MIDIInput: false,
  	MIDIInputMap: false,
  	MIDIMessageEvent: false,
  	MIDIOutput: false,
  	MIDIOutputMap: false,
  	MIDIPort: false,
  	MimeType: false,
  	MimeTypeArray: false,
  	MouseEvent: false,
  	moveBy: false,
  	moveTo: false,
  	MutationEvent: false,
  	MutationObserver: false,
  	MutationRecord: false,
  	name: false,
  	NamedNodeMap: false,
  	NavigationPreloadManager: false,
  	navigator: false,
  	Navigator: false,
  	NetworkInformation: false,
  	Node: false,
  	NodeFilter: false,
  	NodeIterator: false,
  	NodeList: false,
  	Notification: false,
  	OfflineAudioCompletionEvent: false,
  	OfflineAudioContext: false,
  	offscreenBuffering: false,
  	OffscreenCanvas: true,
  	onabort: true,
  	onafterprint: true,
  	onanimationend: true,
  	onanimationiteration: true,
  	onanimationstart: true,
  	onappinstalled: true,
  	onauxclick: true,
  	onbeforeinstallprompt: true,
  	onbeforeprint: true,
  	onbeforeunload: true,
  	onblur: true,
  	oncancel: true,
  	oncanplay: true,
  	oncanplaythrough: true,
  	onchange: true,
  	onclick: true,
  	onclose: true,
  	oncontextmenu: true,
  	oncuechange: true,
  	ondblclick: true,
  	ondevicemotion: true,
  	ondeviceorientation: true,
  	ondeviceorientationabsolute: true,
  	ondrag: true,
  	ondragend: true,
  	ondragenter: true,
  	ondragleave: true,
  	ondragover: true,
  	ondragstart: true,
  	ondrop: true,
  	ondurationchange: true,
  	onemptied: true,
  	onended: true,
  	onerror: true,
  	onfocus: true,
  	ongotpointercapture: true,
  	onhashchange: true,
  	oninput: true,
  	oninvalid: true,
  	onkeydown: true,
  	onkeypress: true,
  	onkeyup: true,
  	onlanguagechange: true,
  	onload: true,
  	onloadeddata: true,
  	onloadedmetadata: true,
  	onloadstart: true,
  	onlostpointercapture: true,
  	onmessage: true,
  	onmessageerror: true,
  	onmousedown: true,
  	onmouseenter: true,
  	onmouseleave: true,
  	onmousemove: true,
  	onmouseout: true,
  	onmouseover: true,
  	onmouseup: true,
  	onmousewheel: true,
  	onoffline: true,
  	ononline: true,
  	onpagehide: true,
  	onpageshow: true,
  	onpause: true,
  	onplay: true,
  	onplaying: true,
  	onpointercancel: true,
  	onpointerdown: true,
  	onpointerenter: true,
  	onpointerleave: true,
  	onpointermove: true,
  	onpointerout: true,
  	onpointerover: true,
  	onpointerup: true,
  	onpopstate: true,
  	onprogress: true,
  	onratechange: true,
  	onrejectionhandled: true,
  	onreset: true,
  	onresize: true,
  	onscroll: true,
  	onsearch: true,
  	onseeked: true,
  	onseeking: true,
  	onselect: true,
  	onstalled: true,
  	onstorage: true,
  	onsubmit: true,
  	onsuspend: true,
  	ontimeupdate: true,
  	ontoggle: true,
  	ontransitionend: true,
  	onunhandledrejection: true,
  	onunload: true,
  	onvolumechange: true,
  	onwaiting: true,
  	onwheel: true,
  	open: false,
  	openDatabase: false,
  	opener: false,
  	Option: false,
  	origin: false,
  	OscillatorNode: false,
  	outerHeight: false,
  	outerWidth: false,
  	PageTransitionEvent: false,
  	pageXOffset: false,
  	pageYOffset: false,
  	PannerNode: false,
  	parent: false,
  	Path2D: false,
  	PaymentAddress: false,
  	PaymentRequest: false,
  	PaymentRequestUpdateEvent: false,
  	PaymentResponse: false,
  	performance: false,
  	Performance: false,
  	PerformanceEntry: false,
  	PerformanceLongTaskTiming: false,
  	PerformanceMark: false,
  	PerformanceMeasure: false,
  	PerformanceNavigation: false,
  	PerformanceNavigationTiming: false,
  	PerformanceObserver: false,
  	PerformanceObserverEntryList: false,
  	PerformancePaintTiming: false,
  	PerformanceResourceTiming: false,
  	PerformanceTiming: false,
  	PeriodicWave: false,
  	Permissions: false,
  	PermissionStatus: false,
  	personalbar: false,
  	PhotoCapabilities: false,
  	Plugin: false,
  	PluginArray: false,
  	PointerEvent: false,
  	PopStateEvent: false,
  	postMessage: false,
  	Presentation: false,
  	PresentationAvailability: false,
  	PresentationConnection: false,
  	PresentationConnectionAvailableEvent: false,
  	PresentationConnectionCloseEvent: false,
  	PresentationConnectionList: false,
  	PresentationReceiver: false,
  	PresentationRequest: false,
  	print: false,
  	ProcessingInstruction: false,
  	ProgressEvent: false,
  	PromiseRejectionEvent: false,
  	prompt: false,
  	PushManager: false,
  	PushSubscription: false,
  	PushSubscriptionOptions: false,
  	queueMicrotask: false,
  	RadioNodeList: false,
  	Range: false,
  	ReadableStream: false,
  	registerProcessor: false,
  	RemotePlayback: false,
  	removeEventListener: false,
  	Request: false,
  	requestAnimationFrame: false,
  	requestIdleCallback: false,
  	resizeBy: false,
  	ResizeObserver: false,
  	ResizeObserverEntry: false,
  	resizeTo: false,
  	Response: false,
  	RTCCertificate: false,
  	RTCDataChannel: false,
  	RTCDataChannelEvent: false,
  	RTCDtlsTransport: false,
  	RTCIceCandidate: false,
  	RTCIceGatherer: false,
  	RTCIceTransport: false,
  	RTCPeerConnection: false,
  	RTCPeerConnectionIceEvent: false,
  	RTCRtpContributingSource: false,
  	RTCRtpReceiver: false,
  	RTCRtpSender: false,
  	RTCSctpTransport: false,
  	RTCSessionDescription: false,
  	RTCStatsReport: false,
  	RTCTrackEvent: false,
  	screen: false,
  	Screen: false,
  	screenLeft: false,
  	ScreenOrientation: false,
  	screenTop: false,
  	screenX: false,
  	screenY: false,
  	ScriptProcessorNode: false,
  	scroll: false,
  	scrollbars: false,
  	scrollBy: false,
  	scrollTo: false,
  	scrollX: false,
  	scrollY: false,
  	SecurityPolicyViolationEvent: false,
  	Selection: false,
  	self: false,
  	ServiceWorker: false,
  	ServiceWorkerContainer: false,
  	ServiceWorkerRegistration: false,
  	sessionStorage: false,
  	setInterval: false,
  	setTimeout: false,
  	ShadowRoot: false,
  	SharedWorker: false,
  	SourceBuffer: false,
  	SourceBufferList: false,
  	speechSynthesis: false,
  	SpeechSynthesisEvent: false,
  	SpeechSynthesisUtterance: false,
  	StaticRange: false,
  	status: false,
  	statusbar: false,
  	StereoPannerNode: false,
  	stop: false,
  	Storage: false,
  	StorageEvent: false,
  	StorageManager: false,
  	styleMedia: false,
  	StyleSheet: false,
  	StyleSheetList: false,
  	SubtleCrypto: false,
  	SVGAElement: false,
  	SVGAngle: false,
  	SVGAnimatedAngle: false,
  	SVGAnimatedBoolean: false,
  	SVGAnimatedEnumeration: false,
  	SVGAnimatedInteger: false,
  	SVGAnimatedLength: false,
  	SVGAnimatedLengthList: false,
  	SVGAnimatedNumber: false,
  	SVGAnimatedNumberList: false,
  	SVGAnimatedPreserveAspectRatio: false,
  	SVGAnimatedRect: false,
  	SVGAnimatedString: false,
  	SVGAnimatedTransformList: false,
  	SVGAnimateElement: false,
  	SVGAnimateMotionElement: false,
  	SVGAnimateTransformElement: false,
  	SVGAnimationElement: false,
  	SVGCircleElement: false,
  	SVGClipPathElement: false,
  	SVGComponentTransferFunctionElement: false,
  	SVGDefsElement: false,
  	SVGDescElement: false,
  	SVGDiscardElement: false,
  	SVGElement: false,
  	SVGEllipseElement: false,
  	SVGFEBlendElement: false,
  	SVGFEColorMatrixElement: false,
  	SVGFEComponentTransferElement: false,
  	SVGFECompositeElement: false,
  	SVGFEConvolveMatrixElement: false,
  	SVGFEDiffuseLightingElement: false,
  	SVGFEDisplacementMapElement: false,
  	SVGFEDistantLightElement: false,
  	SVGFEDropShadowElement: false,
  	SVGFEFloodElement: false,
  	SVGFEFuncAElement: false,
  	SVGFEFuncBElement: false,
  	SVGFEFuncGElement: false,
  	SVGFEFuncRElement: false,
  	SVGFEGaussianBlurElement: false,
  	SVGFEImageElement: false,
  	SVGFEMergeElement: false,
  	SVGFEMergeNodeElement: false,
  	SVGFEMorphologyElement: false,
  	SVGFEOffsetElement: false,
  	SVGFEPointLightElement: false,
  	SVGFESpecularLightingElement: false,
  	SVGFESpotLightElement: false,
  	SVGFETileElement: false,
  	SVGFETurbulenceElement: false,
  	SVGFilterElement: false,
  	SVGForeignObjectElement: false,
  	SVGGElement: false,
  	SVGGeometryElement: false,
  	SVGGradientElement: false,
  	SVGGraphicsElement: false,
  	SVGImageElement: false,
  	SVGLength: false,
  	SVGLengthList: false,
  	SVGLinearGradientElement: false,
  	SVGLineElement: false,
  	SVGMarkerElement: false,
  	SVGMaskElement: false,
  	SVGMatrix: false,
  	SVGMetadataElement: false,
  	SVGMPathElement: false,
  	SVGNumber: false,
  	SVGNumberList: false,
  	SVGPathElement: false,
  	SVGPatternElement: false,
  	SVGPoint: false,
  	SVGPointList: false,
  	SVGPolygonElement: false,
  	SVGPolylineElement: false,
  	SVGPreserveAspectRatio: false,
  	SVGRadialGradientElement: false,
  	SVGRect: false,
  	SVGRectElement: false,
  	SVGScriptElement: false,
  	SVGSetElement: false,
  	SVGStopElement: false,
  	SVGStringList: false,
  	SVGStyleElement: false,
  	SVGSVGElement: false,
  	SVGSwitchElement: false,
  	SVGSymbolElement: false,
  	SVGTextContentElement: false,
  	SVGTextElement: false,
  	SVGTextPathElement: false,
  	SVGTextPositioningElement: false,
  	SVGTitleElement: false,
  	SVGTransform: false,
  	SVGTransformList: false,
  	SVGTSpanElement: false,
  	SVGUnitTypes: false,
  	SVGUseElement: false,
  	SVGViewElement: false,
  	TaskAttributionTiming: false,
  	Text: false,
  	TextDecoder: false,
  	TextEncoder: false,
  	TextEvent: false,
  	TextMetrics: false,
  	TextTrack: false,
  	TextTrackCue: false,
  	TextTrackCueList: false,
  	TextTrackList: false,
  	TimeRanges: false,
  	toolbar: false,
  	top: false,
  	Touch: false,
  	TouchEvent: false,
  	TouchList: false,
  	TrackEvent: false,
  	TransitionEvent: false,
  	TreeWalker: false,
  	UIEvent: false,
  	URL: false,
  	URLSearchParams: false,
  	ValidityState: false,
  	visualViewport: false,
  	VisualViewport: false,
  	VTTCue: false,
  	WaveShaperNode: false,
  	WebAssembly: false,
  	WebGL2RenderingContext: false,
  	WebGLActiveInfo: false,
  	WebGLBuffer: false,
  	WebGLContextEvent: false,
  	WebGLFramebuffer: false,
  	WebGLProgram: false,
  	WebGLQuery: false,
  	WebGLRenderbuffer: false,
  	WebGLRenderingContext: false,
  	WebGLSampler: false,
  	WebGLShader: false,
  	WebGLShaderPrecisionFormat: false,
  	WebGLSync: false,
  	WebGLTexture: false,
  	WebGLTransformFeedback: false,
  	WebGLUniformLocation: false,
  	WebGLVertexArrayObject: false,
  	WebSocket: false,
  	WheelEvent: false,
  	window: false,
  	Window: false,
  	Worker: false,
  	WritableStream: false,
  	XMLDocument: false,
  	XMLHttpRequest: false,
  	XMLHttpRequestEventTarget: false,
  	XMLHttpRequestUpload: false,
  	XMLSerializer: false,
  	XPathEvaluator: false,
  	XPathExpression: false,
  	XPathResult: false,
  	XSLTProcessor: false
  };
  var worker = {
  	addEventListener: false,
  	applicationCache: false,
  	atob: false,
  	Blob: false,
  	BroadcastChannel: false,
  	btoa: false,
  	Cache: false,
  	caches: false,
  	clearInterval: false,
  	clearTimeout: false,
  	close: true,
  	console: false,
  	fetch: false,
  	FileReaderSync: false,
  	FormData: false,
  	Headers: false,
  	IDBCursor: false,
  	IDBCursorWithValue: false,
  	IDBDatabase: false,
  	IDBFactory: false,
  	IDBIndex: false,
  	IDBKeyRange: false,
  	IDBObjectStore: false,
  	IDBOpenDBRequest: false,
  	IDBRequest: false,
  	IDBTransaction: false,
  	IDBVersionChangeEvent: false,
  	ImageData: false,
  	importScripts: true,
  	indexedDB: false,
  	location: false,
  	MessageChannel: false,
  	MessagePort: false,
  	name: false,
  	navigator: false,
  	Notification: false,
  	onclose: true,
  	onconnect: true,
  	onerror: true,
  	onlanguagechange: true,
  	onmessage: true,
  	onoffline: true,
  	ononline: true,
  	onrejectionhandled: true,
  	onunhandledrejection: true,
  	performance: false,
  	Performance: false,
  	PerformanceEntry: false,
  	PerformanceMark: false,
  	PerformanceMeasure: false,
  	PerformanceNavigation: false,
  	PerformanceResourceTiming: false,
  	PerformanceTiming: false,
  	postMessage: true,
  	"Promise": false,
  	queueMicrotask: false,
  	removeEventListener: false,
  	Request: false,
  	Response: false,
  	self: true,
  	ServiceWorkerRegistration: false,
  	setInterval: false,
  	setTimeout: false,
  	TextDecoder: false,
  	TextEncoder: false,
  	URL: false,
  	URLSearchParams: false,
  	WebSocket: false,
  	Worker: false,
  	WorkerGlobalScope: false,
  	XMLHttpRequest: false
  };
  var node$1 = {
  	__dirname: false,
  	__filename: false,
  	Buffer: false,
  	clearImmediate: false,
  	clearInterval: false,
  	clearTimeout: false,
  	console: false,
  	exports: true,
  	global: false,
  	"Intl": false,
  	module: false,
  	process: false,
  	queueMicrotask: false,
  	require: false,
  	setImmediate: false,
  	setInterval: false,
  	setTimeout: false,
  	TextDecoder: false,
  	TextEncoder: false,
  	URL: false,
  	URLSearchParams: false
  };
  var commonjs = {
  	exports: true,
  	global: false,
  	module: false,
  	require: false
  };
  var amd = {
  	define: false,
  	require: false
  };
  var mocha = {
  	after: false,
  	afterEach: false,
  	before: false,
  	beforeEach: false,
  	context: false,
  	describe: false,
  	it: false,
  	mocha: false,
  	run: false,
  	setup: false,
  	specify: false,
  	suite: false,
  	suiteSetup: false,
  	suiteTeardown: false,
  	teardown: false,
  	test: false,
  	xcontext: false,
  	xdescribe: false,
  	xit: false,
  	xspecify: false
  };
  var jasmine = {
  	afterAll: false,
  	afterEach: false,
  	beforeAll: false,
  	beforeEach: false,
  	describe: false,
  	expect: false,
  	fail: false,
  	fdescribe: false,
  	fit: false,
  	it: false,
  	jasmine: false,
  	pending: false,
  	runs: false,
  	spyOn: false,
  	spyOnProperty: false,
  	waits: false,
  	waitsFor: false,
  	xdescribe: false,
  	xit: false
  };
  var jest = {
  	afterAll: false,
  	afterEach: false,
  	beforeAll: false,
  	beforeEach: false,
  	describe: false,
  	expect: false,
  	fdescribe: false,
  	fit: false,
  	it: false,
  	jest: false,
  	pit: false,
  	require: false,
  	test: false,
  	xdescribe: false,
  	xit: false,
  	xtest: false
  };
  var qunit = {
  	asyncTest: false,
  	deepEqual: false,
  	equal: false,
  	expect: false,
  	module: false,
  	notDeepEqual: false,
  	notEqual: false,
  	notOk: false,
  	notPropEqual: false,
  	notStrictEqual: false,
  	ok: false,
  	propEqual: false,
  	QUnit: false,
  	raises: false,
  	start: false,
  	stop: false,
  	strictEqual: false,
  	test: false,
  	throws: false
  };
  var phantomjs = {
  	console: true,
  	exports: true,
  	phantom: true,
  	require: true,
  	WebPage: true
  };
  var couch = {
  	emit: false,
  	exports: false,
  	getRow: false,
  	log: false,
  	module: false,
  	provides: false,
  	require: false,
  	respond: false,
  	send: false,
  	start: false,
  	sum: false
  };
  var rhino = {
  	defineClass: false,
  	deserialize: false,
  	gc: false,
  	help: false,
  	importClass: false,
  	importPackage: false,
  	java: false,
  	load: false,
  	loadClass: false,
  	Packages: false,
  	print: false,
  	quit: false,
  	readFile: false,
  	readUrl: false,
  	runCommand: false,
  	seal: false,
  	serialize: false,
  	spawn: false,
  	sync: false,
  	toint32: false,
  	version: false
  };
  var nashorn = {
  	__DIR__: false,
  	__FILE__: false,
  	__LINE__: false,
  	com: false,
  	edu: false,
  	exit: false,
  	java: false,
  	Java: false,
  	javafx: false,
  	JavaImporter: false,
  	javax: false,
  	JSAdapter: false,
  	load: false,
  	loadWithNewGlobal: false,
  	org: false,
  	Packages: false,
  	print: false,
  	quit: false
  };
  var wsh = {
  	ActiveXObject: true,
  	Enumerator: true,
  	GetObject: true,
  	ScriptEngine: true,
  	ScriptEngineBuildVersion: true,
  	ScriptEngineMajorVersion: true,
  	ScriptEngineMinorVersion: true,
  	VBArray: true,
  	WScript: true,
  	WSH: true,
  	XDomainRequest: true
  };
  var jquery = {
  	$: false,
  	jQuery: false
  };
  var yui = {
  	YAHOO: false,
  	YAHOO_config: false,
  	YUI: false,
  	YUI_config: false
  };
  var shelljs = {
  	cat: false,
  	cd: false,
  	chmod: false,
  	config: false,
  	cp: false,
  	dirs: false,
  	echo: false,
  	env: false,
  	error: false,
  	exec: false,
  	exit: false,
  	find: false,
  	grep: false,
  	ln: false,
  	ls: false,
  	mkdir: false,
  	mv: false,
  	popd: false,
  	pushd: false,
  	pwd: false,
  	rm: false,
  	sed: false,
  	set: false,
  	target: false,
  	tempdir: false,
  	test: false,
  	touch: false,
  	which: false
  };
  var prototypejs = {
  	$: false,
  	$$: false,
  	$A: false,
  	$break: false,
  	$continue: false,
  	$F: false,
  	$H: false,
  	$R: false,
  	$w: false,
  	Abstract: false,
  	Ajax: false,
  	Autocompleter: false,
  	Builder: false,
  	Class: false,
  	Control: false,
  	Draggable: false,
  	Draggables: false,
  	Droppables: false,
  	Effect: false,
  	Element: false,
  	Enumerable: false,
  	Event: false,
  	Field: false,
  	Form: false,
  	Hash: false,
  	Insertion: false,
  	ObjectRange: false,
  	PeriodicalExecuter: false,
  	Position: false,
  	Prototype: false,
  	Scriptaculous: false,
  	Selector: false,
  	Sortable: false,
  	SortableObserver: false,
  	Sound: false,
  	Template: false,
  	Toggle: false,
  	Try: false
  };
  var meteor = {
  	_: false,
  	$: false,
  	Accounts: false,
  	AccountsClient: false,
  	AccountsCommon: false,
  	AccountsServer: false,
  	App: false,
  	Assets: false,
  	Blaze: false,
  	check: false,
  	Cordova: false,
  	DDP: false,
  	DDPRateLimiter: false,
  	DDPServer: false,
  	Deps: false,
  	EJSON: false,
  	Email: false,
  	HTTP: false,
  	Log: false,
  	Match: false,
  	Meteor: false,
  	Mongo: false,
  	MongoInternals: false,
  	Npm: false,
  	Package: false,
  	Plugin: false,
  	process: false,
  	Random: false,
  	ReactiveDict: false,
  	ReactiveVar: false,
  	Router: false,
  	ServiceConfiguration: false,
  	Session: false,
  	share: false,
  	Spacebars: false,
  	Template: false,
  	Tinytest: false,
  	Tracker: false,
  	UI: false,
  	Utils: false,
  	WebApp: false,
  	WebAppInternals: false
  };
  var mongo = {
  	_isWindows: false,
  	_rand: false,
  	BulkWriteResult: false,
  	cat: false,
  	cd: false,
  	connect: false,
  	db: false,
  	getHostName: false,
  	getMemInfo: false,
  	hostname: false,
  	ISODate: false,
  	listFiles: false,
  	load: false,
  	ls: false,
  	md5sumFile: false,
  	mkdir: false,
  	Mongo: false,
  	NumberInt: false,
  	NumberLong: false,
  	ObjectId: false,
  	PlanCache: false,
  	print: false,
  	printjson: false,
  	pwd: false,
  	quit: false,
  	removeFile: false,
  	rs: false,
  	sh: false,
  	UUID: false,
  	version: false,
  	WriteResult: false
  };
  var applescript = {
  	$: false,
  	Application: false,
  	Automation: false,
  	console: false,
  	delay: false,
  	Library: false,
  	ObjC: false,
  	ObjectSpecifier: false,
  	Path: false,
  	Progress: false,
  	Ref: false
  };
  var serviceworker = {
  	addEventListener: false,
  	applicationCache: false,
  	atob: false,
  	Blob: false,
  	BroadcastChannel: false,
  	btoa: false,
  	Cache: false,
  	caches: false,
  	CacheStorage: false,
  	clearInterval: false,
  	clearTimeout: false,
  	Client: false,
  	clients: false,
  	Clients: false,
  	close: true,
  	console: false,
  	ExtendableEvent: false,
  	ExtendableMessageEvent: false,
  	fetch: false,
  	FetchEvent: false,
  	FileReaderSync: false,
  	FormData: false,
  	Headers: false,
  	IDBCursor: false,
  	IDBCursorWithValue: false,
  	IDBDatabase: false,
  	IDBFactory: false,
  	IDBIndex: false,
  	IDBKeyRange: false,
  	IDBObjectStore: false,
  	IDBOpenDBRequest: false,
  	IDBRequest: false,
  	IDBTransaction: false,
  	IDBVersionChangeEvent: false,
  	ImageData: false,
  	importScripts: false,
  	indexedDB: false,
  	location: false,
  	MessageChannel: false,
  	MessagePort: false,
  	name: false,
  	navigator: false,
  	Notification: false,
  	onclose: true,
  	onconnect: true,
  	onerror: true,
  	onfetch: true,
  	oninstall: true,
  	onlanguagechange: true,
  	onmessage: true,
  	onmessageerror: true,
  	onnotificationclick: true,
  	onnotificationclose: true,
  	onoffline: true,
  	ononline: true,
  	onpush: true,
  	onpushsubscriptionchange: true,
  	onrejectionhandled: true,
  	onsync: true,
  	onunhandledrejection: true,
  	performance: false,
  	Performance: false,
  	PerformanceEntry: false,
  	PerformanceMark: false,
  	PerformanceMeasure: false,
  	PerformanceNavigation: false,
  	PerformanceResourceTiming: false,
  	PerformanceTiming: false,
  	postMessage: true,
  	"Promise": false,
  	queueMicrotask: false,
  	registration: false,
  	removeEventListener: false,
  	Request: false,
  	Response: false,
  	self: false,
  	ServiceWorker: false,
  	ServiceWorkerContainer: false,
  	ServiceWorkerGlobalScope: false,
  	ServiceWorkerMessageEvent: false,
  	ServiceWorkerRegistration: false,
  	setInterval: false,
  	setTimeout: false,
  	skipWaiting: false,
  	TextDecoder: false,
  	TextEncoder: false,
  	URL: false,
  	URLSearchParams: false,
  	WebSocket: false,
  	WindowClient: false,
  	Worker: false,
  	WorkerGlobalScope: false,
  	XMLHttpRequest: false
  };
  var atomtest = {
  	advanceClock: false,
  	fakeClearInterval: false,
  	fakeClearTimeout: false,
  	fakeSetInterval: false,
  	fakeSetTimeout: false,
  	resetTimeouts: false,
  	waitsForPromise: false
  };
  var embertest = {
  	andThen: false,
  	click: false,
  	currentPath: false,
  	currentRouteName: false,
  	currentURL: false,
  	fillIn: false,
  	find: false,
  	findAll: false,
  	findWithAssert: false,
  	keyEvent: false,
  	pauseTest: false,
  	resumeTest: false,
  	triggerEvent: false,
  	visit: false,
  	wait: false
  };
  var protractor = {
  	$: false,
  	$$: false,
  	browser: false,
  	by: false,
  	By: false,
  	DartObject: false,
  	element: false,
  	protractor: false
  };
  var webextensions = {
  	browser: false,
  	chrome: false,
  	opr: false
  };
  var greasemonkey = {
  	cloneInto: false,
  	createObjectIn: false,
  	exportFunction: false,
  	GM: false,
  	GM_addStyle: false,
  	GM_deleteValue: false,
  	GM_getResourceText: false,
  	GM_getResourceURL: false,
  	GM_getValue: false,
  	GM_info: false,
  	GM_listValues: false,
  	GM_log: false,
  	GM_openInTab: false,
  	GM_registerMenuCommand: false,
  	GM_setClipboard: false,
  	GM_setValue: false,
  	GM_xmlhttpRequest: false,
  	unsafeWindow: false
  };
  var devtools = {
  	$: false,
  	$_: false,
  	$$: false,
  	$0: false,
  	$1: false,
  	$2: false,
  	$3: false,
  	$4: false,
  	$x: false,
  	chrome: false,
  	clear: false,
  	copy: false,
  	debug: false,
  	dir: false,
  	dirxml: false,
  	getEventListeners: false,
  	inspect: false,
  	keys: false,
  	monitor: false,
  	monitorEvents: false,
  	profile: false,
  	profileEnd: false,
  	queryObjects: false,
  	table: false,
  	undebug: false,
  	unmonitor: false,
  	unmonitorEvents: false,
  	values: false
  };
  var require$$0$a = {
  	builtin: builtin,
  	es5: es5,
  	es2015: es2015,
  	es2017: es2017,
  	browser: browser$1,
  	worker: worker,
  	node: node$1,
  	commonjs: commonjs,
  	amd: amd,
  	mocha: mocha,
  	jasmine: jasmine,
  	jest: jest,
  	qunit: qunit,
  	phantomjs: phantomjs,
  	couch: couch,
  	rhino: rhino,
  	nashorn: nashorn,
  	wsh: wsh,
  	jquery: jquery,
  	yui: yui,
  	shelljs: shelljs,
  	prototypejs: prototypejs,
  	meteor: meteor,
  	mongo: mongo,
  	applescript: applescript,
  	serviceworker: serviceworker,
  	atomtest: atomtest,
  	embertest: embertest,
  	protractor: protractor,
  	"shared-node-browser": {
  	clearInterval: false,
  	clearTimeout: false,
  	console: false,
  	setInterval: false,
  	setTimeout: false,
  	URL: false,
  	URLSearchParams: false
  },
  	webextensions: webextensions,
  	greasemonkey: greasemonkey,
  	devtools: devtools
  };

  var globalsBABEL_8_BREAKINGFalse;
  var hasRequiredGlobalsBABEL_8_BREAKINGFalse;
  function requireGlobalsBABEL_8_BREAKINGFalse() {
    if (hasRequiredGlobalsBABEL_8_BREAKINGFalse) return globalsBABEL_8_BREAKINGFalse;
    hasRequiredGlobalsBABEL_8_BREAKINGFalse = 1;
    globalsBABEL_8_BREAKINGFalse = require$$0$a;
    return globalsBABEL_8_BREAKINGFalse;
  }

  function bool$9(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var globals$1 = bool$9(browser$1$1.env["BABEL_8_BREAKING"]) ? requireGlobalsBABEL_8_BREAKINGFalse() : requireGlobalsBABEL_8_BREAKINGFalse();

  var pathsCache = new WeakMap();
  var scope = new WeakMap();
  function clear() {
    clearPath();
    clearScope();
  }
  function clearPath() {
    pathsCache = new WeakMap();
  }
  function clearScope() {
    scope = new WeakMap();
  }
  var nullHub = Object.freeze({});
  function getCachedPaths(hub, parent) {
    var _pathsCache$get, _hub;
    {
      hub = null;
    }
    return (_pathsCache$get = pathsCache.get((_hub = hub) != null ? _hub : nullHub)) == null ? void 0 : _pathsCache$get.get(parent);
  }
  function getOrCreateCachedPaths(hub, parent) {
    var _hub2, _hub3;
    {
      hub = null;
    }
    var parents = pathsCache.get((_hub2 = hub) != null ? _hub2 : nullHub);
    if (!parents) pathsCache.set((_hub3 = hub) != null ? _hub3 : nullHub, parents = new WeakMap());
    var paths = parents.get(parent);
    if (!paths) parents.set(parent, paths = new Map());
    return paths;
  }

  var cache$1 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    clear: clear,
    clearPath: clearPath,
    clearScope: clearScope,
    getCachedPaths: getCachedPaths,
    getOrCreateCachedPaths: getOrCreateCachedPaths,
    get path () { return pathsCache; },
    get scope () { return scope; }
  });

  var NOT_LOCAL_BINDING = NOT_LOCAL_BINDING$1,
    assignmentExpression$a = assignmentExpression$b,
    callExpression$b = callExpression$c,
    cloneNode$d = cloneNode$g,
    getBindingIdentifiers$3 = getBindingIdentifiers$4,
    identifier$b = identifier$e,
    isArrayExpression$1 = isArrayExpression$2,
    isBinary$1 = isBinary$2,
    isCallExpression$6 = isCallExpression$8,
    isClass = isClass$1,
    isClassBody$1 = isClassBody$2,
    isClassDeclaration$1 = isClassDeclaration$2,
    isExportAllDeclaration = isExportAllDeclaration$1,
    isExportDefaultDeclaration$1 = isExportDefaultDeclaration$2,
    isExportNamedDeclaration$2 = isExportNamedDeclaration$3,
    isFunctionDeclaration$1 = isFunctionDeclaration$2,
    isIdentifier$c = isIdentifier$f,
    isImportDeclaration$1 = isImportDeclaration$3,
    isLiteral$4 = isLiteral$5,
    isMemberExpression$6 = isMemberExpression$8,
    isMethod = isMethod$1,
    isModuleSpecifier = isModuleSpecifier$1,
    isNullLiteral = isNullLiteral$1,
    isObjectExpression$2 = isObjectExpression$3,
    isProperty = isProperty$1,
    isPureish$1 = isPureish$2,
    isRegExpLiteral = isRegExpLiteral$1,
    isSuper$2 = isSuper$3,
    isTaggedTemplateExpression = isTaggedTemplateExpression$1,
    isTemplateLiteral = isTemplateLiteral$1,
    isThisExpression$1 = isThisExpression$2,
    isUnaryExpression = isUnaryExpression$1,
    isVariableDeclaration$1 = isVariableDeclaration$3,
    expressionStatement$5 = expressionStatement$7,
    matchesPattern$1 = matchesPattern$2,
    memberExpression$9 = memberExpression$a,
    numericLiteral$5 = numericLiteral$6,
    toIdentifier = toIdentifier$1,
    variableDeclaration$5 = variableDeclaration$6,
    variableDeclarator$5 = variableDeclarator$6,
    isRecordExpression = isRecordExpression$1,
    isTupleExpression = isTupleExpression$1,
    isObjectProperty$2 = isObjectProperty$3,
    isTopicReference = isTopicReference$1,
    isMetaProperty = isMetaProperty$1,
    isPrivateName$2 = isPrivateName$3,
    isExportDeclaration = isExportDeclaration$2,
    _buildUndefinedNode = buildUndefinedNode$2,
    sequenceExpression$7 = sequenceExpression$8;
  function gatherNodeParts(node, parts) {
    switch (node == null ? void 0 : node.type) {
      default:
        if (isImportDeclaration$1(node) || isExportDeclaration(node)) {
          var _node$specifiers;
          if ((isExportAllDeclaration(node) || isExportNamedDeclaration$2(node) || isImportDeclaration$1(node)) && node.source) {
            gatherNodeParts(node.source, parts);
          } else if ((isExportNamedDeclaration$2(node) || isImportDeclaration$1(node)) && (_node$specifiers = node.specifiers) != null && _node$specifiers.length) {
            for (var _iterator = _createForOfIteratorHelperLoose(node.specifiers), _step; !(_step = _iterator()).done;) {
              var e = _step.value;
              gatherNodeParts(e, parts);
            }
          } else if ((isExportDefaultDeclaration$1(node) || isExportNamedDeclaration$2(node)) && node.declaration) {
            gatherNodeParts(node.declaration, parts);
          }
        } else if (isModuleSpecifier(node)) {
          gatherNodeParts(node.local, parts);
        } else if (isLiteral$4(node) && !isNullLiteral(node) && !isRegExpLiteral(node) && !isTemplateLiteral(node)) {
          parts.push(node.value);
        }
        break;
      case "MemberExpression":
      case "OptionalMemberExpression":
      case "JSXMemberExpression":
        gatherNodeParts(node.object, parts);
        gatherNodeParts(node.property, parts);
        break;
      case "Identifier":
      case "JSXIdentifier":
        parts.push(node.name);
        break;
      case "CallExpression":
      case "OptionalCallExpression":
      case "NewExpression":
        gatherNodeParts(node.callee, parts);
        break;
      case "ObjectExpression":
      case "ObjectPattern":
        for (var _iterator2 = _createForOfIteratorHelperLoose(node.properties), _step2; !(_step2 = _iterator2()).done;) {
          var _e = _step2.value;
          gatherNodeParts(_e, parts);
        }
        break;
      case "SpreadElement":
      case "RestElement":
        gatherNodeParts(node.argument, parts);
        break;
      case "ObjectProperty":
      case "ObjectMethod":
      case "ClassProperty":
      case "ClassMethod":
      case "ClassPrivateProperty":
      case "ClassPrivateMethod":
        gatherNodeParts(node.key, parts);
        break;
      case "ThisExpression":
        parts.push("this");
        break;
      case "Super":
        parts.push("super");
        break;
      case "Import":
        parts.push("import");
        break;
      case "DoExpression":
        parts.push("do");
        break;
      case "YieldExpression":
        parts.push("yield");
        gatherNodeParts(node.argument, parts);
        break;
      case "AwaitExpression":
        parts.push("await");
        gatherNodeParts(node.argument, parts);
        break;
      case "AssignmentExpression":
        gatherNodeParts(node.left, parts);
        break;
      case "VariableDeclarator":
        gatherNodeParts(node.id, parts);
        break;
      case "FunctionExpression":
      case "FunctionDeclaration":
      case "ClassExpression":
      case "ClassDeclaration":
        gatherNodeParts(node.id, parts);
        break;
      case "PrivateName":
        gatherNodeParts(node.id, parts);
        break;
      case "ParenthesizedExpression":
        gatherNodeParts(node.expression, parts);
        break;
      case "UnaryExpression":
      case "UpdateExpression":
        gatherNodeParts(node.argument, parts);
        break;
      case "MetaProperty":
        gatherNodeParts(node.meta, parts);
        gatherNodeParts(node.property, parts);
        break;
      case "JSXElement":
        gatherNodeParts(node.openingElement, parts);
        break;
      case "JSXOpeningElement":
        gatherNodeParts(node.name, parts);
        break;
      case "JSXFragment":
        gatherNodeParts(node.openingFragment, parts);
        break;
      case "JSXOpeningFragment":
        parts.push("Fragment");
        break;
      case "JSXNamespacedName":
        gatherNodeParts(node.namespace, parts);
        gatherNodeParts(node.name, parts);
        break;
    }
  }
  var collectorVisitor = {
    ForStatement: function ForStatement(path) {
      var declar = path.get("init");
      if (declar.isVar()) {
        var scope = path.scope;
        var parentScope = scope.getFunctionParent() || scope.getProgramParent();
        parentScope.registerBinding("var", declar);
      }
    },
    Declaration: function Declaration(path) {
      if (path.isBlockScoped()) return;
      if (path.isImportDeclaration()) return;
      if (path.isExportDeclaration()) return;
      var parent = path.scope.getFunctionParent() || path.scope.getProgramParent();
      parent.registerDeclaration(path);
    },
    ImportDeclaration: function ImportDeclaration(path) {
      var parent = path.scope.getBlockParent();
      parent.registerDeclaration(path);
    },
    ReferencedIdentifier: function ReferencedIdentifier(path, state) {
      state.references.push(path);
    },
    ForXStatement: function ForXStatement(path, state) {
      var left = path.get("left");
      if (left.isPattern() || left.isIdentifier()) {
        state.constantViolations.push(path);
      } else if (left.isVar()) {
        var scope = path.scope;
        var parentScope = scope.getFunctionParent() || scope.getProgramParent();
        parentScope.registerBinding("var", left);
      }
    },
    ExportDeclaration: {
      exit: function exit(path) {
        var node = path.node,
          scope = path.scope;
        if (isExportAllDeclaration(node)) return;
        var declar = node.declaration;
        if (isClassDeclaration$1(declar) || isFunctionDeclaration$1(declar)) {
          var id = declar.id;
          if (!id) return;
          var binding = scope.getBinding(id.name);
          binding == null || binding.reference(path);
        } else if (isVariableDeclaration$1(declar)) {
          for (var _iterator3 = _createForOfIteratorHelperLoose(declar.declarations), _step3; !(_step3 = _iterator3()).done;) {
            var decl = _step3.value;
            for (var _i = 0, _Object$keys = Object.keys(getBindingIdentifiers$3(decl)); _i < _Object$keys.length; _i++) {
              var name = _Object$keys[_i];
              var _binding = scope.getBinding(name);
              _binding == null || _binding.reference(path);
            }
          }
        }
      }
    },
    LabeledStatement: function LabeledStatement(path) {
      path.scope.getBlockParent().registerDeclaration(path);
    },
    AssignmentExpression: function AssignmentExpression(path, state) {
      state.assignments.push(path);
    },
    UpdateExpression: function UpdateExpression(path, state) {
      state.constantViolations.push(path);
    },
    UnaryExpression: function UnaryExpression(path, state) {
      if (path.node.operator === "delete") {
        state.constantViolations.push(path);
      }
    },
    BlockScoped: function BlockScoped(path) {
      var scope = path.scope;
      if (scope.path === path) scope = scope.parent;
      var parent = scope.getBlockParent();
      parent.registerDeclaration(path);
      if (path.isClassDeclaration() && path.node.id) {
        var id = path.node.id;
        var name = id.name;
        path.scope.bindings[name] = path.scope.parent.getBinding(name);
      }
    },
    CatchClause: function CatchClause(path) {
      path.scope.registerBinding("let", path);
    },
    Function: function Function(path) {
      var params = path.get("params");
      for (var _iterator4 = _createForOfIteratorHelperLoose(params), _step4; !(_step4 = _iterator4()).done;) {
        var param = _step4.value;
        path.scope.registerBinding("param", param);
      }
      if (path.isFunctionExpression() && path.node.id && !path.node.id[NOT_LOCAL_BINDING]) {
        path.scope.registerBinding("local", path.get("id"), path);
      }
    },
    ClassExpression: function ClassExpression(path) {
      if (path.node.id && !path.node.id[NOT_LOCAL_BINDING]) {
        path.scope.registerBinding("local", path.get("id"), path);
      }
    },
    TSTypeAnnotation: function TSTypeAnnotation(path) {
      path.skip();
    }
  };
  var uid = 0;
  var Scope = function () {
    function Scope(path) {
      this.uid = void 0;
      this.path = void 0;
      this.block = void 0;
      this.labels = void 0;
      this.inited = void 0;
      this.bindings = void 0;
      this.references = void 0;
      this.globals = void 0;
      this.uids = void 0;
      this.data = void 0;
      this.crawling = void 0;
      var node = path.node;
      var cached = scope.get(node);
      if ((cached == null ? void 0 : cached.path) === path) {
        return cached;
      }
      scope.set(node, this);
      this.uid = uid++;
      this.block = node;
      this.path = path;
      this.labels = new Map();
      this.inited = false;
    }
    var _proto = Scope.prototype;
    _proto.traverse = function traverse$1(node, opts, state) {
      traverse(node, opts, this, state, this.path);
    };
    _proto.generateDeclaredUidIdentifier = function generateDeclaredUidIdentifier(name) {
      var id = this.generateUidIdentifier(name);
      this.push({
        id: id
      });
      return cloneNode$d(id);
    };
    _proto.generateUidIdentifier = function generateUidIdentifier(name) {
      return identifier$b(this.generateUid(name));
    };
    _proto.generateUid = function generateUid(name) {
      if (name === void 0) {
        name = "temp";
      }
      name = toIdentifier(name).replace(/^_+/, "").replace(/\d+$/g, "");
      var uid;
      var i = 1;
      do {
        uid = this._generateUid(name, i);
        i++;
      } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid));
      var program = this.getProgramParent();
      program.references[uid] = true;
      program.uids[uid] = true;
      return uid;
    };
    _proto._generateUid = function _generateUid(name, i) {
      var id = name;
      if (i > 1) id += i;
      return "_" + id;
    };
    _proto.generateUidBasedOnNode = function generateUidBasedOnNode(node, defaultName) {
      var parts = [];
      gatherNodeParts(node, parts);
      var id = parts.join("$");
      id = id.replace(/^_/, "") || defaultName || "ref";
      return this.generateUid(id.slice(0, 20));
    };
    _proto.generateUidIdentifierBasedOnNode = function generateUidIdentifierBasedOnNode(node, defaultName) {
      return identifier$b(this.generateUidBasedOnNode(node, defaultName));
    };
    _proto.isStatic = function isStatic(node) {
      if (isThisExpression$1(node) || isSuper$2(node) || isTopicReference(node)) {
        return true;
      }
      if (isIdentifier$c(node)) {
        var binding = this.getBinding(node.name);
        if (binding) {
          return binding.constant;
        } else {
          return this.hasBinding(node.name);
        }
      }
      return false;
    };
    _proto.maybeGenerateMemoised = function maybeGenerateMemoised(node, dontPush) {
      if (this.isStatic(node)) {
        return null;
      } else {
        var id = this.generateUidIdentifierBasedOnNode(node);
        if (!dontPush) {
          this.push({
            id: id
          });
          return cloneNode$d(id);
        }
        return id;
      }
    };
    _proto.checkBlockScopedCollisions = function checkBlockScopedCollisions(local, kind, name, id) {
      if (kind === "param") return;
      if (local.kind === "local") return;
      var duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && kind === "const";
      if (duplicate) {
        throw this.hub.buildError(id, "Duplicate declaration \"" + name + "\"", TypeError);
      }
    };
    _proto.rename = function rename(oldName, newName) {
      var binding = this.getBinding(oldName);
      if (binding) {
        newName || (newName = this.generateUidIdentifier(oldName).name);
        var renamer = new Renamer(binding, oldName, newName);
        {
          renamer.rename(arguments[2]);
        }
      }
    };
    _proto._renameFromMap = function _renameFromMap(map, oldName, newName, value) {
      if (map[oldName]) {
        map[newName] = value;
        map[oldName] = null;
      }
    };
    _proto.dump = function dump() {
      var sep = "-".repeat(60);
      console.log(sep);
      var scope = this;
      do {
        console.log("#", scope.block.type);
        for (var _i2 = 0, _Object$keys2 = Object.keys(scope.bindings); _i2 < _Object$keys2.length; _i2++) {
          var name = _Object$keys2[_i2];
          var binding = scope.bindings[name];
          console.log(" -", name, {
            constant: binding.constant,
            references: binding.references,
            violations: binding.constantViolations.length,
            kind: binding.kind
          });
        }
      } while (scope = scope.parent);
      console.log(sep);
    };
    _proto.toArray = function toArray(node, i, arrayLikeIsIterable) {
      if (isIdentifier$c(node)) {
        var binding = this.getBinding(node.name);
        if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
          return node;
        }
      }
      if (isArrayExpression$1(node)) {
        return node;
      }
      if (isIdentifier$c(node, {
        name: "arguments"
      })) {
        return callExpression$b(memberExpression$9(memberExpression$9(memberExpression$9(identifier$b("Array"), identifier$b("prototype")), identifier$b("slice")), identifier$b("call")), [node]);
      }
      var helperName;
      var args = [node];
      if (i === true) {
        helperName = "toConsumableArray";
      } else if (typeof i === "number") {
        args.push(numericLiteral$5(i));
        helperName = "slicedToArray";
      } else {
        helperName = "toArray";
      }
      if (arrayLikeIsIterable) {
        args.unshift(this.hub.addHelper(helperName));
        helperName = "maybeArrayLike";
      }
      return callExpression$b(this.hub.addHelper(helperName), args);
    };
    _proto.hasLabel = function hasLabel(name) {
      return !!this.getLabel(name);
    };
    _proto.getLabel = function getLabel(name) {
      return this.labels.get(name);
    };
    _proto.registerLabel = function registerLabel(path) {
      this.labels.set(path.node.label.name, path);
    };
    _proto.registerDeclaration = function registerDeclaration(path) {
      if (path.isLabeledStatement()) {
        this.registerLabel(path);
      } else if (path.isFunctionDeclaration()) {
        this.registerBinding("hoisted", path.get("id"), path);
      } else if (path.isVariableDeclaration()) {
        var declarations = path.get("declarations");
        var kind = path.node.kind;
        for (var _iterator5 = _createForOfIteratorHelperLoose(declarations), _step5; !(_step5 = _iterator5()).done;) {
          var declar = _step5.value;
          this.registerBinding(kind === "using" || kind === "await using" ? "const" : kind, declar);
        }
      } else if (path.isClassDeclaration()) {
        if (path.node.declare) return;
        this.registerBinding("let", path);
      } else if (path.isImportDeclaration()) {
        var isTypeDeclaration = path.node.importKind === "type" || path.node.importKind === "typeof";
        var specifiers = path.get("specifiers");
        for (var _iterator6 = _createForOfIteratorHelperLoose(specifiers), _step6; !(_step6 = _iterator6()).done;) {
          var specifier = _step6.value;
          var isTypeSpecifier = isTypeDeclaration || specifier.isImportSpecifier() && (specifier.node.importKind === "type" || specifier.node.importKind === "typeof");
          this.registerBinding(isTypeSpecifier ? "unknown" : "module", specifier);
        }
      } else if (path.isExportDeclaration()) {
        var _declar = path.get("declaration");
        if (_declar.isClassDeclaration() || _declar.isFunctionDeclaration() || _declar.isVariableDeclaration()) {
          this.registerDeclaration(_declar);
        }
      } else {
        this.registerBinding("unknown", path);
      }
    };
    _proto.buildUndefinedNode = function buildUndefinedNode() {
      return _buildUndefinedNode();
    };
    _proto.registerConstantViolation = function registerConstantViolation(path) {
      var ids = path.getAssignmentIdentifiers();
      for (var _i3 = 0, _Object$keys3 = Object.keys(ids); _i3 < _Object$keys3.length; _i3++) {
        var _this$getBinding;
        var name = _Object$keys3[_i3];
        (_this$getBinding = this.getBinding(name)) == null || _this$getBinding.reassign(path);
      }
    };
    _proto.registerBinding = function registerBinding(kind, path, bindingPath) {
      if (bindingPath === void 0) {
        bindingPath = path;
      }
      if (!kind) throw new ReferenceError("no `kind`");
      if (path.isVariableDeclaration()) {
        var declarators = path.get("declarations");
        for (var _iterator7 = _createForOfIteratorHelperLoose(declarators), _step7; !(_step7 = _iterator7()).done;) {
          var declar = _step7.value;
          this.registerBinding(kind, declar);
        }
        return;
      }
      var parent = this.getProgramParent();
      var ids = path.getOuterBindingIdentifiers(true);
      for (var _i4 = 0, _Object$keys4 = Object.keys(ids); _i4 < _Object$keys4.length; _i4++) {
        var name = _Object$keys4[_i4];
        parent.references[name] = true;
        for (var _iterator8 = _createForOfIteratorHelperLoose(ids[name]), _step8; !(_step8 = _iterator8()).done;) {
          var id = _step8.value;
          var local = this.getOwnBinding(name);
          if (local) {
            if (local.identifier === id) continue;
            this.checkBlockScopedCollisions(local, kind, name, id);
          }
          if (local) {
            local.reassign(bindingPath);
          } else {
            this.bindings[name] = new Binding({
              identifier: id,
              scope: this,
              path: bindingPath,
              kind: kind
            });
          }
        }
      }
    };
    _proto.addGlobal = function addGlobal(node) {
      this.globals[node.name] = node;
    };
    _proto.hasUid = function hasUid(name) {
      var scope = this;
      do {
        if (scope.uids[name]) return true;
      } while (scope = scope.parent);
      return false;
    };
    _proto.hasGlobal = function hasGlobal(name) {
      var scope = this;
      do {
        if (scope.globals[name]) return true;
      } while (scope = scope.parent);
      return false;
    };
    _proto.hasReference = function hasReference(name) {
      return !!this.getProgramParent().references[name];
    };
    _proto.isPure = function isPure(node, constantsOnly) {
      if (isIdentifier$c(node)) {
        var binding = this.getBinding(node.name);
        if (!binding) return false;
        if (constantsOnly) return binding.constant;
        return true;
      } else if (isThisExpression$1(node) || isMetaProperty(node) || isTopicReference(node) || isPrivateName$2(node)) {
        return true;
      } else if (isClass(node)) {
        var _node$decorators;
        if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {
          return false;
        }
        if (((_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length) > 0) {
          return false;
        }
        return this.isPure(node.body, constantsOnly);
      } else if (isClassBody$1(node)) {
        for (var _iterator9 = _createForOfIteratorHelperLoose(node.body), _step9; !(_step9 = _iterator9()).done;) {
          var method = _step9.value;
          if (!this.isPure(method, constantsOnly)) return false;
        }
        return true;
      } else if (isBinary$1(node)) {
        return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);
      } else if (isArrayExpression$1(node) || isTupleExpression(node)) {
        for (var _iterator10 = _createForOfIteratorHelperLoose(node.elements), _step10; !(_step10 = _iterator10()).done;) {
          var elem = _step10.value;
          if (elem !== null && !this.isPure(elem, constantsOnly)) return false;
        }
        return true;
      } else if (isObjectExpression$2(node) || isRecordExpression(node)) {
        for (var _iterator11 = _createForOfIteratorHelperLoose(node.properties), _step11; !(_step11 = _iterator11()).done;) {
          var prop = _step11.value;
          if (!this.isPure(prop, constantsOnly)) return false;
        }
        return true;
      } else if (isMethod(node)) {
        var _node$decorators2;
        if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
        if (((_node$decorators2 = node.decorators) == null ? void 0 : _node$decorators2.length) > 0) {
          return false;
        }
        return true;
      } else if (isProperty(node)) {
        var _node$decorators3;
        if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
        if (((_node$decorators3 = node.decorators) == null ? void 0 : _node$decorators3.length) > 0) {
          return false;
        }
        if (isObjectProperty$2(node) || node["static"]) {
          if (node.value !== null && !this.isPure(node.value, constantsOnly)) {
            return false;
          }
        }
        return true;
      } else if (isUnaryExpression(node)) {
        return this.isPure(node.argument, constantsOnly);
      } else if (isTemplateLiteral(node)) {
        for (var _iterator12 = _createForOfIteratorHelperLoose(node.expressions), _step12; !(_step12 = _iterator12()).done;) {
          var expression = _step12.value;
          if (!this.isPure(expression, constantsOnly)) return false;
        }
        return true;
      } else if (isTaggedTemplateExpression(node)) {
        return matchesPattern$1(node.tag, "String.raw") && !this.hasBinding("String", {
          noGlobals: true
        }) && this.isPure(node.quasi, constantsOnly);
      } else if (isMemberExpression$6(node)) {
        return !node.computed && isIdentifier$c(node.object) && node.object.name === "Symbol" && isIdentifier$c(node.property) && node.property.name !== "for" && !this.hasBinding("Symbol", {
          noGlobals: true
        });
      } else if (isCallExpression$6(node)) {
        return matchesPattern$1(node.callee, "Symbol.for") && !this.hasBinding("Symbol", {
          noGlobals: true
        }) && node.arguments.length === 1 && isStringLiteral$5(node.arguments[0]);
      } else {
        return isPureish$1(node);
      }
    };
    _proto.setData = function setData(key, val) {
      return this.data[key] = val;
    };
    _proto.getData = function getData(key) {
      var scope = this;
      do {
        var data = scope.data[key];
        if (data != null) return data;
      } while (scope = scope.parent);
    };
    _proto.removeData = function removeData(key) {
      var scope = this;
      do {
        var data = scope.data[key];
        if (data != null) scope.data[key] = null;
      } while (scope = scope.parent);
    };
    _proto.init = function init() {
      if (!this.inited) {
        this.inited = true;
        this.crawl();
      }
    };
    _proto.crawl = function crawl() {
      var path = this.path;
      this.references = Object.create(null);
      this.bindings = Object.create(null);
      this.globals = Object.create(null);
      this.uids = Object.create(null);
      this.data = Object.create(null);
      var programParent = this.getProgramParent();
      if (programParent.crawling) return;
      var state = {
        references: [],
        constantViolations: [],
        assignments: []
      };
      this.crawling = true;
      if (path.type !== "Program" && isExplodedVisitor(collectorVisitor)) {
        for (var _iterator13 = _createForOfIteratorHelperLoose(collectorVisitor.enter), _step13; !(_step13 = _iterator13()).done;) {
          var _visit = _step13.value;
          _visit.call(state, path, state);
        }
        var typeVisitors = collectorVisitor[path.type];
        if (typeVisitors) {
          for (var _iterator14 = _createForOfIteratorHelperLoose(typeVisitors.enter), _step14; !(_step14 = _iterator14()).done;) {
            var visit = _step14.value;
            visit.call(state, path, state);
          }
        }
      }
      path.traverse(collectorVisitor, state);
      this.crawling = false;
      for (var _iterator15 = _createForOfIteratorHelperLoose(state.assignments), _step15; !(_step15 = _iterator15()).done;) {
        var _path = _step15.value;
        var ids = _path.getAssignmentIdentifiers();
        for (var _i5 = 0, _Object$keys5 = Object.keys(ids); _i5 < _Object$keys5.length; _i5++) {
          var name = _Object$keys5[_i5];
          if (_path.scope.getBinding(name)) continue;
          programParent.addGlobal(ids[name]);
        }
        _path.scope.registerConstantViolation(_path);
      }
      for (var _iterator16 = _createForOfIteratorHelperLoose(state.references), _step16; !(_step16 = _iterator16()).done;) {
        var ref = _step16.value;
        var binding = ref.scope.getBinding(ref.node.name);
        if (binding) {
          binding.reference(ref);
        } else {
          programParent.addGlobal(ref.node);
        }
      }
      for (var _iterator17 = _createForOfIteratorHelperLoose(state.constantViolations), _step17; !(_step17 = _iterator17()).done;) {
        var _path2 = _step17.value;
        _path2.scope.registerConstantViolation(_path2);
      }
    };
    _proto.push = function push(opts) {
      var path = this.path;
      if (path.isPattern()) {
        path = this.getPatternParent().path;
      } else if (!path.isBlockStatement() && !path.isProgram()) {
        path = this.getBlockParent().path;
      }
      if (path.isSwitchStatement()) {
        path = (this.getFunctionParent() || this.getProgramParent()).path;
      }
      var init = opts.init,
        unique = opts.unique,
        _opts$kind = opts.kind,
        kind = _opts$kind === void 0 ? "var" : _opts$kind,
        id = opts.id;
      if (!init && !unique && (kind === "var" || kind === "let") && path.isFunction() && !path.node.name && isCallExpression$6(path.parent, {
        callee: path.node
      }) && path.parent.arguments.length <= path.node.params.length && isIdentifier$c(id)) {
        path.pushContainer("params", id);
        path.scope.registerBinding("param", path.get("params")[path.node.params.length - 1]);
        return;
      }
      if (path.isLoop() || path.isCatchClause() || path.isFunction()) {
        path.ensureBlock();
        path = path.get("body");
      }
      var blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;
      var dataKey = "declaration:" + kind + ":" + blockHoist;
      var declarPath = !unique && path.getData(dataKey);
      if (!declarPath) {
        var declar = variableDeclaration$5(kind, []);
        declar._blockHoist = blockHoist;
        var _unshiftContainer = path.unshiftContainer("body", [declar]);
        var _unshiftContainer2 = _slicedToArray(_unshiftContainer, 1);
        declarPath = _unshiftContainer2[0];
        if (!unique) path.setData(dataKey, declarPath);
      }
      var declarator = variableDeclarator$5(id, init);
      var len = declarPath.node.declarations.push(declarator);
      path.scope.registerBinding(kind, declarPath.get("declarations")[len - 1]);
    };
    _proto.getProgramParent = function getProgramParent() {
      var scope = this;
      do {
        if (scope.path.isProgram()) {
          return scope;
        }
      } while (scope = scope.parent);
      throw new Error("Couldn't find a Program");
    };
    _proto.getFunctionParent = function getFunctionParent() {
      var scope = this;
      do {
        if (scope.path.isFunctionParent()) {
          return scope;
        }
      } while (scope = scope.parent);
      return null;
    };
    _proto.getBlockParent = function getBlockParent() {
      var scope = this;
      do {
        if (scope.path.isBlockParent()) {
          return scope;
        }
      } while (scope = scope.parent);
      throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
    };
    _proto.getPatternParent = function getPatternParent() {
      var scope = this;
      do {
        if (!scope.path.isPattern()) {
          return scope.getBlockParent();
        }
      } while (scope = scope.parent.parent);
      throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
    };
    _proto.getAllBindings = function getAllBindings() {
      var ids = Object.create(null);
      var scope = this;
      do {
        for (var _i6 = 0, _Object$keys6 = Object.keys(scope.bindings); _i6 < _Object$keys6.length; _i6++) {
          var key = _Object$keys6[_i6];
          if (key in ids === false) {
            ids[key] = scope.bindings[key];
          }
        }
        scope = scope.parent;
      } while (scope);
      return ids;
    };
    _proto.getAllBindingsOfKind = function getAllBindingsOfKind() {
      var ids = Object.create(null);
      for (var _len = arguments.length, kinds = new Array(_len), _key = 0; _key < _len; _key++) {
        kinds[_key] = arguments[_key];
      }
      for (var _i7 = 0, _kinds = kinds; _i7 < _kinds.length; _i7++) {
        var kind = _kinds[_i7];
        var scope = this;
        do {
          for (var _i8 = 0, _Object$keys7 = Object.keys(scope.bindings); _i8 < _Object$keys7.length; _i8++) {
            var name = _Object$keys7[_i8];
            var binding = scope.bindings[name];
            if (binding.kind === kind) ids[name] = binding;
          }
          scope = scope.parent;
        } while (scope);
      }
      return ids;
    };
    _proto.bindingIdentifierEquals = function bindingIdentifierEquals(name, node) {
      return this.getBindingIdentifier(name) === node;
    };
    _proto.getBinding = function getBinding(name) {
      var scope = this;
      var previousPath;
      do {
        var binding = scope.getOwnBinding(name);
        if (binding) {
          var _previousPath;
          if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param" && binding.kind !== "local") ; else {
            return binding;
          }
        } else if (!binding && name === "arguments" && scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {
          break;
        }
        previousPath = scope.path;
      } while (scope = scope.parent);
    };
    _proto.getOwnBinding = function getOwnBinding(name) {
      return this.bindings[name];
    };
    _proto.getBindingIdentifier = function getBindingIdentifier(name) {
      var _this$getBinding2;
      return (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.identifier;
    };
    _proto.getOwnBindingIdentifier = function getOwnBindingIdentifier(name) {
      var binding = this.bindings[name];
      return binding == null ? void 0 : binding.identifier;
    };
    _proto.hasOwnBinding = function hasOwnBinding(name) {
      return !!this.getOwnBinding(name);
    };
    _proto.hasBinding = function hasBinding(name, opts) {
      if (!name) return false;
      var scope = this;
      do {
        if (scope.hasOwnBinding(name)) {
          return true;
        }
      } while (scope = scope.parent);
      var noGlobals;
      var noUids;
      if (typeof opts === "object") {
        noGlobals = opts.noGlobals;
        noUids = opts.noUids;
      } else if (typeof opts === "boolean") {
        noGlobals = opts;
      }
      if (!noUids && this.hasUid(name)) return true;
      if (!noGlobals && Scope.globals.includes(name)) return true;
      if (!noGlobals && Scope.contextVariables.includes(name)) return true;
      return false;
    };
    _proto.parentHasBinding = function parentHasBinding(name, opts) {
      var _this$parent;
      return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, opts);
    };
    _proto.moveBindingTo = function moveBindingTo(name, scope) {
      var info = this.getBinding(name);
      if (info) {
        info.scope.removeOwnBinding(name);
        info.scope = scope;
        scope.bindings[name] = info;
      }
    };
    _proto.removeOwnBinding = function removeOwnBinding(name) {
      delete this.bindings[name];
    };
    _proto.removeBinding = function removeBinding(name) {
      var _this$getBinding3;
      (_this$getBinding3 = this.getBinding(name)) == null || _this$getBinding3.scope.removeOwnBinding(name);
      var scope = this;
      do {
        if (scope.uids[name]) {
          scope.uids[name] = false;
        }
      } while (scope = scope.parent);
    };
    _proto.hoistVariables = function hoistVariables(emit) {
      var _this = this;
      if (emit === void 0) {
        emit = function emit(id) {
          return _this.push({
            id: id
          });
        };
      }
      this.crawl();
      var seen = new Set();
      for (var _i9 = 0, _Object$keys8 = Object.keys(this.bindings); _i9 < _Object$keys8.length; _i9++) {
        var name = _Object$keys8[_i9];
        var binding = this.bindings[name];
        if (!binding) continue;
        var _path3 = binding.path;
        if (!_path3.isVariableDeclarator()) continue;
        var parent = _path3.parent,
          parentPath = _path3.parentPath;
        if (parent.kind !== "var" || seen.has(parent)) continue;
        seen.add(_path3.parent);
        var firstId = void 0;
        var init = [];
        for (var _iterator18 = _createForOfIteratorHelperLoose(parent.declarations), _step18; !(_step18 = _iterator18()).done;) {
          var _firstId;
          var decl = _step18.value;
          (_firstId = firstId) != null ? _firstId : firstId = decl.id;
          if (decl.init) {
            init.push(assignmentExpression$a("=", decl.id, decl.init));
          }
          var ids = Object.keys(getBindingIdentifiers$3(decl, false, true, true));
          for (var _i10 = 0, _ids = ids; _i10 < _ids.length; _i10++) {
            var _name = _ids[_i10];
            emit(identifier$b(_name), decl.init != null);
          }
        }
        if (parentPath.parentPath.isFor({
          left: parent
        })) {
          parentPath.replaceWith(firstId);
        } else if (init.length === 0) {
          parentPath.remove();
        } else {
          var expr = init.length === 1 ? init[0] : sequenceExpression$7(init);
          if (parentPath.parentPath.isForStatement({
            init: parent
          })) {
            parentPath.replaceWith(expr);
          } else {
            parentPath.replaceWith(expressionStatement$5(expr));
          }
        }
      }
    };
    return _createClass(Scope, [{
      key: "parent",
      get: function get() {
        var _parent;
        var parent,
          path = this.path;
        do {
          var _path4;
          var shouldSkip = path.key === "key" || path.listKey === "decorators";
          path = path.parentPath;
          if (shouldSkip && path.isMethod()) path = path.parentPath;
          if ((_path4 = path) != null && _path4.isScope()) parent = path;
        } while (path && !parent);
        return (_parent = parent) == null ? void 0 : _parent.scope;
      }
    }, {
      key: "parentBlock",
      get: function get() {
        return this.path.parent;
      }
    }, {
      key: "hub",
      get: function get() {
        return this.path.hub;
      }
    }]);
  }();
  Scope.globals = Object.keys(globals$1.builtin);
  Scope.contextVariables = ["arguments", "undefined", "Infinity", "NaN"];

  var genMapping_umd$1 = {exports: {}};

  var setArray_umd = {exports: {}};

  var hasRequiredSetArray_umd;
  function requireSetArray_umd() {
    if (hasRequiredSetArray_umd) return setArray_umd.exports;
    hasRequiredSetArray_umd = 1;
    (function (module, exports) {
      (function (global, factory) {
        factory(exports) ;
      })(commonjsGlobal, function (exports) {
        var SetArray = _createClass(function SetArray() {
          this._indexes = {
            __proto__: null
          };
          this.array = [];
        });
        function cast(set) {
          return set;
        }
        function get(setarr, key) {
          return cast(setarr)._indexes[key];
        }
        function put(setarr, key) {
          var index = get(setarr, key);
          if (index !== undefined) return index;
          var _cast = cast(setarr),
            array = _cast.array,
            indexes = _cast._indexes;
          var length = array.push(key);
          return indexes[key] = length - 1;
        }
        function pop(setarr) {
          var _cast2 = cast(setarr),
            array = _cast2.array,
            indexes = _cast2._indexes;
          if (array.length === 0) return;
          var last = array.pop();
          indexes[last] = undefined;
        }
        function remove(setarr, key) {
          var index = get(setarr, key);
          if (index === undefined) return;
          var _cast3 = cast(setarr),
            array = _cast3.array,
            indexes = _cast3._indexes;
          for (var i = index + 1; i < array.length; i++) {
            var k = array[i];
            array[i - 1] = k;
            indexes[k]--;
          }
          indexes[key] = undefined;
          array.pop();
        }
        exports.SetArray = SetArray;
        exports.get = get;
        exports.pop = pop;
        exports.put = put;
        exports.remove = remove;
        Object.defineProperty(exports, '__esModule', {
          value: true
        });
      });
    })(setArray_umd, setArray_umd.exports);
    return setArray_umd.exports;
  }

  var lookup = [];
  var revLookup = [];
  var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
  var inited = false;
  function init () {
    inited = true;
    var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    for (var i = 0, len = code.length; i < len; ++i) {
      lookup[i] = code[i];
      revLookup[code.charCodeAt(i)] = i;
    }

    revLookup['-'.charCodeAt(0)] = 62;
    revLookup['_'.charCodeAt(0)] = 63;
  }

  function toByteArray (b64) {
    if (!inited) {
      init();
    }
    var i, j, l, tmp, placeHolders, arr;
    var len = b64.length;

    if (len % 4 > 0) {
      throw new Error('Invalid string. Length must be a multiple of 4')
    }

    // the number of equal signs (place holders)
    // if there are two placeholders, than the two characters before it
    // represent one byte
    // if there is only one, then the three characters before it represent 2 bytes
    // this is just a cheap hack to not do indexOf twice
    placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;

    // base64 is 4/3 + up to two characters of the original data
    arr = new Arr(len * 3 / 4 - placeHolders);

    // if there are placeholders, only get up to the last complete 4 chars
    l = placeHolders > 0 ? len - 4 : len;

    var L = 0;

    for (i = 0, j = 0; i < l; i += 4, j += 3) {
      tmp = (revLookup[b64.charCodeAt(i)] << 18) | (revLookup[b64.charCodeAt(i + 1)] << 12) | (revLookup[b64.charCodeAt(i + 2)] << 6) | revLookup[b64.charCodeAt(i + 3)];
      arr[L++] = (tmp >> 16) & 0xFF;
      arr[L++] = (tmp >> 8) & 0xFF;
      arr[L++] = tmp & 0xFF;
    }

    if (placeHolders === 2) {
      tmp = (revLookup[b64.charCodeAt(i)] << 2) | (revLookup[b64.charCodeAt(i + 1)] >> 4);
      arr[L++] = tmp & 0xFF;
    } else if (placeHolders === 1) {
      tmp = (revLookup[b64.charCodeAt(i)] << 10) | (revLookup[b64.charCodeAt(i + 1)] << 4) | (revLookup[b64.charCodeAt(i + 2)] >> 2);
      arr[L++] = (tmp >> 8) & 0xFF;
      arr[L++] = tmp & 0xFF;
    }

    return arr
  }

  function tripletToBase64 (num) {
    return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F]
  }

  function encodeChunk (uint8, start, end) {
    var tmp;
    var output = [];
    for (var i = start; i < end; i += 3) {
      tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
      output.push(tripletToBase64(tmp));
    }
    return output.join('')
  }

  function fromByteArray (uint8) {
    if (!inited) {
      init();
    }
    var tmp;
    var len = uint8.length;
    var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
    var output = '';
    var parts = [];
    var maxChunkLength = 16383; // must be multiple of 3

    // go through the array every three bytes, we'll deal with trailing stuff later
    for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
      parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
    }

    // pad the end with zeros, but make sure to not forget the extra bytes
    if (extraBytes === 1) {
      tmp = uint8[len - 1];
      output += lookup[tmp >> 2];
      output += lookup[(tmp << 4) & 0x3F];
      output += '==';
    } else if (extraBytes === 2) {
      tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
      output += lookup[tmp >> 10];
      output += lookup[(tmp >> 4) & 0x3F];
      output += lookup[(tmp << 2) & 0x3F];
      output += '=';
    }

    parts.push(output);

    return parts.join('')
  }

  function read (buffer, offset, isLE, mLen, nBytes) {
    var e, m;
    var eLen = nBytes * 8 - mLen - 1;
    var eMax = (1 << eLen) - 1;
    var eBias = eMax >> 1;
    var nBits = -7;
    var i = isLE ? (nBytes - 1) : 0;
    var d = isLE ? -1 : 1;
    var s = buffer[offset + i];

    i += d;

    e = s & ((1 << (-nBits)) - 1);
    s >>= (-nBits);
    nBits += eLen;
    for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}

    m = e & ((1 << (-nBits)) - 1);
    e >>= (-nBits);
    nBits += mLen;
    for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}

    if (e === 0) {
      e = 1 - eBias;
    } else if (e === eMax) {
      return m ? NaN : ((s ? -1 : 1) * Infinity)
    } else {
      m = m + Math.pow(2, mLen);
      e = e - eBias;
    }
    return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
  }

  function write (buffer, value, offset, isLE, mLen, nBytes) {
    var e, m, c;
    var eLen = nBytes * 8 - mLen - 1;
    var eMax = (1 << eLen) - 1;
    var eBias = eMax >> 1;
    var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
    var i = isLE ? 0 : (nBytes - 1);
    var d = isLE ? 1 : -1;
    var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;

    value = Math.abs(value);

    if (isNaN(value) || value === Infinity) {
      m = isNaN(value) ? 1 : 0;
      e = eMax;
    } else {
      e = Math.floor(Math.log(value) / Math.LN2);
      if (value * (c = Math.pow(2, -e)) < 1) {
        e--;
        c *= 2;
      }
      if (e + eBias >= 1) {
        value += rt / c;
      } else {
        value += rt * Math.pow(2, 1 - eBias);
      }
      if (value * c >= 2) {
        e++;
        c /= 2;
      }

      if (e + eBias >= eMax) {
        m = 0;
        e = eMax;
      } else if (e + eBias >= 1) {
        m = (value * c - 1) * Math.pow(2, mLen);
        e = e + eBias;
      } else {
        m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
        e = 0;
      }
    }

    for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}

    e = (e << mLen) | m;
    eLen += mLen;
    for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}

    buffer[offset + i - d] |= s * 128;
  }

  var toString = {}.toString;

  var isArray$2 = Array.isArray || function (arr) {
    return toString.call(arr) == '[object Array]';
  };

  /*!
   * The buffer module from node.js, for the browser.
   *
   * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
   * @license  MIT
   */
  /* eslint-disable no-proto */


  var INSPECT_MAX_BYTES = 50;

  /**
   * If `Buffer.TYPED_ARRAY_SUPPORT`:
   *   === true    Use Uint8Array implementation (fastest)
   *   === false   Use Object implementation (most compatible, even IE6)
   *
   * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
   * Opera 11.6+, iOS 4.2+.
   *
   * Due to various browser bugs, sometimes the Object implementation will be used even
   * when the browser supports typed arrays.
   *
   * Note:
   *
   *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
   *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
   *
   *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
   *
   *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
   *     incorrect length in some situations.

   * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
   * get the Object implementation, which is slower but behaves correctly.
   */
  Buffer$1.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
    ? global$1.TYPED_ARRAY_SUPPORT
    : true;

  /*
   * Export kMaxLength after typed array support is determined.
   */
  kMaxLength();

  function kMaxLength () {
    return Buffer$1.TYPED_ARRAY_SUPPORT
      ? 0x7fffffff
      : 0x3fffffff
  }

  function createBuffer (that, length) {
    if (kMaxLength() < length) {
      throw new RangeError('Invalid typed array length')
    }
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      // Return an augmented `Uint8Array` instance, for best performance
      that = new Uint8Array(length);
      that.__proto__ = Buffer$1.prototype;
    } else {
      // Fallback: Return an object instance of the Buffer class
      if (that === null) {
        that = new Buffer$1(length);
      }
      that.length = length;
    }

    return that
  }

  /**
   * The Buffer constructor returns instances of `Uint8Array` that have their
   * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
   * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
   * and the `Uint8Array` methods. Square bracket notation works as expected -- it
   * returns a single octet.
   *
   * The `Uint8Array` prototype remains unmodified.
   */

  function Buffer$1 (arg, encodingOrOffset, length) {
    if (!Buffer$1.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$1)) {
      return new Buffer$1(arg, encodingOrOffset, length)
    }

    // Common case.
    if (typeof arg === 'number') {
      if (typeof encodingOrOffset === 'string') {
        throw new Error(
          'If encoding is specified then the first argument must be a string'
        )
      }
      return allocUnsafe(this, arg)
    }
    return from(this, arg, encodingOrOffset, length)
  }

  Buffer$1.poolSize = 8192; // not used by this implementation

  // TODO: Legacy, not needed anymore. Remove in next major version.
  Buffer$1._augment = function (arr) {
    arr.__proto__ = Buffer$1.prototype;
    return arr
  };

  function from (that, value, encodingOrOffset, length) {
    if (typeof value === 'number') {
      throw new TypeError('"value" argument must not be a number')
    }

    if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
      return fromArrayBuffer(that, value, encodingOrOffset, length)
    }

    if (typeof value === 'string') {
      return fromString(that, value, encodingOrOffset)
    }

    return fromObject(that, value)
  }

  /**
   * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
   * if value is a number.
   * Buffer.from(str[, encoding])
   * Buffer.from(array)
   * Buffer.from(buffer)
   * Buffer.from(arrayBuffer[, byteOffset[, length]])
   **/
  Buffer$1.from = function (value, encodingOrOffset, length) {
    return from(null, value, encodingOrOffset, length)
  };

  if (Buffer$1.TYPED_ARRAY_SUPPORT) {
    Buffer$1.prototype.__proto__ = Uint8Array.prototype;
    Buffer$1.__proto__ = Uint8Array;
    if (typeof Symbol !== 'undefined' && Symbol.species &&
        Buffer$1[Symbol.species] === Buffer$1) ;
  }

  function assertSize (size) {
    if (typeof size !== 'number') {
      throw new TypeError('"size" argument must be a number')
    } else if (size < 0) {
      throw new RangeError('"size" argument must not be negative')
    }
  }

  function alloc (that, size, fill, encoding) {
    assertSize(size);
    if (size <= 0) {
      return createBuffer(that, size)
    }
    if (fill !== undefined) {
      // Only pay attention to encoding if it's a string. This
      // prevents accidentally sending in a number that would
      // be interpretted as a start offset.
      return typeof encoding === 'string'
        ? createBuffer(that, size).fill(fill, encoding)
        : createBuffer(that, size).fill(fill)
    }
    return createBuffer(that, size)
  }

  /**
   * Creates a new filled Buffer instance.
   * alloc(size[, fill[, encoding]])
   **/
  Buffer$1.alloc = function (size, fill, encoding) {
    return alloc(null, size, fill, encoding)
  };

  function allocUnsafe (that, size) {
    assertSize(size);
    that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
    if (!Buffer$1.TYPED_ARRAY_SUPPORT) {
      for (var i = 0; i < size; ++i) {
        that[i] = 0;
      }
    }
    return that
  }

  /**
   * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
   * */
  Buffer$1.allocUnsafe = function (size) {
    return allocUnsafe(null, size)
  };
  /**
   * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
   */
  Buffer$1.allocUnsafeSlow = function (size) {
    return allocUnsafe(null, size)
  };

  function fromString (that, string, encoding) {
    if (typeof encoding !== 'string' || encoding === '') {
      encoding = 'utf8';
    }

    if (!Buffer$1.isEncoding(encoding)) {
      throw new TypeError('"encoding" must be a valid string encoding')
    }

    var length = byteLength(string, encoding) | 0;
    that = createBuffer(that, length);

    var actual = that.write(string, encoding);

    if (actual !== length) {
      // Writing a hex string, for example, that contains invalid characters will
      // cause everything after the first invalid character to be ignored. (e.g.
      // 'abxxcd' will be treated as 'ab')
      that = that.slice(0, actual);
    }

    return that
  }

  function fromArrayLike (that, array) {
    var length = array.length < 0 ? 0 : checked(array.length) | 0;
    that = createBuffer(that, length);
    for (var i = 0; i < length; i += 1) {
      that[i] = array[i] & 255;
    }
    return that
  }

  function fromArrayBuffer (that, array, byteOffset, length) {
    array.byteLength; // this throws if `array` is not a valid ArrayBuffer

    if (byteOffset < 0 || array.byteLength < byteOffset) {
      throw new RangeError('\'offset\' is out of bounds')
    }

    if (array.byteLength < byteOffset + (length || 0)) {
      throw new RangeError('\'length\' is out of bounds')
    }

    if (byteOffset === undefined && length === undefined) {
      array = new Uint8Array(array);
    } else if (length === undefined) {
      array = new Uint8Array(array, byteOffset);
    } else {
      array = new Uint8Array(array, byteOffset, length);
    }

    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      // Return an augmented `Uint8Array` instance, for best performance
      that = array;
      that.__proto__ = Buffer$1.prototype;
    } else {
      // Fallback: Return an object instance of the Buffer class
      that = fromArrayLike(that, array);
    }
    return that
  }

  function fromObject (that, obj) {
    if (internalIsBuffer(obj)) {
      var len = checked(obj.length) | 0;
      that = createBuffer(that, len);

      if (that.length === 0) {
        return that
      }

      obj.copy(that, 0, 0, len);
      return that
    }

    if (obj) {
      if ((typeof ArrayBuffer !== 'undefined' &&
          obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
        if (typeof obj.length !== 'number' || isnan(obj.length)) {
          return createBuffer(that, 0)
        }
        return fromArrayLike(that, obj)
      }

      if (obj.type === 'Buffer' && isArray$2(obj.data)) {
        return fromArrayLike(that, obj.data)
      }
    }

    throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
  }

  function checked (length) {
    // Note: cannot use `length < kMaxLength()` here because that fails when
    // length is NaN (which is otherwise coerced to zero.)
    if (length >= kMaxLength()) {
      throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
                           'size: 0x' + kMaxLength().toString(16) + ' bytes')
    }
    return length | 0
  }
  Buffer$1.isBuffer = isBuffer$1;
  function internalIsBuffer (b) {
    return !!(b != null && b._isBuffer)
  }

  Buffer$1.compare = function compare (a, b) {
    if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
      throw new TypeError('Arguments must be Buffers')
    }

    if (a === b) return 0

    var x = a.length;
    var y = b.length;

    for (var i = 0, len = Math.min(x, y); i < len; ++i) {
      if (a[i] !== b[i]) {
        x = a[i];
        y = b[i];
        break
      }
    }

    if (x < y) return -1
    if (y < x) return 1
    return 0
  };

  Buffer$1.isEncoding = function isEncoding (encoding) {
    switch (String(encoding).toLowerCase()) {
      case 'hex':
      case 'utf8':
      case 'utf-8':
      case 'ascii':
      case 'latin1':
      case 'binary':
      case 'base64':
      case 'ucs2':
      case 'ucs-2':
      case 'utf16le':
      case 'utf-16le':
        return true
      default:
        return false
    }
  };

  Buffer$1.concat = function concat (list, length) {
    if (!isArray$2(list)) {
      throw new TypeError('"list" argument must be an Array of Buffers')
    }

    if (list.length === 0) {
      return Buffer$1.alloc(0)
    }

    var i;
    if (length === undefined) {
      length = 0;
      for (i = 0; i < list.length; ++i) {
        length += list[i].length;
      }
    }

    var buffer = Buffer$1.allocUnsafe(length);
    var pos = 0;
    for (i = 0; i < list.length; ++i) {
      var buf = list[i];
      if (!internalIsBuffer(buf)) {
        throw new TypeError('"list" argument must be an Array of Buffers')
      }
      buf.copy(buffer, pos);
      pos += buf.length;
    }
    return buffer
  };

  function byteLength (string, encoding) {
    if (internalIsBuffer(string)) {
      return string.length
    }
    if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
        (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
      return string.byteLength
    }
    if (typeof string !== 'string') {
      string = '' + string;
    }

    var len = string.length;
    if (len === 0) return 0

    // Use a for loop to avoid recursion
    var loweredCase = false;
    for (;;) {
      switch (encoding) {
        case 'ascii':
        case 'latin1':
        case 'binary':
          return len
        case 'utf8':
        case 'utf-8':
        case undefined:
          return utf8ToBytes(string).length
        case 'ucs2':
        case 'ucs-2':
        case 'utf16le':
        case 'utf-16le':
          return len * 2
        case 'hex':
          return len >>> 1
        case 'base64':
          return base64ToBytes(string).length
        default:
          if (loweredCase) return utf8ToBytes(string).length // assume utf8
          encoding = ('' + encoding).toLowerCase();
          loweredCase = true;
      }
    }
  }
  Buffer$1.byteLength = byteLength;

  function slowToString (encoding, start, end) {
    var loweredCase = false;

    // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
    // property of a typed array.

    // This behaves neither like String nor Uint8Array in that we set start/end
    // to their upper/lower bounds if the value passed is out of range.
    // undefined is handled specially as per ECMA-262 6th Edition,
    // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
    if (start === undefined || start < 0) {
      start = 0;
    }
    // Return early if start > this.length. Done here to prevent potential uint32
    // coercion fail below.
    if (start > this.length) {
      return ''
    }

    if (end === undefined || end > this.length) {
      end = this.length;
    }

    if (end <= 0) {
      return ''
    }

    // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
    end >>>= 0;
    start >>>= 0;

    if (end <= start) {
      return ''
    }

    if (!encoding) encoding = 'utf8';

    while (true) {
      switch (encoding) {
        case 'hex':
          return hexSlice(this, start, end)

        case 'utf8':
        case 'utf-8':
          return utf8Slice(this, start, end)

        case 'ascii':
          return asciiSlice(this, start, end)

        case 'latin1':
        case 'binary':
          return latin1Slice(this, start, end)

        case 'base64':
          return base64Slice(this, start, end)

        case 'ucs2':
        case 'ucs-2':
        case 'utf16le':
        case 'utf-16le':
          return utf16leSlice(this, start, end)

        default:
          if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
          encoding = (encoding + '').toLowerCase();
          loweredCase = true;
      }
    }
  }

  // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
  // Buffer instances.
  Buffer$1.prototype._isBuffer = true;

  function swap (b, n, m) {
    var i = b[n];
    b[n] = b[m];
    b[m] = i;
  }

  Buffer$1.prototype.swap16 = function swap16 () {
    var len = this.length;
    if (len % 2 !== 0) {
      throw new RangeError('Buffer size must be a multiple of 16-bits')
    }
    for (var i = 0; i < len; i += 2) {
      swap(this, i, i + 1);
    }
    return this
  };

  Buffer$1.prototype.swap32 = function swap32 () {
    var len = this.length;
    if (len % 4 !== 0) {
      throw new RangeError('Buffer size must be a multiple of 32-bits')
    }
    for (var i = 0; i < len; i += 4) {
      swap(this, i, i + 3);
      swap(this, i + 1, i + 2);
    }
    return this
  };

  Buffer$1.prototype.swap64 = function swap64 () {
    var len = this.length;
    if (len % 8 !== 0) {
      throw new RangeError('Buffer size must be a multiple of 64-bits')
    }
    for (var i = 0; i < len; i += 8) {
      swap(this, i, i + 7);
      swap(this, i + 1, i + 6);
      swap(this, i + 2, i + 5);
      swap(this, i + 3, i + 4);
    }
    return this
  };

  Buffer$1.prototype.toString = function toString () {
    var length = this.length | 0;
    if (length === 0) return ''
    if (arguments.length === 0) return utf8Slice(this, 0, length)
    return slowToString.apply(this, arguments)
  };

  Buffer$1.prototype.equals = function equals (b) {
    if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
    if (this === b) return true
    return Buffer$1.compare(this, b) === 0
  };

  Buffer$1.prototype.inspect = function inspect () {
    var str = '';
    var max = INSPECT_MAX_BYTES;
    if (this.length > 0) {
      str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
      if (this.length > max) str += ' ... ';
    }
    return '<Buffer ' + str + '>'
  };

  Buffer$1.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
    if (!internalIsBuffer(target)) {
      throw new TypeError('Argument must be a Buffer')
    }

    if (start === undefined) {
      start = 0;
    }
    if (end === undefined) {
      end = target ? target.length : 0;
    }
    if (thisStart === undefined) {
      thisStart = 0;
    }
    if (thisEnd === undefined) {
      thisEnd = this.length;
    }

    if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
      throw new RangeError('out of range index')
    }

    if (thisStart >= thisEnd && start >= end) {
      return 0
    }
    if (thisStart >= thisEnd) {
      return -1
    }
    if (start >= end) {
      return 1
    }

    start >>>= 0;
    end >>>= 0;
    thisStart >>>= 0;
    thisEnd >>>= 0;

    if (this === target) return 0

    var x = thisEnd - thisStart;
    var y = end - start;
    var len = Math.min(x, y);

    var thisCopy = this.slice(thisStart, thisEnd);
    var targetCopy = target.slice(start, end);

    for (var i = 0; i < len; ++i) {
      if (thisCopy[i] !== targetCopy[i]) {
        x = thisCopy[i];
        y = targetCopy[i];
        break
      }
    }

    if (x < y) return -1
    if (y < x) return 1
    return 0
  };

  // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
  // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
  //
  // Arguments:
  // - buffer - a Buffer to search
  // - val - a string, Buffer, or number
  // - byteOffset - an index into `buffer`; will be clamped to an int32
  // - encoding - an optional encoding, relevant is val is a string
  // - dir - true for indexOf, false for lastIndexOf
  function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
    // Empty buffer means no match
    if (buffer.length === 0) return -1

    // Normalize byteOffset
    if (typeof byteOffset === 'string') {
      encoding = byteOffset;
      byteOffset = 0;
    } else if (byteOffset > 0x7fffffff) {
      byteOffset = 0x7fffffff;
    } else if (byteOffset < -0x80000000) {
      byteOffset = -0x80000000;
    }
    byteOffset = +byteOffset;  // Coerce to Number.
    if (isNaN(byteOffset)) {
      // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
      byteOffset = dir ? 0 : (buffer.length - 1);
    }

    // Normalize byteOffset: negative offsets start from the end of the buffer
    if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
    if (byteOffset >= buffer.length) {
      if (dir) return -1
      else byteOffset = buffer.length - 1;
    } else if (byteOffset < 0) {
      if (dir) byteOffset = 0;
      else return -1
    }

    // Normalize val
    if (typeof val === 'string') {
      val = Buffer$1.from(val, encoding);
    }

    // Finally, search either indexOf (if dir is true) or lastIndexOf
    if (internalIsBuffer(val)) {
      // Special case: looking for empty string/buffer always fails
      if (val.length === 0) {
        return -1
      }
      return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
    } else if (typeof val === 'number') {
      val = val & 0xFF; // Search for a byte value [0-255]
      if (Buffer$1.TYPED_ARRAY_SUPPORT &&
          typeof Uint8Array.prototype.indexOf === 'function') {
        if (dir) {
          return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
        } else {
          return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
        }
      }
      return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
    }

    throw new TypeError('val must be string, number or Buffer')
  }

  function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
    var indexSize = 1;
    var arrLength = arr.length;
    var valLength = val.length;

    if (encoding !== undefined) {
      encoding = String(encoding).toLowerCase();
      if (encoding === 'ucs2' || encoding === 'ucs-2' ||
          encoding === 'utf16le' || encoding === 'utf-16le') {
        if (arr.length < 2 || val.length < 2) {
          return -1
        }
        indexSize = 2;
        arrLength /= 2;
        valLength /= 2;
        byteOffset /= 2;
      }
    }

    function read (buf, i) {
      if (indexSize === 1) {
        return buf[i]
      } else {
        return buf.readUInt16BE(i * indexSize)
      }
    }

    var i;
    if (dir) {
      var foundIndex = -1;
      for (i = byteOffset; i < arrLength; i++) {
        if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
          if (foundIndex === -1) foundIndex = i;
          if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
        } else {
          if (foundIndex !== -1) i -= i - foundIndex;
          foundIndex = -1;
        }
      }
    } else {
      if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
      for (i = byteOffset; i >= 0; i--) {
        var found = true;
        for (var j = 0; j < valLength; j++) {
          if (read(arr, i + j) !== read(val, j)) {
            found = false;
            break
          }
        }
        if (found) return i
      }
    }

    return -1
  }

  Buffer$1.prototype.includes = function includes (val, byteOffset, encoding) {
    return this.indexOf(val, byteOffset, encoding) !== -1
  };

  Buffer$1.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
    return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
  };

  Buffer$1.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
    return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
  };

  function hexWrite (buf, string, offset, length) {
    offset = Number(offset) || 0;
    var remaining = buf.length - offset;
    if (!length) {
      length = remaining;
    } else {
      length = Number(length);
      if (length > remaining) {
        length = remaining;
      }
    }

    // must be an even number of digits
    var strLen = string.length;
    if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')

    if (length > strLen / 2) {
      length = strLen / 2;
    }
    for (var i = 0; i < length; ++i) {
      var parsed = parseInt(string.substr(i * 2, 2), 16);
      if (isNaN(parsed)) return i
      buf[offset + i] = parsed;
    }
    return i
  }

  function utf8Write (buf, string, offset, length) {
    return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
  }

  function asciiWrite (buf, string, offset, length) {
    return blitBuffer(asciiToBytes(string), buf, offset, length)
  }

  function latin1Write (buf, string, offset, length) {
    return asciiWrite(buf, string, offset, length)
  }

  function base64Write (buf, string, offset, length) {
    return blitBuffer(base64ToBytes(string), buf, offset, length)
  }

  function ucs2Write (buf, string, offset, length) {
    return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
  }

  Buffer$1.prototype.write = function write (string, offset, length, encoding) {
    // Buffer#write(string)
    if (offset === undefined) {
      encoding = 'utf8';
      length = this.length;
      offset = 0;
    // Buffer#write(string, encoding)
    } else if (length === undefined && typeof offset === 'string') {
      encoding = offset;
      length = this.length;
      offset = 0;
    // Buffer#write(string, offset[, length][, encoding])
    } else if (isFinite(offset)) {
      offset = offset | 0;
      if (isFinite(length)) {
        length = length | 0;
        if (encoding === undefined) encoding = 'utf8';
      } else {
        encoding = length;
        length = undefined;
      }
    // legacy write(string, encoding, offset, length) - remove in v0.13
    } else {
      throw new Error(
        'Buffer.write(string, encoding, offset[, length]) is no longer supported'
      )
    }

    var remaining = this.length - offset;
    if (length === undefined || length > remaining) length = remaining;

    if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
      throw new RangeError('Attempt to write outside buffer bounds')
    }

    if (!encoding) encoding = 'utf8';

    var loweredCase = false;
    for (;;) {
      switch (encoding) {
        case 'hex':
          return hexWrite(this, string, offset, length)

        case 'utf8':
        case 'utf-8':
          return utf8Write(this, string, offset, length)

        case 'ascii':
          return asciiWrite(this, string, offset, length)

        case 'latin1':
        case 'binary':
          return latin1Write(this, string, offset, length)

        case 'base64':
          // Warning: maxLength not taken into account in base64Write
          return base64Write(this, string, offset, length)

        case 'ucs2':
        case 'ucs-2':
        case 'utf16le':
        case 'utf-16le':
          return ucs2Write(this, string, offset, length)

        default:
          if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
          encoding = ('' + encoding).toLowerCase();
          loweredCase = true;
      }
    }
  };

  Buffer$1.prototype.toJSON = function toJSON () {
    return {
      type: 'Buffer',
      data: Array.prototype.slice.call(this._arr || this, 0)
    }
  };

  function base64Slice (buf, start, end) {
    if (start === 0 && end === buf.length) {
      return fromByteArray(buf)
    } else {
      return fromByteArray(buf.slice(start, end))
    }
  }

  function utf8Slice (buf, start, end) {
    end = Math.min(buf.length, end);
    var res = [];

    var i = start;
    while (i < end) {
      var firstByte = buf[i];
      var codePoint = null;
      var bytesPerSequence = (firstByte > 0xEF) ? 4
        : (firstByte > 0xDF) ? 3
        : (firstByte > 0xBF) ? 2
        : 1;

      if (i + bytesPerSequence <= end) {
        var secondByte, thirdByte, fourthByte, tempCodePoint;

        switch (bytesPerSequence) {
          case 1:
            if (firstByte < 0x80) {
              codePoint = firstByte;
            }
            break
          case 2:
            secondByte = buf[i + 1];
            if ((secondByte & 0xC0) === 0x80) {
              tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
              if (tempCodePoint > 0x7F) {
                codePoint = tempCodePoint;
              }
            }
            break
          case 3:
            secondByte = buf[i + 1];
            thirdByte = buf[i + 2];
            if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
              tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
              if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
                codePoint = tempCodePoint;
              }
            }
            break
          case 4:
            secondByte = buf[i + 1];
            thirdByte = buf[i + 2];
            fourthByte = buf[i + 3];
            if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
              tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
              if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
                codePoint = tempCodePoint;
              }
            }
        }
      }

      if (codePoint === null) {
        // we did not generate a valid codePoint so insert a
        // replacement char (U+FFFD) and advance only 1 byte
        codePoint = 0xFFFD;
        bytesPerSequence = 1;
      } else if (codePoint > 0xFFFF) {
        // encode to utf16 (surrogate pair dance)
        codePoint -= 0x10000;
        res.push(codePoint >>> 10 & 0x3FF | 0xD800);
        codePoint = 0xDC00 | codePoint & 0x3FF;
      }

      res.push(codePoint);
      i += bytesPerSequence;
    }

    return decodeCodePointsArray(res)
  }

  // Based on http://stackoverflow.com/a/22747272/680742, the browser with
  // the lowest limit is Chrome, with 0x10000 args.
  // We go 1 magnitude less, for safety
  var MAX_ARGUMENTS_LENGTH = 0x1000;

  function decodeCodePointsArray (codePoints) {
    var len = codePoints.length;
    if (len <= MAX_ARGUMENTS_LENGTH) {
      return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
    }

    // Decode in chunks to avoid "call stack size exceeded".
    var res = '';
    var i = 0;
    while (i < len) {
      res += String.fromCharCode.apply(
        String,
        codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
      );
    }
    return res
  }

  function asciiSlice (buf, start, end) {
    var ret = '';
    end = Math.min(buf.length, end);

    for (var i = start; i < end; ++i) {
      ret += String.fromCharCode(buf[i] & 0x7F);
    }
    return ret
  }

  function latin1Slice (buf, start, end) {
    var ret = '';
    end = Math.min(buf.length, end);

    for (var i = start; i < end; ++i) {
      ret += String.fromCharCode(buf[i]);
    }
    return ret
  }

  function hexSlice (buf, start, end) {
    var len = buf.length;

    if (!start || start < 0) start = 0;
    if (!end || end < 0 || end > len) end = len;

    var out = '';
    for (var i = start; i < end; ++i) {
      out += toHex(buf[i]);
    }
    return out
  }

  function utf16leSlice (buf, start, end) {
    var bytes = buf.slice(start, end);
    var res = '';
    for (var i = 0; i < bytes.length; i += 2) {
      res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
    }
    return res
  }

  Buffer$1.prototype.slice = function slice (start, end) {
    var len = this.length;
    start = ~~start;
    end = end === undefined ? len : ~~end;

    if (start < 0) {
      start += len;
      if (start < 0) start = 0;
    } else if (start > len) {
      start = len;
    }

    if (end < 0) {
      end += len;
      if (end < 0) end = 0;
    } else if (end > len) {
      end = len;
    }

    if (end < start) end = start;

    var newBuf;
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      newBuf = this.subarray(start, end);
      newBuf.__proto__ = Buffer$1.prototype;
    } else {
      var sliceLen = end - start;
      newBuf = new Buffer$1(sliceLen, undefined);
      for (var i = 0; i < sliceLen; ++i) {
        newBuf[i] = this[i + start];
      }
    }

    return newBuf
  };

  /*
   * Need to make sure that buffer isn't trying to write out of bounds.
   */
  function checkOffset (offset, ext, length) {
    if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
    if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
  }

  Buffer$1.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) checkOffset(offset, byteLength, this.length);

    var val = this[offset];
    var mul = 1;
    var i = 0;
    while (++i < byteLength && (mul *= 0x100)) {
      val += this[offset + i] * mul;
    }

    return val
  };

  Buffer$1.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) {
      checkOffset(offset, byteLength, this.length);
    }

    var val = this[offset + --byteLength];
    var mul = 1;
    while (byteLength > 0 && (mul *= 0x100)) {
      val += this[offset + --byteLength] * mul;
    }

    return val
  };

  Buffer$1.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 1, this.length);
    return this[offset]
  };

  Buffer$1.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 2, this.length);
    return this[offset] | (this[offset + 1] << 8)
  };

  Buffer$1.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 2, this.length);
    return (this[offset] << 8) | this[offset + 1]
  };

  Buffer$1.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);

    return ((this[offset]) |
        (this[offset + 1] << 8) |
        (this[offset + 2] << 16)) +
        (this[offset + 3] * 0x1000000)
  };

  Buffer$1.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);

    return (this[offset] * 0x1000000) +
      ((this[offset + 1] << 16) |
      (this[offset + 2] << 8) |
      this[offset + 3])
  };

  Buffer$1.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) checkOffset(offset, byteLength, this.length);

    var val = this[offset];
    var mul = 1;
    var i = 0;
    while (++i < byteLength && (mul *= 0x100)) {
      val += this[offset + i] * mul;
    }
    mul *= 0x80;

    if (val >= mul) val -= Math.pow(2, 8 * byteLength);

    return val
  };

  Buffer$1.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) checkOffset(offset, byteLength, this.length);

    var i = byteLength;
    var mul = 1;
    var val = this[offset + --i];
    while (i > 0 && (mul *= 0x100)) {
      val += this[offset + --i] * mul;
    }
    mul *= 0x80;

    if (val >= mul) val -= Math.pow(2, 8 * byteLength);

    return val
  };

  Buffer$1.prototype.readInt8 = function readInt8 (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 1, this.length);
    if (!(this[offset] & 0x80)) return (this[offset])
    return ((0xff - this[offset] + 1) * -1)
  };

  Buffer$1.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 2, this.length);
    var val = this[offset] | (this[offset + 1] << 8);
    return (val & 0x8000) ? val | 0xFFFF0000 : val
  };

  Buffer$1.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 2, this.length);
    var val = this[offset + 1] | (this[offset] << 8);
    return (val & 0x8000) ? val | 0xFFFF0000 : val
  };

  Buffer$1.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);

    return (this[offset]) |
      (this[offset + 1] << 8) |
      (this[offset + 2] << 16) |
      (this[offset + 3] << 24)
  };

  Buffer$1.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);

    return (this[offset] << 24) |
      (this[offset + 1] << 16) |
      (this[offset + 2] << 8) |
      (this[offset + 3])
  };

  Buffer$1.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);
    return read(this, offset, true, 23, 4)
  };

  Buffer$1.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 4, this.length);
    return read(this, offset, false, 23, 4)
  };

  Buffer$1.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 8, this.length);
    return read(this, offset, true, 52, 8)
  };

  Buffer$1.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
    if (!noAssert) checkOffset(offset, 8, this.length);
    return read(this, offset, false, 52, 8)
  };

  function checkInt (buf, value, offset, ext, max, min) {
    if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
    if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
    if (offset + ext > buf.length) throw new RangeError('Index out of range')
  }

  Buffer$1.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
    value = +value;
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) {
      var maxBytes = Math.pow(2, 8 * byteLength) - 1;
      checkInt(this, value, offset, byteLength, maxBytes, 0);
    }

    var mul = 1;
    var i = 0;
    this[offset] = value & 0xFF;
    while (++i < byteLength && (mul *= 0x100)) {
      this[offset + i] = (value / mul) & 0xFF;
    }

    return offset + byteLength
  };

  Buffer$1.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
    value = +value;
    offset = offset | 0;
    byteLength = byteLength | 0;
    if (!noAssert) {
      var maxBytes = Math.pow(2, 8 * byteLength) - 1;
      checkInt(this, value, offset, byteLength, maxBytes, 0);
    }

    var i = byteLength - 1;
    var mul = 1;
    this[offset + i] = value & 0xFF;
    while (--i >= 0 && (mul *= 0x100)) {
      this[offset + i] = (value / mul) & 0xFF;
    }

    return offset + byteLength
  };

  Buffer$1.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
    if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
    this[offset] = (value & 0xff);
    return offset + 1
  };

  function objectWriteUInt16 (buf, value, offset, littleEndian) {
    if (value < 0) value = 0xffff + value + 1;
    for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
      buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
        (littleEndian ? i : 1 - i) * 8;
    }
  }

  Buffer$1.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value & 0xff);
      this[offset + 1] = (value >>> 8);
    } else {
      objectWriteUInt16(this, value, offset, true);
    }
    return offset + 2
  };

  Buffer$1.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value >>> 8);
      this[offset + 1] = (value & 0xff);
    } else {
      objectWriteUInt16(this, value, offset, false);
    }
    return offset + 2
  };

  function objectWriteUInt32 (buf, value, offset, littleEndian) {
    if (value < 0) value = 0xffffffff + value + 1;
    for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
      buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
    }
  }

  Buffer$1.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset + 3] = (value >>> 24);
      this[offset + 2] = (value >>> 16);
      this[offset + 1] = (value >>> 8);
      this[offset] = (value & 0xff);
    } else {
      objectWriteUInt32(this, value, offset, true);
    }
    return offset + 4
  };

  Buffer$1.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value >>> 24);
      this[offset + 1] = (value >>> 16);
      this[offset + 2] = (value >>> 8);
      this[offset + 3] = (value & 0xff);
    } else {
      objectWriteUInt32(this, value, offset, false);
    }
    return offset + 4
  };

  Buffer$1.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) {
      var limit = Math.pow(2, 8 * byteLength - 1);

      checkInt(this, value, offset, byteLength, limit - 1, -limit);
    }

    var i = 0;
    var mul = 1;
    var sub = 0;
    this[offset] = value & 0xFF;
    while (++i < byteLength && (mul *= 0x100)) {
      if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
        sub = 1;
      }
      this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
    }

    return offset + byteLength
  };

  Buffer$1.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) {
      var limit = Math.pow(2, 8 * byteLength - 1);

      checkInt(this, value, offset, byteLength, limit - 1, -limit);
    }

    var i = byteLength - 1;
    var mul = 1;
    var sub = 0;
    this[offset + i] = value & 0xFF;
    while (--i >= 0 && (mul *= 0x100)) {
      if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
        sub = 1;
      }
      this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
    }

    return offset + byteLength
  };

  Buffer$1.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
    if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
    if (value < 0) value = 0xff + value + 1;
    this[offset] = (value & 0xff);
    return offset + 1
  };

  Buffer$1.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value & 0xff);
      this[offset + 1] = (value >>> 8);
    } else {
      objectWriteUInt16(this, value, offset, true);
    }
    return offset + 2
  };

  Buffer$1.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value >>> 8);
      this[offset + 1] = (value & 0xff);
    } else {
      objectWriteUInt16(this, value, offset, false);
    }
    return offset + 2
  };

  Buffer$1.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value & 0xff);
      this[offset + 1] = (value >>> 8);
      this[offset + 2] = (value >>> 16);
      this[offset + 3] = (value >>> 24);
    } else {
      objectWriteUInt32(this, value, offset, true);
    }
    return offset + 4
  };

  Buffer$1.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
    value = +value;
    offset = offset | 0;
    if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
    if (value < 0) value = 0xffffffff + value + 1;
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      this[offset] = (value >>> 24);
      this[offset + 1] = (value >>> 16);
      this[offset + 2] = (value >>> 8);
      this[offset + 3] = (value & 0xff);
    } else {
      objectWriteUInt32(this, value, offset, false);
    }
    return offset + 4
  };

  function checkIEEE754 (buf, value, offset, ext, max, min) {
    if (offset + ext > buf.length) throw new RangeError('Index out of range')
    if (offset < 0) throw new RangeError('Index out of range')
  }

  function writeFloat (buf, value, offset, littleEndian, noAssert) {
    if (!noAssert) {
      checkIEEE754(buf, value, offset, 4);
    }
    write(buf, value, offset, littleEndian, 23, 4);
    return offset + 4
  }

  Buffer$1.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
    return writeFloat(this, value, offset, true, noAssert)
  };

  Buffer$1.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
    return writeFloat(this, value, offset, false, noAssert)
  };

  function writeDouble (buf, value, offset, littleEndian, noAssert) {
    if (!noAssert) {
      checkIEEE754(buf, value, offset, 8);
    }
    write(buf, value, offset, littleEndian, 52, 8);
    return offset + 8
  }

  Buffer$1.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
    return writeDouble(this, value, offset, true, noAssert)
  };

  Buffer$1.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
    return writeDouble(this, value, offset, false, noAssert)
  };

  // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
  Buffer$1.prototype.copy = function copy (target, targetStart, start, end) {
    if (!start) start = 0;
    if (!end && end !== 0) end = this.length;
    if (targetStart >= target.length) targetStart = target.length;
    if (!targetStart) targetStart = 0;
    if (end > 0 && end < start) end = start;

    // Copy 0 bytes; we're done
    if (end === start) return 0
    if (target.length === 0 || this.length === 0) return 0

    // Fatal error conditions
    if (targetStart < 0) {
      throw new RangeError('targetStart out of bounds')
    }
    if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
    if (end < 0) throw new RangeError('sourceEnd out of bounds')

    // Are we oob?
    if (end > this.length) end = this.length;
    if (target.length - targetStart < end - start) {
      end = target.length - targetStart + start;
    }

    var len = end - start;
    var i;

    if (this === target && start < targetStart && targetStart < end) {
      // descending copy from end
      for (i = len - 1; i >= 0; --i) {
        target[i + targetStart] = this[i + start];
      }
    } else if (len < 1000 || !Buffer$1.TYPED_ARRAY_SUPPORT) {
      // ascending copy from start
      for (i = 0; i < len; ++i) {
        target[i + targetStart] = this[i + start];
      }
    } else {
      Uint8Array.prototype.set.call(
        target,
        this.subarray(start, start + len),
        targetStart
      );
    }

    return len
  };

  // Usage:
  //    buffer.fill(number[, offset[, end]])
  //    buffer.fill(buffer[, offset[, end]])
  //    buffer.fill(string[, offset[, end]][, encoding])
  Buffer$1.prototype.fill = function fill (val, start, end, encoding) {
    // Handle string cases:
    if (typeof val === 'string') {
      if (typeof start === 'string') {
        encoding = start;
        start = 0;
        end = this.length;
      } else if (typeof end === 'string') {
        encoding = end;
        end = this.length;
      }
      if (val.length === 1) {
        var code = val.charCodeAt(0);
        if (code < 256) {
          val = code;
        }
      }
      if (encoding !== undefined && typeof encoding !== 'string') {
        throw new TypeError('encoding must be a string')
      }
      if (typeof encoding === 'string' && !Buffer$1.isEncoding(encoding)) {
        throw new TypeError('Unknown encoding: ' + encoding)
      }
    } else if (typeof val === 'number') {
      val = val & 255;
    }

    // Invalid ranges are not set to a default, so can range check early.
    if (start < 0 || this.length < start || this.length < end) {
      throw new RangeError('Out of range index')
    }

    if (end <= start) {
      return this
    }

    start = start >>> 0;
    end = end === undefined ? this.length : end >>> 0;

    if (!val) val = 0;

    var i;
    if (typeof val === 'number') {
      for (i = start; i < end; ++i) {
        this[i] = val;
      }
    } else {
      var bytes = internalIsBuffer(val)
        ? val
        : utf8ToBytes(new Buffer$1(val, encoding).toString());
      var len = bytes.length;
      for (i = 0; i < end - start; ++i) {
        this[i + start] = bytes[i % len];
      }
    }

    return this
  };

  // HELPER FUNCTIONS
  // ================

  var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;

  function base64clean (str) {
    // Node strips out invalid characters like \n and \t from the string, base64-js does not
    str = stringtrim(str).replace(INVALID_BASE64_RE, '');
    // Node converts strings with length < 2 to ''
    if (str.length < 2) return ''
    // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
    while (str.length % 4 !== 0) {
      str = str + '=';
    }
    return str
  }

  function stringtrim (str) {
    if (str.trim) return str.trim()
    return str.replace(/^\s+|\s+$/g, '')
  }

  function toHex (n) {
    if (n < 16) return '0' + n.toString(16)
    return n.toString(16)
  }

  function utf8ToBytes (string, units) {
    units = units || Infinity;
    var codePoint;
    var length = string.length;
    var leadSurrogate = null;
    var bytes = [];

    for (var i = 0; i < length; ++i) {
      codePoint = string.charCodeAt(i);

      // is surrogate component
      if (codePoint > 0xD7FF && codePoint < 0xE000) {
        // last char was a lead
        if (!leadSurrogate) {
          // no lead yet
          if (codePoint > 0xDBFF) {
            // unexpected trail
            if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
            continue
          } else if (i + 1 === length) {
            // unpaired lead
            if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
            continue
          }

          // valid lead
          leadSurrogate = codePoint;

          continue
        }

        // 2 leads in a row
        if (codePoint < 0xDC00) {
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
          leadSurrogate = codePoint;
          continue
        }

        // valid surrogate pair
        codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
      } else if (leadSurrogate) {
        // valid bmp char, but last char was a lead
        if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
      }

      leadSurrogate = null;

      // encode utf8
      if (codePoint < 0x80) {
        if ((units -= 1) < 0) break
        bytes.push(codePoint);
      } else if (codePoint < 0x800) {
        if ((units -= 2) < 0) break
        bytes.push(
          codePoint >> 0x6 | 0xC0,
          codePoint & 0x3F | 0x80
        );
      } else if (codePoint < 0x10000) {
        if ((units -= 3) < 0) break
        bytes.push(
          codePoint >> 0xC | 0xE0,
          codePoint >> 0x6 & 0x3F | 0x80,
          codePoint & 0x3F | 0x80
        );
      } else if (codePoint < 0x110000) {
        if ((units -= 4) < 0) break
        bytes.push(
          codePoint >> 0x12 | 0xF0,
          codePoint >> 0xC & 0x3F | 0x80,
          codePoint >> 0x6 & 0x3F | 0x80,
          codePoint & 0x3F | 0x80
        );
      } else {
        throw new Error('Invalid code point')
      }
    }

    return bytes
  }

  function asciiToBytes (str) {
    var byteArray = [];
    for (var i = 0; i < str.length; ++i) {
      // Node's code seems to be doing this and not & 0x7F..
      byteArray.push(str.charCodeAt(i) & 0xFF);
    }
    return byteArray
  }

  function utf16leToBytes (str, units) {
    var c, hi, lo;
    var byteArray = [];
    for (var i = 0; i < str.length; ++i) {
      if ((units -= 2) < 0) break

      c = str.charCodeAt(i);
      hi = c >> 8;
      lo = c % 256;
      byteArray.push(lo);
      byteArray.push(hi);
    }

    return byteArray
  }


  function base64ToBytes (str) {
    return toByteArray(base64clean(str))
  }

  function blitBuffer (src, dst, offset, length) {
    for (var i = 0; i < length; ++i) {
      if ((i + offset >= dst.length) || (i >= src.length)) break
      dst[i + offset] = src[i];
    }
    return i
  }

  function isnan (val) {
    return val !== val // eslint-disable-line no-self-compare
  }


  // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
  // The _isBuffer check is for Safari 5-7 support, because it's missing
  // Object.prototype.constructor. Remove this eventually
  function isBuffer$1(obj) {
    return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
  }

  function isFastBuffer (obj) {
    return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
  }

  // For Node v0.10 support. Remove this eventually.
  function isSlowBuffer (obj) {
    return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
  }

  var sourcemapCodec_umd = {exports: {}};

  var hasRequiredSourcemapCodec_umd;
  function requireSourcemapCodec_umd() {
    if (hasRequiredSourcemapCodec_umd) return sourcemapCodec_umd.exports;
    hasRequiredSourcemapCodec_umd = 1;
    (function (module, exports) {
      (function (global, factory) {
        factory(exports) ;
      })(commonjsGlobal, function (exports) {

        var comma = ','.charCodeAt(0);
        var semicolon = ';'.charCodeAt(0);
        var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
        var intToChar = new Uint8Array(64);
        var charToInt = new Uint8Array(128);
        for (var i = 0; i < chars.length; i++) {
          var c = chars.charCodeAt(i);
          intToChar[i] = c;
          charToInt[c] = i;
        }
        var td = typeof TextDecoder !== 'undefined' ? new TextDecoder() : typeof Buffer$1 !== 'undefined' ? {
          decode: function decode(buf) {
            var out = Buffer$1.from(buf.buffer, buf.byteOffset, buf.byteLength);
            return out.toString();
          }
        } : {
          decode: function decode(buf) {
            var out = '';
            for (var _i = 0; _i < buf.length; _i++) {
              out += String.fromCharCode(buf[_i]);
            }
            return out;
          }
        };
        function decode(mappings) {
          var state = new Int32Array(5);
          var decoded = [];
          var index = 0;
          do {
            var semi = indexOf(mappings, index);
            var line = [];
            var sorted = true;
            var lastCol = 0;
            state[0] = 0;
            for (var _i2 = index; _i2 < semi; _i2++) {
              var seg = void 0;
              _i2 = decodeInteger(mappings, _i2, state, 0);
              var col = state[0];
              if (col < lastCol) sorted = false;
              lastCol = col;
              if (hasMoreVlq(mappings, _i2, semi)) {
                _i2 = decodeInteger(mappings, _i2, state, 1);
                _i2 = decodeInteger(mappings, _i2, state, 2);
                _i2 = decodeInteger(mappings, _i2, state, 3);
                if (hasMoreVlq(mappings, _i2, semi)) {
                  _i2 = decodeInteger(mappings, _i2, state, 4);
                  seg = [col, state[1], state[2], state[3], state[4]];
                } else {
                  seg = [col, state[1], state[2], state[3]];
                }
              } else {
                seg = [col];
              }
              line.push(seg);
            }
            if (!sorted) sort(line);
            decoded.push(line);
            index = semi + 1;
          } while (index <= mappings.length);
          return decoded;
        }
        function indexOf(mappings, index) {
          var idx = mappings.indexOf(';', index);
          return idx === -1 ? mappings.length : idx;
        }
        function decodeInteger(mappings, pos, state, j) {
          var value = 0;
          var shift = 0;
          var integer = 0;
          do {
            var _c = mappings.charCodeAt(pos++);
            integer = charToInt[_c];
            value |= (integer & 31) << shift;
            shift += 5;
          } while (integer & 32);
          var shouldNegate = value & 1;
          value >>>= 1;
          if (shouldNegate) {
            value = -0x80000000 | -value;
          }
          state[j] += value;
          return pos;
        }
        function hasMoreVlq(mappings, i, length) {
          if (i >= length) return false;
          return mappings.charCodeAt(i) !== comma;
        }
        function sort(line) {
          line.sort(sortComparator);
        }
        function sortComparator(a, b) {
          return a[0] - b[0];
        }
        function encode(decoded) {
          var state = new Int32Array(5);
          var bufLength = 1024 * 16;
          var subLength = bufLength - 36;
          var buf = new Uint8Array(bufLength);
          var sub = buf.subarray(0, subLength);
          var pos = 0;
          var out = '';
          for (var _i3 = 0; _i3 < decoded.length; _i3++) {
            var line = decoded[_i3];
            if (_i3 > 0) {
              if (pos === bufLength) {
                out += td.decode(buf);
                pos = 0;
              }
              buf[pos++] = semicolon;
            }
            if (line.length === 0) continue;
            state[0] = 0;
            for (var j = 0; j < line.length; j++) {
              var segment = line[j];
              if (pos > subLength) {
                out += td.decode(sub);
                buf.copyWithin(0, subLength, pos);
                pos -= subLength;
              }
              if (j > 0) buf[pos++] = comma;
              pos = encodeInteger(buf, pos, state, segment, 0);
              if (segment.length === 1) continue;
              pos = encodeInteger(buf, pos, state, segment, 1);
              pos = encodeInteger(buf, pos, state, segment, 2);
              pos = encodeInteger(buf, pos, state, segment, 3);
              if (segment.length === 4) continue;
              pos = encodeInteger(buf, pos, state, segment, 4);
            }
          }
          return out + td.decode(buf.subarray(0, pos));
        }
        function encodeInteger(buf, pos, state, segment, j) {
          var next = segment[j];
          var num = next - state[j];
          state[j] = next;
          num = num < 0 ? -num << 1 | 1 : num << 1;
          do {
            var clamped = num & 31;
            num >>>= 5;
            if (num > 0) clamped |= 32;
            buf[pos++] = intToChar[clamped];
          } while (num > 0);
          return pos;
        }
        exports.decode = decode;
        exports.encode = encode;
        Object.defineProperty(exports, '__esModule', {
          value: true
        });
      });
    })(sourcemapCodec_umd, sourcemapCodec_umd.exports);
    return sourcemapCodec_umd.exports;
  }

  var traceMapping_umd = {exports: {}};

  var resolveUri_umd = {exports: {}};

  var hasRequiredResolveUri_umd;
  function requireResolveUri_umd() {
    if (hasRequiredResolveUri_umd) return resolveUri_umd.exports;
    hasRequiredResolveUri_umd = 1;
    (function (module, exports) {
      (function (global, factory) {
        module.exports = factory() ;
      })(commonjsGlobal, function () {
        var schemeRegex = /^[\w+.-]+:\/\//;
        var urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
        var fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
        function isAbsoluteUrl(input) {
          return schemeRegex.test(input);
        }
        function isSchemeRelativeUrl(input) {
          return input.startsWith('//');
        }
        function isAbsolutePath(input) {
          return input.startsWith('/');
        }
        function isFileUrl(input) {
          return input.startsWith('file:');
        }
        function isRelative(input) {
          return /^[.?#]/.test(input);
        }
        function parseAbsoluteUrl(input) {
          var match = urlRegex.exec(input);
          return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');
        }
        function parseFileUrl(input) {
          var match = fileRegex.exec(input);
          var path = match[2];
          return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');
        }
        function makeUrl(scheme, user, host, port, path, query, hash) {
          return {
            scheme: scheme,
            user: user,
            host: host,
            port: port,
            path: path,
            query: query,
            hash: hash,
            type: 7
          };
        }
        function parseUrl(input) {
          if (isSchemeRelativeUrl(input)) {
            var _url = parseAbsoluteUrl('http:' + input);
            _url.scheme = '';
            _url.type = 6;
            return _url;
          }
          if (isAbsolutePath(input)) {
            var _url2 = parseAbsoluteUrl('http://foo.com' + input);
            _url2.scheme = '';
            _url2.host = '';
            _url2.type = 5;
            return _url2;
          }
          if (isFileUrl(input)) return parseFileUrl(input);
          if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);
          var url = parseAbsoluteUrl('http://foo.com/' + input);
          url.scheme = '';
          url.host = '';
          url.type = input ? input.startsWith('?') ? 3 : input.startsWith('#') ? 2 : 4 : 1;
          return url;
        }
        function stripPathFilename(path) {
          if (path.endsWith('/..')) return path;
          var index = path.lastIndexOf('/');
          return path.slice(0, index + 1);
        }
        function mergePaths(url, base) {
          normalizePath(base, base.type);
          if (url.path === '/') {
            url.path = base.path;
          } else {
            url.path = stripPathFilename(base.path) + url.path;
          }
        }
        function normalizePath(url, type) {
          var rel = type <= 4;
          var pieces = url.path.split('/');
          var pointer = 1;
          var positive = 0;
          var addTrailingSlash = false;
          for (var i = 1; i < pieces.length; i++) {
            var piece = pieces[i];
            if (!piece) {
              addTrailingSlash = true;
              continue;
            }
            addTrailingSlash = false;
            if (piece === '.') continue;
            if (piece === '..') {
              if (positive) {
                addTrailingSlash = true;
                positive--;
                pointer--;
              } else if (rel) {
                pieces[pointer++] = piece;
              }
              continue;
            }
            pieces[pointer++] = piece;
            positive++;
          }
          var path = '';
          for (var _i = 1; _i < pointer; _i++) {
            path += '/' + pieces[_i];
          }
          if (!path || addTrailingSlash && !path.endsWith('/..')) {
            path += '/';
          }
          url.path = path;
        }
        function resolve(input, base) {
          if (!input && !base) return '';
          var url = parseUrl(input);
          var inputType = url.type;
          if (base && inputType !== 7) {
            var baseUrl = parseUrl(base);
            var baseType = baseUrl.type;
            switch (inputType) {
              case 1:
                url.hash = baseUrl.hash;
              case 2:
                url.query = baseUrl.query;
              case 3:
              case 4:
                mergePaths(url, baseUrl);
              case 5:
                url.user = baseUrl.user;
                url.host = baseUrl.host;
                url.port = baseUrl.port;
              case 6:
                url.scheme = baseUrl.scheme;
            }
            if (baseType > inputType) inputType = baseType;
          }
          normalizePath(url, inputType);
          var queryHash = url.query + url.hash;
          switch (inputType) {
            case 2:
            case 3:
              return queryHash;
            case 4:
              {
                var path = url.path.slice(1);
                if (!path) return queryHash || '.';
                if (isRelative(base || input) && !isRelative(path)) {
                  return './' + path + queryHash;
                }
                return path + queryHash;
              }
            case 5:
              return url.path + queryHash;
            default:
              return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;
          }
        }
        return resolve;
      });
    })(resolveUri_umd);
    return resolveUri_umd.exports;
  }

  (function (module, exports) {
    (function (global, factory) {
      factory(exports, requireSourcemapCodec_umd(), requireResolveUri_umd()) ;
    })(commonjsGlobal, function (exports, sourcemapCodec, resolveUri) {

      function resolve(input, base) {
        if (base && !base.endsWith('/')) base += '/';
        return resolveUri(input, base);
      }
      function stripFilename(path) {
        if (!path) return '';
        var index = path.lastIndexOf('/');
        return path.slice(0, index + 1);
      }
      var COLUMN = 0;
      var SOURCES_INDEX = 1;
      var SOURCE_LINE = 2;
      var SOURCE_COLUMN = 3;
      var NAMES_INDEX = 4;
      var REV_GENERATED_LINE = 1;
      var REV_GENERATED_COLUMN = 2;
      function maybeSort(mappings, owned) {
        var unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
        if (unsortedIndex === mappings.length) return mappings;
        if (!owned) mappings = mappings.slice();
        for (var i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
          mappings[i] = sortSegments(mappings[i], owned);
        }
        return mappings;
      }
      function nextUnsortedSegmentLine(mappings, start) {
        for (var i = start; i < mappings.length; i++) {
          if (!isSorted(mappings[i])) return i;
        }
        return mappings.length;
      }
      function isSorted(line) {
        for (var j = 1; j < line.length; j++) {
          if (line[j][COLUMN] < line[j - 1][COLUMN]) {
            return false;
          }
        }
        return true;
      }
      function sortSegments(line, owned) {
        if (!owned) line = line.slice();
        return line.sort(sortComparator);
      }
      function sortComparator(a, b) {
        return a[COLUMN] - b[COLUMN];
      }
      var found = false;
      function binarySearch(haystack, needle, low, high) {
        while (low <= high) {
          var mid = low + (high - low >> 1);
          var cmp = haystack[mid][COLUMN] - needle;
          if (cmp === 0) {
            found = true;
            return mid;
          }
          if (cmp < 0) {
            low = mid + 1;
          } else {
            high = mid - 1;
          }
        }
        found = false;
        return low - 1;
      }
      function upperBound(haystack, needle, index) {
        for (var i = index + 1; i < haystack.length; index = i++) {
          if (haystack[i][COLUMN] !== needle) break;
        }
        return index;
      }
      function lowerBound(haystack, needle, index) {
        for (var i = index - 1; i >= 0; index = i--) {
          if (haystack[i][COLUMN] !== needle) break;
        }
        return index;
      }
      function memoizedState() {
        return {
          lastKey: -1,
          lastNeedle: -1,
          lastIndex: -1
        };
      }
      function memoizedBinarySearch(haystack, needle, state, key) {
        var lastKey = state.lastKey,
          lastNeedle = state.lastNeedle,
          lastIndex = state.lastIndex;
        var low = 0;
        var high = haystack.length - 1;
        if (key === lastKey) {
          if (needle === lastNeedle) {
            found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;
            return lastIndex;
          }
          if (needle >= lastNeedle) {
            low = lastIndex === -1 ? 0 : lastIndex;
          } else {
            high = lastIndex;
          }
        }
        state.lastKey = key;
        state.lastNeedle = needle;
        return state.lastIndex = binarySearch(haystack, needle, low, high);
      }
      function buildBySources(decoded, memos) {
        var sources = memos.map(buildNullArray);
        for (var i = 0; i < decoded.length; i++) {
          var line = decoded[i];
          for (var j = 0; j < line.length; j++) {
            var seg = line[j];
            if (seg.length === 1) continue;
            var _sourceIndex = seg[SOURCES_INDEX];
            var sourceLine = seg[SOURCE_LINE];
            var sourceColumn = seg[SOURCE_COLUMN];
            var originalSource = sources[_sourceIndex];
            var originalLine = originalSource[sourceLine] || (originalSource[sourceLine] = []);
            var memo = memos[_sourceIndex];
            var index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));
            memo.lastIndex = ++index;
            insert(originalLine, index, [sourceColumn, i, seg[COLUMN]]);
          }
        }
        return sources;
      }
      function insert(array, index, value) {
        for (var i = array.length; i > index; i--) {
          array[i] = array[i - 1];
        }
        array[index] = value;
      }
      function buildNullArray() {
        return {
          __proto__: null
        };
      }
      var AnyMap = function AnyMap(map, mapUrl) {
        var parsed = parse(map);
        if (!('sections' in parsed)) {
          return new TraceMap(parsed, mapUrl);
        }
        var mappings = [];
        var sources = [];
        var sourcesContent = [];
        var names = [];
        var ignoreList = [];
        recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, ignoreList, 0, 0, Infinity, Infinity);
        var joined = {
          version: 3,
          file: parsed.file,
          names: names,
          sources: sources,
          sourcesContent: sourcesContent,
          mappings: mappings,
          ignoreList: ignoreList
        };
        return presortedDecodedMap(joined);
      };
      function parse(map) {
        return typeof map === 'string' ? JSON.parse(map) : map;
      }
      function recurse(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {
        var sections = input.sections;
        for (var i = 0; i < sections.length; i++) {
          var _sections$i = sections[i],
            map = _sections$i.map,
            offset = _sections$i.offset;
          var sl = stopLine;
          var sc = stopColumn;
          if (i + 1 < sections.length) {
            var nextOffset = sections[i + 1].offset;
            sl = Math.min(stopLine, lineOffset + nextOffset.line);
            if (sl === stopLine) {
              sc = Math.min(stopColumn, columnOffset + nextOffset.column);
            } else if (sl < stopLine) {
              sc = columnOffset + nextOffset.column;
            }
          }
          addSection(map, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset + offset.line, columnOffset + offset.column, sl, sc);
        }
      }
      function addSection(input, mapUrl, mappings, sources, sourcesContent, names, ignoreList, lineOffset, columnOffset, stopLine, stopColumn) {
        var parsed = parse(input);
        if ('sections' in parsed) return recurse.apply(void 0, arguments);
        var map = new TraceMap(parsed, mapUrl);
        var sourcesOffset = sources.length;
        var namesOffset = names.length;
        var decoded = decodedMappings(map);
        var resolvedSources = map.resolvedSources,
          contents = map.sourcesContent,
          ignores = map.ignoreList;
        append(sources, resolvedSources);
        append(names, map.names);
        if (contents) append(sourcesContent, contents);else for (var i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);
        if (ignores) for (var _i = 0; _i < ignores.length; _i++) ignoreList.push(ignores[_i] + sourcesOffset);
        for (var _i2 = 0; _i2 < decoded.length; _i2++) {
          var lineI = lineOffset + _i2;
          if (lineI > stopLine) return;
          var out = getLine(mappings, lineI);
          var cOffset = _i2 === 0 ? columnOffset : 0;
          var line = decoded[_i2];
          for (var j = 0; j < line.length; j++) {
            var seg = line[j];
            var column = cOffset + seg[COLUMN];
            if (lineI === stopLine && column >= stopColumn) return;
            if (seg.length === 1) {
              out.push([column]);
              continue;
            }
            var sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];
            var sourceLine = seg[SOURCE_LINE];
            var sourceColumn = seg[SOURCE_COLUMN];
            out.push(seg.length === 4 ? [column, sourcesIndex, sourceLine, sourceColumn] : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);
          }
        }
      }
      function append(arr, other) {
        for (var i = 0; i < other.length; i++) arr.push(other[i]);
      }
      function getLine(arr, index) {
        for (var i = arr.length; i <= index; i++) arr[i] = [];
        return arr[index];
      }
      var LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
      var COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
      var LEAST_UPPER_BOUND = -1;
      var GREATEST_LOWER_BOUND = 1;
      var TraceMap = _createClass(function TraceMap(map, mapUrl) {
        var isString = typeof map === 'string';
        if (!isString && map._decodedMemo) return map;
        var parsed = isString ? JSON.parse(map) : map;
        var version = parsed.version,
          file = parsed.file,
          names = parsed.names,
          sourceRoot = parsed.sourceRoot,
          sources = parsed.sources,
          sourcesContent = parsed.sourcesContent;
        this.version = version;
        this.file = file;
        this.names = names || [];
        this.sourceRoot = sourceRoot;
        this.sources = sources;
        this.sourcesContent = sourcesContent;
        this.ignoreList = parsed.ignoreList || parsed.x_google_ignoreList || undefined;
        var from = resolve(sourceRoot || '', stripFilename(mapUrl));
        this.resolvedSources = sources.map(function (s) {
          return resolve(s || '', from);
        });
        var mappings = parsed.mappings;
        if (typeof mappings === 'string') {
          this._encoded = mappings;
          this._decoded = undefined;
        } else {
          this._encoded = undefined;
          this._decoded = maybeSort(mappings, isString);
        }
        this._decodedMemo = memoizedState();
        this._bySources = undefined;
        this._bySourceMemos = undefined;
      });
      function cast(map) {
        return map;
      }
      function encodedMappings(map) {
        var _a;
        var _b;
        return (_a = (_b = cast(map))._encoded) !== null && _a !== void 0 ? _a : _b._encoded = sourcemapCodec.encode(cast(map)._decoded);
      }
      function decodedMappings(map) {
        var _a;
        return (_a = cast(map))._decoded || (_a._decoded = sourcemapCodec.decode(cast(map)._encoded));
      }
      function traceSegment(map, line, column) {
        var decoded = decodedMappings(map);
        if (line >= decoded.length) return null;
        var segments = decoded[line];
        var index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, GREATEST_LOWER_BOUND);
        return index === -1 ? null : segments[index];
      }
      function originalPositionFor(map, needle) {
        var line = needle.line,
          column = needle.column,
          bias = needle.bias;
        line--;
        if (line < 0) throw new Error(LINE_GTR_ZERO);
        if (column < 0) throw new Error(COL_GTR_EQ_ZERO);
        var decoded = decodedMappings(map);
        if (line >= decoded.length) return OMapping(null, null, null, null);
        var segments = decoded[line];
        var index = traceSegmentInternal(segments, cast(map)._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
        if (index === -1) return OMapping(null, null, null, null);
        var segment = segments[index];
        if (segment.length === 1) return OMapping(null, null, null, null);
        var names = map.names,
          resolvedSources = map.resolvedSources;
        return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
      }
      function generatedPositionFor(map, needle) {
        var source = needle.source,
          line = needle.line,
          column = needle.column,
          bias = needle.bias;
        return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);
      }
      function allGeneratedPositionsFor(map, needle) {
        var source = needle.source,
          line = needle.line,
          column = needle.column,
          bias = needle.bias;
        return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);
      }
      function eachMapping(map, cb) {
        var decoded = decodedMappings(map);
        var names = map.names,
          resolvedSources = map.resolvedSources;
        for (var i = 0; i < decoded.length; i++) {
          var line = decoded[i];
          for (var j = 0; j < line.length; j++) {
            var seg = line[j];
            var generatedLine = i + 1;
            var generatedColumn = seg[0];
            var source = null;
            var originalLine = null;
            var originalColumn = null;
            var name = null;
            if (seg.length !== 1) {
              source = resolvedSources[seg[1]];
              originalLine = seg[2] + 1;
              originalColumn = seg[3];
            }
            if (seg.length === 5) name = names[seg[4]];
            cb({
              generatedLine: generatedLine,
              generatedColumn: generatedColumn,
              source: source,
              originalLine: originalLine,
              originalColumn: originalColumn,
              name: name
            });
          }
        }
      }
      function sourceIndex(map, source) {
        var sources = map.sources,
          resolvedSources = map.resolvedSources;
        var index = sources.indexOf(source);
        if (index === -1) index = resolvedSources.indexOf(source);
        return index;
      }
      function sourceContentFor(map, source) {
        var sourcesContent = map.sourcesContent;
        if (sourcesContent == null) return null;
        var index = sourceIndex(map, source);
        return index === -1 ? null : sourcesContent[index];
      }
      function isIgnored(map, source) {
        var ignoreList = map.ignoreList;
        if (ignoreList == null) return false;
        var index = sourceIndex(map, source);
        return index === -1 ? false : ignoreList.includes(index);
      }
      function presortedDecodedMap(map, mapUrl) {
        var tracer = new TraceMap(clone(map, []), mapUrl);
        cast(tracer)._decoded = map.mappings;
        return tracer;
      }
      function decodedMap(map) {
        return clone(map, decodedMappings(map));
      }
      function encodedMap(map) {
        return clone(map, encodedMappings(map));
      }
      function clone(map, mappings) {
        return {
          version: map.version,
          file: map.file,
          names: map.names,
          sourceRoot: map.sourceRoot,
          sources: map.sources,
          sourcesContent: map.sourcesContent,
          mappings: mappings,
          ignoreList: map.ignoreList || map.x_google_ignoreList
        };
      }
      function OMapping(source, line, column, name) {
        return {
          source: source,
          line: line,
          column: column,
          name: name
        };
      }
      function GMapping(line, column) {
        return {
          line: line,
          column: column
        };
      }
      function traceSegmentInternal(segments, memo, line, column, bias) {
        var index = memoizedBinarySearch(segments, column, memo, line);
        if (found) {
          index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
        } else if (bias === LEAST_UPPER_BOUND) index++;
        if (index === -1 || index === segments.length) return -1;
        return index;
      }
      function sliceGeneratedPositions(segments, memo, line, column, bias) {
        var min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);
        if (!found && bias === LEAST_UPPER_BOUND) min++;
        if (min === -1 || min === segments.length) return [];
        var matchedColumn = found ? column : segments[min][COLUMN];
        if (!found) min = lowerBound(segments, matchedColumn, min);
        var max = upperBound(segments, matchedColumn, min);
        var result = [];
        for (; min <= max; min++) {
          var segment = segments[min];
          result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));
        }
        return result;
      }
      function generatedPosition(map, source, line, column, bias, all) {
        var _a;
        line--;
        if (line < 0) throw new Error(LINE_GTR_ZERO);
        if (column < 0) throw new Error(COL_GTR_EQ_ZERO);
        var sources = map.sources,
          resolvedSources = map.resolvedSources;
        var sourceIndex = sources.indexOf(source);
        if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);
        if (sourceIndex === -1) return all ? [] : GMapping(null, null);
        var generated = (_a = cast(map))._bySources || (_a._bySources = buildBySources(decodedMappings(map), cast(map)._bySourceMemos = sources.map(memoizedState)));
        var segments = generated[sourceIndex][line];
        if (segments == null) return all ? [] : GMapping(null, null);
        var memo = cast(map)._bySourceMemos[sourceIndex];
        if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);
        var index = traceSegmentInternal(segments, memo, line, column, bias);
        if (index === -1) return GMapping(null, null);
        var segment = segments[index];
        return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);
      }
      exports.AnyMap = AnyMap;
      exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND;
      exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND;
      exports.TraceMap = TraceMap;
      exports.allGeneratedPositionsFor = allGeneratedPositionsFor;
      exports.decodedMap = decodedMap;
      exports.decodedMappings = decodedMappings;
      exports.eachMapping = eachMapping;
      exports.encodedMap = encodedMap;
      exports.encodedMappings = encodedMappings;
      exports.generatedPositionFor = generatedPositionFor;
      exports.isIgnored = isIgnored;
      exports.originalPositionFor = originalPositionFor;
      exports.presortedDecodedMap = presortedDecodedMap;
      exports.sourceContentFor = sourceContentFor;
      exports.traceSegment = traceSegment;
    });
  })(traceMapping_umd, traceMapping_umd.exports);
  var traceMapping_umdExports = traceMapping_umd.exports;

  (function (module, exports) {
    (function (global, factory) {
      factory(exports, requireSetArray_umd(), requireSourcemapCodec_umd(), traceMapping_umdExports) ;
    })(commonjsGlobal, function (exports, setArray, sourcemapCodec, traceMapping) {

      var COLUMN = 0;
      var SOURCES_INDEX = 1;
      var SOURCE_LINE = 2;
      var SOURCE_COLUMN = 3;
      var NAMES_INDEX = 4;
      var NO_NAME = -1;
      var GenMapping = _createClass(function GenMapping(_temp) {
        var _ref = _temp === void 0 ? {} : _temp,
          file = _ref.file,
          sourceRoot = _ref.sourceRoot;
        this._names = new setArray.SetArray();
        this._sources = new setArray.SetArray();
        this._sourcesContent = [];
        this._mappings = [];
        this.file = file;
        this.sourceRoot = sourceRoot;
        this._ignoreList = new setArray.SetArray();
      });
      function cast(map) {
        return map;
      }
      function addSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
        return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
      }
      function addMapping(map, mapping) {
        return addMappingInternal(false, map, mapping);
      }
      var maybeAddSegment = function maybeAddSegment(map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
        return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
      };
      var maybeAddMapping = function maybeAddMapping(map, mapping) {
        return addMappingInternal(true, map, mapping);
      };
      function setSourceContent(map, source, content) {
        var _cast = cast(map),
          sources = _cast._sources,
          sourcesContent = _cast._sourcesContent;
        var index = setArray.put(sources, source);
        sourcesContent[index] = content;
      }
      function setIgnore(map, source, ignore) {
        if (ignore === void 0) {
          ignore = true;
        }
        var _cast2 = cast(map),
          sources = _cast2._sources,
          sourcesContent = _cast2._sourcesContent,
          ignoreList = _cast2._ignoreList;
        var index = setArray.put(sources, source);
        if (index === sourcesContent.length) sourcesContent[index] = null;
        if (ignore) setArray.put(ignoreList, index);else setArray.remove(ignoreList, index);
      }
      function toDecodedMap(map) {
        var _cast3 = cast(map),
          mappings = _cast3._mappings,
          sources = _cast3._sources,
          sourcesContent = _cast3._sourcesContent,
          names = _cast3._names,
          ignoreList = _cast3._ignoreList;
        removeEmptyFinalLines(mappings);
        return {
          version: 3,
          file: map.file || undefined,
          names: names.array,
          sourceRoot: map.sourceRoot || undefined,
          sources: sources.array,
          sourcesContent: sourcesContent,
          mappings: mappings,
          ignoreList: ignoreList.array
        };
      }
      function toEncodedMap(map) {
        var decoded = toDecodedMap(map);
        return Object.assign(Object.assign({}, decoded), {
          mappings: sourcemapCodec.encode(decoded.mappings)
        });
      }
      function fromMap(input) {
        var map = new traceMapping.TraceMap(input);
        var gen = new GenMapping({
          file: map.file,
          sourceRoot: map.sourceRoot
        });
        putAll(cast(gen)._names, map.names);
        putAll(cast(gen)._sources, map.sources);
        cast(gen)._sourcesContent = map.sourcesContent || map.sources.map(function () {
          return null;
        });
        cast(gen)._mappings = traceMapping.decodedMappings(map);
        if (map.ignoreList) putAll(cast(gen)._ignoreList, map.ignoreList);
        return gen;
      }
      function allMappings(map) {
        var out = [];
        var _cast4 = cast(map),
          mappings = _cast4._mappings,
          sources = _cast4._sources,
          names = _cast4._names;
        for (var i = 0; i < mappings.length; i++) {
          var line = mappings[i];
          for (var j = 0; j < line.length; j++) {
            var seg = line[j];
            var generated = {
              line: i + 1,
              column: seg[COLUMN]
            };
            var source = undefined;
            var original = undefined;
            var name = undefined;
            if (seg.length !== 1) {
              source = sources.array[seg[SOURCES_INDEX]];
              original = {
                line: seg[SOURCE_LINE] + 1,
                column: seg[SOURCE_COLUMN]
              };
              if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];
            }
            out.push({
              generated: generated,
              source: source,
              original: original,
              name: name
            });
          }
        }
        return out;
      }
      function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
        var _cast5 = cast(map),
          mappings = _cast5._mappings,
          sources = _cast5._sources,
          sourcesContent = _cast5._sourcesContent,
          names = _cast5._names;
        var line = getLine(mappings, genLine);
        var index = getColumnIndex(line, genColumn);
        if (!source) {
          if (skipable && skipSourceless(line, index)) return;
          return insert(line, index, [genColumn]);
        }
        var sourcesIndex = setArray.put(sources, source);
        var namesIndex = name ? setArray.put(names, name) : NO_NAME;
        if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null;
        if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
          return;
        }
        return insert(line, index, name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
      }
      function getLine(mappings, index) {
        for (var i = mappings.length; i <= index; i++) {
          mappings[i] = [];
        }
        return mappings[index];
      }
      function getColumnIndex(line, genColumn) {
        var index = line.length;
        for (var i = index - 1; i >= 0; index = i--) {
          var current = line[i];
          if (genColumn >= current[COLUMN]) break;
        }
        return index;
      }
      function insert(array, index, value) {
        for (var i = array.length; i > index; i--) {
          array[i] = array[i - 1];
        }
        array[index] = value;
      }
      function removeEmptyFinalLines(mappings) {
        var length = mappings.length;
        var len = length;
        for (var i = len - 1; i >= 0; len = i, i--) {
          if (mappings[i].length > 0) break;
        }
        if (len < length) mappings.length = len;
      }
      function putAll(setarr, array) {
        for (var i = 0; i < array.length; i++) setArray.put(setarr, array[i]);
      }
      function skipSourceless(line, index) {
        if (index === 0) return true;
        var prev = line[index - 1];
        return prev.length === 1;
      }
      function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
        if (index === 0) return false;
        var prev = line[index - 1];
        if (prev.length === 1) return false;
        return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME);
      }
      function addMappingInternal(skipable, map, mapping) {
        var generated = mapping.generated,
          source = mapping.source,
          original = mapping.original,
          name = mapping.name,
          content = mapping.content;
        if (!source) {
          return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null);
        }
        return addSegmentInternal(skipable, map, generated.line - 1, generated.column, source, original.line - 1, original.column, name, content);
      }
      exports.GenMapping = GenMapping;
      exports.addMapping = addMapping;
      exports.addSegment = addSegment;
      exports.allMappings = allMappings;
      exports.fromMap = fromMap;
      exports.maybeAddMapping = maybeAddMapping;
      exports.maybeAddSegment = maybeAddSegment;
      exports.setIgnore = setIgnore;
      exports.setSourceContent = setSourceContent;
      exports.toDecodedMap = toDecodedMap;
      exports.toEncodedMap = toEncodedMap;
      Object.defineProperty(exports, '__esModule', {
        value: true
      });
    });
  })(genMapping_umd$1, genMapping_umd$1.exports);
  var genMapping_umdExports$1 = genMapping_umd$1.exports;

  var SourceMap$1 = function () {
    function SourceMap(opts, code) {
      var _opts$sourceFileName;
      this._map = void 0;
      this._rawMappings = void 0;
      this._sourceFileName = void 0;
      this._lastGenLine = 0;
      this._lastSourceLine = 0;
      this._lastSourceColumn = 0;
      this._inputMap = void 0;
      var map = this._map = new genMapping_umdExports$1.GenMapping({
        sourceRoot: opts.sourceRoot
      });
      this._sourceFileName = (_opts$sourceFileName = opts.sourceFileName) == null ? void 0 : _opts$sourceFileName.replace(/\\/g, "/");
      this._rawMappings = undefined;
      if (opts.inputSourceMap) {
        this._inputMap = new traceMapping_umdExports.TraceMap(opts.inputSourceMap);
        var resolvedSources = this._inputMap.resolvedSources;
        if (resolvedSources.length) {
          for (var i = 0; i < resolvedSources.length; i++) {
            var _this$_inputMap$sourc;
            genMapping_umdExports$1.setSourceContent(map, resolvedSources[i], (_this$_inputMap$sourc = this._inputMap.sourcesContent) == null ? void 0 : _this$_inputMap$sourc[i]);
          }
        }
      }
      if (typeof code === "string" && !opts.inputSourceMap) {
        genMapping_umdExports$1.setSourceContent(map, this._sourceFileName, code);
      } else if (typeof code === "object") {
        for (var _i = 0, _Object$keys = Object.keys(code); _i < _Object$keys.length; _i++) {
          var sourceFileName = _Object$keys[_i];
          genMapping_umdExports$1.setSourceContent(map, sourceFileName.replace(/\\/g, "/"), code[sourceFileName]);
        }
      }
    }
    var _proto = SourceMap.prototype;
    _proto.get = function get() {
      return genMapping_umdExports$1.toEncodedMap(this._map);
    };
    _proto.getDecoded = function getDecoded() {
      return genMapping_umdExports$1.toDecodedMap(this._map);
    };
    _proto.getRawMappings = function getRawMappings() {
      return this._rawMappings || (this._rawMappings = genMapping_umdExports$1.allMappings(this._map));
    };
    _proto.mark = function mark(generated, line, column, identifierName, identifierNamePos, filename) {
      var _originalMapping;
      this._rawMappings = undefined;
      var originalMapping;
      if (line != null) {
        if (this._inputMap) {
          originalMapping = traceMapping_umdExports.originalPositionFor(this._inputMap, {
            line: line,
            column: column
          });
          if (!originalMapping.name && identifierNamePos) {
            var originalIdentifierMapping = traceMapping_umdExports.originalPositionFor(this._inputMap, identifierNamePos);
            if (originalIdentifierMapping.name) {
              identifierName = originalIdentifierMapping.name;
            }
          }
        } else {
          originalMapping = {
            source: (filename == null ? void 0 : filename.replace(/\\/g, "/")) || this._sourceFileName,
            line: line,
            column: column
          };
        }
      }
      genMapping_umdExports$1.maybeAddMapping(this._map, {
        name: identifierName,
        generated: generated,
        source: (_originalMapping = originalMapping) == null ? void 0 : _originalMapping.source,
        original: originalMapping
      });
    };
    return _createClass(SourceMap);
  }();

  var Buffer = function () {
    function Buffer(map, indentChar) {
      this._map = null;
      this._buf = "";
      this._str = "";
      this._appendCount = 0;
      this._last = 0;
      this._queue = [];
      this._queueCursor = 0;
      this._canMarkIdName = true;
      this._indentChar = "";
      this._fastIndentations = [];
      this._position = {
        line: 1,
        column: 0
      };
      this._sourcePosition = {
        identifierName: undefined,
        identifierNamePos: undefined,
        line: undefined,
        column: undefined,
        filename: undefined
      };
      this._map = map;
      this._indentChar = indentChar;
      for (var i = 0; i < 64; i++) {
        this._fastIndentations.push(indentChar.repeat(i));
      }
      this._allocQueue();
    }
    var _proto = Buffer.prototype;
    _proto._allocQueue = function _allocQueue() {
      var queue = this._queue;
      for (var i = 0; i < 16; i++) {
        queue.push({
          "char": 0,
          repeat: 1,
          line: undefined,
          column: undefined,
          identifierName: undefined,
          identifierNamePos: undefined,
          filename: ""
        });
      }
    };
    _proto._pushQueue = function _pushQueue(_char, repeat, line, column, filename) {
      var cursor = this._queueCursor;
      if (cursor === this._queue.length) {
        this._allocQueue();
      }
      var item = this._queue[cursor];
      item["char"] = _char;
      item.repeat = repeat;
      item.line = line;
      item.column = column;
      item.filename = filename;
      this._queueCursor++;
    };
    _proto._popQueue = function _popQueue() {
      if (this._queueCursor === 0) {
        throw new Error("Cannot pop from empty queue");
      }
      return this._queue[--this._queueCursor];
    };
    _proto.get = function get() {
      this._flush();
      var map = this._map;
      var result = {
        code: (this._buf + this._str).trimRight(),
        decodedMap: map == null ? void 0 : map.getDecoded(),
        get __mergedMap() {
          return this.map;
        },
        get map() {
          var resultMap = map ? map.get() : null;
          result.map = resultMap;
          return resultMap;
        },
        set map(value) {
          Object.defineProperty(result, "map", {
            value: value,
            writable: true
          });
        },
        get rawMappings() {
          var mappings = map == null ? void 0 : map.getRawMappings();
          result.rawMappings = mappings;
          return mappings;
        },
        set rawMappings(value) {
          Object.defineProperty(result, "rawMappings", {
            value: value,
            writable: true
          });
        }
      };
      return result;
    };
    _proto.append = function append(str, maybeNewline) {
      this._flush();
      this._append(str, this._sourcePosition, maybeNewline);
    };
    _proto.appendChar = function appendChar(_char2) {
      this._flush();
      this._appendChar(_char2, 1, this._sourcePosition);
    };
    _proto.queue = function queue(_char3) {
      if (_char3 === 10) {
        while (this._queueCursor !== 0) {
          var _char4 = this._queue[this._queueCursor - 1]["char"];
          if (_char4 !== 32 && _char4 !== 9) {
            break;
          }
          this._queueCursor--;
        }
      }
      var sourcePosition = this._sourcePosition;
      this._pushQueue(_char3, 1, sourcePosition.line, sourcePosition.column, sourcePosition.filename);
    };
    _proto.queueIndentation = function queueIndentation(repeat) {
      if (repeat === 0) return;
      this._pushQueue(-1, repeat, undefined, undefined, undefined);
    };
    _proto._flush = function _flush() {
      var queueCursor = this._queueCursor;
      var queue = this._queue;
      for (var i = 0; i < queueCursor; i++) {
        var item = queue[i];
        this._appendChar(item["char"], item.repeat, item);
      }
      this._queueCursor = 0;
    };
    _proto._appendChar = function _appendChar(_char5, repeat, sourcePos) {
      this._last = _char5;
      if (_char5 === -1) {
        var fastIndentation = this._fastIndentations[repeat];
        if (fastIndentation !== undefined) {
          this._str += fastIndentation;
        } else {
          this._str += repeat > 1 ? this._indentChar.repeat(repeat) : this._indentChar;
        }
      } else {
        this._str += repeat > 1 ? String.fromCharCode(_char5).repeat(repeat) : String.fromCharCode(_char5);
      }
      if (_char5 !== 10) {
        this._mark(sourcePos.line, sourcePos.column, sourcePos.identifierName, sourcePos.identifierNamePos, sourcePos.filename);
        this._position.column += repeat;
      } else {
        this._position.line++;
        this._position.column = 0;
      }
      if (this._canMarkIdName) {
        sourcePos.identifierName = undefined;
        sourcePos.identifierNamePos = undefined;
      }
    };
    _proto._append = function _append(str, sourcePos, maybeNewline) {
      var len = str.length;
      var position = this._position;
      this._last = str.charCodeAt(len - 1);
      if (++this._appendCount > 4096) {
        +this._str;
        this._buf += this._str;
        this._str = str;
        this._appendCount = 0;
      } else {
        this._str += str;
      }
      if (!maybeNewline && !this._map) {
        position.column += len;
        return;
      }
      var column = sourcePos.column,
        identifierName = sourcePos.identifierName,
        identifierNamePos = sourcePos.identifierNamePos,
        filename = sourcePos.filename;
      var line = sourcePos.line;
      if ((identifierName != null || identifierNamePos != null) && this._canMarkIdName) {
        sourcePos.identifierName = undefined;
        sourcePos.identifierNamePos = undefined;
      }
      var i = str.indexOf("\n");
      var last = 0;
      if (i !== 0) {
        this._mark(line, column, identifierName, identifierNamePos, filename);
      }
      while (i !== -1) {
        position.line++;
        position.column = 0;
        last = i + 1;
        if (last < len && line !== undefined) {
          this._mark(++line, 0, null, null, filename);
        }
        i = str.indexOf("\n", last);
      }
      position.column += len - last;
    };
    _proto._mark = function _mark(line, column, identifierName, identifierNamePos, filename) {
      var _this$_map;
      (_this$_map = this._map) == null || _this$_map.mark(this._position, line, column, identifierName, identifierNamePos, filename);
    };
    _proto.removeTrailingNewline = function removeTrailingNewline() {
      var queueCursor = this._queueCursor;
      if (queueCursor !== 0 && this._queue[queueCursor - 1]["char"] === 10) {
        this._queueCursor--;
      }
    };
    _proto.removeLastSemicolon = function removeLastSemicolon() {
      var queueCursor = this._queueCursor;
      if (queueCursor !== 0 && this._queue[queueCursor - 1]["char"] === 59) {
        this._queueCursor--;
      }
    };
    _proto.getLastChar = function getLastChar() {
      var queueCursor = this._queueCursor;
      return queueCursor !== 0 ? this._queue[queueCursor - 1]["char"] : this._last;
    };
    _proto.getNewlineCount = function getNewlineCount() {
      var queueCursor = this._queueCursor;
      var count = 0;
      if (queueCursor === 0) return this._last === 10 ? 1 : 0;
      for (var i = queueCursor - 1; i >= 0; i--) {
        if (this._queue[i]["char"] !== 10) {
          break;
        }
        count++;
      }
      return count === queueCursor && this._last === 10 ? count + 1 : count;
    };
    _proto.endsWithCharAndNewline = function endsWithCharAndNewline() {
      var queue = this._queue;
      var queueCursor = this._queueCursor;
      if (queueCursor !== 0) {
        var lastCp = queue[queueCursor - 1]["char"];
        if (lastCp !== 10) return;
        if (queueCursor > 1) {
          return queue[queueCursor - 2]["char"];
        } else {
          return this._last;
        }
      }
    };
    _proto.hasContent = function hasContent() {
      return this._queueCursor !== 0 || !!this._last;
    };
    _proto.exactSource = function exactSource(loc, cb) {
      if (!this._map) {
        cb();
        return;
      }
      this.source("start", loc);
      var identifierName = loc.identifierName;
      var sourcePos = this._sourcePosition;
      if (identifierName) {
        this._canMarkIdName = false;
        sourcePos.identifierName = identifierName;
      }
      cb();
      if (identifierName) {
        this._canMarkIdName = true;
        sourcePos.identifierName = undefined;
        sourcePos.identifierNamePos = undefined;
      }
      this.source("end", loc);
    };
    _proto.source = function source(prop, loc) {
      if (!this._map) return;
      this._normalizePosition(prop, loc, 0);
    };
    _proto.sourceWithOffset = function sourceWithOffset(prop, loc, columnOffset) {
      if (!this._map) return;
      this._normalizePosition(prop, loc, columnOffset);
    };
    _proto._normalizePosition = function _normalizePosition(prop, loc, columnOffset) {
      var pos = loc[prop];
      var target = this._sourcePosition;
      if (pos) {
        target.line = pos.line;
        target.column = Math.max(pos.column + columnOffset, 0);
        target.filename = loc.filename;
      }
    };
    _proto.getCurrentColumn = function getCurrentColumn() {
      var queue = this._queue;
      var queueCursor = this._queueCursor;
      var lastIndex = -1;
      var len = 0;
      for (var i = 0; i < queueCursor; i++) {
        var item = queue[i];
        if (item["char"] === 10) {
          lastIndex = len;
        }
        len += item.repeat;
      }
      return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex;
    };
    _proto.getCurrentLine = function getCurrentLine() {
      var count = 0;
      var queue = this._queue;
      for (var i = 0; i < this._queueCursor; i++) {
        if (queue[i]["char"] === 10) {
          count++;
        }
      }
      return this._position.line + count;
    };
    return _createClass(Buffer);
  }();

  var FLIPPED_ALIAS_KEYS$1 = FLIPPED_ALIAS_KEYS$3,
    isArrayExpression = isArrayExpression$2,
    isAssignmentExpression$1 = isAssignmentExpression$2,
    isBinary = isBinary$2,
    isBlockStatement$2 = isBlockStatement$3,
    isCallExpression$5 = isCallExpression$8,
    isFunction$3 = isFunction$5,
    isIdentifier$b = isIdentifier$f,
    isLiteral$3 = isLiteral$5,
    isMemberExpression$5 = isMemberExpression$8,
    isObjectExpression$1 = isObjectExpression$3,
    isOptionalCallExpression$1 = isOptionalCallExpression$2,
    isOptionalMemberExpression$2 = isOptionalMemberExpression$3,
    isStringLiteral$2 = isStringLiteral$5;
  function crawlInternal(node, state) {
    if (!node) return state;
    if (isMemberExpression$5(node) || isOptionalMemberExpression$2(node)) {
      crawlInternal(node.object, state);
      if (node.computed) crawlInternal(node.property, state);
    } else if (isBinary(node) || isAssignmentExpression$1(node)) {
      crawlInternal(node.left, state);
      crawlInternal(node.right, state);
    } else if (isCallExpression$5(node) || isOptionalCallExpression$1(node)) {
      state.hasCall = true;
      crawlInternal(node.callee, state);
    } else if (isFunction$3(node)) {
      state.hasFunction = true;
    } else if (isIdentifier$b(node)) {
      state.hasHelper = state.hasHelper || node.callee && isHelper(node.callee);
    }
    return state;
  }
  function crawl(node) {
    return crawlInternal(node, {
      hasCall: false,
      hasFunction: false,
      hasHelper: false
    });
  }
  function isHelper(node) {
    if (!node) return false;
    if (isMemberExpression$5(node)) {
      return isHelper(node.object) || isHelper(node.property);
    } else if (isIdentifier$b(node)) {
      return node.name === "require" || node.name.charCodeAt(0) === 95;
    } else if (isCallExpression$5(node)) {
      return isHelper(node.callee);
    } else if (isBinary(node) || isAssignmentExpression$1(node)) {
      return isIdentifier$b(node.left) && isHelper(node.left) || isHelper(node.right);
    } else {
      return false;
    }
  }
  function isType$1(node) {
    return isLiteral$3(node) || isObjectExpression$1(node) || isArrayExpression(node) || isIdentifier$b(node) || isMemberExpression$5(node);
  }
  var nodes = {
    AssignmentExpression: function AssignmentExpression(node) {
      var state = crawl(node.right);
      if (state.hasCall && state.hasHelper || state.hasFunction) {
        return state.hasFunction ? 1 | 2 : 2;
      }
    },
    SwitchCase: function SwitchCase(node, parent) {
      return (!!node.consequent.length || parent.cases[0] === node ? 1 : 0) | (!node.consequent.length && parent.cases[parent.cases.length - 1] === node ? 2 : 0);
    },
    LogicalExpression: function LogicalExpression(node) {
      if (isFunction$3(node.left) || isFunction$3(node.right)) {
        return 2;
      }
    },
    Literal: function Literal(node) {
      if (isStringLiteral$2(node) && node.value === "use strict") {
        return 2;
      }
    },
    CallExpression: function CallExpression(node) {
      if (isFunction$3(node.callee) || isHelper(node)) {
        return 1 | 2;
      }
    },
    OptionalCallExpression: function OptionalCallExpression(node) {
      if (isFunction$3(node.callee)) {
        return 1 | 2;
      }
    },
    VariableDeclaration: function VariableDeclaration(node) {
      for (var i = 0; i < node.declarations.length; i++) {
        var declar = node.declarations[i];
        var enabled = isHelper(declar.id) && !isType$1(declar.init);
        if (!enabled && declar.init) {
          var state = crawl(declar.init);
          enabled = isHelper(declar.init) && state.hasCall || state.hasFunction;
        }
        if (enabled) {
          return 1 | 2;
        }
      }
    },
    IfStatement: function IfStatement(node) {
      if (isBlockStatement$2(node.consequent)) {
        return 1 | 2;
      }
    }
  };
  nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) {
    if (parent.properties[0] === node) {
      return 1;
    }
  };
  nodes.ObjectTypeCallProperty = function (node, parent) {
    var _parent$properties;
    if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) {
      return 1;
    }
  };
  nodes.ObjectTypeIndexer = function (node, parent) {
    var _parent$properties2, _parent$callPropertie;
    if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) {
      return 1;
    }
  };
  nodes.ObjectTypeInternalSlot = function (node, parent) {
    var _parent$properties3, _parent$callPropertie2, _parent$indexers;
    if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) {
      return 1;
    }
  };
  [["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function (_ref) {
    var _ref2 = _slicedToArray(_ref, 2),
      type = _ref2[0],
      amounts = _ref2[1];
    [type].concat(FLIPPED_ALIAS_KEYS$1[type] || []).forEach(function (type) {
      var ret = amounts ? 1 | 2 : 0;
      nodes[type] = function () {
        return ret;
      };
    });
  });

  var isArrayTypeAnnotation$1 = isArrayTypeAnnotation$2,
    isBinaryExpression = isBinaryExpression$1,
    isCallExpression$4 = isCallExpression$8,
    isForOfStatement = isForOfStatement$2,
    isIndexedAccessType = isIndexedAccessType$1,
    isMemberExpression$4 = isMemberExpression$8,
    isObjectPattern = isObjectPattern$1,
    isOptionalMemberExpression$1 = isOptionalMemberExpression$3,
    isYieldExpression = isYieldExpression$1,
    isStatement$5 = isStatement$9;
  var PRECEDENCE = new Map([["||", 0], ["??", 0], ["|>", 0], ["&&", 1], ["|", 2], ["^", 3], ["&", 4], ["==", 5], ["===", 5], ["!=", 5], ["!==", 5], ["<", 6], [">", 6], ["<=", 6], [">=", 6], ["in", 6], ["instanceof", 6], [">>", 7], ["<<", 7], [">>>", 7], ["+", 8], ["-", 8], ["*", 9], ["/", 9], ["%", 9], ["**", 10]]);
  function getBinaryPrecedence(node, nodeType) {
    if (nodeType === "BinaryExpression" || nodeType === "LogicalExpression") {
      return PRECEDENCE.get(node.operator);
    }
    if (nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression") {
      return PRECEDENCE.get("in");
    }
  }
  function isTSTypeExpression(nodeType) {
    return nodeType === "TSAsExpression" || nodeType === "TSSatisfiesExpression" || nodeType === "TSTypeAssertion";
  }
  var isClassExtendsClause = function isClassExtendsClause(node, parent) {
    var parentType = parent.type;
    return (parentType === "ClassDeclaration" || parentType === "ClassExpression") && parent.superClass === node;
  };
  var hasPostfixPart = function hasPostfixPart(node, parent) {
    var parentType = parent.type;
    return (parentType === "MemberExpression" || parentType === "OptionalMemberExpression") && parent.object === node || (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression") && parent.callee === node || parentType === "TaggedTemplateExpression" && parent.tag === node || parentType === "TSNonNullExpression";
  };
  function NullableTypeAnnotation$1(node, parent) {
    return isArrayTypeAnnotation$1(parent);
  }
  function FunctionTypeAnnotation$1(node, parent, tokenContext) {
    var parentType = parent.type;
    return parentType === "UnionTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "ArrayTypeAnnotation" || Boolean(tokenContext & TokenContext.arrowFlowReturnType);
  }
  function UpdateExpression$2(node, parent) {
    return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);
  }
  function needsParenBeforeExpressionBrace(tokenContext) {
    return Boolean(tokenContext & (TokenContext.expressionStatement | TokenContext.arrowBody));
  }
  function ObjectExpression$2(node, parent, tokenContext) {
    return needsParenBeforeExpressionBrace(tokenContext);
  }
  function DoExpression$1(node, parent, tokenContext) {
    return !node.async && Boolean(tokenContext & TokenContext.expressionStatement);
  }
  function Binary(node, parent) {
    var parentType = parent.type;
    if (node.type === "BinaryExpression" && node.operator === "**" && parentType === "BinaryExpression" && parent.operator === "**") {
      return parent.left === node;
    }
    if (isClassExtendsClause(node, parent)) {
      return true;
    }
    if (hasPostfixPart(node, parent) || parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "AwaitExpression") {
      return true;
    }
    var parentPos = getBinaryPrecedence(parent, parentType);
    if (parentPos != null) {
      var nodePos = getBinaryPrecedence(node, node.type);
      if (parentPos === nodePos && parentType === "BinaryExpression" && parent.right === node || parentPos > nodePos) {
        return true;
      }
    }
    return undefined;
  }
  function UnionTypeAnnotation$1(node, parent) {
    var parentType = parent.type;
    return parentType === "ArrayTypeAnnotation" || parentType === "NullableTypeAnnotation" || parentType === "IntersectionTypeAnnotation" || parentType === "UnionTypeAnnotation";
  }
  function OptionalIndexedAccessType$1(node, parent) {
    return isIndexedAccessType(parent) && parent.objectType === node;
  }
  function TSAsExpression$1(node, parent) {
    if ((parent.type === "AssignmentExpression" || parent.type === "AssignmentPattern") && parent.left === node) {
      return true;
    }
    if (parent.type === "BinaryExpression" && (parent.operator === "|" || parent.operator === "&") && node === parent.left) {
      return true;
    }
    return Binary(node, parent);
  }
  function TSUnionType$1(node, parent) {
    var parentType = parent.type;
    return parentType === "TSArrayType" || parentType === "TSOptionalType" || parentType === "TSIntersectionType" || parentType === "TSRestType";
  }
  function TSInferType$1(node, parent) {
    var parentType = parent.type;
    return parentType === "TSArrayType" || parentType === "TSOptionalType";
  }
  function TSInstantiationExpression$1(node, parent) {
    var parentType = parent.type;
    return (parentType === "CallExpression" || parentType === "OptionalCallExpression" || parentType === "NewExpression" || parentType === "TSInstantiationExpression") && !!parent.typeParameters;
  }
  function BinaryExpression$1(node, parent, tokenContext, inForStatementInit) {
    return node.operator === "in" && inForStatementInit;
  }
  function SequenceExpression$2(node, parent) {
    var parentType = parent.type;
    if (parentType === "SequenceExpression" || parentType === "ParenthesizedExpression" || parentType === "MemberExpression" && parent.property === node || parentType === "OptionalMemberExpression" && parent.property === node || parentType === "TemplateLiteral") {
      return false;
    }
    if (parentType === "ClassDeclaration") {
      return true;
    }
    if (parentType === "ForOfStatement") {
      return parent.right === node;
    }
    if (parentType === "ExportDefaultDeclaration") {
      return true;
    }
    return !isStatement$5(parent);
  }
  function YieldExpression$1(node, parent) {
    var parentType = parent.type;
    return parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "UnaryExpression" || parentType === "SpreadElement" || hasPostfixPart(node, parent) || parentType === "AwaitExpression" && isYieldExpression(node) || parentType === "ConditionalExpression" && node === parent.test || isClassExtendsClause(node, parent) || isTSTypeExpression(parentType);
  }
  function ClassExpression(node, parent, tokenContext) {
    return Boolean(tokenContext & (TokenContext.expressionStatement | TokenContext.exportDefault));
  }
  function UnaryLike(node, parent) {
    return hasPostfixPart(node, parent) || isBinaryExpression(parent) && parent.operator === "**" && parent.left === node || isClassExtendsClause(node, parent);
  }
  function FunctionExpression$1(node, parent, tokenContext) {
    return Boolean(tokenContext & (TokenContext.expressionStatement | TokenContext.exportDefault));
  }
  function ConditionalExpression$2(node, parent) {
    var parentType = parent.type;
    if (parentType === "UnaryExpression" || parentType === "SpreadElement" || parentType === "BinaryExpression" || parentType === "LogicalExpression" || parentType === "ConditionalExpression" && parent.test === node || parentType === "AwaitExpression" || isTSTypeExpression(parentType)) {
      return true;
    }
    return UnaryLike(node, parent);
  }
  function OptionalMemberExpression$1(node, parent) {
    return isCallExpression$4(parent) && parent.callee === node || isMemberExpression$4(parent) && parent.object === node;
  }
  function AssignmentExpression$2(node, parent, tokenContext) {
    if (needsParenBeforeExpressionBrace(tokenContext) && isObjectPattern(node.left)) {
      return true;
    } else {
      return ConditionalExpression$2(node, parent);
    }
  }
  function LogicalExpression$1(node, parent) {
    var parentType = parent.type;
    if (isTSTypeExpression(parentType)) return true;
    if (parentType !== "LogicalExpression") return false;
    switch (node.operator) {
      case "||":
        return parent.operator === "??" || parent.operator === "&&";
      case "&&":
        return parent.operator === "??";
      case "??":
        return parent.operator !== "??";
    }
  }
  function Identifier$1(node, parent, tokenContext) {
    var _node$extra;
    var parentType = parent.type;
    if ((_node$extra = node.extra) != null && _node$extra.parenthesized && parentType === "AssignmentExpression" && parent.left === node) {
      var rightType = parent.right.type;
      if ((rightType === "FunctionExpression" || rightType === "ClassExpression") && parent.right.id == null) {
        return true;
      }
    }
    if (node.name === "let") {
      var isFollowedByBracket = isMemberExpression$4(parent, {
        object: node,
        computed: true
      }) || isOptionalMemberExpression$1(parent, {
        object: node,
        computed: true,
        optional: false
      });
      if (isFollowedByBracket && tokenContext & (TokenContext.expressionStatement | TokenContext.forHead | TokenContext.forInHead)) {
        return true;
      }
      return Boolean(tokenContext & TokenContext.forOfHead);
    }
    return node.name === "async" && isForOfStatement(parent, {
      left: node,
      "await": false
    });
  }

  var parens = /*#__PURE__*/Object.freeze({
    __proto__: null,
    ArrowFunctionExpression: ConditionalExpression$2,
    AssignmentExpression: AssignmentExpression$2,
    AwaitExpression: YieldExpression$1,
    Binary: Binary,
    BinaryExpression: BinaryExpression$1,
    ClassExpression: ClassExpression,
    ConditionalExpression: ConditionalExpression$2,
    DoExpression: DoExpression$1,
    FunctionExpression: FunctionExpression$1,
    FunctionTypeAnnotation: FunctionTypeAnnotation$1,
    Identifier: Identifier$1,
    IntersectionTypeAnnotation: UnionTypeAnnotation$1,
    LogicalExpression: LogicalExpression$1,
    NullableTypeAnnotation: NullableTypeAnnotation$1,
    ObjectExpression: ObjectExpression$2,
    OptionalCallExpression: OptionalMemberExpression$1,
    OptionalIndexedAccessType: OptionalIndexedAccessType$1,
    OptionalMemberExpression: OptionalMemberExpression$1,
    SequenceExpression: SequenceExpression$2,
    TSAsExpression: TSAsExpression$1,
    TSInferType: TSInferType$1,
    TSInstantiationExpression: TSInstantiationExpression$1,
    TSIntersectionType: TSUnionType$1,
    TSSatisfiesExpression: TSAsExpression$1,
    TSTypeAssertion: UnaryLike,
    TSUnionType: TSUnionType$1,
    UnaryLike: UnaryLike,
    UnionTypeAnnotation: UnionTypeAnnotation$1,
    UpdateExpression: UpdateExpression$2,
    YieldExpression: YieldExpression$1
  });

  var FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS$3,
    isCallExpression$3 = isCallExpression$8,
    isDecorator = isDecorator$1,
    isMemberExpression$3 = isMemberExpression$8,
    isNewExpression$1 = isNewExpression$3,
    isParenthesizedExpression$1 = isParenthesizedExpression$2;
  var TokenContext = {
    expressionStatement: 1,
    arrowBody: 2,
    exportDefault: 4,
    forHead: 8,
    forInHead: 16,
    forOfHead: 32,
    arrowFlowReturnType: 64
  };
  function expandAliases(obj) {
    var map = new Map();
    function add(type, func) {
      var fn = map.get(type);
      map.set(type, fn ? function (node, parent, stack, inForInit) {
        var _fn;
        return (_fn = fn(node, parent, stack, inForInit)) != null ? _fn : func(node, parent, stack, inForInit);
      } : func);
    }
    for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
      var type = _Object$keys[_i];
      var aliases = FLIPPED_ALIAS_KEYS[type];
      if (aliases) {
        for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
          var alias = _step.value;
          add(alias, obj[type]);
        }
      } else {
        add(type, obj[type]);
      }
    }
    return map;
  }
  var expandedParens = expandAliases(parens);
  expandAliases(nodes);
  function isOrHasCallExpression(node) {
    if (isCallExpression$3(node)) {
      return true;
    }
    return isMemberExpression$3(node) && isOrHasCallExpression(node.object);
  }
  function needsParens$1(node, parent, tokenContext, inForInit) {
    var _expandedParens$get;
    if (!parent) return false;
    if (isNewExpression$1(parent) && parent.callee === node) {
      if (isOrHasCallExpression(node)) return true;
    }
    if (isDecorator(parent)) {
      return !isDecoratorMemberExpression(node) && !(isCallExpression$3(node) && isDecoratorMemberExpression(node.callee)) && !isParenthesizedExpression$1(node);
    }
    return (_expandedParens$get = expandedParens.get(node.type)) == null ? void 0 : _expandedParens$get(node, parent, tokenContext, inForInit);
  }
  function isDecoratorMemberExpression(node) {
    switch (node.type) {
      case "Identifier":
        return true;
      case "MemberExpression":
        return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object);
      default:
        return false;
    }
  }

  function TaggedTemplateExpression$1(node) {
    this.print(node.tag);
    this.print(node.typeParameters);
    this.print(node.quasi);
  }
  function TemplateElement() {
    throw new Error("TemplateElement printing is handled in TemplateLiteral");
  }
  function TemplateLiteral$1(node) {
    var quasis = node.quasis;
    var partRaw = "`";
    for (var i = 0; i < quasis.length; i++) {
      partRaw += quasis[i].value.raw;
      if (i + 1 < quasis.length) {
        this.token(partRaw + "${", true);
        this.print(node.expressions[i]);
        partRaw = "}";
      }
    }
    this.token(partRaw + "`", true);
  }

  var isCallExpression$2 = isCallExpression$8,
    isLiteral$2 = isLiteral$5,
    isMemberExpression$2 = isMemberExpression$8,
    isNewExpression = isNewExpression$3;
  function UnaryExpression$1(node) {
    var operator = node.operator;
    if (operator === "void" || operator === "delete" || operator === "typeof" || operator === "throw") {
      this.word(operator);
      this.space();
    } else {
      this.token(operator);
    }
    this.print(node.argument);
  }
  function DoExpression(node) {
    if (node.async) {
      this.word("async", true);
      this.space();
    }
    this.word("do");
    this.space();
    this.print(node.body);
  }
  function ParenthesizedExpression$1(node) {
    this.tokenChar(40);
    this.print(node.expression);
    this.rightParens(node);
  }
  function UpdateExpression$1(node) {
    if (node.prefix) {
      this.token(node.operator);
      this.print(node.argument);
    } else {
      this.printTerminatorless(node.argument, true);
      this.token(node.operator);
    }
  }
  function ConditionalExpression$1(node) {
    this.print(node.test);
    this.space();
    this.tokenChar(63);
    this.space();
    this.print(node.consequent);
    this.space();
    this.tokenChar(58);
    this.space();
    this.print(node.alternate);
  }
  function NewExpression$1(node, parent) {
    this.word("new");
    this.space();
    this.print(node.callee);
    if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression$2(parent, {
      callee: node
    }) && !isMemberExpression$2(parent) && !isNewExpression(parent)) {
      return;
    }
    this.print(node.typeArguments);
    this.print(node.typeParameters);
    if (node.optional) {
      this.token("?.");
    }
    this.tokenChar(40);
    var exit = this.enterForStatementInit(false);
    this.printList(node.arguments);
    exit();
    this.rightParens(node);
  }
  function SequenceExpression$1(node) {
    this.printList(node.expressions);
  }
  function ThisExpression() {
    this.word("this");
  }
  function Super() {
    this.word("super");
  }
  function _shouldPrintDecoratorsBeforeExport(node) {
    if (typeof this.format.decoratorsBeforeExport === "boolean") {
      return this.format.decoratorsBeforeExport;
    }
    return typeof node.start === "number" && node.start === node.declaration.start;
  }
  function Decorator(node) {
    this.tokenChar(64);
    this.print(node.expression);
    this.newline();
  }
  function OptionalMemberExpression(node) {
    var computed = node.computed;
    var optional = node.optional,
      property = node.property;
    this.print(node.object);
    if (!computed && isMemberExpression$2(property)) {
      throw new TypeError("Got a MemberExpression for MemberExpression property");
    }
    if (isLiteral$2(property) && typeof property.value === "number") {
      computed = true;
    }
    if (optional) {
      this.token("?.");
    }
    if (computed) {
      this.tokenChar(91);
      this.print(property);
      this.tokenChar(93);
    } else {
      if (!optional) {
        this.tokenChar(46);
      }
      this.print(property);
    }
  }
  function OptionalCallExpression(node) {
    this.print(node.callee);
    this.print(node.typeParameters);
    if (node.optional) {
      this.token("?.");
    }
    this.print(node.typeArguments);
    this.tokenChar(40);
    var exit = this.enterForStatementInit(false);
    this.printList(node.arguments);
    exit();
    this.rightParens(node);
  }
  function CallExpression$1(node) {
    this.print(node.callee);
    this.print(node.typeArguments);
    this.print(node.typeParameters);
    this.tokenChar(40);
    var exit = this.enterForStatementInit(false);
    this.printList(node.arguments);
    exit();
    this.rightParens(node);
  }
  function Import() {
    this.word("import");
  }
  function AwaitExpression(node) {
    this.word("await");
    if (node.argument) {
      this.space();
      this.printTerminatorless(node.argument, false);
    }
  }
  function YieldExpression(node) {
    this.word("yield", true);
    if (node.delegate) {
      this.tokenChar(42);
      if (node.argument) {
        this.space();
        this.print(node.argument);
      }
    } else {
      if (node.argument) {
        this.space();
        this.printTerminatorless(node.argument, false);
      }
    }
  }
  function EmptyStatement() {
    this.semicolon(true);
  }
  function ExpressionStatement(node) {
    this.tokenContext |= TokenContext.expressionStatement;
    this.print(node.expression);
    this.semicolon();
  }
  function AssignmentPattern(node) {
    this.print(node.left);
    if (node.left.type === "Identifier") {
      if (node.left.optional) this.tokenChar(63);
      this.print(node.left.typeAnnotation);
    }
    this.space();
    this.tokenChar(61);
    this.space();
    this.print(node.right);
  }
  function AssignmentExpression$1(node) {
    this.print(node.left);
    this.space();
    if (node.operator === "in" || node.operator === "instanceof") {
      this.word(node.operator);
    } else {
      this.token(node.operator);
      this._endsWithDiv = node.operator === "/";
    }
    this.space();
    this.print(node.right);
  }
  function BindExpression(node) {
    this.print(node.object);
    this.token("::");
    this.print(node.callee);
  }
  function MemberExpression(node) {
    this.print(node.object);
    if (!node.computed && isMemberExpression$2(node.property)) {
      throw new TypeError("Got a MemberExpression for MemberExpression property");
    }
    var computed = node.computed;
    if (isLiteral$2(node.property) && typeof node.property.value === "number") {
      computed = true;
    }
    if (computed) {
      var exit = this.enterForStatementInit(false);
      this.tokenChar(91);
      this.print(node.property);
      this.tokenChar(93);
      exit();
    } else {
      this.tokenChar(46);
      this.print(node.property);
    }
  }
  function MetaProperty(node) {
    this.print(node.meta);
    this.tokenChar(46);
    this.print(node.property);
  }
  function PrivateName(node) {
    this.tokenChar(35);
    this.print(node.id);
  }
  function V8IntrinsicIdentifier(node) {
    this.tokenChar(37);
    this.word(node.name);
  }
  function ModuleExpression(node) {
    this.word("module", true);
    this.space();
    this.tokenChar(123);
    this.indent();
    var body = node.body;
    if (body.body.length || body.directives.length) {
      this.newline();
    }
    this.print(body);
    this.dedent();
    this.rightBrace(node);
  }

  var isFor = isFor$1,
    isForStatement = isForStatement$2,
    isIfStatement$1 = isIfStatement$2,
    isStatement$4 = isStatement$9;
  function WithStatement(node) {
    this.word("with");
    this.space();
    this.tokenChar(40);
    this.print(node.object);
    this.tokenChar(41);
    this.printBlock(node);
  }
  function IfStatement(node) {
    this.word("if");
    this.space();
    this.tokenChar(40);
    this.print(node.test);
    this.tokenChar(41);
    this.space();
    var needsBlock = node.alternate && isIfStatement$1(getLastStatement(node.consequent));
    if (needsBlock) {
      this.tokenChar(123);
      this.newline();
      this.indent();
    }
    this.printAndIndentOnComments(node.consequent);
    if (needsBlock) {
      this.dedent();
      this.newline();
      this.tokenChar(125);
    }
    if (node.alternate) {
      if (this.endsWith(125)) this.space();
      this.word("else");
      this.space();
      this.printAndIndentOnComments(node.alternate);
    }
  }
  function getLastStatement(statement) {
    var body = statement.body;
    if (isStatement$4(body) === false) {
      return statement;
    }
    return getLastStatement(body);
  }
  function ForStatement(node) {
    this.word("for");
    this.space();
    this.tokenChar(40);
    {
      var exit = this.enterForStatementInit(true);
      this.tokenContext |= TokenContext.forHead;
      this.print(node.init);
      exit();
    }
    this.tokenChar(59);
    if (node.test) {
      this.space();
      this.print(node.test);
    }
    this.tokenChar(59);
    if (node.update) {
      this.space();
      this.print(node.update);
    }
    this.tokenChar(41);
    this.printBlock(node);
  }
  function WhileStatement(node) {
    this.word("while");
    this.space();
    this.tokenChar(40);
    this.print(node.test);
    this.tokenChar(41);
    this.printBlock(node);
  }
  function ForXStatement(node) {
    this.word("for");
    this.space();
    var isForOf = node.type === "ForOfStatement";
    if (isForOf && node["await"]) {
      this.word("await");
      this.space();
    }
    this.noIndentInnerCommentsHere();
    this.tokenChar(40);
    {
      var exit = isForOf ? null : this.enterForStatementInit(true);
      this.tokenContext |= isForOf ? TokenContext.forOfHead : TokenContext.forInHead;
      this.print(node.left);
      exit == null || exit();
    }
    this.space();
    this.word(isForOf ? "of" : "in");
    this.space();
    this.print(node.right);
    this.tokenChar(41);
    this.printBlock(node);
  }
  var ForInStatement = ForXStatement;
  var ForOfStatement = ForXStatement;
  function DoWhileStatement(node) {
    this.word("do");
    this.space();
    this.print(node.body);
    this.space();
    this.word("while");
    this.space();
    this.tokenChar(40);
    this.print(node.test);
    this.tokenChar(41);
    this.semicolon();
  }
  function printStatementAfterKeyword(printer, node, isLabel) {
    if (node) {
      printer.space();
      printer.printTerminatorless(node, isLabel);
    }
    printer.semicolon();
  }
  function BreakStatement(node) {
    this.word("break");
    printStatementAfterKeyword(this, node.label, true);
  }
  function ContinueStatement(node) {
    this.word("continue");
    printStatementAfterKeyword(this, node.label, true);
  }
  function ReturnStatement(node) {
    this.word("return");
    printStatementAfterKeyword(this, node.argument, false);
  }
  function ThrowStatement(node) {
    this.word("throw");
    printStatementAfterKeyword(this, node.argument, false);
  }
  function LabeledStatement(node) {
    this.print(node.label);
    this.tokenChar(58);
    this.space();
    this.print(node.body);
  }
  function TryStatement(node) {
    this.word("try");
    this.space();
    this.print(node.block);
    this.space();
    if (node.handlers) {
      this.print(node.handlers[0]);
    } else {
      this.print(node.handler);
    }
    if (node.finalizer) {
      this.space();
      this.word("finally");
      this.space();
      this.print(node.finalizer);
    }
  }
  function CatchClause(node) {
    this.word("catch");
    this.space();
    if (node.param) {
      this.tokenChar(40);
      this.print(node.param);
      this.print(node.param.typeAnnotation);
      this.tokenChar(41);
      this.space();
    }
    this.print(node.body);
  }
  function SwitchStatement(node) {
    this.word("switch");
    this.space();
    this.tokenChar(40);
    this.print(node.discriminant);
    this.tokenChar(41);
    this.space();
    this.tokenChar(123);
    this.printSequence(node.cases, {
      indent: true,
      addNewlines: function addNewlines(leading, cas) {
        if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
      }
    });
    this.rightBrace(node);
  }
  function SwitchCase(node) {
    if (node.test) {
      this.word("case");
      this.space();
      this.print(node.test);
      this.tokenChar(58);
    } else {
      this.word("default");
      this.tokenChar(58);
    }
    if (node.consequent.length) {
      this.newline();
      this.printSequence(node.consequent, {
        indent: true
      });
    }
  }
  function DebuggerStatement() {
    this.word("debugger");
    this.semicolon();
  }
  function VariableDeclaration(node, parent) {
    if (node.declare) {
      this.word("declare");
      this.space();
    }
    var kind = node.kind;
    if (kind === "await using") {
      this.word("await");
      this.space();
      this.word("using", true);
    } else {
      this.word(kind, kind === "using");
    }
    this.space();
    var hasInits = false;
    if (!isFor(parent)) {
      for (var _iterator = _createForOfIteratorHelperLoose(node.declarations), _step; !(_step = _iterator()).done;) {
        var declar = _step.value;
        if (declar.init) {
          hasInits = true;
        }
      }
    }
    this.printList(node.declarations, {
      separator: hasInits ? function () {
        this.tokenChar(44);
        this.newline();
      } : undefined,
      indent: node.declarations.length > 1 ? true : false
    });
    if (isFor(parent)) {
      if (isForStatement(parent)) {
        if (parent.init === node) return;
      } else {
        if (parent.left === node) return;
      }
    }
    this.semicolon();
  }
  function VariableDeclarator$1(node) {
    this.print(node.id);
    if (node.definite) this.tokenChar(33);
    this.print(node.id.typeAnnotation);
    if (node.init) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.init);
    }
  }

  var isExportDefaultDeclaration = isExportDefaultDeclaration$2,
    isExportNamedDeclaration$1 = isExportNamedDeclaration$3;
  function ClassDeclaration(node, parent) {
    var inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration$1(parent);
    if (!inExport || !this._shouldPrintDecoratorsBeforeExport(parent)) {
      this.printJoin(node.decorators);
    }
    if (node.declare) {
      this.word("declare");
      this.space();
    }
    if (node["abstract"]) {
      this.word("abstract");
      this.space();
    }
    this.word("class");
    if (node.id) {
      this.space();
      this.print(node.id);
    }
    this.print(node.typeParameters);
    if (node.superClass) {
      this.space();
      this.word("extends");
      this.space();
      this.print(node.superClass);
      this.print(node.superTypeParameters);
    }
    if (node["implements"]) {
      this.space();
      this.word("implements");
      this.space();
      this.printList(node["implements"]);
    }
    this.space();
    this.print(node.body);
  }
  function ClassBody(node) {
    this.tokenChar(123);
    if (node.body.length === 0) {
      this.tokenChar(125);
    } else {
      this.newline();
      var exit = this.enterForStatementInit(false);
      this.printSequence(node.body, {
        indent: true
      });
      exit();
      if (!this.endsWith(10)) this.newline();
      this.rightBrace(node);
    }
  }
  function ClassProperty(node) {
    var _node$key$loc;
    this.printJoin(node.decorators);
    var endLine = (_node$key$loc = node.key.loc) == null || (_node$key$loc = _node$key$loc.end) == null ? void 0 : _node$key$loc.line;
    if (endLine) this.catchUp(endLine);
    this.tsPrintClassMemberModifiers(node);
    if (node.computed) {
      this.tokenChar(91);
      this.print(node.key);
      this.tokenChar(93);
    } else {
      this._variance(node);
      this.print(node.key);
    }
    if (node.optional) {
      this.tokenChar(63);
    }
    if (node.definite) {
      this.tokenChar(33);
    }
    this.print(node.typeAnnotation);
    if (node.value) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.value);
    }
    this.semicolon();
  }
  function ClassAccessorProperty(node) {
    var _node$key$loc2;
    this.printJoin(node.decorators);
    var endLine = (_node$key$loc2 = node.key.loc) == null || (_node$key$loc2 = _node$key$loc2.end) == null ? void 0 : _node$key$loc2.line;
    if (endLine) this.catchUp(endLine);
    this.tsPrintClassMemberModifiers(node);
    this.word("accessor", true);
    this.space();
    if (node.computed) {
      this.tokenChar(91);
      this.print(node.key);
      this.tokenChar(93);
    } else {
      this._variance(node);
      this.print(node.key);
    }
    if (node.optional) {
      this.tokenChar(63);
    }
    if (node.definite) {
      this.tokenChar(33);
    }
    this.print(node.typeAnnotation);
    if (node.value) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.value);
    }
    this.semicolon();
  }
  function ClassPrivateProperty(node) {
    this.printJoin(node.decorators);
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    this.print(node.key);
    this.print(node.typeAnnotation);
    if (node.value) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.value);
    }
    this.semicolon();
  }
  function ClassMethod(node) {
    this._classMethodHead(node);
    this.space();
    this.print(node.body);
  }
  function ClassPrivateMethod(node) {
    this._classMethodHead(node);
    this.space();
    this.print(node.body);
  }
  function _classMethodHead(node) {
    var _node$key$loc3;
    this.printJoin(node.decorators);
    var endLine = (_node$key$loc3 = node.key.loc) == null || (_node$key$loc3 = _node$key$loc3.end) == null ? void 0 : _node$key$loc3.line;
    if (endLine) this.catchUp(endLine);
    this.tsPrintClassMemberModifiers(node);
    this._methodHead(node);
  }
  function StaticBlock(node) {
    this.word("static");
    this.space();
    this.tokenChar(123);
    if (node.body.length === 0) {
      this.tokenChar(125);
    } else {
      this.newline();
      this.printSequence(node.body, {
        indent: true
      });
      this.rightBrace(node);
    }
  }

  var isIdentifier$a = isIdentifier$f;
  function _params(node, idNode, parentNode) {
    this.print(node.typeParameters);
    var nameInfo = _getFuncIdName.call(this, idNode, parentNode);
    if (nameInfo) {
      this.sourceIdentifierName(nameInfo.name, nameInfo.pos);
    }
    this.tokenChar(40);
    this._parameters(node.params);
    this.tokenChar(41);
    var noLineTerminator = node.type === "ArrowFunctionExpression";
    this.print(node.returnType, noLineTerminator);
    this._noLineTerminator = noLineTerminator;
  }
  function _parameters(parameters) {
    var exit = this.enterForStatementInit(false);
    var paramLength = parameters.length;
    for (var i = 0; i < paramLength; i++) {
      this._param(parameters[i]);
      if (i < parameters.length - 1) {
        this.tokenChar(44);
        this.space();
      }
    }
    exit();
  }
  function _param(parameter) {
    this.printJoin(parameter.decorators);
    this.print(parameter);
    if (parameter.optional) {
      this.tokenChar(63);
    }
    this.print(parameter.typeAnnotation);
  }
  function _methodHead(node) {
    var kind = node.kind;
    var key = node.key;
    if (kind === "get" || kind === "set") {
      this.word(kind);
      this.space();
    }
    if (node.async) {
      this.word("async", true);
      this.space();
    }
    if (kind === "method" || kind === "init") {
      if (node.generator) {
        this.tokenChar(42);
      }
    }
    if (node.computed) {
      this.tokenChar(91);
      this.print(key);
      this.tokenChar(93);
    } else {
      this.print(key);
    }
    if (node.optional) {
      this.tokenChar(63);
    }
    this._params(node, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key, undefined);
  }
  function _predicate(node, noLineTerminatorAfter) {
    if (node.predicate) {
      if (!node.returnType) {
        this.tokenChar(58);
      }
      this.space();
      this.print(node.predicate, noLineTerminatorAfter);
    }
  }
  function _functionHead(node, parent) {
    if (node.async) {
      this.word("async");
      this._endsWithInnerRaw = false;
      this.space();
    }
    this.word("function");
    if (node.generator) {
      this._endsWithInnerRaw = false;
      this.tokenChar(42);
    }
    this.space();
    if (node.id) {
      this.print(node.id);
    }
    this._params(node, node.id, parent);
    if (node.type !== "TSDeclareFunction") {
      this._predicate(node);
    }
  }
  function FunctionExpression(node, parent) {
    this._functionHead(node, parent);
    this.space();
    this.print(node.body);
  }
  function ArrowFunctionExpression(node, parent) {
    if (node.async) {
      this.word("async", true);
      this.space();
    }
    var firstParam;
    if (!this.format.retainLines && node.params.length === 1 && isIdentifier$a(firstParam = node.params[0]) && !hasTypesOrComments(node, firstParam)) {
      this.print(firstParam, true);
    } else {
      this._params(node, undefined, parent);
    }
    this._predicate(node, true);
    this.space();
    this.printInnerComments();
    this.token("=>");
    this.space();
    this.tokenContext |= TokenContext.arrowBody;
    this.print(node.body);
  }
  function hasTypesOrComments(node, param) {
    var _param$leadingComment, _param$trailingCommen;
    return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length);
  }
  function _getFuncIdName(idNode, parent) {
    var id = idNode;
    if (!id && parent) {
      var parentType = parent.type;
      if (parentType === "VariableDeclarator") {
        id = parent.id;
      } else if (parentType === "AssignmentExpression" || parentType === "AssignmentPattern") {
        id = parent.left;
      } else if (parentType === "ObjectProperty" || parentType === "ClassProperty") {
        if (!parent.computed || parent.key.type === "StringLiteral") {
          id = parent.key;
        }
      } else if (parentType === "ClassPrivateProperty" || parentType === "ClassAccessorProperty") {
        id = parent.key;
      }
    }
    if (!id) return;
    var nameInfo;
    if (id.type === "Identifier") {
      var _id$loc, _id$loc2;
      nameInfo = {
        pos: (_id$loc = id.loc) == null ? void 0 : _id$loc.start,
        name: ((_id$loc2 = id.loc) == null ? void 0 : _id$loc2.identifierName) || id.name
      };
    } else if (id.type === "PrivateName") {
      var _id$loc3;
      nameInfo = {
        pos: (_id$loc3 = id.loc) == null ? void 0 : _id$loc3.start,
        name: "#" + id.id.name
      };
    } else if (id.type === "StringLiteral") {
      var _id$loc4;
      nameInfo = {
        pos: (_id$loc4 = id.loc) == null ? void 0 : _id$loc4.start,
        name: id.value
      };
    }
    return nameInfo;
  }

  var isClassDeclaration = isClassDeclaration$2,
    isExportDefaultSpecifier = isExportDefaultSpecifier$1,
    isExportNamespaceSpecifier = isExportNamespaceSpecifier$1,
    isImportDefaultSpecifier = isImportDefaultSpecifier$1,
    isImportNamespaceSpecifier = isImportNamespaceSpecifier$1,
    isStatement$3 = isStatement$9;
  function ImportSpecifier(node) {
    if (node.importKind === "type" || node.importKind === "typeof") {
      this.word(node.importKind);
      this.space();
    }
    this.print(node.imported);
    if (node.local && node.local.name !== node.imported.name) {
      this.space();
      this.word("as");
      this.space();
      this.print(node.local);
    }
  }
  function ImportDefaultSpecifier(node) {
    this.print(node.local);
  }
  function ExportDefaultSpecifier(node) {
    this.print(node.exported);
  }
  function ExportSpecifier(node) {
    if (node.exportKind === "type") {
      this.word("type");
      this.space();
    }
    this.print(node.local);
    if (node.exported && node.local.name !== node.exported.name) {
      this.space();
      this.word("as");
      this.space();
      this.print(node.exported);
    }
  }
  function ExportNamespaceSpecifier(node) {
    this.tokenChar(42);
    this.space();
    this.word("as");
    this.space();
    this.print(node.exported);
  }
  var warningShown = false;
  function _printAttributes(node) {
    var importAttributesKeyword = this.format.importAttributesKeyword;
    var attributes = node.attributes,
      assertions = node.assertions;
    if (attributes && !importAttributesKeyword && !warningShown) {
      warningShown = true;
      console.warn("You are using import attributes, without specifying the desired output syntax.\nPlease specify the \"importAttributesKeyword\" generator option, whose value can be one of:\n - \"with\"        : `import { a } from \"b\" with { type: \"json\" };`\n - \"assert\"      : `import { a } from \"b\" assert { type: \"json\" };`\n - \"with-legacy\" : `import { a } from \"b\" with type: \"json\";`\n");
    }
    var useAssertKeyword = importAttributesKeyword === "assert" || !importAttributesKeyword && assertions;
    this.word(useAssertKeyword ? "assert" : "with");
    this.space();
    if (!useAssertKeyword && importAttributesKeyword !== "with") {
      this.printList(attributes || assertions);
      return;
    }
    this.tokenChar(123);
    this.space();
    this.printList(attributes || assertions);
    this.space();
    this.tokenChar(125);
  }
  function ExportAllDeclaration(node) {
    var _node$attributes, _node$assertions;
    this.word("export");
    this.space();
    if (node.exportKind === "type") {
      this.word("type");
      this.space();
    }
    this.tokenChar(42);
    this.space();
    this.word("from");
    this.space();
    if ((_node$attributes = node.attributes) != null && _node$attributes.length || (_node$assertions = node.assertions) != null && _node$assertions.length) {
      this.print(node.source, true);
      this.space();
      this._printAttributes(node);
    } else {
      this.print(node.source);
    }
    this.semicolon();
  }
  function maybePrintDecoratorsBeforeExport(printer, node) {
    if (isClassDeclaration(node.declaration) && printer._shouldPrintDecoratorsBeforeExport(node)) {
      printer.printJoin(node.declaration.decorators);
    }
  }
  function ExportNamedDeclaration(node) {
    maybePrintDecoratorsBeforeExport(this, node);
    this.word("export");
    this.space();
    if (node.declaration) {
      var declar = node.declaration;
      this.print(declar);
      if (!isStatement$3(declar)) this.semicolon();
    } else {
      if (node.exportKind === "type") {
        this.word("type");
        this.space();
      }
      var specifiers = node.specifiers.slice(0);
      var hasSpecial = false;
      for (;;) {
        var first = specifiers[0];
        if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) {
          hasSpecial = true;
          this.print(specifiers.shift());
          if (specifiers.length) {
            this.tokenChar(44);
            this.space();
          }
        } else {
          break;
        }
      }
      if (specifiers.length || !specifiers.length && !hasSpecial) {
        this.tokenChar(123);
        if (specifiers.length) {
          this.space();
          this.printList(specifiers);
          this.space();
        }
        this.tokenChar(125);
      }
      if (node.source) {
        var _node$attributes2, _node$assertions2;
        this.space();
        this.word("from");
        this.space();
        if ((_node$attributes2 = node.attributes) != null && _node$attributes2.length || (_node$assertions2 = node.assertions) != null && _node$assertions2.length) {
          this.print(node.source, true);
          this.space();
          this._printAttributes(node);
        } else {
          this.print(node.source);
        }
      }
      this.semicolon();
    }
  }
  function ExportDefaultDeclaration(node) {
    maybePrintDecoratorsBeforeExport(this, node);
    this.word("export");
    this.noIndentInnerCommentsHere();
    this.space();
    this.word("default");
    this.space();
    this.tokenContext |= TokenContext.exportDefault;
    var declar = node.declaration;
    this.print(declar);
    if (!isStatement$3(declar)) this.semicolon();
  }
  function ImportDeclaration(node) {
    var _node$attributes3, _node$assertions3;
    this.word("import");
    this.space();
    var isTypeKind = node.importKind === "type" || node.importKind === "typeof";
    if (isTypeKind) {
      this.noIndentInnerCommentsHere();
      this.word(node.importKind);
      this.space();
    } else if (node.module) {
      this.noIndentInnerCommentsHere();
      this.word("module");
      this.space();
    } else if (node.phase) {
      this.noIndentInnerCommentsHere();
      this.word(node.phase);
      this.space();
    }
    var specifiers = node.specifiers.slice(0);
    var hasSpecifiers = !!specifiers.length;
    while (hasSpecifiers) {
      var first = specifiers[0];
      if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {
        this.print(specifiers.shift());
        if (specifiers.length) {
          this.tokenChar(44);
          this.space();
        }
      } else {
        break;
      }
    }
    if (specifiers.length) {
      this.tokenChar(123);
      this.space();
      this.printList(specifiers);
      this.space();
      this.tokenChar(125);
    } else if (isTypeKind && !hasSpecifiers) {
      this.tokenChar(123);
      this.tokenChar(125);
    }
    if (hasSpecifiers || isTypeKind) {
      this.space();
      this.word("from");
      this.space();
    }
    if ((_node$attributes3 = node.attributes) != null && _node$attributes3.length || (_node$assertions3 = node.assertions) != null && _node$assertions3.length) {
      this.print(node.source, true);
      this.space();
      this._printAttributes(node);
    } else {
      this.print(node.source);
    }
    this.semicolon();
  }
  function ImportAttribute(node) {
    this.print(node.key);
    this.tokenChar(58);
    this.space();
    this.print(node.value);
  }
  function ImportNamespaceSpecifier(node) {
    this.tokenChar(42);
    this.space();
    this.word("as");
    this.space();
    this.print(node.local);
  }
  function ImportExpression(node) {
    this.word("import");
    if (node.phase) {
      this.tokenChar(46);
      this.word(node.phase);
    }
    this.tokenChar(40);
    this.print(node.source);
    if (node.options != null) {
      this.tokenChar(44);
      this.space();
      this.print(node.options);
    }
    this.tokenChar(41);
  }

  var jsesc_1;
  var hasRequiredJsesc;
  function requireJsesc() {
    if (hasRequiredJsesc) return jsesc_1;
    hasRequiredJsesc = 1;
    var object = {};
    var hasOwnProperty = object.hasOwnProperty;
    var forOwn = function forOwn(object, callback) {
      for (var key in object) {
        if (hasOwnProperty.call(object, key)) {
          callback(key, object[key]);
        }
      }
    };
    var extend = function extend(destination, source) {
      if (!source) {
        return destination;
      }
      forOwn(source, function (key, value) {
        destination[key] = value;
      });
      return destination;
    };
    var forEach = function forEach(array, callback) {
      var length = array.length;
      var index = -1;
      while (++index < length) {
        callback(array[index]);
      }
    };
    var toString = object.toString;
    var isArray = Array.isArray;
    var isBuffer = Buffer$1.isBuffer;
    var isObject = function isObject(value) {
      return toString.call(value) == '[object Object]';
    };
    var isString = function isString(value) {
      return typeof value == 'string' || toString.call(value) == '[object String]';
    };
    var isNumber = function isNumber(value) {
      return typeof value == 'number' || toString.call(value) == '[object Number]';
    };
    var isFunction = function isFunction(value) {
      return typeof value == 'function';
    };
    var isMap = function isMap(value) {
      return toString.call(value) == '[object Map]';
    };
    var isSet = function isSet(value) {
      return toString.call(value) == '[object Set]';
    };
    var singleEscapes = {
      '"': '\\"',
      '\'': '\\\'',
      '\\': '\\\\',
      '\b': '\\b',
      '\f': '\\f',
      '\n': '\\n',
      '\r': '\\r',
      '\t': '\\t'
    };
    var regexSingleEscape = /["'\\\b\f\n\r\t]/;
    var regexDigit = /[0-9]/;
    var regexWhitelist = /[ !#-&\(-\[\]-_a-~]/;
    var _jsesc = function jsesc(argument, options) {
      var increaseIndentation = function increaseIndentation() {
        oldIndent = indent;
        ++options.indentLevel;
        indent = options.indent.repeat(options.indentLevel);
      };
      var defaults = {
        'escapeEverything': false,
        'minimal': false,
        'isScriptContext': false,
        'quotes': 'single',
        'wrap': false,
        'es6': false,
        'json': false,
        'compact': true,
        'lowercaseHex': false,
        'numbers': 'decimal',
        'indent': '\t',
        'indentLevel': 0,
        '__inline1__': false,
        '__inline2__': false
      };
      var json = options && options.json;
      if (json) {
        defaults.quotes = 'double';
        defaults.wrap = true;
      }
      options = extend(defaults, options);
      if (options.quotes != 'single' && options.quotes != 'double' && options.quotes != 'backtick') {
        options.quotes = 'single';
      }
      var quote = options.quotes == 'double' ? '"' : options.quotes == 'backtick' ? '`' : '\'';
      var compact = options.compact;
      var lowercaseHex = options.lowercaseHex;
      var indent = options.indent.repeat(options.indentLevel);
      var oldIndent = '';
      var inline1 = options.__inline1__;
      var inline2 = options.__inline2__;
      var newLine = compact ? '' : '\n';
      var result;
      var isEmpty = true;
      var useBinNumbers = options.numbers == 'binary';
      var useOctNumbers = options.numbers == 'octal';
      var useDecNumbers = options.numbers == 'decimal';
      var useHexNumbers = options.numbers == 'hexadecimal';
      if (json && argument && isFunction(argument.toJSON)) {
        argument = argument.toJSON();
      }
      if (!isString(argument)) {
        if (isMap(argument)) {
          if (argument.size == 0) {
            return 'new Map()';
          }
          if (!compact) {
            options.__inline1__ = true;
            options.__inline2__ = false;
          }
          return 'new Map(' + _jsesc(Array.from(argument), options) + ')';
        }
        if (isSet(argument)) {
          if (argument.size == 0) {
            return 'new Set()';
          }
          return 'new Set(' + _jsesc(Array.from(argument), options) + ')';
        }
        if (isBuffer(argument)) {
          if (argument.length == 0) {
            return 'Buffer.from([])';
          }
          return 'Buffer.from(' + _jsesc(Array.from(argument), options) + ')';
        }
        if (isArray(argument)) {
          result = [];
          options.wrap = true;
          if (inline1) {
            options.__inline1__ = false;
            options.__inline2__ = true;
          }
          if (!inline2) {
            increaseIndentation();
          }
          forEach(argument, function (value) {
            isEmpty = false;
            if (inline2) {
              options.__inline2__ = false;
            }
            result.push((compact || inline2 ? '' : indent) + _jsesc(value, options));
          });
          if (isEmpty) {
            return '[]';
          }
          if (inline2) {
            return '[' + result.join(', ') + ']';
          }
          return '[' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + ']';
        } else if (isNumber(argument)) {
          if (json) {
            return JSON.stringify(argument);
          }
          if (useDecNumbers) {
            return String(argument);
          }
          if (useHexNumbers) {
            var hexadecimal = argument.toString(16);
            if (!lowercaseHex) {
              hexadecimal = hexadecimal.toUpperCase();
            }
            return '0x' + hexadecimal;
          }
          if (useBinNumbers) {
            return '0b' + argument.toString(2);
          }
          if (useOctNumbers) {
            return '0o' + argument.toString(8);
          }
        } else if (!isObject(argument)) {
          if (json) {
            return JSON.stringify(argument) || 'null';
          }
          return String(argument);
        } else {
          result = [];
          options.wrap = true;
          increaseIndentation();
          forOwn(argument, function (key, value) {
            isEmpty = false;
            result.push((compact ? '' : indent) + _jsesc(key, options) + ':' + (compact ? '' : ' ') + _jsesc(value, options));
          });
          if (isEmpty) {
            return '{}';
          }
          return '{' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + '}';
        }
      }
      var string = argument;
      var index = -1;
      var length = string.length;
      result = '';
      while (++index < length) {
        var character = string.charAt(index);
        if (options.es6) {
          var first = string.charCodeAt(index);
          if (first >= 0xD800 && first <= 0xDBFF && length > index + 1) {
            var second = string.charCodeAt(index + 1);
            if (second >= 0xDC00 && second <= 0xDFFF) {
              var codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
              var _hexadecimal = codePoint.toString(16);
              if (!lowercaseHex) {
                _hexadecimal = _hexadecimal.toUpperCase();
              }
              result += "\\u{" + _hexadecimal + '}';
              ++index;
              continue;
            }
          }
        }
        if (!options.escapeEverything) {
          if (regexWhitelist.test(character)) {
            result += character;
            continue;
          }
          if (character == '"') {
            result += quote == character ? '\\"' : character;
            continue;
          }
          if (character == '`') {
            result += quote == character ? '\\`' : character;
            continue;
          }
          if (character == '\'') {
            result += quote == character ? '\\\'' : character;
            continue;
          }
        }
        if (character == '\0' && !json && !regexDigit.test(string.charAt(index + 1))) {
          result += '\\0';
          continue;
        }
        if (regexSingleEscape.test(character)) {
          result += singleEscapes[character];
          continue;
        }
        var charCode = character.charCodeAt(0);
        if (options.minimal && charCode != 0x2028 && charCode != 0x2029) {
          result += character;
          continue;
        }
        var _hexadecimal2 = charCode.toString(16);
        if (!lowercaseHex) {
          _hexadecimal2 = _hexadecimal2.toUpperCase();
        }
        var longhand = _hexadecimal2.length > 2 || json;
        var escaped = '\\' + (longhand ? 'u' : 'x') + ('0000' + _hexadecimal2).slice(longhand ? -4 : -2);
        result += escaped;
        continue;
      }
      if (options.wrap) {
        result = quote + result + quote;
      }
      if (quote == '`') {
        result = result.replace(/\$\{/g, '\\\$\{');
      }
      if (options.isScriptContext) {
        return result.replace(/<\/(script|style)/gi, '<\\/$1').replace(/<!--/g, json ? "\\u003C!--" : '\\x3C!--');
      }
      return result;
    };
    _jsesc.version = '2.5.2';
    jsesc_1 = _jsesc;
    return jsesc_1;
  }

  function bool$8(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var jsesc = bool$8(browser$1$1.env["BABEL_8_BREAKING"]) ? requireJsesc() : requireJsesc();

  var isAssignmentPattern$3 = isAssignmentPattern$4,
    isIdentifier$9 = isIdentifier$f;
  function Identifier(node) {
    var _node$loc;
    this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name);
    this.word(node.name);
  }
  function ArgumentPlaceholder() {
    this.tokenChar(63);
  }
  function RestElement$1(node) {
    this.token("...");
    this.print(node.argument);
  }
  function ObjectExpression$1(node) {
    var props = node.properties;
    this.tokenChar(123);
    if (props.length) {
      var exit = this.enterForStatementInit(false);
      this.space();
      this.printList(props, {
        indent: true,
        statement: true
      });
      this.space();
      exit();
    }
    this.sourceWithOffset("end", node.loc, -1);
    this.tokenChar(125);
  }
  function ObjectMethod(node) {
    this.printJoin(node.decorators);
    this._methodHead(node);
    this.space();
    this.print(node.body);
  }
  function ObjectProperty(node) {
    this.printJoin(node.decorators);
    if (node.computed) {
      this.tokenChar(91);
      this.print(node.key);
      this.tokenChar(93);
    } else {
      if (isAssignmentPattern$3(node.value) && isIdentifier$9(node.key) && node.key.name === node.value.left.name) {
        this.print(node.value);
        return;
      }
      this.print(node.key);
      if (node.shorthand && isIdentifier$9(node.key) && isIdentifier$9(node.value) && node.key.name === node.value.name) {
        return;
      }
    }
    this.tokenChar(58);
    this.space();
    this.print(node.value);
  }
  function ArrayExpression$1(node) {
    var elems = node.elements;
    var len = elems.length;
    this.tokenChar(91);
    var exit = this.enterForStatementInit(false);
    for (var i = 0; i < elems.length; i++) {
      var elem = elems[i];
      if (elem) {
        if (i > 0) this.space();
        this.print(elem);
        if (i < len - 1) this.tokenChar(44);
      } else {
        this.tokenChar(44);
      }
    }
    exit();
    this.tokenChar(93);
  }
  function RecordExpression(node) {
    var props = node.properties;
    var startToken;
    var endToken;
    {
      if (this.format.recordAndTupleSyntaxType === "bar") {
        startToken = "{|";
        endToken = "|}";
      } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) {
        throw new Error("The \"recordAndTupleSyntaxType\" generator option must be \"bar\" or \"hash\" (" + JSON.stringify(this.format.recordAndTupleSyntaxType) + " received).");
      } else {
        startToken = "#{";
        endToken = "}";
      }
    }
    this.token(startToken);
    if (props.length) {
      this.space();
      this.printList(props, {
        indent: true,
        statement: true
      });
      this.space();
    }
    this.token(endToken);
  }
  function TupleExpression(node) {
    var elems = node.elements;
    var len = elems.length;
    var startToken;
    var endToken;
    {
      if (this.format.recordAndTupleSyntaxType === "bar") {
        startToken = "[|";
        endToken = "|]";
      } else if (this.format.recordAndTupleSyntaxType === "hash") {
        startToken = "#[";
        endToken = "]";
      } else {
        throw new Error(this.format.recordAndTupleSyntaxType + " is not a valid recordAndTuple syntax type");
      }
    }
    this.token(startToken);
    for (var i = 0; i < elems.length; i++) {
      var elem = elems[i];
      if (elem) {
        if (i > 0) this.space();
        this.print(elem);
        if (i < len - 1) this.tokenChar(44);
      }
    }
    this.token(endToken);
  }
  function RegExpLiteral$1(node) {
    this.word("/" + node.pattern + "/" + node.flags);
  }
  function BooleanLiteral$1(node) {
    this.word(node.value ? "true" : "false");
  }
  function NullLiteral$1() {
    this.word("null");
  }
  function NumericLiteral$1(node) {
    var raw = this.getPossibleRaw(node);
    var opts = this.format.jsescOption;
    var value = node.value;
    var str = value + "";
    if (opts.numbers) {
      this.number(jsesc(value, opts), value);
    } else if (raw == null) {
      this.number(str, value);
    } else if (this.format.minified) {
      this.number(raw.length < str.length ? raw : str, value);
    } else {
      this.number(raw, value);
    }
  }
  function StringLiteral$1(node) {
    var raw = this.getPossibleRaw(node);
    if (!this.format.minified && raw !== undefined) {
      this.token(raw);
      return;
    }
    var val = jsesc(node.value, this.format.jsescOption);
    this.token(val);
  }
  function BigIntLiteral(node) {
    var raw = this.getPossibleRaw(node);
    if (!this.format.minified && raw !== undefined) {
      this.word(raw);
      return;
    }
    this.word(node.value + "n");
  }
  function DecimalLiteral(node) {
    var raw = this.getPossibleRaw(node);
    if (!this.format.minified && raw !== undefined) {
      this.word(raw);
      return;
    }
    this.word(node.value + "m");
  }
  var validTopicTokenSet = new Set(["^^", "@@", "^", "%", "#"]);
  function TopicReference() {
    var topicToken = this.format.topicToken;
    if (validTopicTokenSet.has(topicToken)) {
      this.token(topicToken);
    } else {
      var givenTopicTokenJSON = JSON.stringify(topicToken);
      var validTopics = Array.from(validTopicTokenSet, function (v) {
        return JSON.stringify(v);
      });
      throw new Error("The \"topicToken\" generator option must be one of " + (validTopics.join(", ") + " (" + givenTopicTokenJSON + " received instead)."));
    }
  }
  function PipelineTopicExpression(node) {
    this.print(node.expression);
  }
  function PipelineBareFunction(node) {
    this.print(node.callee);
  }
  function PipelinePrimaryTopicReference() {
    this.tokenChar(35);
  }

  var isDeclareExportDeclaration = isDeclareExportDeclaration$1,
    isStatement$2 = isStatement$9;
  function AnyTypeAnnotation() {
    this.word("any");
  }
  function ArrayTypeAnnotation(node) {
    this.print(node.elementType, true);
    this.tokenChar(91);
    this.tokenChar(93);
  }
  function BooleanTypeAnnotation() {
    this.word("boolean");
  }
  function BooleanLiteralTypeAnnotation(node) {
    this.word(node.value ? "true" : "false");
  }
  function NullLiteralTypeAnnotation() {
    this.word("null");
  }
  function DeclareClass(node, parent) {
    if (!isDeclareExportDeclaration(parent)) {
      this.word("declare");
      this.space();
    }
    this.word("class");
    this.space();
    this._interfaceish(node);
  }
  function DeclareFunction(node, parent) {
    if (!isDeclareExportDeclaration(parent)) {
      this.word("declare");
      this.space();
    }
    this.word("function");
    this.space();
    this.print(node.id);
    this.print(node.id.typeAnnotation.typeAnnotation);
    if (node.predicate) {
      this.space();
      this.print(node.predicate);
    }
    this.semicolon();
  }
  function InferredPredicate() {
    this.tokenChar(37);
    this.word("checks");
  }
  function DeclaredPredicate(node) {
    this.tokenChar(37);
    this.word("checks");
    this.tokenChar(40);
    this.print(node.value);
    this.tokenChar(41);
  }
  function DeclareInterface(node) {
    this.word("declare");
    this.space();
    this.InterfaceDeclaration(node);
  }
  function DeclareModule(node) {
    this.word("declare");
    this.space();
    this.word("module");
    this.space();
    this.print(node.id);
    this.space();
    this.print(node.body);
  }
  function DeclareModuleExports(node) {
    this.word("declare");
    this.space();
    this.word("module");
    this.tokenChar(46);
    this.word("exports");
    this.print(node.typeAnnotation);
  }
  function DeclareTypeAlias(node) {
    this.word("declare");
    this.space();
    this.TypeAlias(node);
  }
  function DeclareOpaqueType(node, parent) {
    if (!isDeclareExportDeclaration(parent)) {
      this.word("declare");
      this.space();
    }
    this.OpaqueType(node);
  }
  function DeclareVariable(node, parent) {
    if (!isDeclareExportDeclaration(parent)) {
      this.word("declare");
      this.space();
    }
    this.word("var");
    this.space();
    this.print(node.id);
    this.print(node.id.typeAnnotation);
    this.semicolon();
  }
  function DeclareExportDeclaration(node) {
    this.word("declare");
    this.space();
    this.word("export");
    this.space();
    if (node["default"]) {
      this.word("default");
      this.space();
    }
    FlowExportDeclaration.call(this, node);
  }
  function DeclareExportAllDeclaration(node) {
    this.word("declare");
    this.space();
    ExportAllDeclaration.call(this, node);
  }
  function EnumDeclaration(node) {
    var id = node.id,
      body = node.body;
    this.word("enum");
    this.space();
    this.print(id);
    this.print(body);
  }
  function enumExplicitType(context, name, hasExplicitType) {
    if (hasExplicitType) {
      context.space();
      context.word("of");
      context.space();
      context.word(name);
    }
    context.space();
  }
  function enumBody(context, node) {
    var members = node.members;
    context.token("{");
    context.indent();
    context.newline();
    for (var _iterator = _createForOfIteratorHelperLoose(members), _step; !(_step = _iterator()).done;) {
      var member = _step.value;
      context.print(member);
      context.newline();
    }
    if (node.hasUnknownMembers) {
      context.token("...");
      context.newline();
    }
    context.dedent();
    context.token("}");
  }
  function EnumBooleanBody(node) {
    var explicitType = node.explicitType;
    enumExplicitType(this, "boolean", explicitType);
    enumBody(this, node);
  }
  function EnumNumberBody(node) {
    var explicitType = node.explicitType;
    enumExplicitType(this, "number", explicitType);
    enumBody(this, node);
  }
  function EnumStringBody(node) {
    var explicitType = node.explicitType;
    enumExplicitType(this, "string", explicitType);
    enumBody(this, node);
  }
  function EnumSymbolBody(node) {
    enumExplicitType(this, "symbol", true);
    enumBody(this, node);
  }
  function EnumDefaultedMember(node) {
    var id = node.id;
    this.print(id);
    this.tokenChar(44);
  }
  function enumInitializedMember(context, node) {
    context.print(node.id);
    context.space();
    context.token("=");
    context.space();
    context.print(node.init);
    context.token(",");
  }
  function EnumBooleanMember(node) {
    enumInitializedMember(this, node);
  }
  function EnumNumberMember(node) {
    enumInitializedMember(this, node);
  }
  function EnumStringMember(node) {
    enumInitializedMember(this, node);
  }
  function FlowExportDeclaration(node) {
    if (node.declaration) {
      var declar = node.declaration;
      this.print(declar);
      if (!isStatement$2(declar)) this.semicolon();
    } else {
      this.tokenChar(123);
      if (node.specifiers.length) {
        this.space();
        this.printList(node.specifiers);
        this.space();
      }
      this.tokenChar(125);
      if (node.source) {
        this.space();
        this.word("from");
        this.space();
        this.print(node.source);
      }
      this.semicolon();
    }
  }
  function ExistsTypeAnnotation() {
    this.tokenChar(42);
  }
  function FunctionTypeAnnotation(node, parent) {
    this.print(node.typeParameters);
    this.tokenChar(40);
    if (node["this"]) {
      this.word("this");
      this.tokenChar(58);
      this.space();
      this.print(node["this"].typeAnnotation);
      if (node.params.length || node.rest) {
        this.tokenChar(44);
        this.space();
      }
    }
    this.printList(node.params);
    if (node.rest) {
      if (node.params.length) {
        this.tokenChar(44);
        this.space();
      }
      this.token("...");
      this.print(node.rest);
    }
    this.tokenChar(41);
    var type = parent == null ? void 0 : parent.type;
    if (type != null && (type === "ObjectTypeCallProperty" || type === "ObjectTypeInternalSlot" || type === "DeclareFunction" || type === "ObjectTypeProperty" && parent.method)) {
      this.tokenChar(58);
    } else {
      this.space();
      this.token("=>");
    }
    this.space();
    this.print(node.returnType);
  }
  function FunctionTypeParam(node) {
    this.print(node.name);
    if (node.optional) this.tokenChar(63);
    if (node.name) {
      this.tokenChar(58);
      this.space();
    }
    this.print(node.typeAnnotation);
  }
  function InterfaceExtends(node) {
    this.print(node.id);
    this.print(node.typeParameters, true);
  }
  function _interfaceish(node) {
    var _node$extends;
    this.print(node.id);
    this.print(node.typeParameters);
    if ((_node$extends = node["extends"]) != null && _node$extends.length) {
      this.space();
      this.word("extends");
      this.space();
      this.printList(node["extends"]);
    }
    if (node.type === "DeclareClass") {
      var _node$mixins, _node$implements;
      if ((_node$mixins = node.mixins) != null && _node$mixins.length) {
        this.space();
        this.word("mixins");
        this.space();
        this.printList(node.mixins);
      }
      if ((_node$implements = node["implements"]) != null && _node$implements.length) {
        this.space();
        this.word("implements");
        this.space();
        this.printList(node["implements"]);
      }
    }
    this.space();
    this.print(node.body);
  }
  function _variance(node) {
    var _node$variance;
    var kind = (_node$variance = node.variance) == null ? void 0 : _node$variance.kind;
    if (kind != null) {
      if (kind === "plus") {
        this.tokenChar(43);
      } else if (kind === "minus") {
        this.tokenChar(45);
      }
    }
  }
  function InterfaceDeclaration(node) {
    this.word("interface");
    this.space();
    this._interfaceish(node);
  }
  function andSeparator() {
    this.space();
    this.tokenChar(38);
    this.space();
  }
  function InterfaceTypeAnnotation(node) {
    var _node$extends2;
    this.word("interface");
    if ((_node$extends2 = node["extends"]) != null && _node$extends2.length) {
      this.space();
      this.word("extends");
      this.space();
      this.printList(node["extends"]);
    }
    this.space();
    this.print(node.body);
  }
  function IntersectionTypeAnnotation(node) {
    this.printJoin(node.types, {
      separator: andSeparator
    });
  }
  function MixedTypeAnnotation() {
    this.word("mixed");
  }
  function EmptyTypeAnnotation() {
    this.word("empty");
  }
  function NullableTypeAnnotation(node) {
    this.tokenChar(63);
    this.print(node.typeAnnotation);
  }
  function NumberTypeAnnotation() {
    this.word("number");
  }
  function StringTypeAnnotation() {
    this.word("string");
  }
  function ThisTypeAnnotation() {
    this.word("this");
  }
  function TupleTypeAnnotation(node) {
    this.tokenChar(91);
    this.printList(node.types);
    this.tokenChar(93);
  }
  function TypeofTypeAnnotation(node) {
    this.word("typeof");
    this.space();
    this.print(node.argument);
  }
  function TypeAlias(node) {
    this.word("type");
    this.space();
    this.print(node.id);
    this.print(node.typeParameters);
    this.space();
    this.tokenChar(61);
    this.space();
    this.print(node.right);
    this.semicolon();
  }
  function TypeAnnotation(node, parent) {
    this.tokenChar(58);
    this.space();
    if (parent.type === "ArrowFunctionExpression") {
      this.tokenContext |= TokenContext.arrowFlowReturnType;
    } else if (node.optional) {
      this.tokenChar(63);
    }
    this.print(node.typeAnnotation);
  }
  function TypeParameterInstantiation(node) {
    this.tokenChar(60);
    this.printList(node.params, {});
    this.tokenChar(62);
  }
  function TypeParameter(node) {
    this._variance(node);
    this.word(node.name);
    if (node.bound) {
      this.print(node.bound);
    }
    if (node["default"]) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node["default"]);
    }
  }
  function OpaqueType(node) {
    this.word("opaque");
    this.space();
    this.word("type");
    this.space();
    this.print(node.id);
    this.print(node.typeParameters);
    if (node.supertype) {
      this.tokenChar(58);
      this.space();
      this.print(node.supertype);
    }
    if (node.impltype) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.impltype);
    }
    this.semicolon();
  }
  function ObjectTypeAnnotation(node) {
    var _this = this;
    if (node.exact) {
      this.token("{|");
    } else {
      this.tokenChar(123);
    }
    var props = [].concat(_toConsumableArray(node.properties), _toConsumableArray(node.callProperties || []), _toConsumableArray(node.indexers || []), _toConsumableArray(node.internalSlots || []));
    if (props.length) {
      this.newline();
      this.space();
      this.printJoin(props, {
        addNewlines: function addNewlines(leading) {
          if (leading && !props[0]) return 1;
        },
        indent: true,
        statement: true,
        iterator: function iterator() {
          if (props.length !== 1 || node.inexact) {
            _this.token(",");
            _this.space();
          }
        }
      });
      this.space();
    }
    if (node.inexact) {
      this.indent();
      this.token("...");
      if (props.length) {
        this.newline();
      }
      this.dedent();
    }
    if (node.exact) {
      this.token("|}");
    } else {
      this.tokenChar(125);
    }
  }
  function ObjectTypeInternalSlot(node) {
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    this.tokenChar(91);
    this.tokenChar(91);
    this.print(node.id);
    this.tokenChar(93);
    this.tokenChar(93);
    if (node.optional) this.tokenChar(63);
    if (!node.method) {
      this.tokenChar(58);
      this.space();
    }
    this.print(node.value);
  }
  function ObjectTypeCallProperty(node) {
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    this.print(node.value);
  }
  function ObjectTypeIndexer(node) {
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    this._variance(node);
    this.tokenChar(91);
    if (node.id) {
      this.print(node.id);
      this.tokenChar(58);
      this.space();
    }
    this.print(node.key);
    this.tokenChar(93);
    this.tokenChar(58);
    this.space();
    this.print(node.value);
  }
  function ObjectTypeProperty(node) {
    if (node.proto) {
      this.word("proto");
      this.space();
    }
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    if (node.kind === "get" || node.kind === "set") {
      this.word(node.kind);
      this.space();
    }
    this._variance(node);
    this.print(node.key);
    if (node.optional) this.tokenChar(63);
    if (!node.method) {
      this.tokenChar(58);
      this.space();
    }
    this.print(node.value);
  }
  function ObjectTypeSpreadProperty(node) {
    this.token("...");
    this.print(node.argument);
  }
  function QualifiedTypeIdentifier(node) {
    this.print(node.qualification);
    this.tokenChar(46);
    this.print(node.id);
  }
  function SymbolTypeAnnotation() {
    this.word("symbol");
  }
  function orSeparator() {
    this.space();
    this.tokenChar(124);
    this.space();
  }
  function UnionTypeAnnotation(node) {
    this.printJoin(node.types, {
      separator: orSeparator
    });
  }
  function TypeCastExpression$1(node) {
    this.tokenChar(40);
    this.print(node.expression);
    this.print(node.typeAnnotation);
    this.tokenChar(41);
  }
  function Variance(node) {
    if (node.kind === "plus") {
      this.tokenChar(43);
    } else {
      this.tokenChar(45);
    }
  }
  function VoidTypeAnnotation() {
    this.word("void");
  }
  function IndexedAccessType(node) {
    this.print(node.objectType, true);
    this.tokenChar(91);
    this.print(node.indexType);
    this.tokenChar(93);
  }
  function OptionalIndexedAccessType(node) {
    this.print(node.objectType);
    if (node.optional) {
      this.token("?.");
    }
    this.tokenChar(91);
    this.print(node.indexType);
    this.tokenChar(93);
  }

  function File$1(node) {
    if (node.program) {
      this.print(node.program.interpreter);
    }
    this.print(node.program);
  }
  function Program(node) {
    var _node$directives;
    this.noIndentInnerCommentsHere();
    this.printInnerComments();
    var directivesLen = (_node$directives = node.directives) == null ? void 0 : _node$directives.length;
    if (directivesLen) {
      var _node$directives$trai;
      var newline = node.body.length ? 2 : 1;
      this.printSequence(node.directives, {
        trailingCommentsLineOffset: newline
      });
      if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) {
        this.newline(newline);
      }
    }
    this.printSequence(node.body);
  }
  function BlockStatement(node) {
    var _node$directives2;
    this.tokenChar(123);
    var directivesLen = (_node$directives2 = node.directives) == null ? void 0 : _node$directives2.length;
    if (directivesLen) {
      var _node$directives$trai2;
      var newline = node.body.length ? 2 : 1;
      this.printSequence(node.directives, {
        indent: true,
        trailingCommentsLineOffset: newline
      });
      if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) {
        this.newline(newline);
      }
    }
    var exit = this.enterForStatementInit(false);
    this.printSequence(node.body, {
      indent: true
    });
    exit();
    this.rightBrace(node);
  }
  function Directive(node) {
    this.print(node.value);
    this.semicolon();
  }
  var unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/;
  var unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/;
  function DirectiveLiteral(node) {
    var raw = this.getPossibleRaw(node);
    if (!this.format.minified && raw !== undefined) {
      this.token(raw);
      return;
    }
    var value = node.value;
    if (!unescapedDoubleQuoteRE.test(value)) {
      this.token("\"" + value + "\"");
    } else if (!unescapedSingleQuoteRE.test(value)) {
      this.token("'" + value + "'");
    } else {
      throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes.");
    }
  }
  function InterpreterDirective(node) {
    this.token("#!" + node.value);
    this.newline(1, true);
  }
  function Placeholder(node) {
    this.token("%%");
    this.print(node.name);
    this.token("%%");
    if (node.expectedNode === "Statement") {
      this.semicolon();
    }
  }

  function JSXAttribute(node) {
    this.print(node.name);
    if (node.value) {
      this.tokenChar(61);
      this.print(node.value);
    }
  }
  function JSXIdentifier(node) {
    this.word(node.name);
  }
  function JSXNamespacedName(node) {
    this.print(node.namespace);
    this.tokenChar(58);
    this.print(node.name);
  }
  function JSXMemberExpression(node) {
    this.print(node.object);
    this.tokenChar(46);
    this.print(node.property);
  }
  function JSXSpreadAttribute(node) {
    this.tokenChar(123);
    this.token("...");
    this.print(node.argument);
    this.rightBrace(node);
  }
  function JSXExpressionContainer(node) {
    this.tokenChar(123);
    this.print(node.expression);
    this.rightBrace(node);
  }
  function JSXSpreadChild(node) {
    this.tokenChar(123);
    this.token("...");
    this.print(node.expression);
    this.rightBrace(node);
  }
  function JSXText(node) {
    var raw = this.getPossibleRaw(node);
    if (raw !== undefined) {
      this.token(raw, true);
    } else {
      this.token(node.value, true);
    }
  }
  function JSXElement(node) {
    var open = node.openingElement;
    this.print(open);
    if (open.selfClosing) return;
    this.indent();
    for (var _iterator = _createForOfIteratorHelperLoose(node.children), _step; !(_step = _iterator()).done;) {
      var child = _step.value;
      this.print(child);
    }
    this.dedent();
    this.print(node.closingElement);
  }
  function spaceSeparator() {
    this.space();
  }
  function JSXOpeningElement(node) {
    this.tokenChar(60);
    this.print(node.name);
    this.print(node.typeParameters);
    if (node.attributes.length > 0) {
      this.space();
      this.printJoin(node.attributes, {
        separator: spaceSeparator
      });
    }
    if (node.selfClosing) {
      this.space();
      this.token("/>");
    } else {
      this.tokenChar(62);
    }
  }
  function JSXClosingElement(node) {
    this.token("</");
    this.print(node.name);
    this.tokenChar(62);
  }
  function JSXEmptyExpression() {
    this.printInnerComments();
  }
  function JSXFragment(node) {
    this.print(node.openingFragment);
    this.indent();
    for (var _iterator2 = _createForOfIteratorHelperLoose(node.children), _step2; !(_step2 = _iterator2()).done;) {
      var child = _step2.value;
      this.print(child);
    }
    this.dedent();
    this.print(node.closingFragment);
  }
  function JSXOpeningFragment() {
    this.tokenChar(60);
    this.tokenChar(62);
  }
  function JSXClosingFragment() {
    this.token("</");
    this.tokenChar(62);
  }

  function TSTypeAnnotation(node) {
    this.tokenChar(58);
    this.space();
    if (node.optional) this.tokenChar(63);
    this.print(node.typeAnnotation);
  }
  function TSTypeParameterInstantiation(node, parent) {
    this.tokenChar(60);
    this.printList(node.params, {});
    if (parent.type === "ArrowFunctionExpression" && node.params.length === 1) {
      this.tokenChar(44);
    }
    this.tokenChar(62);
  }
  function TSTypeParameter(node) {
    if (node["in"]) {
      this.word("in");
      this.space();
    }
    if (node.out) {
      this.word("out");
      this.space();
    }
    this.word(node.name);
    if (node.constraint) {
      this.space();
      this.word("extends");
      this.space();
      this.print(node.constraint);
    }
    if (node["default"]) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node["default"]);
    }
  }
  function TSParameterProperty(node) {
    if (node.accessibility) {
      this.word(node.accessibility);
      this.space();
    }
    if (node.readonly) {
      this.word("readonly");
      this.space();
    }
    this._param(node.parameter);
  }
  function TSDeclareFunction(node, parent) {
    if (node.declare) {
      this.word("declare");
      this.space();
    }
    this._functionHead(node, parent);
    this.semicolon();
  }
  function TSDeclareMethod(node) {
    this._classMethodHead(node);
    this.semicolon();
  }
  function TSQualifiedName(node) {
    this.print(node.left);
    this.tokenChar(46);
    this.print(node.right);
  }
  function TSCallSignatureDeclaration(node) {
    this.tsPrintSignatureDeclarationBase(node);
    this.semicolon();
  }
  function TSConstructSignatureDeclaration(node) {
    this.word("new");
    this.space();
    this.tsPrintSignatureDeclarationBase(node);
    this.semicolon();
  }
  function TSPropertySignature(node) {
    var readonly = node.readonly;
    if (readonly) {
      this.word("readonly");
      this.space();
    }
    this.tsPrintPropertyOrMethodName(node);
    this.print(node.typeAnnotation);
    this.semicolon();
  }
  function tsPrintPropertyOrMethodName(node) {
    if (node.computed) {
      this.tokenChar(91);
    }
    this.print(node.key);
    if (node.computed) {
      this.tokenChar(93);
    }
    if (node.optional) {
      this.tokenChar(63);
    }
  }
  function TSMethodSignature(node) {
    var kind = node.kind;
    if (kind === "set" || kind === "get") {
      this.word(kind);
      this.space();
    }
    this.tsPrintPropertyOrMethodName(node);
    this.tsPrintSignatureDeclarationBase(node);
    this.semicolon();
  }
  function TSIndexSignature(node) {
    var readonly = node.readonly,
      isStatic = node["static"];
    if (isStatic) {
      this.word("static");
      this.space();
    }
    if (readonly) {
      this.word("readonly");
      this.space();
    }
    this.tokenChar(91);
    this._parameters(node.parameters);
    this.tokenChar(93);
    this.print(node.typeAnnotation);
    this.semicolon();
  }
  function TSAnyKeyword() {
    this.word("any");
  }
  function TSBigIntKeyword() {
    this.word("bigint");
  }
  function TSUnknownKeyword() {
    this.word("unknown");
  }
  function TSNumberKeyword() {
    this.word("number");
  }
  function TSObjectKeyword() {
    this.word("object");
  }
  function TSBooleanKeyword() {
    this.word("boolean");
  }
  function TSStringKeyword() {
    this.word("string");
  }
  function TSSymbolKeyword() {
    this.word("symbol");
  }
  function TSVoidKeyword() {
    this.word("void");
  }
  function TSUndefinedKeyword() {
    this.word("undefined");
  }
  function TSNullKeyword() {
    this.word("null");
  }
  function TSNeverKeyword() {
    this.word("never");
  }
  function TSIntrinsicKeyword() {
    this.word("intrinsic");
  }
  function TSThisType() {
    this.word("this");
  }
  function TSFunctionType(node) {
    this.tsPrintFunctionOrConstructorType(node);
  }
  function TSConstructorType(node) {
    if (node["abstract"]) {
      this.word("abstract");
      this.space();
    }
    this.word("new");
    this.space();
    this.tsPrintFunctionOrConstructorType(node);
  }
  function tsPrintFunctionOrConstructorType(node) {
    var typeParameters = node.typeParameters;
    var parameters = node.parameters;
    this.print(typeParameters);
    this.tokenChar(40);
    this._parameters(parameters);
    this.tokenChar(41);
    this.space();
    this.token("=>");
    this.space();
    var returnType = node.typeAnnotation;
    this.print(returnType.typeAnnotation);
  }
  function TSTypeReference(node) {
    this.print(node.typeName, true);
    this.print(node.typeParameters, true);
  }
  function TSTypePredicate(node) {
    if (node.asserts) {
      this.word("asserts");
      this.space();
    }
    this.print(node.parameterName);
    if (node.typeAnnotation) {
      this.space();
      this.word("is");
      this.space();
      this.print(node.typeAnnotation.typeAnnotation);
    }
  }
  function TSTypeQuery(node) {
    this.word("typeof");
    this.space();
    this.print(node.exprName);
    if (node.typeParameters) {
      this.print(node.typeParameters);
    }
  }
  function TSTypeLiteral(node) {
    this.tsPrintTypeLiteralOrInterfaceBody(node.members, node);
  }
  function tsPrintTypeLiteralOrInterfaceBody(members, node) {
    tsPrintBraced(this, members, node);
  }
  function tsPrintBraced(printer, members, node) {
    printer.token("{");
    if (members.length) {
      printer.indent();
      printer.newline();
      for (var _iterator = _createForOfIteratorHelperLoose(members), _step; !(_step = _iterator()).done;) {
        var member = _step.value;
        printer.print(member);
        printer.newline();
      }
      printer.dedent();
    }
    printer.rightBrace(node);
  }
  function TSArrayType(node) {
    this.print(node.elementType, true);
    this.tokenChar(91);
    this.tokenChar(93);
  }
  function TSTupleType(node) {
    this.tokenChar(91);
    this.printList(node.elementTypes);
    this.tokenChar(93);
  }
  function TSOptionalType(node) {
    this.print(node.typeAnnotation);
    this.tokenChar(63);
  }
  function TSRestType(node) {
    this.token("...");
    this.print(node.typeAnnotation);
  }
  function TSNamedTupleMember(node) {
    this.print(node.label);
    if (node.optional) this.tokenChar(63);
    this.tokenChar(58);
    this.space();
    this.print(node.elementType);
  }
  function TSUnionType(node) {
    tsPrintUnionOrIntersectionType(this, node, "|");
  }
  function TSIntersectionType(node) {
    tsPrintUnionOrIntersectionType(this, node, "&");
  }
  function tsPrintUnionOrIntersectionType(printer, node, sep) {
    printer.printJoin(node.types, {
      separator: function separator() {
        this.space();
        this.token(sep);
        this.space();
      }
    });
  }
  function TSConditionalType(node) {
    this.print(node.checkType);
    this.space();
    this.word("extends");
    this.space();
    this.print(node.extendsType);
    this.space();
    this.tokenChar(63);
    this.space();
    this.print(node.trueType);
    this.space();
    this.tokenChar(58);
    this.space();
    this.print(node.falseType);
  }
  function TSInferType(node) {
    this.token("infer");
    this.space();
    this.print(node.typeParameter);
  }
  function TSParenthesizedType(node) {
    this.tokenChar(40);
    this.print(node.typeAnnotation);
    this.tokenChar(41);
  }
  function TSTypeOperator(node) {
    this.word(node.operator);
    this.space();
    this.print(node.typeAnnotation);
  }
  function TSIndexedAccessType(node) {
    this.print(node.objectType, true);
    this.tokenChar(91);
    this.print(node.indexType);
    this.tokenChar(93);
  }
  function TSMappedType(node) {
    var nameType = node.nameType,
      optional = node.optional,
      readonly = node.readonly,
      typeAnnotation = node.typeAnnotation;
    this.tokenChar(123);
    this.space();
    if (readonly) {
      tokenIfPlusMinus(this, readonly);
      this.word("readonly");
      this.space();
    }
    this.tokenChar(91);
    {
      this.word(node.typeParameter.name);
    }
    this.space();
    this.word("in");
    this.space();
    {
      this.print(node.typeParameter.constraint);
    }
    if (nameType) {
      this.space();
      this.word("as");
      this.space();
      this.print(nameType);
    }
    this.tokenChar(93);
    if (optional) {
      tokenIfPlusMinus(this, optional);
      this.tokenChar(63);
    }
    if (typeAnnotation) {
      this.tokenChar(58);
      this.space();
      this.print(typeAnnotation);
    }
    this.space();
    this.tokenChar(125);
  }
  function tokenIfPlusMinus(self, tok) {
    if (tok !== true) {
      self.token(tok);
    }
  }
  function TSLiteralType(node) {
    this.print(node.literal);
  }
  function TSExpressionWithTypeArguments(node) {
    this.print(node.expression);
    this.print(node.typeParameters);
  }
  function TSInterfaceDeclaration(node) {
    var declare = node.declare,
      id = node.id,
      typeParameters = node.typeParameters,
      extendz = node["extends"],
      body = node.body;
    if (declare) {
      this.word("declare");
      this.space();
    }
    this.word("interface");
    this.space();
    this.print(id);
    this.print(typeParameters);
    if (extendz != null && extendz.length) {
      this.space();
      this.word("extends");
      this.space();
      this.printList(extendz);
    }
    this.space();
    this.print(body);
  }
  function TSInterfaceBody(node) {
    this.tsPrintTypeLiteralOrInterfaceBody(node.body, node);
  }
  function TSTypeAliasDeclaration(node) {
    var declare = node.declare,
      id = node.id,
      typeParameters = node.typeParameters,
      typeAnnotation = node.typeAnnotation;
    if (declare) {
      this.word("declare");
      this.space();
    }
    this.word("type");
    this.space();
    this.print(id);
    this.print(typeParameters);
    this.space();
    this.tokenChar(61);
    this.space();
    this.print(typeAnnotation);
    this.semicolon();
  }
  function TSTypeExpression(node) {
    var _expression$trailingC;
    var type = node.type,
      expression = node.expression,
      typeAnnotation = node.typeAnnotation;
    var forceParens = (_expression$trailingC = expression.trailingComments) == null ? void 0 : _expression$trailingC.some(function (c) {
      return c.type === "CommentLine" || /[\r\n\u2028\u2029]/.test(c.value);
    });
    this.print(expression, true, undefined, forceParens);
    this.space();
    this.word(type === "TSAsExpression" ? "as" : "satisfies");
    this.space();
    this.print(typeAnnotation);
  }
  function TSTypeAssertion(node) {
    var typeAnnotation = node.typeAnnotation,
      expression = node.expression;
    this.tokenChar(60);
    this.print(typeAnnotation);
    this.tokenChar(62);
    this.space();
    this.print(expression);
  }
  function TSInstantiationExpression(node) {
    this.print(node.expression);
    this.print(node.typeParameters);
  }
  function TSEnumDeclaration(node) {
    var declare = node.declare,
      isConst = node["const"],
      id = node.id,
      members = node.members;
    if (declare) {
      this.word("declare");
      this.space();
    }
    if (isConst) {
      this.word("const");
      this.space();
    }
    this.word("enum");
    this.space();
    this.print(id);
    this.space();
    tsPrintBraced(this, members, node);
  }
  function TSEnumMember(node) {
    var id = node.id,
      initializer = node.initializer;
    this.print(id);
    if (initializer) {
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(initializer);
    }
    this.tokenChar(44);
  }
  function TSModuleDeclaration(node) {
    var declare = node.declare,
      id = node.id;
    if (declare) {
      this.word("declare");
      this.space();
    }
    if (!node.global) {
      this.word(id.type === "Identifier" ? "namespace" : "module");
      this.space();
    }
    this.print(id);
    if (!node.body) {
      this.semicolon();
      return;
    }
    var body = node.body;
    while (body.type === "TSModuleDeclaration") {
      this.tokenChar(46);
      this.print(body.id);
      body = body.body;
    }
    this.space();
    this.print(body);
  }
  function TSModuleBlock(node) {
    tsPrintBraced(this, node.body, node);
  }
  function TSImportType(node) {
    var argument = node.argument,
      qualifier = node.qualifier,
      typeParameters = node.typeParameters;
    this.word("import");
    this.tokenChar(40);
    this.print(argument);
    this.tokenChar(41);
    if (qualifier) {
      this.tokenChar(46);
      this.print(qualifier);
    }
    if (typeParameters) {
      this.print(typeParameters);
    }
  }
  function TSImportEqualsDeclaration(node) {
    var isExport = node.isExport,
      id = node.id,
      moduleReference = node.moduleReference;
    if (isExport) {
      this.word("export");
      this.space();
    }
    this.word("import");
    this.space();
    this.print(id);
    this.space();
    this.tokenChar(61);
    this.space();
    this.print(moduleReference);
    this.semicolon();
  }
  function TSExternalModuleReference(node) {
    this.token("require(");
    this.print(node.expression);
    this.tokenChar(41);
  }
  function TSNonNullExpression$1(node) {
    this.print(node.expression);
    this.tokenChar(33);
  }
  function TSExportAssignment(node) {
    this.word("export");
    this.space();
    this.tokenChar(61);
    this.space();
    this.print(node.expression);
    this.semicolon();
  }
  function TSNamespaceExportDeclaration(node) {
    this.word("export");
    this.space();
    this.word("as");
    this.space();
    this.word("namespace");
    this.space();
    this.print(node.id);
    this.semicolon();
  }
  function tsPrintSignatureDeclarationBase(node) {
    var typeParameters = node.typeParameters;
    var parameters = node.parameters;
    this.print(typeParameters);
    this.tokenChar(40);
    this._parameters(parameters);
    this.tokenChar(41);
    var returnType = node.typeAnnotation;
    this.print(returnType);
  }
  function tsPrintClassMemberModifiers(node) {
    var isField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty";
    if (isField && node.declare) {
      this.word("declare");
      this.space();
    }
    if (node.accessibility) {
      this.word(node.accessibility);
      this.space();
    }
    if (node["static"]) {
      this.word("static");
      this.space();
    }
    if (node.override) {
      this.word("override");
      this.space();
    }
    if (node["abstract"]) {
      this.word("abstract");
      this.space();
    }
    if (isField && node.readonly) {
      this.word("readonly");
      this.space();
    }
  }

  var generatorFunctions = /*#__PURE__*/Object.freeze({
    __proto__: null,
    AnyTypeAnnotation: AnyTypeAnnotation,
    ArgumentPlaceholder: ArgumentPlaceholder,
    ArrayExpression: ArrayExpression$1,
    ArrayPattern: ArrayExpression$1,
    ArrayTypeAnnotation: ArrayTypeAnnotation,
    ArrowFunctionExpression: ArrowFunctionExpression,
    AssignmentExpression: AssignmentExpression$1,
    AssignmentPattern: AssignmentPattern,
    AwaitExpression: AwaitExpression,
    BigIntLiteral: BigIntLiteral,
    BinaryExpression: AssignmentExpression$1,
    BindExpression: BindExpression,
    BlockStatement: BlockStatement,
    BooleanLiteral: BooleanLiteral$1,
    BooleanLiteralTypeAnnotation: BooleanLiteralTypeAnnotation,
    BooleanTypeAnnotation: BooleanTypeAnnotation,
    BreakStatement: BreakStatement,
    CallExpression: CallExpression$1,
    CatchClause: CatchClause,
    ClassAccessorProperty: ClassAccessorProperty,
    ClassBody: ClassBody,
    ClassDeclaration: ClassDeclaration,
    ClassExpression: ClassDeclaration,
    ClassImplements: InterfaceExtends,
    ClassMethod: ClassMethod,
    ClassPrivateMethod: ClassPrivateMethod,
    ClassPrivateProperty: ClassPrivateProperty,
    ClassProperty: ClassProperty,
    ConditionalExpression: ConditionalExpression$1,
    ContinueStatement: ContinueStatement,
    DebuggerStatement: DebuggerStatement,
    DecimalLiteral: DecimalLiteral,
    DeclareClass: DeclareClass,
    DeclareExportAllDeclaration: DeclareExportAllDeclaration,
    DeclareExportDeclaration: DeclareExportDeclaration,
    DeclareFunction: DeclareFunction,
    DeclareInterface: DeclareInterface,
    DeclareModule: DeclareModule,
    DeclareModuleExports: DeclareModuleExports,
    DeclareOpaqueType: DeclareOpaqueType,
    DeclareTypeAlias: DeclareTypeAlias,
    DeclareVariable: DeclareVariable,
    DeclaredPredicate: DeclaredPredicate,
    Decorator: Decorator,
    Directive: Directive,
    DirectiveLiteral: DirectiveLiteral,
    DoExpression: DoExpression,
    DoWhileStatement: DoWhileStatement,
    EmptyStatement: EmptyStatement,
    EmptyTypeAnnotation: EmptyTypeAnnotation,
    EnumBooleanBody: EnumBooleanBody,
    EnumBooleanMember: EnumBooleanMember,
    EnumDeclaration: EnumDeclaration,
    EnumDefaultedMember: EnumDefaultedMember,
    EnumNumberBody: EnumNumberBody,
    EnumNumberMember: EnumNumberMember,
    EnumStringBody: EnumStringBody,
    EnumStringMember: EnumStringMember,
    EnumSymbolBody: EnumSymbolBody,
    ExistsTypeAnnotation: ExistsTypeAnnotation,
    ExportAllDeclaration: ExportAllDeclaration,
    ExportDefaultDeclaration: ExportDefaultDeclaration,
    ExportDefaultSpecifier: ExportDefaultSpecifier,
    ExportNamedDeclaration: ExportNamedDeclaration,
    ExportNamespaceSpecifier: ExportNamespaceSpecifier,
    ExportSpecifier: ExportSpecifier,
    ExpressionStatement: ExpressionStatement,
    File: File$1,
    ForInStatement: ForInStatement,
    ForOfStatement: ForOfStatement,
    ForStatement: ForStatement,
    FunctionDeclaration: FunctionExpression,
    FunctionExpression: FunctionExpression,
    FunctionTypeAnnotation: FunctionTypeAnnotation,
    FunctionTypeParam: FunctionTypeParam,
    GenericTypeAnnotation: InterfaceExtends,
    Identifier: Identifier,
    IfStatement: IfStatement,
    Import: Import,
    ImportAttribute: ImportAttribute,
    ImportDeclaration: ImportDeclaration,
    ImportDefaultSpecifier: ImportDefaultSpecifier,
    ImportExpression: ImportExpression,
    ImportNamespaceSpecifier: ImportNamespaceSpecifier,
    ImportSpecifier: ImportSpecifier,
    IndexedAccessType: IndexedAccessType,
    InferredPredicate: InferredPredicate,
    InterfaceDeclaration: InterfaceDeclaration,
    InterfaceExtends: InterfaceExtends,
    InterfaceTypeAnnotation: InterfaceTypeAnnotation,
    InterpreterDirective: InterpreterDirective,
    IntersectionTypeAnnotation: IntersectionTypeAnnotation,
    JSXAttribute: JSXAttribute,
    JSXClosingElement: JSXClosingElement,
    JSXClosingFragment: JSXClosingFragment,
    JSXElement: JSXElement,
    JSXEmptyExpression: JSXEmptyExpression,
    JSXExpressionContainer: JSXExpressionContainer,
    JSXFragment: JSXFragment,
    JSXIdentifier: JSXIdentifier,
    JSXMemberExpression: JSXMemberExpression,
    JSXNamespacedName: JSXNamespacedName,
    JSXOpeningElement: JSXOpeningElement,
    JSXOpeningFragment: JSXOpeningFragment,
    JSXSpreadAttribute: JSXSpreadAttribute,
    JSXSpreadChild: JSXSpreadChild,
    JSXText: JSXText,
    LabeledStatement: LabeledStatement,
    LogicalExpression: AssignmentExpression$1,
    MemberExpression: MemberExpression,
    MetaProperty: MetaProperty,
    MixedTypeAnnotation: MixedTypeAnnotation,
    ModuleExpression: ModuleExpression,
    NewExpression: NewExpression$1,
    NullLiteral: NullLiteral$1,
    NullLiteralTypeAnnotation: NullLiteralTypeAnnotation,
    NullableTypeAnnotation: NullableTypeAnnotation,
    NumberLiteralTypeAnnotation: NumericLiteral$1,
    NumberTypeAnnotation: NumberTypeAnnotation,
    NumericLiteral: NumericLiteral$1,
    ObjectExpression: ObjectExpression$1,
    ObjectMethod: ObjectMethod,
    ObjectPattern: ObjectExpression$1,
    ObjectProperty: ObjectProperty,
    ObjectTypeAnnotation: ObjectTypeAnnotation,
    ObjectTypeCallProperty: ObjectTypeCallProperty,
    ObjectTypeIndexer: ObjectTypeIndexer,
    ObjectTypeInternalSlot: ObjectTypeInternalSlot,
    ObjectTypeProperty: ObjectTypeProperty,
    ObjectTypeSpreadProperty: ObjectTypeSpreadProperty,
    OpaqueType: OpaqueType,
    OptionalCallExpression: OptionalCallExpression,
    OptionalIndexedAccessType: OptionalIndexedAccessType,
    OptionalMemberExpression: OptionalMemberExpression,
    ParenthesizedExpression: ParenthesizedExpression$1,
    PipelineBareFunction: PipelineBareFunction,
    PipelinePrimaryTopicReference: PipelinePrimaryTopicReference,
    PipelineTopicExpression: PipelineTopicExpression,
    Placeholder: Placeholder,
    PrivateName: PrivateName,
    Program: Program,
    QualifiedTypeIdentifier: QualifiedTypeIdentifier,
    RecordExpression: RecordExpression,
    RegExpLiteral: RegExpLiteral$1,
    RestElement: RestElement$1,
    ReturnStatement: ReturnStatement,
    SequenceExpression: SequenceExpression$1,
    SpreadElement: RestElement$1,
    StaticBlock: StaticBlock,
    StringLiteral: StringLiteral$1,
    StringLiteralTypeAnnotation: StringLiteral$1,
    StringTypeAnnotation: StringTypeAnnotation,
    Super: Super,
    SwitchCase: SwitchCase,
    SwitchStatement: SwitchStatement,
    SymbolTypeAnnotation: SymbolTypeAnnotation,
    TSAnyKeyword: TSAnyKeyword,
    TSArrayType: TSArrayType,
    TSAsExpression: TSTypeExpression,
    TSBigIntKeyword: TSBigIntKeyword,
    TSBooleanKeyword: TSBooleanKeyword,
    TSCallSignatureDeclaration: TSCallSignatureDeclaration,
    TSConditionalType: TSConditionalType,
    TSConstructSignatureDeclaration: TSConstructSignatureDeclaration,
    TSConstructorType: TSConstructorType,
    TSDeclareFunction: TSDeclareFunction,
    TSDeclareMethod: TSDeclareMethod,
    TSEnumDeclaration: TSEnumDeclaration,
    TSEnumMember: TSEnumMember,
    TSExportAssignment: TSExportAssignment,
    TSExpressionWithTypeArguments: TSExpressionWithTypeArguments,
    TSExternalModuleReference: TSExternalModuleReference,
    TSFunctionType: TSFunctionType,
    TSImportEqualsDeclaration: TSImportEqualsDeclaration,
    TSImportType: TSImportType,
    TSIndexSignature: TSIndexSignature,
    TSIndexedAccessType: TSIndexedAccessType,
    TSInferType: TSInferType,
    TSInstantiationExpression: TSInstantiationExpression,
    TSInterfaceBody: TSInterfaceBody,
    TSInterfaceDeclaration: TSInterfaceDeclaration,
    TSIntersectionType: TSIntersectionType,
    TSIntrinsicKeyword: TSIntrinsicKeyword,
    TSLiteralType: TSLiteralType,
    TSMappedType: TSMappedType,
    TSMethodSignature: TSMethodSignature,
    TSModuleBlock: TSModuleBlock,
    TSModuleDeclaration: TSModuleDeclaration,
    TSNamedTupleMember: TSNamedTupleMember,
    TSNamespaceExportDeclaration: TSNamespaceExportDeclaration,
    TSNeverKeyword: TSNeverKeyword,
    TSNonNullExpression: TSNonNullExpression$1,
    TSNullKeyword: TSNullKeyword,
    TSNumberKeyword: TSNumberKeyword,
    TSObjectKeyword: TSObjectKeyword,
    TSOptionalType: TSOptionalType,
    TSParameterProperty: TSParameterProperty,
    TSParenthesizedType: TSParenthesizedType,
    TSPropertySignature: TSPropertySignature,
    TSQualifiedName: TSQualifiedName,
    TSRestType: TSRestType,
    TSSatisfiesExpression: TSTypeExpression,
    TSStringKeyword: TSStringKeyword,
    TSSymbolKeyword: TSSymbolKeyword,
    TSThisType: TSThisType,
    TSTupleType: TSTupleType,
    TSTypeAliasDeclaration: TSTypeAliasDeclaration,
    TSTypeAnnotation: TSTypeAnnotation,
    TSTypeAssertion: TSTypeAssertion,
    TSTypeLiteral: TSTypeLiteral,
    TSTypeOperator: TSTypeOperator,
    TSTypeParameter: TSTypeParameter,
    TSTypeParameterDeclaration: TSTypeParameterInstantiation,
    TSTypeParameterInstantiation: TSTypeParameterInstantiation,
    TSTypePredicate: TSTypePredicate,
    TSTypeQuery: TSTypeQuery,
    TSTypeReference: TSTypeReference,
    TSUndefinedKeyword: TSUndefinedKeyword,
    TSUnionType: TSUnionType,
    TSUnknownKeyword: TSUnknownKeyword,
    TSVoidKeyword: TSVoidKeyword,
    TaggedTemplateExpression: TaggedTemplateExpression$1,
    TemplateElement: TemplateElement,
    TemplateLiteral: TemplateLiteral$1,
    ThisExpression: ThisExpression,
    ThisTypeAnnotation: ThisTypeAnnotation,
    ThrowStatement: ThrowStatement,
    TopicReference: TopicReference,
    TryStatement: TryStatement,
    TupleExpression: TupleExpression,
    TupleTypeAnnotation: TupleTypeAnnotation,
    TypeAlias: TypeAlias,
    TypeAnnotation: TypeAnnotation,
    TypeCastExpression: TypeCastExpression$1,
    TypeParameter: TypeParameter,
    TypeParameterDeclaration: TypeParameterInstantiation,
    TypeParameterInstantiation: TypeParameterInstantiation,
    TypeofTypeAnnotation: TypeofTypeAnnotation,
    UnaryExpression: UnaryExpression$1,
    UnionTypeAnnotation: UnionTypeAnnotation,
    UpdateExpression: UpdateExpression$1,
    V8IntrinsicIdentifier: V8IntrinsicIdentifier,
    VariableDeclaration: VariableDeclaration,
    VariableDeclarator: VariableDeclarator$1,
    Variance: Variance,
    VoidTypeAnnotation: VoidTypeAnnotation,
    WhileStatement: WhileStatement,
    WithStatement: WithStatement,
    YieldExpression: YieldExpression,
    _classMethodHead: _classMethodHead,
    _functionHead: _functionHead,
    _interfaceish: _interfaceish,
    _methodHead: _methodHead,
    _param: _param,
    _parameters: _parameters,
    _params: _params,
    _predicate: _predicate,
    _printAttributes: _printAttributes,
    _shouldPrintDecoratorsBeforeExport: _shouldPrintDecoratorsBeforeExport,
    _variance: _variance,
    tsPrintClassMemberModifiers: tsPrintClassMemberModifiers,
    tsPrintFunctionOrConstructorType: tsPrintFunctionOrConstructorType,
    tsPrintPropertyOrMethodName: tsPrintPropertyOrMethodName,
    tsPrintSignatureDeclarationBase: tsPrintSignatureDeclarationBase,
    tsPrintTypeLiteralOrInterfaceBody: tsPrintTypeLiteralOrInterfaceBody
  });

  var isFunction$2 = isFunction$5,
    isStatement$1 = isStatement$9,
    isClassBody = isClassBody$2,
    isTSInterfaceBody = isTSInterfaceBody$1,
    isTSEnumDeclaration = isTSEnumDeclaration$1;
  var SCIENTIFIC_NOTATION = /e/i;
  var ZERO_DECIMAL_INTEGER = /\.0+$/;
  var HAS_NEWLINE = /[\n\r\u2028\u2029]/;
  var HAS_NEWLINE_OR_BlOCK_COMMENT_END = /[\n\r\u2028\u2029]|\*\//;
  var needsParens = needsParens$1;
  var Printer = function () {
    function Printer(format, map) {
      this.inForStatementInit = false;
      this.tokenContext = 0;
      this._currentNode = null;
      this._indent = 0;
      this._indentRepeat = 0;
      this._insideAux = false;
      this._parenPushNewlineState = null;
      this._noLineTerminator = false;
      this._printAuxAfterOnNextUserNode = false;
      this._printedComments = new Set();
      this._endsWithInteger = false;
      this._endsWithWord = false;
      this._endsWithDiv = false;
      this._lastCommentLine = 0;
      this._endsWithInnerRaw = false;
      this._indentInnerComments = true;
      this.format = format;
      this._indentRepeat = format.indent.style.length;
      this._inputMap = map == null ? void 0 : map._inputMap;
      this._buf = new Buffer(map, format.indent.style[0]);
    }
    var _proto = Printer.prototype;
    _proto.enterForStatementInit = function enterForStatementInit(val) {
      var _this = this;
      var old = this.inForStatementInit;
      if (old === val) return function () {};
      this.inForStatementInit = val;
      return function () {
        _this.inForStatementInit = old;
      };
    };
    _proto.generate = function generate(ast) {
      this.print(ast);
      this._maybeAddAuxComment();
      return this._buf.get();
    };
    _proto.indent = function indent() {
      if (this.format.compact || this.format.concise) return;
      this._indent++;
    };
    _proto.dedent = function dedent() {
      if (this.format.compact || this.format.concise) return;
      this._indent--;
    };
    _proto.semicolon = function semicolon(force) {
      if (force === void 0) {
        force = false;
      }
      this._maybeAddAuxComment();
      if (force) {
        this._appendChar(59);
      } else {
        this._queue(59);
      }
      this._noLineTerminator = false;
    };
    _proto.rightBrace = function rightBrace(node) {
      if (this.format.minified) {
        this._buf.removeLastSemicolon();
      }
      this.sourceWithOffset("end", node.loc, -1);
      this.tokenChar(125);
    };
    _proto.rightParens = function rightParens(node) {
      this.sourceWithOffset("end", node.loc, -1);
      this.tokenChar(41);
    };
    _proto.space = function space(force) {
      if (force === void 0) {
        force = false;
      }
      if (this.format.compact) return;
      if (force) {
        this._space();
      } else if (this._buf.hasContent()) {
        var lastCp = this.getLastChar();
        if (lastCp !== 32 && lastCp !== 10) {
          this._space();
        }
      }
    };
    _proto.word = function word(str, noLineTerminatorAfter) {
      if (noLineTerminatorAfter === void 0) {
        noLineTerminatorAfter = false;
      }
      this.tokenContext = 0;
      this._maybePrintInnerComments();
      if (this._endsWithWord || this._endsWithDiv && str.charCodeAt(0) === 47) {
        this._space();
      }
      this._maybeAddAuxComment();
      this._append(str, false);
      this._endsWithWord = true;
      this._noLineTerminator = noLineTerminatorAfter;
    };
    _proto.number = function number(str, _number) {
      function isNonDecimalLiteral(str) {
        if (str.length > 2 && str.charCodeAt(0) === 48) {
          var secondChar = str.charCodeAt(1);
          return secondChar === 98 || secondChar === 111 || secondChar === 120;
        }
        return false;
      }
      this.word(str);
      this._endsWithInteger = Number.isInteger(_number) && !isNonDecimalLiteral(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
    };
    _proto.token = function token(str, maybeNewline) {
      if (maybeNewline === void 0) {
        maybeNewline = false;
      }
      this.tokenContext = 0;
      this._maybePrintInnerComments();
      var lastChar = this.getLastChar();
      var strFirst = str.charCodeAt(0);
      if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) {
        this._space();
      }
      this._maybeAddAuxComment();
      this._append(str, maybeNewline);
      this._noLineTerminator = false;
    };
    _proto.tokenChar = function tokenChar(_char) {
      this.tokenContext = 0;
      this._maybePrintInnerComments();
      var lastChar = this.getLastChar();
      if (_char === 43 && lastChar === 43 || _char === 45 && lastChar === 45 || _char === 46 && this._endsWithInteger) {
        this._space();
      }
      this._maybeAddAuxComment();
      this._appendChar(_char);
      this._noLineTerminator = false;
    };
    _proto.newline = function newline(i, force) {
      if (i === void 0) {
        i = 1;
      }
      if (i <= 0) return;
      if (!force) {
        if (this.format.retainLines || this.format.compact) return;
        if (this.format.concise) {
          this.space();
          return;
        }
      }
      if (i > 2) i = 2;
      i -= this._buf.getNewlineCount();
      for (var j = 0; j < i; j++) {
        this._newline();
      }
      return;
    };
    _proto.endsWith = function endsWith(_char2) {
      return this.getLastChar() === _char2;
    };
    _proto.getLastChar = function getLastChar() {
      return this._buf.getLastChar();
    };
    _proto.endsWithCharAndNewline = function endsWithCharAndNewline() {
      return this._buf.endsWithCharAndNewline();
    };
    _proto.removeTrailingNewline = function removeTrailingNewline() {
      this._buf.removeTrailingNewline();
    };
    _proto.exactSource = function exactSource(loc, cb) {
      if (!loc) {
        cb();
        return;
      }
      this._catchUp("start", loc);
      this._buf.exactSource(loc, cb);
    };
    _proto.source = function source(prop, loc) {
      if (!loc) return;
      this._catchUp(prop, loc);
      this._buf.source(prop, loc);
    };
    _proto.sourceWithOffset = function sourceWithOffset(prop, loc, columnOffset) {
      if (!loc) return;
      this._catchUp(prop, loc);
      this._buf.sourceWithOffset(prop, loc, columnOffset);
    };
    _proto.sourceIdentifierName = function sourceIdentifierName(identifierName, pos) {
      if (!this._buf._canMarkIdName) return;
      var sourcePosition = this._buf._sourcePosition;
      sourcePosition.identifierNamePos = pos;
      sourcePosition.identifierName = identifierName;
    };
    _proto._space = function _space() {
      this._queue(32);
    };
    _proto._newline = function _newline() {
      this._queue(10);
    };
    _proto._append = function _append(str, maybeNewline) {
      this._maybeAddParen(str);
      this._maybeIndent(str.charCodeAt(0));
      this._buf.append(str, maybeNewline);
      this._endsWithWord = false;
      this._endsWithInteger = false;
      this._endsWithDiv = false;
    };
    _proto._appendChar = function _appendChar(_char3) {
      this._maybeAddParenChar(_char3);
      this._maybeIndent(_char3);
      this._buf.appendChar(_char3);
      this._endsWithWord = false;
      this._endsWithInteger = false;
      this._endsWithDiv = false;
    };
    _proto._queue = function _queue(_char4) {
      this._maybeAddParenChar(_char4);
      this._maybeIndent(_char4);
      this._buf.queue(_char4);
      this._endsWithWord = false;
      this._endsWithInteger = false;
    };
    _proto._maybeIndent = function _maybeIndent(firstChar) {
      if (this._indent && firstChar !== 10 && this.endsWith(10)) {
        this._buf.queueIndentation(this._getIndent());
      }
    };
    _proto._shouldIndent = function _shouldIndent(firstChar) {
      if (this._indent && firstChar !== 10 && this.endsWith(10)) {
        return true;
      }
    };
    _proto._maybeAddParenChar = function _maybeAddParenChar(_char5) {
      var parenPushNewlineState = this._parenPushNewlineState;
      if (!parenPushNewlineState) return;
      if (_char5 === 32) {
        return;
      }
      if (_char5 !== 10) {
        this._parenPushNewlineState = null;
        return;
      }
      this.tokenChar(40);
      this.indent();
      parenPushNewlineState.printed = true;
    };
    _proto._maybeAddParen = function _maybeAddParen(str) {
      var parenPushNewlineState = this._parenPushNewlineState;
      if (!parenPushNewlineState) return;
      var len = str.length;
      var i;
      for (i = 0; i < len && str.charCodeAt(i) === 32; i++) continue;
      if (i === len) {
        return;
      }
      var cha = str.charCodeAt(i);
      if (cha !== 10) {
        if (cha !== 47 || i + 1 === len) {
          this._parenPushNewlineState = null;
          return;
        }
        var chaPost = str.charCodeAt(i + 1);
        if (chaPost === 42) {
          return;
        } else if (chaPost !== 47) {
          this._parenPushNewlineState = null;
          return;
        }
      }
      this.tokenChar(40);
      this.indent();
      parenPushNewlineState.printed = true;
    };
    _proto.catchUp = function catchUp(line) {
      if (!this.format.retainLines) return;
      var count = line - this._buf.getCurrentLine();
      for (var i = 0; i < count; i++) {
        this._newline();
      }
    };
    _proto._catchUp = function _catchUp(prop, loc) {
      var _loc$prop;
      if (!this.format.retainLines) return;
      var line = loc == null || (_loc$prop = loc[prop]) == null ? void 0 : _loc$prop.line;
      if (line != null) {
        var count = line - this._buf.getCurrentLine();
        for (var i = 0; i < count; i++) {
          this._newline();
        }
      }
    };
    _proto._getIndent = function _getIndent() {
      return this._indentRepeat * this._indent;
    };
    _proto.printTerminatorless = function printTerminatorless(node, isLabel) {
      if (isLabel) {
        this._noLineTerminator = true;
        this.print(node);
      } else {
        var terminatorState = {
          printed: false
        };
        this._parenPushNewlineState = terminatorState;
        this.print(node);
        if (terminatorState.printed) {
          this.dedent();
          this.newline();
          this.tokenChar(41);
        }
      }
    };
    _proto.print = function print(node, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) {
      var _node$extra, _node$leadingComments;
      if (!node) return;
      this._endsWithInnerRaw = false;
      var nodeType = node.type;
      var format = this.format;
      var oldConcise = format.concise;
      if (node._compact) {
        format.concise = true;
      }
      var printMethod = this[nodeType];
      if (printMethod === undefined) {
        throw new ReferenceError("unknown node of type " + JSON.stringify(nodeType) + " with constructor " + JSON.stringify(node.constructor.name));
      }
      var parent = this._currentNode;
      this._currentNode = node;
      var oldInAux = this._insideAux;
      this._insideAux = node.loc == null;
      this._maybeAddAuxComment(this._insideAux && !oldInAux);
      var parenthesized = (_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized;
      var shouldPrintParens = forceParens || parenthesized && format.retainFunctionParens && nodeType === "FunctionExpression" || needsParens(node, parent, this.tokenContext, this.inForStatementInit);
      if (!shouldPrintParens && parenthesized && (_node$leadingComments = node.leadingComments) != null && _node$leadingComments.length && node.leadingComments[0].type === "CommentBlock") {
        var parentType = parent == null ? void 0 : parent.type;
        switch (parentType) {
          case "ExpressionStatement":
          case "VariableDeclarator":
          case "AssignmentExpression":
          case "ReturnStatement":
            break;
          case "CallExpression":
          case "OptionalCallExpression":
          case "NewExpression":
            if (parent.callee !== node) break;
          default:
            shouldPrintParens = true;
        }
      }
      var exitInForStatementInit;
      if (shouldPrintParens) {
        this.tokenChar(40);
        this._endsWithInnerRaw = false;
        exitInForStatementInit = this.enterForStatementInit(false);
      }
      this._lastCommentLine = 0;
      this._printLeadingComments(node, parent);
      var loc = nodeType === "Program" || nodeType === "File" ? null : node.loc;
      this.exactSource(loc, printMethod.bind(this, node, parent));
      if (shouldPrintParens) {
        this._printTrailingComments(node, parent);
        this.tokenChar(41);
        this._noLineTerminator = noLineTerminatorAfter;
        exitInForStatementInit();
      } else if (noLineTerminatorAfter && !this._noLineTerminator) {
        this._noLineTerminator = true;
        this._printTrailingComments(node, parent);
      } else {
        this._printTrailingComments(node, parent, trailingCommentsLineOffset);
      }
      this._currentNode = parent;
      format.concise = oldConcise;
      this._insideAux = oldInAux;
      this._endsWithInnerRaw = false;
    };
    _proto._maybeAddAuxComment = function _maybeAddAuxComment(enteredPositionlessNode) {
      if (enteredPositionlessNode) this._printAuxBeforeComment();
      if (!this._insideAux) this._printAuxAfterComment();
    };
    _proto._printAuxBeforeComment = function _printAuxBeforeComment() {
      if (this._printAuxAfterOnNextUserNode) return;
      this._printAuxAfterOnNextUserNode = true;
      var comment = this.format.auxiliaryCommentBefore;
      if (comment) {
        this._printComment({
          type: "CommentBlock",
          value: comment
        }, 0);
      }
    };
    _proto._printAuxAfterComment = function _printAuxAfterComment() {
      if (!this._printAuxAfterOnNextUserNode) return;
      this._printAuxAfterOnNextUserNode = false;
      var comment = this.format.auxiliaryCommentAfter;
      if (comment) {
        this._printComment({
          type: "CommentBlock",
          value: comment
        }, 0);
      }
    };
    _proto.getPossibleRaw = function getPossibleRaw(node) {
      var extra = node.extra;
      if ((extra == null ? void 0 : extra.raw) != null && extra.rawValue != null && node.value === extra.rawValue) {
        return extra.raw;
      }
    };
    _proto.printJoin = function printJoin(nodes, opts) {
      if (opts === void 0) {
        opts = {};
      }
      if (!(nodes != null && nodes.length)) return;
      var _opts = opts,
        indent = _opts.indent;
      if (indent == null && this.format.retainLines) {
        var _nodes$0$loc;
        var startLine = (_nodes$0$loc = nodes[0].loc) == null ? void 0 : _nodes$0$loc.start.line;
        if (startLine != null && startLine !== this._buf.getCurrentLine()) {
          indent = true;
        }
      }
      if (indent) this.indent();
      var newlineOpts = {
        addNewlines: opts.addNewlines,
        nextNodeStartLine: 0
      };
      var separator = opts.separator ? opts.separator.bind(this) : null;
      var len = nodes.length;
      for (var i = 0; i < len; i++) {
        var _node = nodes[i];
        if (!_node) continue;
        if (opts.statement) this._printNewline(i === 0, newlineOpts);
        this.print(_node, undefined, opts.trailingCommentsLineOffset || 0);
        opts.iterator == null || opts.iterator(_node, i);
        if (i < len - 1) separator == null || separator();
        if (opts.statement) {
          var _node$trailingComment;
          if (!((_node$trailingComment = _node.trailingComments) != null && _node$trailingComment.length)) {
            this._lastCommentLine = 0;
          }
          if (i + 1 === len) {
            this.newline(1);
          } else {
            var _nextNode$loc;
            var nextNode = nodes[i + 1];
            newlineOpts.nextNodeStartLine = ((_nextNode$loc = nextNode.loc) == null ? void 0 : _nextNode$loc.start.line) || 0;
            this._printNewline(true, newlineOpts);
          }
        }
      }
      if (indent) this.dedent();
    };
    _proto.printAndIndentOnComments = function printAndIndentOnComments(node) {
      var indent = node.leadingComments && node.leadingComments.length > 0;
      if (indent) this.indent();
      this.print(node);
      if (indent) this.dedent();
    };
    _proto.printBlock = function printBlock(parent) {
      var node = parent.body;
      if (node.type !== "EmptyStatement") {
        this.space();
      }
      this.print(node);
    };
    _proto._printTrailingComments = function _printTrailingComments(node, parent, lineOffset) {
      var innerComments = node.innerComments,
        trailingComments = node.trailingComments;
      if (innerComments != null && innerComments.length) {
        this._printComments(2, innerComments, node, parent, lineOffset);
      }
      if (trailingComments != null && trailingComments.length) {
        this._printComments(2, trailingComments, node, parent, lineOffset);
      }
    };
    _proto._printLeadingComments = function _printLeadingComments(node, parent) {
      var comments = node.leadingComments;
      if (!(comments != null && comments.length)) return;
      this._printComments(0, comments, node, parent);
    };
    _proto._maybePrintInnerComments = function _maybePrintInnerComments() {
      if (this._endsWithInnerRaw) this.printInnerComments();
      this._endsWithInnerRaw = true;
      this._indentInnerComments = true;
    };
    _proto.printInnerComments = function printInnerComments() {
      var node = this._currentNode;
      var comments = node.innerComments;
      if (!(comments != null && comments.length)) return;
      var hasSpace = this.endsWith(32);
      var indent = this._indentInnerComments;
      var printedCommentsCount = this._printedComments.size;
      if (indent) this.indent();
      this._printComments(1, comments, node);
      if (hasSpace && printedCommentsCount !== this._printedComments.size) {
        this.space();
      }
      if (indent) this.dedent();
    };
    _proto.noIndentInnerCommentsHere = function noIndentInnerCommentsHere() {
      this._indentInnerComments = false;
    };
    _proto.printSequence = function printSequence(nodes, opts) {
      var _opts2, _opts2$indent;
      if (opts === void 0) {
        opts = {};
      }
      opts.statement = true;
      (_opts2$indent = (_opts2 = opts).indent) != null ? _opts2$indent : _opts2.indent = false;
      this.printJoin(nodes, opts);
    };
    _proto.printList = function printList(items, opts) {
      if (opts === void 0) {
        opts = {};
      }
      if (opts.separator == null) {
        opts.separator = commaSeparator;
      }
      this.printJoin(items, opts);
    };
    _proto._printNewline = function _printNewline(newLine, opts) {
      var format = this.format;
      if (format.retainLines || format.compact) return;
      if (format.concise) {
        this.space();
        return;
      }
      if (!newLine) {
        return;
      }
      var startLine = opts.nextNodeStartLine;
      var lastCommentLine = this._lastCommentLine;
      if (startLine > 0 && lastCommentLine > 0) {
        var offset = startLine - lastCommentLine;
        if (offset >= 0) {
          this.newline(offset || 1);
          return;
        }
      }
      if (this._buf.hasContent()) {
        this.newline(1);
      }
    };
    _proto._shouldPrintComment = function _shouldPrintComment(comment) {
      if (comment.ignore) return 0;
      if (this._printedComments.has(comment)) return 0;
      if (this._noLineTerminator && HAS_NEWLINE_OR_BlOCK_COMMENT_END.test(comment.value)) {
        return 2;
      }
      this._printedComments.add(comment);
      if (!this.format.shouldPrintComment(comment.value)) {
        return 0;
      }
      return 1;
    };
    _proto._printComment = function _printComment(comment, skipNewLines) {
      var noLineTerminator = this._noLineTerminator;
      var isBlockComment = comment.type === "CommentBlock";
      var printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator;
      if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) {
        this.newline(1);
      }
      var lastCharCode = this.getLastChar();
      if (lastCharCode !== 91 && lastCharCode !== 123 && lastCharCode !== 40) {
        this.space();
      }
      var val;
      if (isBlockComment) {
        var _parenPushNewlineState = this._parenPushNewlineState;
        if ((_parenPushNewlineState == null ? void 0 : _parenPushNewlineState.printed) === false && HAS_NEWLINE.test(comment.value)) {
          this.tokenChar(40);
          this.indent();
          _parenPushNewlineState.printed = true;
        }
        val = "/*" + comment.value + "*/";
        if (this.format.indent.adjustMultilineComment) {
          var _comment$loc;
          var offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column;
          if (offset) {
            var newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
            val = val.replace(newlineRegex, "\n");
          }
          if (this.format.concise) {
            val = val.replace(/\n(?!$)/g, "\n");
          } else {
            var indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn();
            if (this._shouldIndent(47) || this.format.retainLines) {
              indentSize += this._getIndent();
            }
            val = val.replace(/\n(?!$)/g, "\n" + " ".repeat(indentSize));
          }
        }
      } else if (!noLineTerminator) {
        val = "//" + comment.value;
      } else {
        val = "/*" + comment.value + "*/";
      }
      if (this._endsWithDiv) this._space();
      this.source("start", comment.loc);
      this._append(val, isBlockComment);
      if (!isBlockComment && !noLineTerminator) {
        this.newline(1, true);
      }
      if (printNewLines && skipNewLines !== 3) {
        this.newline(1);
      }
    };
    _proto._printComments = function _printComments(type, comments, node, parent, lineOffset) {
      if (lineOffset === void 0) {
        lineOffset = 0;
      }
      var nodeLoc = node.loc;
      var len = comments.length;
      var hasLoc = !!nodeLoc;
      var nodeStartLine = hasLoc ? nodeLoc.start.line : 0;
      var nodeEndLine = hasLoc ? nodeLoc.end.line : 0;
      var lastLine = 0;
      var leadingCommentNewline = 0;
      var maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this);
      for (var i = 0; i < len; i++) {
        var comment = comments[i];
        var shouldPrint = this._shouldPrintComment(comment);
        if (shouldPrint === 2) {
          hasLoc = false;
          break;
        }
        if (hasLoc && comment.loc && shouldPrint === 1) {
          var commentStartLine = comment.loc.start.line;
          var commentEndLine = comment.loc.end.line;
          if (type === 0) {
            var offset = 0;
            if (i === 0) {
              if (this._buf.hasContent() && (comment.type === "CommentLine" || commentStartLine !== commentEndLine)) {
                offset = leadingCommentNewline = 1;
              }
            } else {
              offset = commentStartLine - lastLine;
            }
            lastLine = commentEndLine;
            maybeNewline(offset);
            this._printComment(comment, 1);
            if (i + 1 === len) {
              maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline));
              lastLine = nodeStartLine;
            }
          } else if (type === 1) {
            var _offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine);
            lastLine = commentEndLine;
            maybeNewline(_offset);
            this._printComment(comment, 1);
            if (i + 1 === len) {
              maybeNewline(Math.min(1, nodeEndLine - lastLine));
              lastLine = nodeEndLine;
            }
          } else {
            var _offset2 = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);
            lastLine = commentEndLine;
            maybeNewline(_offset2);
            this._printComment(comment, 1);
          }
        } else {
          hasLoc = false;
          if (shouldPrint !== 1) {
            continue;
          }
          if (len === 1) {
            var singleLine = comment.loc ? comment.loc.start.line === comment.loc.end.line : !HAS_NEWLINE.test(comment.value);
            var shouldSkipNewline = singleLine && !isStatement$1(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumDeclaration(parent);
            if (type === 0) {
              this._printComment(comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction$2(parent, {
                body: node
              }) ? 1 : 0);
            } else if (shouldSkipNewline && type === 2) {
              this._printComment(comment, 1);
            } else {
              this._printComment(comment, 0);
            }
          } else if (type === 1 && !(node.type === "ObjectExpression" && node.properties.length > 1) && node.type !== "ClassBody" && node.type !== "TSInterfaceBody") {
            this._printComment(comment, i === 0 ? 2 : i === len - 1 ? 3 : 0);
          } else {
            this._printComment(comment, 0);
          }
        }
      }
      if (type === 2 && hasLoc && lastLine) {
        this._lastCommentLine = lastLine;
      }
    };
    return _createClass(Printer);
  }();
  Object.assign(Printer.prototype, generatorFunctions);
  {
    Printer.prototype.Noop = function Noop() {};
  }
  function commaSeparator() {
    this.tokenChar(44);
    this.space();
  }

  function normalizeOptions$8(code, opts) {
    var format = {
      auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
      auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
      shouldPrintComment: opts.shouldPrintComment,
      retainLines: opts.retainLines,
      retainFunctionParens: opts.retainFunctionParens,
      comments: opts.comments == null || opts.comments,
      compact: opts.compact,
      minified: opts.minified,
      concise: opts.concise,
      indent: {
        adjustMultilineComment: true,
        style: "  "
      },
      jsescOption: Object.assign({
        quotes: "double",
        wrap: true,
        minimal: false
      }, opts.jsescOption),
      topicToken: opts.topicToken,
      importAttributesKeyword: opts.importAttributesKeyword
    };
    {
      var _opts$recordAndTupleS;
      format.decoratorsBeforeExport = opts.decoratorsBeforeExport;
      format.jsescOption.json = opts.jsonCompatibleStrings;
      format.recordAndTupleSyntaxType = (_opts$recordAndTupleS = opts.recordAndTupleSyntaxType) != null ? _opts$recordAndTupleS : "hash";
    }
    if (format.minified) {
      format.compact = true;
      format.shouldPrintComment = format.shouldPrintComment || function () {
        return format.comments;
      };
    } else {
      format.shouldPrintComment = format.shouldPrintComment || function (value) {
        return format.comments || value.includes("@license") || value.includes("@preserve");
      };
    }
    if (format.compact === "auto") {
      format.compact = typeof code === "string" && code.length > 500000;
      if (format.compact) {
        console.error("[BABEL] Note: The code generator has deoptimised the styling of " + (opts.filename + " as it exceeds the max of " + "500KB" + "."));
      }
    }
    if (format.compact) {
      format.indent.adjustMultilineComment = false;
    }
    var auxiliaryCommentBefore = format.auxiliaryCommentBefore,
      auxiliaryCommentAfter = format.auxiliaryCommentAfter,
      shouldPrintComment = format.shouldPrintComment;
    if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {
      format.auxiliaryCommentBefore = undefined;
    }
    if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {
      format.auxiliaryCommentAfter = undefined;
    }
    return format;
  }
  {
    exports.CodeGenerator = function () {
      function CodeGenerator(ast, opts, code) {
        if (opts === void 0) {
          opts = {};
        }
        this._ast = void 0;
        this._format = void 0;
        this._map = void 0;
        this._ast = ast;
        this._format = normalizeOptions$8(code, opts);
        this._map = opts.sourceMaps ? new SourceMap$1(opts, code) : null;
      }
      var _proto = CodeGenerator.prototype;
      _proto.generate = function generate() {
        var printer = new Printer(this._format, this._map);
        return printer.generate(this._ast);
      };
      return _createClass(CodeGenerator);
    }();
  }
  function generate$1(ast, opts, code) {
    if (opts === void 0) {
      opts = {};
    }
    var format = normalizeOptions$8(code, opts);
    var map = opts.sourceMaps ? new SourceMap$1(opts, code) : null;
    var printer = new Printer(format, map);
    return printer.generate(ast);
  }

  var index$2 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    default: generate$1
  });

  var VISITOR_KEYS$4 = VISITOR_KEYS$5;
  function findParent(callback) {
    var path = this;
    while (path = path.parentPath) {
      if (callback(path)) return path;
    }
    return null;
  }
  function find$1(callback) {
    var path = this;
    do {
      if (callback(path)) return path;
    } while (path = path.parentPath);
    return null;
  }
  function getFunctionParent() {
    return this.findParent(function (p) {
      return p.isFunction();
    });
  }
  function getStatementParent() {
    var path = this;
    do {
      if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
        break;
      } else {
        path = path.parentPath;
      }
    } while (path);
    if (path && (path.isProgram() || path.isFile())) {
      throw new Error("File/Program node, we can't possibly find a statement parent to this");
    }
    return path;
  }
  function getEarliestCommonAncestorFrom(paths) {
    return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) {
      var earliest;
      var keys = VISITOR_KEYS$4[deepest.type];
      for (var _iterator = _createForOfIteratorHelperLoose(ancestries), _step; !(_step = _iterator()).done;) {
        var ancestry = _step.value;
        var path = ancestry[i + 1];
        if (!earliest) {
          earliest = path;
          continue;
        }
        if (path.listKey && earliest.listKey === path.listKey) {
          if (path.key < earliest.key) {
            earliest = path;
            continue;
          }
        }
        var earliestKeyIndex = keys.indexOf(earliest.parentKey);
        var currentKeyIndex = keys.indexOf(path.parentKey);
        if (earliestKeyIndex > currentKeyIndex) {
          earliest = path;
        }
      }
      return earliest;
    });
  }
  function getDeepestCommonAncestorFrom(paths, filter) {
    var _this = this;
    if (!paths.length) {
      return this;
    }
    if (paths.length === 1) {
      return paths[0];
    }
    var minDepth = Infinity;
    var lastCommonIndex, lastCommon;
    var ancestries = paths.map(function (path) {
      var ancestry = [];
      do {
        ancestry.unshift(path);
      } while ((path = path.parentPath) && path !== _this);
      if (ancestry.length < minDepth) {
        minDepth = ancestry.length;
      }
      return ancestry;
    });
    var first = ancestries[0];
    depthLoop: for (var i = 0; i < minDepth; i++) {
      var shouldMatch = first[i];
      for (var _iterator2 = _createForOfIteratorHelperLoose(ancestries), _step2; !(_step2 = _iterator2()).done;) {
        var ancestry = _step2.value;
        if (ancestry[i] !== shouldMatch) {
          break depthLoop;
        }
      }
      lastCommonIndex = i;
      lastCommon = shouldMatch;
    }
    if (lastCommon) {
      if (filter) {
        return filter(lastCommon, lastCommonIndex, ancestries);
      } else {
        return lastCommon;
      }
    } else {
      throw new Error("Couldn't find intersection");
    }
  }
  function getAncestry() {
    var path = this;
    var paths = [];
    do {
      paths.push(path);
    } while (path = path.parentPath);
    return paths;
  }
  function isAncestor(maybeDescendant) {
    return maybeDescendant.isDescendant(this);
  }
  function isDescendant(maybeAncestor) {
    return !!this.findParent(function (parent) {
      return parent === maybeAncestor;
    });
  }
  function inType() {
    var path = this;
    for (var _len = arguments.length, candidateTypes = new Array(_len), _key = 0; _key < _len; _key++) {
      candidateTypes[_key] = arguments[_key];
    }
    while (path) {
      for (var _iterator3 = _createForOfIteratorHelperLoose(candidateTypes), _step3; !(_step3 = _iterator3()).done;) {
        var type = _step3.value;
        if (path.node.type === type) return true;
      }
      path = path.parentPath;
    }
    return false;
  }

  var createFlowUnionType = createFlowUnionType$1,
    createTSUnionType = createTSUnionType$1,
    createUnionTypeAnnotation = createFlowUnionType$1,
    isFlowType = isFlowType$1,
    isTSType = isTSType$1;
  function createUnionType(types) {
    {
      if (types.every(function (v) {
        return isFlowType(v);
      })) {
        if (createFlowUnionType) {
          return createFlowUnionType(types);
        }
        return createUnionTypeAnnotation(types);
      } else if (types.every(function (v) {
        return isTSType(v);
      })) {
        if (createTSUnionType) {
          return createTSUnionType(types);
        }
      }
    }
  }

  var BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS$1,
    createTypeAnnotationBasedOnTypeof = createTypeAnnotationBasedOnTypeof$1,
    numberTypeAnnotation$1 = numberTypeAnnotation$2,
    voidTypeAnnotation$2 = voidTypeAnnotation$3;
  function infererReference (node) {
    if (!this.isReferenced()) return;
    var binding = this.scope.getBinding(node.name);
    if (binding) {
      if (binding.identifier.typeAnnotation) {
        return binding.identifier.typeAnnotation;
      } else {
        return getTypeAnnotationBindingConstantViolations(binding, this, node.name);
      }
    }
    if (node.name === "undefined") {
      return voidTypeAnnotation$2();
    } else if (node.name === "NaN" || node.name === "Infinity") {
      return numberTypeAnnotation$1();
    } else if (node.name === "arguments") ;
  }
  function getTypeAnnotationBindingConstantViolations(binding, path, name) {
    var types = [];
    var functionConstantViolations = [];
    var constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations);
    var testType = getConditionalAnnotation(binding, path, name);
    if (testType) {
      var testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement);
      constantViolations = constantViolations.filter(function (path) {
        return !testConstantViolations.includes(path);
      });
      types.push(testType.typeAnnotation);
    }
    if (constantViolations.length) {
      var _constantViolations;
      (_constantViolations = constantViolations).push.apply(_constantViolations, functionConstantViolations);
      for (var _iterator = _createForOfIteratorHelperLoose(constantViolations), _step; !(_step = _iterator()).done;) {
        var violation = _step.value;
        types.push(violation.getTypeAnnotation());
      }
    }
    if (!types.length) {
      return;
    }
    return createUnionType(types);
  }
  function getConstantViolationsBefore(binding, path, functions) {
    var violations = binding.constantViolations.slice();
    violations.unshift(binding.path);
    return violations.filter(function (violation) {
      violation = violation.resolve();
      var status = violation._guessExecutionStatusRelativeTo(path);
      if (functions && status === "unknown") functions.push(violation);
      return status === "before";
    });
  }
  function inferAnnotationFromBinaryExpression(name, path) {
    var operator = path.node.operator;
    var right = path.get("right").resolve();
    var left = path.get("left").resolve();
    var target;
    if (left.isIdentifier({
      name: name
    })) {
      target = right;
    } else if (right.isIdentifier({
      name: name
    })) {
      target = left;
    }
    if (target) {
      if (operator === "===") {
        return target.getTypeAnnotation();
      }
      if (BOOLEAN_NUMBER_BINARY_OPERATORS.includes(operator)) {
        return numberTypeAnnotation$1();
      }
      return;
    }
    if (operator !== "===" && operator !== "==") return;
    var typeofPath;
    var typePath;
    if (left.isUnaryExpression({
      operator: "typeof"
    })) {
      typeofPath = left;
      typePath = right;
    } else if (right.isUnaryExpression({
      operator: "typeof"
    })) {
      typeofPath = right;
      typePath = left;
    }
    if (!typeofPath) return;
    if (!typeofPath.get("argument").isIdentifier({
      name: name
    })) return;
    typePath = typePath.resolve();
    if (!typePath.isLiteral()) return;
    var typeValue = typePath.node.value;
    if (typeof typeValue !== "string") return;
    return createTypeAnnotationBasedOnTypeof(typeValue);
  }
  function getParentConditionalPath(binding, path, name) {
    var parentPath;
    while (parentPath = path.parentPath) {
      if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {
        if (path.key === "test") {
          return;
        }
        return parentPath;
      }
      if (parentPath.isFunction()) {
        if (parentPath.parentPath.scope.getBinding(name) !== binding) return;
      }
      path = parentPath;
    }
  }
  function getConditionalAnnotation(binding, path, name) {
    var ifStatement = getParentConditionalPath(binding, path, name);
    if (!ifStatement) return;
    var test = ifStatement.get("test");
    var paths = [test];
    var types = [];
    for (var i = 0; i < paths.length; i++) {
      var _path = paths[i];
      if (_path.isLogicalExpression()) {
        if (_path.node.operator === "&&") {
          paths.push(_path.get("left"));
          paths.push(_path.get("right"));
        }
      } else if (_path.isBinaryExpression()) {
        var type = inferAnnotationFromBinaryExpression(name, _path);
        if (type) types.push(type);
      }
    }
    if (types.length) {
      return {
        typeAnnotation: createUnionType(types),
        ifStatement: ifStatement
      };
    }
    return getConditionalAnnotation(binding, ifStatement, name);
  }

  var BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS$1,
    BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS$1,
    NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS$1,
    NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS$1,
    STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS$1,
    anyTypeAnnotation$1 = anyTypeAnnotation$2,
    arrayTypeAnnotation = arrayTypeAnnotation$1,
    booleanTypeAnnotation = booleanTypeAnnotation$1,
    buildMatchMemberExpression = buildMatchMemberExpression$1,
    genericTypeAnnotation = genericTypeAnnotation$1,
    identifier$a = identifier$e,
    nullLiteralTypeAnnotation = nullLiteralTypeAnnotation$1,
    numberTypeAnnotation = numberTypeAnnotation$2,
    stringTypeAnnotation$1 = stringTypeAnnotation$2,
    tupleTypeAnnotation = tupleTypeAnnotation$1,
    unionTypeAnnotation = unionTypeAnnotation$1,
    voidTypeAnnotation$1 = voidTypeAnnotation$3,
    isIdentifier$8 = isIdentifier$f;
  function VariableDeclarator() {
    if (!this.get("id").isIdentifier()) return;
    return this.get("init").getTypeAnnotation();
  }
  function TypeCastExpression(node) {
    return node.typeAnnotation;
  }
  TypeCastExpression.validParent = true;
  function TSAsExpression(node) {
    return node.typeAnnotation;
  }
  TSAsExpression.validParent = true;
  function TSNonNullExpression() {
    return this.get("expression").getTypeAnnotation();
  }
  function NewExpression(node) {
    if (node.callee.type === "Identifier") {
      return genericTypeAnnotation(node.callee);
    }
  }
  function TemplateLiteral() {
    return stringTypeAnnotation$1();
  }
  function UnaryExpression(node) {
    var operator = node.operator;
    if (operator === "void") {
      return voidTypeAnnotation$1();
    } else if (NUMBER_UNARY_OPERATORS.includes(operator)) {
      return numberTypeAnnotation();
    } else if (STRING_UNARY_OPERATORS.includes(operator)) {
      return stringTypeAnnotation$1();
    } else if (BOOLEAN_UNARY_OPERATORS.includes(operator)) {
      return booleanTypeAnnotation();
    }
  }
  function BinaryExpression(node) {
    var operator = node.operator;
    if (NUMBER_BINARY_OPERATORS.includes(operator)) {
      return numberTypeAnnotation();
    } else if (BOOLEAN_BINARY_OPERATORS.includes(operator)) {
      return booleanTypeAnnotation();
    } else if (operator === "+") {
      var right = this.get("right");
      var left = this.get("left");
      if (left.isBaseType("number") && right.isBaseType("number")) {
        return numberTypeAnnotation();
      } else if (left.isBaseType("string") || right.isBaseType("string")) {
        return stringTypeAnnotation$1();
      }
      return unionTypeAnnotation([stringTypeAnnotation$1(), numberTypeAnnotation()]);
    }
  }
  function LogicalExpression() {
    var argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()];
    return createUnionType(argumentTypes);
  }
  function ConditionalExpression() {
    var argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()];
    return createUnionType(argumentTypes);
  }
  function SequenceExpression() {
    return this.get("expressions").pop().getTypeAnnotation();
  }
  function ParenthesizedExpression() {
    return this.get("expression").getTypeAnnotation();
  }
  function AssignmentExpression() {
    return this.get("right").getTypeAnnotation();
  }
  function UpdateExpression(node) {
    var operator = node.operator;
    if (operator === "++" || operator === "--") {
      return numberTypeAnnotation();
    }
  }
  function StringLiteral() {
    return stringTypeAnnotation$1();
  }
  function NumericLiteral() {
    return numberTypeAnnotation();
  }
  function BooleanLiteral() {
    return booleanTypeAnnotation();
  }
  function NullLiteral() {
    return nullLiteralTypeAnnotation();
  }
  function RegExpLiteral() {
    return genericTypeAnnotation(identifier$a("RegExp"));
  }
  function ObjectExpression() {
    return genericTypeAnnotation(identifier$a("Object"));
  }
  function ArrayExpression() {
    return genericTypeAnnotation(identifier$a("Array"));
  }
  function RestElement() {
    return ArrayExpression();
  }
  RestElement.validParent = true;
  function Func() {
    return genericTypeAnnotation(identifier$a("Function"));
  }
  var isArrayFrom = buildMatchMemberExpression("Array.from");
  var isObjectKeys = buildMatchMemberExpression("Object.keys");
  var isObjectValues = buildMatchMemberExpression("Object.values");
  var isObjectEntries = buildMatchMemberExpression("Object.entries");
  function CallExpression() {
    var callee = this.node.callee;
    if (isObjectKeys(callee)) {
      return arrayTypeAnnotation(stringTypeAnnotation$1());
    } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier$8(callee, {
      name: "Array"
    })) {
      return arrayTypeAnnotation(anyTypeAnnotation$1());
    } else if (isObjectEntries(callee)) {
      return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation$1(), anyTypeAnnotation$1()]));
    }
    return resolveCall(this.get("callee"));
  }
  function TaggedTemplateExpression() {
    return resolveCall(this.get("tag"));
  }
  function resolveCall(callee) {
    callee = callee.resolve();
    if (callee.isFunction()) {
      var _callee = callee,
        node = _callee.node;
      if (node.async) {
        if (node.generator) {
          return genericTypeAnnotation(identifier$a("AsyncIterator"));
        } else {
          return genericTypeAnnotation(identifier$a("Promise"));
        }
      } else {
        if (node.generator) {
          return genericTypeAnnotation(identifier$a("Iterator"));
        } else if (callee.node.returnType) {
          return callee.node.returnType;
        } else ;
      }
    }
  }

  var inferers = /*#__PURE__*/Object.freeze({
    __proto__: null,
    ArrayExpression: ArrayExpression,
    ArrowFunctionExpression: Func,
    AssignmentExpression: AssignmentExpression,
    BinaryExpression: BinaryExpression,
    BooleanLiteral: BooleanLiteral,
    CallExpression: CallExpression,
    ClassDeclaration: Func,
    ClassExpression: Func,
    ConditionalExpression: ConditionalExpression,
    FunctionDeclaration: Func,
    FunctionExpression: Func,
    Identifier: infererReference,
    LogicalExpression: LogicalExpression,
    NewExpression: NewExpression,
    NullLiteral: NullLiteral,
    NumericLiteral: NumericLiteral,
    ObjectExpression: ObjectExpression,
    ParenthesizedExpression: ParenthesizedExpression,
    RegExpLiteral: RegExpLiteral,
    RestElement: RestElement,
    SequenceExpression: SequenceExpression,
    StringLiteral: StringLiteral,
    TSAsExpression: TSAsExpression,
    TSNonNullExpression: TSNonNullExpression,
    TaggedTemplateExpression: TaggedTemplateExpression,
    TemplateLiteral: TemplateLiteral,
    TypeCastExpression: TypeCastExpression,
    UnaryExpression: UnaryExpression,
    UpdateExpression: UpdateExpression,
    VariableDeclarator: VariableDeclarator
  });

  var anyTypeAnnotation = anyTypeAnnotation$2,
    isAnyTypeAnnotation = isAnyTypeAnnotation$1,
    isArrayTypeAnnotation = isArrayTypeAnnotation$2,
    isBooleanTypeAnnotation = isBooleanTypeAnnotation$1,
    isEmptyTypeAnnotation = isEmptyTypeAnnotation$1,
    isFlowBaseAnnotation = isFlowBaseAnnotation$1,
    isGenericTypeAnnotation = isGenericTypeAnnotation$1,
    isIdentifier$7 = isIdentifier$f,
    isMixedTypeAnnotation = isMixedTypeAnnotation$1,
    isNumberTypeAnnotation = isNumberTypeAnnotation$1,
    isStringTypeAnnotation = isStringTypeAnnotation$1,
    isTSArrayType = isTSArrayType$1,
    isTSTypeAnnotation = isTSTypeAnnotation$1,
    isTSTypeReference = isTSTypeReference$1,
    isTupleTypeAnnotation = isTupleTypeAnnotation$1,
    isTypeAnnotation = isTypeAnnotation$1,
    isUnionTypeAnnotation = isUnionTypeAnnotation$1,
    isVoidTypeAnnotation = isVoidTypeAnnotation$1,
    stringTypeAnnotation = stringTypeAnnotation$2,
    voidTypeAnnotation = voidTypeAnnotation$3;
  function getTypeAnnotation() {
    var type = this.getData("typeAnnotation");
    if (type != null) {
      return type;
    }
    type = _getTypeAnnotation.call(this) || anyTypeAnnotation();
    if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {
      type = type.typeAnnotation;
    }
    this.setData("typeAnnotation", type);
    return type;
  }
  var typeAnnotationInferringNodes = new WeakSet();
  function _getTypeAnnotation() {
    var node = this.node;
    if (!node) {
      if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
        var declar = this.parentPath.parentPath;
        var declarParent = declar.parentPath;
        if (declar.key === "left" && declarParent.isForInStatement()) {
          return stringTypeAnnotation();
        }
        if (declar.key === "left" && declarParent.isForOfStatement()) {
          return anyTypeAnnotation();
        }
        return voidTypeAnnotation();
      } else {
        return;
      }
    }
    if (node.typeAnnotation) {
      return node.typeAnnotation;
    }
    if (typeAnnotationInferringNodes.has(node)) {
      return;
    }
    typeAnnotationInferringNodes.add(node);
    try {
      var _inferer;
      var inferer = inferers[node.type];
      if (inferer) {
        return inferer.call(this, node);
      }
      inferer = inferers[this.parentPath.type];
      if ((_inferer = inferer) != null && _inferer.validParent) {
        return this.parentPath.getTypeAnnotation();
      }
    } finally {
      typeAnnotationInferringNodes["delete"](node);
    }
  }
  function isBaseType(baseName, soft) {
    return _isBaseType(baseName, this.getTypeAnnotation(), soft);
  }
  function _isBaseType(baseName, type, soft) {
    if (baseName === "string") {
      return isStringTypeAnnotation(type);
    } else if (baseName === "number") {
      return isNumberTypeAnnotation(type);
    } else if (baseName === "boolean") {
      return isBooleanTypeAnnotation(type);
    } else if (baseName === "any") {
      return isAnyTypeAnnotation(type);
    } else if (baseName === "mixed") {
      return isMixedTypeAnnotation(type);
    } else if (baseName === "empty") {
      return isEmptyTypeAnnotation(type);
    } else if (baseName === "void") {
      return isVoidTypeAnnotation(type);
    } else {
      if (soft) {
        return false;
      } else {
        throw new Error("Unknown base type " + baseName);
      }
    }
  }
  function couldBeBaseType(name) {
    var type = this.getTypeAnnotation();
    if (isAnyTypeAnnotation(type)) return true;
    if (isUnionTypeAnnotation(type)) {
      for (var _iterator = _createForOfIteratorHelperLoose(type.types), _step; !(_step = _iterator()).done;) {
        var type2 = _step.value;
        if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
          return true;
        }
      }
      return false;
    } else {
      return _isBaseType(name, type, true);
    }
  }
  function baseTypeStrictlyMatches(rightArg) {
    var left = this.getTypeAnnotation();
    var right = rightArg.getTypeAnnotation();
    if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {
      return right.type === left.type;
    }
    return false;
  }
  function isGenericType(genericName) {
    var type = this.getTypeAnnotation();
    if (genericName === "Array") {
      if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) {
        return true;
      }
    }
    return isGenericTypeAnnotation(type) && isIdentifier$7(type.id, {
      name: genericName
    }) || isTSTypeReference(type) && isIdentifier$7(type.typeName, {
      name: genericName
    });
  }

  var react$1 = react$3;
  var cloneNode$c = cloneNode$g,
    jsxExpressionContainer = jsxExpressionContainer$1,
    variableDeclaration$4 = variableDeclaration$6,
    variableDeclarator$4 = variableDeclarator$6;
  var referenceVisitor$1 = {
    ReferencedIdentifier: function ReferencedIdentifier(path, state) {
      if (path.isJSXIdentifier() && react$1.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) {
        return;
      }
      if (path.node.name === "this") {
        var scope = path.scope;
        do {
          if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {
            break;
          }
        } while (scope = scope.parent);
        if (scope) state.breakOnScopePaths.push(scope.path);
      }
      var binding = path.scope.getBinding(path.node.name);
      if (!binding) return;
      for (var _iterator = _createForOfIteratorHelperLoose(binding.constantViolations), _step; !(_step = _iterator()).done;) {
        var violation = _step.value;
        if (violation.scope !== binding.path.scope) {
          state.mutableBinding = true;
          path.stop();
          return;
        }
      }
      if (binding !== state.scope.getBinding(path.node.name)) return;
      state.bindings[path.node.name] = binding;
    }
  };
  var PathHoister = function () {
    function PathHoister(path, scope) {
      this.breakOnScopePaths = void 0;
      this.bindings = void 0;
      this.mutableBinding = void 0;
      this.scopes = void 0;
      this.scope = void 0;
      this.path = void 0;
      this.attachAfter = void 0;
      this.breakOnScopePaths = [];
      this.bindings = {};
      this.mutableBinding = false;
      this.scopes = [];
      this.scope = scope;
      this.path = path;
      this.attachAfter = false;
    }
    var _proto = PathHoister.prototype;
    _proto.isCompatibleScope = function isCompatibleScope(scope) {
      for (var _i = 0, _Object$keys = Object.keys(this.bindings); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        var binding = this.bindings[key];
        if (!scope.bindingIdentifierEquals(key, binding.identifier)) {
          return false;
        }
      }
      return true;
    };
    _proto.getCompatibleScopes = function getCompatibleScopes() {
      var scope = this.path.scope;
      do {
        if (this.isCompatibleScope(scope)) {
          this.scopes.push(scope);
        } else {
          break;
        }
        if (this.breakOnScopePaths.includes(scope.path)) {
          break;
        }
      } while (scope = scope.parent);
    };
    _proto.getAttachmentPath = function getAttachmentPath() {
      var path = this._getAttachmentPath();
      if (!path) return;
      var targetScope = path.scope;
      if (targetScope.path === path) {
        targetScope = path.scope.parent;
      }
      if (targetScope.path.isProgram() || targetScope.path.isFunction()) {
        for (var _i2 = 0, _Object$keys2 = Object.keys(this.bindings); _i2 < _Object$keys2.length; _i2++) {
          var name = _Object$keys2[_i2];
          if (!targetScope.hasOwnBinding(name)) continue;
          var binding = this.bindings[name];
          if (binding.kind === "param" || binding.path.parentKey === "params") {
            continue;
          }
          var bindingParentPath = this.getAttachmentParentForPath(binding.path);
          if (bindingParentPath.key >= path.key) {
            this.attachAfter = true;
            path = binding.path;
            for (var _iterator2 = _createForOfIteratorHelperLoose(binding.constantViolations), _step2; !(_step2 = _iterator2()).done;) {
              var violationPath = _step2.value;
              if (this.getAttachmentParentForPath(violationPath).key > path.key) {
                path = violationPath;
              }
            }
          }
        }
      }
      return path;
    };
    _proto._getAttachmentPath = function _getAttachmentPath() {
      var scopes = this.scopes;
      var scope = scopes.pop();
      if (!scope) return;
      if (scope.path.isFunction()) {
        if (this.hasOwnParamBindings(scope)) {
          if (this.scope === scope) return;
          var bodies = scope.path.get("body").get("body");
          for (var i = 0; i < bodies.length; i++) {
            if (bodies[i].node._blockHoist) continue;
            return bodies[i];
          }
        } else {
          return this.getNextScopeAttachmentParent();
        }
      } else if (scope.path.isProgram()) {
        return this.getNextScopeAttachmentParent();
      }
    };
    _proto.getNextScopeAttachmentParent = function getNextScopeAttachmentParent() {
      var scope = this.scopes.pop();
      if (scope) return this.getAttachmentParentForPath(scope.path);
    };
    _proto.getAttachmentParentForPath = function getAttachmentParentForPath(path) {
      do {
        if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
          return path;
        }
      } while (path = path.parentPath);
    };
    _proto.hasOwnParamBindings = function hasOwnParamBindings(scope) {
      for (var _i3 = 0, _Object$keys3 = Object.keys(this.bindings); _i3 < _Object$keys3.length; _i3++) {
        var name = _Object$keys3[_i3];
        if (!scope.hasOwnBinding(name)) continue;
        var binding = this.bindings[name];
        if (binding.kind === "param" && binding.constant) return true;
      }
      return false;
    };
    _proto.run = function run() {
      this.path.traverse(referenceVisitor$1, this);
      if (this.mutableBinding) return;
      this.getCompatibleScopes();
      var attachTo = this.getAttachmentPath();
      if (!attachTo) return;
      if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return;
      var uid = attachTo.scope.generateUidIdentifier("ref");
      var declarator = variableDeclarator$4(uid, this.path.node);
      var insertFn = this.attachAfter ? "insertAfter" : "insertBefore";
      var _attachTo$insertFn = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : variableDeclaration$4("var", [declarator])]),
        _attachTo$insertFn2 = _slicedToArray(_attachTo$insertFn, 1),
        attached = _attachTo$insertFn2[0];
      var parent = this.path.parentPath;
      if (parent.isJSXElement() && this.path.container === parent.node.children) {
        uid = jsxExpressionContainer(uid);
      }
      this.path.replaceWith(cloneNode$c(uid));
      return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init");
    };
    return _createClass(PathHoister);
  }();

  var hooks = [function (self, parent) {
    var removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement();
    if (removeParent) {
      parent.remove();
      return true;
    }
  }, function (self, parent) {
    if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {
      parent.replaceWith(parent.node.expressions[0]);
      return true;
    }
  }, function (self, parent) {
    if (parent.isBinary()) {
      if (self.key === "left") {
        parent.replaceWith(parent.node.right);
      } else {
        parent.replaceWith(parent.node.left);
      }
      return true;
    }
  }, function (self, parent) {
    if (parent.isIfStatement() && self.key === "consequent" || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) {
      self.replaceWith({
        type: "BlockStatement",
        body: []
      });
      return true;
    }
  }];

  var getBindingIdentifiers$2 = getBindingIdentifiers$4;
  function remove() {
    var _this$opts;
    _assertUnremoved.call(this);
    resync.call(this);
    if (_callRemovalHooks.call(this)) {
      _markRemoved.call(this);
      return;
    }
    if (!((_this$opts = this.opts) != null && _this$opts.noScope)) {
      _removeFromScope.call(this);
    }
    this.shareCommentsWithSiblings();
    _remove.call(this);
    _markRemoved.call(this);
  }
  function _removeFromScope() {
    var _this = this;
    var bindings = getBindingIdentifiers$2(this.node, false, false, true);
    Object.keys(bindings).forEach(function (name) {
      return _this.scope.removeBinding(name);
    });
  }
  function _callRemovalHooks() {
    if (this.parentPath) {
      for (var _iterator = _createForOfIteratorHelperLoose(hooks), _step; !(_step = _iterator()).done;) {
        var fn = _step.value;
        if (fn(this, this.parentPath)) return true;
      }
    }
  }
  function _remove() {
    if (Array.isArray(this.container)) {
      this.container.splice(this.key, 1);
      updateSiblingKeys.call(this, this.key, -1);
    } else {
      _replaceWith.call(this, null);
    }
  }
  function _markRemoved() {
    this._traverseFlags |= SHOULD_SKIP | REMOVED;
    if (this.parent) {
      getCachedPaths(this.hub, this.parent)["delete"](this.node);
    }
    this.node = null;
  }
  function _assertUnremoved() {
    if (this.removed) {
      throw this.buildCodeFrameError("NodePath has been removed so is read-only.");
    }
  }

  var arrowFunctionExpression$3 = arrowFunctionExpression$4,
    assertExpression = assertExpression$1,
    assignmentExpression$9 = assignmentExpression$b,
    blockStatement$4 = blockStatement$6,
    callExpression$a = callExpression$c,
    cloneNode$b = cloneNode$g,
    expressionStatement$4 = expressionStatement$7,
    isAssignmentExpression = isAssignmentExpression$2,
    isCallExpression$1 = isCallExpression$8,
    isExportNamedDeclaration = isExportNamedDeclaration$3,
    isExpression$2 = isExpression$4,
    isIdentifier$6 = isIdentifier$f,
    isSequenceExpression = isSequenceExpression$1,
    isSuper$1 = isSuper$3,
    thisExpression$3 = thisExpression$4;
  function insertBefore(nodes_) {
    _assertUnremoved.call(this);
    var nodes = _verifyNodeList.call(this, nodes_);
    var parentPath = this.parentPath,
      parent = this.parent;
    if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
      return parentPath.insertBefore(nodes);
    } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
      if (this.node) nodes.push(this.node);
      return this.replaceExpressionWithStatements(nodes);
    } else if (Array.isArray(this.container)) {
      return _containerInsertBefore.call(this, nodes);
    } else if (this.isStatementOrBlock()) {
      var node = this.node;
      var shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);
      this.replaceWith(blockStatement$4(shouldInsertCurrentNode ? [node] : []));
      return this.unshiftContainer("body", nodes);
    } else {
      throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
    }
  }
  function _containerInsert(from, nodes) {
    var _this$container;
    updateSiblingKeys.call(this, from, nodes.length);
    var paths = [];
    (_this$container = this.container).splice.apply(_this$container, [from, 0].concat(_toConsumableArray(nodes)));
    for (var i = 0; i < nodes.length; i++) {
      var _this$context;
      var to = from + i;
      var path = this.getSibling(to);
      paths.push(path);
      if ((_this$context = this.context) != null && _this$context.queue) {
        pushContext.call(path, this.context);
      }
    }
    var contexts = _getQueueContexts.call(this);
    for (var _i = 0, _paths = paths; _i < _paths.length; _i++) {
      var _path = _paths[_i];
      setScope.call(_path);
      _path.debug("Inserted.");
      for (var _iterator = _createForOfIteratorHelperLoose(contexts), _step; !(_step = _iterator()).done;) {
        var context = _step.value;
        context.maybeQueue(_path, true);
      }
    }
    return paths;
  }
  function _containerInsertBefore(nodes) {
    return _containerInsert.call(this, this.key, nodes);
  }
  function _containerInsertAfter(nodes) {
    return _containerInsert.call(this, this.key + 1, nodes);
  }
  var last$1 = function last(arr) {
    return arr[arr.length - 1];
  };
  function isHiddenInSequenceExpression(path) {
    return isSequenceExpression(path.parent) && (last$1(path.parent.expressions) !== path.node || isHiddenInSequenceExpression(path.parentPath));
  }
  function isAlmostConstantAssignment(node, scope) {
    if (!isAssignmentExpression(node) || !isIdentifier$6(node.left)) {
      return false;
    }
    var blockScope = scope.getBlockParent();
    return blockScope.hasOwnBinding(node.left.name) && blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1;
  }
  function insertAfter(nodes_) {
    _assertUnremoved.call(this);
    if (this.isSequenceExpression()) {
      return last$1(this.get("expressions")).insertAfter(nodes_);
    }
    var nodes = _verifyNodeList.call(this, nodes_);
    var parentPath = this.parentPath,
      parent = this.parent;
    if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
      return parentPath.insertAfter(nodes.map(function (node) {
        return isExpression$2(node) ? expressionStatement$4(node) : node;
      }));
    } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
      var self = this;
      if (self.node) {
        var node = self.node;
        var scope = this.scope;
        if (scope.path.isPattern()) {
          assertExpression(node);
          self.replaceWith(callExpression$a(arrowFunctionExpression$3([], node), []));
          self.get("callee.body").insertAfter(nodes);
          return [self];
        }
        if (isHiddenInSequenceExpression(self)) {
          nodes.unshift(node);
        } else if (isCallExpression$1(node) && isSuper$1(node.callee)) {
          nodes.unshift(node);
          nodes.push(thisExpression$3());
        } else if (isAlmostConstantAssignment(node, scope)) {
          nodes.unshift(node);
          nodes.push(cloneNode$b(node.left));
        } else if (scope.isPure(node, true)) {
          nodes.push(node);
        } else {
          if (parentPath.isMethod({
            computed: true,
            key: node
          })) {
            scope = scope.parent;
          }
          var temp = scope.generateDeclaredUidIdentifier();
          nodes.unshift(expressionStatement$4(assignmentExpression$9("=", cloneNode$b(temp), node)));
          nodes.push(expressionStatement$4(cloneNode$b(temp)));
        }
      }
      return this.replaceExpressionWithStatements(nodes);
    } else if (Array.isArray(this.container)) {
      return _containerInsertAfter.call(this, nodes);
    } else if (this.isStatementOrBlock()) {
      var _node = this.node;
      var shouldInsertCurrentNode = _node && (!this.isExpressionStatement() || _node.expression != null);
      this.replaceWith(blockStatement$4(shouldInsertCurrentNode ? [_node] : []));
      return this.pushContainer("body", nodes);
    } else {
      throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
    }
  }
  function updateSiblingKeys(fromIndex, incrementBy) {
    if (!this.parent) return;
    var paths = getCachedPaths(this.hub, this.parent) || [];
    for (var _iterator2 = _createForOfIteratorHelperLoose(paths), _step2; !(_step2 = _iterator2()).done;) {
      var _step2$value = _slicedToArray(_step2.value, 2),
        path = _step2$value[1];
      if (typeof path.key === "number" && path.key >= fromIndex) {
        path.key += incrementBy;
      }
    }
  }
  function _verifyNodeList(nodes) {
    if (!nodes) {
      return [];
    }
    if (!Array.isArray(nodes)) {
      nodes = [nodes];
    }
    for (var i = 0; i < nodes.length; i++) {
      var node = nodes[i];
      var msg = void 0;
      if (!node) {
        msg = "has falsy node";
      } else if (typeof node !== "object") {
        msg = "contains a non-object node";
      } else if (!node.type) {
        msg = "without a type";
      } else if (node instanceof NodePath_Final) {
        msg = "has a NodePath when it expected a raw object";
      }
      if (msg) {
        var type = Array.isArray(node) ? "array" : typeof node;
        throw new Error("Node list " + msg + " with the index of " + i + " and type of " + type);
      }
    }
    return nodes;
  }
  function unshiftContainer(listKey, nodes) {
    _assertUnremoved.call(this);
    nodes = _verifyNodeList.call(this, nodes);
    var path = NodePath_Final.get({
      parentPath: this,
      parent: this.node,
      container: this.node[listKey],
      listKey: listKey,
      key: 0
    }).setContext(this.context);
    return _containerInsertBefore.call(path, nodes);
  }
  function pushContainer(listKey, nodes) {
    _assertUnremoved.call(this);
    var verifiedNodes = _verifyNodeList.call(this, nodes);
    var container = this.node[listKey];
    var path = NodePath_Final.get({
      parentPath: this,
      parent: this.node,
      container: container,
      listKey: listKey,
      key: container.length
    }).setContext(this.context);
    return path.replaceWithMultiple(verifiedNodes);
  }
  {
    exports.hoist = function hoist(scope) {
      if (scope === void 0) {
        scope = this.scope;
      }
      var hoister = new PathHoister(this, scope);
      return hoister.run();
    };
  }

  var NodePath_modification = /*#__PURE__*/Object.freeze({
    __proto__: null,
    _containerInsert: _containerInsert,
    _containerInsertAfter: _containerInsertAfter,
    _containerInsertBefore: _containerInsertBefore,
    _verifyNodeList: _verifyNodeList,
    insertAfter: insertAfter,
    insertBefore: insertBefore,
    pushContainer: pushContainer,
    unshiftContainer: unshiftContainer,
    updateSiblingKeys: updateSiblingKeys
  });

  var FUNCTION_TYPES = FUNCTION_TYPES$1,
    arrowFunctionExpression$2 = arrowFunctionExpression$4,
    assignmentExpression$8 = assignmentExpression$b,
    awaitExpression = awaitExpression$1,
    blockStatement$3 = blockStatement$6,
    buildUndefinedNode$1 = buildUndefinedNode$2,
    callExpression$9 = callExpression$c,
    cloneNode$a = cloneNode$g,
    conditionalExpression$4 = conditionalExpression$5,
    expressionStatement$3 = expressionStatement$7,
    getBindingIdentifiers$1 = getBindingIdentifiers$4,
    identifier$9 = identifier$e,
    inheritLeadingComments = inheritLeadingComments$1,
    inheritTrailingComments = inheritTrailingComments$1,
    inheritsComments = inheritsComments$1,
    isBlockStatement$1 = isBlockStatement$3,
    isEmptyStatement = isEmptyStatement$1,
    isExpression$1 = isExpression$4,
    isExpressionStatement = isExpressionStatement$2,
    isIfStatement = isIfStatement$2,
    isProgram = isProgram$1,
    isStatement = isStatement$9,
    isVariableDeclaration = isVariableDeclaration$3,
    removeComments = removeComments$1,
    returnStatement$2 = returnStatement$3,
    sequenceExpression$6 = sequenceExpression$8,
    validate$2 = validate$5,
    yieldExpression$1 = yieldExpression$2;
  function replaceWithMultiple(nodes) {
    var _getCachedPaths;
    resync.call(this);
    nodes = _verifyNodeList.call(this, nodes);
    inheritLeadingComments(nodes[0], this.node);
    inheritTrailingComments(nodes[nodes.length - 1], this.node);
    (_getCachedPaths = getCachedPaths(this.hub, this.parent)) == null || _getCachedPaths["delete"](this.node);
    this.node = this.container[this.key] = null;
    var paths = this.insertAfter(nodes);
    if (this.node) {
      this.requeue();
    } else {
      this.remove();
    }
    return paths;
  }
  function replaceWithSourceString(replacement) {
    resync.call(this);
    var ast;
    try {
      replacement = "(" + replacement + ")";
      ast = parse$4(replacement);
    } catch (err) {
      var loc = err.loc;
      if (loc) {
        err.message += " - make sure this is an expression.\n" + codeFrameColumns(replacement, {
          start: {
            line: loc.line,
            column: loc.column + 1
          }
        });
        err.code = "BABEL_REPLACE_SOURCE_ERROR";
      }
      throw err;
    }
    var expressionAST = ast.program.body[0].expression;
    traverse.removeProperties(expressionAST);
    return this.replaceWith(expressionAST);
  }
  function replaceWith(replacementPath) {
    resync.call(this);
    if (this.removed) {
      throw new Error("You can't replace this node, we've already removed it");
    }
    var replacement = replacementPath instanceof NodePath_Final ? replacementPath.node : replacementPath;
    if (!replacement) {
      throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");
    }
    if (this.node === replacement) {
      return [this];
    }
    if (this.isProgram() && !isProgram(replacement)) {
      throw new Error("You can only replace a Program root node with another Program node");
    }
    if (Array.isArray(replacement)) {
      throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");
    }
    if (typeof replacement === "string") {
      throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");
    }
    var nodePath = "";
    if (this.isNodeType("Statement") && isExpression$1(replacement)) {
      if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) {
        replacement = expressionStatement$3(replacement);
        nodePath = "expression";
      }
    }
    if (this.isNodeType("Expression") && isStatement(replacement)) {
      if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
        return this.replaceExpressionWithStatements([replacement]);
      }
    }
    var oldNode = this.node;
    if (oldNode) {
      inheritsComments(replacement, oldNode);
      removeComments(oldNode);
    }
    _replaceWith.call(this, replacement);
    this.type = replacement.type;
    setScope.call(this);
    this.requeue();
    return [nodePath ? this.get(nodePath) : this];
  }
  function _replaceWith(node) {
    var _getCachedPaths2;
    if (!this.container) {
      throw new ReferenceError("Container is falsy");
    }
    if (this.inList) {
      validate$2(this.parent, this.key, [node]);
    } else {
      validate$2(this.parent, this.key, node);
    }
    this.debug("Replace with " + (node == null ? void 0 : node.type));
    (_getCachedPaths2 = getCachedPaths(this.hub, this.parent)) == null || _getCachedPaths2.set(node, this)["delete"](this.node);
    this.node = this.container[this.key] = node;
  }
  function replaceExpressionWithStatements(nodes) {
    var _this = this;
    resync.call(this);
    var declars = [];
    var nodesAsSingleExpression = gatherSequenceExpressions(nodes, declars);
    if (nodesAsSingleExpression) {
      for (var _iterator = _createForOfIteratorHelperLoose(declars), _step; !(_step = _iterator()).done;) {
        var id = _step.value;
        this.scope.push({
          id: id
        });
      }
      return this.replaceWith(nodesAsSingleExpression)[0].get("expressions");
    }
    var functionParent = this.getFunctionParent();
    var isParentAsync = functionParent == null ? void 0 : functionParent.node.async;
    var isParentGenerator = functionParent == null ? void 0 : functionParent.node.generator;
    var container = arrowFunctionExpression$2([], blockStatement$3(nodes));
    this.replaceWith(callExpression$9(container, []));
    var callee = this.get("callee");
    callee.get("body").scope.hoistVariables(function (id) {
      return _this.scope.push({
        id: id
      });
    });
    var completionRecords = callee.getCompletionRecords();
    for (var _iterator2 = _createForOfIteratorHelperLoose(completionRecords), _step2; !(_step2 = _iterator2()).done;) {
      var path = _step2.value;
      if (!path.isExpressionStatement()) continue;
      var loop = path.findParent(function (path) {
        return path.isLoop();
      });
      if (loop) {
        var uid = loop.getData("expressionReplacementReturnUid");
        if (!uid) {
          uid = callee.scope.generateDeclaredUidIdentifier("ret");
          callee.get("body").pushContainer("body", returnStatement$2(cloneNode$a(uid)));
          loop.setData("expressionReplacementReturnUid", uid);
        } else {
          uid = identifier$9(uid.name);
        }
        path.get("expression").replaceWith(assignmentExpression$8("=", cloneNode$a(uid), path.node.expression));
      } else {
        path.replaceWith(returnStatement$2(path.node.expression));
      }
    }
    callee.arrowFunctionToExpression();
    var newCallee = callee;
    var needToAwaitFunction = isParentAsync && traverse.hasType(this.get("callee.body").node, "AwaitExpression", FUNCTION_TYPES);
    var needToYieldFunction = isParentGenerator && traverse.hasType(this.get("callee.body").node, "YieldExpression", FUNCTION_TYPES);
    if (needToAwaitFunction) {
      newCallee.set("async", true);
      if (!needToYieldFunction) {
        this.replaceWith(awaitExpression(this.node));
      }
    }
    if (needToYieldFunction) {
      newCallee.set("generator", true);
      this.replaceWith(yieldExpression$1(this.node, true));
    }
    return newCallee.get("body.body");
  }
  function gatherSequenceExpressions(nodes, declars) {
    var exprs = [];
    var ensureLastUndefined = true;
    for (var _iterator3 = _createForOfIteratorHelperLoose(nodes), _step3; !(_step3 = _iterator3()).done;) {
      var node = _step3.value;
      if (!isEmptyStatement(node)) {
        ensureLastUndefined = false;
      }
      if (isExpression$1(node)) {
        exprs.push(node);
      } else if (isExpressionStatement(node)) {
        exprs.push(node.expression);
      } else if (isVariableDeclaration(node)) {
        if (node.kind !== "var") return;
        for (var _iterator4 = _createForOfIteratorHelperLoose(node.declarations), _step4; !(_step4 = _iterator4()).done;) {
          var declar = _step4.value;
          var bindings = getBindingIdentifiers$1(declar);
          for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
            var key = _Object$keys[_i];
            declars.push(cloneNode$a(bindings[key]));
          }
          if (declar.init) {
            exprs.push(assignmentExpression$8("=", declar.id, declar.init));
          }
        }
        ensureLastUndefined = true;
      } else if (isIfStatement(node)) {
        var consequent = node.consequent ? gatherSequenceExpressions([node.consequent], declars) : buildUndefinedNode$1();
        var alternate = node.alternate ? gatherSequenceExpressions([node.alternate], declars) : buildUndefinedNode$1();
        if (!consequent || !alternate) return;
        exprs.push(conditionalExpression$4(node.test, consequent, alternate));
      } else if (isBlockStatement$1(node)) {
        var body = gatherSequenceExpressions(node.body, declars);
        if (!body) return;
        exprs.push(body);
      } else if (isEmptyStatement(node)) {
        if (nodes.indexOf(node) === 0) {
          ensureLastUndefined = true;
        }
      } else {
        return;
      }
    }
    if (ensureLastUndefined) exprs.push(buildUndefinedNode$1());
    if (exprs.length === 1) {
      return exprs[0];
    } else {
      return sequenceExpression$6(exprs);
    }
  }
  function replaceInline(nodes) {
    resync.call(this);
    if (Array.isArray(nodes)) {
      if (Array.isArray(this.container)) {
        nodes = _verifyNodeList.call(this, nodes);
        var paths = _containerInsertAfter.call(this, nodes);
        this.remove();
        return paths;
      } else {
        return this.replaceWithMultiple(nodes);
      }
    } else {
      return this.replaceWith(nodes);
    }
  }

  var VALID_OBJECT_CALLEES = ["Number", "String", "Math"];
  var VALID_IDENTIFIER_CALLEES = ["isFinite", "isNaN", "parseFloat", "parseInt", "decodeURI", "decodeURIComponent", "encodeURI", "encodeURIComponent", null, null];
  var INVALID_METHODS = ["random"];
  function isValidObjectCallee(val) {
    return VALID_OBJECT_CALLEES.includes(val);
  }
  function isValidIdentifierCallee(val) {
    return VALID_IDENTIFIER_CALLEES.includes(val);
  }
  function isInvalidMethod(val) {
    return INVALID_METHODS.includes(val);
  }
  function evaluateTruthy() {
    var res = this.evaluate();
    if (res.confident) return !!res.value;
  }
  function deopt(path, state) {
    if (!state.confident) return;
    state.deoptPath = path;
    state.confident = false;
  }
  var Globals = new Map([["undefined", undefined], ["Infinity", Infinity], ["NaN", NaN]]);
  function evaluateCached(path, state) {
    var node = path.node;
    var seen = state.seen;
    if (seen.has(node)) {
      var existing = seen.get(node);
      if (existing.resolved) {
        return existing.value;
      } else {
        deopt(path, state);
        return;
      }
    } else {
      var item = {
        resolved: false
      };
      seen.set(node, item);
      var val = _evaluate(path, state);
      if (state.confident) {
        item.resolved = true;
        item.value = val;
      }
      return val;
    }
  }
  function _evaluate(path, state) {
    if (!state.confident) return;
    if (path.isSequenceExpression()) {
      var exprs = path.get("expressions");
      return evaluateCached(exprs[exprs.length - 1], state);
    }
    if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {
      return path.node.value;
    }
    if (path.isNullLiteral()) {
      return null;
    }
    if (path.isTemplateLiteral()) {
      return evaluateQuasis(path, path.node.quasis, state);
    }
    if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) {
      var object = path.get("tag.object");
      var name = object.node.name;
      var property = path.get("tag.property");
      if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") {
        return evaluateQuasis(path, path.node.quasi.quasis, state, true);
      }
    }
    if (path.isConditionalExpression()) {
      var testResult = evaluateCached(path.get("test"), state);
      if (!state.confident) return;
      if (testResult) {
        return evaluateCached(path.get("consequent"), state);
      } else {
        return evaluateCached(path.get("alternate"), state);
      }
    }
    if (path.isExpressionWrapper()) {
      return evaluateCached(path.get("expression"), state);
    }
    if (path.isMemberExpression() && !path.parentPath.isCallExpression({
      callee: path.node
    })) {
      var _property = path.get("property");
      var _object = path.get("object");
      if (_object.isLiteral()) {
        var value = _object.node.value;
        var type = typeof value;
        var key = null;
        if (path.node.computed) {
          key = evaluateCached(_property, state);
          if (!state.confident) return;
        } else if (_property.isIdentifier()) {
          key = _property.node.name;
        }
        if ((type === "number" || type === "string") && key != null && (typeof key === "number" || typeof key === "string")) {
          return value[key];
        }
      }
    }
    if (path.isReferencedIdentifier()) {
      var binding = path.scope.getBinding(path.node.name);
      if (binding) {
        if (binding.constantViolations.length > 0 || path.node.start < binding.path.node.end) {
          deopt(binding.path, state);
          return;
        }
        if (binding.hasValue) {
          return binding.value;
        }
      }
      var _name = path.node.name;
      if (Globals.has(_name)) {
        if (!binding) {
          return Globals.get(_name);
        }
        deopt(binding.path, state);
        return;
      }
      var resolved = path.resolve();
      if (resolved === path) {
        deopt(path, state);
        return;
      } else {
        return evaluateCached(resolved, state);
      }
    }
    if (path.isUnaryExpression({
      prefix: true
    })) {
      if (path.node.operator === "void") {
        return undefined;
      }
      var argument = path.get("argument");
      if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) {
        return "function";
      }
      var arg = evaluateCached(argument, state);
      if (!state.confident) return;
      switch (path.node.operator) {
        case "!":
          return !arg;
        case "+":
          return +arg;
        case "-":
          return -arg;
        case "~":
          return ~arg;
        case "typeof":
          return typeof arg;
      }
    }
    if (path.isArrayExpression()) {
      var arr = [];
      var elems = path.get("elements");
      for (var _iterator = _createForOfIteratorHelperLoose(elems), _step; !(_step = _iterator()).done;) {
        var elem = _step.value;
        var elemValue = elem.evaluate();
        if (elemValue.confident) {
          arr.push(elemValue.value);
        } else {
          deopt(elemValue.deopt, state);
          return;
        }
      }
      return arr;
    }
    if (path.isObjectExpression()) {
      var obj = {};
      var props = path.get("properties");
      for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
        var prop = _step2.value;
        if (prop.isObjectMethod() || prop.isSpreadElement()) {
          deopt(prop, state);
          return;
        }
        var keyPath = prop.get("key");
        var _key = void 0;
        if (prop.node.computed) {
          _key = keyPath.evaluate();
          if (!_key.confident) {
            deopt(_key.deopt, state);
            return;
          }
          _key = _key.value;
        } else if (keyPath.isIdentifier()) {
          _key = keyPath.node.name;
        } else {
          _key = keyPath.node.value;
        }
        var valuePath = prop.get("value");
        var _value = valuePath.evaluate();
        if (!_value.confident) {
          deopt(_value.deopt, state);
          return;
        }
        _value = _value.value;
        obj[_key] = _value;
      }
      return obj;
    }
    if (path.isLogicalExpression()) {
      var wasConfident = state.confident;
      var left = evaluateCached(path.get("left"), state);
      var leftConfident = state.confident;
      state.confident = wasConfident;
      var right = evaluateCached(path.get("right"), state);
      var rightConfident = state.confident;
      switch (path.node.operator) {
        case "||":
          state.confident = leftConfident && (!!left || rightConfident);
          if (!state.confident) return;
          return left || right;
        case "&&":
          state.confident = leftConfident && (!left || rightConfident);
          if (!state.confident) return;
          return left && right;
        case "??":
          state.confident = leftConfident && (left != null || rightConfident);
          if (!state.confident) return;
          return left != null ? left : right;
      }
    }
    if (path.isBinaryExpression()) {
      var _left = evaluateCached(path.get("left"), state);
      if (!state.confident) return;
      var _right = evaluateCached(path.get("right"), state);
      if (!state.confident) return;
      switch (path.node.operator) {
        case "-":
          return _left - _right;
        case "+":
          return _left + _right;
        case "/":
          return _left / _right;
        case "*":
          return _left * _right;
        case "%":
          return _left % _right;
        case "**":
          return Math.pow(_left, _right);
        case "<":
          return _left < _right;
        case ">":
          return _left > _right;
        case "<=":
          return _left <= _right;
        case ">=":
          return _left >= _right;
        case "==":
          return _left == _right;
        case "!=":
          return _left != _right;
        case "===":
          return _left === _right;
        case "!==":
          return _left !== _right;
        case "|":
          return _left | _right;
        case "&":
          return _left & _right;
        case "^":
          return _left ^ _right;
        case "<<":
          return _left << _right;
        case ">>":
          return _left >> _right;
        case ">>>":
          return _left >>> _right;
      }
    }
    if (path.isCallExpression()) {
      var callee = path.get("callee");
      var context;
      var func;
      if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && (isValidObjectCallee(callee.node.name) || isValidIdentifierCallee(callee.node.name))) {
        func = global$1[callee.node.name];
      }
      if (callee.isMemberExpression()) {
        var _object2 = callee.get("object");
        var _property2 = callee.get("property");
        if (_object2.isIdentifier() && _property2.isIdentifier() && isValidObjectCallee(_object2.node.name) && !isInvalidMethod(_property2.node.name)) {
          context = global$1[_object2.node.name];
          var _key2 = _property2.node.name;
          if (hasOwnProperty.call(context, _key2)) {
            func = context[_key2];
          }
        }
        if (_object2.isLiteral() && _property2.isIdentifier()) {
          var _type = typeof _object2.node.value;
          if (_type === "string" || _type === "number") {
            context = _object2.node.value;
            func = context[_property2.node.name];
          }
        }
      }
      if (func) {
        var args = path.get("arguments").map(function (arg) {
          return evaluateCached(arg, state);
        });
        if (!state.confident) return;
        return func.apply(context, args);
      }
    }
    deopt(path, state);
  }
  function evaluateQuasis(path, quasis, state, raw) {
    if (raw === void 0) {
      raw = false;
    }
    var str = "";
    var i = 0;
    var exprs = path.isTemplateLiteral() ? path.get("expressions") : path.get("quasi.expressions");
    for (var _iterator3 = _createForOfIteratorHelperLoose(quasis), _step3; !(_step3 = _iterator3()).done;) {
      var elem = _step3.value;
      if (!state.confident) break;
      str += raw ? elem.value.raw : elem.value.cooked;
      var expr = exprs[i++];
      if (expr) str += String(evaluateCached(expr, state));
    }
    if (!state.confident) return;
    return str;
  }
  function evaluate() {
    var state = {
      confident: true,
      deoptPath: null,
      seen: new Map()
    };
    var value = evaluateCached(this, state);
    if (!state.confident) value = undefined;
    return {
      confident: state.confident,
      deopt: state.deoptPath,
      value: value
    };
  }

  var _templateObject$B;
  var arrowFunctionExpression$1 = arrowFunctionExpression$4,
    assignmentExpression$7 = assignmentExpression$b,
    binaryExpression$4 = binaryExpression$5,
    blockStatement$2 = blockStatement$6,
    callExpression$8 = callExpression$c,
    conditionalExpression$3 = conditionalExpression$5,
    expressionStatement$2 = expressionStatement$7,
    identifier$8 = identifier$e,
    isIdentifier$5 = isIdentifier$f,
    jsxIdentifier = jsxIdentifier$1,
    logicalExpression$2 = logicalExpression$3,
    LOGICAL_OPERATORS$2 = LOGICAL_OPERATORS$3,
    memberExpression$8 = memberExpression$a,
    metaProperty = metaProperty$1,
    numericLiteral$4 = numericLiteral$6,
    objectExpression$2 = objectExpression$3,
    restElement$1 = restElement$2,
    returnStatement$1 = returnStatement$3,
    sequenceExpression$5 = sequenceExpression$8,
    spreadElement$1 = spreadElement$2,
    stringLiteral$4 = stringLiteral$6,
    _super = _super$1,
    thisExpression$2 = thisExpression$4,
    toExpression = toExpression$1,
    unaryExpression$4 = unaryExpression$5,
    toBindingIdentifierName = toBindingIdentifierName$1,
    isFunction$1 = isFunction$5,
    isAssignmentPattern$2 = isAssignmentPattern$4,
    isRestElement$1 = isRestElement$2,
    getFunctionName = getFunctionName$1,
    cloneNode$9 = cloneNode$g,
    variableDeclaration$3 = variableDeclaration$6,
    variableDeclarator$3 = variableDeclarator$6,
    exportNamedDeclaration$1 = exportNamedDeclaration$2,
    exportSpecifier$1 = exportSpecifier$2,
    inherits$2 = inherits$3;
  function toComputedKey$1() {
    var key;
    if (this.isMemberExpression()) {
      key = this.node.property;
    } else if (this.isProperty() || this.isMethod()) {
      key = this.node.key;
    } else {
      throw new ReferenceError("todo");
    }
    if (!this.node.computed) {
      if (isIdentifier$5(key)) key = stringLiteral$4(key.name);
    }
    return key;
  }
  function ensureBlock() {
    var body = this.get("body");
    var bodyNode = body.node;
    if (Array.isArray(body)) {
      throw new Error("Can't convert array path to a block statement");
    }
    if (!bodyNode) {
      throw new Error("Can't convert node without a body");
    }
    if (body.isBlockStatement()) {
      return bodyNode;
    }
    var statements = [];
    var stringPath = "body";
    var key;
    var listKey;
    if (body.isStatement()) {
      listKey = "body";
      key = 0;
      statements.push(body.node);
    } else {
      stringPath += ".body.0";
      if (this.isFunction()) {
        key = "argument";
        statements.push(returnStatement$1(body.node));
      } else {
        key = "expression";
        statements.push(expressionStatement$2(body.node));
      }
    }
    this.node.body = blockStatement$2(statements);
    var parentPath = this.get(stringPath);
    setup.call(body, parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key);
    return this.node;
  }
  {
    exports.arrowFunctionToShadowed = function () {
      if (!this.isArrowFunctionExpression()) return;
      this.arrowFunctionToExpression();
    };
  }
  function unwrapFunctionEnvironment() {
    if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) {
      throw this.buildCodeFrameError("Can only unwrap the environment of a function.");
    }
    hoistFunctionEnvironment(this);
  }
  function setType(path, type) {
    path.node.type = type;
  }
  function arrowFunctionToExpression(_temp) {
    var _arguments$;
    var _ref = _temp === void 0 ? {} : _temp,
      _ref$allowInsertArrow = _ref.allowInsertArrow,
      allowInsertArrow = _ref$allowInsertArrow === void 0 ? true : _ref$allowInsertArrow,
      _ref$allowInsertArrow2 = _ref.allowInsertArrowWithRest,
      allowInsertArrowWithRest = _ref$allowInsertArrow2 === void 0 ? allowInsertArrow : _ref$allowInsertArrow2,
      _ref$noNewArrows = _ref.noNewArrows,
      noNewArrows = _ref$noNewArrows === void 0 ? !((_arguments$ = arguments[0]) != null && _arguments$.specCompliant) : _ref$noNewArrows;
    if (!this.isArrowFunctionExpression()) {
      throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression.");
    }
    var self = this;
    if (!noNewArrows) {
      var _self$ensureFunctionN;
      self = (_self$ensureFunctionN = self.ensureFunctionName(false)) != null ? _self$ensureFunctionN : self;
    }
    var _hoistFunctionEnviron = hoistFunctionEnvironment(self, noNewArrows, allowInsertArrow, allowInsertArrowWithRest),
      thisBinding = _hoistFunctionEnviron.thisBinding,
      fn = _hoistFunctionEnviron.fnPath;
    fn.ensureBlock();
    setType(fn, "FunctionExpression");
    if (!noNewArrows) {
      var checkBinding = thisBinding ? null : fn.scope.generateUidIdentifier("arrowCheckId");
      if (checkBinding) {
        fn.parentPath.scope.push({
          id: checkBinding,
          init: objectExpression$2([])
        });
      }
      fn.get("body").unshiftContainer("body", expressionStatement$2(callExpression$8(this.hub.addHelper("newArrowCheck"), [thisExpression$2(), checkBinding ? identifier$8(checkBinding.name) : identifier$8(thisBinding)])));
      fn.replaceWith(callExpression$8(memberExpression$8(fn.node, identifier$8("bind")), [checkBinding ? identifier$8(checkBinding.name) : thisExpression$2()]));
      return fn.get("callee.object");
    }
    return fn;
  }
  var getSuperCallsVisitor = environmentVisitor({
    CallExpression: function CallExpression(child, _ref2) {
      var allSuperCalls = _ref2.allSuperCalls;
      if (!child.get("callee").isSuper()) return;
      allSuperCalls.push(child);
    }
  });
  function hoistFunctionEnvironment(fnPath, noNewArrows, allowInsertArrow, allowInsertArrowWithRest) {
    if (noNewArrows === void 0) {
      noNewArrows = true;
    }
    if (allowInsertArrow === void 0) {
      allowInsertArrow = true;
    }
    if (allowInsertArrowWithRest === void 0) {
      allowInsertArrowWithRest = true;
    }
    var arrowParent;
    var thisEnvFn = fnPath.findParent(function (p) {
      if (p.isArrowFunctionExpression()) {
        var _arrowParent;
        (_arrowParent = arrowParent) != null ? _arrowParent : arrowParent = p;
        return false;
      }
      return p.isFunction() || p.isProgram() || p.isClassProperty({
        "static": false
      }) || p.isClassPrivateProperty({
        "static": false
      });
    });
    var inConstructor = thisEnvFn.isClassMethod({
      kind: "constructor"
    });
    if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {
      if (arrowParent) {
        thisEnvFn = arrowParent;
      } else if (allowInsertArrow) {
        fnPath.replaceWith(callExpression$8(arrowFunctionExpression$1([], toExpression(fnPath.node)), []));
        thisEnvFn = fnPath.get("callee");
        fnPath = thisEnvFn.get("body");
      } else {
        throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property");
      }
    }
    var _getScopeInformation = getScopeInformation(fnPath),
      thisPaths = _getScopeInformation.thisPaths,
      argumentsPaths = _getScopeInformation.argumentsPaths,
      newTargetPaths = _getScopeInformation.newTargetPaths,
      superProps = _getScopeInformation.superProps,
      superCalls = _getScopeInformation.superCalls;
    if (inConstructor && superCalls.length > 0) {
      if (!allowInsertArrow) {
        throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super()` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
      }
      if (!allowInsertArrowWithRest) {
        throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-parameters', " + "it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
      }
      var allSuperCalls = [];
      thisEnvFn.traverse(getSuperCallsVisitor, {
        allSuperCalls: allSuperCalls
      });
      var superBinding = getSuperBinding(thisEnvFn);
      allSuperCalls.forEach(function (superCall) {
        var callee = identifier$8(superBinding);
        callee.loc = superCall.node.callee.loc;
        superCall.get("callee").replaceWith(callee);
      });
    }
    if (argumentsPaths.length > 0) {
      var argumentsBinding = getBinding(thisEnvFn, "arguments", function () {
        var args = function args() {
          return identifier$8("arguments");
        };
        if (thisEnvFn.scope.path.isProgram()) {
          return conditionalExpression$3(binaryExpression$4("===", unaryExpression$4("typeof", args()), stringLiteral$4("undefined")), thisEnvFn.scope.buildUndefinedNode(), args());
        } else {
          return args();
        }
      });
      argumentsPaths.forEach(function (argumentsChild) {
        var argsRef = identifier$8(argumentsBinding);
        argsRef.loc = argumentsChild.node.loc;
        argumentsChild.replaceWith(argsRef);
      });
    }
    if (newTargetPaths.length > 0) {
      var newTargetBinding = getBinding(thisEnvFn, "newtarget", function () {
        return metaProperty(identifier$8("new"), identifier$8("target"));
      });
      newTargetPaths.forEach(function (targetChild) {
        var targetRef = identifier$8(newTargetBinding);
        targetRef.loc = targetChild.node.loc;
        targetChild.replaceWith(targetRef);
      });
    }
    if (superProps.length > 0) {
      if (!allowInsertArrow) {
        throw superProps[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super.prop` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
      }
      var flatSuperProps = superProps.reduce(function (acc, superProp) {
        return acc.concat(standardizeSuperProperty(superProp));
      }, []);
      flatSuperProps.forEach(function (superProp) {
        var key = superProp.node.computed ? "" : superProp.get("property").node.name;
        var superParentPath = superProp.parentPath;
        var isAssignment = superParentPath.isAssignmentExpression({
          left: superProp.node
        });
        var isCall = superParentPath.isCallExpression({
          callee: superProp.node
        });
        var isTaggedTemplate = superParentPath.isTaggedTemplateExpression({
          tag: superProp.node
        });
        var superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);
        var args = [];
        if (superProp.node.computed) {
          args.push(superProp.get("property").node);
        }
        if (isAssignment) {
          var value = superParentPath.node.right;
          args.push(value);
        }
        var call = callExpression$8(identifier$8(superBinding), args);
        if (isCall) {
          superParentPath.unshiftContainer("arguments", thisExpression$2());
          superProp.replaceWith(memberExpression$8(call, identifier$8("call")));
          thisPaths.push(superParentPath.get("arguments.0"));
        } else if (isAssignment) {
          superParentPath.replaceWith(call);
        } else if (isTaggedTemplate) {
          superProp.replaceWith(callExpression$8(memberExpression$8(call, identifier$8("bind"), false), [thisExpression$2()]));
          thisPaths.push(superProp.get("arguments.0"));
        } else {
          superProp.replaceWith(call);
        }
      });
    }
    var thisBinding;
    if (thisPaths.length > 0 || !noNewArrows) {
      thisBinding = getThisBinding(thisEnvFn, inConstructor);
      if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) {
        thisPaths.forEach(function (thisChild) {
          var thisRef = thisChild.isJSX() ? jsxIdentifier(thisBinding) : identifier$8(thisBinding);
          thisRef.loc = thisChild.node.loc;
          thisChild.replaceWith(thisRef);
        });
        if (!noNewArrows) thisBinding = null;
      }
    }
    return {
      thisBinding: thisBinding,
      fnPath: fnPath
    };
  }
  function isLogicalOp(op) {
    return LOGICAL_OPERATORS$2.includes(op);
  }
  function standardizeSuperProperty(superProp) {
    if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") {
      var assignmentPath = superProp.parentPath;
      var op = assignmentPath.node.operator.slice(0, -1);
      var value = assignmentPath.node.right;
      var isLogicalAssignment = isLogicalOp(op);
      if (superProp.node.computed) {
        var tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
        var object = superProp.node.object;
        var property = superProp.node.property;
        assignmentPath.get("left").replaceWith(memberExpression$8(object, assignmentExpression$7("=", tmp, property), true));
        assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression$8(object, identifier$8(tmp.name), true), value));
      } else {
        var _object = superProp.node.object;
        var _property = superProp.node.property;
        assignmentPath.get("left").replaceWith(memberExpression$8(_object, _property));
        assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression$8(_object, identifier$8(_property.name)), value));
      }
      if (isLogicalAssignment) {
        assignmentPath.replaceWith(logicalExpression$2(op, assignmentPath.node.left, assignmentPath.node.right));
      } else {
        assignmentPath.node.operator = "=";
      }
      return [assignmentPath.get("left"), assignmentPath.get("right").get("left")];
    } else if (superProp.parentPath.isUpdateExpression()) {
      var updateExpr = superProp.parentPath;
      var _tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
      var computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null;
      var parts = [assignmentExpression$7("=", _tmp, memberExpression$8(superProp.node.object, computedKey ? assignmentExpression$7("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), assignmentExpression$7("=", memberExpression$8(superProp.node.object, computedKey ? identifier$8(computedKey.name) : superProp.node.property, superProp.node.computed), binaryExpression$4(superProp.parentPath.node.operator[0], identifier$8(_tmp.name), numericLiteral$4(1)))];
      if (!superProp.parentPath.node.prefix) {
        parts.push(identifier$8(_tmp.name));
      }
      updateExpr.replaceWith(sequenceExpression$5(parts));
      var left = updateExpr.get("expressions.0.right");
      var right = updateExpr.get("expressions.1.left");
      return [left, right];
    }
    return [superProp];
    function rightExpression(op, left, right) {
      if (op === "=") {
        return assignmentExpression$7("=", left, right);
      } else {
        return binaryExpression$4(op, left, right);
      }
    }
  }
  function hasSuperClass(thisEnvFn) {
    return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass;
  }
  var assignSuperThisVisitor = environmentVisitor({
    CallExpression: function CallExpression(child, _ref3) {
      var supers = _ref3.supers,
        thisBinding = _ref3.thisBinding;
      if (!child.get("callee").isSuper()) return;
      if (supers.has(child.node)) return;
      supers.add(child.node);
      child.replaceWithMultiple([child.node, assignmentExpression$7("=", identifier$8(thisBinding), identifier$8("this"))]);
    }
  });
  function getThisBinding(thisEnvFn, inConstructor) {
    return getBinding(thisEnvFn, "this", function (thisBinding) {
      if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression$2();
      thisEnvFn.traverse(assignSuperThisVisitor, {
        supers: new WeakSet(),
        thisBinding: thisBinding
      });
    });
  }
  function getSuperBinding(thisEnvFn) {
    return getBinding(thisEnvFn, "supercall", function () {
      var argsBinding = thisEnvFn.scope.generateUidIdentifier("args");
      return arrowFunctionExpression$1([restElement$1(argsBinding)], callExpression$8(_super(), [spreadElement$1(identifier$8(argsBinding.name))]));
    });
  }
  function getSuperPropBinding(thisEnvFn, isAssignment, propName) {
    var op = isAssignment ? "set" : "get";
    return getBinding(thisEnvFn, "superprop_" + op + ":" + (propName || ""), function () {
      var argsList = [];
      var fnBody;
      if (propName) {
        fnBody = memberExpression$8(_super(), identifier$8(propName));
      } else {
        var method = thisEnvFn.scope.generateUidIdentifier("prop");
        argsList.unshift(method);
        fnBody = memberExpression$8(_super(), identifier$8(method.name), true);
      }
      if (isAssignment) {
        var valueIdent = thisEnvFn.scope.generateUidIdentifier("value");
        argsList.push(valueIdent);
        fnBody = assignmentExpression$7("=", fnBody, identifier$8(valueIdent.name));
      }
      return arrowFunctionExpression$1(argsList, fnBody);
    });
  }
  function getBinding(thisEnvFn, key, init) {
    var cacheKey = "binding:" + key;
    var data = thisEnvFn.getData(cacheKey);
    if (!data) {
      var id = thisEnvFn.scope.generateUidIdentifier(key);
      data = id.name;
      thisEnvFn.setData(cacheKey, data);
      thisEnvFn.scope.push({
        id: id,
        init: init(data)
      });
    }
    return data;
  }
  var getScopeInformationVisitor = environmentVisitor({
    ThisExpression: function ThisExpression(child, _ref4) {
      var thisPaths = _ref4.thisPaths;
      thisPaths.push(child);
    },
    JSXIdentifier: function JSXIdentifier(child, _ref5) {
      var thisPaths = _ref5.thisPaths;
      if (child.node.name !== "this") return;
      if (!child.parentPath.isJSXMemberExpression({
        object: child.node
      }) && !child.parentPath.isJSXOpeningElement({
        name: child.node
      })) {
        return;
      }
      thisPaths.push(child);
    },
    CallExpression: function CallExpression(child, _ref6) {
      var superCalls = _ref6.superCalls;
      if (child.get("callee").isSuper()) superCalls.push(child);
    },
    MemberExpression: function MemberExpression(child, _ref7) {
      var superProps = _ref7.superProps;
      if (child.get("object").isSuper()) superProps.push(child);
    },
    Identifier: function Identifier(child, _ref8) {
      var argumentsPaths = _ref8.argumentsPaths;
      if (!child.isReferencedIdentifier({
        name: "arguments"
      })) return;
      var curr = child.scope;
      do {
        if (curr.hasOwnBinding("arguments")) {
          curr.rename("arguments");
          return;
        }
        if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {
          break;
        }
      } while (curr = curr.parent);
      argumentsPaths.push(child);
    },
    MetaProperty: function MetaProperty(child, _ref9) {
      var newTargetPaths = _ref9.newTargetPaths;
      if (!child.get("meta").isIdentifier({
        name: "new"
      })) return;
      if (!child.get("property").isIdentifier({
        name: "target"
      })) return;
      newTargetPaths.push(child);
    }
  });
  function getScopeInformation(fnPath) {
    var thisPaths = [];
    var argumentsPaths = [];
    var newTargetPaths = [];
    var superProps = [];
    var superCalls = [];
    fnPath.traverse(getScopeInformationVisitor, {
      thisPaths: thisPaths,
      argumentsPaths: argumentsPaths,
      newTargetPaths: newTargetPaths,
      superProps: superProps,
      superCalls: superCalls
    });
    return {
      thisPaths: thisPaths,
      argumentsPaths: argumentsPaths,
      newTargetPaths: newTargetPaths,
      superProps: superProps,
      superCalls: superCalls
    };
  }
  function splitExportDeclaration() {
    if (!this.isExportDeclaration() || this.isExportAllDeclaration()) {
      throw new Error("Only default and named export declarations can be split.");
    }
    if (this.isExportNamedDeclaration() && this.get("specifiers").length > 0) {
      throw new Error("It doesn't make sense to split exported specifiers.");
    }
    var declaration = this.get("declaration");
    if (this.isExportDefaultDeclaration()) {
      var standaloneDeclaration = declaration.isFunctionDeclaration() || declaration.isClassDeclaration();
      var exportExpr = declaration.isFunctionExpression() || declaration.isClassExpression();
      var scope = declaration.isScope() ? declaration.scope.parent : declaration.scope;
      var id = declaration.node.id;
      var needBindingRegistration = false;
      if (!id) {
        needBindingRegistration = true;
        id = scope.generateUidIdentifier("default");
        if (standaloneDeclaration || exportExpr) {
          declaration.node.id = cloneNode$9(id);
        }
      } else if (exportExpr && scope.hasBinding(id.name)) {
        needBindingRegistration = true;
        id = scope.generateUidIdentifier(id.name);
      }
      var updatedDeclaration = standaloneDeclaration ? declaration.node : variableDeclaration$3("var", [variableDeclarator$3(cloneNode$9(id), declaration.node)]);
      var updatedExportDeclaration = exportNamedDeclaration$1(null, [exportSpecifier$1(cloneNode$9(id), identifier$8("default"))]);
      this.insertAfter(updatedExportDeclaration);
      this.replaceWith(updatedDeclaration);
      if (needBindingRegistration) {
        scope.registerDeclaration(this);
      }
      return this;
    } else if (this.get("specifiers").length > 0) {
      throw new Error("It doesn't make sense to split exported specifiers.");
    }
    var bindingIdentifiers = declaration.getOuterBindingIdentifiers();
    var specifiers = Object.keys(bindingIdentifiers).map(function (name) {
      return exportSpecifier$1(identifier$8(name), identifier$8(name));
    });
    var aliasDeclar = exportNamedDeclaration$1(null, specifiers);
    this.insertAfter(aliasDeclar);
    this.replaceWith(declaration.node);
    return this;
  }
  var refersOuterBindingVisitor = {
    "ReferencedIdentifier|BindingIdentifier": function ReferencedIdentifierBindingIdentifier(path, state) {
      if (path.node.name !== state.name) return;
      state.needsRename = true;
      path.stop();
    },
    Scope: function Scope(path, state) {
      if (path.scope.hasOwnBinding(state.name)) {
        path.skip();
      }
    }
  };
  function ensureFunctionName(supportUnicodeId) {
    if (this.node.id) return this;
    var res = getFunctionName(this.node, this.parent);
    if (res == null) return this;
    var name = res.name;
    if (!supportUnicodeId && /[\uD800-\uDFFF]/.test(name)) {
      return null;
    }
    if (name.startsWith("get ") || name.startsWith("set ")) {
      return null;
    }
    name = toBindingIdentifierName(name.replace(/[/ ]/g, "_"));
    var id = identifier$8(name);
    inherits$2(id, res.originalNode);
    var state = {
      needsRename: false,
      name: name
    };
    var scope = this.scope;
    var binding = scope.getOwnBinding(name);
    if (binding) {
      if (binding.kind === "param") {
        state.needsRename = true;
      }
    } else if (scope.parent.hasBinding(name) || scope.hasGlobal(name)) {
      this.traverse(refersOuterBindingVisitor, state);
    }
    if (!state.needsRename) {
      this.node.id = id;
      scope.getProgramParent().references[id.name] = true;
      return this;
    }
    if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
      scope.rename(id.name);
      this.node.id = id;
      scope.getProgramParent().references[id.name] = true;
      return this;
    }
    if (!isFunction$1(this.node)) return null;
    var key = scope.generateUidIdentifier(id.name);
    var params = [];
    for (var i = 0, len = getFunctionArity(this.node); i < len; i++) {
      params.push(scope.generateUidIdentifier("x"));
    }
    var call = template$1.expression.ast(_templateObject$B || (_templateObject$B = _taggedTemplateLiteralLoose(["\n    (function (", ") {\n      function ", "(", ") {\n        return ", ".apply(this, arguments);\n      }\n\n      ", ".toString = function () {\n        return ", ".toString();\n      }\n\n      return ", ";\n    })(", ")\n  "])), key, id, params, cloneNode$9(key), cloneNode$9(id), cloneNode$9(key), cloneNode$9(id), toExpression(this.node));
    return this.replaceWith(call)[0].get("arguments.0");
  }
  function getFunctionArity(node) {
    var count = node.params.findIndex(function (param) {
      return isAssignmentPattern$2(param) || isRestElement$1(param);
    });
    return count === -1 ? node.params.length : count;
  }

  var NodePath_conversion = /*#__PURE__*/Object.freeze({
    __proto__: null,
    arrowFunctionToExpression: arrowFunctionToExpression,
    ensureBlock: ensureBlock,
    ensureFunctionName: ensureFunctionName,
    splitExportDeclaration: splitExportDeclaration,
    toComputedKey: toComputedKey$1,
    unwrapFunctionEnvironment: unwrapFunctionEnvironment
  });

  var STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS$1,
    VISITOR_KEYS$3 = VISITOR_KEYS$5,
    isBlockStatement = isBlockStatement$3,
    isExpression = isExpression$4,
    isIdentifier$4 = isIdentifier$f,
    isLiteral$1 = isLiteral$5,
    isStringLiteral$1 = isStringLiteral$5,
    isType = isType$2,
    _matchesPattern = matchesPattern$2;
  function matchesPattern(pattern, allowPartial) {
    return _matchesPattern(this.node, pattern, allowPartial);
  }
  {
    exports.has = function has(key) {
      var _this$node;
      var val = (_this$node = this.node) == null ? void 0 : _this$node[key];
      if (val && Array.isArray(val)) {
        return !!val.length;
      } else {
        return !!val;
      }
    };
  }
  function isStatic() {
    return this.scope.isStatic(this.node);
  }
  {
    exports.is = exports.has;
    exports.isnt = function isnt(key) {
      return !this.has(key);
    };
    exports.equals = function equals(key, value) {
      return this.node[key] === value;
    };
  }
  function isNodeType(type) {
    return isType(this.type, type);
  }
  function canHaveVariableDeclarationOrExpression() {
    return (this.key === "init" || this.key === "left") && this.parentPath.isFor();
  }
  function canSwapBetweenExpressionAndStatement(replacement) {
    if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) {
      return false;
    }
    if (this.isExpression()) {
      return isBlockStatement(replacement);
    } else if (this.isBlockStatement()) {
      return isExpression(replacement);
    }
    return false;
  }
  function isCompletionRecord(allowInsideFunction) {
    var path = this;
    var first = true;
    do {
      var _path = path,
        type = _path.type,
        container = _path.container;
      if (!first && (path.isFunction() || type === "StaticBlock")) {
        return !!allowInsideFunction;
      }
      first = false;
      if (Array.isArray(container) && path.key !== container.length - 1) {
        return false;
      }
    } while ((path = path.parentPath) && !path.isProgram() && !path.isDoExpression());
    return true;
  }
  function isStatementOrBlock() {
    if (this.parentPath.isLabeledStatement() || isBlockStatement(this.container)) {
      return false;
    } else {
      return STATEMENT_OR_BLOCK_KEYS.includes(this.key);
    }
  }
  function referencesImport(moduleSource, importName) {
    if (!this.isReferencedIdentifier()) {
      if (this.isJSXMemberExpression() && this.node.property.name === importName || (this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral$1(this.node.property, {
        value: importName
      }) : this.node.property.name === importName)) {
        var object = this.get("object");
        return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*");
      }
      return false;
    }
    var binding = this.scope.getBinding(this.node.name);
    if (!binding || binding.kind !== "module") return false;
    var path = binding.path;
    var parent = path.parentPath;
    if (!parent.isImportDeclaration()) return false;
    if (parent.node.source.value === moduleSource) {
      if (!importName) return true;
    } else {
      return false;
    }
    if (path.isImportDefaultSpecifier() && importName === "default") {
      return true;
    }
    if (path.isImportNamespaceSpecifier() && importName === "*") {
      return true;
    }
    if (path.isImportSpecifier() && isIdentifier$4(path.node.imported, {
      name: importName
    })) {
      return true;
    }
    return false;
  }
  function getSource$1() {
    var node = this.node;
    if (node.end) {
      var code = this.hub.getCode();
      if (code) return code.slice(node.start, node.end);
    }
    return "";
  }
  function willIMaybeExecuteBefore(target) {
    return this._guessExecutionStatusRelativeTo(target) !== "after";
  }
  function getOuterFunction(path) {
    return path.isProgram() ? path : (path.parentPath.scope.getFunctionParent() || path.parentPath.scope.getProgramParent()).path;
  }
  function isExecutionUncertain(type, key) {
    switch (type) {
      case "LogicalExpression":
        return key === "right";
      case "ConditionalExpression":
      case "IfStatement":
        return key === "consequent" || key === "alternate";
      case "WhileStatement":
      case "DoWhileStatement":
      case "ForInStatement":
      case "ForOfStatement":
        return key === "body";
      case "ForStatement":
        return key === "body" || key === "update";
      case "SwitchStatement":
        return key === "cases";
      case "TryStatement":
        return key === "handler";
      case "AssignmentPattern":
        return key === "right";
      case "OptionalMemberExpression":
        return key === "property";
      case "OptionalCallExpression":
        return key === "arguments";
      default:
        return false;
    }
  }
  function isExecutionUncertainInList(paths, maxIndex) {
    for (var i = 0; i < maxIndex; i++) {
      var path = paths[i];
      if (isExecutionUncertain(path.parent.type, path.parentKey)) {
        return true;
      }
    }
    return false;
  }
  var SYMBOL_CHECKING = Symbol();
  function _guessExecutionStatusRelativeTo(target) {
    return _guessExecutionStatusRelativeToCached(this, target, new Map());
  }
  function _guessExecutionStatusRelativeToCached(base, target, cache) {
    var funcParent = {
      "this": getOuterFunction(base),
      target: getOuterFunction(target)
    };
    if (funcParent.target.node !== funcParent["this"].node) {
      return _guessExecutionStatusRelativeToDifferentFunctionsCached(base, funcParent.target, cache);
    }
    var paths = {
      target: target.getAncestry(),
      "this": base.getAncestry()
    };
    if (paths.target.includes(base)) return "after";
    if (paths["this"].includes(target)) return "before";
    var commonPath;
    var commonIndex = {
      target: 0,
      "this": 0
    };
    while (!commonPath && commonIndex["this"] < paths["this"].length) {
      var path = paths["this"][commonIndex["this"]];
      commonIndex.target = paths.target.indexOf(path);
      if (commonIndex.target >= 0) {
        commonPath = path;
      } else {
        commonIndex["this"]++;
      }
    }
    if (!commonPath) {
      throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program.");
    }
    if (isExecutionUncertainInList(paths["this"], commonIndex["this"] - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) {
      return "unknown";
    }
    var divergence = {
      "this": paths["this"][commonIndex["this"] - 1],
      target: paths.target[commonIndex.target - 1]
    };
    if (divergence.target.listKey && divergence["this"].listKey && divergence.target.container === divergence["this"].container) {
      return divergence.target.key > divergence["this"].key ? "before" : "after";
    }
    var keys = VISITOR_KEYS$3[commonPath.type];
    var keyPosition = {
      "this": keys.indexOf(divergence["this"].parentKey),
      target: keys.indexOf(divergence.target.parentKey)
    };
    return keyPosition.target > keyPosition["this"] ? "before" : "after";
  }
  function _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache) {
    if (!target.isFunctionDeclaration()) {
      if (_guessExecutionStatusRelativeToCached(base, target, cache) === "before") {
        return "before";
      }
      return "unknown";
    } else if (target.parentPath.isExportDeclaration()) {
      return "unknown";
    }
    var binding = target.scope.getBinding(target.node.id.name);
    if (!binding.references) return "before";
    var referencePaths = binding.referencePaths;
    var allStatus;
    for (var _iterator = _createForOfIteratorHelperLoose(referencePaths), _step; !(_step = _iterator()).done;) {
      var path = _step.value;
      var childOfFunction = !!path.find(function (path) {
        return path.node === target.node;
      });
      if (childOfFunction) continue;
      if (path.key !== "callee" || !path.parentPath.isCallExpression()) {
        return "unknown";
      }
      var status = _guessExecutionStatusRelativeToCached(base, path, cache);
      if (allStatus && allStatus !== status) {
        return "unknown";
      } else {
        allStatus = status;
      }
    }
    return allStatus;
  }
  function _guessExecutionStatusRelativeToDifferentFunctionsCached(base, target, cache) {
    var nodeMap = cache.get(base.node);
    var cached;
    if (!nodeMap) {
      cache.set(base.node, nodeMap = new Map());
    } else if (cached = nodeMap.get(target.node)) {
      if (cached === SYMBOL_CHECKING) {
        return "unknown";
      }
      return cached;
    }
    nodeMap.set(target.node, SYMBOL_CHECKING);
    var result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache);
    nodeMap.set(target.node, result);
    return result;
  }
  function resolve$3(dangerous, resolved) {
    return _resolve.call(this, dangerous, resolved) || this;
  }
  function _resolve(dangerous, resolved) {
    var _resolved;
    if ((_resolved = resolved) != null && _resolved.includes(this)) return;
    resolved = resolved || [];
    resolved.push(this);
    if (this.isVariableDeclarator()) {
      if (this.get("id").isIdentifier()) {
        return this.get("init").resolve(dangerous, resolved);
      }
    } else if (this.isReferencedIdentifier()) {
      var binding = this.scope.getBinding(this.node.name);
      if (!binding) return;
      if (!binding.constant) return;
      if (binding.kind === "module") return;
      if (binding.path !== this) {
        var ret = binding.path.resolve(dangerous, resolved);
        if (this.find(function (parent) {
          return parent.node === ret.node;
        })) return;
        return ret;
      }
    } else if (this.isTypeCastExpression()) {
      return this.get("expression").resolve(dangerous, resolved);
    } else if (dangerous && this.isMemberExpression()) {
      var targetKey = this.toComputedKey();
      if (!isLiteral$1(targetKey)) return;
      var targetName = targetKey.value;
      var target = this.get("object").resolve(dangerous, resolved);
      if (target.isObjectExpression()) {
        var props = target.get("properties");
        for (var _i = 0, _arr = props; _i < _arr.length; _i++) {
          var prop = _arr[_i];
          if (!prop.isProperty()) continue;
          var key = prop.get("key");
          var match = prop.isnt("computed") && key.isIdentifier({
            name: targetName
          });
          match = match || key.isLiteral({
            value: targetName
          });
          if (match) return prop.get("value").resolve(dangerous, resolved);
        }
      } else if (target.isArrayExpression() && !isNaN(+targetName)) {
        var elems = target.get("elements");
        var elem = elems[targetName];
        if (elem) return elem.resolve(dangerous, resolved);
      }
    }
  }
  function isConstantExpression() {
    if (this.isIdentifier()) {
      var binding = this.scope.getBinding(this.node.name);
      if (!binding) return false;
      return binding.constant;
    }
    if (this.isLiteral()) {
      if (this.isRegExpLiteral()) {
        return false;
      }
      if (this.isTemplateLiteral()) {
        return this.get("expressions").every(function (expression) {
          return expression.isConstantExpression();
        });
      }
      return true;
    }
    if (this.isUnaryExpression()) {
      if (this.node.operator !== "void") {
        return false;
      }
      return this.get("argument").isConstantExpression();
    }
    if (this.isBinaryExpression()) {
      var operator = this.node.operator;
      return operator !== "in" && operator !== "instanceof" && this.get("left").isConstantExpression() && this.get("right").isConstantExpression();
    }
    if (this.isMemberExpression()) {
      return !this.node.computed && this.get("object").isIdentifier({
        name: "Symbol"
      }) && !this.scope.hasBinding("Symbol", {
        noGlobals: true
      });
    }
    if (this.isCallExpression()) {
      return this.node.arguments.length === 1 && this.get("callee").matchesPattern("Symbol.for") && !this.scope.hasBinding("Symbol", {
        noGlobals: true
      }) && this.get("arguments")[0].isStringLiteral();
    }
    return false;
  }
  function isInStrictMode() {
    var start = this.isProgram() ? this : this.parentPath;
    var strictParent = start.find(function (path) {
      if (path.isProgram({
        sourceType: "module"
      })) return true;
      if (path.isClass()) return true;
      if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) {
        return false;
      }
      var body;
      if (path.isFunction()) {
        body = path.node.body;
      } else if (path.isProgram()) {
        body = path.node;
      } else {
        return false;
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(body.directives), _step2; !(_step2 = _iterator2()).done;) {
        var directive = _step2.value;
        if (directive.value.value === "use strict") {
          return true;
        }
      }
    });
    return !!strictParent;
  }

  var NodePath_introspection = /*#__PURE__*/Object.freeze({
    __proto__: null,
    _guessExecutionStatusRelativeTo: _guessExecutionStatusRelativeTo,
    _resolve: _resolve,
    canHaveVariableDeclarationOrExpression: canHaveVariableDeclarationOrExpression,
    canSwapBetweenExpressionAndStatement: canSwapBetweenExpressionAndStatement,
    getSource: getSource$1,
    isCompletionRecord: isCompletionRecord,
    isConstantExpression: isConstantExpression,
    isInStrictMode: isInStrictMode,
    isNodeType: isNodeType,
    isStatementOrBlock: isStatementOrBlock,
    isStatic: isStatic,
    matchesPattern: matchesPattern,
    referencesImport: referencesImport,
    resolve: resolve$3,
    willIMaybeExecuteBefore: willIMaybeExecuteBefore
  });

  var _getAssignmentIdentifiers = getAssignmentIdentifiers$2,
    _getBindingIdentifiers = getBindingIdentifiers$4,
    _getOuterBindingIdentifiers = getOuterBindingIdentifiers$1,
    numericLiteral$3 = numericLiteral$6,
    unaryExpression$3 = unaryExpression$5;
  var NORMAL_COMPLETION = 0;
  var BREAK_COMPLETION = 1;
  function NormalCompletion(path) {
    return {
      type: NORMAL_COMPLETION,
      path: path
    };
  }
  function BreakCompletion(path) {
    return {
      type: BREAK_COMPLETION,
      path: path
    };
  }
  function getOpposite() {
    if (this.key === "left") {
      return this.getSibling("right");
    } else if (this.key === "right") {
      return this.getSibling("left");
    }
    return null;
  }
  function addCompletionRecords(path, records, context) {
    if (path) {
      records.push.apply(records, _toConsumableArray(_getCompletionRecords(path, context)));
    }
    return records;
  }
  function completionRecordForSwitch(cases, records, context) {
    var lastNormalCompletions = [];
    for (var i = 0; i < cases.length; i++) {
      var casePath = cases[i];
      var caseCompletions = _getCompletionRecords(casePath, context);
      var normalCompletions = [];
      var breakCompletions = [];
      for (var _i = 0, _caseCompletions = caseCompletions; _i < _caseCompletions.length; _i++) {
        var c = _caseCompletions[_i];
        if (c.type === NORMAL_COMPLETION) {
          normalCompletions.push(c);
        }
        if (c.type === BREAK_COMPLETION) {
          breakCompletions.push(c);
        }
      }
      if (normalCompletions.length) {
        lastNormalCompletions = normalCompletions;
      }
      records.push.apply(records, breakCompletions);
    }
    records.push.apply(records, _toConsumableArray(lastNormalCompletions));
    return records;
  }
  function normalCompletionToBreak(completions) {
    completions.forEach(function (c) {
      c.type = BREAK_COMPLETION;
    });
  }
  function replaceBreakStatementInBreakCompletion(completions, reachable) {
    completions.forEach(function (c) {
      if (c.path.isBreakStatement({
        label: null
      })) {
        if (reachable) {
          c.path.replaceWith(unaryExpression$3("void", numericLiteral$3(0)));
        } else {
          c.path.remove();
        }
      }
    });
  }
  function getStatementListCompletion(paths, context) {
    var completions = [];
    if (context.canHaveBreak) {
      var lastNormalCompletions = [];
      for (var i = 0; i < paths.length; i++) {
        var path = paths[i];
        var newContext = Object.assign({}, context, {
          inCaseClause: false
        });
        if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) {
          newContext.shouldPopulateBreak = true;
        } else {
          newContext.shouldPopulateBreak = false;
        }
        var statementCompletions = _getCompletionRecords(path, newContext);
        if (statementCompletions.length > 0 && statementCompletions.every(function (c) {
          return c.type === BREAK_COMPLETION;
        })) {
          if (lastNormalCompletions.length > 0 && statementCompletions.every(function (c) {
            return c.path.isBreakStatement({
              label: null
            });
          })) {
            normalCompletionToBreak(lastNormalCompletions);
            completions.push.apply(completions, _toConsumableArray(lastNormalCompletions));
            if (lastNormalCompletions.some(function (c) {
              return c.path.isDeclaration();
            })) {
              completions.push.apply(completions, statementCompletions);
              replaceBreakStatementInBreakCompletion(statementCompletions, true);
            }
            replaceBreakStatementInBreakCompletion(statementCompletions, false);
          } else {
            completions.push.apply(completions, statementCompletions);
            if (!context.shouldPopulateBreak) {
              replaceBreakStatementInBreakCompletion(statementCompletions, true);
            }
          }
          break;
        }
        if (i === paths.length - 1) {
          completions.push.apply(completions, statementCompletions);
        } else {
          lastNormalCompletions = [];
          for (var _i2 = 0; _i2 < statementCompletions.length; _i2++) {
            var c = statementCompletions[_i2];
            if (c.type === BREAK_COMPLETION) {
              completions.push(c);
            }
            if (c.type === NORMAL_COMPLETION) {
              lastNormalCompletions.push(c);
            }
          }
        }
      }
    } else if (paths.length) {
      for (var _i3 = paths.length - 1; _i3 >= 0; _i3--) {
        var pathCompletions = _getCompletionRecords(paths[_i3], context);
        if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) {
          completions.push.apply(completions, pathCompletions);
          break;
        }
      }
    }
    return completions;
  }
  function _getCompletionRecords(path, context) {
    var records = [];
    if (path.isIfStatement()) {
      records = addCompletionRecords(path.get("consequent"), records, context);
      records = addCompletionRecords(path.get("alternate"), records, context);
    } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) {
      return addCompletionRecords(path.get("body"), records, context);
    } else if (path.isProgram() || path.isBlockStatement()) {
      return getStatementListCompletion(path.get("body"), context);
    } else if (path.isFunction()) {
      return _getCompletionRecords(path.get("body"), context);
    } else if (path.isTryStatement()) {
      records = addCompletionRecords(path.get("block"), records, context);
      records = addCompletionRecords(path.get("handler"), records, context);
    } else if (path.isCatchClause()) {
      return addCompletionRecords(path.get("body"), records, context);
    } else if (path.isSwitchStatement()) {
      return completionRecordForSwitch(path.get("cases"), records, context);
    } else if (path.isSwitchCase()) {
      return getStatementListCompletion(path.get("consequent"), {
        canHaveBreak: true,
        shouldPopulateBreak: false,
        inCaseClause: true
      });
    } else if (path.isBreakStatement()) {
      records.push(BreakCompletion(path));
    } else {
      records.push(NormalCompletion(path));
    }
    return records;
  }
  function getCompletionRecords() {
    var records = _getCompletionRecords(this, {
      canHaveBreak: false,
      shouldPopulateBreak: false,
      inCaseClause: false
    });
    return records.map(function (r) {
      return r.path;
    });
  }
  function getSibling(key) {
    return NodePath_Final.get({
      parentPath: this.parentPath,
      parent: this.parent,
      container: this.container,
      listKey: this.listKey,
      key: key
    }).setContext(this.context);
  }
  function getPrevSibling() {
    return this.getSibling(this.key - 1);
  }
  function getNextSibling() {
    return this.getSibling(this.key + 1);
  }
  function getAllNextSiblings() {
    var _key = this.key;
    var sibling = this.getSibling(++_key);
    var siblings = [];
    while (sibling.node) {
      siblings.push(sibling);
      sibling = this.getSibling(++_key);
    }
    return siblings;
  }
  function getAllPrevSiblings() {
    var _key = this.key;
    var sibling = this.getSibling(--_key);
    var siblings = [];
    while (sibling.node) {
      siblings.push(sibling);
      sibling = this.getSibling(--_key);
    }
    return siblings;
  }
  function get$1(key, context) {
    if (context === void 0) {
      context = true;
    }
    if (context === true) context = this.context;
    var parts = key.split(".");
    if (parts.length === 1) {
      return _getKey.call(this, key, context);
    } else {
      return _getPattern.call(this, parts, context);
    }
  }
  function _getKey(key, context) {
    var _this = this;
    var node = this.node;
    var container = node[key];
    if (Array.isArray(container)) {
      return container.map(function (_, i) {
        return NodePath_Final.get({
          listKey: key,
          parentPath: _this,
          parent: node,
          container: container,
          key: i
        }).setContext(context);
      });
    } else {
      return NodePath_Final.get({
        parentPath: this,
        parent: node,
        container: node,
        key: key
      }).setContext(context);
    }
  }
  function _getPattern(parts, context) {
    var path = this;
    for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
      var part = _step.value;
      if (part === ".") {
        path = path.parentPath;
      } else {
        if (Array.isArray(path)) {
          path = path[part];
        } else {
          path = path.get(part, context);
        }
      }
    }
    return path;
  }
  function getAssignmentIdentifiers() {
    return _getAssignmentIdentifiers(this.node);
  }
  function getBindingIdentifiers(duplicates) {
    return _getBindingIdentifiers(this.node, duplicates);
  }
  function getOuterBindingIdentifiers(duplicates) {
    return _getOuterBindingIdentifiers(this.node, duplicates);
  }
  function getBindingIdentifierPaths(duplicates, outerOnly) {
    if (duplicates === void 0) {
      duplicates = false;
    }
    if (outerOnly === void 0) {
      outerOnly = false;
    }
    var path = this;
    var search = [path];
    var ids = Object.create(null);
    while (search.length) {
      var id = search.shift();
      if (!id) continue;
      if (!id.node) continue;
      var keys = _getBindingIdentifiers.keys[id.node.type];
      if (id.isIdentifier()) {
        if (duplicates) {
          var _ids = ids[id.node.name] = ids[id.node.name] || [];
          _ids.push(id);
        } else {
          ids[id.node.name] = id;
        }
        continue;
      }
      if (id.isExportDeclaration()) {
        var declaration = id.get("declaration");
        if (declaration.isDeclaration()) {
          search.push(declaration);
        }
        continue;
      }
      if (outerOnly) {
        if (id.isFunctionDeclaration()) {
          search.push(id.get("id"));
          continue;
        }
        if (id.isFunctionExpression()) {
          continue;
        }
      }
      if (keys) {
        for (var i = 0; i < keys.length; i++) {
          var _key2 = keys[i];
          var child = id.get(_key2);
          if (Array.isArray(child)) {
            search.push.apply(search, _toConsumableArray(child));
          } else if (child.node) {
            search.push(child);
          }
        }
      }
    }
    return ids;
  }
  function getOuterBindingIdentifierPaths(duplicates) {
    if (duplicates === void 0) {
      duplicates = false;
    }
    return this.getBindingIdentifierPaths(duplicates, true);
  }

  var _addComment = addComment$2,
    _addComments = addComments$1;
  function shareCommentsWithSiblings() {
    if (typeof this.key === "string") return;
    var node = this.node;
    if (!node) return;
    var trailing = node.trailingComments;
    var leading = node.leadingComments;
    if (!trailing && !leading) return;
    var prev = this.getSibling(this.key - 1);
    var next = this.getSibling(this.key + 1);
    var hasPrev = Boolean(prev.node);
    var hasNext = Boolean(next.node);
    if (hasPrev) {
      if (leading) {
        prev.addComments("trailing", removeIfExisting(leading, prev.node.trailingComments));
      }
      if (trailing && !hasNext) prev.addComments("trailing", trailing);
    }
    if (hasNext) {
      if (trailing) {
        next.addComments("leading", removeIfExisting(trailing, next.node.leadingComments));
      }
      if (leading && !hasPrev) next.addComments("leading", leading);
    }
  }
  function removeIfExisting(list, toRemove) {
    if (!(toRemove != null && toRemove.length)) return list;
    var set = new Set(toRemove);
    return list.filter(function (el) {
      return !set.has(el);
    });
  }
  function addComment$1(type, content, line) {
    _addComment(this.node, type, content, line);
  }
  function addComments(type, comments) {
    _addComments(this.node, type, comments);
  }

  var validate$1 = validate$5;
  var _debug = browserExports("babel");
  var REMOVED = 1 << 0;
  var SHOULD_STOP = 1 << 1;
  var SHOULD_SKIP = 1 << 2;
  var NodePath_Final = function () {
    function NodePath(hub, parent) {
      this.contexts = [];
      this.state = null;
      this.opts = null;
      this._traverseFlags = 0;
      this.skipKeys = null;
      this.parentPath = null;
      this.container = null;
      this.listKey = null;
      this.key = null;
      this.node = null;
      this.type = null;
      this.parent = parent;
      this.hub = hub;
      this.data = null;
      this.context = null;
      this.scope = null;
    }
    NodePath.get = function get(_ref) {
      var hub = _ref.hub,
        parentPath = _ref.parentPath,
        parent = _ref.parent,
        container = _ref.container,
        listKey = _ref.listKey,
        key = _ref.key;
      if (!hub && parentPath) {
        hub = parentPath.hub;
      }
      if (!parent) {
        throw new Error("To get a node path the parent needs to exist");
      }
      var targetNode = container[key];
      var paths = getOrCreateCachedPaths(hub, parent);
      var path = paths.get(targetNode);
      if (!path) {
        path = new NodePath(hub, parent);
        if (targetNode) paths.set(targetNode, path);
      }
      setup.call(path, parentPath, container, listKey, key);
      return path;
    };
    var _proto = NodePath.prototype;
    _proto.getScope = function getScope(scope) {
      return this.isScope() ? new Scope(this) : scope;
    };
    _proto.setData = function setData(key, val) {
      if (this.data == null) {
        this.data = Object.create(null);
      }
      return this.data[key] = val;
    };
    _proto.getData = function getData(key, def) {
      if (this.data == null) {
        this.data = Object.create(null);
      }
      var val = this.data[key];
      if (val === undefined && def !== undefined) val = this.data[key] = def;
      return val;
    };
    _proto.hasNode = function hasNode() {
      return this.node != null;
    };
    _proto.buildCodeFrameError = function buildCodeFrameError(msg, Error) {
      if (Error === void 0) {
        Error = SyntaxError;
      }
      return this.hub.buildError(this.node, msg, Error);
    };
    _proto.traverse = function traverse$1(visitor, state) {
      traverse(this.node, visitor, this.scope, state, this);
    };
    _proto.set = function set(key, node) {
      validate$1(this.node, key, node);
      this.node[key] = node;
    };
    _proto.getPathLocation = function getPathLocation() {
      var parts = [];
      var path = this;
      do {
        var key = path.key;
        if (path.inList) key = path.listKey + "[" + key + "]";
        parts.unshift(key);
      } while (path = path.parentPath);
      return parts.join(".");
    };
    _proto.debug = function debug(message) {
      if (!_debug.enabled) return;
      _debug(this.getPathLocation() + " " + this.type + ": " + message);
    };
    _proto.toString = function toString() {
      return generate$1(this.node).code;
    };
    return _createClass(NodePath, [{
      key: "removed",
      get: function get() {
        return (this._traverseFlags & 1) > 0;
      },
      set: function set(v) {
        if (v) this._traverseFlags |= 1;else this._traverseFlags &= -2;
      }
    }, {
      key: "shouldStop",
      get: function get() {
        return (this._traverseFlags & 2) > 0;
      },
      set: function set(v) {
        if (v) this._traverseFlags |= 2;else this._traverseFlags &= -3;
      }
    }, {
      key: "shouldSkip",
      get: function get() {
        return (this._traverseFlags & 4) > 0;
      },
      set: function set(v) {
        if (v) this._traverseFlags |= 4;else this._traverseFlags &= -5;
      }
    }, {
      key: "inList",
      get: function get() {
        return !!this.listKey;
      },
      set: function set(inList) {
        if (!inList) {
          this.listKey = null;
        }
      }
    }, {
      key: "parentKey",
      get: function get() {
        return this.listKey || this.key;
      }
    }]);
  }();
  var methods = {
    findParent: findParent,
    find: find$1,
    getFunctionParent: getFunctionParent,
    getStatementParent: getStatementParent,
    getEarliestCommonAncestorFrom: getEarliestCommonAncestorFrom,
    getDeepestCommonAncestorFrom: getDeepestCommonAncestorFrom,
    getAncestry: getAncestry,
    isAncestor: isAncestor,
    isDescendant: isDescendant,
    inType: inType,
    getTypeAnnotation: getTypeAnnotation,
    isBaseType: isBaseType,
    couldBeBaseType: couldBeBaseType,
    baseTypeStrictlyMatches: baseTypeStrictlyMatches,
    isGenericType: isGenericType,
    replaceWithMultiple: replaceWithMultiple,
    replaceWithSourceString: replaceWithSourceString,
    replaceWith: replaceWith,
    replaceExpressionWithStatements: replaceExpressionWithStatements,
    replaceInline: replaceInline,
    evaluateTruthy: evaluateTruthy,
    evaluate: evaluate,
    toComputedKey: toComputedKey$1,
    ensureBlock: ensureBlock,
    unwrapFunctionEnvironment: unwrapFunctionEnvironment,
    arrowFunctionToExpression: arrowFunctionToExpression,
    splitExportDeclaration: splitExportDeclaration,
    ensureFunctionName: ensureFunctionName,
    matchesPattern: matchesPattern,
    isStatic: isStatic,
    isNodeType: isNodeType,
    canHaveVariableDeclarationOrExpression: canHaveVariableDeclarationOrExpression,
    canSwapBetweenExpressionAndStatement: canSwapBetweenExpressionAndStatement,
    isCompletionRecord: isCompletionRecord,
    isStatementOrBlock: isStatementOrBlock,
    referencesImport: referencesImport,
    getSource: getSource$1,
    willIMaybeExecuteBefore: willIMaybeExecuteBefore,
    _guessExecutionStatusRelativeTo: _guessExecutionStatusRelativeTo,
    resolve: resolve$3,
    isConstantExpression: isConstantExpression,
    isInStrictMode: isInStrictMode,
    isDenylisted: isDenylisted,
    visit: visit$1,
    skip: skip,
    skipKey: skipKey,
    stop: stop,
    setContext: setContext,
    requeue: requeue,
    requeueComputedKeyAndDecorators: requeueComputedKeyAndDecorators,
    remove: remove,
    insertBefore: insertBefore,
    insertAfter: insertAfter,
    unshiftContainer: unshiftContainer,
    pushContainer: pushContainer,
    getOpposite: getOpposite,
    getCompletionRecords: getCompletionRecords,
    getSibling: getSibling,
    getPrevSibling: getPrevSibling,
    getNextSibling: getNextSibling,
    getAllNextSiblings: getAllNextSiblings,
    getAllPrevSiblings: getAllPrevSiblings,
    get: get$1,
    getAssignmentIdentifiers: getAssignmentIdentifiers,
    getBindingIdentifiers: getBindingIdentifiers,
    getOuterBindingIdentifiers: getOuterBindingIdentifiers,
    getBindingIdentifierPaths: getBindingIdentifierPaths,
    getOuterBindingIdentifierPaths: getOuterBindingIdentifierPaths,
    shareCommentsWithSiblings: shareCommentsWithSiblings,
    addComment: addComment$1,
    addComments: addComments
  };
  Object.assign(NodePath_Final.prototype, methods);
  {
    NodePath_Final.prototype.arrowFunctionToShadowed = NodePath_conversion[String("arrowFunctionToShadowed")];
    Object.assign(NodePath_Final.prototype, {
      has: NodePath_introspection[String("has")],
      is: NodePath_introspection[String("is")],
      isnt: NodePath_introspection[String("isnt")],
      equals: NodePath_introspection[String("equals")],
      hoist: NodePath_modification[String("hoist")],
      updateSiblingKeys: updateSiblingKeys,
      call: call,
      isBlacklisted: NodePath_context[String("isBlacklisted")],
      setScope: setScope,
      resync: resync,
      popContext: popContext,
      pushContext: pushContext,
      setup: setup,
      setKey: setKey
    });
  }
  {
    NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeTo;
    NodePath_Final.prototype._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeTo;
    Object.assign(NodePath_Final.prototype, {
      _getTypeAnnotation: _getTypeAnnotation,
      _replaceWith: _replaceWith,
      _resolve: _resolve,
      _call: _call,
      _resyncParent: _resyncParent,
      _resyncKey: _resyncKey,
      _resyncList: _resyncList,
      _resyncRemoved: _resyncRemoved,
      _getQueueContexts: _getQueueContexts,
      _removeFromScope: _removeFromScope,
      _callRemovalHooks: _callRemovalHooks,
      _remove: _remove,
      _markRemoved: _markRemoved,
      _assertUnremoved: _assertUnremoved,
      _containerInsert: _containerInsert,
      _containerInsertBefore: _containerInsertBefore,
      _containerInsertAfter: _containerInsertAfter,
      _verifyNodeList: _verifyNodeList,
      _getKey: _getKey,
      _getPattern: _getPattern
    });
  }
  var _loop = function _loop() {
    var type = _step.value;
    var typeKey = "is" + type;
    var fn = t$4[typeKey];
    NodePath_Final.prototype[typeKey] = function (opts) {
      return fn(this.node, opts);
    };
    NodePath_Final.prototype["assert" + type] = function (opts) {
      if (!fn(this.node, opts)) {
        throw new TypeError("Expected node path of type " + type);
      }
    };
  };
  for (var _iterator = _createForOfIteratorHelperLoose(TYPES$1), _step; !(_step = _iterator()).done;) {
    _loop();
  }
  Object.assign(NodePath_Final.prototype, NodePath_virtual_types_validator);
  for (var _i = 0, _arr = Object.keys(virtualTypes); _i < _arr.length; _i++) {
    var type = _arr[_i];
    if (type[0] === "_") continue;
    if (!TYPES$1.includes(type)) TYPES$1.push(type);
  }

  var VISITOR_KEYS$2 = VISITOR_KEYS$5;
  var TraversalContext = function () {
    function TraversalContext(scope, opts, state, parentPath) {
      this.queue = null;
      this.priorityQueue = null;
      this.parentPath = parentPath;
      this.scope = scope;
      this.state = state;
      this.opts = opts;
    }
    var _proto = TraversalContext.prototype;
    _proto.shouldVisit = function shouldVisit(node) {
      var opts = this.opts;
      if (opts.enter || opts.exit) return true;
      if (opts[node.type]) return true;
      var keys = VISITOR_KEYS$2[node.type];
      if (!(keys != null && keys.length)) return false;
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        if (node[key]) {
          return true;
        }
      }
      return false;
    };
    _proto.create = function create(node, container, key, listKey) {
      return NodePath_Final.get({
        parentPath: this.parentPath,
        parent: node,
        container: container,
        key: key,
        listKey: listKey
      });
    };
    _proto.maybeQueue = function maybeQueue(path, notPriority) {
      if (this.queue) {
        if (notPriority) {
          this.queue.push(path);
        } else {
          this.priorityQueue.push(path);
        }
      }
    };
    _proto.visitMultiple = function visitMultiple(container, parent, listKey) {
      if (container.length === 0) return false;
      var queue = [];
      for (var key = 0; key < container.length; key++) {
        var node = container[key];
        if (node && this.shouldVisit(node)) {
          queue.push(this.create(parent, container, key, listKey));
        }
      }
      return this.visitQueue(queue);
    };
    _proto.visitSingle = function visitSingle(node, key) {
      if (this.shouldVisit(node[key])) {
        return this.visitQueue([this.create(node, node, key)]);
      } else {
        return false;
      }
    };
    _proto.visitQueue = function visitQueue(queue) {
      this.queue = queue;
      this.priorityQueue = [];
      var visited = new WeakSet();
      var stop = false;
      var visitIndex = 0;
      for (; visitIndex < queue.length;) {
        var path = queue[visitIndex];
        visitIndex++;
        resync.call(path);
        if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) {
          pushContext.call(path, this);
        }
        if (path.key === null) continue;
        var node = path.node;
        if (visited.has(node)) continue;
        if (node) visited.add(node);
        if (path.visit()) {
          stop = true;
          break;
        }
        if (this.priorityQueue.length) {
          stop = this.visitQueue(this.priorityQueue);
          this.priorityQueue = [];
          this.queue = queue;
          if (stop) break;
        }
      }
      for (var i = 0; i < visitIndex; i++) {
        popContext.call(queue[i]);
      }
      this.queue = null;
      return stop;
    };
    _proto.visit = function visit(node, key) {
      var nodes = node[key];
      if (!nodes) return false;
      if (Array.isArray(nodes)) {
        return this.visitMultiple(nodes, node, key);
      } else {
        return this.visitSingle(node, key);
      }
    };
    return _createClass(TraversalContext);
  }();

  var VISITOR_KEYS$1 = VISITOR_KEYS$5;
  function traverseNode(node, opts, scope, state, path, skipKeys, visitSelf) {
    var keys = VISITOR_KEYS$1[node.type];
    if (!keys) return false;
    var context = new TraversalContext(scope, opts, state, path);
    if (visitSelf) {
      if (skipKeys != null && skipKeys[path.parentKey]) return false;
      return context.visitQueue([path]);
    }
    for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
      var key = _step.value;
      if (skipKeys != null && skipKeys[key]) continue;
      if (context.visit(node, key)) {
        return true;
      }
    }
    return false;
  }

  function call(key) {
    var opts = this.opts;
    this.debug(key);
    if (this.node) {
      if (_call.call(this, opts[key])) return true;
    }
    if (this.node) {
      var _opts$this$node$type;
      return _call.call(this, (_opts$this$node$type = opts[this.node.type]) == null ? void 0 : _opts$this$node$type[key]);
    }
    return false;
  }
  function _call(fns) {
    if (!fns) return false;
    for (var _iterator = _createForOfIteratorHelperLoose(fns), _step; !(_step = _iterator()).done;) {
      var fn = _step.value;
      if (!fn) continue;
      var node = this.node;
      if (!node) return true;
      var ret = fn.call(this.state, this, this.state);
      if (ret && typeof ret === "object" && typeof ret.then === "function") {
        throw new Error("You appear to be using a plugin with an async traversal visitor, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
      }
      if (ret) {
        throw new Error("Unexpected return value from visitor method " + fn);
      }
      if (this.node !== node) return true;
      if (this._traverseFlags > 0) return true;
    }
    return false;
  }
  function isDenylisted() {
    var _this$opts$denylist;
    var denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist;
    return denylist && denylist.indexOf(this.node.type) > -1;
  }
  {
    exports.isBlacklisted = isDenylisted;
  }
  function restoreContext(path, context) {
    if (path.context !== context) {
      path.context = context;
      path.state = context.state;
      path.opts = context.opts;
    }
  }
  function visit$1() {
    var _this$opts$shouldSkip, _this$opts;
    if (!this.node) {
      return false;
    }
    if (this.isDenylisted()) {
      return false;
    }
    if ((_this$opts$shouldSkip = (_this$opts = this.opts).shouldSkip) != null && _this$opts$shouldSkip.call(_this$opts, this)) {
      return false;
    }
    var currentContext = this.context;
    if (this.shouldSkip || call.call(this, "enter")) {
      this.debug("Skip...");
      return this.shouldStop;
    }
    restoreContext(this, currentContext);
    this.debug("Recursing into...");
    this.shouldStop = traverseNode(this.node, this.opts, this.scope, this.state, this, this.skipKeys);
    restoreContext(this, currentContext);
    call.call(this, "exit");
    return this.shouldStop;
  }
  function skip() {
    this.shouldSkip = true;
  }
  function skipKey(key) {
    if (this.skipKeys == null) {
      this.skipKeys = {};
    }
    this.skipKeys[key] = true;
  }
  function stop() {
    this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;
  }
  function setScope() {
    var _this$opts2, _this$scope;
    if ((_this$opts2 = this.opts) != null && _this$opts2.noScope) return;
    var path = this.parentPath;
    if ((this.key === "key" || this.listKey === "decorators") && path.isMethod() || this.key === "discriminant" && path.isSwitchStatement()) {
      path = path.parentPath;
    }
    var target;
    while (path && !target) {
      var _path$opts;
      if ((_path$opts = path.opts) != null && _path$opts.noScope) return;
      target = path.scope;
      path = path.parentPath;
    }
    this.scope = this.getScope(target);
    (_this$scope = this.scope) == null || _this$scope.init();
  }
  function setContext(context) {
    if (this.skipKeys != null) {
      this.skipKeys = {};
    }
    this._traverseFlags = 0;
    if (context) {
      this.context = context;
      this.state = context.state;
      this.opts = context.opts;
    }
    setScope.call(this);
    return this;
  }
  function resync() {
    if (this.removed) return;
    _resyncParent.call(this);
    _resyncList.call(this);
    _resyncKey.call(this);
  }
  function _resyncParent() {
    if (this.parentPath) {
      this.parent = this.parentPath.node;
    }
  }
  function _resyncKey() {
    if (!this.container) return;
    if (this.node === this.container[this.key]) {
      return;
    }
    if (Array.isArray(this.container)) {
      for (var i = 0; i < this.container.length; i++) {
        if (this.container[i] === this.node) {
          setKey.call(this, i);
          return;
        }
      }
    } else {
      for (var _i = 0, _Object$keys = Object.keys(this.container); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        if (this.container[key] === this.node) {
          setKey.call(this, key);
          return;
        }
      }
    }
    this.key = null;
  }
  function _resyncList() {
    if (!this.parent || !this.inList) return;
    var newContainer = this.parent[this.listKey];
    if (this.container === newContainer) return;
    this.container = newContainer || null;
  }
  function _resyncRemoved() {
    if (this.key == null || !this.container || this.container[this.key] !== this.node) {
      _markRemoved.call(this);
    }
  }
  function popContext() {
    this.contexts.pop();
    if (this.contexts.length > 0) {
      this.setContext(this.contexts[this.contexts.length - 1]);
    } else {
      this.setContext(undefined);
    }
  }
  function pushContext(context) {
    this.contexts.push(context);
    this.setContext(context);
  }
  function setup(parentPath, container, listKey, key) {
    this.listKey = listKey;
    this.container = container;
    this.parentPath = parentPath || this.parentPath;
    setKey.call(this, key);
  }
  function setKey(key) {
    var _this$node;
    this.key = key;
    this.node = this.container[this.key];
    this.type = (_this$node = this.node) == null ? void 0 : _this$node.type;
  }
  function requeue(pathToQueue) {
    if (pathToQueue === void 0) {
      pathToQueue = this;
    }
    if (pathToQueue.removed) return;
    var contexts = this.contexts;
    for (var _iterator2 = _createForOfIteratorHelperLoose(contexts), _step2; !(_step2 = _iterator2()).done;) {
      var context = _step2.value;
      context.maybeQueue(pathToQueue);
    }
  }
  function requeueComputedKeyAndDecorators() {
    var context = this.context,
      node = this.node;
    if (!isPrivate(node) && node.computed) {
      context.maybeQueue(this.get("key"));
    }
    if (node.decorators) {
      for (var _iterator3 = _createForOfIteratorHelperLoose(this.get("decorators")), _step3; !(_step3 = _iterator3()).done;) {
        var decorator = _step3.value;
        context.maybeQueue(decorator);
      }
    }
  }
  function _getQueueContexts() {
    var path = this;
    var contexts = this.contexts;
    while (!contexts.length) {
      path = path.parentPath;
      if (!path) break;
      contexts = path.contexts;
    }
    return contexts;
  }

  var Hub = function () {
    function Hub() {}
    var _proto = Hub.prototype;
    _proto.getCode = function getCode() {};
    _proto.getScope = function getScope() {};
    _proto.addHelper = function addHelper() {
      throw new Error("Helpers are not supported by the default hub.");
    };
    _proto.buildError = function buildError(node, msg, Error) {
      if (Error === void 0) {
        Error = TypeError;
      }
      return new Error(msg);
    };
    return _createClass(Hub);
  }();

  var VISITOR_KEYS = VISITOR_KEYS$5,
    removeProperties = removeProperties$1,
    traverseFast$1 = traverseFast$2;
  function traverse(parent, opts, scope, state, parentPath, visitSelf) {
    if (opts === void 0) {
      opts = {};
    }
    if (!parent) return;
    if (!opts.noScope && !scope) {
      if (parent.type !== "Program" && parent.type !== "File") {
        throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + ("Instead of that you tried to traverse a " + parent.type + " node without ") + "passing scope and parentPath.");
      }
    }
    if (!parentPath && visitSelf) {
      throw new Error("visitSelf can only be used when providing a NodePath.");
    }
    if (!VISITOR_KEYS[parent.type]) {
      return;
    }
    explode$1(opts);
    traverseNode(parent, opts, scope, state, parentPath, null, visitSelf);
  }
  traverse.visitors = visitors$2;
  traverse.verify = verify$1;
  traverse.explode = explode$1;
  traverse.cheap = function (node, enter) {
    traverseFast$1(node, enter);
    return;
  };
  traverse.node = function (node, opts, scope, state, path, skipKeys) {
    traverseNode(node, opts, scope, state, path, skipKeys);
  };
  traverse.clearNode = function (node, opts) {
    removeProperties(node, opts);
  };
  traverse.removeProperties = function (tree, opts) {
    traverseFast$1(tree, traverse.clearNode, opts);
    return tree;
  };
  function hasDenylistedType(path, state) {
    if (path.node.type === state.type) {
      state.has = true;
      path.stop();
    }
  }
  traverse.hasType = function (tree, type, denylistTypes) {
    if (denylistTypes != null && denylistTypes.includes(tree.type)) return false;
    if (tree.type === type) return true;
    var state = {
      has: false,
      type: type
    };
    traverse(tree, {
      noScope: true,
      denylist: denylistTypes,
      enter: hasDenylistedType
    }, null, state);
    return state.has;
  };
  traverse.cache = cache$1;

  var index$1 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    Hub: Hub,
    NodePath: NodePath_Final,
    Scope: Scope,
    default: traverse,
    visitors: visitors$2
  });

  var semver$a = {exports: {}};

  var hasRequiredSemver$2;
  function requireSemver$2() {
    if (hasRequiredSemver$2) return semver$a.exports;
    hasRequiredSemver$2 = 1;
    (function (module, exports) {
      exports = module.exports = SemVer;
      var debug;
      if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
        debug = function debug() {
          var args = Array.prototype.slice.call(arguments, 0);
          args.unshift('SEMVER');
          console.log.apply(console, args);
        };
      } else {
        debug = function debug() {};
      }
      exports.SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
      var re = exports.re = [];
      var safeRe = exports.safeRe = [];
      var src = exports.src = [];
      var t = exports.tokens = {};
      var R = 0;
      function tok(n) {
        t[n] = R++;
      }
      var LETTERDASHNUMBER = '[a-zA-Z0-9-]';
      var safeRegexReplacements = [['\\s', 1], ['\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];
      function makeSafeRe(value) {
        for (var i = 0; i < safeRegexReplacements.length; i++) {
          var token = safeRegexReplacements[i][0];
          var max = safeRegexReplacements[i][1];
          value = value.split(token + '*').join(token + '{0,' + max + '}').split(token + '+').join(token + '{1,' + max + '}');
        }
        return value;
      }
      tok('NUMERICIDENTIFIER');
      src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
      tok('NUMERICIDENTIFIERLOOSE');
      src[t.NUMERICIDENTIFIERLOOSE] = '\\d+';
      tok('NONNUMERICIDENTIFIER');
      src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*';
      tok('MAINVERSION');
      src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
      tok('MAINVERSIONLOOSE');
      src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
      tok('PRERELEASEIDENTIFIER');
      src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASEIDENTIFIERLOOSE');
      src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASE');
      src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
      tok('PRERELEASELOOSE');
      src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
      tok('BUILDIDENTIFIER');
      src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+';
      tok('BUILD');
      src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
      tok('FULL');
      tok('FULLPLAIN');
      src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
      src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
      tok('LOOSEPLAIN');
      src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
      tok('LOOSE');
      src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
      tok('GTLT');
      src[t.GTLT] = '((?:<|>)?=?)';
      tok('XRANGEIDENTIFIERLOOSE');
      src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
      tok('XRANGEIDENTIFIER');
      src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
      tok('XRANGEPLAIN');
      src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGEPLAINLOOSE');
      src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGE');
      src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
      tok('XRANGELOOSE');
      src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COERCE');
      src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
      tok('COERCERTL');
      re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
      safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g');
      tok('LONETILDE');
      src[t.LONETILDE] = '(?:~>?)';
      tok('TILDETRIM');
      src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
      re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
      safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g');
      var tildeTrimReplace = '$1~';
      tok('TILDE');
      src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
      tok('TILDELOOSE');
      src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('LONECARET');
      src[t.LONECARET] = '(?:\\^)';
      tok('CARETTRIM');
      src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
      re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
      safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g');
      var caretTrimReplace = '$1^';
      tok('CARET');
      src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
      tok('CARETLOOSE');
      src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COMPARATORLOOSE');
      src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
      tok('COMPARATOR');
      src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
      tok('COMPARATORTRIM');
      src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
      re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
      safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g');
      var comparatorTrimReplace = '$1$2$3';
      tok('HYPHENRANGE');
      src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
      tok('HYPHENRANGELOOSE');
      src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
      tok('STAR');
      src[t.STAR] = '(<|>)?=?\\s*\\*';
      for (var i = 0; i < R; i++) {
        debug(i, src[i]);
        if (!re[i]) {
          re[i] = new RegExp(src[i]);
          safeRe[i] = new RegExp(makeSafeRe(src[i]));
        }
      }
      exports.parse = parse;
      function parse(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      }
      exports.valid = valid;
      function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      }
      exports.clean = clean;
      function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      }
      exports.SemVer = SemVer;
      function SemVer(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          if (version.loose === options.loose) {
            return version;
          } else {
            version = version.version;
          }
        } else if (typeof version !== 'string') {
          throw new TypeError('Invalid Version: ' + version);
        }
        if (version.length > MAX_LENGTH) {
          throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
        }
        if (!(this instanceof SemVer)) {
          return new SemVer(version, options);
        }
        debug('SemVer', version, options);
        this.options = options;
        this.loose = !!options.loose;
        var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]);
        if (!m) {
          throw new TypeError('Invalid Version: ' + version);
        }
        this.raw = version;
        this.major = +m[1];
        this.minor = +m[2];
        this.patch = +m[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError('Invalid major version');
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError('Invalid minor version');
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError('Invalid patch version');
        }
        if (!m[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m[4].split('.').map(function (id) {
            if (/^[0-9]+$/.test(id)) {
              var num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m[5] ? m[5].split('.') : [];
        this.format();
      }
      SemVer.prototype.format = function () {
        this.version = this.major + '.' + this.minor + '.' + this.patch;
        if (this.prerelease.length) {
          this.version += '-' + this.prerelease.join('.');
        }
        return this.version;
      };
      SemVer.prototype.toString = function () {
        return this.version;
      };
      SemVer.prototype.compare = function (other) {
        debug('SemVer.compare', this.version, this.options, other);
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return this.compareMain(other) || this.comparePre(other);
      };
      SemVer.prototype.compareMain = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      };
      SemVer.prototype.comparePre = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        var i = 0;
        do {
          var a = this.prerelease[i];
          var b = other.prerelease[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.compareBuild = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        var i = 0;
        do {
          var a = this.build[i];
          var b = other.build[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.inc = function (release, identifier) {
        switch (release) {
          case 'premajor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc('pre', identifier);
            break;
          case 'preminor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc('pre', identifier);
            break;
          case 'prepatch':
            this.prerelease.length = 0;
            this.inc('patch', identifier);
            this.inc('pre', identifier);
            break;
          case 'prerelease':
            if (this.prerelease.length === 0) {
              this.inc('patch', identifier);
            }
            this.inc('pre', identifier);
            break;
          case 'major':
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'minor':
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'patch':
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          case 'pre':
            if (this.prerelease.length === 0) {
              this.prerelease = [0];
            } else {
              var i = this.prerelease.length;
              while (--i >= 0) {
                if (typeof this.prerelease[i] === 'number') {
                  this.prerelease[i]++;
                  i = -2;
                }
              }
              if (i === -1) {
                this.prerelease.push(0);
              }
            }
            if (identifier) {
              if (this.prerelease[0] === identifier) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = [identifier, 0];
                }
              } else {
                this.prerelease = [identifier, 0];
              }
            }
            break;
          default:
            throw new Error('invalid increment argument: ' + release);
        }
        this.format();
        this.raw = this.version;
        return this;
      };
      exports.inc = inc;
      function inc(version, release, loose, identifier) {
        if (typeof loose === 'string') {
          identifier = loose;
          loose = undefined;
        }
        try {
          return new SemVer(version, loose).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      }
      exports.diff = diff;
      function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var prefix = '';
          if (v1.prerelease.length || v2.prerelease.length) {
            prefix = 'pre';
            var defaultResult = 'prerelease';
          }
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      }
      exports.compareIdentifiers = compareIdentifiers;
      var numeric = /^[0-9]+$/;
      function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      }
      exports.rcompareIdentifiers = rcompareIdentifiers;
      function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      }
      exports.major = major;
      function major(a, loose) {
        return new SemVer(a, loose).major;
      }
      exports.minor = minor;
      function minor(a, loose) {
        return new SemVer(a, loose).minor;
      }
      exports.patch = patch;
      function patch(a, loose) {
        return new SemVer(a, loose).patch;
      }
      exports.compare = compare;
      function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      }
      exports.compareLoose = compareLoose;
      function compareLoose(a, b) {
        return compare(a, b, true);
      }
      exports.compareBuild = compareBuild;
      function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      }
      exports.rcompare = rcompare;
      function rcompare(a, b, loose) {
        return compare(b, a, loose);
      }
      exports.sort = sort;
      function sort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(a, b, loose);
        });
      }
      exports.rsort = rsort;
      function rsort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(b, a, loose);
        });
      }
      exports.gt = gt;
      function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      }
      exports.lt = lt;
      function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      }
      exports.eq = eq;
      function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      }
      exports.neq = neq;
      function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      }
      exports.gte = gte;
      function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      }
      exports.lte = lte;
      function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      }
      exports.cmp = cmp;
      function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError('Invalid operator: ' + op);
        }
      }
      exports.Comparator = Comparator;
      function Comparator(comp, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (comp instanceof Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        if (!(this instanceof Comparator)) {
          return new Comparator(comp, options);
        }
        comp = comp.trim().split(/\s+/).join(' ');
        debug('comparator', comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = '';
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug('comp', this);
      }
      var ANY = {};
      Comparator.prototype.parse = function (comp) {
        var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var m = comp.match(r);
        if (!m) {
          throw new TypeError('Invalid comparator: ' + comp);
        }
        this.operator = m[1] !== undefined ? m[1] : '';
        if (this.operator === '=') {
          this.operator = '';
        }
        if (!m[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m[2], this.options.loose);
        }
      };
      Comparator.prototype.toString = function () {
        return this.value;
      };
      Comparator.prototype.test = function (version) {
        debug('Comparator.test', version, this.options.loose);
        if (this.semver === ANY || version === ANY) {
          return true;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version, this.operator, this.semver, this.options);
      };
      Comparator.prototype.intersects = function (comp, options) {
        if (!(comp instanceof Comparator)) {
          throw new TypeError('a Comparator is required');
        }
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        var rangeTmp;
        if (this.operator === '') {
          if (this.value === '') {
            return true;
          }
          rangeTmp = new Range(comp.value, options);
          return satisfies(this.value, rangeTmp, options);
        } else if (comp.operator === '') {
          if (comp.value === '') {
            return true;
          }
          rangeTmp = new Range(this.value, options);
          return satisfies(comp.semver, rangeTmp, options);
        }
        var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
        var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
        var sameSemVer = this.semver.version === comp.semver.version;
        var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
        var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
        var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
        return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
      };
      exports.Range = Range;
      function Range(range, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (range instanceof Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          return new Range(range.value, options);
        }
        if (!(this instanceof Range)) {
          return new Range(range, options);
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range.trim().split(/\s+/).join(' ');
        this.set = this.raw.split('||').map(function (range) {
          return this.parseRange(range.trim());
        }, this).filter(function (c) {
          return c.length;
        });
        if (!this.set.length) {
          throw new TypeError('Invalid SemVer Range: ' + this.raw);
        }
        this.format();
      }
      Range.prototype.format = function () {
        this.range = this.set.map(function (comps) {
          return comps.join(' ').trim();
        }).join('||').trim();
        return this.range;
      };
      Range.prototype.toString = function () {
        return this.range;
      };
      Range.prototype.parseRange = function (range) {
        var loose = this.options.loose;
        var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE];
        range = range.replace(hr, hyphenReplace);
        debug('hyphen replace', range);
        range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace);
        debug('comparator trim', range, safeRe[t.COMPARATORTRIM]);
        range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace);
        range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace);
        range = range.split(/\s+/).join(' ');
        var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var set = range.split(' ').map(function (comp) {
          return parseComparator(comp, this.options);
        }, this).join(' ').split(/\s+/);
        if (this.options.loose) {
          set = set.filter(function (comp) {
            return !!comp.match(compRe);
          });
        }
        set = set.map(function (comp) {
          return new Comparator(comp, this.options);
        }, this);
        return set;
      };
      Range.prototype.intersects = function (range, options) {
        if (!(range instanceof Range)) {
          throw new TypeError('a Range is required');
        }
        return this.set.some(function (thisComparators) {
          return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
            return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
              return rangeComparators.every(function (rangeComparator) {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      };
      function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      }
      exports.toComparators = toComparators;
      function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      }
      function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      }
      function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      }
      function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      }
      function replaceTilde(comp, options) {
        var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
          } else {
            ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
          }
          debug('tilde return', ret);
          return ret;
        });
      }
      function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      }
      function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            if (M === '0') {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
            }
          }
          debug('caret return', ret);
          return ret;
        });
      }
      function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      }
      function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            ret = gtlt + M + '.' + m + '.' + p + pr;
          } else if (xm) {
            ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
          } else if (xp) {
            ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
          }
          debug('xRange return', ret);
          return ret;
        });
      }
      function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(safeRe[t.STAR], '');
      }
      function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
        if (isX(fM)) {
          from = '';
        } else if (isX(fm)) {
          from = '>=' + fM + '.0.0';
        } else if (isX(fp)) {
          from = '>=' + fM + '.' + fm + '.0';
        } else {
          from = '>=' + from;
        }
        if (isX(tM)) {
          to = '';
        } else if (isX(tm)) {
          to = '<' + (+tM + 1) + '.0.0';
        } else if (isX(tp)) {
          to = '<' + tM + '.' + (+tm + 1) + '.0';
        } else if (tpr) {
          to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
        } else {
          to = '<=' + to;
        }
        return (from + ' ' + to).trim();
      }
      Range.prototype.test = function (version) {
        if (!version) {
          return false;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        for (var i = 0; i < this.set.length; i++) {
          if (testSet(this.set[i], version, this.options)) {
            return true;
          }
        }
        return false;
      };
      function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (i = 0; i < set.length; i++) {
            debug(set[i].semver);
            if (set[i].semver === ANY) {
              continue;
            }
            if (set[i].semver.prerelease.length > 0) {
              var allowed = set[i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      }
      exports.satisfies = satisfies;
      function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      }
      exports.maxSatisfying = maxSatisfying;
      function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      }
      exports.minSatisfying = minSatisfying;
      function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      }
      exports.minVersion = minVersion;
      function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!minver || gt(minver, compver)) {
                  minver = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error('Unexpected operation: ' + comparator.operator);
            }
          });
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      }
      exports.validRange = validRange;
      function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      }
      exports.ltr = ltr;
      function ltr(version, range, options) {
        return outside(version, range, '<', options);
      }
      exports.gtr = gtr;
      function gtr(version, range, options) {
        return outside(version, range, '>', options);
      }
      exports.outside = outside;
      function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return false;
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return false;
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return false;
          }
        }
        return true;
      }
      exports.prerelease = prerelease;
      function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      }
      exports.intersects = intersects;
      function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      }
      exports.coerce = coerce;
      function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(safeRe[t.COERCE]);
        } else {
          var next;
          while ((next = safeRe[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          safeRe[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) {
          return null;
        }
        return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
      }
    })(semver$a, semver$a.exports);
    return semver$a.exports;
  }

  function bool$7(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$9 = bool$7(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  var inherits$1;
  if (typeof Object.create === 'function'){
    inherits$1 = function inherits(ctor, superCtor) {
      // implementation from standard node.js 'util' module
      ctor.super_ = superCtor;
      ctor.prototype = Object.create(superCtor.prototype, {
        constructor: {
          value: ctor,
          enumerable: false,
          writable: true,
          configurable: true
        }
      });
    };
  } else {
    inherits$1 = function inherits(ctor, superCtor) {
      ctor.super_ = superCtor;
      var TempCtor = function () {};
      TempCtor.prototype = superCtor.prototype;
      ctor.prototype = new TempCtor();
      ctor.prototype.constructor = ctor;
    };
  }

  var getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||
    function getOwnPropertyDescriptors(obj) {
      var keys = Object.keys(obj);
      var descriptors = {};
      for (var i = 0; i < keys.length; i++) {
        descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);
      }
      return descriptors;
    };

  var formatRegExp = /%[sdj%]/g;
  function format(f) {
    if (!isString(f)) {
      var objects = [];
      for (var i = 0; i < arguments.length; i++) {
        objects.push(inspect$1(arguments[i]));
      }
      return objects.join(' ');
    }

    var i = 1;
    var args = arguments;
    var len = args.length;
    var str = String(f).replace(formatRegExp, function(x) {
      if (x === '%%') return '%';
      if (i >= len) return x;
      switch (x) {
        case '%s': return String(args[i++]);
        case '%d': return Number(args[i++]);
        case '%j':
          try {
            return JSON.stringify(args[i++]);
          } catch (_) {
            return '[Circular]';
          }
        default:
          return x;
      }
    });
    for (var x = args[i]; i < len; x = args[++i]) {
      if (isNull(x) || !isObject(x)) {
        str += ' ' + x;
      } else {
        str += ' ' + inspect$1(x);
      }
    }
    return str;
  }

  // Mark that a method should not be used.
  // Returns a modified function which warns once by default.
  // If --no-deprecation is set, then it is a no-op.
  function deprecate(fn, msg) {
    // Allow for deprecating things in the process of starting up.
    if (isUndefined(global$1.process)) {
      return function() {
        return deprecate(fn, msg).apply(this, arguments);
      };
    }

    if (browser$1$1.noDeprecation === true) {
      return fn;
    }

    var warned = false;
    function deprecated() {
      if (!warned) {
        if (browser$1$1.throwDeprecation) {
          throw new Error(msg);
        } else if (browser$1$1.traceDeprecation) {
          console.trace(msg);
        } else {
          console.error(msg);
        }
        warned = true;
      }
      return fn.apply(this, arguments);
    }

    return deprecated;
  }

  var debugs = {};
  var debugEnviron;
  function debuglog(set) {
    if (isUndefined(debugEnviron))
      debugEnviron = browser$1$1.env.NODE_DEBUG || '';
    set = set.toUpperCase();
    if (!debugs[set]) {
      if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
        var pid = 0;
        debugs[set] = function() {
          var msg = format.apply(null, arguments);
          console.error('%s %d: %s', set, pid, msg);
        };
      } else {
        debugs[set] = function() {};
      }
    }
    return debugs[set];
  }

  /**
   * Echos the value of a value. Trys to print the value out
   * in the best way possible given the different types.
   *
   * @param {Object} obj The object to print out.
   * @param {Object} opts Optional options object that alters the output.
   */
  /* legacy: obj, showHidden, depth, colors*/
  function inspect$1(obj, opts) {
    // default options
    var ctx = {
      seen: [],
      stylize: stylizeNoColor
    };
    // legacy...
    if (arguments.length >= 3) ctx.depth = arguments[2];
    if (arguments.length >= 4) ctx.colors = arguments[3];
    if (isBoolean(opts)) {
      // legacy...
      ctx.showHidden = opts;
    } else if (opts) {
      // got an "options" object
      _extend(ctx, opts);
    }
    // set default options
    if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
    if (isUndefined(ctx.depth)) ctx.depth = 2;
    if (isUndefined(ctx.colors)) ctx.colors = false;
    if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
    if (ctx.colors) ctx.stylize = stylizeWithColor;
    return formatValue(ctx, obj, ctx.depth);
  }

  // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
  inspect$1.colors = {
    'bold' : [1, 22],
    'italic' : [3, 23],
    'underline' : [4, 24],
    'inverse' : [7, 27],
    'white' : [37, 39],
    'grey' : [90, 39],
    'black' : [30, 39],
    'blue' : [34, 39],
    'cyan' : [36, 39],
    'green' : [32, 39],
    'magenta' : [35, 39],
    'red' : [31, 39],
    'yellow' : [33, 39]
  };

  // Don't use 'blue' not visible on cmd.exe
  inspect$1.styles = {
    'special': 'cyan',
    'number': 'yellow',
    'boolean': 'yellow',
    'undefined': 'grey',
    'null': 'bold',
    'string': 'green',
    'date': 'magenta',
    // "name": intentionally not styling
    'regexp': 'red'
  };


  function stylizeWithColor(str, styleType) {
    var style = inspect$1.styles[styleType];

    if (style) {
      return '\u001b[' + inspect$1.colors[style][0] + 'm' + str +
             '\u001b[' + inspect$1.colors[style][1] + 'm';
    } else {
      return str;
    }
  }


  function stylizeNoColor(str, styleType) {
    return str;
  }


  function arrayToHash(array) {
    var hash = {};

    array.forEach(function(val, idx) {
      hash[val] = true;
    });

    return hash;
  }


  function formatValue(ctx, value, recurseTimes) {
    // Provide a hook for user-specified inspect functions.
    // Check that value is an object with an inspect function on it
    if (ctx.customInspect &&
        value &&
        isFunction(value.inspect) &&
        // Filter out the util module, it's inspect function is special
        value.inspect !== inspect$1 &&
        // Also filter out any prototype objects using the circular check.
        !(value.constructor && value.constructor.prototype === value)) {
      var ret = value.inspect(recurseTimes, ctx);
      if (!isString(ret)) {
        ret = formatValue(ctx, ret, recurseTimes);
      }
      return ret;
    }

    // Primitive types cannot have properties
    var primitive = formatPrimitive(ctx, value);
    if (primitive) {
      return primitive;
    }

    // Look up the keys of the object.
    var keys = Object.keys(value);
    var visibleKeys = arrayToHash(keys);

    if (ctx.showHidden) {
      keys = Object.getOwnPropertyNames(value);
    }

    // IE doesn't make error fields non-enumerable
    // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
    if (isError(value)
        && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
      return formatError(value);
    }

    // Some type of object without properties can be shortcutted.
    if (keys.length === 0) {
      if (isFunction(value)) {
        var name = value.name ? ': ' + value.name : '';
        return ctx.stylize('[Function' + name + ']', 'special');
      }
      if (isRegExp(value)) {
        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
      }
      if (isDate(value)) {
        return ctx.stylize(Date.prototype.toString.call(value), 'date');
      }
      if (isError(value)) {
        return formatError(value);
      }
    }

    var base = '', array = false, braces = ['{', '}'];

    // Make Array say that they are Array
    if (isArray$1(value)) {
      array = true;
      braces = ['[', ']'];
    }

    // Make functions say that they are functions
    if (isFunction(value)) {
      var n = value.name ? ': ' + value.name : '';
      base = ' [Function' + n + ']';
    }

    // Make RegExps say that they are RegExps
    if (isRegExp(value)) {
      base = ' ' + RegExp.prototype.toString.call(value);
    }

    // Make dates with properties first say the date
    if (isDate(value)) {
      base = ' ' + Date.prototype.toUTCString.call(value);
    }

    // Make error with message first say the error
    if (isError(value)) {
      base = ' ' + formatError(value);
    }

    if (keys.length === 0 && (!array || value.length == 0)) {
      return braces[0] + base + braces[1];
    }

    if (recurseTimes < 0) {
      if (isRegExp(value)) {
        return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
      } else {
        return ctx.stylize('[Object]', 'special');
      }
    }

    ctx.seen.push(value);

    var output;
    if (array) {
      output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
    } else {
      output = keys.map(function(key) {
        return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
      });
    }

    ctx.seen.pop();

    return reduceToSingleString(output, base, braces);
  }


  function formatPrimitive(ctx, value) {
    if (isUndefined(value))
      return ctx.stylize('undefined', 'undefined');
    if (isString(value)) {
      var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
                                               .replace(/'/g, "\\'")
                                               .replace(/\\"/g, '"') + '\'';
      return ctx.stylize(simple, 'string');
    }
    if (isNumber(value))
      return ctx.stylize('' + value, 'number');
    if (isBoolean(value))
      return ctx.stylize('' + value, 'boolean');
    // For some reason typeof null is "object", so special case here.
    if (isNull(value))
      return ctx.stylize('null', 'null');
  }


  function formatError(value) {
    return '[' + Error.prototype.toString.call(value) + ']';
  }


  function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
    var output = [];
    for (var i = 0, l = value.length; i < l; ++i) {
      if (hasOwnProperty$1(value, String(i))) {
        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
            String(i), true));
      } else {
        output.push('');
      }
    }
    keys.forEach(function(key) {
      if (!key.match(/^\d+$/)) {
        output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
            key, true));
      }
    });
    return output;
  }


  function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
    var name, str, desc;
    desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
    if (desc.get) {
      if (desc.set) {
        str = ctx.stylize('[Getter/Setter]', 'special');
      } else {
        str = ctx.stylize('[Getter]', 'special');
      }
    } else {
      if (desc.set) {
        str = ctx.stylize('[Setter]', 'special');
      }
    }
    if (!hasOwnProperty$1(visibleKeys, key)) {
      name = '[' + key + ']';
    }
    if (!str) {
      if (ctx.seen.indexOf(desc.value) < 0) {
        if (isNull(recurseTimes)) {
          str = formatValue(ctx, desc.value, null);
        } else {
          str = formatValue(ctx, desc.value, recurseTimes - 1);
        }
        if (str.indexOf('\n') > -1) {
          if (array) {
            str = str.split('\n').map(function(line) {
              return '  ' + line;
            }).join('\n').substr(2);
          } else {
            str = '\n' + str.split('\n').map(function(line) {
              return '   ' + line;
            }).join('\n');
          }
        }
      } else {
        str = ctx.stylize('[Circular]', 'special');
      }
    }
    if (isUndefined(name)) {
      if (array && key.match(/^\d+$/)) {
        return str;
      }
      name = JSON.stringify('' + key);
      if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
        name = name.substr(1, name.length - 2);
        name = ctx.stylize(name, 'name');
      } else {
        name = name.replace(/'/g, "\\'")
                   .replace(/\\"/g, '"')
                   .replace(/(^"|"$)/g, "'");
        name = ctx.stylize(name, 'string');
      }
    }

    return name + ': ' + str;
  }


  function reduceToSingleString(output, base, braces) {
    var length = output.reduce(function(prev, cur) {
      if (cur.indexOf('\n') >= 0) ;
      return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
    }, 0);

    if (length > 60) {
      return braces[0] +
             (base === '' ? '' : base + '\n ') +
             ' ' +
             output.join(',\n  ') +
             ' ' +
             braces[1];
    }

    return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
  }


  // NOTE: These type checking functions intentionally don't use `instanceof`
  // because it is fragile and can be easily faked with `Object.create()`.
  function isArray$1(ar) {
    return Array.isArray(ar);
  }

  function isBoolean(arg) {
    return typeof arg === 'boolean';
  }

  function isNull(arg) {
    return arg === null;
  }

  function isNullOrUndefined(arg) {
    return arg == null;
  }

  function isNumber(arg) {
    return typeof arg === 'number';
  }

  function isString(arg) {
    return typeof arg === 'string';
  }

  function isSymbol(arg) {
    return typeof arg === 'symbol';
  }

  function isUndefined(arg) {
    return arg === void 0;
  }

  function isRegExp(re) {
    return isObject(re) && objectToString(re) === '[object RegExp]';
  }

  function isObject(arg) {
    return typeof arg === 'object' && arg !== null;
  }

  function isDate(d) {
    return isObject(d) && objectToString(d) === '[object Date]';
  }

  function isError(e) {
    return isObject(e) &&
        (objectToString(e) === '[object Error]' || e instanceof Error);
  }

  function isFunction(arg) {
    return typeof arg === 'function';
  }

  function isPrimitive(arg) {
    return arg === null ||
           typeof arg === 'boolean' ||
           typeof arg === 'number' ||
           typeof arg === 'string' ||
           typeof arg === 'symbol' ||  // ES6 symbol
           typeof arg === 'undefined';
  }

  function isBuffer(maybeBuf) {
    return Buffer$1.isBuffer(maybeBuf);
  }

  function objectToString(o) {
    return Object.prototype.toString.call(o);
  }


  function pad(n) {
    return n < 10 ? '0' + n.toString(10) : n.toString(10);
  }


  var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
                'Oct', 'Nov', 'Dec'];

  // 26 Feb 16:19:34
  function timestamp() {
    var d = new Date();
    var time = [pad(d.getHours()),
                pad(d.getMinutes()),
                pad(d.getSeconds())].join(':');
    return [d.getDate(), months[d.getMonth()], time].join(' ');
  }


  // log is just a thin wrapper to console.log that prepends a timestamp
  function log() {
    console.log('%s - %s', timestamp(), format.apply(null, arguments));
  }

  function _extend(origin, add) {
    // Don't do anything if add isn't an object
    if (!add || !isObject(add)) return origin;

    var keys = Object.keys(add);
    var i = keys.length;
    while (i--) {
      origin[keys[i]] = add[keys[i]];
    }
    return origin;
  }
  function hasOwnProperty$1(obj, prop) {
    return Object.prototype.hasOwnProperty.call(obj, prop);
  }

  var kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;

  function promisify(original) {
    if (typeof original !== 'function')
      throw new TypeError('The "original" argument must be of type Function');

    if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {
      var fn = original[kCustomPromisifiedSymbol];
      if (typeof fn !== 'function') {
        throw new TypeError('The "util.promisify.custom" argument must be of type Function');
      }
      Object.defineProperty(fn, kCustomPromisifiedSymbol, {
        value: fn, enumerable: false, writable: false, configurable: true
      });
      return fn;
    }

    function fn() {
      var promiseResolve, promiseReject;
      var promise = new Promise(function (resolve, reject) {
        promiseResolve = resolve;
        promiseReject = reject;
      });

      var args = [];
      for (var i = 0; i < arguments.length; i++) {
        args.push(arguments[i]);
      }
      args.push(function (err, value) {
        if (err) {
          promiseReject(err);
        } else {
          promiseResolve(value);
        }
      });

      try {
        original.apply(this, args);
      } catch (err) {
        promiseReject(err);
      }

      return promise;
    }

    Object.setPrototypeOf(fn, Object.getPrototypeOf(original));

    if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {
      value: fn, enumerable: false, writable: false, configurable: true
    });
    return Object.defineProperties(
      fn,
      getOwnPropertyDescriptors(original)
    );
  }

  promisify.custom = kCustomPromisifiedSymbol;

  function callbackifyOnRejected(reason, cb) {
    // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).
    // Because `null` is a special error value in callbacks which means "no error
    // occurred", we error-wrap so the callback consumer can distinguish between
    // "the promise rejected with null" or "the promise fulfilled with undefined".
    if (!reason) {
      var newReason = new Error('Promise was rejected with a falsy value');
      newReason.reason = reason;
      reason = newReason;
    }
    return cb(reason);
  }

  function callbackify(original) {
    if (typeof original !== 'function') {
      throw new TypeError('The "original" argument must be of type Function');
    }

    // We DO NOT return the promise as it gives the user a false sense that
    // the promise is actually somehow related to the callback's execution
    // and that the callback throwing will reject the promise.
    function callbackified() {
      var args = [];
      for (var i = 0; i < arguments.length; i++) {
        args.push(arguments[i]);
      }

      var maybeCb = args.pop();
      if (typeof maybeCb !== 'function') {
        throw new TypeError('The last argument must be of type Function');
      }
      var self = this;
      var cb = function() {
        return maybeCb.apply(self, arguments);
      };
      // In true node style we process the callback on `nextTick` with all the
      // implications (stack, `uncaughtException`, `async_hooks`)
      original.apply(this, args)
        .then(function(ret) { browser$1$1.nextTick(cb.bind(null, null, ret)); },
          function(rej) { browser$1$1.nextTick(callbackifyOnRejected.bind(null, rej, cb)); });
    }

    Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));
    Object.defineProperties(callbackified, getOwnPropertyDescriptors(original));
    return callbackified;
  }

  var _polyfillNode_util = {
    inherits: inherits$1,
    _extend: _extend,
    log: log,
    isBuffer: isBuffer,
    isPrimitive: isPrimitive,
    isFunction: isFunction,
    isError: isError,
    isDate: isDate,
    isObject: isObject,
    isRegExp: isRegExp,
    isUndefined: isUndefined,
    isSymbol: isSymbol,
    isString: isString,
    isNumber: isNumber,
    isNullOrUndefined: isNullOrUndefined,
    isNull: isNull,
    isBoolean: isBoolean,
    isArray: isArray$1,
    inspect: inspect$1,
    deprecate: deprecate,
    format: format,
    debuglog: debuglog,
    promisify: promisify,
    callbackify: callbackify,
  };

  var _polyfillNode_util$1 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    _extend: _extend,
    callbackify: callbackify,
    debuglog: debuglog,
    default: _polyfillNode_util,
    deprecate: deprecate,
    format: format,
    inherits: inherits$1,
    inspect: inspect$1,
    isArray: isArray$1,
    isBoolean: isBoolean,
    isBuffer: isBuffer,
    isDate: isDate,
    isError: isError,
    isFunction: isFunction,
    isNull: isNull,
    isNullOrUndefined: isNullOrUndefined,
    isNumber: isNumber,
    isObject: isObject,
    isPrimitive: isPrimitive,
    isRegExp: isRegExp,
    isString: isString,
    isSymbol: isSymbol,
    isUndefined: isUndefined,
    log: log,
    promisify: promisify
  });

  function compare$3(a, b) {
    if (a === b) {
      return 0;
    }

    var x = a.length;
    var y = b.length;

    for (var i = 0, len = Math.min(x, y); i < len; ++i) {
      if (a[i] !== b[i]) {
        x = a[i];
        y = b[i];
        break;
      }
    }

    if (x < y) {
      return -1;
    }
    if (y < x) {
      return 1;
    }
    return 0;
  }
  var hasOwn = Object.prototype.hasOwnProperty;

  var objectKeys = Object.keys || function (obj) {
    var keys = [];
    for (var key in obj) {
      if (hasOwn.call(obj, key)) keys.push(key);
    }
    return keys;
  };
  var pSlice = Array.prototype.slice;
  var _functionsHaveNames;
  function functionsHaveNames() {
    if (typeof _functionsHaveNames !== 'undefined') {
      return _functionsHaveNames;
    }
    return _functionsHaveNames = (function () {
      return function foo() {}.name === 'foo';
    }());
  }
  function pToString (obj) {
    return Object.prototype.toString.call(obj);
  }
  function isView(arrbuf) {
    if (isBuffer$1(arrbuf)) {
      return false;
    }
    if (typeof global$1.ArrayBuffer !== 'function') {
      return false;
    }
    if (typeof ArrayBuffer.isView === 'function') {
      return ArrayBuffer.isView(arrbuf);
    }
    if (!arrbuf) {
      return false;
    }
    if (arrbuf instanceof DataView) {
      return true;
    }
    if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
      return true;
    }
    return false;
  }
  // 1. The assert module provides functions that throw
  // AssertionError's when particular conditions are not met. The
  // assert module must conform to the following interface.

  function assert(value, message) {
    if (!value) fail(value, true, message, '==', ok);
  }

  // 2. The AssertionError is defined in assert.
  // new assert.AssertionError({ message: message,
  //                             actual: actual,
  //                             expected: expected })

  var regex = /\s*function\s+([^\(\s]*)\s*/;
  // based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js
  function getName$1(func) {
    if (!isFunction(func)) {
      return;
    }
    if (functionsHaveNames()) {
      return func.name;
    }
    var str = func.toString();
    var match = str.match(regex);
    return match && match[1];
  }
  assert.AssertionError = AssertionError;
  function AssertionError(options) {
    this.name = 'AssertionError';
    this.actual = options.actual;
    this.expected = options.expected;
    this.operator = options.operator;
    if (options.message) {
      this.message = options.message;
      this.generatedMessage = false;
    } else {
      this.message = getMessage(this);
      this.generatedMessage = true;
    }
    var stackStartFunction = options.stackStartFunction || fail;
    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, stackStartFunction);
    } else {
      // non v8 browsers so we can have a stacktrace
      var err = new Error();
      if (err.stack) {
        var out = err.stack;

        // try to strip useless frames
        var fn_name = getName$1(stackStartFunction);
        var idx = out.indexOf('\n' + fn_name);
        if (idx >= 0) {
          // once we have located the function frame
          // we need to strip out everything before it (and its line)
          var next_line = out.indexOf('\n', idx + 1);
          out = out.substring(next_line + 1);
        }

        this.stack = out;
      }
    }
  }

  // assert.AssertionError instanceof Error
  inherits$1(AssertionError, Error);

  function truncate(s, n) {
    if (typeof s === 'string') {
      return s.length < n ? s : s.slice(0, n);
    } else {
      return s;
    }
  }
  function inspect(something) {
    if (functionsHaveNames() || !isFunction(something)) {
      return inspect$1(something);
    }
    var rawname = getName$1(something);
    var name = rawname ? ': ' + rawname : '';
    return '[Function' +  name + ']';
  }
  function getMessage(self) {
    return truncate(inspect(self.actual), 128) + ' ' +
           self.operator + ' ' +
           truncate(inspect(self.expected), 128);
  }

  // At present only the three keys mentioned above are used and
  // understood by the spec. Implementations or sub modules can pass
  // other keys to the AssertionError's constructor - they will be
  // ignored.

  // 3. All of the following functions must throw an AssertionError
  // when a corresponding condition is not met, with a message that
  // may be undefined if not provided.  All assertion methods provide
  // both the actual and expected values to the assertion error for
  // display purposes.

  function fail(actual, expected, message, operator, stackStartFunction) {
    throw new AssertionError({
      message: message,
      actual: actual,
      expected: expected,
      operator: operator,
      stackStartFunction: stackStartFunction
    });
  }

  // EXTENSION! allows for well behaved errors defined elsewhere.
  assert.fail = fail;

  // 4. Pure assertion tests whether a value is truthy, as determined
  // by !!guard.
  // assert.ok(guard, message_opt);
  // This statement is equivalent to assert.equal(true, !!guard,
  // message_opt);. To test strictly for the value true, use
  // assert.strictEqual(true, guard, message_opt);.

  function ok(value, message) {
    if (!value) fail(value, true, message, '==', ok);
  }
  assert.ok = ok;

  // 5. The equality assertion tests shallow, coercive equality with
  // ==.
  // assert.equal(actual, expected, message_opt);
  assert.equal = equal;
  function equal(actual, expected, message) {
    if (actual != expected) fail(actual, expected, message, '==', equal);
  }

  // 6. The non-equality assertion tests for whether two objects are not equal
  // with != assert.notEqual(actual, expected, message_opt);
  assert.notEqual = notEqual;
  function notEqual(actual, expected, message) {
    if (actual == expected) {
      fail(actual, expected, message, '!=', notEqual);
    }
  }

  // 7. The equivalence assertion tests a deep equality relation.
  // assert.deepEqual(actual, expected, message_opt);
  assert.deepEqual = deepEqual;
  function deepEqual(actual, expected, message) {
    if (!_deepEqual(actual, expected, false)) {
      fail(actual, expected, message, 'deepEqual', deepEqual);
    }
  }
  assert.deepStrictEqual = deepStrictEqual;
  function deepStrictEqual(actual, expected, message) {
    if (!_deepEqual(actual, expected, true)) {
      fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual);
    }
  }

  function _deepEqual(actual, expected, strict, memos) {
    // 7.1. All identical values are equivalent, as determined by ===.
    if (actual === expected) {
      return true;
    } else if (isBuffer$1(actual) && isBuffer$1(expected)) {
      return compare$3(actual, expected) === 0;

    // 7.2. If the expected value is a Date object, the actual value is
    // equivalent if it is also a Date object that refers to the same time.
    } else if (isDate(actual) && isDate(expected)) {
      return actual.getTime() === expected.getTime();

    // 7.3 If the expected value is a RegExp object, the actual value is
    // equivalent if it is also a RegExp object with the same source and
    // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).
    } else if (isRegExp(actual) && isRegExp(expected)) {
      return actual.source === expected.source &&
             actual.global === expected.global &&
             actual.multiline === expected.multiline &&
             actual.lastIndex === expected.lastIndex &&
             actual.ignoreCase === expected.ignoreCase;

    // 7.4. Other pairs that do not both pass typeof value == 'object',
    // equivalence is determined by ==.
    } else if ((actual === null || typeof actual !== 'object') &&
               (expected === null || typeof expected !== 'object')) {
      return strict ? actual === expected : actual == expected;

    // If both values are instances of typed arrays, wrap their underlying
    // ArrayBuffers in a Buffer each to increase performance
    // This optimization requires the arrays to have the same type as checked by
    // Object.prototype.toString (aka pToString). Never perform binary
    // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their
    // bit patterns are not identical.
    } else if (isView(actual) && isView(expected) &&
               pToString(actual) === pToString(expected) &&
               !(actual instanceof Float32Array ||
                 actual instanceof Float64Array)) {
      return compare$3(new Uint8Array(actual.buffer),
                     new Uint8Array(expected.buffer)) === 0;

    // 7.5 For all other Object pairs, including Array objects, equivalence is
    // determined by having the same number of owned properties (as verified
    // with Object.prototype.hasOwnProperty.call), the same set of keys
    // (although not necessarily the same order), equivalent values for every
    // corresponding key, and an identical 'prototype' property. Note: this
    // accounts for both named and indexed properties on Arrays.
    } else if (isBuffer$1(actual) !== isBuffer$1(expected)) {
      return false;
    } else {
      memos = memos || {actual: [], expected: []};

      var actualIndex = memos.actual.indexOf(actual);
      if (actualIndex !== -1) {
        if (actualIndex === memos.expected.indexOf(expected)) {
          return true;
        }
      }

      memos.actual.push(actual);
      memos.expected.push(expected);

      return objEquiv(actual, expected, strict, memos);
    }
  }

  function isArguments(object) {
    return Object.prototype.toString.call(object) == '[object Arguments]';
  }

  function objEquiv(a, b, strict, actualVisitedObjects) {
    if (a === null || a === undefined || b === null || b === undefined)
      return false;
    // if one is a primitive, the other must be same
    if (isPrimitive(a) || isPrimitive(b))
      return a === b;
    if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))
      return false;
    var aIsArgs = isArguments(a);
    var bIsArgs = isArguments(b);
    if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))
      return false;
    if (aIsArgs) {
      a = pSlice.call(a);
      b = pSlice.call(b);
      return _deepEqual(a, b, strict);
    }
    var ka = objectKeys(a);
    var kb = objectKeys(b);
    var key, i;
    // having the same number of owned properties (keys incorporates
    // hasOwnProperty)
    if (ka.length !== kb.length)
      return false;
    //the same set of keys (although not necessarily the same order),
    ka.sort();
    kb.sort();
    //~~~cheap key test
    for (i = ka.length - 1; i >= 0; i--) {
      if (ka[i] !== kb[i])
        return false;
    }
    //equivalent values for every corresponding key, and
    //~~~possibly expensive deep test
    for (i = ka.length - 1; i >= 0; i--) {
      key = ka[i];
      if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))
        return false;
    }
    return true;
  }

  // 8. The non-equivalence assertion tests for any deep inequality.
  // assert.notDeepEqual(actual, expected, message_opt);
  assert.notDeepEqual = notDeepEqual;
  function notDeepEqual(actual, expected, message) {
    if (_deepEqual(actual, expected, false)) {
      fail(actual, expected, message, 'notDeepEqual', notDeepEqual);
    }
  }

  assert.notDeepStrictEqual = notDeepStrictEqual;
  function notDeepStrictEqual(actual, expected, message) {
    if (_deepEqual(actual, expected, true)) {
      fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
    }
  }


  // 9. The strict equality assertion tests strict equality, as determined by ===.
  // assert.strictEqual(actual, expected, message_opt);
  assert.strictEqual = strictEqual;
  function strictEqual(actual, expected, message) {
    if (actual !== expected) {
      fail(actual, expected, message, '===', strictEqual);
    }
  }

  // 10. The strict non-equality assertion tests for strict inequality, as
  // determined by !==.  assert.notStrictEqual(actual, expected, message_opt);
  assert.notStrictEqual = notStrictEqual;
  function notStrictEqual(actual, expected, message) {
    if (actual === expected) {
      fail(actual, expected, message, '!==', notStrictEqual);
    }
  }

  function expectedException(actual, expected) {
    if (!actual || !expected) {
      return false;
    }

    if (Object.prototype.toString.call(expected) == '[object RegExp]') {
      return expected.test(actual);
    }

    try {
      if (actual instanceof expected) {
        return true;
      }
    } catch (e) {
      // Ignore.  The instanceof check doesn't work for arrow functions.
    }

    if (Error.isPrototypeOf(expected)) {
      return false;
    }

    return expected.call({}, actual) === true;
  }

  function _tryBlock(block) {
    var error;
    try {
      block();
    } catch (e) {
      error = e;
    }
    return error;
  }

  function _throws(shouldThrow, block, expected, message) {
    var actual;

    if (typeof block !== 'function') {
      throw new TypeError('"block" argument must be a function');
    }

    if (typeof expected === 'string') {
      message = expected;
      expected = null;
    }

    actual = _tryBlock(block);

    message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +
              (message ? ' ' + message : '.');

    if (shouldThrow && !actual) {
      fail(actual, expected, 'Missing expected exception' + message);
    }

    var userProvidedMessage = typeof message === 'string';
    var isUnwantedException = !shouldThrow && isError(actual);
    var isUnexpectedException = !shouldThrow && actual && !expected;

    if ((isUnwantedException &&
        userProvidedMessage &&
        expectedException(actual, expected)) ||
        isUnexpectedException) {
      fail(actual, expected, 'Got unwanted exception' + message);
    }

    if ((shouldThrow && actual && expected &&
        !expectedException(actual, expected)) || (!shouldThrow && actual)) {
      throw actual;
    }
  }

  // 11. Expected to throw an error:
  // assert.throws(block, Error_opt, message_opt);
  assert.throws = throws;
  function throws(block, /*optional*/error, /*optional*/message) {
    _throws(true, block, error, message);
  }

  // EXTENSION! This is annoying to write outside this module.
  assert.doesNotThrow = doesNotThrow;
  function doesNotThrow(block, /*optional*/error, /*optional*/message) {
    _throws(false, block, error, message);
  }

  assert.ifError = ifError;
  function ifError(err) {
    if (err) throw err;
  }

  var _polyfillNode_assert = /*#__PURE__*/Object.freeze({
    __proto__: null,
    AssertionError: AssertionError,
    assert: ok,
    deepEqual: deepEqual,
    deepStrictEqual: deepStrictEqual,
    default: assert,
    doesNotThrow: doesNotThrow,
    equal: equal,
    fail: fail,
    ifError: ifError,
    notDeepEqual: notDeepEqual,
    notDeepStrictEqual: notDeepStrictEqual,
    notEqual: notEqual,
    notStrictEqual: notStrictEqual,
    ok: ok,
    strictEqual: strictEqual,
    throws: throws
  });

  var callExpression$7 = callExpression$c,
    cloneNode$8 = cloneNode$g,
    expressionStatement$1 = expressionStatement$7,
    identifier$7 = identifier$e,
    importDeclaration = importDeclaration$1,
    importDefaultSpecifier = importDefaultSpecifier$1,
    importNamespaceSpecifier = importNamespaceSpecifier$1,
    importSpecifier$1 = importSpecifier$2,
    memberExpression$7 = memberExpression$a,
    stringLiteral$3 = stringLiteral$6,
    variableDeclaration$2 = variableDeclaration$6,
    variableDeclarator$2 = variableDeclarator$6;
  var ImportBuilder = function () {
    function ImportBuilder(importedSource, scope, hub) {
      this._statements = [];
      this._resultName = null;
      this._importedSource = void 0;
      this._scope = scope;
      this._hub = hub;
      this._importedSource = importedSource;
    }
    var _proto = ImportBuilder.prototype;
    _proto.done = function done() {
      return {
        statements: this._statements,
        resultName: this._resultName
      };
    };
    _proto["import"] = function _import() {
      this._statements.push(importDeclaration([], stringLiteral$3(this._importedSource)));
      return this;
    };
    _proto.require = function require() {
      this._statements.push(expressionStatement$1(callExpression$7(identifier$7("require"), [stringLiteral$3(this._importedSource)])));
      return this;
    };
    _proto.namespace = function namespace(name) {
      if (name === void 0) {
        name = "namespace";
      }
      var local = this._scope.generateUidIdentifier(name);
      var statement = this._statements[this._statements.length - 1];
      assert(statement.type === "ImportDeclaration");
      assert(statement.specifiers.length === 0);
      statement.specifiers = [importNamespaceSpecifier(local)];
      this._resultName = cloneNode$8(local);
      return this;
    };
    _proto["default"] = function _default(name) {
      var id = this._scope.generateUidIdentifier(name);
      var statement = this._statements[this._statements.length - 1];
      assert(statement.type === "ImportDeclaration");
      assert(statement.specifiers.length === 0);
      statement.specifiers = [importDefaultSpecifier(id)];
      this._resultName = cloneNode$8(id);
      return this;
    };
    _proto.named = function named(name, importName) {
      if (importName === "default") return this["default"](name);
      var id = this._scope.generateUidIdentifier(name);
      var statement = this._statements[this._statements.length - 1];
      assert(statement.type === "ImportDeclaration");
      assert(statement.specifiers.length === 0);
      statement.specifiers = [importSpecifier$1(id, identifier$7(importName))];
      this._resultName = cloneNode$8(id);
      return this;
    };
    _proto["var"] = function _var(name) {
      var id = this._scope.generateUidIdentifier(name);
      var statement = this._statements[this._statements.length - 1];
      if (statement.type !== "ExpressionStatement") {
        assert(this._resultName);
        statement = expressionStatement$1(this._resultName);
        this._statements.push(statement);
      }
      this._statements[this._statements.length - 1] = variableDeclaration$2("var", [variableDeclarator$2(id, statement.expression)]);
      this._resultName = cloneNode$8(id);
      return this;
    };
    _proto.defaultInterop = function defaultInterop() {
      return this._interop(this._hub.addHelper("interopRequireDefault"));
    };
    _proto.wildcardInterop = function wildcardInterop() {
      return this._interop(this._hub.addHelper("interopRequireWildcard"));
    };
    _proto._interop = function _interop(callee) {
      var statement = this._statements[this._statements.length - 1];
      if (statement.type === "ExpressionStatement") {
        statement.expression = callExpression$7(callee, [statement.expression]);
      } else if (statement.type === "VariableDeclaration") {
        assert(statement.declarations.length === 1);
        statement.declarations[0].init = callExpression$7(callee, [statement.declarations[0].init]);
      } else {
        assert.fail("Unexpected type.");
      }
      return this;
    };
    _proto.prop = function prop(name) {
      var statement = this._statements[this._statements.length - 1];
      if (statement.type === "ExpressionStatement") {
        statement.expression = memberExpression$7(statement.expression, identifier$7(name));
      } else if (statement.type === "VariableDeclaration") {
        assert(statement.declarations.length === 1);
        statement.declarations[0].init = memberExpression$7(statement.declarations[0].init, identifier$7(name));
      } else {
        assert.fail("Unexpected type:" + statement.type);
      }
      return this;
    };
    _proto.read = function read(name) {
      this._resultName = memberExpression$7(this._resultName, identifier$7(name));
    };
    return _createClass(ImportBuilder);
  }();

  function isModule(path) {
    return path.node.sourceType === "module";
  }

  var identifier$6 = identifier$e,
    importSpecifier = importSpecifier$2,
    numericLiteral$2 = numericLiteral$6,
    sequenceExpression$4 = sequenceExpression$8,
    isImportDeclaration = isImportDeclaration$3;
  var ImportInjector = function () {
    function ImportInjector(path, importedSource, opts) {
      this._defaultOpts = {
        importedSource: null,
        importedType: "commonjs",
        importedInterop: "babel",
        importingInterop: "babel",
        ensureLiveReference: false,
        ensureNoContext: false,
        importPosition: "before"
      };
      var programPath = path.find(function (p) {
        return p.isProgram();
      });
      this._programPath = programPath;
      this._programScope = programPath.scope;
      this._hub = programPath.hub;
      this._defaultOpts = this._applyDefaults(importedSource, opts, true);
    }
    var _proto = ImportInjector.prototype;
    _proto.addDefault = function addDefault(importedSourceIn, opts) {
      return this.addNamed("default", importedSourceIn, opts);
    };
    _proto.addNamed = function addNamed(importName, importedSourceIn, opts) {
      assert(typeof importName === "string");
      return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
    };
    _proto.addNamespace = function addNamespace(importedSourceIn, opts) {
      return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
    };
    _proto.addSideEffect = function addSideEffect(importedSourceIn, opts) {
      return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0);
    };
    _proto._applyDefaults = function _applyDefaults(importedSource, opts, isInit) {
      if (isInit === void 0) {
        isInit = false;
      }
      var newOpts;
      if (typeof importedSource === "string") {
        newOpts = Object.assign({}, this._defaultOpts, {
          importedSource: importedSource
        }, opts);
      } else {
        assert(!opts, "Unexpected secondary arguments.");
        newOpts = Object.assign({}, this._defaultOpts, importedSource);
      }
      if (!isInit && opts) {
        if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;
        if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;
      }
      return newOpts;
    };
    _proto._generateImport = function _generateImport(opts, importName) {
      var isDefault = importName === "default";
      var isNamed = !!importName && !isDefault;
      var isNamespace = importName === null;
      var importedSource = opts.importedSource,
        importedType = opts.importedType,
        importedInterop = opts.importedInterop,
        importingInterop = opts.importingInterop,
        ensureLiveReference = opts.ensureLiveReference,
        ensureNoContext = opts.ensureNoContext,
        nameHint = opts.nameHint,
        importPosition = opts.importPosition,
        blockHoist = opts.blockHoist;
      var name = nameHint || importName;
      var isMod = isModule(this._programPath);
      var isModuleForNode = isMod && importingInterop === "node";
      var isModuleForBabel = isMod && importingInterop === "babel";
      if (importPosition === "after" && !isMod) {
        throw new Error("\"importPosition\": \"after\" is only supported in modules");
      }
      var builder = new ImportBuilder(importedSource, this._programScope, this._hub);
      if (importedType === "es6") {
        if (!isModuleForNode && !isModuleForBabel) {
          throw new Error("Cannot import an ES6 module from CommonJS");
        }
        builder["import"]();
        if (isNamespace) {
          builder.namespace(nameHint || importedSource);
        } else if (isDefault || isNamed) {
          builder.named(name, importName);
        }
      } else if (importedType !== "commonjs") {
        throw new Error("Unexpected interopType \"" + importedType + "\"");
      } else if (importedInterop === "babel") {
        if (isModuleForNode) {
          name = name !== "default" ? name : importedSource;
          var es6Default = importedSource + "$es6Default";
          builder["import"]();
          if (isNamespace) {
            builder["default"](es6Default)["var"](name || importedSource).wildcardInterop();
          } else if (isDefault) {
            if (ensureLiveReference) {
              builder["default"](es6Default)["var"](name || importedSource).defaultInterop().read("default");
            } else {
              builder["default"](es6Default)["var"](name).defaultInterop().prop(importName);
            }
          } else if (isNamed) {
            builder["default"](es6Default).read(importName);
          }
        } else if (isModuleForBabel) {
          builder["import"]();
          if (isNamespace) {
            builder.namespace(name || importedSource);
          } else if (isDefault || isNamed) {
            builder.named(name, importName);
          }
        } else {
          builder.require();
          if (isNamespace) {
            builder["var"](name || importedSource).wildcardInterop();
          } else if ((isDefault || isNamed) && ensureLiveReference) {
            if (isDefault) {
              name = name !== "default" ? name : importedSource;
              builder["var"](name).read(importName);
              builder.defaultInterop();
            } else {
              builder["var"](importedSource).read(importName);
            }
          } else if (isDefault) {
            builder["var"](name).defaultInterop().prop(importName);
          } else if (isNamed) {
            builder["var"](name).prop(importName);
          }
        }
      } else if (importedInterop === "compiled") {
        if (isModuleForNode) {
          builder["import"]();
          if (isNamespace) {
            builder["default"](name || importedSource);
          } else if (isDefault || isNamed) {
            builder["default"](importedSource).read(name);
          }
        } else if (isModuleForBabel) {
          builder["import"]();
          if (isNamespace) {
            builder.namespace(name || importedSource);
          } else if (isDefault || isNamed) {
            builder.named(name, importName);
          }
        } else {
          builder.require();
          if (isNamespace) {
            builder["var"](name || importedSource);
          } else if (isDefault || isNamed) {
            if (ensureLiveReference) {
              builder["var"](importedSource).read(name);
            } else {
              builder.prop(importName)["var"](name);
            }
          }
        }
      } else if (importedInterop === "uncompiled") {
        if (isDefault && ensureLiveReference) {
          throw new Error("No live reference for commonjs default");
        }
        if (isModuleForNode) {
          builder["import"]();
          if (isNamespace) {
            builder["default"](name || importedSource);
          } else if (isDefault) {
            builder["default"](name);
          } else if (isNamed) {
            builder["default"](importedSource).read(name);
          }
        } else if (isModuleForBabel) {
          builder["import"]();
          if (isNamespace) {
            builder["default"](name || importedSource);
          } else if (isDefault) {
            builder["default"](name);
          } else if (isNamed) {
            builder.named(name, importName);
          }
        } else {
          builder.require();
          if (isNamespace) {
            builder["var"](name || importedSource);
          } else if (isDefault) {
            builder["var"](name);
          } else if (isNamed) {
            if (ensureLiveReference) {
              builder["var"](importedSource).read(name);
            } else {
              builder["var"](name).prop(importName);
            }
          }
        }
      } else {
        throw new Error("Unknown importedInterop \"" + importedInterop + "\".");
      }
      var _builder$done = builder.done(),
        statements = _builder$done.statements,
        resultName = _builder$done.resultName;
      this._insertStatements(statements, importPosition, blockHoist);
      if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
        return sequenceExpression$4([numericLiteral$2(0), resultName]);
      }
      return resultName;
    };
    _proto._insertStatements = function _insertStatements(statements, importPosition, blockHoist) {
      if (importPosition === void 0) {
        importPosition = "before";
      }
      if (blockHoist === void 0) {
        blockHoist = 3;
      }
      if (importPosition === "after") {
        if (this._insertStatementsAfter(statements)) return;
      } else {
        if (this._insertStatementsBefore(statements, blockHoist)) return;
      }
      this._programPath.unshiftContainer("body", statements);
    };
    _proto._insertStatementsBefore = function _insertStatementsBefore(statements, blockHoist) {
      if (statements.length === 1 && isImportDeclaration(statements[0]) && isValueImport(statements[0])) {
        var firstImportDecl = this._programPath.get("body").find(function (p) {
          return p.isImportDeclaration() && isValueImport(p.node);
        });
        if ((firstImportDecl == null ? void 0 : firstImportDecl.node.source.value) === statements[0].source.value && maybeAppendImportSpecifiers(firstImportDecl.node, statements[0])) {
          return true;
        }
      }
      statements.forEach(function (node) {
        node._blockHoist = blockHoist;
      });
      var targetPath = this._programPath.get("body").find(function (p) {
        var val = p.node._blockHoist;
        return Number.isFinite(val) && val < 4;
      });
      if (targetPath) {
        targetPath.insertBefore(statements);
        return true;
      }
      return false;
    };
    _proto._insertStatementsAfter = function _insertStatementsAfter(statements) {
      var statementsSet = new Set(statements);
      var importDeclarations = new Map();
      for (var _iterator = _createForOfIteratorHelperLoose(statements), _step; !(_step = _iterator()).done;) {
        var statement = _step.value;
        if (isImportDeclaration(statement) && isValueImport(statement)) {
          var source = statement.source.value;
          if (!importDeclarations.has(source)) importDeclarations.set(source, []);
          importDeclarations.get(source).push(statement);
        }
      }
      var lastImportPath = null;
      for (var _iterator2 = _createForOfIteratorHelperLoose(this._programPath.get("body")), _step2; !(_step2 = _iterator2()).done;) {
        var bodyStmt = _step2.value;
        if (bodyStmt.isImportDeclaration() && isValueImport(bodyStmt.node)) {
          lastImportPath = bodyStmt;
          var _source = bodyStmt.node.source.value;
          var newImports = importDeclarations.get(_source);
          if (!newImports) continue;
          for (var _iterator3 = _createForOfIteratorHelperLoose(newImports), _step3; !(_step3 = _iterator3()).done;) {
            var decl = _step3.value;
            if (!statementsSet.has(decl)) continue;
            if (maybeAppendImportSpecifiers(bodyStmt.node, decl)) {
              statementsSet["delete"](decl);
            }
          }
        }
      }
      if (statementsSet.size === 0) return true;
      if (lastImportPath) lastImportPath.insertAfter(Array.from(statementsSet));
      return !!lastImportPath;
    };
    return _createClass(ImportInjector);
  }();
  function isValueImport(node) {
    return node.importKind !== "type" && node.importKind !== "typeof";
  }
  function hasNamespaceImport(node) {
    return node.specifiers.length === 1 && node.specifiers[0].type === "ImportNamespaceSpecifier" || node.specifiers.length === 2 && node.specifiers[1].type === "ImportNamespaceSpecifier";
  }
  function hasDefaultImport(node) {
    return node.specifiers.length > 0 && node.specifiers[0].type === "ImportDefaultSpecifier";
  }
  function maybeAppendImportSpecifiers(target, source) {
    var _target$specifiers;
    if (!target.specifiers.length) {
      target.specifiers = source.specifiers;
      return true;
    }
    if (!source.specifiers.length) return true;
    if (hasNamespaceImport(target) || hasNamespaceImport(source)) return false;
    if (hasDefaultImport(source)) {
      if (hasDefaultImport(target)) {
        source.specifiers[0] = importSpecifier(source.specifiers[0].local, identifier$6("default"));
      } else {
        target.specifiers.unshift(source.specifiers.shift());
      }
    }
    (_target$specifiers = target.specifiers).push.apply(_target$specifiers, _toConsumableArray(source.specifiers));
    return true;
  }

  function addDefault(path, importedSource, opts) {
    return new ImportInjector(path).addDefault(importedSource, opts);
  }
  function addNamed(path, name, importedSource, opts) {
    return new ImportInjector(path).addNamed(name, importedSource, opts);
  }
  function addNamespace(path, importedSource, opts) {
    return new ImportInjector(path).addNamespace(importedSource, opts);
  }

  var rewriteThisVisitor;
  function rewriteThis(programPath) {
    if (!rewriteThisVisitor) {
      rewriteThisVisitor = environmentVisitor({
        ThisExpression: function ThisExpression(path) {
          path.replaceWith(unaryExpression$5("void", numericLiteral$6(0), true));
        }
      });
      rewriteThisVisitor.noScope = true;
    }
    traverse(programPath.node, rewriteThisVisitor);
  }

  var LOGICAL_OPERATORS$1 = LOGICAL_OPERATORS$3,
    assignmentExpression$6 = assignmentExpression$b,
    binaryExpression$3 = binaryExpression$5,
    cloneNode$7 = cloneNode$g,
    identifier$5 = identifier$e,
    logicalExpression$1 = logicalExpression$3,
    numericLiteral$1 = numericLiteral$6,
    sequenceExpression$3 = sequenceExpression$8,
    unaryExpression$2 = unaryExpression$5;
  var simpleAssignmentVisitor = {
    AssignmentExpression: {
      exit: function exit(path) {
        var scope = this.scope,
          seen = this.seen,
          bindingNames = this.bindingNames;
        if (path.node.operator === "=") return;
        if (seen.has(path.node)) return;
        seen.add(path.node);
        var left = path.get("left");
        if (!left.isIdentifier()) return;
        var localName = left.node.name;
        if (!bindingNames.has(localName)) return;
        if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
          return;
        }
        var operator = path.node.operator.slice(0, -1);
        if (LOGICAL_OPERATORS$1.includes(operator)) {
          path.replaceWith(logicalExpression$1(operator, path.node.left, assignmentExpression$6("=", cloneNode$7(path.node.left), path.node.right)));
        } else {
          path.node.right = binaryExpression$3(operator, cloneNode$7(path.node.left), path.node.right);
          path.node.operator = "=";
        }
      }
    }
  };
  {
    simpleAssignmentVisitor.UpdateExpression = {
      exit: function exit(path) {
        if (!this.includeUpdateExpression) return;
        var scope = this.scope,
          bindingNames = this.bindingNames;
        var arg = path.get("argument");
        if (!arg.isIdentifier()) return;
        var localName = arg.node.name;
        if (!bindingNames.has(localName)) return;
        if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
          return;
        }
        if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) {
          var operator = path.node.operator === "++" ? "+=" : "-=";
          path.replaceWith(assignmentExpression$6(operator, arg.node, numericLiteral$1(1)));
        } else if (path.node.prefix) {
          path.replaceWith(assignmentExpression$6("=", identifier$5(localName), binaryExpression$3(path.node.operator[0], unaryExpression$2("+", arg.node), numericLiteral$1(1))));
        } else {
          var old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old");
          var varName = old.name;
          path.scope.push({
            id: old
          });
          var binary = binaryExpression$3(path.node.operator[0], identifier$5(varName), numericLiteral$1(1));
          path.replaceWith(sequenceExpression$3([assignmentExpression$6("=", identifier$5(varName), unaryExpression$2("+", arg.node)), assignmentExpression$6("=", cloneNode$7(arg.node), binary), identifier$5(varName)]));
        }
      }
    };
  }
  function simplifyAccess(path, bindingNames) {
    {
      var _arguments$;
      path.traverse(simpleAssignmentVisitor, {
        scope: path.scope,
        bindingNames: bindingNames,
        seen: new WeakSet(),
        includeUpdateExpression: (_arguments$ = arguments[2]) != null ? _arguments$ : true
      });
    }
  }

  var _templateObject$A;
  function isInType$1(path) {
    do {
      switch (path.parent.type) {
        case "TSTypeAnnotation":
        case "TSTypeAliasDeclaration":
        case "TSTypeReference":
        case "TypeAnnotation":
        case "TypeAlias":
          return true;
        case "ExportSpecifier":
          return path.parentPath.parent.exportKind === "type";
        default:
          if (path.parentPath.isStatement() || path.parentPath.isExpression()) {
            return false;
          }
      }
    } while (path = path.parentPath);
  }
  function rewriteLiveReferences(programPath, metadata, wrapReference) {
    var imported = new Map();
    var exported = new Map();
    var requeueInParent = function requeueInParent(path) {
      programPath.requeue(path);
    };
    for (var _iterator = _createForOfIteratorHelperLoose(metadata.source), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        source = _step$value[0],
        data = _step$value[1];
      for (var _iterator3 = _createForOfIteratorHelperLoose(data.imports), _step3; !(_step3 = _iterator3()).done;) {
        var _step3$value = _slicedToArray(_step3.value, 2),
          localName = _step3$value[0],
          importName = _step3$value[1];
        imported.set(localName, [source, importName, null]);
      }
      for (var _iterator4 = _createForOfIteratorHelperLoose(data.importsNamespace), _step4; !(_step4 = _iterator4()).done;) {
        var _localName = _step4.value;
        imported.set(_localName, [source, null, _localName]);
      }
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(metadata.local), _step2; !(_step2 = _iterator2()).done;) {
      var _exportMeta;
      var _step2$value = _slicedToArray(_step2.value, 2),
        local = _step2$value[0],
        _data = _step2$value[1];
      var exportMeta = exported.get(local);
      if (!exportMeta) {
        exportMeta = [];
        exported.set(local, exportMeta);
      }
      (_exportMeta = exportMeta).push.apply(_exportMeta, _toConsumableArray(_data.names));
    }
    var rewriteBindingInitVisitorState = {
      metadata: metadata,
      requeueInParent: requeueInParent,
      scope: programPath.scope,
      exported: exported
    };
    programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState);
    var bindingNames = new Set([].concat(_toConsumableArray(Array.from(imported.keys())), _toConsumableArray(Array.from(exported.keys()))));
    {
      simplifyAccess(programPath, bindingNames, false);
    }
    var rewriteReferencesVisitorState = {
      seen: new WeakSet(),
      metadata: metadata,
      requeueInParent: requeueInParent,
      scope: programPath.scope,
      imported: imported,
      exported: exported,
      buildImportReference: function buildImportReference(_ref, identNode) {
        var _ref2 = _slicedToArray(_ref, 3),
          source = _ref2[0],
          importName = _ref2[1],
          localName = _ref2[2];
        var meta = metadata.source.get(source);
        meta.referenced = true;
        if (localName) {
          if (meta.wrap) {
            var _wrapReference;
            identNode = (_wrapReference = wrapReference(identNode, meta.wrap)) != null ? _wrapReference : identNode;
          }
          return identNode;
        }
        var namespace = identifier$e(meta.name);
        if (meta.wrap) {
          var _wrapReference2;
          namespace = (_wrapReference2 = wrapReference(namespace, meta.wrap)) != null ? _wrapReference2 : namespace;
        }
        if (importName === "default" && meta.interop === "node-default") {
          return namespace;
        }
        var computed = metadata.stringSpecifiers.has(importName);
        return memberExpression$a(namespace, computed ? stringLiteral$6(importName) : identifier$e(importName), computed);
      }
    };
    programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState);
  }
  var rewriteBindingInitVisitor = {
    Scope: function Scope(path) {
      path.skip();
    },
    ClassDeclaration: function ClassDeclaration(path) {
      var requeueInParent = this.requeueInParent,
        exported = this.exported,
        metadata = this.metadata;
      var id = path.node.id;
      if (!id) throw new Error("Expected class to have a name");
      var localName = id.name;
      var exportNames = exported.get(localName) || [];
      if (exportNames.length > 0) {
        var statement = expressionStatement$7(buildBindingExportAssignmentExpression(metadata, exportNames, identifier$e(localName), path.scope));
        statement._blockHoist = path.node._blockHoist;
        requeueInParent(path.insertAfter(statement)[0]);
      }
    },
    VariableDeclaration: function VariableDeclaration(path) {
      var requeueInParent = this.requeueInParent,
        exported = this.exported,
        metadata = this.metadata;
      var isVar = path.node.kind === "var";
      for (var _iterator5 = _createForOfIteratorHelperLoose(path.get("declarations")), _step5; !(_step5 = _iterator5()).done;) {
        var decl = _step5.value;
        var id = decl.node.id;
        var init = decl.node.init;
        if (isIdentifier$f(id) && exported.has(id.name) && !isArrowFunctionExpression(init) && (!isFunctionExpression(init) || init.id) && (!isClassExpression(init) || init.id)) {
          if (!init) {
            if (isVar) {
              continue;
            } else {
              init = path.scope.buildUndefinedNode();
            }
          }
          decl.node.init = buildBindingExportAssignmentExpression(metadata, exported.get(id.name), init, path.scope);
          requeueInParent(decl.get("init"));
        } else {
          for (var _i = 0, _Object$keys = Object.keys(decl.getOuterBindingIdentifiers()); _i < _Object$keys.length; _i++) {
            var localName = _Object$keys[_i];
            if (exported.has(localName)) {
              var statement = expressionStatement$7(buildBindingExportAssignmentExpression(metadata, exported.get(localName), identifier$e(localName), path.scope));
              statement._blockHoist = path.node._blockHoist;
              requeueInParent(path.insertAfter(statement)[0]);
            }
          }
        }
      }
    }
  };
  var buildBindingExportAssignmentExpression = function buildBindingExportAssignmentExpression(metadata, exportNames, localExpr, scope) {
    var exportsObjectName = metadata.exportName;
    for (var currentScope = scope; currentScope != null; currentScope = currentScope.parent) {
      if (currentScope.hasOwnBinding(exportsObjectName)) {
        currentScope.rename(exportsObjectName);
      }
    }
    return (exportNames || []).reduce(function (expr, exportName) {
      var stringSpecifiers = metadata.stringSpecifiers;
      var computed = stringSpecifiers.has(exportName);
      return assignmentExpression$b("=", memberExpression$a(identifier$e(exportsObjectName), computed ? stringLiteral$6(exportName) : identifier$e(exportName), computed), expr);
    }, localExpr);
  };
  var buildImportThrow = function buildImportThrow(localName) {
    return template$1.expression.ast(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["\n    (function() {\n      throw new Error('\"' + '", "' + '\" is read-only.');\n    })()\n  "])), localName);
  };
  var rewriteReferencesVisitor = {
    ReferencedIdentifier: function ReferencedIdentifier(path) {
      var seen = this.seen,
        buildImportReference = this.buildImportReference,
        scope = this.scope,
        imported = this.imported,
        requeueInParent = this.requeueInParent;
      if (seen.has(path.node)) return;
      seen.add(path.node);
      var localName = path.node.name;
      var importData = imported.get(localName);
      if (importData) {
        if (isInType$1(path)) {
          throw path.buildCodeFrameError("Cannot transform the imported binding \"" + localName + "\" since it's also used in a type annotation. " + "Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.");
        }
        var localBinding = path.scope.getBinding(localName);
        var rootBinding = scope.getBinding(localName);
        if (rootBinding !== localBinding) return;
        var ref = buildImportReference(importData, path.node);
        ref.loc = path.node.loc;
        if ((path.parentPath.isCallExpression({
          callee: path.node
        }) || path.parentPath.isOptionalCallExpression({
          callee: path.node
        }) || path.parentPath.isTaggedTemplateExpression({
          tag: path.node
        })) && isMemberExpression$8(ref)) {
          path.replaceWith(sequenceExpression$8([numericLiteral$6(0), ref]));
        } else if (path.isJSXIdentifier() && isMemberExpression$8(ref)) {
          var object = ref.object,
            property = ref.property;
          path.replaceWith(jsxMemberExpression(jsxIdentifier$1(object.name), jsxIdentifier$1(property.name)));
        } else {
          path.replaceWith(ref);
        }
        requeueInParent(path);
        path.skip();
      }
    },
    UpdateExpression: function UpdateExpression(path) {
      var scope = this.scope,
        seen = this.seen,
        imported = this.imported,
        exported = this.exported,
        requeueInParent = this.requeueInParent,
        buildImportReference = this.buildImportReference;
      if (seen.has(path.node)) return;
      seen.add(path.node);
      var arg = path.get("argument");
      if (arg.isMemberExpression()) return;
      var update = path.node;
      if (arg.isIdentifier()) {
        var localName = arg.node.name;
        if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
          return;
        }
        var exportedNames = exported.get(localName);
        var importData = imported.get(localName);
        if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
          if (importData) {
            path.replaceWith(assignmentExpression$b(update.operator[0] + "=", buildImportReference(importData, arg.node), buildImportThrow(localName)));
          } else if (update.prefix) {
            path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, cloneNode$g(update), path.scope));
          } else {
            var ref = scope.generateDeclaredUidIdentifier(localName);
            path.replaceWith(sequenceExpression$8([assignmentExpression$b("=", cloneNode$g(ref), cloneNode$g(update)), buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier$e(localName), path.scope), cloneNode$g(ref)]));
          }
        }
      }
      requeueInParent(path);
      path.skip();
    },
    AssignmentExpression: {
      exit: function exit(path) {
        var _this = this;
        var scope = this.scope,
          seen = this.seen,
          imported = this.imported,
          exported = this.exported,
          requeueInParent = this.requeueInParent,
          buildImportReference = this.buildImportReference;
        if (seen.has(path.node)) return;
        seen.add(path.node);
        var left = path.get("left");
        if (left.isMemberExpression()) return;
        if (left.isIdentifier()) {
          var localName = left.node.name;
          if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
            return;
          }
          var exportedNames = exported.get(localName);
          var importData = imported.get(localName);
          if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
            assert(path.node.operator === "=", "Path was not simplified");
            var assignment = path.node;
            if (importData) {
              assignment.left = buildImportReference(importData, left.node);
              assignment.right = sequenceExpression$8([assignment.right, buildImportThrow(localName)]);
            }
            path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment, path.scope));
            requeueInParent(path);
          }
        } else {
          var ids = left.getOuterBindingIdentifiers();
          var programScopeIds = Object.keys(ids).filter(function (localName) {
            return scope.getBinding(localName) === path.scope.getBinding(localName);
          });
          var id = programScopeIds.find(function (localName) {
            return imported.has(localName);
          });
          if (id) {
            path.node.right = sequenceExpression$8([path.node.right, buildImportThrow(id)]);
          }
          var items = [];
          programScopeIds.forEach(function (localName) {
            var exportedNames = exported.get(localName) || [];
            if (exportedNames.length > 0) {
              items.push(buildBindingExportAssignmentExpression(_this.metadata, exportedNames, identifier$e(localName), path.scope));
            }
          });
          if (items.length > 0) {
            var node = sequenceExpression$8(items);
            if (path.parentPath.isExpressionStatement()) {
              node = expressionStatement$7(node);
              node._blockHoist = path.parentPath.node._blockHoist;
            }
            var statement = path.insertAfter(node)[0];
            requeueInParent(statement);
          }
        }
      }
    },
    "ForOfStatement|ForInStatement": function ForOfStatementForInStatement(path) {
      var scope = path.scope,
        node = path.node;
      var left = node.left;
      var exported = this.exported,
        imported = this.imported,
        programScope = this.scope;
      if (!isVariableDeclaration$3(left)) {
        var didTransformExport = false,
          importConstViolationName;
        var loopBodyScope = path.get("body").scope;
        for (var _i2 = 0, _Object$keys2 = Object.keys(getOuterBindingIdentifiers$1(left)); _i2 < _Object$keys2.length; _i2++) {
          var name = _Object$keys2[_i2];
          if (programScope.getBinding(name) === scope.getBinding(name)) {
            if (exported.has(name)) {
              didTransformExport = true;
              if (loopBodyScope.hasOwnBinding(name)) {
                loopBodyScope.rename(name);
              }
            }
            if (imported.has(name) && !importConstViolationName) {
              importConstViolationName = name;
            }
          }
        }
        if (!didTransformExport && !importConstViolationName) {
          return;
        }
        path.ensureBlock();
        var bodyPath = path.get("body");
        var newLoopId = scope.generateUidIdentifierBasedOnNode(left);
        path.get("left").replaceWith(variableDeclaration$6("let", [variableDeclarator$6(cloneNode$g(newLoopId))]));
        scope.registerDeclaration(path.get("left"));
        if (didTransformExport) {
          bodyPath.unshiftContainer("body", expressionStatement$7(assignmentExpression$b("=", left, newLoopId)));
        }
        if (importConstViolationName) {
          bodyPath.unshiftContainer("body", expressionStatement$7(buildImportThrow(importConstViolationName)));
        }
      }
    }
  };

  // Copyright Joyent, Inc. and other Node contributors.
  //
  // Permission is hereby granted, free of charge, to any person obtaining a
  // copy of this software and associated documentation files (the
  // "Software"), to deal in the Software without restriction, including
  // without limitation the rights to use, copy, modify, merge, publish,
  // distribute, sublicense, and/or sell copies of the Software, and to permit
  // persons to whom the Software is furnished to do so, subject to the
  // following conditions:
  //
  // The above copyright notice and this permission notice shall be included
  // in all copies or substantial portions of the Software.
  //
  // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
  // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
  // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
  // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
  // USE OR OTHER DEALINGS IN THE SOFTWARE.

  // resolves . and .. elements in a path array with directory names there
  // must be no slashes, empty elements, or device names (c:\) in the array
  // (so also no leading and trailing slashes - it does not distinguish
  // relative and absolute paths)
  function normalizeArray(parts, allowAboveRoot) {
    // if the path tries to go above the root, `up` ends up > 0
    var up = 0;
    for (var i = parts.length - 1; i >= 0; i--) {
      var last = parts[i];
      if (last === '.') {
        parts.splice(i, 1);
      } else if (last === '..') {
        parts.splice(i, 1);
        up++;
      } else if (up) {
        parts.splice(i, 1);
        up--;
      }
    }

    // if the path is allowed to go above the root, restore leading ..s
    if (allowAboveRoot) {
      for (; up--; up) {
        parts.unshift('..');
      }
    }

    return parts;
  }

  // Split a filename into [root, dir, basename, ext], unix version
  // 'root' is just a slash, or nothing.
  var splitPathRe =
      /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
  var splitPath = function(filename) {
    return splitPathRe.exec(filename).slice(1);
  };

  // path.resolve([from ...], to)
  // posix version
  function resolve$2() {
    var resolvedPath = '',
        resolvedAbsolute = false;

    for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
      var path = (i >= 0) ? arguments[i] : '/';

      // Skip empty and invalid entries
      if (typeof path !== 'string') {
        throw new TypeError('Arguments to path.resolve must be strings');
      } else if (!path) {
        continue;
      }

      resolvedPath = path + '/' + resolvedPath;
      resolvedAbsolute = path.charAt(0) === '/';
    }

    // At this point the path should be resolved to a full absolute path, but
    // handle relative paths to be safe (might happen when process.cwd() fails)

    // Normalize the path
    resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
      return !!p;
    }), !resolvedAbsolute).join('/');

    return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
  }
  // path.normalize(path)
  // posix version
  function normalize$2(path) {
    var isPathAbsolute = isAbsolute(path),
        trailingSlash = substr(path, -1) === '/';

    // Normalize the path
    path = normalizeArray(filter(path.split('/'), function(p) {
      return !!p;
    }), !isPathAbsolute).join('/');

    if (!path && !isPathAbsolute) {
      path = '.';
    }
    if (path && trailingSlash) {
      path += '/';
    }

    return (isPathAbsolute ? '/' : '') + path;
  }
  // posix version
  function isAbsolute(path) {
    return path.charAt(0) === '/';
  }

  // posix version
  function join() {
    var paths = Array.prototype.slice.call(arguments, 0);
    return normalize$2(filter(paths, function(p, index) {
      if (typeof p !== 'string') {
        throw new TypeError('Arguments to path.join must be strings');
      }
      return p;
    }).join('/'));
  }


  // path.relative(from, to)
  // posix version
  function relative(from, to) {
    from = resolve$2(from).substr(1);
    to = resolve$2(to).substr(1);

    function trim(arr) {
      var start = 0;
      for (; start < arr.length; start++) {
        if (arr[start] !== '') break;
      }

      var end = arr.length - 1;
      for (; end >= 0; end--) {
        if (arr[end] !== '') break;
      }

      if (start > end) return [];
      return arr.slice(start, end - start + 1);
    }

    var fromParts = trim(from.split('/'));
    var toParts = trim(to.split('/'));

    var length = Math.min(fromParts.length, toParts.length);
    var samePartsLength = length;
    for (var i = 0; i < length; i++) {
      if (fromParts[i] !== toParts[i]) {
        samePartsLength = i;
        break;
      }
    }

    var outputParts = [];
    for (var i = samePartsLength; i < fromParts.length; i++) {
      outputParts.push('..');
    }

    outputParts = outputParts.concat(toParts.slice(samePartsLength));

    return outputParts.join('/');
  }

  var sep$1 = '/';
  var delimiter = ':';

  function dirname(path) {
    var result = splitPath(path),
        root = result[0],
        dir = result[1];

    if (!root && !dir) {
      // No dirname whatsoever
      return '.';
    }

    if (dir) {
      // It has a dirname, strip trailing slash
      dir = dir.substr(0, dir.length - 1);
    }

    return root + dir;
  }

  function basename(path, ext) {
    var f = splitPath(path)[2];
    // TODO: make this comparison case-insensitive on windows?
    if (ext && f.substr(-1 * ext.length) === ext) {
      f = f.substr(0, f.length - ext.length);
    }
    return f;
  }


  function extname(path) {
    return splitPath(path)[3];
  }
  var path$1 = {
    extname: extname,
    basename: basename,
    dirname: dirname,
    sep: sep$1,
    delimiter: delimiter,
    relative: relative,
    join: join,
    isAbsolute: isAbsolute,
    normalize: normalize$2,
    resolve: resolve$2
  };
  function filter (xs, f) {
      if (xs.filter) return xs.filter(f);
      var res = [];
      for (var i = 0; i < xs.length; i++) {
          if (f(xs[i], i, xs)) res.push(xs[i]);
      }
      return res;
  }

  // String.prototype.substr - negative index don't work in IE8
  var substr = 'ab'.substr(-1) === 'b' ?
      function (str, start, len) { return str.substr(start, len) } :
      function (str, start, len) {
          if (start < 0) start = str.length + start;
          return str.substr(start, len);
      }
  ;

  var _polyfillNode_path = /*#__PURE__*/Object.freeze({
    __proto__: null,
    basename: basename,
    default: path$1,
    delimiter: delimiter,
    dirname: dirname,
    extname: extname,
    isAbsolute: isAbsolute,
    join: join,
    normalize: normalize$2,
    relative: relative,
    resolve: resolve$2,
    sep: sep$1
  });

  function hasExports(metadata) {
    return metadata.hasExports;
  }
  function isSideEffectImport(source) {
    return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll;
  }
  function validateImportInteropOption(importInterop) {
    if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") {
      throw new Error(".importInterop must be one of \"none\", \"babel\", \"node\", or a function returning one of those values (received " + importInterop + ").");
    }
    return importInterop;
  }
  function resolveImportInterop(importInterop, source, filename) {
    if (typeof importInterop === "function") {
      return validateImportInteropOption(importInterop(source, filename));
    }
    return importInterop;
  }
  function normalizeModuleAndLoadMetadata(programPath, exportName, _ref) {
    var importInterop = _ref.importInterop,
      _ref$initializeReexpo = _ref.initializeReexports,
      initializeReexports = _ref$initializeReexpo === void 0 ? false : _ref$initializeReexpo,
      getWrapperPayload = _ref.getWrapperPayload,
      _ref$esNamespaceOnly = _ref.esNamespaceOnly,
      esNamespaceOnly = _ref$esNamespaceOnly === void 0 ? false : _ref$esNamespaceOnly,
      filename = _ref.filename;
    if (!exportName) {
      exportName = programPath.scope.generateUidIdentifier("exports").name;
    }
    var stringSpecifiers = new Set();
    nameAnonymousExports(programPath);
    var _getModuleMetadata = getModuleMetadata(programPath, {
        initializeReexports: initializeReexports,
        getWrapperPayload: getWrapperPayload
      }, stringSpecifiers),
      local = _getModuleMetadata.local,
      sources = _getModuleMetadata.sources,
      hasExports = _getModuleMetadata.hasExports;
    removeImportExportDeclarations(programPath);
    for (var _iterator = _createForOfIteratorHelperLoose(sources), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        _source = _step$value[0],
        metadata = _step$value[1];
      var importsNamespace = metadata.importsNamespace,
        imports = metadata.imports;
      if (importsNamespace.size > 0 && imports.size === 0) {
        var _importsNamespace = _slicedToArray(importsNamespace, 1),
          nameOfnamespace = _importsNamespace[0];
        metadata.name = nameOfnamespace;
      }
      var resolvedInterop = resolveImportInterop(importInterop, _source, filename);
      if (resolvedInterop === "none") {
        metadata.interop = "none";
      } else if (resolvedInterop === "node" && metadata.interop === "namespace") {
        metadata.interop = "node-namespace";
      } else if (resolvedInterop === "node" && metadata.interop === "default") {
        metadata.interop = "node-default";
      } else if (esNamespaceOnly && metadata.interop === "namespace") {
        metadata.interop = "default";
      }
    }
    return {
      exportName: exportName,
      exportNameListName: null,
      hasExports: hasExports,
      local: local,
      source: sources,
      stringSpecifiers: stringSpecifiers
    };
  }
  function getExportSpecifierName$1(path, stringSpecifiers) {
    if (path.isIdentifier()) {
      return path.node.name;
    } else if (path.isStringLiteral()) {
      var stringValue = path.node.value;
      if (!isIdentifierName(stringValue)) {
        stringSpecifiers.add(stringValue);
      }
      return stringValue;
    } else {
      throw new Error("Expected export specifier to be either Identifier or StringLiteral, got " + path.node.type);
    }
  }
  function assertExportSpecifier(path) {
    if (path.isExportSpecifier()) {
      return;
    } else if (path.isExportNamespaceSpecifier()) {
      throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-transform-export-namespace-from`.");
    } else {
      throw path.buildCodeFrameError("Unexpected export specifier type");
    }
  }
  function getModuleMetadata(programPath, _ref2, stringSpecifiers) {
    var getWrapperPayload = _ref2.getWrapperPayload,
      initializeReexports = _ref2.initializeReexports;
    var localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers);
    var importNodes = new Map();
    var sourceData = new Map();
    var getData = function getData(sourceNode, node) {
      var source = sourceNode.value;
      var data = sourceData.get(source);
      if (!data) {
        data = {
          name: programPath.scope.generateUidIdentifier(basename(source, extname(source))).name,
          interop: "none",
          loc: null,
          imports: new Map(),
          importsNamespace: new Set(),
          reexports: new Map(),
          reexportNamespace: new Set(),
          reexportAll: null,
          wrap: null,
          get lazy() {
            return this.wrap === "lazy";
          },
          referenced: false
        };
        sourceData.set(source, data);
        importNodes.set(source, [node]);
      } else {
        importNodes.get(source).push(node);
      }
      return data;
    };
    var hasExports = false;
    programPath.get("body").forEach(function (child) {
      if (child.isImportDeclaration()) {
        var data = getData(child.node.source, child.node);
        if (!data.loc) data.loc = child.node.loc;
        child.get("specifiers").forEach(function (spec) {
          if (spec.isImportDefaultSpecifier()) {
            var localName = spec.get("local").node.name;
            data.imports.set(localName, "default");
            var reexport = localData.get(localName);
            if (reexport) {
              localData["delete"](localName);
              reexport.names.forEach(function (name) {
                data.reexports.set(name, "default");
              });
              data.referenced = true;
            }
          } else if (spec.isImportNamespaceSpecifier()) {
            var _localName = spec.get("local").node.name;
            data.importsNamespace.add(_localName);
            var _reexport = localData.get(_localName);
            if (_reexport) {
              localData["delete"](_localName);
              _reexport.names.forEach(function (name) {
                data.reexportNamespace.add(name);
              });
              data.referenced = true;
            }
          } else if (spec.isImportSpecifier()) {
            var importName = getExportSpecifierName$1(spec.get("imported"), stringSpecifiers);
            var _localName2 = spec.get("local").node.name;
            data.imports.set(_localName2, importName);
            var _reexport2 = localData.get(_localName2);
            if (_reexport2) {
              localData["delete"](_localName2);
              _reexport2.names.forEach(function (name) {
                data.reexports.set(name, importName);
              });
              data.referenced = true;
            }
          }
        });
      } else if (child.isExportAllDeclaration()) {
        hasExports = true;
        var _data = getData(child.node.source, child.node);
        if (!_data.loc) _data.loc = child.node.loc;
        _data.reexportAll = {
          loc: child.node.loc
        };
        _data.referenced = true;
      } else if (child.isExportNamedDeclaration() && child.node.source) {
        hasExports = true;
        var _data2 = getData(child.node.source, child.node);
        if (!_data2.loc) _data2.loc = child.node.loc;
        child.get("specifiers").forEach(function (spec) {
          assertExportSpecifier(spec);
          var importName = getExportSpecifierName$1(spec.get("local"), stringSpecifiers);
          var exportName = getExportSpecifierName$1(spec.get("exported"), stringSpecifiers);
          _data2.reexports.set(exportName, importName);
          _data2.referenced = true;
          if (exportName === "__esModule") {
            throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".');
          }
        });
      } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) {
        hasExports = true;
      }
    });
    for (var _iterator2 = _createForOfIteratorHelperLoose(sourceData.values()), _step2; !(_step2 = _iterator2()).done;) {
      var _metadata = _step2.value;
      var needsDefault = false;
      var needsNamed = false;
      if (_metadata.importsNamespace.size > 0) {
        needsDefault = true;
        needsNamed = true;
      }
      if (_metadata.reexportAll) {
        needsNamed = true;
      }
      for (var _iterator4 = _createForOfIteratorHelperLoose(_metadata.imports.values()), _step4; !(_step4 = _iterator4()).done;) {
        var importName = _step4.value;
        if (importName === "default") needsDefault = true;else needsNamed = true;
      }
      for (var _iterator5 = _createForOfIteratorHelperLoose(_metadata.reexports.values()), _step5; !(_step5 = _iterator5()).done;) {
        var _importName = _step5.value;
        if (_importName === "default") needsDefault = true;else needsNamed = true;
      }
      if (needsDefault && needsNamed) {
        _metadata.interop = "namespace";
      } else if (needsDefault) {
        _metadata.interop = "default";
      }
    }
    if (getWrapperPayload) {
      for (var _iterator3 = _createForOfIteratorHelperLoose(sourceData), _step3; !(_step3 = _iterator3()).done;) {
        var _step3$value = _slicedToArray(_step3.value, 2),
          _source2 = _step3$value[0],
          metadata = _step3$value[1];
        metadata.wrap = getWrapperPayload(_source2, metadata, importNodes.get(_source2));
      }
    }
    return {
      hasExports: hasExports,
      local: localData,
      sources: sourceData
    };
  }
  function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) {
    var bindingKindLookup = new Map();
    programPath.get("body").forEach(function (child) {
      var kind;
      if (child.isImportDeclaration()) {
        kind = "import";
      } else {
        if (child.isExportDefaultDeclaration()) {
          child = child.get("declaration");
        }
        if (child.isExportNamedDeclaration()) {
          if (child.node.declaration) {
            child = child.get("declaration");
          } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) {
            child.get("specifiers").forEach(function (spec) {
              assertExportSpecifier(spec);
              bindingKindLookup.set(spec.get("local").node.name, "block");
            });
            return;
          }
        }
        if (child.isFunctionDeclaration()) {
          kind = "hoisted";
        } else if (child.isClassDeclaration()) {
          kind = "block";
        } else if (child.isVariableDeclaration({
          kind: "var"
        })) {
          kind = "var";
        } else if (child.isVariableDeclaration()) {
          kind = "block";
        } else {
          return;
        }
      }
      Object.keys(child.getOuterBindingIdentifiers()).forEach(function (name) {
        bindingKindLookup.set(name, kind);
      });
    });
    var localMetadata = new Map();
    var getLocalMetadata = function getLocalMetadata(idPath) {
      var localName = idPath.node.name;
      var metadata = localMetadata.get(localName);
      if (!metadata) {
        var kind = bindingKindLookup.get(localName);
        if (kind === undefined) {
          throw idPath.buildCodeFrameError("Exporting local \"" + localName + "\", which is not declared.");
        }
        metadata = {
          names: [],
          kind: kind
        };
        localMetadata.set(localName, metadata);
      }
      return metadata;
    };
    programPath.get("body").forEach(function (child) {
      if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) {
        if (child.node.declaration) {
          var declaration = child.get("declaration");
          var ids = declaration.getOuterBindingIdentifierPaths();
          Object.keys(ids).forEach(function (name) {
            if (name === "__esModule") {
              throw declaration.buildCodeFrameError('Illegal export "__esModule".');
            }
            getLocalMetadata(ids[name]).names.push(name);
          });
        } else {
          child.get("specifiers").forEach(function (spec) {
            var local = spec.get("local");
            var exported = spec.get("exported");
            var localMetadata = getLocalMetadata(local);
            var exportName = getExportSpecifierName$1(exported, stringSpecifiers);
            if (exportName === "__esModule") {
              throw exported.buildCodeFrameError('Illegal export "__esModule".');
            }
            localMetadata.names.push(exportName);
          });
        }
      } else if (child.isExportDefaultDeclaration()) {
        var _declaration = child.get("declaration");
        if (_declaration.isFunctionDeclaration() || _declaration.isClassDeclaration()) {
          getLocalMetadata(_declaration.get("id")).names.push("default");
        } else {
          throw _declaration.buildCodeFrameError("Unexpected default expression export.");
        }
      }
    });
    return localMetadata;
  }
  function nameAnonymousExports(programPath) {
    programPath.get("body").forEach(function (child) {
      if (!child.isExportDefaultDeclaration()) return;
      child.splitExportDeclaration();
    });
  }
  function removeImportExportDeclarations(programPath) {
    programPath.get("body").forEach(function (child) {
      if (child.isImportDeclaration()) {
        child.remove();
      } else if (child.isExportNamedDeclaration()) {
        if (child.node.declaration) {
          child.node.declaration._blockHoist = child.node._blockHoist;
          child.replaceWith(child.node.declaration);
        } else {
          child.remove();
        }
      } else if (child.isExportDefaultDeclaration()) {
        var declaration = child.get("declaration");
        if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
          declaration._blockHoist = child.node._blockHoist;
          child.replaceWith(declaration);
        } else {
          throw declaration.buildCodeFrameError("Unexpected default expression export.");
        }
      } else if (child.isExportAllDeclaration()) {
        child.remove();
      }
    });
  }

  function toGetWrapperPayload(lazy) {
    return function (source, metadata) {
      if (lazy === false) return null;
      if (isSideEffectImport(metadata) || metadata.reexportAll) return null;
      if (lazy === true) {
        return source.includes(".") ? null : "lazy";
      }
      if (Array.isArray(lazy)) {
        return !lazy.includes(source) ? null : "lazy";
      }
      if (typeof lazy === "function") {
        return lazy(source) ? "lazy" : null;
      }
      throw new Error(".lazy must be a boolean, string array, or function");
    };
  }
  function wrapReference(ref, payload) {
    if (payload === "lazy") return callExpression$c(ref, []);
    return null;
  }

  var _templateObject$z, _templateObject2$j, _templateObject3$f, _templateObject4$a;
  function buildDynamicImport(node, deferToThen, wrapWithPromise, builder) {
    var specifier = isCallExpression$8(node) ? node.arguments[0] : node.source;
    if (isStringLiteral$5(specifier) || isTemplateLiteral$1(specifier) && specifier.quasis.length === 0) {
      if (deferToThen) {
        return template$1.expression.ast(_templateObject$z || (_templateObject$z = _taggedTemplateLiteralLoose(["\n        Promise.resolve().then(() => ", ")\n      "])), builder(specifier));
      } else return builder(specifier);
    }
    var specifierToString = isTemplateLiteral$1(specifier) ? identifier$e("specifier") : templateLiteral([templateElement({
      raw: ""
    }), templateElement({
      raw: ""
    })], [identifier$e("specifier")]);
    if (deferToThen) {
      return template$1.expression.ast(_templateObject2$j || (_templateObject2$j = _taggedTemplateLiteralLoose(["\n      (specifier =>\n        new Promise(r => r(", "))\n          .then(s => ", ")\n      )(", ")\n    "])), specifierToString, builder(identifier$e("s")), specifier);
    } else if (wrapWithPromise) {
      return template$1.expression.ast(_templateObject3$f || (_templateObject3$f = _taggedTemplateLiteralLoose(["\n      (specifier =>\n        new Promise(r => r(", "))\n      )(", ")\n    "])), builder(specifierToString), specifier);
    } else {
      return template$1.expression.ast(_templateObject4$a || (_templateObject4$a = _taggedTemplateLiteralLoose(["\n      (specifier => ", ")(", ")\n    "])), builder(specifierToString), specifier);
    }
  }

  {
    var originalGetModuleName = getModuleName$1;
    getModuleName$1 = function getModuleName(rootOpts, pluginOpts) {
      var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo;
      return originalGetModuleName(rootOpts, {
        moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId,
        moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds,
        getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId,
        moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot
      });
    };
  }
  function getModuleName$1(rootOpts, pluginOpts) {
    var filename = rootOpts.filename,
      _rootOpts$filenameRel = rootOpts.filenameRelative,
      filenameRelative = _rootOpts$filenameRel === void 0 ? filename : _rootOpts$filenameRel,
      _rootOpts$sourceRoot = rootOpts.sourceRoot,
      sourceRoot = _rootOpts$sourceRoot === void 0 ? pluginOpts.moduleRoot : _rootOpts$sourceRoot;
    var moduleId = pluginOpts.moduleId,
      _pluginOpts$moduleIds2 = pluginOpts.moduleIds,
      moduleIds = _pluginOpts$moduleIds2 === void 0 ? !!moduleId : _pluginOpts$moduleIds2,
      getModuleId = pluginOpts.getModuleId,
      _pluginOpts$moduleRoo2 = pluginOpts.moduleRoot,
      moduleRoot = _pluginOpts$moduleRoo2 === void 0 ? sourceRoot : _pluginOpts$moduleRoo2;
    if (!moduleIds) return null;
    if (moduleId != null && !getModuleId) {
      return moduleId;
    }
    var moduleName = moduleRoot != null ? moduleRoot + "/" : "";
    if (filenameRelative) {
      var sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
      moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.\w*$/, "");
    }
    moduleName = moduleName.replace(/\\/g, "/");
    if (getModuleId) {
      return getModuleId(moduleName) || moduleName;
    } else {
      return moduleName;
    }
  }

  var _templateObject$y, _templateObject2$i, _templateObject3$e, _templateObject4$9, _templateObject5$5, _templateObject6$3, _templateObject7$2, _templateObject8$2, _templateObject9$2, _templateObject10$2, _templateObject11$2, _templateObject12$2, _templateObject13$2, _templateObject14$2;
  function rewriteModuleStatementsAndPrepareHeader(path, _ref) {
    var exportName = _ref.exportName,
      strict = _ref.strict,
      allowTopLevelThis = _ref.allowTopLevelThis,
      strictMode = _ref.strictMode,
      noInterop = _ref.noInterop,
      _ref$importInterop = _ref.importInterop,
      importInterop = _ref$importInterop === void 0 ? noInterop ? "none" : "babel" : _ref$importInterop,
      lazy = _ref.lazy,
      _ref$getWrapperPayloa = _ref.getWrapperPayload,
      getWrapperPayload = _ref$getWrapperPayloa === void 0 ? toGetWrapperPayload(lazy != null ? lazy : false) : _ref$getWrapperPayloa,
      _ref$wrapReference = _ref.wrapReference,
      wrapReference$1 = _ref$wrapReference === void 0 ? wrapReference : _ref$wrapReference,
      esNamespaceOnly = _ref.esNamespaceOnly,
      filename = _ref.filename,
      _ref$constantReexport = _ref.constantReexports,
      constantReexports = _ref$constantReexport === void 0 ? arguments[1].loose : _ref$constantReexport,
      _ref$enumerableModule = _ref.enumerableModuleMeta,
      enumerableModuleMeta = _ref$enumerableModule === void 0 ? arguments[1].loose : _ref$enumerableModule,
      noIncompleteNsImportDetection = _ref.noIncompleteNsImportDetection;
    validateImportInteropOption(importInterop);
    assert(isModule(path), "Cannot process module statements in a script");
    path.node.sourceType = "script";
    var meta = normalizeModuleAndLoadMetadata(path, exportName, {
      importInterop: importInterop,
      initializeReexports: constantReexports,
      getWrapperPayload: getWrapperPayload,
      esNamespaceOnly: esNamespaceOnly,
      filename: filename
    });
    if (!allowTopLevelThis) {
      rewriteThis(path);
    }
    rewriteLiveReferences(path, meta, wrapReference$1);
    if (strictMode !== false) {
      var hasStrict = path.node.directives.some(function (directive) {
        return directive.value.value === "use strict";
      });
      if (!hasStrict) {
        path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
      }
    }
    var headers = [];
    if (hasExports(meta) && !strict) {
      headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
    }
    var nameList = buildExportNameListDeclaration(path, meta);
    if (nameList) {
      meta.exportNameListName = nameList.name;
      headers.push(nameList.statement);
    }
    headers.push.apply(headers, _toConsumableArray(buildExportInitializationStatements(path, meta, wrapReference$1, constantReexports, noIncompleteNsImportDetection)));
    return {
      meta: meta,
      headers: headers
    };
  }
  function ensureStatementsHoisted(statements) {
    statements.forEach(function (header) {
      header._blockHoist = 3;
    });
  }
  function wrapInterop(programPath, expr, type) {
    if (type === "none") {
      return null;
    }
    if (type === "node-namespace") {
      return callExpression$c(programPath.hub.addHelper("interopRequireWildcard"), [expr, booleanLiteral$2(true)]);
    } else if (type === "node-default") {
      return null;
    }
    var helper;
    if (type === "default") {
      helper = "interopRequireDefault";
    } else if (type === "namespace") {
      helper = "interopRequireWildcard";
    } else {
      throw new Error("Unknown interop: " + type);
    }
    return callExpression$c(programPath.hub.addHelper(helper), [expr]);
  }
  function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports, wrapReference$1) {
    var _wrapReference;
    if (constantReexports === void 0) {
      constantReexports = false;
    }
    if (wrapReference$1 === void 0) {
      wrapReference$1 = wrapReference;
    }
    var statements = [];
    var srcNamespaceId = identifier$e(sourceMetadata.name);
    for (var _iterator = _createForOfIteratorHelperLoose(sourceMetadata.importsNamespace), _step; !(_step = _iterator()).done;) {
      var localName = _step.value;
      if (localName === sourceMetadata.name) continue;
      statements.push(template$1.statement(_templateObject$y || (_templateObject$y = _taggedTemplateLiteralLoose(["var NAME = SOURCE;"])))({
        NAME: localName,
        SOURCE: cloneNode$g(srcNamespaceId)
      }));
    }
    var srcNamespace = (_wrapReference = wrapReference$1(srcNamespaceId, sourceMetadata.wrap)) != null ? _wrapReference : srcNamespaceId;
    if (constantReexports) {
      statements.push.apply(statements, _toConsumableArray(buildReexportsFromMeta(metadata, sourceMetadata, true, wrapReference$1)));
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(sourceMetadata.reexportNamespace), _step2; !(_step2 = _iterator2()).done;) {
      var exportName = _step2.value;
      statements.push((!isIdentifier$f(srcNamespace) ? template$1.statement(_templateObject2$i || (_templateObject2$i = _taggedTemplateLiteralLoose(["\n            Object.defineProperty(EXPORTS, \"NAME\", {\n              enumerable: true,\n              get: function() {\n                return NAMESPACE;\n              }\n            });\n          "]))) : template$1.statement(_templateObject3$e || (_templateObject3$e = _taggedTemplateLiteralLoose(["EXPORTS.NAME = NAMESPACE;"]))))({
        EXPORTS: metadata.exportName,
        NAME: exportName,
        NAMESPACE: cloneNode$g(srcNamespace)
      }));
    }
    if (sourceMetadata.reexportAll) {
      var statement = buildNamespaceReexport(metadata, cloneNode$g(srcNamespace), constantReexports);
      statement.loc = sourceMetadata.reexportAll.loc;
      statements.push(statement);
    }
    return statements;
  }
  var ReexportTemplate = {
    constant: function constant(_ref2) {
      var exports = _ref2.exports,
        exportName = _ref2.exportName,
        namespaceImport = _ref2.namespaceImport;
      return template$1.statement.ast(_templateObject4$9 || (_templateObject4$9 = _taggedTemplateLiteralLoose(["\n      ", ".", " = ", ";\n    "])), exports, exportName, namespaceImport);
    },
    constantComputed: function constantComputed(_ref3) {
      var exports = _ref3.exports,
        exportName = _ref3.exportName,
        namespaceImport = _ref3.namespaceImport;
      return template$1.statement.ast(_templateObject5$5 || (_templateObject5$5 = _taggedTemplateLiteralLoose(["\n      ", "[\"", "\"] = ", ";\n    "])), exports, exportName, namespaceImport);
    },
    spec: function spec(_ref4) {
      var exports = _ref4.exports,
        exportName = _ref4.exportName,
        namespaceImport = _ref4.namespaceImport;
      return template$1.statement.ast(_templateObject6$3 || (_templateObject6$3 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", \"", "\", {\n        enumerable: true,\n        get: function() {\n          return ", ";\n        },\n      });\n    "])), exports, exportName, namespaceImport);
    }
  };
  function buildReexportsFromMeta(meta, metadata, constantReexports, wrapReference) {
    var _wrapReference2;
    var namespace = identifier$e(metadata.name);
    namespace = (_wrapReference2 = wrapReference(namespace, metadata.wrap)) != null ? _wrapReference2 : namespace;
    var stringSpecifiers = meta.stringSpecifiers;
    return Array.from(metadata.reexports, function (_ref5) {
      var _ref6 = _slicedToArray(_ref5, 2),
        exportName = _ref6[0],
        importName = _ref6[1];
      var namespaceImport = cloneNode$g(namespace);
      if (importName === "default" && metadata.interop === "node-default") ; else if (stringSpecifiers.has(importName)) {
        namespaceImport = memberExpression$a(namespaceImport, stringLiteral$6(importName), true);
      } else {
        namespaceImport = memberExpression$a(namespaceImport, identifier$e(importName));
      }
      var astNodes = {
        exports: meta.exportName,
        exportName: exportName,
        namespaceImport: namespaceImport
      };
      if (constantReexports || isIdentifier$f(namespaceImport)) {
        if (stringSpecifiers.has(exportName)) {
          return ReexportTemplate.constantComputed(astNodes);
        } else {
          return ReexportTemplate.constant(astNodes);
        }
      } else {
        return ReexportTemplate.spec(astNodes);
      }
    });
  }
  function buildESModuleHeader(metadata, enumerableModuleMeta) {
    if (enumerableModuleMeta === void 0) {
      enumerableModuleMeta = false;
    }
    return (enumerableModuleMeta ? template$1.statement(_templateObject7$2 || (_templateObject7$2 = _taggedTemplateLiteralLoose(["\n        EXPORTS.__esModule = true;\n      "]))) : template$1.statement(_templateObject8$2 || (_templateObject8$2 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(EXPORTS, \"__esModule\", {\n          value: true,\n        });\n      "]))))({
      EXPORTS: metadata.exportName
    });
  }
  function buildNamespaceReexport(metadata, namespace, constantReexports) {
    return (constantReexports ? template$1.statement(_templateObject9$2 || (_templateObject9$2 = _taggedTemplateLiteralLoose(["\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          EXPORTS[key] = NAMESPACE[key];\n        });\n      "]))) : template$1.statement(_templateObject10$2 || (_templateObject10$2 = _taggedTemplateLiteralLoose(["\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          Object.defineProperty(EXPORTS, key, {\n            enumerable: true,\n            get: function() {\n              return NAMESPACE[key];\n            },\n          });\n        });\n    "]))))({
      NAMESPACE: namespace,
      EXPORTS: metadata.exportName,
      VERIFY_NAME_LIST: metadata.exportNameListName ? template$1(_templateObject11$2 || (_templateObject11$2 = _taggedTemplateLiteralLoose(["\n            if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;\n          "])))({
        EXPORTS_LIST: metadata.exportNameListName
      }) : null
    });
  }
  function buildExportNameListDeclaration(programPath, metadata) {
    var exportedVars = Object.create(null);
    for (var _iterator3 = _createForOfIteratorHelperLoose(metadata.local.values()), _step3; !(_step3 = _iterator3()).done;) {
      var data = _step3.value;
      for (var _iterator5 = _createForOfIteratorHelperLoose(data.names), _step5; !(_step5 = _iterator5()).done;) {
        var _name = _step5.value;
        exportedVars[_name] = true;
      }
    }
    var hasReexport = false;
    for (var _iterator4 = _createForOfIteratorHelperLoose(metadata.source.values()), _step4; !(_step4 = _iterator4()).done;) {
      var _data = _step4.value;
      for (var _iterator6 = _createForOfIteratorHelperLoose(_data.reexports.keys()), _step6; !(_step6 = _iterator6()).done;) {
        var exportName = _step6.value;
        exportedVars[exportName] = true;
      }
      for (var _iterator7 = _createForOfIteratorHelperLoose(_data.reexportNamespace), _step7; !(_step7 = _iterator7()).done;) {
        var _exportName = _step7.value;
        exportedVars[_exportName] = true;
      }
      hasReexport = hasReexport || !!_data.reexportAll;
    }
    if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
    var name = programPath.scope.generateUidIdentifier("exportNames");
    delete exportedVars["default"];
    return {
      name: name.name,
      statement: variableDeclaration$6("var", [variableDeclarator$6(name, valueToNode(exportedVars))])
    };
  }
  function buildExportInitializationStatements(programPath, metadata, wrapReference, constantReexports, noIncompleteNsImportDetection) {
    if (constantReexports === void 0) {
      constantReexports = false;
    }
    if (noIncompleteNsImportDetection === void 0) {
      noIncompleteNsImportDetection = false;
    }
    var initStatements = [];
    for (var _iterator8 = _createForOfIteratorHelperLoose(metadata.local), _step8; !(_step8 = _iterator8()).done;) {
      var _step8$value = _slicedToArray(_step8.value, 2),
        localName = _step8$value[0],
        data = _step8$value[1];
      if (data.kind === "import") ; else if (data.kind === "hoisted") {
        initStatements.push([data.names[0], buildInitStatement(metadata, data.names, identifier$e(localName))]);
      } else if (!noIncompleteNsImportDetection) {
        for (var _iterator11 = _createForOfIteratorHelperLoose(data.names), _step11; !(_step11 = _iterator11()).done;) {
          var _exportName2 = _step11.value;
          initStatements.push([_exportName2, null]);
        }
      }
    }
    for (var _iterator9 = _createForOfIteratorHelperLoose(metadata.source.values()), _step9; !(_step9 = _iterator9()).done;) {
      var _data2 = _step9.value;
      if (!constantReexports) {
        var reexportsStatements = buildReexportsFromMeta(metadata, _data2, false, wrapReference);
        var reexports = _toConsumableArray(_data2.reexports.keys());
        for (var _i = 0; _i < reexportsStatements.length; _i++) {
          initStatements.push([reexports[_i], reexportsStatements[_i]]);
        }
      }
      if (!noIncompleteNsImportDetection) {
        for (var _iterator12 = _createForOfIteratorHelperLoose(_data2.reexportNamespace), _step12; !(_step12 = _iterator12()).done;) {
          var _exportName3 = _step12.value;
          initStatements.push([_exportName3, null]);
        }
      }
    }
    initStatements.sort(function (_ref7, _ref8) {
      var _ref9 = _slicedToArray(_ref7, 1),
        a = _ref9[0];
      var _ref10 = _slicedToArray(_ref8, 1),
        b = _ref10[0];
      if (a < b) return -1;
      if (b < a) return 1;
      return 0;
    });
    var results = [];
    if (noIncompleteNsImportDetection) {
      for (var _iterator10 = _createForOfIteratorHelperLoose(initStatements), _step10; !(_step10 = _iterator10()).done;) {
        var _step10$value = _slicedToArray(_step10.value, 2),
          initStatement = _step10$value[1];
        results.push(initStatement);
      }
    } else {
      var chunkSize = 100;
      for (var i = 0; i < initStatements.length; i += chunkSize) {
        var uninitializedExportNames = [];
        for (var j = 0; j < chunkSize && i + j < initStatements.length; j++) {
          var _initStatements = _slicedToArray(initStatements[i + j], 2),
            exportName = _initStatements[0],
            _initStatement = _initStatements[1];
          if (_initStatement !== null) {
            if (uninitializedExportNames.length > 0) {
              results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
              uninitializedExportNames = [];
            }
            results.push(_initStatement);
          } else {
            uninitializedExportNames.push(exportName);
          }
        }
        if (uninitializedExportNames.length > 0) {
          results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
        }
      }
    }
    return results;
  }
  var InitTemplate = {
    computed: function computed(_ref11) {
      var exports = _ref11.exports,
        name = _ref11.name,
        value = _ref11.value;
      return template$1.expression.ast(_templateObject12$2 || (_templateObject12$2 = _taggedTemplateLiteralLoose(["", "[\"", "\"] = ", ""])), exports, name, value);
    },
    "default": function _default(_ref12) {
      var exports = _ref12.exports,
        name = _ref12.name,
        value = _ref12.value;
      return template$1.expression.ast(_templateObject13$2 || (_templateObject13$2 = _taggedTemplateLiteralLoose(["", ".", " = ", ""])), exports, name, value);
    },
    define: function define(_ref13) {
      var exports = _ref13.exports,
        name = _ref13.name,
        value = _ref13.value;
      return template$1.expression.ast(_templateObject14$2 || (_templateObject14$2 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", \"", "\", {\n        enumerable: true,\n        value: void 0,\n        writable: true\n      })[\"", "\"] = ", ""])), exports, name, name, value);
    }
  };
  function buildInitStatement(metadata, exportNames, initExpr) {
    var stringSpecifiers = metadata.stringSpecifiers,
      exports = metadata.exportName;
    return expressionStatement$7(exportNames.reduce(function (value, name) {
      var params = {
        exports: exports,
        name: name,
        value: value
      };
      if (name === "__proto__") {
        return InitTemplate.define(params);
      }
      if (stringSpecifiers.has(name)) {
        return InitTemplate.computed(params);
      }
      return InitTemplate["default"](params);
    }, initExpr));
  }

  var src$1 = /*#__PURE__*/Object.freeze({
    __proto__: null,
    buildDynamicImport: buildDynamicImport,
    buildNamespaceInitStatements: buildNamespaceInitStatements,
    ensureStatementsHoisted: ensureStatementsHoisted,
    getModuleName: getModuleName$1,
    hasExports: hasExports,
    isModule: isModule,
    isSideEffectImport: isSideEffectImport,
    rewriteModuleStatementsAndPrepareHeader: rewriteModuleStatementsAndPrepareHeader,
    rewriteThis: rewriteThis,
    wrapInterop: wrapInterop
  });

  var require$$0$9 = /*@__PURE__*/getAugmentedNamespace(src$1);

  var getModuleName = function () {
    return require$$0$9.getModuleName;
  };

  var cloneNode$6 = cloneNode$g,
    interpreterDirective = interpreterDirective$1;
  var errorVisitor = {
    enter: function enter(path, state) {
      var loc = path.node.loc;
      if (loc) {
        state.loc = loc;
        path.stop();
      }
    }
  };
  var File = function () {
    function File(options, _ref) {
      var _this = this;
      var code = _ref.code,
        ast = _ref.ast,
        inputMap = _ref.inputMap;
      this._map = new Map();
      this.opts = void 0;
      this.declarations = {};
      this.path = void 0;
      this.ast = void 0;
      this.scope = void 0;
      this.metadata = {};
      this.code = "";
      this.inputMap = void 0;
      this.hub = {
        file: this,
        getCode: function getCode() {
          return _this.code;
        },
        getScope: function getScope() {
          return _this.scope;
        },
        addHelper: this.addHelper.bind(this),
        buildError: this.buildCodeFrameError.bind(this)
      };
      this.opts = options;
      this.code = code;
      this.ast = ast;
      this.inputMap = inputMap;
      this.path = NodePath_Final.get({
        hub: this.hub,
        parentPath: null,
        parent: this.ast,
        container: this.ast,
        key: "program"
      }).setContext();
      this.scope = this.path.scope;
    }
    var _proto = File.prototype;
    _proto.set = function set(key, val) {
      {
        if (key === "helpersNamespace") {
          throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'.");
        }
      }
      this._map.set(key, val);
    };
    _proto.get = function get(key) {
      return this._map.get(key);
    };
    _proto.has = function has(key) {
      return this._map.has(key);
    };
    _proto.availableHelper = function availableHelper(name, versionRange) {
      var minVersion$1;
      try {
        minVersion$1 = minVersion(name);
      } catch (err) {
        if (err.code !== "BABEL_HELPER_UNKNOWN") throw err;
        return false;
      }
      if (typeof versionRange !== "string") return true;
      if (semver$9.valid(versionRange)) versionRange = "^" + versionRange;
      {
        return !semver$9.intersects("<" + minVersion$1, versionRange) && !semver$9.intersects(">=8.0.0", versionRange);
      }
    };
    _proto.addHelper = function addHelper(name) {
      var _this2 = this;
      var declar = this.declarations[name];
      if (declar) return cloneNode$6(declar);
      var generator = this.get("helperGenerator");
      if (generator) {
        var res = generator(name);
        if (res) return res;
      }
      minVersion(name);
      var uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
      var dependencies = {};
      for (var _iterator = _createForOfIteratorHelperLoose(getDependencies(name)), _step; !(_step = _iterator()).done;) {
        var dep = _step.value;
        dependencies[dep] = this.addHelper(dep);
      }
      var _helpers$get = get$2(name, function (dep) {
          return dependencies[dep];
        }, uid.name, Object.keys(this.scope.getAllBindings())),
        nodes = _helpers$get.nodes,
        globals = _helpers$get.globals;
      globals.forEach(function (name) {
        if (_this2.path.scope.hasBinding(name, true)) {
          _this2.path.scope.rename(name);
        }
      });
      nodes.forEach(function (node) {
        node._compact = true;
      });
      var added = this.path.unshiftContainer("body", nodes);
      for (var _iterator2 = _createForOfIteratorHelperLoose(added), _step2; !(_step2 = _iterator2()).done;) {
        var path = _step2.value;
        if (path.isVariableDeclaration()) this.scope.registerDeclaration(path);
      }
      return uid;
    };
    _proto.buildCodeFrameError = function buildCodeFrameError(node, msg, _Error) {
      if (_Error === void 0) {
        _Error = SyntaxError;
      }
      var loc = node == null ? void 0 : node.loc;
      if (!loc && node) {
        var state = {
          loc: null
        };
        traverse(node, errorVisitor, this.scope, state);
        loc = state.loc;
        var txt = "This is an error on an internal node. Probably an internal error.";
        if (loc) txt += " Location has been estimated.";
        msg += " (" + txt + ")";
      }
      if (loc) {
        var _this$opts$highlightC = this.opts.highlightCode,
          highlightCode = _this$opts$highlightC === void 0 ? true : _this$opts$highlightC;
        msg += "\n" + codeFrameColumns(this.code, {
          start: {
            line: loc.start.line,
            column: loc.start.column + 1
          },
          end: loc.end && loc.start.line === loc.end.line ? {
            line: loc.end.line,
            column: loc.end.column + 1
          } : undefined
        }, {
          highlightCode: highlightCode
        });
      }
      return new _Error(msg);
    };
    return _createClass(File, [{
      key: "shebang",
      get: function get() {
        var interpreter = this.path.node.interpreter;
        return interpreter ? interpreter.value : "";
      },
      set: function set(value) {
        if (value) {
          this.path.get("interpreter").replaceWith(interpreterDirective(value));
        } else {
          this.path.get("interpreter").remove();
        }
      }
    }]);
  }();
  {
    File.prototype.addImport = function addImport() {
      throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'.");
    };
    File.prototype.addTemplateObject = function addTemplateObject() {
      throw new Error("This function has been moved into the template literal transform itself.");
    };
    {
      File.prototype.getModuleName = function getModuleName$1() {
        return getModuleName()(this.opts, this.opts);
      };
    }
  }

  var _templateObject$x;
  var arrayExpression = arrayExpression$1,
    assignmentExpression$5 = assignmentExpression$b,
    binaryExpression$2 = binaryExpression$5,
    blockStatement$1 = blockStatement$6,
    callExpression$6 = callExpression$c,
    cloneNode$5 = cloneNode$g,
    conditionalExpression$2 = conditionalExpression$5,
    exportNamedDeclaration = exportNamedDeclaration$2,
    exportSpecifier = exportSpecifier$2,
    expressionStatement = expressionStatement$7,
    functionExpression$1 = functionExpression$2,
    identifier$4 = identifier$e,
    memberExpression$6 = memberExpression$a,
    objectExpression$1 = objectExpression$3,
    program = program$3,
    stringLiteral$2 = stringLiteral$6,
    unaryExpression$1 = unaryExpression$5,
    variableDeclaration$1 = variableDeclaration$6,
    variableDeclarator$1 = variableDeclarator$6;
  var buildUmdWrapper = function buildUmdWrapper(replacements) {
    return template$1.statement(_templateObject$x || (_templateObject$x = _taggedTemplateLiteralLoose(["\n    (function (root, factory) {\n      if (typeof define === \"function\" && define.amd) {\n        define(AMD_ARGUMENTS, factory);\n      } else if (typeof exports === \"object\") {\n        factory(COMMON_ARGUMENTS);\n      } else {\n        factory(BROWSER_ARGUMENTS);\n      }\n    })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n      FACTORY_BODY\n    });\n  "])))(replacements);
  };
  function buildGlobal(allowlist) {
    var namespace = identifier$4("babelHelpers");
    var body = [];
    var container = functionExpression$1(null, [identifier$4("global")], blockStatement$1(body));
    var tree = program([expressionStatement(callExpression$6(container, [conditionalExpression$2(binaryExpression$2("===", unaryExpression$1("typeof", identifier$4("global")), stringLiteral$2("undefined")), identifier$4("self"), identifier$4("global"))]))]);
    body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, assignmentExpression$5("=", memberExpression$6(identifier$4("global"), namespace), objectExpression$1([])))]));
    buildHelpers(body, namespace, allowlist);
    return tree;
  }
  function buildModule(allowlist) {
    var body = [];
    var refs = buildHelpers(body, null, allowlist);
    body.unshift(exportNamedDeclaration(null, Object.keys(refs).map(function (name) {
      return exportSpecifier(cloneNode$5(refs[name]), identifier$4(name));
    })));
    return program(body, [], "module");
  }
  function buildUmd(allowlist) {
    var namespace = identifier$4("babelHelpers");
    var body = [];
    body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, identifier$4("global"))]));
    buildHelpers(body, namespace, allowlist);
    return program([buildUmdWrapper({
      FACTORY_PARAMETERS: identifier$4("global"),
      BROWSER_ARGUMENTS: assignmentExpression$5("=", memberExpression$6(identifier$4("root"), namespace), objectExpression$1([])),
      COMMON_ARGUMENTS: identifier$4("exports"),
      AMD_ARGUMENTS: arrayExpression([stringLiteral$2("exports")]),
      FACTORY_BODY: body,
      UMD_ROOT: identifier$4("this")
    })]);
  }
  function buildVar(allowlist) {
    var namespace = identifier$4("babelHelpers");
    var body = [];
    body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, objectExpression$1([]))]));
    var tree = program(body);
    buildHelpers(body, namespace, allowlist);
    body.push(expressionStatement(namespace));
    return tree;
  }
  function buildHelpers(body, namespace, allowlist) {
    var getHelperReference = function getHelperReference(name) {
      return namespace ? memberExpression$6(namespace, identifier$4(name)) : identifier$4("_" + name);
    };
    var refs = {};
    list.forEach(function (name) {
      if (allowlist && !allowlist.includes(name)) return;
      var ref = refs[name] = getHelperReference(name);
      var _helpers$get = get$2(name, getHelperReference, namespace ? null : "_" + name, [], namespace ? function (ast, exportName, mapExportBindingAssignments) {
          mapExportBindingAssignments(function (node) {
            return assignmentExpression$5("=", ref, node);
          });
          ast.body.push(expressionStatement(assignmentExpression$5("=", ref, identifier$4(exportName))));
        } : null),
        nodes = _helpers$get.nodes;
      body.push.apply(body, _toConsumableArray(nodes));
    });
    return refs;
  }
  function babelBuildExternalHelpers (allowlist, outputType) {
    if (outputType === void 0) {
      outputType = "global";
    }
    var tree;
    var build = {
      global: buildGlobal,
      module: buildModule,
      umd: buildUmd,
      "var": buildVar
    }[outputType];
    if (build) {
      tree = build(allowlist);
    } else {
      throw new Error("Unsupported output type " + outputType);
    }
    return generate$1(tree).code;
  }

  var _marked$9 = _regeneratorRuntime().mark(findPackageData),
    _marked2$7 = _regeneratorRuntime().mark(findRelativeConfig),
    _marked3$4 = _regeneratorRuntime().mark(findRootConfig),
    _marked4$2 = _regeneratorRuntime().mark(loadConfig$1),
    _marked5 = _regeneratorRuntime().mark(resolveShowConfigPath);
  function findConfigUpwards(rootDir) {
    return null;
  }
  function findPackageData(filepath) {
    return _regeneratorRuntime().wrap(function findPackageData$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.abrupt("return", {
            filepath: filepath,
            directories: [],
            pkg: null,
            isPackage: false
          });
        case 1:
        case "end":
          return _context.stop();
      }
    }, _marked$9);
  }
  function findRelativeConfig(pkgData, envName, caller) {
    return _regeneratorRuntime().wrap(function findRelativeConfig$(_context2) {
      while (1) switch (_context2.prev = _context2.next) {
        case 0:
          return _context2.abrupt("return", {
            config: null,
            ignore: null
          });
        case 1:
        case "end":
          return _context2.stop();
      }
    }, _marked2$7);
  }
  function findRootConfig(dirname, envName, caller) {
    return _regeneratorRuntime().wrap(function findRootConfig$(_context3) {
      while (1) switch (_context3.prev = _context3.next) {
        case 0:
          return _context3.abrupt("return", null);
        case 1:
        case "end":
          return _context3.stop();
      }
    }, _marked3$4);
  }
  function loadConfig$1(name, dirname, envName, caller) {
    return _regeneratorRuntime().wrap(function loadConfig$(_context4) {
      while (1) switch (_context4.prev = _context4.next) {
        case 0:
          throw new Error("Cannot load " + name + " relative to " + dirname + " in a browser");
        case 1:
        case "end":
          return _context4.stop();
      }
    }, _marked4$2);
  }
  function resolveShowConfigPath(dirname) {
    return _regeneratorRuntime().wrap(function resolveShowConfigPath$(_context5) {
      while (1) switch (_context5.prev = _context5.next) {
        case 0:
          return _context5.abrupt("return", null);
        case 1:
        case "end":
          return _context5.stop();
      }
    }, _marked5);
  }
  var ROOT_CONFIG_FILENAMES = [];
  function resolvePlugin(name, dirname) {
    return null;
  }
  function resolvePreset(name, dirname) {
    return null;
  }
  function loadPlugin(name, dirname) {
    throw new Error("Cannot load plugin " + name + " relative to " + dirname + " in a browser");
  }
  function loadPreset(name, dirname) {
    throw new Error("Cannot load preset " + name + " relative to " + dirname + " in a browser");
  }

  function getEnv(defaultValue) {
    if (defaultValue === void 0) {
      defaultValue = "development";
    }
    return browser$1$1.env.BABEL_ENV || "production" || defaultValue;
  }

  var GENSYNC_START = Symbol["for"]("gensync:v1:start");
  var GENSYNC_SUSPEND = Symbol["for"]("gensync:v1:suspend");
  var GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START";
  var GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND";
  var GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR";
  var GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY";
  var GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK";
  var gensync = Object.assign(function gensync(optsOrFn) {
    var genFn = optsOrFn;
    if (typeof optsOrFn !== "function") {
      genFn = newGenerator(optsOrFn);
    } else {
      genFn = wrapGenerator(optsOrFn);
    }
    return Object.assign(genFn, makeFunctionAPI(genFn));
  }, {
    all: buildOperation({
      name: "all",
      arity: 1,
      sync: function sync(args) {
        var items = Array.from(args[0]);
        return items.map(function (item) {
          return evaluateSync(item);
        });
      },
      async: function async(args, resolve, reject) {
        var items = Array.from(args[0]);
        if (items.length === 0) {
          Promise.resolve().then(function () {
            return resolve([]);
          });
          return;
        }
        var count = 0;
        var results = items.map(function () {
          return undefined;
        });
        items.forEach(function (item, i) {
          evaluateAsync(item, function (val) {
            results[i] = val;
            count += 1;
            if (count === results.length) resolve(results);
          }, reject);
        });
      }
    }),
    race: buildOperation({
      name: "race",
      arity: 1,
      sync: function sync(args) {
        var items = Array.from(args[0]);
        if (items.length === 0) {
          throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
        }
        return evaluateSync(items[0]);
      },
      async: function async(args, resolve, reject) {
        var items = Array.from(args[0]);
        if (items.length === 0) {
          throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
        }
        for (var _i = 0, _items = items; _i < _items.length; _i++) {
          var item = _items[_i];
          evaluateAsync(item, resolve, reject);
        }
      }
    })
  });
  function makeFunctionAPI(genFn) {
    var fns = {
      sync: function sync() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        return evaluateSync(genFn.apply(this, args));
      },
      async: function async() {
        var _this = this;
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        return new Promise(function (resolve, reject) {
          evaluateAsync(genFn.apply(_this, args), resolve, reject);
        });
      },
      errback: function errback() {
        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
          args[_key3] = arguments[_key3];
        }
        var cb = args.pop();
        if (typeof cb !== "function") {
          throw makeError("Asynchronous function called without callback", GENSYNC_ERRBACK_NO_CALLBACK);
        }
        var gen;
        try {
          gen = genFn.apply(this, args);
        } catch (err) {
          cb(err);
          return;
        }
        evaluateAsync(gen, function (val) {
          return cb(undefined, val);
        }, function (err) {
          return cb(err);
        });
      }
    };
    return fns;
  }
  function assertTypeof(type, name, value, allowUndefined) {
    if (typeof value === type || allowUndefined && typeof value === "undefined") {
      return;
    }
    var msg;
    if (allowUndefined) {
      msg = "Expected opts." + name + " to be either a " + type + ", or undefined.";
    } else {
      msg = "Expected opts." + name + " to be a " + type + ".";
    }
    throw makeError(msg, GENSYNC_OPTIONS_ERROR);
  }
  function makeError(msg, code) {
    return Object.assign(new Error(msg), {
      code: code
    });
  }
  function newGenerator(_ref) {
    var name = _ref.name,
      arity = _ref.arity,
      _sync = _ref.sync,
      _async = _ref.async,
      errback = _ref.errback;
    assertTypeof("string", "name", name, true);
    assertTypeof("number", "arity", arity, true);
    assertTypeof("function", "sync", _sync);
    assertTypeof("function", "async", _async, true);
    assertTypeof("function", "errback", errback, true);
    if (_async && errback) {
      throw makeError("Expected one of either opts.async or opts.errback, but got _both_.", GENSYNC_OPTIONS_ERROR);
    }
    if (typeof name !== "string") {
      var fnName;
      if (errback && errback.name && errback.name !== "errback") {
        fnName = errback.name;
      }
      if (_async && _async.name && _async.name !== "async") {
        fnName = _async.name.replace(/Async$/, "");
      }
      if (_sync && _sync.name && _sync.name !== "sync") {
        fnName = _sync.name.replace(/Sync$/, "");
      }
      if (typeof fnName === "string") {
        name = fnName;
      }
    }
    if (typeof arity !== "number") {
      arity = _sync.length;
    }
    return buildOperation({
      name: name,
      arity: arity,
      sync: function sync(args) {
        return _sync.apply(this, args);
      },
      async: function async(args, resolve, reject) {
        if (_async) {
          _async.apply(this, args).then(resolve, reject);
        } else if (errback) {
          errback.call.apply(errback, [this].concat(_toConsumableArray(args), [function (err, value) {
            if (err == null) resolve(value);else reject(err);
          }]));
        } else {
          resolve(_sync.apply(this, args));
        }
      }
    });
  }
  function wrapGenerator(genFn) {
    return setFunctionMetadata(genFn.name, genFn.length, function () {
      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
        args[_key4] = arguments[_key4];
      }
      return genFn.apply(this, args);
    });
  }
  function buildOperation(_ref2) {
    var name = _ref2.name,
      arity = _ref2.arity,
      sync = _ref2.sync,
      async = _ref2.async;
    return setFunctionMetadata(name, arity, _regeneratorRuntime().mark(function _callee() {
      var resume,
        _len5,
        args,
        _key5,
        res,
        result,
        _args = arguments;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            _context.next = 2;
            return GENSYNC_START;
          case 2:
            resume = _context.sent;
            for (_len5 = _args.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
              args[_key5] = _args[_key5];
            }
            if (resume) {
              _context.next = 7;
              break;
            }
            res = sync.call(this, args);
            return _context.abrupt("return", res);
          case 7:
            try {
              async.call(this, args, function (value) {
                if (result) return;
                result = {
                  value: value
                };
                resume();
              }, function (err) {
                if (result) return;
                result = {
                  err: err
                };
                resume();
              });
            } catch (err) {
              result = {
                err: err
              };
              resume();
            }
            _context.next = 10;
            return GENSYNC_SUSPEND;
          case 10:
            if (!result.hasOwnProperty("err")) {
              _context.next = 12;
              break;
            }
            throw result.err;
          case 12:
            return _context.abrupt("return", result.value);
          case 13:
          case "end":
            return _context.stop();
        }
      }, _callee, this);
    }));
  }
  function evaluateSync(gen) {
    var value;
    while (!(_gen$next = gen.next(), value = _gen$next.value, _gen$next).done) {
      var _gen$next;
      assertStart(value, gen);
    }
    return value;
  }
  function evaluateAsync(gen, resolve, reject) {
    (function step() {
      try {
        var value;
        var _loop = function _loop() {
            assertStart(value, gen);
            var sync = true;
            var didSyncResume = false;
            var out = gen.next(function () {
              if (sync) {
                didSyncResume = true;
              } else {
                step();
              }
            });
            sync = false;
            assertSuspend(out, gen);
            if (!didSyncResume) {
              return {
                v: void 0
              };
            }
          },
          _ret;
        while (!(_gen$next2 = gen.next(), value = _gen$next2.value, _gen$next2).done) {
          var _gen$next2;
          _ret = _loop();
          if (_ret) return _ret.v;
        }
        return resolve(value);
      } catch (err) {
        return reject(err);
      }
    })();
  }
  function assertStart(value, gen) {
    if (value === GENSYNC_START) return;
    throwError(gen, makeError("Got unexpected yielded value in gensync generator: " + JSON.stringify(value) + ". Did you perhaps mean to use 'yield*' instead of 'yield'?", GENSYNC_EXPECTED_START));
  }
  function assertSuspend(_ref3, gen) {
    var value = _ref3.value,
      done = _ref3.done;
    if (!done && value === GENSYNC_SUSPEND) return;
    throwError(gen, makeError(done ? "Unexpected generator completion. If you get this, it is probably a gensync bug." : "Expected GENSYNC_SUSPEND, got " + JSON.stringify(value) + ". If you get this, it is probably a gensync bug.", GENSYNC_EXPECTED_SUSPEND));
  }
  function throwError(gen, err) {
    if (gen["throw"]) gen["throw"](err);
    throw err;
  }
  function setFunctionMetadata(name, arity, fn) {
    if (typeof name === "string") {
      var nameDesc = Object.getOwnPropertyDescriptor(fn, "name");
      if (!nameDesc || nameDesc.configurable) {
        Object.defineProperty(fn, "name", Object.assign(nameDesc || {}, {
          configurable: true,
          value: name
        }));
      }
    }
    if (typeof arity === "number") {
      var lengthDesc = Object.getOwnPropertyDescriptor(fn, "length");
      if (!lengthDesc || lengthDesc.configurable) {
        Object.defineProperty(fn, "length", Object.assign(lengthDesc || {}, {
          configurable: true,
          value: arity
        }));
      }
    }
    return fn;
  }

  var runGenerator = gensync(_regeneratorRuntime().mark(function _callee(item) {
    return _regeneratorRuntime().wrap(function _callee$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(item, "t0", 1);
        case 1:
          return _context.abrupt("return", _context.t0);
        case 2:
        case "end":
          return _context.stop();
      }
    }, _callee);
  }));
  var isAsync = gensync({
    sync: function sync() {
      return false;
    },
    errback: function errback(cb) {
      return cb(null, true);
    }
  });
  function maybeAsync(fn, message) {
    return gensync({
      sync: function sync() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        var result = fn.apply(this, args);
        if (isThenable$1(result)) throw new Error(message);
        return result;
      },
      async: function async() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        return Promise.resolve(fn.apply(this, args));
      }
    });
  }
  var withKind = gensync({
    sync: function sync(cb) {
      return cb("sync");
    },
    async: function () {
      var _async = _asyncToGenerator(_regeneratorRuntime().mark(function _callee2(cb) {
        return _regeneratorRuntime().wrap(function _callee2$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              return _context2.abrupt("return", cb("async"));
            case 1:
            case "end":
              return _context2.stop();
          }
        }, _callee2);
      }));
      function async(_x) {
        return _async.apply(this, arguments);
      }
      return async;
    }()
  });
  function forwardAsync(action, cb) {
    var g = gensync(action);
    return withKind(function (kind) {
      var adapted = g[kind];
      return cb(adapted);
    });
  }
  var onFirstPause = gensync({
    name: "onFirstPause",
    arity: 2,
    sync: function sync(item) {
      return runGenerator.sync(item);
    },
    errback: function errback(item, firstPause, cb) {
      var completed = false;
      runGenerator.errback(item, function (err, value) {
        completed = true;
        cb(err, value);
      });
      if (!completed) {
        firstPause();
      }
    }
  });
  var waitFor = gensync({
    sync: function sync(x) {
      return x;
    },
    async: function () {
      var _async2 = _asyncToGenerator(_regeneratorRuntime().mark(function _callee3(x) {
        return _regeneratorRuntime().wrap(function _callee3$(_context3) {
          while (1) switch (_context3.prev = _context3.next) {
            case 0:
              return _context3.abrupt("return", x);
            case 1:
            case "end":
              return _context3.stop();
          }
        }, _callee3);
      }));
      function async(_x2) {
        return _async2.apply(this, arguments);
      }
      return async;
    }()
  });
  function isThenable$1(val) {
    return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
  }

  function mergeOptions(target, source) {
    for (var _i = 0, _Object$keys = Object.keys(source); _i < _Object$keys.length; _i++) {
      var k = _Object$keys[_i];
      if ((k === "parserOpts" || k === "generatorOpts" || k === "assumptions") && source[k]) {
        var parserOpts = source[k];
        var targetObj = target[k] || (target[k] = {});
        mergeDefaultFields(targetObj, parserOpts);
      } else {
        var val = source[k];
        if (val !== undefined) target[k] = val;
      }
    }
  }
  function mergeDefaultFields(target, source) {
    for (var _i2 = 0, _arr = Object.keys(source); _i2 < _arr.length; _i2++) {
      var k = _arr[_i2];
      var val = source[k];
      if (val !== undefined) target[k] = val;
    }
  }
  function isIterableIterator(value) {
    return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function";
  }

  function finalize(deepArr) {
    return Object.freeze(deepArr);
  }
  function flattenToSet(arr) {
    var result = new Set();
    var stack = [arr];
    while (stack.length > 0) {
      for (var _iterator = _createForOfIteratorHelperLoose(stack.pop()), _step; !(_step = _iterator()).done;) {
        var el = _step.value;
        if (Array.isArray(el)) stack.push(el);else result.add(el);
      }
    }
    return result;
  }

  var Plugin = _createClass(function Plugin(plugin, options, key, externalDependencies) {
    if (externalDependencies === void 0) {
      externalDependencies = finalize([]);
    }
    this.key = void 0;
    this.manipulateOptions = void 0;
    this.post = void 0;
    this.pre = void 0;
    this.visitor = void 0;
    this.parserOverride = void 0;
    this.generatorOverride = void 0;
    this.options = void 0;
    this.externalDependencies = void 0;
    this.key = plugin.name || key;
    this.manipulateOptions = plugin.manipulateOptions;
    this.post = plugin.post;
    this.pre = plugin.pre;
    this.visitor = plugin.visitor || {};
    this.parserOverride = plugin.parserOverride;
    this.generatorOverride = plugin.generatorOverride;
    this.options = options;
    this.externalDependencies = externalDependencies;
  });

  function once(fn) {
    var result;
    var resultP;
    var promiseReferenced = false;
    return _regeneratorRuntime().mark(function _callee() {
      var resolve, reject;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (result) {
              _context.next = 32;
              break;
            }
            if (!resultP) {
              _context.next = 5;
              break;
            }
            promiseReferenced = true;
            return _context.delegateYield(waitFor(resultP), "t0", 4);
          case 4:
            return _context.abrupt("return", _context.t0);
          case 5:
            return _context.delegateYield(isAsync(), "t1", 6);
          case 6:
            if (_context.t1) {
              _context.next = 18;
              break;
            }
            _context.prev = 7;
            return _context.delegateYield(fn(), "t2", 9);
          case 9:
            _context.t3 = _context.t2;
            result = {
              ok: true,
              value: _context.t3
            };
            _context.next = 16;
            break;
          case 13:
            _context.prev = 13;
            _context.t4 = _context["catch"](7);
            result = {
              ok: false,
              value: _context.t4
            };
          case 16:
            _context.next = 32;
            break;
          case 18:
            resultP = new Promise(function (res, rej) {
              resolve = res;
              reject = rej;
            });
            _context.prev = 19;
            return _context.delegateYield(fn(), "t5", 21);
          case 21:
            _context.t6 = _context.t5;
            result = {
              ok: true,
              value: _context.t6
            };
            resultP = null;
            if (promiseReferenced) resolve(result.value);
            _context.next = 32;
            break;
          case 27:
            _context.prev = 27;
            _context.t7 = _context["catch"](19);
            result = {
              ok: false,
              value: _context.t7
            };
            resultP = null;
            if (promiseReferenced) reject(_context.t7);
          case 32:
            if (!result.ok) {
              _context.next = 36;
              break;
            }
            return _context.abrupt("return", result.value);
          case 36:
            throw result.value;
          case 37:
          case "end":
            return _context.stop();
        }
      }, _callee, null, [[7, 13], [19, 27]]);
    });
  }

  var _marked$8 = _regeneratorRuntime().mark(genTrue),
    _marked2$6 = _regeneratorRuntime().mark(getCachedValue),
    _marked3$3 = _regeneratorRuntime().mark(getCachedValueOrWait);
  var synchronize = function synchronize(gen) {
    return gensync(gen).sync;
  };
  function genTrue() {
    return _regeneratorRuntime().wrap(function genTrue$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.abrupt("return", true);
        case 1:
        case "end":
          return _context.stop();
      }
    }, _marked$8);
  }
  function makeWeakCache(handler) {
    return makeCachedFunction(WeakMap, handler);
  }
  function makeWeakCacheSync(handler) {
    return synchronize(makeWeakCache(handler));
  }
  function makeStrongCache(handler) {
    return makeCachedFunction(Map, handler);
  }
  function makeStrongCacheSync(handler) {
    return synchronize(makeStrongCache(handler));
  }
  function makeCachedFunction(CallCache, handler) {
    var callCacheSync = new CallCache();
    var callCacheAsync = new CallCache();
    var futureCache = new CallCache();
    return _regeneratorRuntime().mark(function cachedFunction(arg, data) {
      var asyncContext, callCache, cached, cache, handlerResult, finishLock, value;
      return _regeneratorRuntime().wrap(function cachedFunction$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            return _context2.delegateYield(isAsync(), "t0", 1);
          case 1:
            asyncContext = _context2.t0;
            callCache = asyncContext ? callCacheAsync : callCacheSync;
            return _context2.delegateYield(getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data), "t1", 4);
          case 4:
            cached = _context2.t1;
            if (!cached.valid) {
              _context2.next = 7;
              break;
            }
            return _context2.abrupt("return", cached.value);
          case 7:
            cache = new CacheConfigurator(data);
            handlerResult = handler(arg, cache);
            if (!isIterableIterator(handlerResult)) {
              _context2.next = 14;
              break;
            }
            return _context2.delegateYield(onFirstPause(handlerResult, function () {
              finishLock = setupAsyncLocks(cache, futureCache, arg);
            }), "t2", 11);
          case 11:
            value = _context2.t2;
            _context2.next = 15;
            break;
          case 14:
            value = handlerResult;
          case 15:
            updateFunctionCache(callCache, cache, arg, value);
            if (finishLock) {
              futureCache["delete"](arg);
              finishLock.release(value);
            }
            return _context2.abrupt("return", value);
          case 18:
          case "end":
            return _context2.stop();
        }
      }, cachedFunction);
    });
  }
  function getCachedValue(cache, arg, data) {
    var cachedValue, _iterator, _step, _step$value, value, valid;
    return _regeneratorRuntime().wrap(function getCachedValue$(_context3) {
      while (1) switch (_context3.prev = _context3.next) {
        case 0:
          cachedValue = cache.get(arg);
          if (!cachedValue) {
            _context3.next = 10;
            break;
          }
          _iterator = _createForOfIteratorHelperLoose(cachedValue);
        case 3:
          if ((_step = _iterator()).done) {
            _context3.next = 10;
            break;
          }
          _step$value = _step.value, value = _step$value.value, valid = _step$value.valid;
          return _context3.delegateYield(valid(data), "t0", 6);
        case 6:
          if (!_context3.t0) {
            _context3.next = 8;
            break;
          }
          return _context3.abrupt("return", {
            valid: true,
            value: value
          });
        case 8:
          _context3.next = 3;
          break;
        case 10:
          return _context3.abrupt("return", {
            valid: false,
            value: null
          });
        case 11:
        case "end":
          return _context3.stop();
      }
    }, _marked2$6);
  }
  function getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
    var cached, _cached, value;
    return _regeneratorRuntime().wrap(function getCachedValueOrWait$(_context4) {
      while (1) switch (_context4.prev = _context4.next) {
        case 0:
          return _context4.delegateYield(getCachedValue(callCache, arg, data), "t0", 1);
        case 1:
          cached = _context4.t0;
          if (!cached.valid) {
            _context4.next = 4;
            break;
          }
          return _context4.abrupt("return", cached);
        case 4:
          if (!asyncContext) {
            _context4.next = 11;
            break;
          }
          return _context4.delegateYield(getCachedValue(futureCache, arg, data), "t1", 6);
        case 6:
          _cached = _context4.t1;
          if (!_cached.valid) {
            _context4.next = 11;
            break;
          }
          return _context4.delegateYield(waitFor(_cached.value.promise), "t2", 9);
        case 9:
          value = _context4.t2;
          return _context4.abrupt("return", {
            valid: true,
            value: value
          });
        case 11:
          return _context4.abrupt("return", {
            valid: false,
            value: null
          });
        case 12:
        case "end":
          return _context4.stop();
      }
    }, _marked3$3);
  }
  function setupAsyncLocks(config, futureCache, arg) {
    var finishLock = new Lock();
    updateFunctionCache(futureCache, config, arg, finishLock);
    return finishLock;
  }
  function updateFunctionCache(cache, config, arg, value) {
    if (!config.configured()) config.forever();
    var cachedValue = cache.get(arg);
    config.deactivate();
    switch (config.mode()) {
      case "forever":
        cachedValue = [{
          value: value,
          valid: genTrue
        }];
        cache.set(arg, cachedValue);
        break;
      case "invalidate":
        cachedValue = [{
          value: value,
          valid: config.validator()
        }];
        cache.set(arg, cachedValue);
        break;
      case "valid":
        if (cachedValue) {
          cachedValue.push({
            value: value,
            valid: config.validator()
          });
        } else {
          cachedValue = [{
            value: value,
            valid: config.validator()
          }];
          cache.set(arg, cachedValue);
        }
    }
  }
  var CacheConfigurator = function () {
    function CacheConfigurator(data) {
      this._active = true;
      this._never = false;
      this._forever = false;
      this._invalidate = false;
      this._configured = false;
      this._pairs = [];
      this._data = void 0;
      this._data = data;
    }
    var _proto = CacheConfigurator.prototype;
    _proto.simple = function simple() {
      return makeSimpleConfigurator(this);
    };
    _proto.mode = function mode() {
      if (this._never) return "never";
      if (this._forever) return "forever";
      if (this._invalidate) return "invalidate";
      return "valid";
    };
    _proto.forever = function forever() {
      if (!this._active) {
        throw new Error("Cannot change caching after evaluation has completed.");
      }
      if (this._never) {
        throw new Error("Caching has already been configured with .never()");
      }
      this._forever = true;
      this._configured = true;
    };
    _proto.never = function never() {
      if (!this._active) {
        throw new Error("Cannot change caching after evaluation has completed.");
      }
      if (this._forever) {
        throw new Error("Caching has already been configured with .forever()");
      }
      this._never = true;
      this._configured = true;
    };
    _proto.using = function using(handler) {
      var _this = this;
      if (!this._active) {
        throw new Error("Cannot change caching after evaluation has completed.");
      }
      if (this._never || this._forever) {
        throw new Error("Caching has already been configured with .never or .forever()");
      }
      this._configured = true;
      var key = handler(this._data);
      var fn = maybeAsync(handler, "You appear to be using an async cache handler, but Babel has been called synchronously");
      if (isThenable$1(key)) {
        return key.then(function (key) {
          _this._pairs.push([key, fn]);
          return key;
        });
      }
      this._pairs.push([key, fn]);
      return key;
    };
    _proto.invalidate = function invalidate(handler) {
      this._invalidate = true;
      return this.using(handler);
    };
    _proto.validator = function validator() {
      var pairs = this._pairs;
      return _regeneratorRuntime().mark(function _callee(data) {
        var _iterator2, _step2, _step2$value, key, fn;
        return _regeneratorRuntime().wrap(function _callee$(_context5) {
          while (1) switch (_context5.prev = _context5.next) {
            case 0:
              _iterator2 = _createForOfIteratorHelperLoose(pairs);
            case 1:
              if ((_step2 = _iterator2()).done) {
                _context5.next = 10;
                break;
              }
              _step2$value = _slicedToArray(_step2.value, 2), key = _step2$value[0], fn = _step2$value[1];
              _context5.t0 = key;
              return _context5.delegateYield(fn(data), "t1", 5);
            case 5:
              _context5.t2 = _context5.t1;
              if (!(_context5.t0 !== _context5.t2)) {
                _context5.next = 8;
                break;
              }
              return _context5.abrupt("return", false);
            case 8:
              _context5.next = 1;
              break;
            case 10:
              return _context5.abrupt("return", true);
            case 11:
            case "end":
              return _context5.stop();
          }
        }, _callee);
      });
    };
    _proto.deactivate = function deactivate() {
      this._active = false;
    };
    _proto.configured = function configured() {
      return this._configured;
    };
    return _createClass(CacheConfigurator);
  }();
  function makeSimpleConfigurator(cache) {
    function cacheFn(val) {
      if (typeof val === "boolean") {
        if (val) cache.forever();else cache.never();
        return;
      }
      return cache.using(function () {
        return assertSimpleType(val());
      });
    }
    cacheFn.forever = function () {
      return cache.forever();
    };
    cacheFn.never = function () {
      return cache.never();
    };
    cacheFn.using = function (cb) {
      return cache.using(function () {
        return assertSimpleType(cb());
      });
    };
    cacheFn.invalidate = function (cb) {
      return cache.invalidate(function () {
        return assertSimpleType(cb());
      });
    };
    return cacheFn;
  }
  function assertSimpleType(value) {
    if (isThenable$1(value)) {
      throw new Error("You appear to be using an async cache handler, " + "which your current version of Babel does not support. " + "We may add support for this in the future, " + "but if you're on the most recent version of @babel/core and still " + "seeing this error, then you'll need to synchronously handle your caching logic.");
    }
    if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
      throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
    }
    return value;
  }
  var Lock = function () {
    function Lock() {
      var _this2 = this;
      this.released = false;
      this.promise = void 0;
      this._resolve = void 0;
      this.promise = new Promise(function (resolve) {
        _this2._resolve = resolve;
      });
    }
    var _proto2 = Lock.prototype;
    _proto2.release = function release(value) {
      this.released = true;
      this._resolve(value);
    };
    return _createClass(Lock);
  }();

  var require$$0$8 = [
  	{
  		name: "nodejs",
  		version: "0.2.0",
  		date: "2011-08-26",
  		lts: false,
  		security: false,
  		v8: "2.3.8.0"
  	},
  	{
  		name: "nodejs",
  		version: "0.3.0",
  		date: "2011-08-26",
  		lts: false,
  		security: false,
  		v8: "2.5.1.0"
  	},
  	{
  		name: "nodejs",
  		version: "0.4.0",
  		date: "2011-08-26",
  		lts: false,
  		security: false,
  		v8: "3.1.2.0"
  	},
  	{
  		name: "nodejs",
  		version: "0.5.0",
  		date: "2011-08-26",
  		lts: false,
  		security: false,
  		v8: "3.1.8.25"
  	},
  	{
  		name: "nodejs",
  		version: "0.6.0",
  		date: "2011-11-04",
  		lts: false,
  		security: false,
  		v8: "3.6.6.6"
  	},
  	{
  		name: "nodejs",
  		version: "0.7.0",
  		date: "2012-01-17",
  		lts: false,
  		security: false,
  		v8: "3.8.6.0"
  	},
  	{
  		name: "nodejs",
  		version: "0.8.0",
  		date: "2012-06-22",
  		lts: false,
  		security: false,
  		v8: "3.11.10.10"
  	},
  	{
  		name: "nodejs",
  		version: "0.9.0",
  		date: "2012-07-20",
  		lts: false,
  		security: false,
  		v8: "3.11.10.15"
  	},
  	{
  		name: "nodejs",
  		version: "0.10.0",
  		date: "2013-03-11",
  		lts: false,
  		security: false,
  		v8: "3.14.5.8"
  	},
  	{
  		name: "nodejs",
  		version: "0.11.0",
  		date: "2013-03-28",
  		lts: false,
  		security: false,
  		v8: "3.17.13.0"
  	},
  	{
  		name: "nodejs",
  		version: "0.12.0",
  		date: "2015-02-06",
  		lts: false,
  		security: false,
  		v8: "3.28.73.0"
  	},
  	{
  		name: "nodejs",
  		version: "4.0.0",
  		date: "2015-09-08",
  		lts: false,
  		security: false,
  		v8: "4.5.103.30"
  	},
  	{
  		name: "nodejs",
  		version: "4.1.0",
  		date: "2015-09-17",
  		lts: false,
  		security: false,
  		v8: "4.5.103.33"
  	},
  	{
  		name: "nodejs",
  		version: "4.2.0",
  		date: "2015-10-12",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.35"
  	},
  	{
  		name: "nodejs",
  		version: "4.3.0",
  		date: "2016-02-09",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.35"
  	},
  	{
  		name: "nodejs",
  		version: "4.4.0",
  		date: "2016-03-08",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.35"
  	},
  	{
  		name: "nodejs",
  		version: "4.5.0",
  		date: "2016-08-16",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.37"
  	},
  	{
  		name: "nodejs",
  		version: "4.6.0",
  		date: "2016-09-27",
  		lts: "Argon",
  		security: true,
  		v8: "4.5.103.37"
  	},
  	{
  		name: "nodejs",
  		version: "4.7.0",
  		date: "2016-12-06",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.43"
  	},
  	{
  		name: "nodejs",
  		version: "4.8.0",
  		date: "2017-02-21",
  		lts: "Argon",
  		security: false,
  		v8: "4.5.103.45"
  	},
  	{
  		name: "nodejs",
  		version: "4.9.0",
  		date: "2018-03-28",
  		lts: "Argon",
  		security: true,
  		v8: "4.5.103.53"
  	},
  	{
  		name: "nodejs",
  		version: "5.0.0",
  		date: "2015-10-29",
  		lts: false,
  		security: false,
  		v8: "4.6.85.28"
  	},
  	{
  		name: "nodejs",
  		version: "5.1.0",
  		date: "2015-11-17",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.2.0",
  		date: "2015-12-09",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.3.0",
  		date: "2015-12-15",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.4.0",
  		date: "2016-01-06",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.5.0",
  		date: "2016-01-21",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.6.0",
  		date: "2016-02-09",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.7.0",
  		date: "2016-02-23",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.8.0",
  		date: "2016-03-09",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.9.0",
  		date: "2016-03-16",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.10.0",
  		date: "2016-04-01",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.11.0",
  		date: "2016-04-21",
  		lts: false,
  		security: false,
  		v8: "4.6.85.31"
  	},
  	{
  		name: "nodejs",
  		version: "5.12.0",
  		date: "2016-06-23",
  		lts: false,
  		security: false,
  		v8: "4.6.85.32"
  	},
  	{
  		name: "nodejs",
  		version: "6.0.0",
  		date: "2016-04-26",
  		lts: false,
  		security: false,
  		v8: "5.0.71.35"
  	},
  	{
  		name: "nodejs",
  		version: "6.1.0",
  		date: "2016-05-05",
  		lts: false,
  		security: false,
  		v8: "5.0.71.35"
  	},
  	{
  		name: "nodejs",
  		version: "6.2.0",
  		date: "2016-05-17",
  		lts: false,
  		security: false,
  		v8: "5.0.71.47"
  	},
  	{
  		name: "nodejs",
  		version: "6.3.0",
  		date: "2016-07-06",
  		lts: false,
  		security: false,
  		v8: "5.0.71.52"
  	},
  	{
  		name: "nodejs",
  		version: "6.4.0",
  		date: "2016-08-12",
  		lts: false,
  		security: false,
  		v8: "5.0.71.60"
  	},
  	{
  		name: "nodejs",
  		version: "6.5.0",
  		date: "2016-08-26",
  		lts: false,
  		security: false,
  		v8: "5.1.281.81"
  	},
  	{
  		name: "nodejs",
  		version: "6.6.0",
  		date: "2016-09-14",
  		lts: false,
  		security: false,
  		v8: "5.1.281.83"
  	},
  	{
  		name: "nodejs",
  		version: "6.7.0",
  		date: "2016-09-27",
  		lts: false,
  		security: true,
  		v8: "5.1.281.83"
  	},
  	{
  		name: "nodejs",
  		version: "6.8.0",
  		date: "2016-10-12",
  		lts: false,
  		security: false,
  		v8: "5.1.281.84"
  	},
  	{
  		name: "nodejs",
  		version: "6.9.0",
  		date: "2016-10-18",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.84"
  	},
  	{
  		name: "nodejs",
  		version: "6.10.0",
  		date: "2017-02-21",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.93"
  	},
  	{
  		name: "nodejs",
  		version: "6.11.0",
  		date: "2017-06-06",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.102"
  	},
  	{
  		name: "nodejs",
  		version: "6.12.0",
  		date: "2017-11-06",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.108"
  	},
  	{
  		name: "nodejs",
  		version: "6.13.0",
  		date: "2018-02-10",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.111"
  	},
  	{
  		name: "nodejs",
  		version: "6.14.0",
  		date: "2018-03-28",
  		lts: "Boron",
  		security: true,
  		v8: "5.1.281.111"
  	},
  	{
  		name: "nodejs",
  		version: "6.15.0",
  		date: "2018-11-27",
  		lts: "Boron",
  		security: true,
  		v8: "5.1.281.111"
  	},
  	{
  		name: "nodejs",
  		version: "6.16.0",
  		date: "2018-12-26",
  		lts: "Boron",
  		security: false,
  		v8: "5.1.281.111"
  	},
  	{
  		name: "nodejs",
  		version: "6.17.0",
  		date: "2019-02-28",
  		lts: "Boron",
  		security: true,
  		v8: "5.1.281.111"
  	},
  	{
  		name: "nodejs",
  		version: "7.0.0",
  		date: "2016-10-25",
  		lts: false,
  		security: false,
  		v8: "5.4.500.36"
  	},
  	{
  		name: "nodejs",
  		version: "7.1.0",
  		date: "2016-11-08",
  		lts: false,
  		security: false,
  		v8: "5.4.500.36"
  	},
  	{
  		name: "nodejs",
  		version: "7.2.0",
  		date: "2016-11-22",
  		lts: false,
  		security: false,
  		v8: "5.4.500.43"
  	},
  	{
  		name: "nodejs",
  		version: "7.3.0",
  		date: "2016-12-20",
  		lts: false,
  		security: false,
  		v8: "5.4.500.45"
  	},
  	{
  		name: "nodejs",
  		version: "7.4.0",
  		date: "2017-01-04",
  		lts: false,
  		security: false,
  		v8: "5.4.500.45"
  	},
  	{
  		name: "nodejs",
  		version: "7.5.0",
  		date: "2017-01-31",
  		lts: false,
  		security: false,
  		v8: "5.4.500.48"
  	},
  	{
  		name: "nodejs",
  		version: "7.6.0",
  		date: "2017-02-21",
  		lts: false,
  		security: false,
  		v8: "5.5.372.40"
  	},
  	{
  		name: "nodejs",
  		version: "7.7.0",
  		date: "2017-02-28",
  		lts: false,
  		security: false,
  		v8: "5.5.372.41"
  	},
  	{
  		name: "nodejs",
  		version: "7.8.0",
  		date: "2017-03-29",
  		lts: false,
  		security: false,
  		v8: "5.5.372.43"
  	},
  	{
  		name: "nodejs",
  		version: "7.9.0",
  		date: "2017-04-11",
  		lts: false,
  		security: false,
  		v8: "5.5.372.43"
  	},
  	{
  		name: "nodejs",
  		version: "7.10.0",
  		date: "2017-05-02",
  		lts: false,
  		security: false,
  		v8: "5.5.372.43"
  	},
  	{
  		name: "nodejs",
  		version: "8.0.0",
  		date: "2017-05-30",
  		lts: false,
  		security: false,
  		v8: "5.8.283.41"
  	},
  	{
  		name: "nodejs",
  		version: "8.1.0",
  		date: "2017-06-08",
  		lts: false,
  		security: false,
  		v8: "5.8.283.41"
  	},
  	{
  		name: "nodejs",
  		version: "8.2.0",
  		date: "2017-07-19",
  		lts: false,
  		security: false,
  		v8: "5.8.283.41"
  	},
  	{
  		name: "nodejs",
  		version: "8.3.0",
  		date: "2017-08-08",
  		lts: false,
  		security: false,
  		v8: "6.0.286.52"
  	},
  	{
  		name: "nodejs",
  		version: "8.4.0",
  		date: "2017-08-15",
  		lts: false,
  		security: false,
  		v8: "6.0.286.52"
  	},
  	{
  		name: "nodejs",
  		version: "8.5.0",
  		date: "2017-09-12",
  		lts: false,
  		security: false,
  		v8: "6.0.287.53"
  	},
  	{
  		name: "nodejs",
  		version: "8.6.0",
  		date: "2017-09-26",
  		lts: false,
  		security: false,
  		v8: "6.0.287.53"
  	},
  	{
  		name: "nodejs",
  		version: "8.7.0",
  		date: "2017-10-11",
  		lts: false,
  		security: false,
  		v8: "6.1.534.42"
  	},
  	{
  		name: "nodejs",
  		version: "8.8.0",
  		date: "2017-10-24",
  		lts: false,
  		security: false,
  		v8: "6.1.534.42"
  	},
  	{
  		name: "nodejs",
  		version: "8.9.0",
  		date: "2017-10-31",
  		lts: "Carbon",
  		security: false,
  		v8: "6.1.534.46"
  	},
  	{
  		name: "nodejs",
  		version: "8.10.0",
  		date: "2018-03-06",
  		lts: "Carbon",
  		security: false,
  		v8: "6.2.414.50"
  	},
  	{
  		name: "nodejs",
  		version: "8.11.0",
  		date: "2018-03-28",
  		lts: "Carbon",
  		security: true,
  		v8: "6.2.414.50"
  	},
  	{
  		name: "nodejs",
  		version: "8.12.0",
  		date: "2018-09-10",
  		lts: "Carbon",
  		security: false,
  		v8: "6.2.414.66"
  	},
  	{
  		name: "nodejs",
  		version: "8.13.0",
  		date: "2018-11-20",
  		lts: "Carbon",
  		security: false,
  		v8: "6.2.414.72"
  	},
  	{
  		name: "nodejs",
  		version: "8.14.0",
  		date: "2018-11-27",
  		lts: "Carbon",
  		security: true,
  		v8: "6.2.414.72"
  	},
  	{
  		name: "nodejs",
  		version: "8.15.0",
  		date: "2018-12-26",
  		lts: "Carbon",
  		security: false,
  		v8: "6.2.414.75"
  	},
  	{
  		name: "nodejs",
  		version: "8.16.0",
  		date: "2019-04-16",
  		lts: "Carbon",
  		security: false,
  		v8: "6.2.414.77"
  	},
  	{
  		name: "nodejs",
  		version: "8.17.0",
  		date: "2019-12-17",
  		lts: "Carbon",
  		security: true,
  		v8: "6.2.414.78"
  	},
  	{
  		name: "nodejs",
  		version: "9.0.0",
  		date: "2017-10-31",
  		lts: false,
  		security: false,
  		v8: "6.2.414.32"
  	},
  	{
  		name: "nodejs",
  		version: "9.1.0",
  		date: "2017-11-07",
  		lts: false,
  		security: false,
  		v8: "6.2.414.32"
  	},
  	{
  		name: "nodejs",
  		version: "9.2.0",
  		date: "2017-11-14",
  		lts: false,
  		security: false,
  		v8: "6.2.414.44"
  	},
  	{
  		name: "nodejs",
  		version: "9.3.0",
  		date: "2017-12-12",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.4.0",
  		date: "2018-01-10",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.5.0",
  		date: "2018-01-31",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.6.0",
  		date: "2018-02-21",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.7.0",
  		date: "2018-03-01",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.8.0",
  		date: "2018-03-07",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.9.0",
  		date: "2018-03-21",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.10.0",
  		date: "2018-03-28",
  		lts: false,
  		security: true,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "9.11.0",
  		date: "2018-04-04",
  		lts: false,
  		security: false,
  		v8: "6.2.414.46"
  	},
  	{
  		name: "nodejs",
  		version: "10.0.0",
  		date: "2018-04-24",
  		lts: false,
  		security: false,
  		v8: "6.6.346.24"
  	},
  	{
  		name: "nodejs",
  		version: "10.1.0",
  		date: "2018-05-08",
  		lts: false,
  		security: false,
  		v8: "6.6.346.27"
  	},
  	{
  		name: "nodejs",
  		version: "10.2.0",
  		date: "2018-05-23",
  		lts: false,
  		security: false,
  		v8: "6.6.346.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.3.0",
  		date: "2018-05-29",
  		lts: false,
  		security: false,
  		v8: "6.6.346.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.4.0",
  		date: "2018-06-06",
  		lts: false,
  		security: false,
  		v8: "6.7.288.43"
  	},
  	{
  		name: "nodejs",
  		version: "10.5.0",
  		date: "2018-06-20",
  		lts: false,
  		security: false,
  		v8: "6.7.288.46"
  	},
  	{
  		name: "nodejs",
  		version: "10.6.0",
  		date: "2018-07-04",
  		lts: false,
  		security: false,
  		v8: "6.7.288.46"
  	},
  	{
  		name: "nodejs",
  		version: "10.7.0",
  		date: "2018-07-18",
  		lts: false,
  		security: false,
  		v8: "6.7.288.49"
  	},
  	{
  		name: "nodejs",
  		version: "10.8.0",
  		date: "2018-08-01",
  		lts: false,
  		security: false,
  		v8: "6.7.288.49"
  	},
  	{
  		name: "nodejs",
  		version: "10.9.0",
  		date: "2018-08-15",
  		lts: false,
  		security: false,
  		v8: "6.8.275.24"
  	},
  	{
  		name: "nodejs",
  		version: "10.10.0",
  		date: "2018-09-06",
  		lts: false,
  		security: false,
  		v8: "6.8.275.30"
  	},
  	{
  		name: "nodejs",
  		version: "10.11.0",
  		date: "2018-09-19",
  		lts: false,
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.12.0",
  		date: "2018-10-10",
  		lts: false,
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.13.0",
  		date: "2018-10-30",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.14.0",
  		date: "2018-11-27",
  		lts: "Dubnium",
  		security: true,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.15.0",
  		date: "2018-12-26",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.16.0",
  		date: "2019-05-28",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.17.0",
  		date: "2019-10-22",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.18.0",
  		date: "2019-12-17",
  		lts: "Dubnium",
  		security: true,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.19.0",
  		date: "2020-02-05",
  		lts: "Dubnium",
  		security: true,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.20.0",
  		date: "2020-03-26",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.21.0",
  		date: "2020-06-02",
  		lts: "Dubnium",
  		security: true,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.22.0",
  		date: "2020-07-21",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.23.0",
  		date: "2020-10-27",
  		lts: "Dubnium",
  		security: false,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "10.24.0",
  		date: "2021-02-23",
  		lts: "Dubnium",
  		security: true,
  		v8: "6.8.275.32"
  	},
  	{
  		name: "nodejs",
  		version: "11.0.0",
  		date: "2018-10-23",
  		lts: false,
  		security: false,
  		v8: "7.0.276.28"
  	},
  	{
  		name: "nodejs",
  		version: "11.1.0",
  		date: "2018-10-30",
  		lts: false,
  		security: false,
  		v8: "7.0.276.32"
  	},
  	{
  		name: "nodejs",
  		version: "11.2.0",
  		date: "2018-11-15",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.3.0",
  		date: "2018-11-27",
  		lts: false,
  		security: true,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.4.0",
  		date: "2018-12-07",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.5.0",
  		date: "2018-12-18",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.6.0",
  		date: "2018-12-26",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.7.0",
  		date: "2019-01-17",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.8.0",
  		date: "2019-01-24",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.9.0",
  		date: "2019-01-30",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.10.0",
  		date: "2019-02-14",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.11.0",
  		date: "2019-03-05",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.12.0",
  		date: "2019-03-14",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.13.0",
  		date: "2019-03-28",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.14.0",
  		date: "2019-04-10",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "11.15.0",
  		date: "2019-04-30",
  		lts: false,
  		security: false,
  		v8: "7.0.276.38"
  	},
  	{
  		name: "nodejs",
  		version: "12.0.0",
  		date: "2019-04-23",
  		lts: false,
  		security: false,
  		v8: "7.4.288.21"
  	},
  	{
  		name: "nodejs",
  		version: "12.1.0",
  		date: "2019-04-29",
  		lts: false,
  		security: false,
  		v8: "7.4.288.21"
  	},
  	{
  		name: "nodejs",
  		version: "12.2.0",
  		date: "2019-05-07",
  		lts: false,
  		security: false,
  		v8: "7.4.288.21"
  	},
  	{
  		name: "nodejs",
  		version: "12.3.0",
  		date: "2019-05-21",
  		lts: false,
  		security: false,
  		v8: "7.4.288.27"
  	},
  	{
  		name: "nodejs",
  		version: "12.4.0",
  		date: "2019-06-04",
  		lts: false,
  		security: false,
  		v8: "7.4.288.27"
  	},
  	{
  		name: "nodejs",
  		version: "12.5.0",
  		date: "2019-06-26",
  		lts: false,
  		security: false,
  		v8: "7.5.288.22"
  	},
  	{
  		name: "nodejs",
  		version: "12.6.0",
  		date: "2019-07-03",
  		lts: false,
  		security: false,
  		v8: "7.5.288.22"
  	},
  	{
  		name: "nodejs",
  		version: "12.7.0",
  		date: "2019-07-23",
  		lts: false,
  		security: false,
  		v8: "7.5.288.22"
  	},
  	{
  		name: "nodejs",
  		version: "12.8.0",
  		date: "2019-08-06",
  		lts: false,
  		security: false,
  		v8: "7.5.288.22"
  	},
  	{
  		name: "nodejs",
  		version: "12.9.0",
  		date: "2019-08-20",
  		lts: false,
  		security: false,
  		v8: "7.6.303.29"
  	},
  	{
  		name: "nodejs",
  		version: "12.10.0",
  		date: "2019-09-04",
  		lts: false,
  		security: false,
  		v8: "7.6.303.29"
  	},
  	{
  		name: "nodejs",
  		version: "12.11.0",
  		date: "2019-09-25",
  		lts: false,
  		security: false,
  		v8: "7.7.299.11"
  	},
  	{
  		name: "nodejs",
  		version: "12.12.0",
  		date: "2019-10-11",
  		lts: false,
  		security: false,
  		v8: "7.7.299.13"
  	},
  	{
  		name: "nodejs",
  		version: "12.13.0",
  		date: "2019-10-21",
  		lts: "Erbium",
  		security: false,
  		v8: "7.7.299.13"
  	},
  	{
  		name: "nodejs",
  		version: "12.14.0",
  		date: "2019-12-17",
  		lts: "Erbium",
  		security: true,
  		v8: "7.7.299.13"
  	},
  	{
  		name: "nodejs",
  		version: "12.15.0",
  		date: "2020-02-05",
  		lts: "Erbium",
  		security: true,
  		v8: "7.7.299.13"
  	},
  	{
  		name: "nodejs",
  		version: "12.16.0",
  		date: "2020-02-11",
  		lts: "Erbium",
  		security: false,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.17.0",
  		date: "2020-05-26",
  		lts: "Erbium",
  		security: false,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.18.0",
  		date: "2020-06-02",
  		lts: "Erbium",
  		security: true,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.19.0",
  		date: "2020-10-06",
  		lts: "Erbium",
  		security: false,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.20.0",
  		date: "2020-11-24",
  		lts: "Erbium",
  		security: false,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.21.0",
  		date: "2021-02-23",
  		lts: "Erbium",
  		security: true,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "12.22.0",
  		date: "2021-03-30",
  		lts: "Erbium",
  		security: false,
  		v8: "7.8.279.23"
  	},
  	{
  		name: "nodejs",
  		version: "13.0.0",
  		date: "2019-10-22",
  		lts: false,
  		security: false,
  		v8: "7.8.279.17"
  	},
  	{
  		name: "nodejs",
  		version: "13.1.0",
  		date: "2019-11-05",
  		lts: false,
  		security: false,
  		v8: "7.8.279.17"
  	},
  	{
  		name: "nodejs",
  		version: "13.2.0",
  		date: "2019-11-21",
  		lts: false,
  		security: false,
  		v8: "7.9.317.23"
  	},
  	{
  		name: "nodejs",
  		version: "13.3.0",
  		date: "2019-12-03",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.4.0",
  		date: "2019-12-17",
  		lts: false,
  		security: true,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.5.0",
  		date: "2019-12-18",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.6.0",
  		date: "2020-01-07",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.7.0",
  		date: "2020-01-21",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.8.0",
  		date: "2020-02-05",
  		lts: false,
  		security: true,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.9.0",
  		date: "2020-02-18",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.10.0",
  		date: "2020-03-04",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.11.0",
  		date: "2020-03-12",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.12.0",
  		date: "2020-03-26",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.13.0",
  		date: "2020-04-14",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "13.14.0",
  		date: "2020-04-29",
  		lts: false,
  		security: false,
  		v8: "7.9.317.25"
  	},
  	{
  		name: "nodejs",
  		version: "14.0.0",
  		date: "2020-04-21",
  		lts: false,
  		security: false,
  		v8: "8.1.307.30"
  	},
  	{
  		name: "nodejs",
  		version: "14.1.0",
  		date: "2020-04-29",
  		lts: false,
  		security: false,
  		v8: "8.1.307.31"
  	},
  	{
  		name: "nodejs",
  		version: "14.2.0",
  		date: "2020-05-05",
  		lts: false,
  		security: false,
  		v8: "8.1.307.31"
  	},
  	{
  		name: "nodejs",
  		version: "14.3.0",
  		date: "2020-05-19",
  		lts: false,
  		security: false,
  		v8: "8.1.307.31"
  	},
  	{
  		name: "nodejs",
  		version: "14.4.0",
  		date: "2020-06-02",
  		lts: false,
  		security: true,
  		v8: "8.1.307.31"
  	},
  	{
  		name: "nodejs",
  		version: "14.5.0",
  		date: "2020-06-30",
  		lts: false,
  		security: false,
  		v8: "8.3.110.9"
  	},
  	{
  		name: "nodejs",
  		version: "14.6.0",
  		date: "2020-07-20",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.7.0",
  		date: "2020-07-29",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.8.0",
  		date: "2020-08-11",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.9.0",
  		date: "2020-08-27",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.10.0",
  		date: "2020-09-08",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.11.0",
  		date: "2020-09-15",
  		lts: false,
  		security: true,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.12.0",
  		date: "2020-09-22",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.13.0",
  		date: "2020-09-29",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.14.0",
  		date: "2020-10-15",
  		lts: false,
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.15.0",
  		date: "2020-10-27",
  		lts: "Fermium",
  		security: false,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.16.0",
  		date: "2021-02-23",
  		lts: "Fermium",
  		security: true,
  		v8: "8.4.371.19"
  	},
  	{
  		name: "nodejs",
  		version: "14.17.0",
  		date: "2021-05-11",
  		lts: "Fermium",
  		security: false,
  		v8: "8.4.371.23"
  	},
  	{
  		name: "nodejs",
  		version: "14.18.0",
  		date: "2021-09-28",
  		lts: "Fermium",
  		security: false,
  		v8: "8.4.371.23"
  	},
  	{
  		name: "nodejs",
  		version: "14.19.0",
  		date: "2022-02-01",
  		lts: "Fermium",
  		security: false,
  		v8: "8.4.371.23"
  	},
  	{
  		name: "nodejs",
  		version: "14.20.0",
  		date: "2022-07-07",
  		lts: "Fermium",
  		security: true,
  		v8: "8.4.371.23"
  	},
  	{
  		name: "nodejs",
  		version: "14.21.0",
  		date: "2022-11-01",
  		lts: "Fermium",
  		security: false,
  		v8: "8.4.371.23"
  	},
  	{
  		name: "nodejs",
  		version: "15.0.0",
  		date: "2020-10-20",
  		lts: false,
  		security: false,
  		v8: "8.6.395.16"
  	},
  	{
  		name: "nodejs",
  		version: "15.1.0",
  		date: "2020-11-04",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.2.0",
  		date: "2020-11-10",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.3.0",
  		date: "2020-11-24",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.4.0",
  		date: "2020-12-09",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.5.0",
  		date: "2020-12-22",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.6.0",
  		date: "2021-01-14",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.7.0",
  		date: "2021-01-25",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.8.0",
  		date: "2021-02-02",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.9.0",
  		date: "2021-02-18",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.10.0",
  		date: "2021-02-23",
  		lts: false,
  		security: true,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.11.0",
  		date: "2021-03-03",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.12.0",
  		date: "2021-03-17",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.13.0",
  		date: "2021-03-31",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "15.14.0",
  		date: "2021-04-06",
  		lts: false,
  		security: false,
  		v8: "8.6.395.17"
  	},
  	{
  		name: "nodejs",
  		version: "16.0.0",
  		date: "2021-04-20",
  		lts: false,
  		security: false,
  		v8: "9.0.257.17"
  	},
  	{
  		name: "nodejs",
  		version: "16.1.0",
  		date: "2021-05-04",
  		lts: false,
  		security: false,
  		v8: "9.0.257.24"
  	},
  	{
  		name: "nodejs",
  		version: "16.2.0",
  		date: "2021-05-19",
  		lts: false,
  		security: false,
  		v8: "9.0.257.25"
  	},
  	{
  		name: "nodejs",
  		version: "16.3.0",
  		date: "2021-06-03",
  		lts: false,
  		security: false,
  		v8: "9.0.257.25"
  	},
  	{
  		name: "nodejs",
  		version: "16.4.0",
  		date: "2021-06-23",
  		lts: false,
  		security: false,
  		v8: "9.1.269.36"
  	},
  	{
  		name: "nodejs",
  		version: "16.5.0",
  		date: "2021-07-14",
  		lts: false,
  		security: false,
  		v8: "9.1.269.38"
  	},
  	{
  		name: "nodejs",
  		version: "16.6.0",
  		date: "2021-07-29",
  		lts: false,
  		security: true,
  		v8: "9.2.230.21"
  	},
  	{
  		name: "nodejs",
  		version: "16.7.0",
  		date: "2021-08-18",
  		lts: false,
  		security: false,
  		v8: "9.2.230.21"
  	},
  	{
  		name: "nodejs",
  		version: "16.8.0",
  		date: "2021-08-25",
  		lts: false,
  		security: false,
  		v8: "9.2.230.21"
  	},
  	{
  		name: "nodejs",
  		version: "16.9.0",
  		date: "2021-09-07",
  		lts: false,
  		security: false,
  		v8: "9.3.345.16"
  	},
  	{
  		name: "nodejs",
  		version: "16.10.0",
  		date: "2021-09-22",
  		lts: false,
  		security: false,
  		v8: "9.3.345.19"
  	},
  	{
  		name: "nodejs",
  		version: "16.11.0",
  		date: "2021-10-08",
  		lts: false,
  		security: false,
  		v8: "9.4.146.19"
  	},
  	{
  		name: "nodejs",
  		version: "16.12.0",
  		date: "2021-10-20",
  		lts: false,
  		security: false,
  		v8: "9.4.146.19"
  	},
  	{
  		name: "nodejs",
  		version: "16.13.0",
  		date: "2021-10-26",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.19"
  	},
  	{
  		name: "nodejs",
  		version: "16.14.0",
  		date: "2022-02-08",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.24"
  	},
  	{
  		name: "nodejs",
  		version: "16.15.0",
  		date: "2022-04-26",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.24"
  	},
  	{
  		name: "nodejs",
  		version: "16.16.0",
  		date: "2022-07-07",
  		lts: "Gallium",
  		security: true,
  		v8: "9.4.146.24"
  	},
  	{
  		name: "nodejs",
  		version: "16.17.0",
  		date: "2022-08-16",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.26"
  	},
  	{
  		name: "nodejs",
  		version: "16.18.0",
  		date: "2022-10-12",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.26"
  	},
  	{
  		name: "nodejs",
  		version: "16.19.0",
  		date: "2022-12-13",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.26"
  	},
  	{
  		name: "nodejs",
  		version: "16.20.0",
  		date: "2023-03-28",
  		lts: "Gallium",
  		security: false,
  		v8: "9.4.146.26"
  	},
  	{
  		name: "nodejs",
  		version: "17.0.0",
  		date: "2021-10-19",
  		lts: false,
  		security: false,
  		v8: "9.5.172.21"
  	},
  	{
  		name: "nodejs",
  		version: "17.1.0",
  		date: "2021-11-09",
  		lts: false,
  		security: false,
  		v8: "9.5.172.25"
  	},
  	{
  		name: "nodejs",
  		version: "17.2.0",
  		date: "2021-11-30",
  		lts: false,
  		security: false,
  		v8: "9.6.180.14"
  	},
  	{
  		name: "nodejs",
  		version: "17.3.0",
  		date: "2021-12-17",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.4.0",
  		date: "2022-01-18",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.5.0",
  		date: "2022-02-10",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.6.0",
  		date: "2022-02-22",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.7.0",
  		date: "2022-03-09",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.8.0",
  		date: "2022-03-22",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "17.9.0",
  		date: "2022-04-07",
  		lts: false,
  		security: false,
  		v8: "9.6.180.15"
  	},
  	{
  		name: "nodejs",
  		version: "18.0.0",
  		date: "2022-04-18",
  		lts: false,
  		security: false,
  		v8: "10.1.124.8"
  	},
  	{
  		name: "nodejs",
  		version: "18.1.0",
  		date: "2022-05-03",
  		lts: false,
  		security: false,
  		v8: "10.1.124.8"
  	},
  	{
  		name: "nodejs",
  		version: "18.2.0",
  		date: "2022-05-17",
  		lts: false,
  		security: false,
  		v8: "10.1.124.8"
  	},
  	{
  		name: "nodejs",
  		version: "18.3.0",
  		date: "2022-06-02",
  		lts: false,
  		security: false,
  		v8: "10.2.154.4"
  	},
  	{
  		name: "nodejs",
  		version: "18.4.0",
  		date: "2022-06-16",
  		lts: false,
  		security: false,
  		v8: "10.2.154.4"
  	},
  	{
  		name: "nodejs",
  		version: "18.5.0",
  		date: "2022-07-06",
  		lts: false,
  		security: true,
  		v8: "10.2.154.4"
  	},
  	{
  		name: "nodejs",
  		version: "18.6.0",
  		date: "2022-07-13",
  		lts: false,
  		security: false,
  		v8: "10.2.154.13"
  	},
  	{
  		name: "nodejs",
  		version: "18.7.0",
  		date: "2022-07-26",
  		lts: false,
  		security: false,
  		v8: "10.2.154.13"
  	},
  	{
  		name: "nodejs",
  		version: "18.8.0",
  		date: "2022-08-24",
  		lts: false,
  		security: false,
  		v8: "10.2.154.13"
  	},
  	{
  		name: "nodejs",
  		version: "18.9.0",
  		date: "2022-09-07",
  		lts: false,
  		security: false,
  		v8: "10.2.154.15"
  	},
  	{
  		name: "nodejs",
  		version: "18.10.0",
  		date: "2022-09-28",
  		lts: false,
  		security: false,
  		v8: "10.2.154.15"
  	},
  	{
  		name: "nodejs",
  		version: "18.11.0",
  		date: "2022-10-13",
  		lts: false,
  		security: false,
  		v8: "10.2.154.15"
  	},
  	{
  		name: "nodejs",
  		version: "18.12.0",
  		date: "2022-10-25",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.15"
  	},
  	{
  		name: "nodejs",
  		version: "18.13.0",
  		date: "2023-01-05",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.23"
  	},
  	{
  		name: "nodejs",
  		version: "18.14.0",
  		date: "2023-02-01",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.23"
  	},
  	{
  		name: "nodejs",
  		version: "18.15.0",
  		date: "2023-03-05",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.26"
  	},
  	{
  		name: "nodejs",
  		version: "18.16.0",
  		date: "2023-04-12",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.26"
  	},
  	{
  		name: "nodejs",
  		version: "18.17.0",
  		date: "2023-07-18",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.26"
  	},
  	{
  		name: "nodejs",
  		version: "18.18.0",
  		date: "2023-09-18",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.26"
  	},
  	{
  		name: "nodejs",
  		version: "18.19.0",
  		date: "2023-11-29",
  		lts: "Hydrogen",
  		security: false,
  		v8: "10.2.154.26"
  	},
  	{
  		name: "nodejs",
  		version: "19.0.0",
  		date: "2022-10-17",
  		lts: false,
  		security: false,
  		v8: "10.7.193.13"
  	},
  	{
  		name: "nodejs",
  		version: "19.1.0",
  		date: "2022-11-14",
  		lts: false,
  		security: false,
  		v8: "10.7.193.20"
  	},
  	{
  		name: "nodejs",
  		version: "19.2.0",
  		date: "2022-11-29",
  		lts: false,
  		security: false,
  		v8: "10.8.168.20"
  	},
  	{
  		name: "nodejs",
  		version: "19.3.0",
  		date: "2022-12-14",
  		lts: false,
  		security: false,
  		v8: "10.8.168.21"
  	},
  	{
  		name: "nodejs",
  		version: "19.4.0",
  		date: "2023-01-05",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "19.5.0",
  		date: "2023-01-24",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "19.6.0",
  		date: "2023-02-01",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "19.7.0",
  		date: "2023-02-21",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "19.8.0",
  		date: "2023-03-14",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "19.9.0",
  		date: "2023-04-10",
  		lts: false,
  		security: false,
  		v8: "10.8.168.25"
  	},
  	{
  		name: "nodejs",
  		version: "20.0.0",
  		date: "2023-04-17",
  		lts: false,
  		security: false,
  		v8: "11.3.244.4"
  	},
  	{
  		name: "nodejs",
  		version: "20.1.0",
  		date: "2023-05-03",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.2.0",
  		date: "2023-05-16",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.3.0",
  		date: "2023-06-08",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.4.0",
  		date: "2023-07-04",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.5.0",
  		date: "2023-07-19",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.6.0",
  		date: "2023-08-23",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.7.0",
  		date: "2023-09-18",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.8.0",
  		date: "2023-09-28",
  		lts: false,
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.9.0",
  		date: "2023-10-24",
  		lts: "Iron",
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "20.10.0",
  		date: "2023-11-22",
  		lts: "Iron",
  		security: false,
  		v8: "11.3.244.8"
  	},
  	{
  		name: "nodejs",
  		version: "21.0.0",
  		date: "2023-10-17",
  		lts: false,
  		security: false,
  		v8: "11.8.172.13"
  	},
  	{
  		name: "nodejs",
  		version: "21.1.0",
  		date: "2023-10-24",
  		lts: false,
  		security: false,
  		v8: "11.8.172.15"
  	},
  	{
  		name: "nodejs",
  		version: "21.2.0",
  		date: "2023-11-14",
  		lts: false,
  		security: false,
  		v8: "11.8.172.17"
  	},
  	{
  		name: "nodejs",
  		version: "21.3.0",
  		date: "2023-11-30",
  		lts: false,
  		security: false,
  		v8: "11.8.172.17"
  	}
  ];

  var agents$2 = {};

  var browsers$2 = {};

  var browsers$1 = {
    A: "ie",
    B: "edge",
    C: "firefox",
    D: "chrome",
    E: "safari",
    F: "opera",
    G: "ios_saf",
    H: "op_mini",
    I: "android",
    J: "bb",
    K: "op_mob",
    L: "and_chr",
    M: "and_ff",
    N: "ie_mob",
    O: "and_uc",
    P: "samsung",
    Q: "and_qq",
    R: "baidu",
    S: "kaios"
  };

  browsers$2.browsers = browsers$1;

  var browserVersions$1 = {};

  var browserVersions = {
    "0": "25",
    "1": "112",
    "2": "113",
    "3": "114",
    "4": "115",
    "5": "116",
    "6": "117",
    "7": "118",
    "8": "119",
    "9": "120",
    A: "10",
    B: "11",
    C: "12",
    D: "7",
    E: "8",
    F: "9",
    G: "15",
    H: "80",
    I: "126",
    J: "4",
    K: "6",
    L: "13",
    M: "14",
    N: "16",
    O: "17",
    P: "18",
    Q: "79",
    R: "81",
    S: "83",
    T: "84",
    U: "85",
    V: "86",
    W: "87",
    X: "88",
    Y: "89",
    Z: "90",
    a: "91",
    b: "92",
    c: "93",
    d: "94",
    e: "95",
    f: "96",
    g: "97",
    h: "98",
    i: "99",
    j: "100",
    k: "101",
    l: "102",
    m: "103",
    n: "104",
    o: "105",
    p: "106",
    q: "107",
    r: "108",
    s: "109",
    t: "110",
    u: "111",
    v: "20",
    w: "21",
    x: "22",
    y: "23",
    z: "24",
    AB: "121",
    BB: "122",
    CB: "123",
    DB: "124",
    EB: "125",
    FB: "5",
    GB: "19",
    HB: "26",
    IB: "27",
    JB: "28",
    KB: "29",
    LB: "30",
    MB: "31",
    NB: "32",
    OB: "33",
    PB: "34",
    QB: "35",
    RB: "36",
    SB: "37",
    TB: "38",
    UB: "39",
    VB: "40",
    WB: "41",
    XB: "42",
    YB: "43",
    ZB: "44",
    aB: "45",
    bB: "46",
    cB: "47",
    dB: "48",
    eB: "49",
    fB: "50",
    gB: "51",
    hB: "52",
    iB: "53",
    jB: "54",
    kB: "55",
    lB: "56",
    mB: "57",
    nB: "58",
    oB: "60",
    pB: "62",
    qB: "63",
    rB: "64",
    sB: "65",
    tB: "66",
    uB: "67",
    vB: "68",
    wB: "69",
    xB: "70",
    yB: "71",
    zB: "72",
    "0B": "73",
    "1B": "74",
    "2B": "75",
    "3B": "76",
    "4B": "77",
    "5B": "78",
    "6B": "127",
    "7B": "11.1",
    "8B": "12.1",
    "9B": "15.5",
    AC: "16.0",
    BC: "17.0",
    CC: "18.0",
    DC: "3",
    EC: "59",
    FC: "61",
    GC: "82",
    HC: "128",
    IC: "129",
    JC: "3.2",
    KC: "10.1",
    LC: "15.2-15.3",
    MC: "15.4",
    NC: "16.1",
    OC: "16.2",
    PC: "16.3",
    QC: "16.4",
    RC: "16.5",
    SC: "17.1",
    TC: "17.2",
    UC: "17.3",
    VC: "17.4",
    WC: "17.5",
    XC: "17.6",
    YC: "11.5",
    ZC: "4.2-4.3",
    aC: "5.5",
    bC: "2",
    cC: "130",
    dC: "3.5",
    eC: "3.6",
    fC: "3.1",
    gC: "5.1",
    hC: "6.1",
    iC: "7.1",
    jC: "9.1",
    kC: "13.1",
    lC: "14.1",
    mC: "15.1",
    nC: "15.6",
    oC: "16.6",
    pC: "TP",
    qC: "9.5-9.6",
    rC: "10.0-10.1",
    sC: "10.5",
    tC: "10.6",
    uC: "11.6",
    vC: "4.0-4.1",
    wC: "5.0-5.1",
    xC: "6.0-6.1",
    yC: "7.0-7.1",
    zC: "8.1-8.4",
    "0C": "9.0-9.2",
    "1C": "9.3",
    "2C": "10.0-10.2",
    "3C": "10.3",
    "4C": "11.0-11.2",
    "5C": "11.3-11.4",
    "6C": "12.0-12.1",
    "7C": "12.2-12.5",
    "8C": "13.0-13.1",
    "9C": "13.2",
    AD: "13.3",
    BD: "13.4-13.7",
    CD: "14.0-14.4",
    DD: "14.5-14.8",
    ED: "15.0-15.1",
    FD: "15.6-15.8",
    GD: "16.6-16.7",
    HD: "all",
    ID: "2.1",
    JD: "2.2",
    KD: "2.3",
    LD: "4.1",
    MD: "4.4",
    ND: "4.4.3-4.4.4",
    OD: "5.0-5.4",
    PD: "6.2-6.4",
    QD: "7.2-7.4",
    RD: "8.2",
    SD: "9.2",
    TD: "11.1-11.2",
    UD: "12.0",
    VD: "13.0",
    WD: "14.0",
    XD: "15.0",
    YD: "19.0",
    ZD: "14.9",
    aD: "13.52",
    bD: "2.5",
    cD: "3.0-3.1"
  };

  browserVersions$1.browserVersions = browserVersions;

  var agents$1 = {
    A: {
      A: {
        K: 0,
        D: 0,
        E: 0.0271533,
        F: 0.0678831,
        A: 0,
        B: 0.529489,
        aC: 0
      },
      B: "ms",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "aC", "K", "D", "E", "F", "A", "B", "", "", ""],
      E: "IE",
      F: {
        aC: 962323200,
        K: 998870400,
        D: 1161129600,
        E: 1237420800,
        F: 1300060800,
        A: 1346716800,
        B: 1381968000
      }
    },
    B: {
      A: {
        "1": 0.00757,
        "2": 0.011355,
        "3": 0.01514,
        "4": 0.00757,
        "5": 0.00757,
        "6": 0.011355,
        "7": 0.00757,
        "8": 0.01514,
        "9": 0.034065,
        C: 0,
        L: 0,
        M: 0,
        G: 0,
        N: 0,
        O: 0.003785,
        P: 0.041635,
        Q: 0,
        H: 0,
        R: 0,
        S: 0,
        T: 0,
        U: 0,
        V: 0,
        W: 0,
        X: 0,
        Y: 0,
        Z: 0,
        a: 0,
        b: 0.011355,
        c: 0,
        d: 0,
        e: 0,
        f: 0,
        g: 0,
        h: 0,
        i: 0,
        j: 0,
        k: 0,
        l: 0,
        m: 0,
        n: 0,
        o: 0,
        p: 0,
        q: 0.003785,
        r: 0.00757,
        s: 0.064345,
        t: 0.003785,
        u: 0.00757,
        AB: 0.026495,
        BB: 0.064345,
        CB: 0.16654,
        DB: 2.88417,
        EB: 1.57834,
        I: 0.00757
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "C", "L", "M", "G", "N", "O", "P", "Q", "H", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "I", "", "", ""],
      E: "Edge",
      F: {
        "1": 1680825600,
        "2": 1683158400,
        "3": 1685664000,
        "4": 1689897600,
        "5": 1692576000,
        "6": 1694649600,
        "7": 1697155200,
        "8": 1698969600,
        "9": 1701993600,
        C: 1438128000,
        L: 1447286400,
        M: 1470096000,
        G: 1491868800,
        N: 1508198400,
        O: 1525046400,
        P: 1542067200,
        Q: 1579046400,
        H: 1581033600,
        R: 1586736000,
        S: 1590019200,
        T: 1594857600,
        U: 1598486400,
        V: 1602201600,
        W: 1605830400,
        X: 1611360000,
        Y: 1614816000,
        Z: 1618358400,
        a: 1622073600,
        b: 1626912000,
        c: 1630627200,
        d: 1632441600,
        e: 1634774400,
        f: 1637539200,
        g: 1641427200,
        h: 1643932800,
        i: 1646265600,
        j: 1649635200,
        k: 1651190400,
        l: 1653955200,
        m: 1655942400,
        n: 1659657600,
        o: 1661990400,
        p: 1664755200,
        q: 1666915200,
        r: 1670198400,
        s: 1673481600,
        t: 1675900800,
        u: 1678665600,
        AB: 1706227200,
        BB: 1708732800,
        CB: 1711152000,
        DB: 1713398400,
        EB: 1715990400,
        I: 1718841600
      },
      D: {
        C: "ms",
        L: "ms",
        M: "ms",
        G: "ms",
        N: "ms",
        O: "ms",
        P: "ms"
      }
    },
    C: {
      A: {
        "0": 0,
        "1": 0,
        "2": 0.011355,
        "3": 0,
        "4": 0.397425,
        "5": 0,
        "6": 0.00757,
        "7": 0.079485,
        "8": 0,
        "9": 0.00757,
        bC: 0,
        DC: 0,
        J: 0.003785,
        FB: 0,
        K: 0,
        D: 0,
        E: 0,
        F: 0,
        A: 0,
        B: 0.018925,
        C: 0,
        L: 0,
        M: 0,
        G: 0,
        N: 0,
        O: 0,
        P: 0,
        GB: 0,
        v: 0,
        w: 0,
        x: 0,
        y: 0,
        z: 0,
        HB: 0,
        IB: 0,
        JB: 0,
        KB: 0,
        LB: 0,
        MB: 0,
        NB: 0,
        OB: 0,
        PB: 0,
        QB: 0,
        RB: 0,
        SB: 0,
        TB: 0,
        UB: 0,
        VB: 0,
        WB: 0,
        XB: 0,
        YB: 0.00757,
        ZB: 0.00757,
        aB: 0.00757,
        bB: 0,
        cB: 0,
        dB: 0,
        eB: 0,
        fB: 0.00757,
        gB: 0,
        hB: 0.05299,
        iB: 0.003785,
        jB: 0.003785,
        kB: 0,
        lB: 0.02271,
        mB: 0,
        nB: 0,
        EC: 0.003785,
        oB: 0,
        FC: 0,
        pB: 0,
        qB: 0,
        rB: 0,
        sB: 0,
        tB: 0,
        uB: 0,
        vB: 0,
        wB: 0,
        xB: 0,
        yB: 0,
        zB: 0,
        "0B": 0,
        "1B": 0,
        "2B": 0,
        "3B": 0,
        "4B": 0,
        "5B": 0.01514,
        Q: 0,
        H: 0,
        R: 0,
        GC: 0,
        S: 0,
        T: 0,
        U: 0,
        V: 0,
        W: 0,
        X: 0.011355,
        Y: 0,
        Z: 0,
        a: 0,
        b: 0,
        c: 0,
        d: 0.003785,
        e: 0,
        f: 0,
        g: 0,
        h: 0,
        i: 0,
        j: 0,
        k: 0,
        l: 0.011355,
        m: 0.011355,
        n: 0,
        o: 0,
        p: 0,
        q: 0,
        r: 0.003785,
        s: 0.00757,
        t: 0,
        u: 0,
        AB: 0.00757,
        BB: 0.011355,
        CB: 0.01514,
        DB: 0.06813,
        EB: 0.844055,
        I: 0.738075,
        "6B": 0.003785,
        HC: 0,
        IC: 0,
        cC: 0,
        dC: 0,
        eC: 0
      },
      B: "moz",
      C: ["bC", "DC", "dC", "eC", "J", "FB", "K", "D", "E", "F", "A", "B", "C", "L", "M", "G", "N", "O", "P", "GB", "v", "w", "x", "y", "z", "0", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "EC", "oB", "FC", "pB", "qB", "rB", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "Q", "H", "R", "GC", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "I", "6B", "HC", "IC", "cC"],
      E: "Firefox",
      F: {
        "0": 1379376000,
        "1": 1681171200,
        "2": 1683590400,
        "3": 1686009600,
        "4": 1688428800,
        "5": 1690848000,
        "6": 1693267200,
        "7": 1695686400,
        "8": 1698105600,
        "9": 1700524800,
        bC: 1161648000,
        DC: 1213660800,
        dC: 1246320000,
        eC: 1264032000,
        J: 1300752000,
        FB: 1308614400,
        K: 1313452800,
        D: 1317081600,
        E: 1317081600,
        F: 1320710400,
        A: 1324339200,
        B: 1327968000,
        C: 1331596800,
        L: 1335225600,
        M: 1338854400,
        G: 1342483200,
        N: 1346112000,
        O: 1349740800,
        P: 1353628800,
        GB: 1357603200,
        v: 1361232000,
        w: 1364860800,
        x: 1368489600,
        y: 1372118400,
        z: 1375747200,
        HB: 1386633600,
        IB: 1391472000,
        JB: 1395100800,
        KB: 1398729600,
        LB: 1402358400,
        MB: 1405987200,
        NB: 1409616000,
        OB: 1413244800,
        PB: 1417392000,
        QB: 1421107200,
        RB: 1424736000,
        SB: 1428278400,
        TB: 1431475200,
        UB: 1435881600,
        VB: 1439251200,
        WB: 1442880000,
        XB: 1446508800,
        YB: 1450137600,
        ZB: 1453852800,
        aB: 1457395200,
        bB: 1461628800,
        cB: 1465257600,
        dB: 1470096000,
        eB: 1474329600,
        fB: 1479168000,
        gB: 1485216000,
        hB: 1488844800,
        iB: 1492560000,
        jB: 1497312000,
        kB: 1502150400,
        lB: 1506556800,
        mB: 1510617600,
        nB: 1516665600,
        EC: 1520985600,
        oB: 1525824000,
        FC: 1529971200,
        pB: 1536105600,
        qB: 1540252800,
        rB: 1544486400,
        sB: 1548720000,
        tB: 1552953600,
        uB: 1558396800,
        vB: 1562630400,
        wB: 1567468800,
        xB: 1571788800,
        yB: 1575331200,
        zB: 1578355200,
        "0B": 1581379200,
        "1B": 1583798400,
        "2B": 1586304000,
        "3B": 1588636800,
        "4B": 1591056000,
        "5B": 1593475200,
        Q: 1595894400,
        H: 1598313600,
        R: 1600732800,
        GC: 1603152000,
        S: 1605571200,
        T: 1607990400,
        U: 1611619200,
        V: 1614038400,
        W: 1616457600,
        X: 1618790400,
        Y: 1622505600,
        Z: 1626134400,
        a: 1628553600,
        b: 1630972800,
        c: 1633392000,
        d: 1635811200,
        e: 1638835200,
        f: 1641859200,
        g: 1644364800,
        h: 1646697600,
        i: 1649116800,
        j: 1651536000,
        k: 1653955200,
        l: 1656374400,
        m: 1658793600,
        n: 1661212800,
        o: 1663632000,
        p: 1666051200,
        q: 1668470400,
        r: 1670889600,
        s: 1673913600,
        t: 1676332800,
        u: 1678752000,
        AB: 1702944000,
        BB: 1705968000,
        CB: 1708387200,
        DB: 1710806400,
        EB: 1713225600,
        I: 1715644800,
        "6B": 1718064000,
        HC: null,
        IC: null,
        cC: null
      }
    },
    D: {
      A: {
        "0": 0,
        "1": 0.041635,
        "2": 0.09841,
        "3": 0.109765,
        "4": 0.04542,
        "5": 0.230885,
        "6": 0.102195,
        "7": 0.08327,
        "8": 0.09084,
        "9": 0.185465,
        J: 0,
        FB: 0,
        K: 0,
        D: 0,
        E: 0,
        F: 0,
        A: 0,
        B: 0,
        C: 0,
        L: 0,
        M: 0,
        G: 0,
        N: 0,
        O: 0,
        P: 0,
        GB: 0,
        v: 0,
        w: 0,
        x: 0,
        y: 0,
        z: 0,
        HB: 0,
        IB: 0,
        JB: 0,
        KB: 0,
        LB: 0,
        MB: 0,
        NB: 0,
        OB: 0,
        PB: 0.00757,
        QB: 0,
        RB: 0,
        SB: 0,
        TB: 0.01514,
        UB: 0,
        VB: 0,
        WB: 0,
        XB: 0,
        YB: 0,
        ZB: 0,
        aB: 0.003785,
        bB: 0,
        cB: 0.003785,
        dB: 0.02271,
        eB: 0.026495,
        fB: 0.011355,
        gB: 0,
        hB: 0.003785,
        iB: 0.003785,
        jB: 0,
        kB: 0,
        lB: 0.011355,
        mB: 0,
        nB: 0.003785,
        EC: 0,
        oB: 0,
        FC: 0.003785,
        pB: 0,
        qB: 0.003785,
        rB: 0,
        sB: 0,
        tB: 0.02271,
        uB: 0.00757,
        vB: 0,
        wB: 0.03028,
        xB: 0.064345,
        yB: 0.003785,
        zB: 0.003785,
        "0B": 0.011355,
        "1B": 0.00757,
        "2B": 0.00757,
        "3B": 0.00757,
        "4B": 0.00757,
        "5B": 0.01514,
        Q: 0.12112,
        H: 0.011355,
        R: 0.02271,
        S: 0.041635,
        T: 0.00757,
        U: 0.011355,
        V: 0.049205,
        W: 0.06813,
        X: 0.01514,
        Y: 0.011355,
        Z: 0.011355,
        a: 0.03785,
        b: 0.018925,
        c: 0.03028,
        d: 0.041635,
        e: 0.011355,
        f: 0.011355,
        g: 0.01514,
        h: 0.071915,
        i: 0.034065,
        j: 0.04542,
        k: 0.06813,
        l: 0.049205,
        m: 0.170325,
        n: 0.094625,
        o: 0.03028,
        p: 0.03785,
        q: 0.03028,
        r: 0.04542,
        s: 1.49507,
        t: 0.026495,
        u: 0.03785,
        AB: 0.389855,
        BB: 0.29523,
        CB: 1.11279,
        DB: 12.6116,
        EB: 4.62527,
        I: 0.018925,
        "6B": 0.00757,
        HC: 0,
        IC: 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "J", "FB", "K", "D", "E", "F", "A", "B", "C", "L", "M", "G", "N", "O", "P", "GB", "v", "w", "x", "y", "z", "0", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "EC", "oB", "FC", "pB", "qB", "rB", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "Q", "H", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "I", "6B", "HC", "IC"],
      E: "Chrome",
      F: {
        "0": 1357862400,
        "1": 1680566400,
        "2": 1682985600,
        "3": 1685404800,
        "4": 1689724800,
        "5": 1692057600,
        "6": 1694476800,
        "7": 1696896000,
        "8": 1698710400,
        "9": 1701993600,
        J: 1264377600,
        FB: 1274745600,
        K: 1283385600,
        D: 1287619200,
        E: 1291248000,
        F: 1296777600,
        A: 1299542400,
        B: 1303862400,
        C: 1307404800,
        L: 1312243200,
        M: 1316131200,
        G: 1316131200,
        N: 1319500800,
        O: 1323734400,
        P: 1328659200,
        GB: 1332892800,
        v: 1337040000,
        w: 1340668800,
        x: 1343692800,
        y: 1348531200,
        z: 1352246400,
        HB: 1361404800,
        IB: 1364428800,
        JB: 1369094400,
        KB: 1374105600,
        LB: 1376956800,
        MB: 1384214400,
        NB: 1389657600,
        OB: 1392940800,
        PB: 1397001600,
        QB: 1400544000,
        RB: 1405468800,
        SB: 1409011200,
        TB: 1412640000,
        UB: 1416268800,
        VB: 1421798400,
        WB: 1425513600,
        XB: 1429401600,
        YB: 1432080000,
        ZB: 1437523200,
        aB: 1441152000,
        bB: 1444780800,
        cB: 1449014400,
        dB: 1453248000,
        eB: 1456963200,
        fB: 1460592000,
        gB: 1464134400,
        hB: 1469059200,
        iB: 1472601600,
        jB: 1476230400,
        kB: 1480550400,
        lB: 1485302400,
        mB: 1489017600,
        nB: 1492560000,
        EC: 1496707200,
        oB: 1500940800,
        FC: 1504569600,
        pB: 1508198400,
        qB: 1512518400,
        rB: 1516752000,
        sB: 1520294400,
        tB: 1523923200,
        uB: 1527552000,
        vB: 1532390400,
        wB: 1536019200,
        xB: 1539648000,
        yB: 1543968000,
        zB: 1548720000,
        "0B": 1552348800,
        "1B": 1555977600,
        "2B": 1559606400,
        "3B": 1564444800,
        "4B": 1568073600,
        "5B": 1571702400,
        Q: 1575936000,
        H: 1580860800,
        R: 1586304000,
        S: 1589846400,
        T: 1594684800,
        U: 1598313600,
        V: 1601942400,
        W: 1605571200,
        X: 1611014400,
        Y: 1614556800,
        Z: 1618272000,
        a: 1621987200,
        b: 1626739200,
        c: 1630368000,
        d: 1632268800,
        e: 1634601600,
        f: 1637020800,
        g: 1641340800,
        h: 1643673600,
        i: 1646092800,
        j: 1648512000,
        k: 1650931200,
        l: 1653350400,
        m: 1655769600,
        n: 1659398400,
        o: 1661817600,
        p: 1664236800,
        q: 1666656000,
        r: 1669680000,
        s: 1673308800,
        t: 1675728000,
        u: 1678147200,
        AB: 1705968000,
        BB: 1708387200,
        CB: 1710806400,
        DB: 1713225600,
        EB: 1715644800,
        I: 1718064000,
        "6B": null,
        HC: null,
        IC: null
      }
    },
    E: {
      A: {
        J: 0,
        FB: 0,
        K: 0,
        D: 0,
        E: 0.01514,
        F: 0.003785,
        A: 0,
        B: 0,
        C: 0,
        L: 0.00757,
        M: 0.034065,
        G: 0.00757,
        fC: 0,
        JC: 0,
        gC: 0,
        hC: 0,
        iC: 0,
        jC: 0,
        KC: 0,
        "7B": 0.00757,
        "8B": 0.01514,
        kC: 0.064345,
        lC: 0.09084,
        mC: 0.034065,
        LC: 0.011355,
        MC: 0.026495,
        "9B": 0.034065,
        nC: 0.246025,
        AC: 0.03028,
        NC: 0.049205,
        OC: 0.03785,
        PC: 0.09841,
        QC: 0.03028,
        RC: 0.06056,
        oC: 0.34065,
        BC: 0.03785,
        SC: 0.06813,
        TC: 0.08327,
        UC: 0.09841,
        VC: 1.5405,
        WC: 0.185465,
        XC: 0,
        CC: 0,
        pC: 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "fC", "JC", "J", "FB", "gC", "K", "hC", "D", "iC", "E", "F", "jC", "A", "KC", "B", "7B", "C", "8B", "L", "kC", "M", "lC", "G", "mC", "LC", "MC", "9B", "nC", "AC", "NC", "OC", "PC", "QC", "RC", "oC", "BC", "SC", "TC", "UC", "VC", "WC", "XC", "CC", "pC"],
      E: "Safari",
      F: {
        fC: 1205798400,
        JC: 1226534400,
        J: 1244419200,
        FB: 1275868800,
        gC: 1311120000,
        K: 1343174400,
        hC: 1382400000,
        D: 1382400000,
        iC: 1410998400,
        E: 1413417600,
        F: 1443657600,
        jC: 1458518400,
        A: 1474329600,
        KC: 1490572800,
        B: 1505779200,
        "7B": 1522281600,
        C: 1537142400,
        "8B": 1553472000,
        L: 1568851200,
        kC: 1585008000,
        M: 1600214400,
        lC: 1619395200,
        G: 1632096000,
        mC: 1635292800,
        LC: 1639353600,
        MC: 1647216000,
        "9B": 1652745600,
        nC: 1658275200,
        AC: 1662940800,
        NC: 1666569600,
        OC: 1670889600,
        PC: 1674432000,
        QC: 1679875200,
        RC: 1684368000,
        oC: 1690156800,
        BC: 1695686400,
        SC: 1698192000,
        TC: 1702252800,
        UC: 1705881600,
        VC: 1709596800,
        WC: 1715558400,
        XC: null,
        CC: null,
        pC: null
      }
    },
    F: {
      A: {
        "0": 0,
        F: 0,
        B: 0,
        C: 0,
        G: 0,
        N: 0,
        O: 0,
        P: 0,
        GB: 0,
        v: 0,
        w: 0,
        x: 0,
        y: 0,
        z: 0,
        HB: 0,
        IB: 0,
        JB: 0,
        KB: 0,
        LB: 0,
        MB: 0,
        NB: 0,
        OB: 0,
        PB: 0,
        QB: 0,
        RB: 0,
        SB: 0,
        TB: 0,
        UB: 0,
        VB: 0,
        WB: 0,
        XB: 0,
        YB: 0,
        ZB: 0,
        aB: 0,
        bB: 0.01514,
        cB: 0,
        dB: 0,
        eB: 0,
        fB: 0,
        gB: 0,
        hB: 0,
        iB: 0,
        jB: 0,
        kB: 0,
        lB: 0,
        mB: 0,
        nB: 0,
        oB: 0,
        pB: 0,
        qB: 0,
        rB: 0,
        sB: 0,
        tB: 0,
        uB: 0,
        vB: 0,
        wB: 0,
        xB: 0,
        yB: 0,
        zB: 0,
        "0B": 0,
        "1B": 0,
        "2B": 0,
        "3B": 0,
        "4B": 0,
        "5B": 0,
        Q: 0,
        H: 0,
        R: 0,
        GC: 0,
        S: 0,
        T: 0,
        U: 0,
        V: 0,
        W: 0,
        X: 0,
        Y: 0,
        Z: 0,
        a: 0,
        b: 0,
        c: 0,
        d: 0,
        e: 0.041635,
        f: 0,
        g: 0,
        h: 0,
        i: 0,
        j: 0,
        k: 0,
        l: 0.071915,
        m: 0,
        n: 0,
        o: 0,
        p: 0.00757,
        q: 0.185465,
        r: 0.01514,
        s: 0.738075,
        t: 0.04542,
        u: 0,
        qC: 0,
        rC: 0,
        sC: 0,
        tC: 0,
        "7B": 0,
        YC: 0,
        uC: 0,
        "8B": 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "F", "qC", "rC", "sC", "tC", "B", "7B", "YC", "uC", "C", "8B", "G", "N", "O", "P", "GB", "v", "w", "x", "y", "z", "0", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "lB", "mB", "nB", "oB", "pB", "qB", "rB", "sB", "tB", "uB", "vB", "wB", "xB", "yB", "zB", "0B", "1B", "2B", "3B", "4B", "5B", "Q", "H", "R", "GC", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "", "", ""],
      E: "Opera",
      F: {
        "0": 1413331200,
        F: 1150761600,
        qC: 1223424000,
        rC: 1251763200,
        sC: 1267488000,
        tC: 1277942400,
        B: 1292457600,
        "7B": 1302566400,
        YC: 1309219200,
        uC: 1323129600,
        C: 1323129600,
        "8B": 1352073600,
        G: 1372723200,
        N: 1377561600,
        O: 1381104000,
        P: 1386288000,
        GB: 1390867200,
        v: 1393891200,
        w: 1399334400,
        x: 1401753600,
        y: 1405987200,
        z: 1409616000,
        HB: 1417132800,
        IB: 1422316800,
        JB: 1425945600,
        KB: 1430179200,
        LB: 1433808000,
        MB: 1438646400,
        NB: 1442448000,
        OB: 1445904000,
        PB: 1449100800,
        QB: 1454371200,
        RB: 1457308800,
        SB: 1462320000,
        TB: 1465344000,
        UB: 1470096000,
        VB: 1474329600,
        WB: 1477267200,
        XB: 1481587200,
        YB: 1486425600,
        ZB: 1490054400,
        aB: 1494374400,
        bB: 1498003200,
        cB: 1502236800,
        dB: 1506470400,
        eB: 1510099200,
        fB: 1515024000,
        gB: 1517961600,
        hB: 1521676800,
        iB: 1525910400,
        jB: 1530144000,
        kB: 1534982400,
        lB: 1537833600,
        mB: 1543363200,
        nB: 1548201600,
        oB: 1554768000,
        pB: 1561593600,
        qB: 1566259200,
        rB: 1570406400,
        sB: 1573689600,
        tB: 1578441600,
        uB: 1583971200,
        vB: 1587513600,
        wB: 1592956800,
        xB: 1595894400,
        yB: 1600128000,
        zB: 1603238400,
        "0B": 1613520000,
        "1B": 1612224000,
        "2B": 1616544000,
        "3B": 1619568000,
        "4B": 1623715200,
        "5B": 1627948800,
        Q: 1631577600,
        H: 1633392000,
        R: 1635984000,
        GC: 1638403200,
        S: 1642550400,
        T: 1644969600,
        U: 1647993600,
        V: 1650412800,
        W: 1652745600,
        X: 1654646400,
        Y: 1657152000,
        Z: 1660780800,
        a: 1663113600,
        b: 1668816000,
        c: 1668643200,
        d: 1671062400,
        e: 1675209600,
        f: 1677024000,
        g: 1679529600,
        h: 1681948800,
        i: 1684195200,
        j: 1687219200,
        k: 1690329600,
        l: 1692748800,
        m: 1696204800,
        n: 1699920000,
        o: 1699920000,
        p: 1702944000,
        q: 1707264000,
        r: 1710115200,
        s: 1711497600,
        t: 1716336000,
        u: 1719273600
      },
      D: {
        F: "o",
        B: "o",
        C: "o",
        qC: "o",
        rC: "o",
        sC: "o",
        tC: "o",
        "7B": "o",
        YC: "o",
        uC: "o",
        "8B": "o"
      }
    },
    G: {
      A: {
        E: 0,
        JC: 0,
        vC: 0,
        ZC: 0.00289868,
        wC: 0.00289868,
        xC: 0.00724669,
        yC: 0.0115947,
        zC: 0.00289868,
        "0C": 0.00724669,
        "1C": 0.0333348,
        "2C": 0.00579735,
        "3C": 0.0521762,
        "4C": 0.0768149,
        "5C": 0.0144934,
        "6C": 0.00869603,
        "7C": 0.210154,
        "8C": 0.00434801,
        "9C": 0.0217401,
        AD: 0.0101454,
        BD: 0.0463788,
        CD: 0.100004,
        DD: 0.123194,
        ED: 0.0594229,
        LC: 0.0652202,
        MC: 0.0739162,
        "9B": 0.0927576,
        FD: 0.83192,
        AC: 0.189863,
        NC: 0.389872,
        OC: 0.189863,
        PC: 0.329,
        QC: 0.0695682,
        RC: 0.140586,
        GD: 1.11744,
        BC: 0.121744,
        SC: 0.198559,
        TC: 0.207255,
        UC: 0.382625,
        VC: 8.67429,
        WC: 0.61307,
        XC: 0,
        CC: 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "JC", "vC", "ZC", "wC", "xC", "yC", "E", "zC", "0C", "1C", "2C", "3C", "4C", "5C", "6C", "7C", "8C", "9C", "AD", "BD", "CD", "DD", "ED", "LC", "MC", "9B", "FD", "AC", "NC", "OC", "PC", "QC", "RC", "GD", "BC", "SC", "TC", "UC", "VC", "WC", "XC", "CC", ""],
      E: "Safari on iOS",
      F: {
        JC: 1270252800,
        vC: 1283904000,
        ZC: 1299628800,
        wC: 1331078400,
        xC: 1359331200,
        yC: 1394409600,
        E: 1410912000,
        zC: 1413763200,
        "0C": 1442361600,
        "1C": 1458518400,
        "2C": 1473724800,
        "3C": 1490572800,
        "4C": 1505779200,
        "5C": 1522281600,
        "6C": 1537142400,
        "7C": 1553472000,
        "8C": 1568851200,
        "9C": 1572220800,
        AD: 1580169600,
        BD: 1585008000,
        CD: 1600214400,
        DD: 1619395200,
        ED: 1632096000,
        LC: 1639353600,
        MC: 1647216000,
        "9B": 1652659200,
        FD: 1658275200,
        AC: 1662940800,
        NC: 1666569600,
        OC: 1670889600,
        PC: 1674432000,
        QC: 1679875200,
        RC: 1684368000,
        GD: 1690156800,
        BC: 1694995200,
        SC: 1698192000,
        TC: 1702252800,
        UC: 1705881600,
        VC: 1709596800,
        WC: 1715558400,
        XC: null,
        CC: null
      }
    },
    H: {
      A: {
        HD: 0.1
      },
      B: "o",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "HD", "", "", ""],
      E: "Opera Mini",
      F: {
        HD: 1426464000
      }
    },
    I: {
      A: {
        DC: 0,
        J: 0.000065879,
        I: 0.656352,
        ID: 0,
        JD: 0,
        KD: 0,
        LD: 0.000131758,
        ZC: 0.000395274,
        MD: 0,
        ND: 0.00144934
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "ID", "JD", "KD", "DC", "J", "LD", "ZC", "MD", "ND", "I", "", "", ""],
      E: "Android Browser",
      F: {
        ID: 1256515200,
        JD: 1274313600,
        KD: 1291593600,
        DC: 1298332800,
        J: 1318896000,
        LD: 1341792000,
        ZC: 1374624000,
        MD: 1386547200,
        ND: 1401667200,
        I: 1718064000
      }
    },
    J: {
      A: {
        D: 0,
        A: 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "D", "A", "", "", ""],
      E: "Blackberry Browser",
      F: {
        D: 1325376000,
        A: 1359504000
      }
    },
    K: {
      A: {
        A: 0,
        B: 0,
        C: 0,
        H: 1.2238,
        "7B": 0,
        YC: 0,
        "8B": 0
      },
      B: "o",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "7B", "YC", "C", "8B", "H", "", "", ""],
      E: "Opera Mobile",
      F: {
        A: 1287100800,
        B: 1300752000,
        "7B": 1314835200,
        YC: 1318291200,
        C: 1330300800,
        "8B": 1349740800,
        H: 1709769600
      },
      D: {
        H: "webkit"
      }
    },
    L: {
      A: {
        I: 42.0636
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "I", "", "", ""],
      E: "Chrome for Android",
      F: {
        I: 1718064000
      }
    },
    M: {
      A: {
        "6B": 0.31075
      },
      B: "moz",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "6B", "", "", ""],
      E: "Firefox for Android",
      F: {
        "6B": 1718064000
      }
    },
    N: {
      A: {
        A: 0,
        B: 0
      },
      B: "ms",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "", "", ""],
      E: "IE Mobile",
      F: {
        A: 1340150400,
        B: 1353456000
      }
    },
    O: {
      A: {
        "9B": 0.913605
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "9B", "", "", ""],
      E: "UC Browser for Android",
      F: {
        "9B": 1710115200
      },
      D: {
        "9B": "webkit"
      }
    },
    P: {
      A: {
        "0": 1.98584,
        J: 0.141071,
        v: 0.0217032,
        w: 0.0542579,
        x: 0.0651095,
        y: 0.119367,
        z: 0.227883,
        OD: 0.0108516,
        PD: 0,
        QD: 0.0325548,
        RD: 0,
        SD: 0,
        KC: 0,
        TD: 0.0108516,
        UD: 0,
        VD: 0.0108516,
        WD: 0,
        XD: 0,
        AC: 0,
        BC: 0.0217032,
        CC: 0.0108516,
        YD: 0.0217032
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "J", "OD", "PD", "QD", "RD", "SD", "KC", "TD", "UD", "VD", "WD", "XD", "AC", "BC", "CC", "YD", "v", "w", "x", "y", "z", "0", "", "", ""],
      E: "Samsung Internet",
      F: {
        "0": 1715126400,
        J: 1461024000,
        OD: 1481846400,
        PD: 1509408000,
        QD: 1528329600,
        RD: 1546128000,
        SD: 1554163200,
        KC: 1567900800,
        TD: 1582588800,
        UD: 1593475200,
        VD: 1605657600,
        WD: 1618531200,
        XD: 1629072000,
        AC: 1640736000,
        BC: 1651708800,
        CC: 1659657600,
        YD: 1667260800,
        v: 1677369600,
        w: 1684454400,
        x: 1689292800,
        y: 1697587200,
        z: 1711497600
      }
    },
    Q: {
      A: {
        ZD: 0.292105
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "ZD", "", "", ""],
      E: "QQ Browser",
      F: {
        ZD: 1710288000
      }
    },
    R: {
      A: {
        aD: 0
      },
      B: "webkit",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "aD", "", "", ""],
      E: "Baidu Browser",
      F: {
        aD: 1710201600
      }
    },
    S: {
      A: {
        bD: 0.08701,
        cD: 0
      },
      B: "moz",
      C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "bD", "cD", "", "", ""],
      E: "KaiOS Browser",
      F: {
        bD: 1527811200,
        cD: 1631664000
      }
    }
  };

  var browsers = browsers$2.browsers;
  var versions$1 = browserVersions$1.browserVersions;
  var agentsData = agents$1;
  function unpackBrowserVersions(versionsData) {
    return Object.keys(versionsData).reduce(function (usage, version) {
      usage[versions$1[version]] = versionsData[version];
      return usage;
    }, {});
  }
  agents$2.agents = Object.keys(agentsData).reduce(function (map, key) {
    var versionsData = agentsData[key];
    map[browsers[key]] = Object.keys(versionsData).reduce(function (data, entry) {
      if (entry === 'A') {
        data.usage_global = unpackBrowserVersions(versionsData[entry]);
      } else if (entry === 'C') {
        data.versions = versionsData[entry].reduce(function (list, version) {
          if (version === '') {
            list.push(null);
          } else {
            list.push(versions$1[version]);
          }
          return list;
        }, []);
      } else if (entry === 'D') {
        data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]);
      } else if (entry === 'E') {
        data.browser = versionsData[entry];
      } else if (entry === 'F') {
        data.release_date = Object.keys(versionsData[entry]).reduce(function (map2, key2) {
          map2[versions$1[key2]] = versionsData[entry][key2];
          return map2;
        }, {});
      } else {
        data.prefix = versionsData[entry];
      }
      return data;
    }, {});
    return map;
  }, {});

  var v4 = {
  	start: "2015-09-08",
  	lts: "2015-10-12",
  	maintenance: "2017-04-01",
  	end: "2018-04-30",
  	codename: "Argon"
  };
  var v5 = {
  	start: "2015-10-29",
  	maintenance: "2016-04-30",
  	end: "2016-06-30"
  };
  var v6 = {
  	start: "2016-04-26",
  	lts: "2016-10-18",
  	maintenance: "2018-04-30",
  	end: "2019-04-30",
  	codename: "Boron"
  };
  var v7 = {
  	start: "2016-10-25",
  	maintenance: "2017-04-30",
  	end: "2017-06-30"
  };
  var v8 = {
  	start: "2017-05-30",
  	lts: "2017-10-31",
  	maintenance: "2019-01-01",
  	end: "2019-12-31",
  	codename: "Carbon"
  };
  var v9 = {
  	start: "2017-10-01",
  	maintenance: "2018-04-01",
  	end: "2018-06-30"
  };
  var v10 = {
  	start: "2018-04-24",
  	lts: "2018-10-30",
  	maintenance: "2020-05-19",
  	end: "2021-04-30",
  	codename: "Dubnium"
  };
  var v11 = {
  	start: "2018-10-23",
  	maintenance: "2019-04-22",
  	end: "2019-06-01"
  };
  var v12 = {
  	start: "2019-04-23",
  	lts: "2019-10-21",
  	maintenance: "2020-11-30",
  	end: "2022-04-30",
  	codename: "Erbium"
  };
  var v13 = {
  	start: "2019-10-22",
  	maintenance: "2020-04-01",
  	end: "2020-06-01"
  };
  var v14 = {
  	start: "2020-04-21",
  	lts: "2020-10-27",
  	maintenance: "2021-10-19",
  	end: "2023-04-30",
  	codename: "Fermium"
  };
  var v15 = {
  	start: "2020-10-20",
  	maintenance: "2021-04-01",
  	end: "2021-06-01"
  };
  var v16 = {
  	start: "2021-04-20",
  	lts: "2021-10-26",
  	maintenance: "2022-10-18",
  	end: "2023-09-11",
  	codename: "Gallium"
  };
  var v17 = {
  	start: "2021-10-19",
  	maintenance: "2022-04-01",
  	end: "2022-06-01"
  };
  var v18 = {
  	start: "2022-04-19",
  	lts: "2022-10-25",
  	maintenance: "2023-10-18",
  	end: "2025-04-30",
  	codename: "Hydrogen"
  };
  var v19 = {
  	start: "2022-10-18",
  	maintenance: "2023-04-01",
  	end: "2023-06-01"
  };
  var v20 = {
  	start: "2023-04-18",
  	lts: "2023-10-24",
  	maintenance: "2024-10-22",
  	end: "2026-04-30",
  	codename: "Iron"
  };
  var v21 = {
  	start: "2023-10-17",
  	maintenance: "2024-04-01",
  	end: "2024-06-01"
  };
  var v22 = {
  	start: "2024-04-23",
  	lts: "2024-10-29",
  	maintenance: "2025-10-21",
  	end: "2027-04-30",
  	codename: ""
  };
  var v23 = {
  	start: "2024-10-15",
  	maintenance: "2025-04-01",
  	end: "2025-06-01"
  };
  var v24 = {
  	start: "2025-04-22",
  	lts: "2025-10-28",
  	maintenance: "2026-10-20",
  	end: "2028-04-30",
  	codename: ""
  };
  var require$$2$1 = {
  	"v0.8": {
  	start: "2012-06-25",
  	end: "2014-07-31"
  },
  	"v0.10": {
  	start: "2013-03-11",
  	end: "2016-10-31"
  },
  	"v0.12": {
  	start: "2015-02-06",
  	end: "2016-12-31"
  },
  	v4: v4,
  	v5: v5,
  	v6: v6,
  	v7: v7,
  	v8: v8,
  	v9: v9,
  	v10: v10,
  	v11: v11,
  	v12: v12,
  	v13: v13,
  	v14: v14,
  	v15: v15,
  	v16: v16,
  	v17: v17,
  	v18: v18,
  	v19: v19,
  	v20: v20,
  	v21: v21,
  	v22: v22,
  	v23: v23,
  	v24: v24
  };

  var require$$3$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_path);

  var versions = {
    "0.20": "39",
    "0.21": "41",
    "0.22": "41",
    "0.23": "41",
    "0.24": "41",
    "0.25": "42",
    "0.26": "42",
    "0.27": "43",
    "0.28": "43",
    "0.29": "43",
    "0.30": "44",
    "0.31": "45",
    "0.32": "45",
    "0.33": "45",
    "0.34": "45",
    "0.35": "45",
    "0.36": "47",
    "0.37": "49",
    "1.0": "49",
    "1.1": "50",
    "1.2": "51",
    "1.3": "52",
    "1.4": "53",
    "1.5": "54",
    "1.6": "56",
    "1.7": "58",
    "1.8": "59",
    "2.0": "61",
    "2.1": "61",
    "3.0": "66",
    "3.1": "66",
    "4.0": "69",
    "4.1": "69",
    "4.2": "69",
    "5.0": "73",
    "6.0": "76",
    "6.1": "76",
    "7.0": "78",
    "7.1": "78",
    "7.2": "78",
    "7.3": "78",
    "8.0": "80",
    "8.1": "80",
    "8.2": "80",
    "8.3": "80",
    "8.4": "80",
    "8.5": "80",
    "9.0": "83",
    "9.1": "83",
    "9.2": "83",
    "9.3": "83",
    "9.4": "83",
    "10.0": "85",
    "10.1": "85",
    "10.2": "85",
    "10.3": "85",
    "10.4": "85",
    "11.0": "87",
    "11.1": "87",
    "11.2": "87",
    "11.3": "87",
    "11.4": "87",
    "11.5": "87",
    "12.0": "89",
    "12.1": "89",
    "12.2": "89",
    "13.0": "91",
    "13.1": "91",
    "13.2": "91",
    "13.3": "91",
    "13.4": "91",
    "13.5": "91",
    "13.6": "91",
    "14.0": "93",
    "14.1": "93",
    "14.2": "93",
    "15.0": "94",
    "15.1": "94",
    "15.2": "94",
    "15.3": "94",
    "15.4": "94",
    "15.5": "94",
    "16.0": "96",
    "16.1": "96",
    "16.2": "96",
    "17.0": "98",
    "17.1": "98",
    "17.2": "98",
    "17.3": "98",
    "17.4": "98",
    "18.0": "100",
    "18.1": "100",
    "18.2": "100",
    "18.3": "100",
    "19.0": "102",
    "19.1": "102",
    "20.0": "104",
    "20.1": "104",
    "20.2": "104",
    "20.3": "104",
    "21.0": "106",
    "21.1": "106",
    "21.2": "106",
    "21.3": "106",
    "21.4": "106",
    "22.0": "108",
    "22.1": "108",
    "22.2": "108",
    "22.3": "108",
    "23.0": "110",
    "23.1": "110",
    "23.2": "110",
    "23.3": "110",
    "24.0": "112",
    "24.1": "112",
    "24.2": "112",
    "24.3": "112",
    "24.4": "112",
    "24.5": "112",
    "24.6": "112",
    "24.7": "112",
    "24.8": "112",
    "25.0": "114",
    "25.1": "114",
    "25.2": "114",
    "25.3": "114",
    "25.4": "114",
    "25.5": "114",
    "25.6": "114",
    "25.7": "114",
    "25.8": "114",
    "25.9": "114",
    "26.0": "116",
    "26.1": "116",
    "26.2": "116",
    "26.3": "116",
    "26.4": "116",
    "26.5": "116",
    "26.6": "116",
    "27.0": "118",
    "27.1": "118",
    "27.2": "118",
    "27.3": "118",
    "28.0": "120",
    "28.1": "120",
    "28.2": "120",
    "28.3": "120",
    "29.0": "122",
    "29.1": "122",
    "29.2": "122",
    "29.3": "122",
    "29.4": "122",
    "30.0": "124",
    "30.1": "124",
    "31.0": "126",
    "31.1": "126",
    "32.0": "127"
  };

  function BrowserslistError$2(message) {
    this.name = 'BrowserslistError';
    this.message = message;
    this.browserslist = true;
    if (Error.captureStackTrace) {
      Error.captureStackTrace(this, BrowserslistError$2);
    }
  }
  BrowserslistError$2.prototype = Error.prototype;
  var error = BrowserslistError$2;

  var AND_REGEXP = /^\s+and\s+(.*)/i;
  var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i;
  function flatten(array) {
    if (!Array.isArray(array)) return [array];
    return array.reduce(function (a, b) {
      return a.concat(flatten(b));
    }, []);
  }
  function find(string, predicate) {
    for (var n = 1, max = string.length; n <= max; n++) {
      var parsed = string.substr(-n, n);
      if (predicate(parsed, n, max)) {
        return string.slice(0, -n);
      }
    }
    return '';
  }
  function matchQuery(all, query) {
    var node = {
      query: query
    };
    if (query.indexOf('not ') === 0) {
      node.not = true;
      query = query.slice(4);
    }
    for (var name in all) {
      var type = all[name];
      var match = query.match(type.regexp);
      if (match) {
        node.type = name;
        for (var i = 0; i < type.matches.length; i++) {
          node[type.matches[i]] = match[i + 1];
        }
        return node;
      }
    }
    node.type = 'unknown';
    return node;
  }
  function matchBlock(all, string, qs) {
    var node;
    return find(string, function (parsed, n, max) {
      if (AND_REGEXP.test(parsed)) {
        node = matchQuery(all, parsed.match(AND_REGEXP)[1]);
        node.compose = 'and';
        qs.unshift(node);
        return true;
      } else if (OR_REGEXP.test(parsed)) {
        node = matchQuery(all, parsed.match(OR_REGEXP)[1]);
        node.compose = 'or';
        qs.unshift(node);
        return true;
      } else if (n === max) {
        node = matchQuery(all, parsed.trim());
        node.compose = 'or';
        qs.unshift(node);
        return true;
      }
      return false;
    });
  }
  var parse$3 = function parse(all, queries) {
    if (!Array.isArray(queries)) queries = [queries];
    return flatten(queries.map(function (block) {
      var qs = [];
      do {
        block = matchBlock(all, block, qs);
      } while (block);
      return qs;
    }));
  };

  var BrowserslistError$1 = error;
  function noop() {}
  var browser = {
    loadQueries: function loadQueries() {
      throw new BrowserslistError$1('Sharable configs are not supported in client-side build of Browserslist');
    },
    getStat: function getStat(opts) {
      return opts.stats;
    },
    loadConfig: function loadConfig(opts) {
      if (opts.config) {
        throw new BrowserslistError$1('Browserslist config are not supported in client-side build');
      }
    },
    loadCountry: function loadCountry() {
      throw new BrowserslistError$1('Country statistics are not supported ' + 'in client-side build of Browserslist');
    },
    loadFeature: function loadFeature() {
      throw new BrowserslistError$1('Supports queries are not available in client-side build of Browserslist');
    },
    currentNode: function currentNode(resolve, context) {
      return resolve(['maintained node versions'], context)[0];
    },
    parseConfig: noop,
    readConfig: noop,
    findConfig: noop,
    clearCaches: noop,
    oldDataWarning: noop,
    env: {}
  };

  var jsReleases = require$$0$8;
  var agents = agents$2.agents;
  var jsEOL = require$$2$1;
  var path = require$$3$1;
  var e2c = versions;
  var BrowserslistError = error;
  var parse$2 = parse$3;
  var env = browser;
  var YEAR = 365.259641 * 24 * 60 * 60 * 1000;
  var ANDROID_EVERGREEN_FIRST = '37';
  var OP_MOB_BLINK_FIRST = 14;
  function isVersionsMatch(versionA, versionB) {
    return (versionA + '.').indexOf(versionB + '.') === 0;
  }
  function isEolReleased(name) {
    var version = name.slice(1);
    return browserslist.nodeVersions.some(function (i) {
      return isVersionsMatch(i, version);
    });
  }
  function normalize$1(versions) {
    return versions.filter(function (version) {
      return typeof version === 'string';
    });
  }
  function normalizeElectron(version) {
    var versionToUse = version;
    if (version.split('.').length === 3) {
      versionToUse = version.split('.').slice(0, -1).join('.');
    }
    return versionToUse;
  }
  function nameMapper(name) {
    return function mapName(version) {
      return name + ' ' + version;
    };
  }
  function getMajor(version) {
    return parseInt(version.split('.')[0]);
  }
  function getMajorVersions(released, number) {
    if (released.length === 0) return [];
    var majorVersions = uniq(released.map(getMajor));
    var minimum = majorVersions[majorVersions.length - number];
    if (!minimum) {
      return released;
    }
    var selected = [];
    for (var i = released.length - 1; i >= 0; i--) {
      if (minimum > getMajor(released[i])) break;
      selected.unshift(released[i]);
    }
    return selected;
  }
  function uniq(array) {
    var filtered = [];
    for (var i = 0; i < array.length; i++) {
      if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]);
    }
    return filtered;
  }
  function fillUsage(result, name, data) {
    for (var i in data) {
      result[name + ' ' + i] = data[i];
    }
  }
  function generateFilter(sign, version) {
    version = parseFloat(version);
    if (sign === '>') {
      return function (v) {
        return parseFloat(v) > version;
      };
    } else if (sign === '>=') {
      return function (v) {
        return parseFloat(v) >= version;
      };
    } else if (sign === '<') {
      return function (v) {
        return parseFloat(v) < version;
      };
    } else {
      return function (v) {
        return parseFloat(v) <= version;
      };
    }
  }
  function generateSemverFilter(sign, version) {
    version = version.split('.').map(parseSimpleInt);
    version[1] = version[1] || 0;
    version[2] = version[2] || 0;
    if (sign === '>') {
      return function (v) {
        v = v.split('.').map(parseSimpleInt);
        return compareSemver(v, version) > 0;
      };
    } else if (sign === '>=') {
      return function (v) {
        v = v.split('.').map(parseSimpleInt);
        return compareSemver(v, version) >= 0;
      };
    } else if (sign === '<') {
      return function (v) {
        v = v.split('.').map(parseSimpleInt);
        return compareSemver(version, v) > 0;
      };
    } else {
      return function (v) {
        v = v.split('.').map(parseSimpleInt);
        return compareSemver(version, v) >= 0;
      };
    }
  }
  function parseSimpleInt(x) {
    return parseInt(x);
  }
  function compare$2(a, b) {
    if (a < b) return -1;
    if (a > b) return +1;
    return 0;
  }
  function compareSemver(a, b) {
    return compare$2(parseInt(a[0]), parseInt(b[0])) || compare$2(parseInt(a[1] || '0'), parseInt(b[1] || '0')) || compare$2(parseInt(a[2] || '0'), parseInt(b[2] || '0'));
  }
  function semverFilterLoose(operator, range) {
    range = range.split('.').map(parseSimpleInt);
    if (typeof range[1] === 'undefined') {
      range[1] = 'x';
    }
    switch (operator) {
      case '<=':
        return function (version) {
          version = version.split('.').map(parseSimpleInt);
          return compareSemverLoose(version, range) <= 0;
        };
      case '>=':
      default:
        return function (version) {
          version = version.split('.').map(parseSimpleInt);
          return compareSemverLoose(version, range) >= 0;
        };
    }
  }
  function compareSemverLoose(version, range) {
    if (version[0] !== range[0]) {
      return version[0] < range[0] ? -1 : +1;
    }
    if (range[1] === 'x') {
      return 0;
    }
    if (version[1] !== range[1]) {
      return version[1] < range[1] ? -1 : +1;
    }
    return 0;
  }
  function resolveVersion(data, version) {
    if (data.versions.indexOf(version) !== -1) {
      return version;
    } else if (browserslist.versionAliases[data.name][version]) {
      return browserslist.versionAliases[data.name][version];
    } else {
      return false;
    }
  }
  function normalizeVersion(data, version) {
    var resolved = resolveVersion(data, version);
    if (resolved) {
      return resolved;
    } else if (data.versions.length === 1) {
      return data.versions[0];
    } else {
      return false;
    }
  }
  function filterByYear(since, context) {
    since = since / 1000;
    return Object.keys(agents).reduce(function (selected, name) {
      var data = byName(name, context);
      if (!data) return selected;
      var versions = Object.keys(data.releaseDate).filter(function (v) {
        var date = data.releaseDate[v];
        return date !== null && date >= since;
      });
      return selected.concat(versions.map(nameMapper(data.name)));
    }, []);
  }
  function cloneData(data) {
    return {
      name: data.name,
      versions: data.versions,
      released: data.released,
      releaseDate: data.releaseDate
    };
  }
  function byName(name, context) {
    name = name.toLowerCase();
    name = browserslist.aliases[name] || name;
    if (context.mobileToDesktop && browserslist.desktopNames[name]) {
      var desktop = browserslist.data[browserslist.desktopNames[name]];
      if (name === 'android') {
        return normalizeAndroidData(cloneData(browserslist.data[name]), desktop);
      } else {
        var cloned = cloneData(desktop);
        cloned.name = name;
        return cloned;
      }
    }
    return browserslist.data[name];
  }
  function normalizeAndroidVersions(androidVersions, chromeVersions) {
    var iFirstEvergreen = chromeVersions.indexOf(ANDROID_EVERGREEN_FIRST);
    return androidVersions.filter(function (version) {
      return /^(?:[2-4]\.|[34]$)/.test(version);
    }).concat(chromeVersions.slice(iFirstEvergreen));
  }
  function copyObject(obj) {
    var copy = {};
    for (var key in obj) {
      copy[key] = obj[key];
    }
    return copy;
  }
  function normalizeAndroidData(android, chrome) {
    android.released = normalizeAndroidVersions(android.released, chrome.released);
    android.versions = normalizeAndroidVersions(android.versions, chrome.versions);
    android.releaseDate = copyObject(android.releaseDate);
    android.released.forEach(function (v) {
      if (android.releaseDate[v] === undefined) {
        android.releaseDate[v] = chrome.releaseDate[v];
      }
    });
    return android;
  }
  function checkName(name, context) {
    var data = byName(name, context);
    if (!data) throw new BrowserslistError('Unknown browser ' + name);
    return data;
  }
  function unknownQuery(query) {
    return new BrowserslistError('Unknown browser query `' + query + '`. ' + 'Maybe you are using old Browserslist or made typo in query.');
  }
  function filterJumps(list, name, nVersions, context) {
    var jump = 1;
    switch (name) {
      case 'android':
        if (context.mobileToDesktop) return list;
        var released = browserslist.data.chrome.released;
        jump = released.length - released.indexOf(ANDROID_EVERGREEN_FIRST);
        break;
      case 'op_mob':
        var latest = browserslist.data.op_mob.released.slice(-1)[0];
        jump = getMajor(latest) - OP_MOB_BLINK_FIRST + 1;
        break;
      default:
        return list;
    }
    if (nVersions <= jump) {
      return list.slice(-1);
    }
    return list.slice(jump - 1 - nVersions);
  }
  function isSupported(flags, withPartial) {
    return typeof flags === 'string' && (flags.indexOf('y') >= 0 || withPartial && flags.indexOf('a') >= 0);
  }
  function resolve$1(queries, context) {
    return parse$2(QUERIES, queries).reduce(function (result, node, index) {
      if (node.not && index === 0) {
        throw new BrowserslistError('Write any browsers query (for instance, `defaults`) ' + 'before `' + node.query + '`');
      }
      var type = QUERIES[node.type];
      var array = type.select.call(browserslist, context, node).map(function (j) {
        var parts = j.split(' ');
        if (parts[1] === '0') {
          return parts[0] + ' ' + byName(parts[0], context).versions[0];
        } else {
          return j;
        }
      });
      if (node.compose === 'and') {
        if (node.not) {
          return result.filter(function (j) {
            return array.indexOf(j) === -1;
          });
        } else {
          return result.filter(function (j) {
            return array.indexOf(j) !== -1;
          });
        }
      } else {
        if (node.not) {
          var filter = {};
          array.forEach(function (j) {
            filter[j] = true;
          });
          return result.filter(function (j) {
            return !filter[j];
          });
        }
        return result.concat(array);
      }
    }, []);
  }
  function prepareOpts(opts) {
    if (typeof opts === 'undefined') opts = {};
    if (typeof opts.path === 'undefined') {
      opts.path = path.resolve ? path.resolve('.') : '.';
    }
    return opts;
  }
  function prepareQueries(queries, opts) {
    if (typeof queries === 'undefined' || queries === null) {
      var config = browserslist.loadConfig(opts);
      if (config) {
        queries = config;
      } else {
        queries = browserslist.defaults;
      }
    }
    return queries;
  }
  function checkQueries(queries) {
    if (!(typeof queries === 'string' || Array.isArray(queries))) {
      throw new BrowserslistError('Browser queries must be an array or string. Got ' + typeof queries + '.');
    }
  }
  var cache = {};
  function browserslist(queries, opts) {
    opts = prepareOpts(opts);
    queries = prepareQueries(queries, opts);
    checkQueries(queries);
    var context = {
      ignoreUnknownVersions: opts.ignoreUnknownVersions,
      dangerousExtend: opts.dangerousExtend,
      mobileToDesktop: opts.mobileToDesktop,
      path: opts.path,
      env: opts.env
    };
    env.oldDataWarning(browserslist.data);
    var stats = env.getStat(opts, browserslist.data);
    if (stats) {
      context.customUsage = {};
      for (var browser in stats) {
        fillUsage(context.customUsage, browser, stats[browser]);
      }
    }
    var cacheKey = JSON.stringify([queries, context]);
    if (cache[cacheKey]) return cache[cacheKey];
    var result = uniq(resolve$1(queries, context)).sort(function (name1, name2) {
      name1 = name1.split(' ');
      name2 = name2.split(' ');
      if (name1[0] === name2[0]) {
        var version1 = name1[1].split('-')[0];
        var version2 = name2[1].split('-')[0];
        return compareSemver(version2.split('.'), version1.split('.'));
      } else {
        return compare$2(name1[0], name2[0]);
      }
    });
    if (!env.env.BROWSERSLIST_DISABLE_CACHE) {
      cache[cacheKey] = result;
    }
    return result;
  }
  browserslist.parse = function (queries, opts) {
    opts = prepareOpts(opts);
    queries = prepareQueries(queries, opts);
    checkQueries(queries);
    return parse$2(QUERIES, queries);
  };
  browserslist.cache = {};
  browserslist.data = {};
  browserslist.usage = {
    global: {},
    custom: null
  };
  browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'];
  browserslist.aliases = {
    fx: 'firefox',
    ff: 'firefox',
    ios: 'ios_saf',
    explorer: 'ie',
    blackberry: 'bb',
    explorermobile: 'ie_mob',
    operamini: 'op_mini',
    operamobile: 'op_mob',
    chromeandroid: 'and_chr',
    firefoxandroid: 'and_ff',
    ucandroid: 'and_uc',
    qqandroid: 'and_qq'
  };
  browserslist.desktopNames = {
    and_chr: 'chrome',
    and_ff: 'firefox',
    ie_mob: 'ie',
    android: 'chrome'
  };
  browserslist.versionAliases = {};
  browserslist.clearCaches = env.clearCaches;
  browserslist.parseConfig = env.parseConfig;
  browserslist.readConfig = env.readConfig;
  browserslist.findConfig = env.findConfig;
  browserslist.loadConfig = env.loadConfig;
  browserslist.coverage = function (browsers, stats) {
    var data;
    if (typeof stats === 'undefined') {
      data = browserslist.usage.global;
    } else if (stats === 'my stats') {
      var opts = {};
      opts.path = path.resolve ? path.resolve('.') : '.';
      var customStats = env.getStat(opts);
      if (!customStats) {
        throw new BrowserslistError('Custom usage statistics was not provided');
      }
      data = {};
      for (var browser in customStats) {
        fillUsage(data, browser, customStats[browser]);
      }
    } else if (typeof stats === 'string') {
      if (stats.length > 2) {
        stats = stats.toLowerCase();
      } else {
        stats = stats.toUpperCase();
      }
      env.loadCountry(browserslist.usage, stats, browserslist.data);
      data = browserslist.usage[stats];
    } else {
      if ('dataByBrowser' in stats) {
        stats = stats.dataByBrowser;
      }
      data = {};
      for (var name in stats) {
        for (var version in stats[name]) {
          data[name + ' ' + version] = stats[name][version];
        }
      }
    }
    return browsers.reduce(function (all, i) {
      var usage = data[i];
      if (usage === undefined) {
        usage = data[i.replace(/ \S+$/, ' 0')];
      }
      return all + (usage || 0);
    }, 0);
  };
  function nodeQuery(context, node) {
    var matched = browserslist.nodeVersions.filter(function (i) {
      return isVersionsMatch(i, node.version);
    });
    if (matched.length === 0) {
      if (context.ignoreUnknownVersions) {
        return [];
      } else {
        throw new BrowserslistError('Unknown version ' + node.version + ' of Node.js');
      }
    }
    return ['node ' + matched[matched.length - 1]];
  }
  function sinceQuery(context, node) {
    var year = parseInt(node.year);
    var month = parseInt(node.month || '01') - 1;
    var day = parseInt(node.day || '01');
    return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context);
  }
  function coverQuery(context, node) {
    var coverage = parseFloat(node.coverage);
    var usage = browserslist.usage.global;
    if (node.place) {
      if (node.place.match(/^my\s+stats$/i)) {
        if (!context.customUsage) {
          throw new BrowserslistError('Custom usage statistics was not provided');
        }
        usage = context.customUsage;
      } else {
        var place;
        if (node.place.length === 2) {
          place = node.place.toUpperCase();
        } else {
          place = node.place.toLowerCase();
        }
        env.loadCountry(browserslist.usage, place, browserslist.data);
        usage = browserslist.usage[place];
      }
    }
    var versions = Object.keys(usage).sort(function (a, b) {
      return usage[b] - usage[a];
    });
    var coveraged = 0;
    var result = [];
    var version;
    for (var i = 0; i < versions.length; i++) {
      version = versions[i];
      if (usage[version] === 0) break;
      coveraged += usage[version];
      result.push(version);
      if (coveraged >= coverage) break;
    }
    return result;
  }
  var QUERIES = {
    last_major_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+major\s+versions?$/i,
      select: function select(context, node) {
        return Object.keys(agents).reduce(function (selected, name) {
          var data = byName(name, context);
          if (!data) return selected;
          var list = getMajorVersions(data.released, node.versions);
          list = list.map(nameMapper(data.name));
          list = filterJumps(list, data.name, node.versions, context);
          return selected.concat(list);
        }, []);
      }
    },
    last_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+versions?$/i,
      select: function select(context, node) {
        return Object.keys(agents).reduce(function (selected, name) {
          var data = byName(name, context);
          if (!data) return selected;
          var list = data.released.slice(-node.versions);
          list = list.map(nameMapper(data.name));
          list = filterJumps(list, data.name, node.versions, context);
          return selected.concat(list);
        }, []);
      }
    },
    last_electron_major_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i,
      select: function select(context, node) {
        var validVersions = getMajorVersions(Object.keys(e2c), node.versions);
        return validVersions.map(function (i) {
          return 'chrome ' + e2c[i];
        });
      }
    },
    last_node_major_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i,
      select: function select(context, node) {
        return getMajorVersions(browserslist.nodeVersions, node.versions).map(function (version) {
          return 'node ' + version;
        });
      }
    },
    last_browser_major_versions: {
      matches: ['versions', 'browser'],
      regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
      select: function select(context, node) {
        var data = checkName(node.browser, context);
        var validVersions = getMajorVersions(data.released, node.versions);
        var list = validVersions.map(nameMapper(data.name));
        list = filterJumps(list, data.name, node.versions, context);
        return list;
      }
    },
    last_electron_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+electron\s+versions?$/i,
      select: function select(context, node) {
        return Object.keys(e2c).slice(-node.versions).map(function (i) {
          return 'chrome ' + e2c[i];
        });
      }
    },
    last_node_versions: {
      matches: ['versions'],
      regexp: /^last\s+(\d+)\s+node\s+versions?$/i,
      select: function select(context, node) {
        return browserslist.nodeVersions.slice(-node.versions).map(function (version) {
          return 'node ' + version;
        });
      }
    },
    last_browser_versions: {
      matches: ['versions', 'browser'],
      regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
      select: function select(context, node) {
        var data = checkName(node.browser, context);
        var list = data.released.slice(-node.versions).map(nameMapper(data.name));
        list = filterJumps(list, data.name, node.versions, context);
        return list;
      }
    },
    unreleased_versions: {
      matches: [],
      regexp: /^unreleased\s+versions$/i,
      select: function select(context) {
        return Object.keys(agents).reduce(function (selected, name) {
          var data = byName(name, context);
          if (!data) return selected;
          var list = data.versions.filter(function (v) {
            return data.released.indexOf(v) === -1;
          });
          list = list.map(nameMapper(data.name));
          return selected.concat(list);
        }, []);
      }
    },
    unreleased_electron_versions: {
      matches: [],
      regexp: /^unreleased\s+electron\s+versions?$/i,
      select: function select() {
        return [];
      }
    },
    unreleased_browser_versions: {
      matches: ['browser'],
      regexp: /^unreleased\s+(\w+)\s+versions?$/i,
      select: function select(context, node) {
        var data = checkName(node.browser, context);
        return data.versions.filter(function (v) {
          return data.released.indexOf(v) === -1;
        }).map(nameMapper(data.name));
      }
    },
    last_years: {
      matches: ['years'],
      regexp: /^last\s+(\d*.?\d+)\s+years?$/i,
      select: function select(context, node) {
        return filterByYear(Date.now() - YEAR * node.years, context);
      }
    },
    since_y: {
      matches: ['year'],
      regexp: /^since (\d+)$/i,
      select: sinceQuery
    },
    since_y_m: {
      matches: ['year', 'month'],
      regexp: /^since (\d+)-(\d+)$/i,
      select: sinceQuery
    },
    since_y_m_d: {
      matches: ['year', 'month', 'day'],
      regexp: /^since (\d+)-(\d+)-(\d+)$/i,
      select: sinceQuery
    },
    popularity: {
      matches: ['sign', 'popularity'],
      regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/,
      select: function select(context, node) {
        var popularity = parseFloat(node.popularity);
        var usage = browserslist.usage.global;
        return Object.keys(usage).reduce(function (result, version) {
          if (node.sign === '>') {
            if (usage[version] > popularity) {
              result.push(version);
            }
          } else if (node.sign === '<') {
            if (usage[version] < popularity) {
              result.push(version);
            }
          } else if (node.sign === '<=') {
            if (usage[version] <= popularity) {
              result.push(version);
            }
          } else if (usage[version] >= popularity) {
            result.push(version);
          }
          return result;
        }, []);
      }
    },
    popularity_in_my_stats: {
      matches: ['sign', 'popularity'],
      regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/,
      select: function select(context, node) {
        var popularity = parseFloat(node.popularity);
        if (!context.customUsage) {
          throw new BrowserslistError('Custom usage statistics was not provided');
        }
        var usage = context.customUsage;
        return Object.keys(usage).reduce(function (result, version) {
          var percentage = usage[version];
          if (percentage == null) {
            return result;
          }
          if (node.sign === '>') {
            if (percentage > popularity) {
              result.push(version);
            }
          } else if (node.sign === '<') {
            if (percentage < popularity) {
              result.push(version);
            }
          } else if (node.sign === '<=') {
            if (percentage <= popularity) {
              result.push(version);
            }
          } else if (percentage >= popularity) {
            result.push(version);
          }
          return result;
        }, []);
      }
    },
    popularity_in_config_stats: {
      matches: ['sign', 'popularity', 'config'],
      regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/,
      select: function select(context, node) {
        var popularity = parseFloat(node.popularity);
        var stats = env.loadStat(context, node.config, browserslist.data);
        if (stats) {
          context.customUsage = {};
          for (var browser in stats) {
            fillUsage(context.customUsage, browser, stats[browser]);
          }
        }
        if (!context.customUsage) {
          throw new BrowserslistError('Custom usage statistics was not provided');
        }
        var usage = context.customUsage;
        return Object.keys(usage).reduce(function (result, version) {
          var percentage = usage[version];
          if (percentage == null) {
            return result;
          }
          if (node.sign === '>') {
            if (percentage > popularity) {
              result.push(version);
            }
          } else if (node.sign === '<') {
            if (percentage < popularity) {
              result.push(version);
            }
          } else if (node.sign === '<=') {
            if (percentage <= popularity) {
              result.push(version);
            }
          } else if (percentage >= popularity) {
            result.push(version);
          }
          return result;
        }, []);
      }
    },
    popularity_in_place: {
      matches: ['sign', 'popularity', 'place'],
      regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/,
      select: function select(context, node) {
        var popularity = parseFloat(node.popularity);
        var place = node.place;
        if (place.length === 2) {
          place = place.toUpperCase();
        } else {
          place = place.toLowerCase();
        }
        env.loadCountry(browserslist.usage, place, browserslist.data);
        var usage = browserslist.usage[place];
        return Object.keys(usage).reduce(function (result, version) {
          var percentage = usage[version];
          if (percentage == null) {
            return result;
          }
          if (node.sign === '>') {
            if (percentage > popularity) {
              result.push(version);
            }
          } else if (node.sign === '<') {
            if (percentage < popularity) {
              result.push(version);
            }
          } else if (node.sign === '<=') {
            if (percentage <= popularity) {
              result.push(version);
            }
          } else if (percentage >= popularity) {
            result.push(version);
          }
          return result;
        }, []);
      }
    },
    cover: {
      matches: ['coverage'],
      regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
      select: coverQuery
    },
    cover_in: {
      matches: ['coverage', 'place'],
      regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
      select: coverQuery
    },
    supports: {
      matches: ['supportType', 'feature'],
      regexp: /^(?:(fully|partially)\s+)?supports\s+([\w-]+)$/,
      select: function select(context, node) {
        env.loadFeature(browserslist.cache, node.feature);
        var withPartial = node.supportType !== 'fully';
        var features = browserslist.cache[node.feature];
        var result = [];
        for (var name in features) {
          var data = byName(name, context);
          var iMax = data.released.length - 1;
          while (iMax >= 0) {
            if (data.released[iMax] in features[name]) break;
            iMax--;
          }
          var checkDesktop = context.mobileToDesktop && name in browserslist.desktopNames && isSupported(features[name][data.released[iMax]], withPartial);
          data.versions.forEach(function (version) {
            var flags = features[name][version];
            if (flags === undefined && checkDesktop) {
              flags = features[browserslist.desktopNames[name]][version];
            }
            if (isSupported(flags, withPartial)) {
              result.push(name + ' ' + version);
            }
          });
        }
        return result;
      }
    },
    electron_range: {
      matches: ['from', 'to'],
      regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i,
      select: function select(context, node) {
        var fromToUse = normalizeElectron(node.from);
        var toToUse = normalizeElectron(node.to);
        var from = parseFloat(node.from);
        var to = parseFloat(node.to);
        if (!e2c[fromToUse]) {
          throw new BrowserslistError('Unknown version ' + from + ' of electron');
        }
        if (!e2c[toToUse]) {
          throw new BrowserslistError('Unknown version ' + to + ' of electron');
        }
        return Object.keys(e2c).filter(function (i) {
          var parsed = parseFloat(i);
          return parsed >= from && parsed <= to;
        }).map(function (i) {
          return 'chrome ' + e2c[i];
        });
      }
    },
    node_range: {
      matches: ['from', 'to'],
      regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i,
      select: function select(context, node) {
        return browserslist.nodeVersions.filter(semverFilterLoose('>=', node.from)).filter(semverFilterLoose('<=', node.to)).map(function (v) {
          return 'node ' + v;
        });
      }
    },
    browser_range: {
      matches: ['browser', 'from', 'to'],
      regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
      select: function select(context, node) {
        var data = checkName(node.browser, context);
        var from = parseFloat(normalizeVersion(data, node.from) || node.from);
        var to = parseFloat(normalizeVersion(data, node.to) || node.to);
        function filter(v) {
          var parsed = parseFloat(v);
          return parsed >= from && parsed <= to;
        }
        return data.released.filter(filter).map(nameMapper(data.name));
      }
    },
    electron_ray: {
      matches: ['sign', 'version'],
      regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i,
      select: function select(context, node) {
        var versionToUse = normalizeElectron(node.version);
        return Object.keys(e2c).filter(generateFilter(node.sign, versionToUse)).map(function (i) {
          return 'chrome ' + e2c[i];
        });
      }
    },
    node_ray: {
      matches: ['sign', 'version'],
      regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
      select: function select(context, node) {
        return browserslist.nodeVersions.filter(generateSemverFilter(node.sign, node.version)).map(function (v) {
          return 'node ' + v;
        });
      }
    },
    browser_ray: {
      matches: ['browser', 'sign', 'version'],
      regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/,
      select: function select(context, node) {
        var version = node.version;
        var data = checkName(node.browser, context);
        var alias = browserslist.versionAliases[data.name][version];
        if (alias) version = alias;
        return data.released.filter(generateFilter(node.sign, version)).map(function (v) {
          return data.name + ' ' + v;
        });
      }
    },
    firefox_esr: {
      matches: [],
      regexp: /^(firefox|ff|fx)\s+esr$/i,
      select: function select() {
        return ['firefox 115'];
      }
    },
    opera_mini_all: {
      matches: [],
      regexp: /(operamini|op_mini)\s+all/i,
      select: function select() {
        return ['op_mini all'];
      }
    },
    electron_version: {
      matches: ['version'],
      regexp: /^electron\s+([\d.]+)$/i,
      select: function select(context, node) {
        var versionToUse = normalizeElectron(node.version);
        var chrome = e2c[versionToUse];
        if (!chrome) {
          throw new BrowserslistError('Unknown version ' + node.version + ' of electron');
        }
        return ['chrome ' + chrome];
      }
    },
    node_major_version: {
      matches: ['version'],
      regexp: /^node\s+(\d+)$/i,
      select: nodeQuery
    },
    node_minor_version: {
      matches: ['version'],
      regexp: /^node\s+(\d+\.\d+)$/i,
      select: nodeQuery
    },
    node_patch_version: {
      matches: ['version'],
      regexp: /^node\s+(\d+\.\d+\.\d+)$/i,
      select: nodeQuery
    },
    current_node: {
      matches: [],
      regexp: /^current\s+node$/i,
      select: function select(context) {
        return [env.currentNode(resolve$1, context)];
      }
    },
    maintained_node: {
      matches: [],
      regexp: /^maintained\s+node\s+versions$/i,
      select: function select(context) {
        var now = Date.now();
        var queries = Object.keys(jsEOL).filter(function (key) {
          return now < Date.parse(jsEOL[key].end) && now > Date.parse(jsEOL[key].start) && isEolReleased(key);
        }).map(function (key) {
          return 'node ' + key.slice(1);
        });
        return resolve$1(queries, context);
      }
    },
    phantomjs_1_9: {
      matches: [],
      regexp: /^phantomjs\s+1.9$/i,
      select: function select() {
        return ['safari 5'];
      }
    },
    phantomjs_2_1: {
      matches: [],
      regexp: /^phantomjs\s+2.1$/i,
      select: function select() {
        return ['safari 6'];
      }
    },
    browser_version: {
      matches: ['browser', 'version'],
      regexp: /^(\w+)\s+(tp|[\d.]+)$/i,
      select: function select(context, node) {
        var version = node.version;
        if (/^tp$/i.test(version)) version = 'TP';
        var data = checkName(node.browser, context);
        var alias = normalizeVersion(data, version);
        if (alias) {
          version = alias;
        } else {
          if (version.indexOf('.') === -1) {
            alias = version + '.0';
          } else {
            alias = version.replace(/\.0$/, '');
          }
          alias = normalizeVersion(data, alias);
          if (alias) {
            version = alias;
          } else if (context.ignoreUnknownVersions) {
            return [];
          } else {
            throw new BrowserslistError('Unknown version ' + version + ' of ' + node.browser);
          }
        }
        return [data.name + ' ' + version];
      }
    },
    browserslist_config: {
      matches: [],
      regexp: /^browserslist config$/i,
      select: function select(context) {
        return browserslist(undefined, context);
      }
    },
    "extends": {
      matches: ['config'],
      regexp: /^extends (.+)$/i,
      select: function select(context, node) {
        return resolve$1(env.loadQueries(context, node.config), context);
      }
    },
    defaults: {
      matches: [],
      regexp: /^defaults$/i,
      select: function select(context) {
        return resolve$1(browserslist.defaults, context);
      }
    },
    dead: {
      matches: [],
      regexp: /^dead$/i,
      select: function select(context) {
        var dead = ['Baidu >= 0', 'ie <= 11', 'ie_mob <= 11', 'bb <= 10', 'op_mob <= 12.1', 'samsung 4'];
        return resolve$1(dead, context);
      }
    },
    unknown: {
      matches: [],
      regexp: /^(\w+)$/i,
      select: function select(context, node) {
        if (byName(node.query, context)) {
          throw new BrowserslistError('Specify versions in Browserslist query for browser ' + node.query);
        } else {
          throw unknownQuery(node.query);
        }
      }
    }
  };
  (function () {
    for (var name in agents) {
      var browser = agents[name];
      browserslist.data[name] = {
        name: name,
        versions: normalize$1(agents[name].versions),
        released: normalize$1(agents[name].versions.slice(0, -3)),
        releaseDate: agents[name].release_date
      };
      fillUsage(browserslist.usage.global, name, browser.usage_global);
      browserslist.versionAliases[name] = {};
      for (var i = 0; i < browser.versions.length; i++) {
        var full = browser.versions[i];
        if (!full) continue;
        if (full.indexOf('-') !== -1) {
          var interval = full.split('-');
          for (var j = 0; j < interval.length; j++) {
            browserslist.versionAliases[name][interval[j]] = full;
          }
        }
      }
    }
    browserslist.nodeVersions = jsReleases.map(function (release) {
      return release.version;
    });
  })();
  var browserslist_1 = browserslist;

  var min = Math.min;
  function levenshtein(a, b) {
    var t = [],
      u = [],
      i,
      j;
    var m = a.length,
      n = b.length;
    if (!m) {
      return n;
    }
    if (!n) {
      return m;
    }
    for (j = 0; j <= n; j++) {
      t[j] = j;
    }
    for (i = 1; i <= m; i++) {
      for (u = [i], j = 1; j <= n; j++) {
        u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;
      }
      t = u;
    }
    return u[n];
  }
  function findSuggestion(str, arr) {
    var distances = arr.map(function (el) {
      return levenshtein(el, str);
    });
    return arr[distances.indexOf(min.apply(void 0, _toConsumableArray(distances)))];
  }

  var OptionValidator = function () {
    function OptionValidator(descriptor) {
      this.descriptor = descriptor;
    }
    var _proto = OptionValidator.prototype;
    _proto.validateTopLevelOptions = function validateTopLevelOptions(options, TopLevelOptionShape) {
      var validOptionNames = Object.keys(TopLevelOptionShape);
      for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) {
        var option = _Object$keys[_i];
        if (!validOptionNames.includes(option)) {
          throw new Error(this.formatMessage("'" + option + "' is not a valid top-level option.\n- Did you mean '" + findSuggestion(option, validOptionNames) + "'?"));
        }
      }
    };
    _proto.validateBooleanOption = function validateBooleanOption(name, value, defaultValue) {
      if (value === undefined) {
        return defaultValue;
      } else {
        this.invariant(typeof value === "boolean", "'" + name + "' option must be a boolean.");
      }
      return value;
    };
    _proto.validateStringOption = function validateStringOption(name, value, defaultValue) {
      if (value === undefined) {
        return defaultValue;
      } else {
        this.invariant(typeof value === "string", "'" + name + "' option must be a string.");
      }
      return value;
    };
    _proto.invariant = function invariant(condition, message) {
      if (!condition) {
        throw new Error(this.formatMessage(message));
      }
    };
    _proto.formatMessage = function formatMessage(message) {
      return this.descriptor + ": " + message;
    };
    return _createClass(OptionValidator);
  }();

  var require$$0$7 = {
  	"es6.module": {
  	chrome: "61",
  	and_chr: "61",
  	edge: "16",
  	firefox: "60",
  	and_ff: "60",
  	node: "13.2.0",
  	opera: "48",
  	op_mob: "45",
  	safari: "10.1",
  	ios: "10.3",
  	samsung: "8.2",
  	android: "61",
  	electron: "2.0",
  	ios_saf: "10.3"
  }
  };

  var nativeModules = require$$0$7;

  var iterator;
  var hasRequiredIterator;
  function requireIterator() {
    if (hasRequiredIterator) return iterator;
    hasRequiredIterator = 1;
    iterator = function iterator(Yallist) {
      Yallist.prototype[Symbol.iterator] = _regeneratorRuntime().mark(function _callee() {
        var walker;
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              walker = this.head;
            case 1:
              if (!walker) {
                _context.next = 7;
                break;
              }
              _context.next = 4;
              return walker.value;
            case 4:
              walker = walker.next;
              _context.next = 1;
              break;
            case 7:
            case "end":
              return _context.stop();
          }
        }, _callee, this);
      });
    };
    return iterator;
  }

  var yallist;
  var hasRequiredYallist;
  function requireYallist() {
    if (hasRequiredYallist) return yallist;
    hasRequiredYallist = 1;
    yallist = Yallist;
    Yallist.Node = Node;
    Yallist.create = Yallist;
    function Yallist(list) {
      var self = this;
      if (!(self instanceof Yallist)) {
        self = new Yallist();
      }
      self.tail = null;
      self.head = null;
      self.length = 0;
      if (list && typeof list.forEach === 'function') {
        list.forEach(function (item) {
          self.push(item);
        });
      } else if (arguments.length > 0) {
        for (var i = 0, l = arguments.length; i < l; i++) {
          self.push(arguments[i]);
        }
      }
      return self;
    }
    Yallist.prototype.removeNode = function (node) {
      if (node.list !== this) {
        throw new Error('removing node which does not belong to this list');
      }
      var next = node.next;
      var prev = node.prev;
      if (next) {
        next.prev = prev;
      }
      if (prev) {
        prev.next = next;
      }
      if (node === this.head) {
        this.head = next;
      }
      if (node === this.tail) {
        this.tail = prev;
      }
      node.list.length--;
      node.next = null;
      node.prev = null;
      node.list = null;
      return next;
    };
    Yallist.prototype.unshiftNode = function (node) {
      if (node === this.head) {
        return;
      }
      if (node.list) {
        node.list.removeNode(node);
      }
      var head = this.head;
      node.list = this;
      node.next = head;
      if (head) {
        head.prev = node;
      }
      this.head = node;
      if (!this.tail) {
        this.tail = node;
      }
      this.length++;
    };
    Yallist.prototype.pushNode = function (node) {
      if (node === this.tail) {
        return;
      }
      if (node.list) {
        node.list.removeNode(node);
      }
      var tail = this.tail;
      node.list = this;
      node.prev = tail;
      if (tail) {
        tail.next = node;
      }
      this.tail = node;
      if (!this.head) {
        this.head = node;
      }
      this.length++;
    };
    Yallist.prototype.push = function () {
      for (var i = 0, l = arguments.length; i < l; i++) {
        push(this, arguments[i]);
      }
      return this.length;
    };
    Yallist.prototype.unshift = function () {
      for (var i = 0, l = arguments.length; i < l; i++) {
        unshift(this, arguments[i]);
      }
      return this.length;
    };
    Yallist.prototype.pop = function () {
      if (!this.tail) {
        return undefined;
      }
      var res = this.tail.value;
      this.tail = this.tail.prev;
      if (this.tail) {
        this.tail.next = null;
      } else {
        this.head = null;
      }
      this.length--;
      return res;
    };
    Yallist.prototype.shift = function () {
      if (!this.head) {
        return undefined;
      }
      var res = this.head.value;
      this.head = this.head.next;
      if (this.head) {
        this.head.prev = null;
      } else {
        this.tail = null;
      }
      this.length--;
      return res;
    };
    Yallist.prototype.forEach = function (fn, thisp) {
      thisp = thisp || this;
      for (var walker = this.head, i = 0; walker !== null; i++) {
        fn.call(thisp, walker.value, i, this);
        walker = walker.next;
      }
    };
    Yallist.prototype.forEachReverse = function (fn, thisp) {
      thisp = thisp || this;
      for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
        fn.call(thisp, walker.value, i, this);
        walker = walker.prev;
      }
    };
    Yallist.prototype.get = function (n) {
      for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
        walker = walker.next;
      }
      if (i === n && walker !== null) {
        return walker.value;
      }
    };
    Yallist.prototype.getReverse = function (n) {
      for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
        walker = walker.prev;
      }
      if (i === n && walker !== null) {
        return walker.value;
      }
    };
    Yallist.prototype.map = function (fn, thisp) {
      thisp = thisp || this;
      var res = new Yallist();
      for (var walker = this.head; walker !== null;) {
        res.push(fn.call(thisp, walker.value, this));
        walker = walker.next;
      }
      return res;
    };
    Yallist.prototype.mapReverse = function (fn, thisp) {
      thisp = thisp || this;
      var res = new Yallist();
      for (var walker = this.tail; walker !== null;) {
        res.push(fn.call(thisp, walker.value, this));
        walker = walker.prev;
      }
      return res;
    };
    Yallist.prototype.reduce = function (fn, initial) {
      var acc;
      var walker = this.head;
      if (arguments.length > 1) {
        acc = initial;
      } else if (this.head) {
        walker = this.head.next;
        acc = this.head.value;
      } else {
        throw new TypeError('Reduce of empty list with no initial value');
      }
      for (var i = 0; walker !== null; i++) {
        acc = fn(acc, walker.value, i);
        walker = walker.next;
      }
      return acc;
    };
    Yallist.prototype.reduceReverse = function (fn, initial) {
      var acc;
      var walker = this.tail;
      if (arguments.length > 1) {
        acc = initial;
      } else if (this.tail) {
        walker = this.tail.prev;
        acc = this.tail.value;
      } else {
        throw new TypeError('Reduce of empty list with no initial value');
      }
      for (var i = this.length - 1; walker !== null; i--) {
        acc = fn(acc, walker.value, i);
        walker = walker.prev;
      }
      return acc;
    };
    Yallist.prototype.toArray = function () {
      var arr = new Array(this.length);
      for (var i = 0, walker = this.head; walker !== null; i++) {
        arr[i] = walker.value;
        walker = walker.next;
      }
      return arr;
    };
    Yallist.prototype.toArrayReverse = function () {
      var arr = new Array(this.length);
      for (var i = 0, walker = this.tail; walker !== null; i++) {
        arr[i] = walker.value;
        walker = walker.prev;
      }
      return arr;
    };
    Yallist.prototype.slice = function (from, to) {
      to = to || this.length;
      if (to < 0) {
        to += this.length;
      }
      from = from || 0;
      if (from < 0) {
        from += this.length;
      }
      var ret = new Yallist();
      if (to < from || to < 0) {
        return ret;
      }
      if (from < 0) {
        from = 0;
      }
      if (to > this.length) {
        to = this.length;
      }
      for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
        walker = walker.next;
      }
      for (; walker !== null && i < to; i++, walker = walker.next) {
        ret.push(walker.value);
      }
      return ret;
    };
    Yallist.prototype.sliceReverse = function (from, to) {
      to = to || this.length;
      if (to < 0) {
        to += this.length;
      }
      from = from || 0;
      if (from < 0) {
        from += this.length;
      }
      var ret = new Yallist();
      if (to < from || to < 0) {
        return ret;
      }
      if (from < 0) {
        from = 0;
      }
      if (to > this.length) {
        to = this.length;
      }
      for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
        walker = walker.prev;
      }
      for (; walker !== null && i > from; i--, walker = walker.prev) {
        ret.push(walker.value);
      }
      return ret;
    };
    Yallist.prototype.splice = function (start, deleteCount) {
      if (start > this.length) {
        start = this.length - 1;
      }
      if (start < 0) {
        start = this.length + start;
      }
      for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
        walker = walker.next;
      }
      var ret = [];
      for (var i = 0; walker && i < deleteCount; i++) {
        ret.push(walker.value);
        walker = this.removeNode(walker);
      }
      if (walker === null) {
        walker = this.tail;
      }
      if (walker !== this.head && walker !== this.tail) {
        walker = walker.prev;
      }
      for (var i = 2; i < arguments.length; i++) {
        walker = insert(this, walker, arguments[i]);
      }
      return ret;
    };
    Yallist.prototype.reverse = function () {
      var head = this.head;
      var tail = this.tail;
      for (var walker = head; walker !== null; walker = walker.prev) {
        var p = walker.prev;
        walker.prev = walker.next;
        walker.next = p;
      }
      this.head = tail;
      this.tail = head;
      return this;
    };
    function insert(self, node, value) {
      var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
      if (inserted.next === null) {
        self.tail = inserted;
      }
      if (inserted.prev === null) {
        self.head = inserted;
      }
      self.length++;
      return inserted;
    }
    function push(self, item) {
      self.tail = new Node(item, self.tail, null, self);
      if (!self.head) {
        self.head = self.tail;
      }
      self.length++;
    }
    function unshift(self, item) {
      self.head = new Node(item, null, self.head, self);
      if (!self.tail) {
        self.tail = self.head;
      }
      self.length++;
    }
    function Node(value, prev, next, list) {
      if (!(this instanceof Node)) {
        return new Node(value, prev, next, list);
      }
      this.list = list;
      this.value = value;
      if (prev) {
        prev.next = this;
        this.prev = prev;
      } else {
        this.prev = null;
      }
      if (next) {
        next.prev = this;
        this.next = next;
      } else {
        this.next = null;
      }
    }
    try {
      requireIterator()(Yallist);
    } catch (er) {}
    return yallist;
  }

  var lruCacheBABEL_8_BREAKINGFalse;
  var hasRequiredLruCacheBABEL_8_BREAKINGFalse;
  function requireLruCacheBABEL_8_BREAKINGFalse() {
    if (hasRequiredLruCacheBABEL_8_BREAKINGFalse) return lruCacheBABEL_8_BREAKINGFalse;
    hasRequiredLruCacheBABEL_8_BREAKINGFalse = 1;
    var Yallist = requireYallist();
    var MAX = Symbol('max');
    var LENGTH = Symbol('length');
    var LENGTH_CALCULATOR = Symbol('lengthCalculator');
    var ALLOW_STALE = Symbol('allowStale');
    var MAX_AGE = Symbol('maxAge');
    var DISPOSE = Symbol('dispose');
    var NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
    var LRU_LIST = Symbol('lruList');
    var CACHE = Symbol('cache');
    var UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
    var naiveLength = function naiveLength() {
      return 1;
    };
    var LRUCache = function () {
      function LRUCache(options) {
        if (typeof options === 'number') options = {
          max: options
        };
        if (!options) options = {};
        if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
        this[MAX] = options.max || Infinity;
        var lc = options.length || naiveLength;
        this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
        this[ALLOW_STALE] = options.stale || false;
        if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
        this[MAX_AGE] = options.maxAge || 0;
        this[DISPOSE] = options.dispose;
        this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
        this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
        this.reset();
      }
      var _proto = LRUCache.prototype;
      _proto.rforEach = function rforEach(fn, thisp) {
        thisp = thisp || this;
        for (var walker = this[LRU_LIST].tail; walker !== null;) {
          var prev = walker.prev;
          forEachStep(this, fn, walker, thisp);
          walker = prev;
        }
      };
      _proto.forEach = function forEach(fn, thisp) {
        thisp = thisp || this;
        for (var walker = this[LRU_LIST].head; walker !== null;) {
          var next = walker.next;
          forEachStep(this, fn, walker, thisp);
          walker = next;
        }
      };
      _proto.keys = function keys() {
        return this[LRU_LIST].toArray().map(function (k) {
          return k.key;
        });
      };
      _proto.values = function values() {
        return this[LRU_LIST].toArray().map(function (k) {
          return k.value;
        });
      };
      _proto.reset = function reset() {
        var _this = this;
        if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
          this[LRU_LIST].forEach(function (hit) {
            return _this[DISPOSE](hit.key, hit.value);
          });
        }
        this[CACHE] = new Map();
        this[LRU_LIST] = new Yallist();
        this[LENGTH] = 0;
      };
      _proto.dump = function dump() {
        var _this2 = this;
        return this[LRU_LIST].map(function (hit) {
          return isStale(_this2, hit) ? false : {
            k: hit.key,
            v: hit.value,
            e: hit.now + (hit.maxAge || 0)
          };
        }).toArray().filter(function (h) {
          return h;
        });
      };
      _proto.dumpLru = function dumpLru() {
        return this[LRU_LIST];
      };
      _proto.set = function set(key, value, maxAge) {
        maxAge = maxAge || this[MAX_AGE];
        if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
        var now = maxAge ? Date.now() : 0;
        var len = this[LENGTH_CALCULATOR](value, key);
        if (this[CACHE].has(key)) {
          if (len > this[MAX]) {
            _del(this, this[CACHE].get(key));
            return false;
          }
          var node = this[CACHE].get(key);
          var item = node.value;
          if (this[DISPOSE]) {
            if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
          }
          item.now = now;
          item.maxAge = maxAge;
          item.value = value;
          this[LENGTH] += len - item.length;
          item.length = len;
          this.get(key);
          trim(this);
          return true;
        }
        var hit = new Entry(key, value, len, now, maxAge);
        if (hit.length > this[MAX]) {
          if (this[DISPOSE]) this[DISPOSE](key, value);
          return false;
        }
        this[LENGTH] += hit.length;
        this[LRU_LIST].unshift(hit);
        this[CACHE].set(key, this[LRU_LIST].head);
        trim(this);
        return true;
      };
      _proto.has = function has(key) {
        if (!this[CACHE].has(key)) return false;
        var hit = this[CACHE].get(key).value;
        return !isStale(this, hit);
      };
      _proto.get = function get(key) {
        return _get(this, key, true);
      };
      _proto.peek = function peek(key) {
        return _get(this, key, false);
      };
      _proto.pop = function pop() {
        var node = this[LRU_LIST].tail;
        if (!node) return null;
        _del(this, node);
        return node.value;
      };
      _proto.del = function del(key) {
        _del(this, this[CACHE].get(key));
      };
      _proto.load = function load(arr) {
        this.reset();
        var now = Date.now();
        for (var l = arr.length - 1; l >= 0; l--) {
          var hit = arr[l];
          var expiresAt = hit.e || 0;
          if (expiresAt === 0) this.set(hit.k, hit.v);else {
            var maxAge = expiresAt - now;
            if (maxAge > 0) {
              this.set(hit.k, hit.v, maxAge);
            }
          }
        }
      };
      _proto.prune = function prune() {
        var _this3 = this;
        this[CACHE].forEach(function (value, key) {
          return _get(_this3, key, false);
        });
      };
      return _createClass(LRUCache, [{
        key: "max",
        get: function get() {
          return this[MAX];
        },
        set: function set(mL) {
          if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
          this[MAX] = mL || Infinity;
          trim(this);
        }
      }, {
        key: "allowStale",
        get: function get() {
          return this[ALLOW_STALE];
        },
        set: function set(allowStale) {
          this[ALLOW_STALE] = !!allowStale;
        }
      }, {
        key: "maxAge",
        get: function get() {
          return this[MAX_AGE];
        },
        set: function set(mA) {
          if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
          this[MAX_AGE] = mA;
          trim(this);
        }
      }, {
        key: "lengthCalculator",
        get: function get() {
          return this[LENGTH_CALCULATOR];
        },
        set: function set(lC) {
          var _this4 = this;
          if (typeof lC !== 'function') lC = naiveLength;
          if (lC !== this[LENGTH_CALCULATOR]) {
            this[LENGTH_CALCULATOR] = lC;
            this[LENGTH] = 0;
            this[LRU_LIST].forEach(function (hit) {
              hit.length = _this4[LENGTH_CALCULATOR](hit.value, hit.key);
              _this4[LENGTH] += hit.length;
            });
          }
          trim(this);
        }
      }, {
        key: "length",
        get: function get() {
          return this[LENGTH];
        }
      }, {
        key: "itemCount",
        get: function get() {
          return this[LRU_LIST].length;
        }
      }]);
    }();
    var _get = function _get(self, key, doUse) {
      var node = self[CACHE].get(key);
      if (node) {
        var hit = node.value;
        if (isStale(self, hit)) {
          _del(self, node);
          if (!self[ALLOW_STALE]) return undefined;
        } else {
          if (doUse) {
            if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
            self[LRU_LIST].unshiftNode(node);
          }
        }
        return hit.value;
      }
    };
    var isStale = function isStale(self, hit) {
      if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
      var diff = Date.now() - hit.now;
      return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
    };
    var trim = function trim(self) {
      if (self[LENGTH] > self[MAX]) {
        for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
          var prev = walker.prev;
          _del(self, walker);
          walker = prev;
        }
      }
    };
    var _del = function _del(self, node) {
      if (node) {
        var hit = node.value;
        if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
        self[LENGTH] -= hit.length;
        self[CACHE]["delete"](hit.key);
        self[LRU_LIST].removeNode(node);
      }
    };
    var Entry = _createClass(function Entry(key, value, length, now, maxAge) {
      this.key = key;
      this.value = value;
      this.length = length;
      this.now = now;
      this.maxAge = maxAge || 0;
    });
    var forEachStep = function forEachStep(self, fn, node, thisp) {
      var hit = node.value;
      if (isStale(self, hit)) {
        _del(self, node);
        if (!self[ALLOW_STALE]) hit = undefined;
      }
      if (hit) fn.call(thisp, hit.value, hit.key, self);
    };
    lruCacheBABEL_8_BREAKINGFalse = LRUCache;
    return lruCacheBABEL_8_BREAKINGFalse;
  }

  function bool$6(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var lruCache = bool$6(browser$1$1.env["BABEL_8_BREAKING"]) ? requireLruCacheBABEL_8_BREAKINGFalse() : requireLruCacheBABEL_8_BREAKINGFalse();

  function bool$5(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$8 = bool$5(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  var unreleasedLabels = {
    safari: "tp"
  };
  var browserNameMap = {
    and_chr: "chrome",
    and_ff: "firefox",
    android: "android",
    chrome: "chrome",
    edge: "edge",
    firefox: "firefox",
    ie: "ie",
    ie_mob: "ie",
    ios_saf: "ios",
    node: "node",
    deno: "deno",
    op_mob: "opera_mobile",
    opera: "opera",
    safari: "safari",
    samsung: "samsung"
  };

  var versionRegExp = /^(?:\d+|\d(?:\d?[^\d\n\r\u2028\u2029]\d+|\d{2,}(?:[^\d\n\r\u2028\u2029]\d+)?))$/;
  var v$5 = new OptionValidator("@babel/helper-compilation-targets");
  function semverMin(first, second) {
    return first && semver$8.lt(first, second) ? first : second;
  }
  function semverify(version) {
    if (typeof version === "string" && semver$8.valid(version)) {
      return version;
    }
    v$5.invariant(typeof version === "number" || typeof version === "string" && versionRegExp.test(version), "'" + version + "' is not a valid version");
    version = version.toString();
    var pos = 0;
    var num = 0;
    while ((pos = version.indexOf(".", pos + 1)) > 0) {
      num++;
    }
    return version + ".0".repeat(2 - num);
  }
  function isUnreleasedVersion(version, env) {
    var unreleasedLabel = unreleasedLabels[env];
    return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase();
  }
  function getLowestUnreleased(a, b, env) {
    var unreleasedLabel = unreleasedLabels[env];
    if (a === unreleasedLabel) {
      return b;
    }
    if (b === unreleasedLabel) {
      return a;
    }
    return semverMin(a, b);
  }
  function getHighestUnreleased(a, b, env) {
    return getLowestUnreleased(a, b, env) === a ? b : a;
  }
  function getLowestImplementedVersion(plugin, environment) {
    var result = plugin[environment];
    if (!result && environment === "android") {
      return plugin.chrome;
    }
    return result;
  }

  var TargetNames = {
    node: "node",
    deno: "deno",
    chrome: "chrome",
    opera: "opera",
    edge: "edge",
    firefox: "firefox",
    safari: "safari",
    ie: "ie",
    ios: "ios",
    android: "android",
    electron: "electron",
    samsung: "samsung",
    rhino: "rhino",
    opera_mobile: "opera_mobile"
  };

  function prettifyVersion(version) {
    if (typeof version !== "string") {
      return version;
    }
    var _semver$parse = semver$8.parse(version),
      major = _semver$parse.major,
      minor = _semver$parse.minor,
      patch = _semver$parse.patch;
    var parts = [major];
    if (minor || patch) {
      parts.push(minor);
    }
    if (patch) {
      parts.push(patch);
    }
    return parts.join(".");
  }
  function prettifyTargets(targets) {
    return Object.keys(targets).reduce(function (results, target) {
      var value = targets[target];
      var unreleasedLabel = unreleasedLabels[target];
      if (typeof value === "string" && unreleasedLabel !== value) {
        value = prettifyVersion(value);
      }
      results[target] = value;
      return results;
    }, {});
  }

  function getInclusionReasons(item, targetVersions, list) {
    var minVersions = list[item] || {};
    return Object.keys(targetVersions).reduce(function (result, env) {
      var minVersion = getLowestImplementedVersion(minVersions, env);
      var targetVersion = targetVersions[env];
      if (!minVersion) {
        result[env] = prettifyVersion(targetVersion);
      } else {
        var minIsUnreleased = isUnreleasedVersion(minVersion, env);
        var targetIsUnreleased = isUnreleasedVersion(targetVersion, env);
        if (!targetIsUnreleased && (minIsUnreleased || semver$8.lt(targetVersion.toString(), semverify(minVersion)))) {
          result[env] = prettifyVersion(targetVersion);
        }
      }
      return result;
    }, {});
  }

  var require$$0$6 = {
  	"transform-duplicate-named-capturing-groups-regex": {
  	chrome: "126",
  	opera: "112",
  	edge: "126",
  	firefox: "129",
  	safari: "17.4",
  	electron: "31.0"
  },
  	"transform-unicode-sets-regex": {
  	chrome: "112",
  	opera: "98",
  	edge: "112",
  	firefox: "116",
  	safari: "17",
  	node: "20",
  	deno: "1.32",
  	ios: "17",
  	opera_mobile: "75",
  	electron: "24.0"
  },
  	"bugfix/transform-v8-static-class-fields-redefine-readonly": {
  	chrome: "98",
  	opera: "84",
  	edge: "98",
  	firefox: "75",
  	safari: "15",
  	node: "12",
  	deno: "1.18",
  	ios: "15",
  	samsung: "11",
  	opera_mobile: "52",
  	electron: "17.0"
  },
  	"bugfix/transform-firefox-class-in-computed-class-key": {
  	chrome: "74",
  	opera: "62",
  	edge: "79",
  	safari: "16",
  	node: "12",
  	deno: "1",
  	ios: "16",
  	samsung: "11",
  	opera_mobile: "53",
  	electron: "6.0"
  },
  	"bugfix/transform-safari-class-field-initializer-scope": {
  	chrome: "74",
  	opera: "62",
  	edge: "79",
  	firefox: "69",
  	safari: "16",
  	node: "12",
  	deno: "1",
  	ios: "16",
  	samsung: "11",
  	opera_mobile: "53",
  	electron: "6.0"
  },
  	"transform-class-static-block": {
  	chrome: "94",
  	opera: "80",
  	edge: "94",
  	firefox: "93",
  	safari: "16.4",
  	node: "16.11",
  	deno: "1.14",
  	ios: "16.4",
  	samsung: "17",
  	opera_mobile: "66",
  	electron: "15.0"
  },
  	"proposal-class-static-block": {
  	chrome: "94",
  	opera: "80",
  	edge: "94",
  	firefox: "93",
  	safari: "16.4",
  	node: "16.11",
  	deno: "1.14",
  	ios: "16.4",
  	samsung: "17",
  	opera_mobile: "66",
  	electron: "15.0"
  },
  	"transform-private-property-in-object": {
  	chrome: "91",
  	opera: "77",
  	edge: "91",
  	firefox: "90",
  	safari: "15",
  	node: "16.9",
  	deno: "1.9",
  	ios: "15",
  	samsung: "16",
  	opera_mobile: "64",
  	electron: "13.0"
  },
  	"proposal-private-property-in-object": {
  	chrome: "91",
  	opera: "77",
  	edge: "91",
  	firefox: "90",
  	safari: "15",
  	node: "16.9",
  	deno: "1.9",
  	ios: "15",
  	samsung: "16",
  	opera_mobile: "64",
  	electron: "13.0"
  },
  	"transform-class-properties": {
  	chrome: "74",
  	opera: "62",
  	edge: "79",
  	firefox: "90",
  	safari: "14.1",
  	node: "12",
  	deno: "1",
  	ios: "14.5",
  	samsung: "11",
  	opera_mobile: "53",
  	electron: "6.0"
  },
  	"proposal-class-properties": {
  	chrome: "74",
  	opera: "62",
  	edge: "79",
  	firefox: "90",
  	safari: "14.1",
  	node: "12",
  	deno: "1",
  	ios: "14.5",
  	samsung: "11",
  	opera_mobile: "53",
  	electron: "6.0"
  },
  	"transform-private-methods": {
  	chrome: "84",
  	opera: "70",
  	edge: "84",
  	firefox: "90",
  	safari: "15",
  	node: "14.6",
  	deno: "1",
  	ios: "15",
  	samsung: "14",
  	opera_mobile: "60",
  	electron: "10.0"
  },
  	"proposal-private-methods": {
  	chrome: "84",
  	opera: "70",
  	edge: "84",
  	firefox: "90",
  	safari: "15",
  	node: "14.6",
  	deno: "1",
  	ios: "15",
  	samsung: "14",
  	opera_mobile: "60",
  	electron: "10.0"
  },
  	"transform-numeric-separator": {
  	chrome: "75",
  	opera: "62",
  	edge: "79",
  	firefox: "70",
  	safari: "13",
  	node: "12.5",
  	deno: "1",
  	ios: "13",
  	samsung: "11",
  	rhino: "1.7.14",
  	opera_mobile: "54",
  	electron: "6.0"
  },
  	"proposal-numeric-separator": {
  	chrome: "75",
  	opera: "62",
  	edge: "79",
  	firefox: "70",
  	safari: "13",
  	node: "12.5",
  	deno: "1",
  	ios: "13",
  	samsung: "11",
  	rhino: "1.7.14",
  	opera_mobile: "54",
  	electron: "6.0"
  },
  	"transform-logical-assignment-operators": {
  	chrome: "85",
  	opera: "71",
  	edge: "85",
  	firefox: "79",
  	safari: "14",
  	node: "15",
  	deno: "1.2",
  	ios: "14",
  	samsung: "14",
  	opera_mobile: "60",
  	electron: "10.0"
  },
  	"proposal-logical-assignment-operators": {
  	chrome: "85",
  	opera: "71",
  	edge: "85",
  	firefox: "79",
  	safari: "14",
  	node: "15",
  	deno: "1.2",
  	ios: "14",
  	samsung: "14",
  	opera_mobile: "60",
  	electron: "10.0"
  },
  	"transform-nullish-coalescing-operator": {
  	chrome: "80",
  	opera: "67",
  	edge: "80",
  	firefox: "72",
  	safari: "13.1",
  	node: "14",
  	deno: "1",
  	ios: "13.4",
  	samsung: "13",
  	opera_mobile: "57",
  	electron: "8.0"
  },
  	"proposal-nullish-coalescing-operator": {
  	chrome: "80",
  	opera: "67",
  	edge: "80",
  	firefox: "72",
  	safari: "13.1",
  	node: "14",
  	deno: "1",
  	ios: "13.4",
  	samsung: "13",
  	opera_mobile: "57",
  	electron: "8.0"
  },
  	"transform-optional-chaining": {
  	chrome: "91",
  	opera: "77",
  	edge: "91",
  	firefox: "74",
  	safari: "13.1",
  	node: "16.9",
  	deno: "1.9",
  	ios: "13.4",
  	samsung: "16",
  	opera_mobile: "64",
  	electron: "13.0"
  },
  	"proposal-optional-chaining": {
  	chrome: "91",
  	opera: "77",
  	edge: "91",
  	firefox: "74",
  	safari: "13.1",
  	node: "16.9",
  	deno: "1.9",
  	ios: "13.4",
  	samsung: "16",
  	opera_mobile: "64",
  	electron: "13.0"
  },
  	"transform-json-strings": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "62",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "9",
  	rhino: "1.7.14",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"proposal-json-strings": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "62",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "9",
  	rhino: "1.7.14",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"transform-optional-catch-binding": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "58",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "9",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"proposal-optional-catch-binding": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "58",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "9",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"transform-parameters": {
  	chrome: "49",
  	opera: "36",
  	edge: "18",
  	firefox: "53",
  	safari: "16.3",
  	node: "6",
  	deno: "1",
  	ios: "16.3",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"transform-async-generator-functions": {
  	chrome: "63",
  	opera: "50",
  	edge: "79",
  	firefox: "57",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"proposal-async-generator-functions": {
  	chrome: "63",
  	opera: "50",
  	edge: "79",
  	firefox: "57",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"transform-object-rest-spread": {
  	chrome: "60",
  	opera: "47",
  	edge: "79",
  	firefox: "55",
  	safari: "11.1",
  	node: "8.3",
  	deno: "1",
  	ios: "11.3",
  	samsung: "8",
  	opera_mobile: "44",
  	electron: "2.0"
  },
  	"proposal-object-rest-spread": {
  	chrome: "60",
  	opera: "47",
  	edge: "79",
  	firefox: "55",
  	safari: "11.1",
  	node: "8.3",
  	deno: "1",
  	ios: "11.3",
  	samsung: "8",
  	opera_mobile: "44",
  	electron: "2.0"
  },
  	"transform-dotall-regex": {
  	chrome: "62",
  	opera: "49",
  	edge: "79",
  	firefox: "78",
  	safari: "11.1",
  	node: "8.10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "8",
  	rhino: "1.7.15",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"transform-unicode-property-regex": {
  	chrome: "64",
  	opera: "51",
  	edge: "79",
  	firefox: "78",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "9",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"proposal-unicode-property-regex": {
  	chrome: "64",
  	opera: "51",
  	edge: "79",
  	firefox: "78",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "9",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"transform-named-capturing-groups-regex": {
  	chrome: "64",
  	opera: "51",
  	edge: "79",
  	firefox: "78",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "9",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"transform-async-to-generator": {
  	chrome: "55",
  	opera: "42",
  	edge: "15",
  	firefox: "52",
  	safari: "11",
  	node: "7.6",
  	deno: "1",
  	ios: "11",
  	samsung: "6",
  	opera_mobile: "42",
  	electron: "1.6"
  },
  	"transform-exponentiation-operator": {
  	chrome: "52",
  	opera: "39",
  	edge: "14",
  	firefox: "52",
  	safari: "10.1",
  	node: "7",
  	deno: "1",
  	ios: "10.3",
  	samsung: "6",
  	rhino: "1.7.14",
  	opera_mobile: "41",
  	electron: "1.3"
  },
  	"transform-template-literals": {
  	chrome: "41",
  	opera: "28",
  	edge: "13",
  	firefox: "34",
  	safari: "13",
  	node: "4",
  	deno: "1",
  	ios: "13",
  	samsung: "3.4",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"transform-literals": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "53",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.15",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"transform-function-name": {
  	chrome: "51",
  	opera: "38",
  	edge: "79",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"transform-arrow-functions": {
  	chrome: "47",
  	opera: "34",
  	edge: "13",
  	firefox: "43",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "34",
  	electron: "0.36"
  },
  	"transform-block-scoped-functions": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "46",
  	safari: "10",
  	node: "4",
  	deno: "1",
  	ie: "11",
  	ios: "10",
  	samsung: "3.4",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"transform-classes": {
  	chrome: "46",
  	opera: "33",
  	edge: "13",
  	firefox: "45",
  	safari: "10",
  	node: "5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "33",
  	electron: "0.36"
  },
  	"transform-object-super": {
  	chrome: "46",
  	opera: "33",
  	edge: "13",
  	firefox: "45",
  	safari: "10",
  	node: "5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "33",
  	electron: "0.36"
  },
  	"transform-shorthand-properties": {
  	chrome: "43",
  	opera: "30",
  	edge: "12",
  	firefox: "33",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.14",
  	opera_mobile: "30",
  	electron: "0.27"
  },
  	"transform-duplicate-keys": {
  	chrome: "42",
  	opera: "29",
  	edge: "12",
  	firefox: "34",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	opera_mobile: "29",
  	electron: "0.25"
  },
  	"transform-computed-properties": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "34",
  	safari: "7.1",
  	node: "4",
  	deno: "1",
  	ios: "8",
  	samsung: "4",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"transform-for-of": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"transform-sticky-regex": {
  	chrome: "49",
  	opera: "36",
  	edge: "13",
  	firefox: "3",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"transform-unicode-escapes": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "53",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.15",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"transform-unicode-regex": {
  	chrome: "50",
  	opera: "37",
  	edge: "13",
  	firefox: "46",
  	safari: "12",
  	node: "6",
  	deno: "1",
  	ios: "12",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"transform-spread": {
  	chrome: "46",
  	opera: "33",
  	edge: "13",
  	firefox: "45",
  	safari: "10",
  	node: "5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "33",
  	electron: "0.36"
  },
  	"transform-destructuring": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"transform-block-scoping": {
  	chrome: "50",
  	opera: "37",
  	edge: "14",
  	firefox: "53",
  	safari: "11",
  	node: "6",
  	deno: "1",
  	ios: "11",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"transform-typeof-symbol": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "36",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"transform-new-target": {
  	chrome: "46",
  	opera: "33",
  	edge: "14",
  	firefox: "41",
  	safari: "10",
  	node: "5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "33",
  	electron: "0.36"
  },
  	"transform-regenerator": {
  	chrome: "50",
  	opera: "37",
  	edge: "13",
  	firefox: "53",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"transform-member-expression-literals": {
  	chrome: "7",
  	opera: "12",
  	edge: "12",
  	firefox: "2",
  	safari: "5.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"transform-property-literals": {
  	chrome: "7",
  	opera: "12",
  	edge: "12",
  	firefox: "2",
  	safari: "5.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"transform-reserved-words": {
  	chrome: "13",
  	opera: "10.50",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.6",
  	deno: "1",
  	ie: "9",
  	android: "4.4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"transform-export-namespace-from": {
  	chrome: "72",
  	deno: "1.0",
  	edge: "79",
  	firefox: "80",
  	node: "13.2",
  	opera: "60",
  	opera_mobile: "51",
  	safari: "14.1",
  	ios: "14.5",
  	samsung: "11.0",
  	android: "72",
  	electron: "5.0"
  },
  	"proposal-export-namespace-from": {
  	chrome: "72",
  	deno: "1.0",
  	edge: "79",
  	firefox: "80",
  	node: "13.2",
  	opera: "60",
  	opera_mobile: "51",
  	safari: "14.1",
  	ios: "14.5",
  	samsung: "11.0",
  	android: "72",
  	electron: "5.0"
  }
  };

  var plugins$1 = require$$0$6;

  function targetsSupported(target, support) {
    var targetEnvironments = Object.keys(target);
    if (targetEnvironments.length === 0) {
      return false;
    }
    var unsupportedEnvironments = targetEnvironments.filter(function (environment) {
      var lowestImplementedVersion = getLowestImplementedVersion(support, environment);
      if (!lowestImplementedVersion) {
        return true;
      }
      var lowestTargetedVersion = target[environment];
      if (isUnreleasedVersion(lowestTargetedVersion, environment)) {
        return false;
      }
      if (isUnreleasedVersion(lowestImplementedVersion, environment)) {
        return true;
      }
      if (!semver$8.valid(lowestTargetedVersion.toString())) {
        throw new Error("Invalid version passed for target \"" + environment + "\": \"" + lowestTargetedVersion + "\". " + "Versions must be in semver format (major.minor.patch)");
      }
      return semver$8.gt(semverify(lowestImplementedVersion), lowestTargetedVersion.toString());
    });
    return unsupportedEnvironments.length === 0;
  }
  function isRequired(name, targets, _temp) {
    var _ref = _temp === void 0 ? {} : _temp,
      _ref$compatData = _ref.compatData,
      compatData = _ref$compatData === void 0 ? plugins$1 : _ref$compatData,
      includes = _ref.includes,
      excludes = _ref.excludes;
    if (excludes != null && excludes.has(name)) return false;
    if (includes != null && includes.has(name)) return true;
    return !targetsSupported(targets, compatData[name]);
  }
  function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
    var result = new Set();
    var options = {
      compatData: list,
      includes: includes,
      excludes: excludes
    };
    for (var item in list) {
      if (isRequired(item, targets, options)) {
        result.add(item);
      } else if (pluginSyntaxMap) {
        var shippedProposalsSyntax = pluginSyntaxMap.get(item);
        if (shippedProposalsSyntax) {
          result.add(shippedProposalsSyntax);
        }
      }
    }
    defaultIncludes == null || defaultIncludes.forEach(function (item) {
      return !excludes.has(item) && result.add(item);
    });
    defaultExcludes == null || defaultExcludes.forEach(function (item) {
      return !includes.has(item) && result["delete"](item);
    });
    return result;
  }

  var ESM_SUPPORT = nativeModules["es6.module"];
  var v$4 = new OptionValidator("@babel/helper-compilation-targets");
  function validateTargetNames(targets) {
    var validTargets = Object.keys(TargetNames);
    for (var _i = 0, _Object$keys = Object.keys(targets); _i < _Object$keys.length; _i++) {
      var target = _Object$keys[_i];
      if (!(target in TargetNames)) {
        throw new Error(v$4.formatMessage("'" + target + "' is not a valid target\n- Did you mean '" + findSuggestion(target, validTargets) + "'?"));
      }
    }
    return targets;
  }
  function isBrowsersQueryValid(browsers) {
    return typeof browsers === "string" || Array.isArray(browsers) && browsers.every(function (b) {
      return typeof b === "string";
    });
  }
  function validateBrowsers(browsers) {
    v$4.invariant(browsers === undefined || isBrowsersQueryValid(browsers), "'" + String(browsers) + "' is not a valid browserslist query");
    return browsers;
  }
  function getLowestVersions(browsers) {
    return browsers.reduce(function (all, browser) {
      var _ref = browser.split(" "),
        _ref2 = _slicedToArray(_ref, 2),
        browserName = _ref2[0],
        browserVersion = _ref2[1];
      var target = browserNameMap[browserName];
      if (!target) {
        return all;
      }
      try {
        var splitVersion = browserVersion.split("-")[0].toLowerCase();
        var isSplitUnreleased = isUnreleasedVersion(splitVersion, target);
        if (!all[target]) {
          all[target] = isSplitUnreleased ? splitVersion : semverify(splitVersion);
          return all;
        }
        var version = all[target];
        var isUnreleased = isUnreleasedVersion(version, target);
        if (isUnreleased && isSplitUnreleased) {
          all[target] = getLowestUnreleased(version, splitVersion, target);
        } else if (isUnreleased) {
          all[target] = semverify(splitVersion);
        } else if (!isUnreleased && !isSplitUnreleased) {
          var parsedBrowserVersion = semverify(splitVersion);
          all[target] = semverMin(version, parsedBrowserVersion);
        }
      } catch (_) {}
      return all;
    }, {});
  }
  function outputDecimalWarning(decimalTargets) {
    if (!decimalTargets.length) {
      return;
    }
    console.warn("Warning, the following targets are using a decimal version:\n");
    decimalTargets.forEach(function (_ref3) {
      var target = _ref3.target,
        value = _ref3.value;
      return console.warn("  " + target + ": " + value);
    });
    console.warn("\nWe recommend using a string for minor/patch versions to avoid numbers like 6.10\ngetting parsed as 6.1, which can lead to unexpected behavior.\n");
  }
  function semverifyTarget(target, value) {
    try {
      return semverify(value);
    } catch (_) {
      throw new Error(v$4.formatMessage("'" + value + "' is not a valid value for 'targets." + target + "'."));
    }
  }
  function nodeTargetParser(value) {
    var parsed = value === true || value === "current" ? browser$1$1.versions.node : semverifyTarget("node", value);
    return ["node", parsed];
  }
  function defaultTargetParser(target, value) {
    var version = isUnreleasedVersion(value, target) ? value.toLowerCase() : semverifyTarget(target, value);
    return [target, version];
  }
  function generateTargets(inputTargets) {
    var input = Object.assign({}, inputTargets);
    delete input.esmodules;
    delete input.browsers;
    return input;
  }
  function resolveTargets$1(queries, env) {
    var resolved = browserslist_1(queries, {
      mobileToDesktop: true,
      env: env
    });
    return getLowestVersions(resolved);
  }
  var targetsCache = new lruCache({
    max: 64
  });
  function resolveTargetsCached(queries, env) {
    var cacheKey = typeof queries === "string" ? queries : queries.join() + env;
    var cached = targetsCache.get(cacheKey);
    if (!cached) {
      cached = resolveTargets$1(queries, env);
      targetsCache.set(cacheKey, cached);
    }
    return Object.assign({}, cached);
  }
  function getTargets$1(inputTargets, options) {
    var _browsers, _browsers2;
    if (inputTargets === void 0) {
      inputTargets = {};
    }
    if (options === void 0) {
      options = {};
    }
    var _inputTargets = inputTargets,
      browsers = _inputTargets.browsers,
      esmodules = _inputTargets.esmodules;
    var _options = options,
      _options$configPath = _options.configPath,
      configPath = _options$configPath === void 0 ? "." : _options$configPath;
    validateBrowsers(browsers);
    var input = generateTargets(inputTargets);
    var targets = validateTargetNames(input);
    var shouldParseBrowsers = !!browsers;
    var hasTargets = shouldParseBrowsers || Object.keys(targets).length > 0;
    var shouldSearchForConfig = !options.ignoreBrowserslistConfig && !hasTargets;
    if (!browsers && shouldSearchForConfig) {
      browsers = browserslist_1.loadConfig({
        config: options.configFile,
        path: configPath,
        env: options.browserslistEnv
      });
      if (browsers == null) {
        {
          browsers = [];
        }
      }
    }
    if (esmodules && (esmodules !== "intersect" || !((_browsers = browsers) != null && _browsers.length))) {
      browsers = Object.keys(ESM_SUPPORT).map(function (browser) {
        return browser + " >= " + ESM_SUPPORT[browser];
      }).join(", ");
      esmodules = false;
    }
    if ((_browsers2 = browsers) != null && _browsers2.length) {
      var queryBrowsers = resolveTargetsCached(browsers, options.browserslistEnv);
      if (esmodules === "intersect") {
        for (var _i2 = 0, _arr = Object.keys(queryBrowsers); _i2 < _arr.length; _i2++) {
          var browser = _arr[_i2];
          if (browser !== "deno" && browser !== "ie") {
            var esmSupportVersion = ESM_SUPPORT[browser === "opera_mobile" ? "op_mob" : browser];
            if (esmSupportVersion) {
              var version = queryBrowsers[browser];
              queryBrowsers[browser] = getHighestUnreleased(version, semverify(esmSupportVersion), browser);
            } else {
              delete queryBrowsers[browser];
            }
          } else {
            delete queryBrowsers[browser];
          }
        }
      }
      targets = Object.assign(queryBrowsers, targets);
    }
    var result = {};
    var decimalWarnings = [];
    for (var _i3 = 0, _arr2 = Object.keys(targets).sort(); _i3 < _arr2.length; _i3++) {
      var target = _arr2[_i3];
      var value = targets[target];
      if (typeof value === "number" && value % 1 !== 0) {
        decimalWarnings.push({
          target: target,
          value: value
        });
      }
      var _ref4 = target === "node" ? nodeTargetParser(value) : defaultTargetParser(target, value),
        _ref5 = _slicedToArray(_ref4, 2),
        parsedTarget = _ref5[0],
        parsedValue = _ref5[1];
      if (parsedValue) {
        result[parsedTarget] = parsedValue;
      }
    }
    outputDecimalWarning(decimalWarnings);
    return result;
  }

  var src = /*#__PURE__*/Object.freeze({
    __proto__: null,
    TargetNames: TargetNames,
    default: getTargets$1,
    filterItems: filterItems,
    getInclusionReasons: getInclusionReasons,
    isBrowsersQueryValid: isBrowsersQueryValid,
    isRequired: isRequired,
    prettifyTargets: prettifyTargets,
    unreleasedLabels: unreleasedLabels
  });

  function resolveBrowserslistConfigFile(browserslistConfigFile, configFilePath) {
    return undefined;
  }
  function resolveTargets(options, root) {
    var optTargets = options.targets;
    var targets;
    if (typeof optTargets === "string" || Array.isArray(optTargets)) {
      targets = {
        browsers: optTargets
      };
    } else if (optTargets) {
      if ("esmodules" in optTargets) {
        targets = Object.assign({}, optTargets, {
          esmodules: "intersect"
        });
      } else {
        targets = optTargets;
      }
    }
    return getTargets$1(targets, {
      ignoreBrowserslistConfig: true,
      browserslistEnv: options.browserslistEnv
    });
  }

  var _marked$7 = _regeneratorRuntime().mark(handlerOf),
    _marked2$5 = _regeneratorRuntime().mark(createPresetDescriptors),
    _marked3$2 = _regeneratorRuntime().mark(createPluginDescriptors),
    _marked4$1 = _regeneratorRuntime().mark(createDescriptors);
  function isEqualDescriptor(a, b) {
    var _a$file, _b$file, _a$file2, _b$file2;
    return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && ((_a$file = a.file) == null ? void 0 : _a$file.request) === ((_b$file = b.file) == null ? void 0 : _b$file.request) && ((_a$file2 = a.file) == null ? void 0 : _a$file2.resolved) === ((_b$file2 = b.file) == null ? void 0 : _b$file2.resolved);
  }
  function handlerOf(value) {
    return _regeneratorRuntime().wrap(function handlerOf$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.abrupt("return", value);
        case 1:
        case "end":
          return _context.stop();
      }
    }, _marked$7);
  }
  function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
    if (typeof options.browserslistConfigFile === "string") {
      options.browserslistConfigFile = resolveBrowserslistConfigFile(options.browserslistConfigFile);
    }
    return options;
  }
  function createCachedDescriptors(dirname, options, alias) {
    var plugins = options.plugins,
      presets = options.presets,
      passPerPreset = options.passPerPreset;
    return {
      options: optionsWithResolvedBrowserslistConfigFile(options),
      plugins: plugins ? function () {
        return createCachedPluginDescriptors(plugins, dirname)(alias);
      } : function () {
        return handlerOf([]);
      },
      presets: presets ? function () {
        return createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset);
      } : function () {
        return handlerOf([]);
      }
    };
  }
  function createUncachedDescriptors(dirname, options, alias) {
    return {
      options: optionsWithResolvedBrowserslistConfigFile(options),
      plugins: once(function () {
        return createPluginDescriptors(options.plugins || [], dirname, alias);
      }),
      presets: once(function () {
        return createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset);
      })
    };
  }
  var PRESET_DESCRIPTOR_CACHE = new WeakMap();
  var createCachedPresetDescriptors = makeWeakCacheSync(function (items, cache) {
    var dirname = cache.using(function (dir) {
      return dir;
    });
    return makeStrongCacheSync(function (alias) {
      return makeStrongCache(_regeneratorRuntime().mark(function _callee(passPerPreset) {
        var descriptors;
        return _regeneratorRuntime().wrap(function _callee$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              return _context2.delegateYield(createPresetDescriptors(items, dirname, alias, passPerPreset), "t0", 1);
            case 1:
              descriptors = _context2.t0;
              return _context2.abrupt("return", descriptors.map(function (desc) {
                return loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc);
              }));
            case 3:
            case "end":
              return _context2.stop();
          }
        }, _callee);
      }));
    });
  });
  var PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
  var createCachedPluginDescriptors = makeWeakCacheSync(function (items, cache) {
    var dirname = cache.using(function (dir) {
      return dir;
    });
    return makeStrongCache(_regeneratorRuntime().mark(function _callee2(alias) {
      var descriptors;
      return _regeneratorRuntime().wrap(function _callee2$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            return _context3.delegateYield(createPluginDescriptors(items, dirname, alias), "t0", 1);
          case 1:
            descriptors = _context3.t0;
            return _context3.abrupt("return", descriptors.map(function (desc) {
              return loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc);
            }));
          case 3:
          case "end":
            return _context3.stop();
        }
      }, _callee2);
    }));
  });
  var DEFAULT_OPTIONS = {};
  function loadCachedDescriptor(cache, desc) {
    var value = desc.value,
      _desc$options = desc.options,
      options = _desc$options === void 0 ? DEFAULT_OPTIONS : _desc$options;
    if (options === false) return desc;
    var cacheByOptions = cache.get(value);
    if (!cacheByOptions) {
      cacheByOptions = new WeakMap();
      cache.set(value, cacheByOptions);
    }
    var possibilities = cacheByOptions.get(options);
    if (!possibilities) {
      possibilities = [];
      cacheByOptions.set(options, possibilities);
    }
    if (!possibilities.includes(desc)) {
      var matches = possibilities.filter(function (possibility) {
        return isEqualDescriptor(possibility, desc);
      });
      if (matches.length > 0) {
        return matches[0];
      }
      possibilities.push(desc);
    }
    return desc;
  }
  function createPresetDescriptors(items, dirname, alias, passPerPreset) {
    return _regeneratorRuntime().wrap(function createPresetDescriptors$(_context4) {
      while (1) switch (_context4.prev = _context4.next) {
        case 0:
          return _context4.delegateYield(createDescriptors("preset", items, dirname, alias, passPerPreset), "t0", 1);
        case 1:
          return _context4.abrupt("return", _context4.t0);
        case 2:
        case "end":
          return _context4.stop();
      }
    }, _marked2$5);
  }
  function createPluginDescriptors(items, dirname, alias) {
    return _regeneratorRuntime().wrap(function createPluginDescriptors$(_context5) {
      while (1) switch (_context5.prev = _context5.next) {
        case 0:
          return _context5.delegateYield(createDescriptors("plugin", items, dirname, alias), "t0", 1);
        case 1:
          return _context5.abrupt("return", _context5.t0);
        case 2:
        case "end":
          return _context5.stop();
      }
    }, _marked3$2);
  }
  function createDescriptors(type, items, dirname, alias, ownPass) {
    var descriptors;
    return _regeneratorRuntime().wrap(function createDescriptors$(_context6) {
      while (1) switch (_context6.prev = _context6.next) {
        case 0:
          return _context6.delegateYield(gensync.all(items.map(function (item, index) {
            return createDescriptor(item, dirname, {
              type: type,
              alias: alias + "$" + index,
              ownPass: !!ownPass
            });
          })), "t0", 1);
        case 1:
          descriptors = _context6.t0;
          assertNoDuplicates(descriptors);
          return _context6.abrupt("return", descriptors);
        case 4:
        case "end":
          return _context6.stop();
      }
    }, _marked4$1);
  }
  function createDescriptor(pair, dirname, _ref) {
    var type = _ref.type,
      alias = _ref.alias,
      ownPass = _ref.ownPass;
    return _regeneratorRuntime().mark(function _callee3() {
      var desc, name, options, value, _value, _value2, _value3, _value4, file, filepath, resolver, request, _yield$resolver;
      return _regeneratorRuntime().wrap(function _callee3$(_context7) {
        while (1) switch (_context7.prev = _context7.next) {
          case 0:
            desc = getItemDescriptor(pair);
            if (!desc) {
              _context7.next = 3;
              break;
            }
            return _context7.abrupt("return", desc);
          case 3:
            value = pair;
            if (Array.isArray(value)) {
              if (value.length === 3) {
                _value = value;
                _value2 = _slicedToArray(_value, 3);
                value = _value2[0];
                options = _value2[1];
                name = _value2[2];
              } else {
                _value3 = value;
                _value4 = _slicedToArray(_value3, 2);
                value = _value4[0];
                options = _value4[1];
              }
            }
            file = undefined;
            filepath = null;
            if (!(typeof value === "string")) {
              _context7.next = 17;
              break;
            }
            if (!(typeof type !== "string")) {
              _context7.next = 10;
              break;
            }
            throw new Error("To resolve a string-based item, the type of item must be given");
          case 10:
            resolver = type === "plugin" ? loadPlugin : loadPreset;
            request = value;
            return _context7.delegateYield(resolver(value, dirname), "t0", 13);
          case 13:
            _yield$resolver = _context7.t0;
            filepath = _yield$resolver.filepath;
            value = _yield$resolver.value;
            file = {
              request: request,
              resolved: filepath
            };
          case 17:
            if (value) {
              _context7.next = 19;
              break;
            }
            throw new Error("Unexpected falsy value: " + String(value));
          case 19:
            if (!(typeof value === "object" && value.__esModule)) {
              _context7.next = 25;
              break;
            }
            if (!value["default"]) {
              _context7.next = 24;
              break;
            }
            value = value["default"];
            _context7.next = 25;
            break;
          case 24:
            throw new Error("Must export a default export when using ES6 modules.");
          case 25:
            if (!(typeof value !== "object" && typeof value !== "function")) {
              _context7.next = 27;
              break;
            }
            throw new Error("Unsupported format: " + typeof value + ". Expected an object or a function.");
          case 27:
            if (!(filepath !== null && typeof value === "object" && value)) {
              _context7.next = 29;
              break;
            }
            throw new Error("Plugin/Preset files are not allowed to export objects, only functions. In " + filepath);
          case 29:
            return _context7.abrupt("return", {
              name: name,
              alias: filepath || alias,
              value: value,
              options: options,
              dirname: dirname,
              ownPass: ownPass,
              file: file
            });
          case 30:
          case "end":
            return _context7.stop();
        }
      }, _callee3);
    })();
  }
  function assertNoDuplicates(items) {
    var map = new Map();
    var _loop = function _loop() {
      var item = _step.value;
      if (typeof item.value !== "function") return 1;
      var nameMap = map.get(item.value);
      if (!nameMap) {
        nameMap = new Set();
        map.set(item.value, nameMap);
      }
      if (nameMap.has(item.name)) {
        var conflicts = items.filter(function (i) {
          return i.value === item.value;
        });
        throw new Error(["Duplicate plugin/preset detected.", "If you'd like to use two separate instances of a plugin,", "they need separate names, e.g.", "", "  plugins: [", "    ['some-plugin', {}],", "    ['some-plugin', {}, 'some unique name'],", "  ]", "", "Duplicates detected are:", "" + JSON.stringify(conflicts, null, 2)].join("\n"));
      }
      nameMap.add(item.name);
    };
    for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
      if (_loop()) continue;
    }
  }

  function createItemFromDescriptor(desc) {
    return new ConfigItem(desc);
  }
  function createConfigItem$1(value, _temp) {
    var _ref = _temp === void 0 ? {} : _temp,
      _ref$dirname = _ref.dirname,
      dirname = _ref$dirname === void 0 ? "." : _ref$dirname,
      type = _ref.type;
    return _regeneratorRuntime().mark(function _callee() {
      var descriptor;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(createDescriptor(value, path$1.resolve(dirname), {
              type: type,
              alias: "programmatic item"
            }), "t0", 1);
          case 1:
            descriptor = _context.t0;
            return _context.abrupt("return", createItemFromDescriptor(descriptor));
          case 3:
          case "end":
            return _context.stop();
        }
      }, _callee);
    })();
  }
  var CONFIG_ITEM_BRAND = Symbol["for"]("@babel/core@7 - ConfigItem");
  function getItemDescriptor(item) {
    if (item != null && item[CONFIG_ITEM_BRAND]) {
      return item._descriptor;
    }
    return undefined;
  }
  var ConfigItem = _createClass(function ConfigItem(descriptor) {
    this._descriptor = void 0;
    this[CONFIG_ITEM_BRAND] = true;
    this.value = void 0;
    this.options = void 0;
    this.dirname = void 0;
    this.name = void 0;
    this.file = void 0;
    this._descriptor = descriptor;
    Object.defineProperty(this, "_descriptor", {
      enumerable: false
    });
    Object.defineProperty(this, CONFIG_ITEM_BRAND, {
      enumerable: false
    });
    this.value = this._descriptor.value;
    this.options = this._descriptor.options;
    this.dirname = this._descriptor.dirname;
    this.name = this._descriptor.name;
    this.file = this._descriptor.file ? {
      request: this._descriptor.file.request,
      resolved: this._descriptor.file.resolved
    } : undefined;
    Object.freeze(this);
  });
  Object.freeze(ConfigItem.prototype);

  var removed = {
    auxiliaryComment: {
      message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"
    },
    blacklist: {
      message: "Put the specific transforms you want in the `plugins` option"
    },
    breakConfig: {
      message: "This is not a necessary option in Babel 6"
    },
    experimental: {
      message: "Put the specific transforms you want in the `plugins` option"
    },
    externalHelpers: {
      message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/"
    },
    extra: {
      message: ""
    },
    jsxPragma: {
      message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/"
    },
    loose: {
      message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option."
    },
    metadataUsedHelpers: {
      message: "Not required anymore as this is enabled by default"
    },
    modules: {
      message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules"
    },
    nonStandard: {
      message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"
    },
    optional: {
      message: "Put the specific transforms you want in the `plugins` option"
    },
    sourceMapName: {
      message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves."
    },
    stage: {
      message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"
    },
    whitelist: {
      message: "Put the specific transforms you want in the `plugins` option"
    },
    resolveModuleSource: {
      version: 6,
      message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options"
    },
    metadata: {
      version: 6,
      message: "Generated plugin metadata is always included in the output result"
    },
    sourceMapTarget: {
      version: 6,
      message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves."
    }
  };

  function msg(loc) {
    switch (loc.type) {
      case "root":
        return "";
      case "env":
        return msg(loc.parent) + ".env[\"" + loc.name + "\"]";
      case "overrides":
        return msg(loc.parent) + ".overrides[" + loc.index + "]";
      case "option":
        return msg(loc.parent) + "." + loc.name;
      case "access":
        return msg(loc.parent) + "[" + JSON.stringify(loc.name) + "]";
      default:
        throw new Error("Assertion failure: Unknown type " + loc.type);
    }
  }
  function access(loc, name) {
    return {
      type: "access",
      name: name,
      parent: loc
    };
  }
  function assertRootMode(loc, value) {
    if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") {
      throw new Error(msg(loc) + " must be a \"root\", \"upward\", \"upward-optional\" or undefined");
    }
    return value;
  }
  function assertSourceMaps(loc, value) {
    if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") {
      throw new Error(msg(loc) + " must be a boolean, \"inline\", \"both\", or undefined");
    }
    return value;
  }
  function assertCompact(loc, value) {
    if (value !== undefined && typeof value !== "boolean" && value !== "auto") {
      throw new Error(msg(loc) + " must be a boolean, \"auto\", or undefined");
    }
    return value;
  }
  function assertSourceType(loc, value) {
    if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") {
      throw new Error(msg(loc) + " must be \"module\", \"script\", \"unambiguous\", or undefined");
    }
    return value;
  }
  function assertCallerMetadata(loc, value) {
    var obj = assertObject(loc, value);
    if (obj) {
      if (typeof obj.name !== "string") {
        throw new Error(msg(loc) + " set but does not contain \"name\" property string");
      }
      for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
        var prop = _Object$keys[_i];
        var propLoc = access(loc, prop);
        var _value = obj[prop];
        if (_value != null && typeof _value !== "boolean" && typeof _value !== "string" && typeof _value !== "number") {
          throw new Error(msg(propLoc) + " must be null, undefined, a boolean, a string, or a number.");
        }
      }
    }
    return value;
  }
  function assertInputSourceMap(loc, value) {
    if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) {
      throw new Error(msg(loc) + " must be a boolean, object, or undefined");
    }
    return value;
  }
  function assertString(loc, value) {
    if (value !== undefined && typeof value !== "string") {
      throw new Error(msg(loc) + " must be a string, or undefined");
    }
    return value;
  }
  function assertFunction(loc, value) {
    if (value !== undefined && typeof value !== "function") {
      throw new Error(msg(loc) + " must be a function, or undefined");
    }
    return value;
  }
  function assertBoolean(loc, value) {
    if (value !== undefined && typeof value !== "boolean") {
      throw new Error(msg(loc) + " must be a boolean, or undefined");
    }
    return value;
  }
  function assertObject(loc, value) {
    if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) {
      throw new Error(msg(loc) + " must be an object, or undefined");
    }
    return value;
  }
  function assertArray(loc, value) {
    if (value != null && !Array.isArray(value)) {
      throw new Error(msg(loc) + " must be an array, or undefined");
    }
    return value;
  }
  function assertIgnoreList(loc, value) {
    var arr = assertArray(loc, value);
    arr == null || arr.forEach(function (item, i) {
      return assertIgnoreItem(access(loc, i), item);
    });
    return arr;
  }
  function assertIgnoreItem(loc, value) {
    if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) {
      throw new Error(msg(loc) + " must be an array of string/Function/RegExp values, or undefined");
    }
    return value;
  }
  function assertConfigApplicableTest(loc, value) {
    if (value === undefined) {
      return value;
    }
    if (Array.isArray(value)) {
      value.forEach(function (item, i) {
        if (!checkValidTest(item)) {
          throw new Error(msg(access(loc, i)) + " must be a string/Function/RegExp.");
        }
      });
    } else if (!checkValidTest(value)) {
      throw new Error(msg(loc) + " must be a string/Function/RegExp, or an array of those");
    }
    return value;
  }
  function checkValidTest(value) {
    return typeof value === "string" || typeof value === "function" || value instanceof RegExp;
  }
  function assertConfigFileSearch(loc, value) {
    if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") {
      throw new Error(msg(loc) + " must be a undefined, a boolean, a string, " + ("got " + JSON.stringify(value)));
    }
    return value;
  }
  function assertBabelrcSearch(loc, value) {
    if (value === undefined || typeof value === "boolean") {
      return value;
    }
    if (Array.isArray(value)) {
      value.forEach(function (item, i) {
        if (!checkValidTest(item)) {
          throw new Error(msg(access(loc, i)) + " must be a string/Function/RegExp.");
        }
      });
    } else if (!checkValidTest(value)) {
      throw new Error(msg(loc) + " must be a undefined, a boolean, a string/Function/RegExp " + ("or an array of those, got " + JSON.stringify(value)));
    }
    return value;
  }
  function assertPluginList(loc, value) {
    var arr = assertArray(loc, value);
    if (arr) {
      arr.forEach(function (item, i) {
        return assertPluginItem(access(loc, i), item);
      });
    }
    return arr;
  }
  function assertPluginItem(loc, value) {
    if (Array.isArray(value)) {
      if (value.length === 0) {
        throw new Error(msg(loc) + " must include an object");
      }
      if (value.length > 3) {
        throw new Error(msg(loc) + " may only be a two-tuple or three-tuple");
      }
      assertPluginTarget(access(loc, 0), value[0]);
      if (value.length > 1) {
        var opts = value[1];
        if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) {
          throw new Error(msg(access(loc, 1)) + " must be an object, false, or undefined");
        }
      }
      if (value.length === 3) {
        var _name = value[2];
        if (_name !== undefined && typeof _name !== "string") {
          throw new Error(msg(access(loc, 2)) + " must be a string, or undefined");
        }
      }
    } else {
      assertPluginTarget(loc, value);
    }
    return value;
  }
  function assertPluginTarget(loc, value) {
    if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") {
      throw new Error(msg(loc) + " must be a string, object, function");
    }
    return value;
  }
  function assertTargets(loc, value) {
    if (isBrowsersQueryValid(value)) return value;
    if (typeof value !== "object" || !value || Array.isArray(value)) {
      throw new Error(msg(loc) + " must be a string, an array of strings or an object");
    }
    var browsersLoc = access(loc, "browsers");
    var esmodulesLoc = access(loc, "esmodules");
    assertBrowsersList(browsersLoc, value.browsers);
    assertBoolean(esmodulesLoc, value.esmodules);
    for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {
      var key = _Object$keys2[_i2];
      var val = value[key];
      var subLoc = access(loc, key);
      if (key === "esmodules") assertBoolean(subLoc, val);else if (key === "browsers") assertBrowsersList(subLoc, val);else if (!hasOwnProperty.call(TargetNames, key)) {
        var validTargets = Object.keys(TargetNames).join(", ");
        throw new Error(msg(subLoc) + " is not a valid target. Supported targets are " + validTargets);
      } else assertBrowserVersion(subLoc, val);
    }
    return value;
  }
  function assertBrowsersList(loc, value) {
    if (value !== undefined && !isBrowsersQueryValid(value)) {
      throw new Error(msg(loc) + " must be undefined, a string or an array of strings");
    }
  }
  function assertBrowserVersion(loc, value) {
    if (typeof value === "number" && Math.round(value) === value) return;
    if (typeof value === "string") return;
    throw new Error(msg(loc) + " must be a string or an integer number");
  }
  function assertAssumptions(loc, value) {
    if (value === undefined) return;
    if (typeof value !== "object" || value === null) {
      throw new Error(msg(loc) + " must be an object or undefined.");
    }
    var root = loc;
    do {
      root = root.parent;
    } while (root.type !== "root");
    var inPreset = root.source === "preset";
    for (var _i3 = 0, _Object$keys3 = Object.keys(value); _i3 < _Object$keys3.length; _i3++) {
      var _name2 = _Object$keys3[_i3];
      var subLoc = access(loc, _name2);
      if (!assumptionsNames.has(_name2)) {
        throw new Error(msg(subLoc) + " is not a supported assumption.");
      }
      if (typeof value[_name2] !== "boolean") {
        throw new Error(msg(subLoc) + " must be a boolean.");
      }
      if (inPreset && value[_name2] === false) {
        throw new Error(msg(subLoc) + " cannot be set to 'false' inside presets.");
      }
    }
    return value;
  }

  var _Object$getOwnPropert;
  var ErrorToString = Function.call.bind(Error.prototype.toString);
  var SUPPORTED = !!Error.captureStackTrace && ((_Object$getOwnPropert = Object.getOwnPropertyDescriptor(Error, "stackTraceLimit")) == null ? void 0 : _Object$getOwnPropert.writable) === true;
  var START_HIDING = "startHiding - secret - don't use this - v1";
  var STOP_HIDING = "stopHiding - secret - don't use this - v1";
  var expectedErrors = new WeakSet();
  var virtualFrames = new WeakMap();
  function CallSite(filename) {
    return Object.create({
      isNative: function isNative() {
        return false;
      },
      isConstructor: function isConstructor() {
        return false;
      },
      isToplevel: function isToplevel() {
        return true;
      },
      getFileName: function getFileName() {
        return filename;
      },
      getLineNumber: function getLineNumber() {
        return undefined;
      },
      getColumnNumber: function getColumnNumber() {
        return undefined;
      },
      getFunctionName: function getFunctionName() {
        return undefined;
      },
      getMethodName: function getMethodName() {
        return undefined;
      },
      getTypeName: function getTypeName() {
        return undefined;
      },
      toString: function toString() {
        return filename;
      }
    });
  }
  function injectVirtualStackFrame(error, filename) {
    if (!SUPPORTED) return;
    var frames = virtualFrames.get(error);
    if (!frames) virtualFrames.set(error, frames = []);
    frames.push(CallSite(filename));
    return error;
  }
  function expectedError(error) {
    if (!SUPPORTED) return;
    expectedErrors.add(error);
    return error;
  }
  function beginHiddenCallStack(fn) {
    if (!SUPPORTED) return fn;
    return Object.defineProperty(function () {
      setupPrepareStackTrace();
      return fn.apply(void 0, arguments);
    }, "name", {
      value: STOP_HIDING
    });
  }
  function endHiddenCallStack(fn) {
    if (!SUPPORTED) return fn;
    return Object.defineProperty(function () {
      return fn.apply(void 0, arguments);
    }, "name", {
      value: START_HIDING
    });
  }
  function setupPrepareStackTrace() {
    setupPrepareStackTrace = function setupPrepareStackTrace() {};
    var _Error$prepareStackTr = Error.prepareStackTrace,
      prepareStackTrace = _Error$prepareStackTr === void 0 ? defaultPrepareStackTrace : _Error$prepareStackTr;
    var MIN_STACK_TRACE_LIMIT = 50;
    Error.stackTraceLimit && (Error.stackTraceLimit = Math.max(Error.stackTraceLimit, MIN_STACK_TRACE_LIMIT));
    Error.prepareStackTrace = function stackTraceRewriter(err, trace) {
      var newTrace = [];
      var isExpected = expectedErrors.has(err);
      var status = isExpected ? "hiding" : "unknown";
      for (var i = 0; i < trace.length; i++) {
        var name = trace[i].getFunctionName();
        if (name === START_HIDING) {
          status = "hiding";
        } else if (name === STOP_HIDING) {
          if (status === "hiding") {
            status = "showing";
            if (virtualFrames.has(err)) {
              var _newTrace;
              (_newTrace = newTrace).unshift.apply(_newTrace, _toConsumableArray(virtualFrames.get(err)));
            }
          } else if (status === "unknown") {
            newTrace = trace;
            break;
          }
        } else if (status !== "hiding") {
          newTrace.push(trace[i]);
        }
      }
      return prepareStackTrace(err, newTrace);
    };
  }
  function defaultPrepareStackTrace(err, trace) {
    if (trace.length === 0) return ErrorToString(err);
    return ErrorToString(err) + "\n    at " + trace.join("\n    at ");
  }

  var ConfigError = function (_Error) {
    function ConfigError(message, filename) {
      var _this;
      _this = _Error.call(this, message) || this;
      expectedError(_this);
      if (filename) injectVirtualStackFrame(_this, filename);
      return _this;
    }
    _inherits(ConfigError, _Error);
    return _createClass(ConfigError);
  }(_wrapNativeSuper(Error));

  var ROOT_VALIDATORS = {
    cwd: assertString,
    root: assertString,
    rootMode: assertRootMode,
    configFile: assertConfigFileSearch,
    caller: assertCallerMetadata,
    filename: assertString,
    filenameRelative: assertString,
    code: assertBoolean,
    ast: assertBoolean,
    cloneInputAst: assertBoolean,
    envName: assertString
  };
  var BABELRC_VALIDATORS = {
    babelrc: assertBoolean,
    babelrcRoots: assertBabelrcSearch
  };
  var NONPRESET_VALIDATORS = {
    "extends": assertString,
    ignore: assertIgnoreList,
    only: assertIgnoreList,
    targets: assertTargets,
    browserslistConfigFile: assertConfigFileSearch,
    browserslistEnv: assertString
  };
  var COMMON_VALIDATORS = {
    inputSourceMap: assertInputSourceMap,
    presets: assertPluginList,
    plugins: assertPluginList,
    passPerPreset: assertBoolean,
    assumptions: assertAssumptions,
    env: assertEnvSet,
    overrides: assertOverridesList,
    test: assertConfigApplicableTest,
    include: assertConfigApplicableTest,
    exclude: assertConfigApplicableTest,
    retainLines: assertBoolean,
    comments: assertBoolean,
    shouldPrintComment: assertFunction,
    compact: assertCompact,
    minified: assertBoolean,
    auxiliaryCommentBefore: assertString,
    auxiliaryCommentAfter: assertString,
    sourceType: assertSourceType,
    wrapPluginVisitorMethod: assertFunction,
    highlightCode: assertBoolean,
    sourceMaps: assertSourceMaps,
    sourceMap: assertSourceMaps,
    sourceFileName: assertString,
    sourceRoot: assertString,
    parserOpts: assertObject,
    generatorOpts: assertObject
  };
  {
    Object.assign(COMMON_VALIDATORS, {
      getModuleId: assertFunction,
      moduleRoot: assertString,
      moduleIds: assertBoolean,
      moduleId: assertString
    });
  }
  var knownAssumptions = ["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "noUninitializedPrivateFieldAccess", "objectRestNoSymbols", "privateFieldsAsSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"];
  var assumptionsNames = new Set(knownAssumptions);
  function getSource(loc) {
    return loc.type === "root" ? loc.source : getSource(loc.parent);
  }
  function validate(type, opts, filename) {
    try {
      return validateNested({
        type: "root",
        source: type
      }, opts);
    } catch (error) {
      var configError = new ConfigError(error.message, filename);
      if (error.code) configError.code = error.code;
      throw configError;
    }
  }
  function validateNested(loc, opts) {
    var type = getSource(loc);
    assertNoDuplicateSourcemap(opts);
    Object.keys(opts).forEach(function (key) {
      var optLoc = {
        type: "option",
        name: key,
        parent: loc
      };
      if (type === "preset" && NONPRESET_VALIDATORS[key]) {
        throw new Error(msg(optLoc) + " is not allowed in preset options");
      }
      if (type !== "arguments" && ROOT_VALIDATORS[key]) {
        throw new Error(msg(optLoc) + " is only allowed in root programmatic options");
      }
      if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) {
        if (type === "babelrcfile" || type === "extendsfile") {
          throw new Error(msg(optLoc) + " is not allowed in .babelrc or \"extends\"ed files, only in root programmatic options, " + "or babel.config.js/config file options");
        }
        throw new Error(msg(optLoc) + " is only allowed in root programmatic options, or babel.config.js/config file options");
      }
      var validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError;
      validator(optLoc, opts[key]);
    });
    return opts;
  }
  function throwUnknownError(loc) {
    var key = loc.name;
    if (removed[key]) {
      var _removed$key = removed[key],
        message = _removed$key.message,
        _removed$key$version = _removed$key.version,
        version = _removed$key$version === void 0 ? 5 : _removed$key$version;
      throw new Error("Using removed Babel " + version + " option: " + msg(loc) + " - " + message);
    } else {
      var unknownOptErr = new Error("Unknown option: " + msg(loc) + ". Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.");
      unknownOptErr.code = "BABEL_UNKNOWN_OPTION";
      throw unknownOptErr;
    }
  }
  function assertNoDuplicateSourcemap(opts) {
    if (hasOwnProperty.call(opts, "sourceMap") && hasOwnProperty.call(opts, "sourceMaps")) {
      throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both");
    }
  }
  function assertEnvSet(loc, value) {
    if (loc.parent.type === "env") {
      throw new Error(msg(loc) + " is not allowed inside of another .env block");
    }
    var parent = loc.parent;
    var obj = assertObject(loc, value);
    if (obj) {
      for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
        var envName = _Object$keys[_i];
        var env = assertObject(access(loc, envName), obj[envName]);
        if (!env) continue;
        var envLoc = {
          type: "env",
          name: envName,
          parent: parent
        };
        validateNested(envLoc, env);
      }
    }
    return obj;
  }
  function assertOverridesList(loc, value) {
    if (loc.parent.type === "env") {
      throw new Error(msg(loc) + " is not allowed inside an .env block");
    }
    if (loc.parent.type === "overrides") {
      throw new Error(msg(loc) + " is not allowed inside an .overrides block");
    }
    var parent = loc.parent;
    var arr = assertArray(loc, value);
    if (arr) {
      for (var _iterator = _createForOfIteratorHelperLoose(arr.entries()), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          index = _step$value[0],
          item = _step$value[1];
        var objLoc = access(loc, index);
        var env = assertObject(objLoc, item);
        if (!env) throw new Error(msg(objLoc) + " must be an object");
        var overridesLoc = {
          type: "overrides",
          index: index,
          parent: parent
        };
        validateNested(overridesLoc, env);
      }
    }
    return arr;
  }
  function checkNoUnwrappedItemOptionPairs(items, index, type, e) {
    if (index === 0) return;
    var lastItem = items[index - 1];
    var thisItem = items[index];
    if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
      e.message += "\n- Maybe you meant to use\n" + ("\"" + type + "s\": [\n  [\"" + lastItem.file.request + "\", " + JSON.stringify(thisItem.value, undefined, 2) + "]\n]\n") + ("To be a valid " + type + ", its name and options should be wrapped in a pair of brackets");
    }
  }

  var sep = "\\" + path$1.sep;
  var endSep = "(?:" + sep + "|$)";
  var substitution = "[^" + sep + "]+";
  var starPat = "(?:" + substitution + sep + ")";
  var starPatLast = "(?:" + substitution + endSep + ")";
  var starStarPat = starPat + "*?";
  var starStarPatLast = starPat + "*?" + starPatLast + "?";
  function escapeRegExp(string) {
    return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
  }
  function pathToPattern(pattern, dirname) {
    var parts = path$1.resolve(dirname, pattern).split(path$1.sep);
    return new RegExp(["^"].concat(_toConsumableArray(parts.map(function (part, i) {
      var last = i === parts.length - 1;
      if (part === "**") return last ? starStarPatLast : starStarPat;
      if (part === "*") return last ? starPatLast : starPat;
      if (part.indexOf("*.") === 0) {
        return substitution + escapeRegExp(part.slice(1)) + (last ? endSep : sep);
      }
      return escapeRegExp(part) + (last ? endSep : sep);
    }))).join(""));
  }

  var ChainFormatter = {
    Programmatic: 0,
    Config: 1
  };
  var Formatter = {
    title: function title(type, callerName, filepath) {
      var title = "";
      if (type === ChainFormatter.Programmatic) {
        title = "programmatic options";
        if (callerName) {
          title += " from " + callerName;
        }
      } else {
        title = "config " + filepath;
      }
      return title;
    },
    loc: function loc(index, envName) {
      var loc = "";
      if (index != null) {
        loc += ".overrides[" + index + "]";
      }
      if (envName != null) {
        loc += ".env[\"" + envName + "\"]";
      }
      return loc;
    },
    optionsAndDescriptors: _regeneratorRuntime().mark(function optionsAndDescriptors(opt) {
      var content, pluginDescriptors, presetDescriptors;
      return _regeneratorRuntime().wrap(function optionsAndDescriptors$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            content = Object.assign({}, opt.options);
            delete content.overrides;
            delete content.env;
            _context.t0 = _toConsumableArray;
            return _context.delegateYield(opt.plugins(), "t1", 5);
          case 5:
            _context.t2 = _context.t1;
            pluginDescriptors = (0, _context.t0)(_context.t2);
            if (pluginDescriptors.length) {
              content.plugins = pluginDescriptors.map(function (d) {
                return descriptorToConfig(d);
              });
            }
            _context.t3 = _toConsumableArray;
            return _context.delegateYield(opt.presets(), "t4", 10);
          case 10:
            _context.t5 = _context.t4;
            presetDescriptors = (0, _context.t3)(_context.t5);
            if (presetDescriptors.length) {
              content.presets = _toConsumableArray(presetDescriptors).map(function (d) {
                return descriptorToConfig(d);
              });
            }
            return _context.abrupt("return", JSON.stringify(content, undefined, 2));
          case 14:
          case "end":
            return _context.stop();
        }
      }, optionsAndDescriptors);
    })
  };
  function descriptorToConfig(d) {
    var _d$file;
    var name = (_d$file = d.file) == null ? void 0 : _d$file.request;
    if (name == null) {
      if (typeof d.value === "object") {
        name = d.value;
      } else if (typeof d.value === "function") {
        name = "[Function: " + d.value.toString().slice(0, 50) + " ... ]";
      }
    }
    if (name == null) {
      name = "[Unknown]";
    }
    if (d.options === undefined) {
      return name;
    } else if (d.name == null) {
      return [name, d.options];
    } else {
      return [name, d.options, d.name];
    }
  }
  var ConfigPrinter = function () {
    function ConfigPrinter() {
      this._stack = [];
    }
    var _proto = ConfigPrinter.prototype;
    _proto.configure = function configure(enabled, type, _ref) {
      var _this = this;
      var callerName = _ref.callerName,
        filepath = _ref.filepath;
      if (!enabled) return function () {};
      return function (content, index, envName) {
        _this._stack.push({
          type: type,
          callerName: callerName,
          filepath: filepath,
          content: content,
          index: index,
          envName: envName
        });
      };
    };
    ConfigPrinter.format = _regeneratorRuntime().mark(function format(config) {
      var title, loc, content;
      return _regeneratorRuntime().wrap(function format$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            title = Formatter.title(config.type, config.callerName, config.filepath);
            loc = Formatter.loc(config.index, config.envName);
            if (loc) title += " " + loc;
            return _context2.delegateYield(Formatter.optionsAndDescriptors(config.content), "t0", 4);
          case 4:
            content = _context2.t0;
            return _context2.abrupt("return", title + "\n" + content);
          case 6:
          case "end":
            return _context2.stop();
        }
      }, format);
    });
    _proto.output = _regeneratorRuntime().mark(function output() {
      var configs;
      return _regeneratorRuntime().wrap(function output$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            if (!(this._stack.length === 0)) {
              _context3.next = 2;
              break;
            }
            return _context3.abrupt("return", "");
          case 2:
            return _context3.delegateYield(gensync.all(this._stack.map(function (s) {
              return ConfigPrinter.format(s);
            })), "t0", 3);
          case 3:
            configs = _context3.t0;
            return _context3.abrupt("return", configs.join("\n\n"));
          case 5:
          case "end":
            return _context3.stop();
        }
      }, output, this);
    });
    return _createClass(ConfigPrinter);
  }();

  var _marked$6 = _regeneratorRuntime().mark(buildPresetChain),
    _marked2$4 = _regeneratorRuntime().mark(buildRootChain),
    _marked3$1 = _regeneratorRuntime().mark(loadFileChain),
    _marked4 = _regeneratorRuntime().mark(mergeExtendsChain);
  var debug$1 = browserExports("babel:config:config-chain");
  function buildPresetChain(arg, context) {
    var chain;
    return _regeneratorRuntime().wrap(function buildPresetChain$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(buildPresetChainWalker(arg, context), "t0", 1);
        case 1:
          chain = _context.t0;
          if (chain) {
            _context.next = 4;
            break;
          }
          return _context.abrupt("return", null);
        case 4:
          return _context.abrupt("return", {
            plugins: dedupDescriptors(chain.plugins),
            presets: dedupDescriptors(chain.presets),
            options: chain.options.map(function (o) {
              return normalizeOptions$7(o);
            }),
            files: new Set()
          });
        case 5:
        case "end":
          return _context.stop();
      }
    }, _marked$6);
  }
  var buildPresetChainWalker = makeChainWalker({
    root: function root(preset) {
      return loadPresetDescriptors(preset);
    },
    env: function env(preset, envName) {
      return loadPresetEnvDescriptors(preset)(envName);
    },
    overrides: function overrides(preset, index) {
      return loadPresetOverridesDescriptors(preset)(index);
    },
    overridesEnv: function overridesEnv(preset, index, envName) {
      return loadPresetOverridesEnvDescriptors(preset)(index)(envName);
    },
    createLogger: function createLogger() {
      return function () {};
    }
  });
  var loadPresetDescriptors = makeWeakCacheSync(function (preset) {
    return buildRootDescriptors(preset, preset.alias, createUncachedDescriptors);
  });
  var loadPresetEnvDescriptors = makeWeakCacheSync(function (preset) {
    return makeStrongCacheSync(function (envName) {
      return buildEnvDescriptors(preset, preset.alias, createUncachedDescriptors, envName);
    });
  });
  var loadPresetOverridesDescriptors = makeWeakCacheSync(function (preset) {
    return makeStrongCacheSync(function (index) {
      return buildOverrideDescriptors(preset, preset.alias, createUncachedDescriptors, index);
    });
  });
  var loadPresetOverridesEnvDescriptors = makeWeakCacheSync(function (preset) {
    return makeStrongCacheSync(function (index) {
      return makeStrongCacheSync(function (envName) {
        return buildOverrideEnvDescriptors(preset, preset.alias, createUncachedDescriptors, index, envName);
      });
    });
  });
  function buildRootChain(opts, context) {
    var configReport, babelRcReport, programmaticLogger, programmaticChain, programmaticReport, configFile, babelrc, babelrcRoots, babelrcRootsDirectory, configFileChain, configFileLogger, validatedFile, result, ignoreFile, babelrcFile, isIgnored, fileChain, pkgData, _yield$findRelativeCo, _validatedFile, babelrcLogger, _result, chain;
    return _regeneratorRuntime().wrap(function buildRootChain$(_context2) {
      while (1) switch (_context2.prev = _context2.next) {
        case 0:
          programmaticLogger = new ConfigPrinter();
          return _context2.delegateYield(loadProgrammaticChain({
            options: opts,
            dirname: context.cwd
          }, context, undefined, programmaticLogger), "t0", 2);
        case 2:
          programmaticChain = _context2.t0;
          if (programmaticChain) {
            _context2.next = 5;
            break;
          }
          return _context2.abrupt("return", null);
        case 5:
          return _context2.delegateYield(programmaticLogger.output(), "t1", 6);
        case 6:
          programmaticReport = _context2.t1;
          if (!(typeof opts.configFile === "string")) {
            _context2.next = 12;
            break;
          }
          return _context2.delegateYield(loadConfig$1(opts.configFile, context.cwd, context.envName, context.caller), "t2", 9);
        case 9:
          configFile = _context2.t2;
          _context2.next = 15;
          break;
        case 12:
          if (!(opts.configFile !== false)) {
            _context2.next = 15;
            break;
          }
          return _context2.delegateYield(findRootConfig(context.root, context.envName, context.caller), "t3", 14);
        case 14:
          configFile = _context2.t3;
        case 15:
          babelrc = opts.babelrc, babelrcRoots = opts.babelrcRoots;
          babelrcRootsDirectory = context.cwd;
          configFileChain = emptyChain();
          configFileLogger = new ConfigPrinter();
          if (!configFile) {
            _context2.next = 30;
            break;
          }
          validatedFile = validateConfigFile(configFile);
          return _context2.delegateYield(loadFileChain(validatedFile, context, undefined, configFileLogger), "t4", 22);
        case 22:
          result = _context2.t4;
          if (result) {
            _context2.next = 25;
            break;
          }
          return _context2.abrupt("return", null);
        case 25:
          return _context2.delegateYield(configFileLogger.output(), "t5", 26);
        case 26:
          configReport = _context2.t5;
          if (babelrc === undefined) {
            babelrc = validatedFile.options.babelrc;
          }
          if (babelrcRoots === undefined) {
            babelrcRootsDirectory = validatedFile.dirname;
            babelrcRoots = validatedFile.options.babelrcRoots;
          }
          mergeChain(configFileChain, result);
        case 30:
          isIgnored = false;
          fileChain = emptyChain();
          if (!((babelrc === true || babelrc === undefined) && typeof context.filename === "string")) {
            _context2.next = 55;
            break;
          }
          return _context2.delegateYield(findPackageData(context.filename), "t6", 34);
        case 34:
          pkgData = _context2.t6;
          if (!(pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory))) {
            _context2.next = 55;
            break;
          }
          return _context2.delegateYield(findRelativeConfig(pkgData, context.envName, context.caller), "t7", 37);
        case 37:
          _yield$findRelativeCo = _context2.t7;
          ignoreFile = _yield$findRelativeCo.ignore;
          babelrcFile = _yield$findRelativeCo.config;
          if (ignoreFile) {
            fileChain.files.add(ignoreFile.filepath);
          }
          if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
            isIgnored = true;
          }
          if (!(babelrcFile && !isIgnored)) {
            _context2.next = 54;
            break;
          }
          _validatedFile = validateBabelrcFile(babelrcFile);
          babelrcLogger = new ConfigPrinter();
          return _context2.delegateYield(loadFileChain(_validatedFile, context, undefined, babelrcLogger), "t8", 46);
        case 46:
          _result = _context2.t8;
          if (_result) {
            _context2.next = 51;
            break;
          }
          isIgnored = true;
          _context2.next = 54;
          break;
        case 51:
          return _context2.delegateYield(babelrcLogger.output(), "t9", 52);
        case 52:
          babelRcReport = _context2.t9;
          mergeChain(fileChain, _result);
        case 54:
          if (babelrcFile && isIgnored) {
            fileChain.files.add(babelrcFile.filepath);
          }
        case 55:
          if (context.showConfig) {
            console.log("Babel configs on \"" + context.filename + "\" (ascending priority):\n" + [configReport, babelRcReport, programmaticReport].filter(function (x) {
              return !!x;
            }).join("\n\n") + "\n-----End Babel configs-----");
          }
          chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
          return _context2.abrupt("return", {
            plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
            presets: isIgnored ? [] : dedupDescriptors(chain.presets),
            options: isIgnored ? [] : chain.options.map(function (o) {
              return normalizeOptions$7(o);
            }),
            fileHandling: isIgnored ? "ignored" : "transpile",
            ignore: ignoreFile || undefined,
            babelrc: babelrcFile || undefined,
            config: configFile || undefined,
            files: chain.files
          });
        case 58:
        case "end":
          return _context2.stop();
      }
    }, _marked2$4);
  }
  function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
    if (typeof babelrcRoots === "boolean") return babelrcRoots;
    var absoluteRoot = context.root;
    if (babelrcRoots === undefined) {
      return pkgData.directories.includes(absoluteRoot);
    }
    var babelrcPatterns = babelrcRoots;
    if (!Array.isArray(babelrcPatterns)) {
      babelrcPatterns = [babelrcPatterns];
    }
    babelrcPatterns = babelrcPatterns.map(function (pat) {
      return typeof pat === "string" ? path$1.resolve(babelrcRootsDirectory, pat) : pat;
    });
    if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
      return pkgData.directories.includes(absoluteRoot);
    }
    return babelrcPatterns.some(function (pat) {
      if (typeof pat === "string") {
        pat = pathToPattern(pat, babelrcRootsDirectory);
      }
      return pkgData.directories.some(function (directory) {
        return matchPattern(pat, babelrcRootsDirectory, directory, context);
      });
    });
  }
  var validateConfigFile = makeWeakCacheSync(function (file) {
    return {
      filepath: file.filepath,
      dirname: file.dirname,
      options: validate("configfile", file.options, file.filepath)
    };
  });
  var validateBabelrcFile = makeWeakCacheSync(function (file) {
    return {
      filepath: file.filepath,
      dirname: file.dirname,
      options: validate("babelrcfile", file.options, file.filepath)
    };
  });
  var validateExtendFile = makeWeakCacheSync(function (file) {
    return {
      filepath: file.filepath,
      dirname: file.dirname,
      options: validate("extendsfile", file.options, file.filepath)
    };
  });
  var loadProgrammaticChain = makeChainWalker({
    root: function root(input) {
      return buildRootDescriptors(input, "base", createCachedDescriptors);
    },
    env: function env(input, envName) {
      return buildEnvDescriptors(input, "base", createCachedDescriptors, envName);
    },
    overrides: function overrides(input, index) {
      return buildOverrideDescriptors(input, "base", createCachedDescriptors, index);
    },
    overridesEnv: function overridesEnv(input, index, envName) {
      return buildOverrideEnvDescriptors(input, "base", createCachedDescriptors, index, envName);
    },
    createLogger: function createLogger(input, context, baseLogger) {
      return buildProgrammaticLogger(input, context, baseLogger);
    }
  });
  var loadFileChainWalker = makeChainWalker({
    root: function root(file) {
      return loadFileDescriptors(file);
    },
    env: function env(file, envName) {
      return loadFileEnvDescriptors(file)(envName);
    },
    overrides: function overrides(file, index) {
      return loadFileOverridesDescriptors(file)(index);
    },
    overridesEnv: function overridesEnv(file, index, envName) {
      return loadFileOverridesEnvDescriptors(file)(index)(envName);
    },
    createLogger: function createLogger(file, context, baseLogger) {
      return buildFileLogger(file.filepath, context, baseLogger);
    }
  });
  function loadFileChain(input, context, files, baseLogger) {
    var chain;
    return _regeneratorRuntime().wrap(function loadFileChain$(_context3) {
      while (1) switch (_context3.prev = _context3.next) {
        case 0:
          return _context3.delegateYield(loadFileChainWalker(input, context, files, baseLogger), "t0", 1);
        case 1:
          chain = _context3.t0;
          chain == null || chain.files.add(input.filepath);
          return _context3.abrupt("return", chain);
        case 4:
        case "end":
          return _context3.stop();
      }
    }, _marked3$1);
  }
  var loadFileDescriptors = makeWeakCacheSync(function (file) {
    return buildRootDescriptors(file, file.filepath, createUncachedDescriptors);
  });
  var loadFileEnvDescriptors = makeWeakCacheSync(function (file) {
    return makeStrongCacheSync(function (envName) {
      return buildEnvDescriptors(file, file.filepath, createUncachedDescriptors, envName);
    });
  });
  var loadFileOverridesDescriptors = makeWeakCacheSync(function (file) {
    return makeStrongCacheSync(function (index) {
      return buildOverrideDescriptors(file, file.filepath, createUncachedDescriptors, index);
    });
  });
  var loadFileOverridesEnvDescriptors = makeWeakCacheSync(function (file) {
    return makeStrongCacheSync(function (index) {
      return makeStrongCacheSync(function (envName) {
        return buildOverrideEnvDescriptors(file, file.filepath, createUncachedDescriptors, index, envName);
      });
    });
  });
  function buildFileLogger(filepath, context, baseLogger) {
    if (!baseLogger) {
      return function () {};
    }
    return baseLogger.configure(context.showConfig, ChainFormatter.Config, {
      filepath: filepath
    });
  }
  function buildRootDescriptors(_ref, alias, descriptors) {
    var dirname = _ref.dirname,
      options = _ref.options;
    return descriptors(dirname, options, alias);
  }
  function buildProgrammaticLogger(_, context, baseLogger) {
    var _context$caller;
    if (!baseLogger) {
      return function () {};
    }
    return baseLogger.configure(context.showConfig, ChainFormatter.Programmatic, {
      callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
    });
  }
  function buildEnvDescriptors(_ref2, alias, descriptors, envName) {
    var _options$env;
    var dirname = _ref2.dirname,
      options = _ref2.options;
    var opts = (_options$env = options.env) == null ? void 0 : _options$env[envName];
    return opts ? descriptors(dirname, opts, alias + ".env[\"" + envName + "\"]") : null;
  }
  function buildOverrideDescriptors(_ref3, alias, descriptors, index) {
    var _options$overrides;
    var dirname = _ref3.dirname,
      options = _ref3.options;
    var opts = (_options$overrides = options.overrides) == null ? void 0 : _options$overrides[index];
    if (!opts) throw new Error("Assertion failure - missing override");
    return descriptors(dirname, opts, alias + ".overrides[" + index + "]");
  }
  function buildOverrideEnvDescriptors(_ref4, alias, descriptors, index, envName) {
    var _options$overrides2, _override$env;
    var dirname = _ref4.dirname,
      options = _ref4.options;
    var override = (_options$overrides2 = options.overrides) == null ? void 0 : _options$overrides2[index];
    if (!override) throw new Error("Assertion failure - missing override");
    var opts = (_override$env = override.env) == null ? void 0 : _override$env[envName];
    return opts ? descriptors(dirname, opts, alias + ".overrides[" + index + "].env[\"" + envName + "\"]") : null;
  }
  function makeChainWalker(_ref5) {
    var root = _ref5.root,
      env = _ref5.env,
      overrides = _ref5.overrides,
      overridesEnv = _ref5.overridesEnv,
      createLogger = _ref5.createLogger;
    return function chainWalker(input, context, files, baseLogger) {
      if (files === void 0) {
        files = new Set();
      }
      return _regeneratorRuntime().mark(function _callee() {
        var dirname, flattenedConfigs, rootOpts, envOpts, chain, logger, _i, _flattenedConfigs, _flattenedConfigs$_i, config, index, envName;
        return _regeneratorRuntime().wrap(function _callee$(_context4) {
          while (1) switch (_context4.prev = _context4.next) {
            case 0:
              dirname = input.dirname;
              flattenedConfigs = [];
              rootOpts = root(input);
              if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
                flattenedConfigs.push({
                  config: rootOpts,
                  envName: undefined,
                  index: undefined
                });
                envOpts = env(input, context.envName);
                if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
                  flattenedConfigs.push({
                    config: envOpts,
                    envName: context.envName,
                    index: undefined
                  });
                }
                (rootOpts.options.overrides || []).forEach(function (_, index) {
                  var overrideOps = overrides(input, index);
                  if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
                    flattenedConfigs.push({
                      config: overrideOps,
                      index: index,
                      envName: undefined
                    });
                    var overrideEnvOpts = overridesEnv(input, index, context.envName);
                    if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
                      flattenedConfigs.push({
                        config: overrideEnvOpts,
                        index: index,
                        envName: context.envName
                      });
                    }
                  }
                });
              }
              if (!flattenedConfigs.some(function (_ref6) {
                var _ref6$config$options = _ref6.config.options,
                  ignore = _ref6$config$options.ignore,
                  only = _ref6$config$options.only;
                return shouldIgnore(context, ignore, only, dirname);
              })) {
                _context4.next = 6;
                break;
              }
              return _context4.abrupt("return", null);
            case 6:
              chain = emptyChain();
              logger = createLogger(input, context, baseLogger);
              _i = 0, _flattenedConfigs = flattenedConfigs;
            case 9:
              if (!(_i < _flattenedConfigs.length)) {
                _context4.next = 19;
                break;
              }
              _flattenedConfigs$_i = _flattenedConfigs[_i], config = _flattenedConfigs$_i.config, index = _flattenedConfigs$_i.index, envName = _flattenedConfigs$_i.envName;
              return _context4.delegateYield(mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger), "t0", 12);
            case 12:
              if (_context4.t0) {
                _context4.next = 14;
                break;
              }
              return _context4.abrupt("return", null);
            case 14:
              logger(config, index, envName);
              return _context4.delegateYield(mergeChainOpts(chain, config), "t1", 16);
            case 16:
              _i++;
              _context4.next = 9;
              break;
            case 19:
              return _context4.abrupt("return", chain);
            case 20:
            case "end":
              return _context4.stop();
          }
        }, _callee);
      })();
    };
  }
  function mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
    var file, fileChain;
    return _regeneratorRuntime().wrap(function mergeExtendsChain$(_context5) {
      while (1) switch (_context5.prev = _context5.next) {
        case 0:
          if (!(opts["extends"] === undefined)) {
            _context5.next = 2;
            break;
          }
          return _context5.abrupt("return", true);
        case 2:
          return _context5.delegateYield(loadConfig$1(opts["extends"], dirname, context.envName, context.caller), "t0", 3);
        case 3:
          file = _context5.t0;
          if (!files.has(file)) {
            _context5.next = 6;
            break;
          }
          throw new Error("Configuration cycle detected loading " + file.filepath + ".\n" + "File already loaded following the config chain:\n" + Array.from(files, function (file) {
            return " - " + file.filepath;
          }).join("\n"));
        case 6:
          files.add(file);
          return _context5.delegateYield(loadFileChain(validateExtendFile(file), context, files, baseLogger), "t1", 8);
        case 8:
          fileChain = _context5.t1;
          files["delete"](file);
          if (fileChain) {
            _context5.next = 12;
            break;
          }
          return _context5.abrupt("return", false);
        case 12:
          mergeChain(chain, fileChain);
          return _context5.abrupt("return", true);
        case 14:
        case "end":
          return _context5.stop();
      }
    }, _marked4);
  }
  function mergeChain(target, source) {
    var _target$options, _target$plugins, _target$presets;
    (_target$options = target.options).push.apply(_target$options, _toConsumableArray(source.options));
    (_target$plugins = target.plugins).push.apply(_target$plugins, _toConsumableArray(source.plugins));
    (_target$presets = target.presets).push.apply(_target$presets, _toConsumableArray(source.presets));
    for (var _iterator = _createForOfIteratorHelperLoose(source.files), _step; !(_step = _iterator()).done;) {
      var file = _step.value;
      target.files.add(file);
    }
    return target;
  }
  function mergeChainOpts(target, _ref7) {
    var options = _ref7.options,
      plugins = _ref7.plugins,
      presets = _ref7.presets;
    return _regeneratorRuntime().mark(function _callee2(_target$plugins2, _target$presets2) {
      return _regeneratorRuntime().wrap(function _callee2$(_context6) {
        while (1) switch (_context6.prev = _context6.next) {
          case 0:
            target.options.push(options);
            _context6.t0 = (_target$plugins2 = target.plugins).push;
            _context6.t1 = _target$plugins2;
            _context6.t2 = _toConsumableArray;
            return _context6.delegateYield(plugins(), "t3", 5);
          case 5:
            _context6.t4 = _context6.t3;
            _context6.t5 = (0, _context6.t2)(_context6.t4);
            _context6.t0.apply.call(_context6.t0, _context6.t1, _context6.t5);
            _context6.t6 = (_target$presets2 = target.presets).push;
            _context6.t7 = _target$presets2;
            _context6.t8 = _toConsumableArray;
            return _context6.delegateYield(presets(), "t9", 12);
          case 12:
            _context6.t10 = _context6.t9;
            _context6.t11 = (0, _context6.t8)(_context6.t10);
            _context6.t6.apply.call(_context6.t6, _context6.t7, _context6.t11);
            return _context6.abrupt("return", target);
          case 16:
          case "end":
            return _context6.stop();
        }
      }, _callee2);
    })();
  }
  function emptyChain() {
    return {
      options: [],
      presets: [],
      plugins: [],
      files: new Set()
    };
  }
  function normalizeOptions$7(opts) {
    var options = Object.assign({}, opts);
    delete options["extends"];
    delete options.env;
    delete options.overrides;
    delete options.plugins;
    delete options.presets;
    delete options.passPerPreset;
    delete options.ignore;
    delete options.only;
    delete options.test;
    delete options.include;
    delete options.exclude;
    if (hasOwnProperty.call(options, "sourceMap")) {
      options.sourceMaps = options.sourceMap;
      delete options.sourceMap;
    }
    return options;
  }
  function dedupDescriptors(items) {
    var map = new Map();
    var descriptors = [];
    for (var _iterator2 = _createForOfIteratorHelperLoose(items), _step2; !(_step2 = _iterator2()).done;) {
      var item = _step2.value;
      if (typeof item.value === "function") {
        var fnKey = item.value;
        var nameMap = map.get(fnKey);
        if (!nameMap) {
          nameMap = new Map();
          map.set(fnKey, nameMap);
        }
        var desc = nameMap.get(item.name);
        if (!desc) {
          desc = {
            value: item
          };
          descriptors.push(desc);
          if (!item.ownPass) nameMap.set(item.name, desc);
        } else {
          desc.value = item;
        }
      } else {
        descriptors.push({
          value: item
        });
      }
    }
    return descriptors.reduce(function (acc, desc) {
      acc.push(desc.value);
      return acc;
    }, []);
  }
  function configIsApplicable(_ref8, dirname, context, configName) {
    var options = _ref8.options;
    return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
  }
  function configFieldIsApplicable(context, test, dirname, configName) {
    var patterns = Array.isArray(test) ? test : [test];
    return matchesPatterns(context, patterns, dirname, configName);
  }
  function ignoreListReplacer(_key, value) {
    if (value instanceof RegExp) {
      return String(value);
    }
    return value;
  }
  function shouldIgnore(context, ignore, only, dirname) {
    if (ignore && matchesPatterns(context, ignore, dirname)) {
      var _context$filename;
      var message = "No config is applied to \"" + ((_context$filename = context.filename) != null ? _context$filename : "(unknown)") + "\" because it matches one of `ignore: " + JSON.stringify(ignore, ignoreListReplacer) + "` from \"" + dirname + "\"";
      debug$1(message);
      if (context.showConfig) {
        console.log(message);
      }
      return true;
    }
    if (only && !matchesPatterns(context, only, dirname)) {
      var _context$filename2;
      var _message = "No config is applied to \"" + ((_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)") + "\" because it fails to match one of `only: " + JSON.stringify(only, ignoreListReplacer) + "` from \"" + dirname + "\"";
      debug$1(_message);
      if (context.showConfig) {
        console.log(_message);
      }
      return true;
    }
    return false;
  }
  function matchesPatterns(context, patterns, dirname, configName) {
    return patterns.some(function (pattern) {
      return matchPattern(pattern, dirname, context.filename, context, configName);
    });
  }
  function matchPattern(pattern, dirname, pathToTest, context, configName) {
    if (typeof pattern === "function") {
      return !!endHiddenCallStack(pattern)(pathToTest, {
        dirname: dirname,
        envName: context.envName,
        caller: context.caller
      });
    }
    if (typeof pathToTest !== "string") {
      throw new ConfigError("Configuration contains string/RegExp pattern, but no filename was passed to Babel", configName);
    }
    if (typeof pattern === "string") {
      pattern = pathToPattern(pattern, dirname);
    }
    return pattern.test(pathToTest);
  }

  var VALIDATORS = {
    name: assertString,
    manipulateOptions: assertFunction,
    pre: assertFunction,
    post: assertFunction,
    inherits: assertFunction,
    visitor: assertVisitorMap,
    parserOverride: assertFunction,
    generatorOverride: assertFunction
  };
  function assertVisitorMap(loc, value) {
    var obj = assertObject(loc, value);
    if (obj) {
      Object.keys(obj).forEach(function (prop) {
        if (prop !== "_exploded" && prop !== "_verified") {
          assertVisitorHandler(prop, obj[prop]);
        }
      });
      if (obj.enter || obj.exit) {
        throw new Error(msg(loc) + " cannot contain catch-all \"enter\" or \"exit\" handlers. Please target individual nodes.");
      }
    }
    return obj;
  }
  function assertVisitorHandler(key, value) {
    if (value && typeof value === "object") {
      Object.keys(value).forEach(function (handler) {
        if (handler !== "enter" && handler !== "exit") {
          throw new Error(".visitor[\"" + key + "\"] may only have .enter and/or .exit handlers.");
        }
      });
    } else if (typeof value !== "function") {
      throw new Error(".visitor[\"" + key + "\"] must be a function");
    }
  }
  function validatePluginObject(obj) {
    var rootPath = {
      type: "root",
      source: "plugin"
    };
    Object.keys(obj).forEach(function (key) {
      var validator = VALIDATORS[key];
      if (validator) {
        var optLoc = {
          type: "option",
          name: key,
          parent: rootPath
        };
        validator(optLoc, obj[key]);
      } else {
        var invalidPluginPropertyError = new Error("." + key + " is not a valid Plugin property");
        invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY";
        throw invalidPluginPropertyError;
      }
    });
    return obj;
  }

  function makeConfigAPI(cache) {
    var env = function env(value) {
      return cache.using(function (data) {
        if (typeof value === "undefined") return data.envName;
        if (typeof value === "function") {
          return assertSimpleType(value(data.envName));
        }
        return (Array.isArray(value) ? value : [value]).some(function (entry) {
          if (typeof entry !== "string") {
            throw new Error("Unexpected non-string value");
          }
          return entry === data.envName;
        });
      });
    };
    var caller = function caller(cb) {
      return cache.using(function (data) {
        return assertSimpleType(cb(data.caller));
      });
    };
    return {
      version: version$1,
      cache: cache.simple(),
      env: env,
      async: function async() {
        return false;
      },
      caller: caller,
      assertVersion: assertVersion
    };
  }
  function makePresetAPI(cache, externalDependencies) {
    var targets = function targets() {
      return JSON.parse(cache.using(function (data) {
        return JSON.stringify(data.targets);
      }));
    };
    var addExternalDependency = function addExternalDependency(ref) {
      externalDependencies.push(ref);
    };
    return Object.assign({}, makeConfigAPI(cache), {
      targets: targets,
      addExternalDependency: addExternalDependency
    });
  }
  function makePluginAPI(cache, externalDependencies) {
    var assumption = function assumption(name) {
      return cache.using(function (data) {
        return data.assumptions[name];
      });
    };
    return Object.assign({}, makePresetAPI(cache, externalDependencies), {
      assumption: assumption
    });
  }
  function assertVersion(range) {
    if (typeof range === "number") {
      if (!Number.isInteger(range)) {
        throw new Error("Expected string or integer value.");
      }
      range = "^" + range + ".0.0-0";
    }
    if (typeof range !== "string") {
      throw new Error("Expected string or integer value.");
    }
    if (range === "*" || semver$9.satisfies(version$1, range)) return;
    var limit = Error.stackTraceLimit;
    if (typeof limit === "number" && limit < 25) {
      Error.stackTraceLimit = 25;
    }
    var err = new Error("Requires Babel \"" + range + "\", but was loaded with \"" + version$1 + "\". " + "If you are sure you have a compatible version of @babel/core, " + "it is likely that something in your build process is loading the " + "wrong version. Inspect the stack trace of this error to look for " + "the first entry that doesn't mention \"@babel/core\" or \"babel-core\" " + "to see what is calling Babel.");
    if (typeof limit === "number") {
      Error.stackTraceLimit = limit;
    }
    throw Object.assign(err, {
      code: "BABEL_VERSION_UNSUPPORTED",
      version: version$1,
      range: range
    });
  }

  var _excluded$2 = ["showIgnoredFiles"];
  var _marked$5 = _regeneratorRuntime().mark(loadPrivatePartialConfig),
    _marked2$3 = _regeneratorRuntime().mark(loadPartialConfig$1);
  function resolveRootMode(rootDir, rootMode) {
    switch (rootMode) {
      case "root":
        return rootDir;
      case "upward-optional":
        {
          var upwardRootDir = findConfigUpwards();
          return upwardRootDir === null ? rootDir : upwardRootDir;
        }
      case "upward":
        {
          var _upwardRootDir = findConfigUpwards();
          if (_upwardRootDir !== null) return _upwardRootDir;
          throw Object.assign(new Error("Babel was run with rootMode:\"upward\" but a root could not " + ("be found when searching upward from \"" + rootDir + "\".\n") + "One of the following config files must be in the directory tree: " + ("\"" + ROOT_CONFIG_FILENAMES.join(", ") + "\".")), {
            code: "BABEL_ROOT_NOT_FOUND",
            dirname: rootDir
          });
        }
      default:
        throw new Error("Assertion failure - unknown rootMode value.");
    }
  }
  function loadPrivatePartialConfig(inputOpts) {
    var args, _args$envName, envName, _args$cwd, cwd, _args$root, rootDir, _args$rootMode, rootMode, caller, _args$cloneInputAst, cloneInputAst, absoluteCwd, absoluteRootDir, filename, showConfigPath, context, configChain, merged, options;
    return _regeneratorRuntime().wrap(function loadPrivatePartialConfig$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          if (!(inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts)))) {
            _context.next = 2;
            break;
          }
          throw new Error("Babel options must be an object, null, or undefined");
        case 2:
          args = inputOpts ? validate("arguments", inputOpts) : {};
          _args$envName = args.envName, envName = _args$envName === void 0 ? getEnv() : _args$envName, _args$cwd = args.cwd, cwd = _args$cwd === void 0 ? "." : _args$cwd, _args$root = args.root, rootDir = _args$root === void 0 ? "." : _args$root, _args$rootMode = args.rootMode, rootMode = _args$rootMode === void 0 ? "root" : _args$rootMode, caller = args.caller, _args$cloneInputAst = args.cloneInputAst, cloneInputAst = _args$cloneInputAst === void 0 ? true : _args$cloneInputAst;
          absoluteCwd = path$1.resolve(cwd);
          absoluteRootDir = resolveRootMode(path$1.resolve(absoluteCwd, rootDir), rootMode);
          filename = typeof args.filename === "string" ? path$1.resolve(cwd, args.filename) : undefined;
          return _context.delegateYield(resolveShowConfigPath(), "t0", 8);
        case 8:
          showConfigPath = _context.t0;
          context = {
            filename: filename,
            cwd: absoluteCwd,
            root: absoluteRootDir,
            envName: envName,
            caller: caller,
            showConfig: showConfigPath === filename
          };
          return _context.delegateYield(buildRootChain(args, context), "t1", 11);
        case 11:
          configChain = _context.t1;
          if (configChain) {
            _context.next = 14;
            break;
          }
          return _context.abrupt("return", null);
        case 14:
          merged = {
            assumptions: {}
          };
          configChain.options.forEach(function (opts) {
            mergeOptions(merged, opts);
          });
          options = Object.assign({}, merged, {
            targets: resolveTargets(merged),
            cloneInputAst: cloneInputAst,
            babelrc: false,
            configFile: false,
            browserslistConfigFile: false,
            passPerPreset: false,
            envName: context.envName,
            cwd: context.cwd,
            root: context.root,
            rootMode: "root",
            filename: typeof context.filename === "string" ? context.filename : undefined,
            plugins: configChain.plugins.map(function (descriptor) {
              return createItemFromDescriptor(descriptor);
            }),
            presets: configChain.presets.map(function (descriptor) {
              return createItemFromDescriptor(descriptor);
            })
          });
          return _context.abrupt("return", {
            options: options,
            context: context,
            fileHandling: configChain.fileHandling,
            ignore: configChain.ignore,
            babelrc: configChain.babelrc,
            config: configChain.config,
            files: configChain.files
          });
        case 18:
        case "end":
          return _context.stop();
      }
    }, _marked$5);
  }
  function loadPartialConfig$1(opts) {
    var showIgnoredFiles, _opts, result, options, babelrc, ignore, config, fileHandling, files;
    return _regeneratorRuntime().wrap(function loadPartialConfig$(_context2) {
      while (1) switch (_context2.prev = _context2.next) {
        case 0:
          showIgnoredFiles = false;
          if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
            _opts = opts;
            showIgnoredFiles = _opts.showIgnoredFiles;
            opts = _objectWithoutPropertiesLoose(_opts, _excluded$2);
          }
          return _context2.delegateYield(loadPrivatePartialConfig(opts), "t0", 3);
        case 3:
          result = _context2.t0;
          if (result) {
            _context2.next = 6;
            break;
          }
          return _context2.abrupt("return", null);
        case 6:
          options = result.options, babelrc = result.babelrc, ignore = result.ignore, config = result.config, fileHandling = result.fileHandling, files = result.files;
          if (!(fileHandling === "ignored" && !showIgnoredFiles)) {
            _context2.next = 9;
            break;
          }
          return _context2.abrupt("return", null);
        case 9:
          (options.plugins || []).forEach(function (item) {
            if (item.value instanceof Plugin) {
              throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()");
            }
          });
          return _context2.abrupt("return", new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files));
        case 11:
        case "end":
          return _context2.stop();
      }
    }, _marked2$3);
  }
  var PartialConfig = function () {
    function PartialConfig(options, babelrc, ignore, config, fileHandling, files) {
      this.options = void 0;
      this.babelrc = void 0;
      this.babelignore = void 0;
      this.config = void 0;
      this.fileHandling = void 0;
      this.files = void 0;
      this.options = options;
      this.babelignore = ignore;
      this.babelrc = babelrc;
      this.config = config;
      this.fileHandling = fileHandling;
      this.files = files;
      Object.freeze(this);
    }
    var _proto = PartialConfig.prototype;
    _proto.hasFilesystemConfig = function hasFilesystemConfig() {
      return this.babelrc !== undefined || this.config !== undefined;
    };
    return _createClass(PartialConfig);
  }();
  Object.freeze(PartialConfig.prototype);

  var _marked$4 = _regeneratorRuntime().mark(loadPluginDescriptor),
    _marked2$2 = _regeneratorRuntime().mark(loadPresetDescriptor);
  var loadConfig = gensync(_regeneratorRuntime().mark(function loadFullConfig(inputOpts) {
    var _opts$assumptions;
    var result, options, context, fileHandling, optionDefaults, plugins, presets, presetContext, toDescriptor, presetsDescriptors, initialPluginsDescriptors, pluginDescriptorsByPass, passes, externalDependencies, ignored, opts, pluginContext;
    return _regeneratorRuntime().wrap(function loadFullConfig$(_context3) {
      while (1) switch (_context3.prev = _context3.next) {
        case 0:
          return _context3.delegateYield(loadPrivatePartialConfig(inputOpts), "t0", 1);
        case 1:
          result = _context3.t0;
          if (result) {
            _context3.next = 4;
            break;
          }
          return _context3.abrupt("return", null);
        case 4:
          options = result.options, context = result.context, fileHandling = result.fileHandling;
          if (!(fileHandling === "ignored")) {
            _context3.next = 7;
            break;
          }
          return _context3.abrupt("return", null);
        case 7:
          optionDefaults = {};
          plugins = options.plugins, presets = options.presets;
          if (!(!plugins || !presets)) {
            _context3.next = 11;
            break;
          }
          throw new Error("Assertion failure - plugins and presets exist");
        case 11:
          presetContext = Object.assign({}, context, {
            targets: options.targets
          });
          toDescriptor = function toDescriptor(item) {
            var desc = getItemDescriptor(item);
            if (!desc) {
              throw new Error("Assertion failure - must be config item");
            }
            return desc;
          };
          presetsDescriptors = presets.map(toDescriptor);
          initialPluginsDescriptors = plugins.map(toDescriptor);
          pluginDescriptorsByPass = [[]];
          passes = [];
          externalDependencies = [];
          return _context3.delegateYield(enhanceError(context, _regeneratorRuntime().mark(function recursePresetDescriptors(rawPresets, pluginDescriptorsPass) {
            var presets, i, descriptor, preset, _iterator, _step, _step$value, _preset, pass, _ignored;
            return _regeneratorRuntime().wrap(function recursePresetDescriptors$(_context) {
              while (1) switch (_context.prev = _context.next) {
                case 0:
                  presets = [];
                  i = 0;
                case 2:
                  if (!(i < rawPresets.length)) {
                    _context.next = 19;
                    break;
                  }
                  descriptor = rawPresets[i];
                  if (!(descriptor.options !== false)) {
                    _context.next = 16;
                    break;
                  }
                  _context.prev = 5;
                  return _context.delegateYield(loadPresetDescriptor(descriptor, presetContext), "t0", 7);
                case 7:
                  preset = _context.t0;
                  _context.next = 14;
                  break;
                case 10:
                  _context.prev = 10;
                  _context.t1 = _context["catch"](5);
                  if (_context.t1.code === "BABEL_UNKNOWN_OPTION") {
                    checkNoUnwrappedItemOptionPairs(rawPresets, i, "preset", _context.t1);
                  }
                  throw _context.t1;
                case 14:
                  externalDependencies.push(preset.externalDependencies);
                  if (descriptor.ownPass) {
                    presets.push({
                      preset: preset.chain,
                      pass: []
                    });
                  } else {
                    presets.unshift({
                      preset: preset.chain,
                      pass: pluginDescriptorsPass
                    });
                  }
                case 16:
                  i++;
                  _context.next = 2;
                  break;
                case 19:
                  if (!(presets.length > 0)) {
                    _context.next = 34;
                    break;
                  }
                  pluginDescriptorsByPass.splice.apply(pluginDescriptorsByPass, [1, 0].concat(_toConsumableArray(presets.map(function (o) {
                    return o.pass;
                  }).filter(function (p) {
                    return p !== pluginDescriptorsPass;
                  }))));
                  _iterator = _createForOfIteratorHelperLoose(presets);
                case 22:
                  if ((_step = _iterator()).done) {
                    _context.next = 34;
                    break;
                  }
                  _step$value = _step.value, _preset = _step$value.preset, pass = _step$value.pass;
                  if (_preset) {
                    _context.next = 26;
                    break;
                  }
                  return _context.abrupt("return", true);
                case 26:
                  pass.push.apply(pass, _toConsumableArray(_preset.plugins));
                  return _context.delegateYield(recursePresetDescriptors(_preset.presets, pass), "t2", 28);
                case 28:
                  _ignored = _context.t2;
                  if (!_ignored) {
                    _context.next = 31;
                    break;
                  }
                  return _context.abrupt("return", true);
                case 31:
                  _preset.options.forEach(function (opts) {
                    mergeOptions(optionDefaults, opts);
                  });
                case 32:
                  _context.next = 22;
                  break;
                case 34:
                case "end":
                  return _context.stop();
              }
            }, recursePresetDescriptors, null, [[5, 10]]);
          }))(presetsDescriptors, pluginDescriptorsByPass[0]), "t1", 19);
        case 19:
          ignored = _context3.t1;
          if (!ignored) {
            _context3.next = 22;
            break;
          }
          return _context3.abrupt("return", null);
        case 22:
          opts = optionDefaults;
          mergeOptions(opts, options);
          pluginContext = Object.assign({}, presetContext, {
            assumptions: (_opts$assumptions = opts.assumptions) != null ? _opts$assumptions : {}
          });
          return _context3.delegateYield(enhanceError(context, _regeneratorRuntime().mark(function loadPluginDescriptors() {
            var _pluginDescriptorsByP;
            var _i, _pluginDescriptorsByP2, descs, pass, i, descriptor, plugin;
            return _regeneratorRuntime().wrap(function loadPluginDescriptors$(_context2) {
              while (1) switch (_context2.prev = _context2.next) {
                case 0:
                  (_pluginDescriptorsByP = pluginDescriptorsByPass[0]).unshift.apply(_pluginDescriptorsByP, _toConsumableArray(initialPluginsDescriptors));
                  _i = 0, _pluginDescriptorsByP2 = pluginDescriptorsByPass;
                case 2:
                  if (!(_i < _pluginDescriptorsByP2.length)) {
                    _context2.next = 27;
                    break;
                  }
                  descs = _pluginDescriptorsByP2[_i];
                  pass = [];
                  passes.push(pass);
                  i = 0;
                case 7:
                  if (!(i < descs.length)) {
                    _context2.next = 24;
                    break;
                  }
                  descriptor = descs[i];
                  if (!(descriptor.options !== false)) {
                    _context2.next = 21;
                    break;
                  }
                  _context2.prev = 10;
                  return _context2.delegateYield(loadPluginDescriptor(descriptor, pluginContext), "t0", 12);
                case 12:
                  plugin = _context2.t0;
                  _context2.next = 19;
                  break;
                case 15:
                  _context2.prev = 15;
                  _context2.t1 = _context2["catch"](10);
                  if (_context2.t1.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") {
                    checkNoUnwrappedItemOptionPairs(descs, i, "plugin", _context2.t1);
                  }
                  throw _context2.t1;
                case 19:
                  pass.push(plugin);
                  externalDependencies.push(plugin.externalDependencies);
                case 21:
                  i++;
                  _context2.next = 7;
                  break;
                case 24:
                  _i++;
                  _context2.next = 2;
                  break;
                case 27:
                case "end":
                  return _context2.stop();
              }
            }, loadPluginDescriptors, null, [[10, 15]]);
          }))(), "t2", 26);
        case 26:
          opts.plugins = passes[0];
          opts.presets = passes.slice(1).filter(function (plugins) {
            return plugins.length > 0;
          }).map(function (plugins) {
            return {
              plugins: plugins
            };
          });
          opts.passPerPreset = opts.presets.length > 0;
          return _context3.abrupt("return", {
            options: opts,
            passes: passes,
            externalDependencies: finalize(externalDependencies)
          });
        case 30:
        case "end":
          return _context3.stop();
      }
    }, loadFullConfig);
  }));
  function enhanceError(context, fn) {
    return _regeneratorRuntime().mark(function _callee(arg1, arg2) {
      var _context$filename;
      return _regeneratorRuntime().wrap(function _callee$(_context4) {
        while (1) switch (_context4.prev = _context4.next) {
          case 0:
            _context4.prev = 0;
            return _context4.delegateYield(fn(arg1, arg2), "t0", 2);
          case 2:
            return _context4.abrupt("return", _context4.t0);
          case 5:
            _context4.prev = 5;
            _context4.t1 = _context4["catch"](0);
            if (!/^\[BABEL\]/.test(_context4.t1.message)) {
              _context4.t1.message = "[BABEL] " + ((_context$filename = context.filename) != null ? _context$filename : "unknown file") + ": " + _context4.t1.message;
            }
            throw _context4.t1;
          case 9:
          case "end":
            return _context4.stop();
        }
      }, _callee, null, [[0, 5]]);
    });
  }
  var makeDescriptorLoader = function makeDescriptorLoader(apiFactory) {
    return makeWeakCache(function (_ref, cache) {
      var value = _ref.value,
        options = _ref.options,
        dirname = _ref.dirname,
        alias = _ref.alias;
      return _regeneratorRuntime().mark(function _callee2() {
        var externalDependencies, item, factory, api, error;
        return _regeneratorRuntime().wrap(function _callee2$(_context5) {
          while (1) switch (_context5.prev = _context5.next) {
            case 0:
              if (!(options === false)) {
                _context5.next = 2;
                break;
              }
              throw new Error("Assertion failure");
            case 2:
              options = options || {};
              externalDependencies = [];
              item = value;
              if (!(typeof value === "function")) {
                _context5.next = 17;
                break;
              }
              factory = maybeAsync(value, "You appear to be using an async plugin/preset, but Babel has been called synchronously");
              api = Object.assign({}, _babel, apiFactory(cache, externalDependencies));
              _context5.prev = 8;
              return _context5.delegateYield(factory(api, options, dirname), "t0", 10);
            case 10:
              item = _context5.t0;
              _context5.next = 17;
              break;
            case 13:
              _context5.prev = 13;
              _context5.t1 = _context5["catch"](8);
              if (alias) {
                _context5.t1.message += " (While processing: " + JSON.stringify(alias) + ")";
              }
              throw _context5.t1;
            case 17:
              if (!(!item || typeof item !== "object")) {
                _context5.next = 19;
                break;
              }
              throw new Error("Plugin/Preset did not return an object.");
            case 19:
              if (!isThenable$1(item)) {
                _context5.next = 22;
                break;
              }
              return _context5.delegateYield([], "t2", 21);
            case 21:
              throw new Error("You appear to be using a promise as a plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, " + "you may need to upgrade your @babel/core version. " + "As an alternative, you can prefix the promise with \"await\". " + ("(While processing: " + JSON.stringify(alias) + ")"));
            case 22:
              if (!(externalDependencies.length > 0 && (!cache.configured() || cache.mode() === "forever"))) {
                _context5.next = 27;
                break;
              }
              error = "A plugin/preset has external untracked dependencies " + ("(" + externalDependencies[0] + "), but the cache ");
              if (!cache.configured()) {
                error += "has not been configured to be invalidated when the external dependencies change. ";
              } else {
                error += " has been configured to never be invalidated. ";
              }
              error += "Plugins/presets should configure their cache to be invalidated when the external " + "dependencies change, for example using `api.cache.invalidate(() => " + "statSync(filepath).mtimeMs)` or `api.cache.never()`\n" + ("(While processing: " + JSON.stringify(alias) + ")");
              throw new Error(error);
            case 27:
              return _context5.abrupt("return", {
                value: item,
                options: options,
                dirname: dirname,
                alias: alias,
                externalDependencies: finalize(externalDependencies)
              });
            case 28:
            case "end":
              return _context5.stop();
          }
        }, _callee2, null, [[8, 13]]);
      })();
    });
  };
  var pluginDescriptorLoader = makeDescriptorLoader(makePluginAPI);
  var presetDescriptorLoader = makeDescriptorLoader(makePresetAPI);
  var instantiatePlugin = makeWeakCache(function (_ref2, cache) {
    var value = _ref2.value,
      options = _ref2.options,
      dirname = _ref2.dirname,
      alias = _ref2.alias,
      externalDependencies = _ref2.externalDependencies;
    return _regeneratorRuntime().mark(function _callee3() {
      var pluginObj, plugin, inheritsDescriptor, inherits;
      return _regeneratorRuntime().wrap(function _callee3$(_context6) {
        while (1) switch (_context6.prev = _context6.next) {
          case 0:
            pluginObj = validatePluginObject(value);
            plugin = Object.assign({}, pluginObj);
            if (plugin.visitor) {
              plugin.visitor = traverse.explode(Object.assign({}, plugin.visitor));
            }
            if (!plugin.inherits) {
              _context6.next = 12;
              break;
            }
            inheritsDescriptor = {
              name: undefined,
              alias: alias + "$inherits",
              value: plugin.inherits,
              options: options,
              dirname: dirname
            };
            return _context6.delegateYield(forwardAsync(loadPluginDescriptor, function (run) {
              return cache.invalidate(function (data) {
                return run(inheritsDescriptor, data);
              });
            }), "t0", 6);
          case 6:
            inherits = _context6.t0;
            plugin.pre = chain(inherits.pre, plugin.pre);
            plugin.post = chain(inherits.post, plugin.post);
            plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions);
            plugin.visitor = traverse.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]);
            if (inherits.externalDependencies.length > 0) {
              if (externalDependencies.length === 0) {
                externalDependencies = inherits.externalDependencies;
              } else {
                externalDependencies = finalize([externalDependencies, inherits.externalDependencies]);
              }
            }
          case 12:
            return _context6.abrupt("return", new Plugin(plugin, options, alias, externalDependencies));
          case 13:
          case "end":
            return _context6.stop();
        }
      }, _callee3);
    })();
  });
  function loadPluginDescriptor(descriptor, context) {
    return _regeneratorRuntime().wrap(function loadPluginDescriptor$(_context7) {
      while (1) switch (_context7.prev = _context7.next) {
        case 0:
          if (!(descriptor.value instanceof Plugin)) {
            _context7.next = 4;
            break;
          }
          if (!descriptor.options) {
            _context7.next = 3;
            break;
          }
          throw new Error("Passed options to an existing Plugin instance will not work.");
        case 3:
          return _context7.abrupt("return", descriptor.value);
        case 4:
          _context7.t0 = instantiatePlugin;
          return _context7.delegateYield(pluginDescriptorLoader(descriptor, context), "t1", 6);
        case 6:
          _context7.t2 = _context7.t1;
          _context7.t3 = context;
          return _context7.delegateYield((0, _context7.t0)(_context7.t2, _context7.t3), "t4", 9);
        case 9:
          return _context7.abrupt("return", _context7.t4);
        case 10:
        case "end":
          return _context7.stop();
      }
    }, _marked$4);
  }
  var needsFilename = function needsFilename(val) {
    return val && typeof val !== "function";
  };
  var validateIfOptionNeedsFilename = function validateIfOptionNeedsFilename(options, descriptor) {
    if (needsFilename(options.test) || needsFilename(options.include) || needsFilename(options.exclude)) {
      var formattedPresetName = descriptor.name ? "\"" + descriptor.name + "\"" : "/* your preset */";
      throw new ConfigError(["Preset " + formattedPresetName + " requires a filename to be set when babel is called directly,", "```", "babel.transformSync(code, { filename: 'file.ts', presets: [" + formattedPresetName + "] });", "```", "See https://babeljs.io/docs/en/options#filename for more information."].join("\n"));
    }
  };
  var validatePreset = function validatePreset(preset, context, descriptor) {
    if (!context.filename) {
      var _options$overrides;
      var options = preset.options;
      validateIfOptionNeedsFilename(options, descriptor);
      (_options$overrides = options.overrides) == null || _options$overrides.forEach(function (overrideOptions) {
        return validateIfOptionNeedsFilename(overrideOptions, descriptor);
      });
    }
  };
  var instantiatePreset = makeWeakCacheSync(function (_ref3) {
    var value = _ref3.value,
      dirname = _ref3.dirname,
      alias = _ref3.alias,
      externalDependencies = _ref3.externalDependencies;
    return {
      options: validate("preset", value),
      alias: alias,
      dirname: dirname,
      externalDependencies: externalDependencies
    };
  });
  function loadPresetDescriptor(descriptor, context) {
    var preset;
    return _regeneratorRuntime().wrap(function loadPresetDescriptor$(_context8) {
      while (1) switch (_context8.prev = _context8.next) {
        case 0:
          _context8.t0 = instantiatePreset;
          return _context8.delegateYield(presetDescriptorLoader(descriptor, context), "t1", 2);
        case 2:
          _context8.t2 = _context8.t1;
          preset = (0, _context8.t0)(_context8.t2);
          validatePreset(preset, context, descriptor);
          return _context8.delegateYield(buildPresetChain(preset, context), "t3", 6);
        case 6:
          _context8.t4 = _context8.t3;
          _context8.t5 = preset.externalDependencies;
          return _context8.abrupt("return", {
            chain: _context8.t4,
            externalDependencies: _context8.t5
          });
        case 9:
        case "end":
          return _context8.stop();
      }
    }, _marked2$2);
  }
  function chain(a, b) {
    var fns = [a, b].filter(Boolean);
    if (fns.length <= 1) return fns[0];
    return function () {
      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
        args[_key] = arguments[_key];
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(fns), _step2; !(_step2 = _iterator2()).done;) {
        var fn = _step2.value;
        fn.apply(this, args);
      }
    };
  }

  var _marked$3 = _regeneratorRuntime().mark(loadOptionsImpl);
  var loadPartialConfigRunner = gensync(loadPartialConfig$1);
  function loadPartialConfigAsync() {
    return beginHiddenCallStack(loadPartialConfigRunner.async).apply(void 0, arguments);
  }
  function loadPartialConfigSync() {
    return beginHiddenCallStack(loadPartialConfigRunner.sync).apply(void 0, arguments);
  }
  function loadPartialConfig(opts, callback) {
    if (callback !== undefined) {
      beginHiddenCallStack(loadPartialConfigRunner.errback)(opts, callback);
    } else if (typeof opts === "function") {
      beginHiddenCallStack(loadPartialConfigRunner.errback)(undefined, opts);
    } else {
      {
        return loadPartialConfigSync(opts);
      }
    }
  }
  function loadOptionsImpl(opts) {
    var _config$options;
    var config;
    return _regeneratorRuntime().wrap(function loadOptionsImpl$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(loadConfig(opts), "t0", 1);
        case 1:
          config = _context.t0;
          return _context.abrupt("return", (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null);
        case 3:
        case "end":
          return _context.stop();
      }
    }, _marked$3);
  }
  var loadOptionsRunner = gensync(loadOptionsImpl);
  function loadOptionsAsync() {
    return beginHiddenCallStack(loadOptionsRunner.async).apply(void 0, arguments);
  }
  function loadOptionsSync() {
    return beginHiddenCallStack(loadOptionsRunner.sync).apply(void 0, arguments);
  }
  function loadOptions(opts, callback) {
    if (callback !== undefined) {
      beginHiddenCallStack(loadOptionsRunner.errback)(opts, callback);
    } else if (typeof opts === "function") {
      beginHiddenCallStack(loadOptionsRunner.errback)(undefined, opts);
    } else {
      {
        return loadOptionsSync(opts);
      }
    }
  }
  var createConfigItemRunner = gensync(createConfigItem$1);
  function createConfigItemAsync() {
    return beginHiddenCallStack(createConfigItemRunner.async).apply(void 0, arguments);
  }
  function createConfigItemSync() {
    return beginHiddenCallStack(createConfigItemRunner.sync).apply(void 0, arguments);
  }
  function createConfigItem(target, options, callback) {
    if (callback !== undefined) {
      beginHiddenCallStack(createConfigItemRunner.errback)(target, options, callback);
    } else if (typeof options === "function") {
      beginHiddenCallStack(createConfigItemRunner.errback)(target, undefined, callback);
    } else {
      {
        return createConfigItemSync(target, options);
      }
    }
  }

  var PluginPass = function () {
    function PluginPass(file, key, options) {
      this._map = new Map();
      this.key = void 0;
      this.file = void 0;
      this.opts = void 0;
      this.cwd = void 0;
      this.filename = void 0;
      this.key = key;
      this.file = file;
      this.opts = options || {};
      this.cwd = file.opts.cwd;
      this.filename = file.opts.filename;
    }
    var _proto = PluginPass.prototype;
    _proto.set = function set(key, val) {
      this._map.set(key, val);
    };
    _proto.get = function get(key) {
      return this._map.get(key);
    };
    _proto.availableHelper = function availableHelper(name, versionRange) {
      return this.file.availableHelper(name, versionRange);
    };
    _proto.addHelper = function addHelper(name) {
      return this.file.addHelper(name);
    };
    _proto.buildCodeFrameError = function buildCodeFrameError(node, msg, _Error) {
      return this.file.buildCodeFrameError(node, msg, _Error);
    };
    return _createClass(PluginPass);
  }();
  {
    PluginPass.prototype.getModuleName = function getModuleName() {
      return this.file.getModuleName();
    };
    PluginPass.prototype.addImport = function addImport() {
      this.file.addImport();
    };
  }

  var LOADED_PLUGIN;
  var blockHoistPlugin = {
    name: "internal.blockHoist",
    visitor: {
      Block: {
        exit: function exit(_ref) {
          var node = _ref.node;
          node.body = performHoisting(node.body);
        }
      },
      SwitchCase: {
        exit: function exit(_ref2) {
          var node = _ref2.node;
          node.consequent = performHoisting(node.consequent);
        }
      }
    }
  };
  function performHoisting(body) {
    var max = Math.pow(2, 30) - 1;
    var hasChange = false;
    for (var i = 0; i < body.length; i++) {
      var n = body[i];
      var p = priority(n);
      if (p > max) {
        hasChange = true;
        break;
      }
      max = p;
    }
    if (!hasChange) return body;
    return stableSort(body.slice());
  }
  function loadBlockHoistPlugin() {
    if (!LOADED_PLUGIN) {
      LOADED_PLUGIN = new Plugin(Object.assign({}, blockHoistPlugin, {
        visitor: traverse.explode(blockHoistPlugin.visitor)
      }), {});
    }
    return LOADED_PLUGIN;
  }
  function priority(bodyNode) {
    var priority = bodyNode == null ? void 0 : bodyNode._blockHoist;
    if (priority == null) return 1;
    if (priority === true) return 2;
    return priority;
  }
  function stableSort(body) {
    var buckets = Object.create(null);
    for (var i = 0; i < body.length; i++) {
      var n = body[i];
      var p = priority(n);
      var bucket = buckets[p] || (buckets[p] = []);
      bucket.push(n);
    }
    var keys = Object.keys(buckets).map(function (k) {
      return +k;
    }).sort(function (a, b) {
      return b - a;
    });
    var index = 0;
    for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
      var key = _step.value;
      var _bucket = buckets[key];
      for (var _iterator2 = _createForOfIteratorHelperLoose(_bucket), _step2; !(_step2 = _iterator2()).done;) {
        var _n = _step2.value;
        body[index++] = _n;
      }
    }
    return body;
  }

  function normalizeOptions$6(config) {
    var _config$options = config.options,
      filename = _config$options.filename,
      cwd = _config$options.cwd,
      _config$options$filen = _config$options.filenameRelative,
      filenameRelative = _config$options$filen === void 0 ? typeof filename === "string" ? path$1.relative(cwd, filename) : "unknown" : _config$options$filen,
      _config$options$sourc = _config$options.sourceType,
      sourceType = _config$options$sourc === void 0 ? "module" : _config$options$sourc,
      inputSourceMap = _config$options.inputSourceMap,
      _config$options$sourc2 = _config$options.sourceMaps,
      sourceMaps = _config$options$sourc2 === void 0 ? !!inputSourceMap : _config$options$sourc2,
      _config$options$sourc3 = _config$options.sourceRoot,
      sourceRoot = _config$options$sourc3 === void 0 ? config.options.moduleRoot : _config$options$sourc3,
      _config$options$sourc4 = _config$options.sourceFileName,
      sourceFileName = _config$options$sourc4 === void 0 ? path$1.basename(filenameRelative) : _config$options$sourc4,
      _config$options$comme = _config$options.comments,
      comments = _config$options$comme === void 0 ? true : _config$options$comme,
      _config$options$compa = _config$options.compact,
      compact = _config$options$compa === void 0 ? "auto" : _config$options$compa;
    var opts = config.options;
    var options = Object.assign({}, opts, {
      parserOpts: Object.assign({
        sourceType: path$1.extname(filenameRelative) === ".mjs" ? "module" : sourceType,
        sourceFileName: filename,
        plugins: []
      }, opts.parserOpts),
      generatorOpts: Object.assign({
        filename: filename,
        auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
        auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
        retainLines: opts.retainLines,
        comments: comments,
        shouldPrintComment: opts.shouldPrintComment,
        compact: compact,
        minified: opts.minified,
        sourceMaps: sourceMaps,
        sourceRoot: sourceRoot,
        sourceFileName: sourceFileName
      }, opts.generatorOpts)
    });
    for (var _iterator = _createForOfIteratorHelperLoose(config.passes), _step; !(_step = _iterator()).done;) {
      var plugins = _step.value;
      for (var _iterator2 = _createForOfIteratorHelperLoose(plugins), _step2; !(_step2 = _iterator2()).done;) {
        var plugin = _step2.value;
        if (plugin.manipulateOptions) {
          plugin.manipulateOptions(options, options.parserOpts);
        }
      }
    }
    return options;
  }

  var fs = {};

  var convertSourceMap = {};

  (function (exports) {

    Object.defineProperty(exports, 'commentRegex', {
      get: function getCommentRegex() {
        return /^\s*?\/[\/\*][@#]\s+?sourceMappingURL=data:(((?:application|text)\/json)(?:;charset=([^;,]+?)?)?)?(?:;(base64))?,(.*?)$/mg;
      }
    });
    Object.defineProperty(exports, 'mapFileCommentRegex', {
      get: function getMapFileCommentRegex() {
        return /(?:\/\/[@#][ \t]+?sourceMappingURL=([^\s'"`]+?)[ \t]*?$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^*]+?)[ \t]*?(?:\*\/){1}[ \t]*?$)/mg;
      }
    });
    var decodeBase64;
    if (typeof Buffer$1 !== 'undefined') {
      if (typeof Buffer$1.from === 'function') {
        decodeBase64 = decodeBase64WithBufferFrom;
      } else {
        decodeBase64 = decodeBase64WithNewBuffer;
      }
    } else {
      decodeBase64 = decodeBase64WithAtob;
    }
    function decodeBase64WithBufferFrom(base64) {
      return Buffer$1.from(base64, 'base64').toString();
    }
    function decodeBase64WithNewBuffer(base64) {
      if (typeof value === 'number') {
        throw new TypeError('The value to decode must not be of type number.');
      }
      return new Buffer$1(base64, 'base64').toString();
    }
    function decodeBase64WithAtob(base64) {
      return decodeURIComponent(escape(atob(base64)));
    }
    function stripComment(sm) {
      return sm.split(',').pop();
    }
    function readFromFileMap(sm, read) {
      var r = exports.mapFileCommentRegex.exec(sm);
      var filename = r[1] || r[2];
      try {
        var sm = read(filename);
        if (sm != null && typeof sm["catch"] === 'function') {
          return sm["catch"](throwError);
        } else {
          return sm;
        }
      } catch (e) {
        throwError(e);
      }
      function throwError(e) {
        throw new Error('An error occurred while trying to read the map file at ' + filename + '\n' + e.stack);
      }
    }
    function Converter(sm, opts) {
      opts = opts || {};
      if (opts.hasComment) {
        sm = stripComment(sm);
      }
      if (opts.encoding === 'base64') {
        sm = decodeBase64(sm);
      } else if (opts.encoding === 'uri') {
        sm = decodeURIComponent(sm);
      }
      if (opts.isJSON || opts.encoding) {
        sm = JSON.parse(sm);
      }
      this.sourcemap = sm;
    }
    Converter.prototype.toJSON = function (space) {
      return JSON.stringify(this.sourcemap, null, space);
    };
    if (typeof Buffer$1 !== 'undefined') {
      if (typeof Buffer$1.from === 'function') {
        Converter.prototype.toBase64 = encodeBase64WithBufferFrom;
      } else {
        Converter.prototype.toBase64 = encodeBase64WithNewBuffer;
      }
    } else {
      Converter.prototype.toBase64 = encodeBase64WithBtoa;
    }
    function encodeBase64WithBufferFrom() {
      var json = this.toJSON();
      return Buffer$1.from(json, 'utf8').toString('base64');
    }
    function encodeBase64WithNewBuffer() {
      var json = this.toJSON();
      if (typeof json === 'number') {
        throw new TypeError('The json to encode must not be of type number.');
      }
      return new Buffer$1(json, 'utf8').toString('base64');
    }
    function encodeBase64WithBtoa() {
      var json = this.toJSON();
      return btoa(unescape(encodeURIComponent(json)));
    }
    Converter.prototype.toURI = function () {
      var json = this.toJSON();
      return encodeURIComponent(json);
    };
    Converter.prototype.toComment = function (options) {
      var encoding, content, data;
      if (options != null && options.encoding === 'uri') {
        encoding = '';
        content = this.toURI();
      } else {
        encoding = ';base64';
        content = this.toBase64();
      }
      data = 'sourceMappingURL=data:application/json;charset=utf-8' + encoding + ',' + content;
      return options != null && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
    };
    Converter.prototype.toObject = function () {
      return JSON.parse(this.toJSON());
    };
    Converter.prototype.addProperty = function (key, value) {
      if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead');
      return this.setProperty(key, value);
    };
    Converter.prototype.setProperty = function (key, value) {
      this.sourcemap[key] = value;
      return this;
    };
    Converter.prototype.getProperty = function (key) {
      return this.sourcemap[key];
    };
    exports.fromObject = function (obj) {
      return new Converter(obj);
    };
    exports.fromJSON = function (json) {
      return new Converter(json, {
        isJSON: true
      });
    };
    exports.fromURI = function (uri) {
      return new Converter(uri, {
        encoding: 'uri'
      });
    };
    exports.fromBase64 = function (base64) {
      return new Converter(base64, {
        encoding: 'base64'
      });
    };
    exports.fromComment = function (comment) {
      var m, encoding;
      comment = comment.replace(/^\/\*/g, '//').replace(/\*\/$/g, '');
      m = exports.commentRegex.exec(comment);
      encoding = m && m[4] || 'uri';
      return new Converter(comment, {
        encoding: encoding,
        hasComment: true
      });
    };
    function makeConverter(sm) {
      return new Converter(sm, {
        isJSON: true
      });
    }
    exports.fromMapFileComment = function (comment, read) {
      if (typeof read === 'string') {
        throw new Error('String directory paths are no longer supported with `fromMapFileComment`\n' + 'Please review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading');
      }
      var sm = readFromFileMap(comment, read);
      if (sm != null && typeof sm.then === 'function') {
        return sm.then(makeConverter);
      } else {
        return makeConverter(sm);
      }
    };
    exports.fromSource = function (content) {
      var m = content.match(exports.commentRegex);
      return m ? exports.fromComment(m.pop()) : null;
    };
    exports.fromMapFileSource = function (content, read) {
      if (typeof read === 'string') {
        throw new Error('String directory paths are no longer supported with `fromMapFileSource`\n' + 'Please review the Upgrading documentation at https://github.com/thlorenz/convert-source-map#upgrading');
      }
      var m = content.match(exports.mapFileCommentRegex);
      return m ? exports.fromMapFileComment(m.pop(), read) : null;
    };
    exports.removeComments = function (src) {
      return src.replace(exports.commentRegex, '');
    };
    exports.removeMapFileComments = function (src) {
      return src.replace(exports.mapFileCommentRegex, '');
    };
    exports.generateMapFileComment = function (file, options) {
      var data = 'sourceMappingURL=' + file;
      return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
    };
  })(convertSourceMap);

  var pluginNameMap = {
    asyncDoExpressions: {
      syntax: {
        name: "@babel/plugin-syntax-async-do-expressions",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions"
      }
    },
    decimal: {
      syntax: {
        name: "@babel/plugin-syntax-decimal",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decimal"
      }
    },
    decorators: {
      syntax: {
        name: "@babel/plugin-syntax-decorators",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decorators"
      },
      transform: {
        name: "@babel/plugin-proposal-decorators",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-decorators"
      }
    },
    doExpressions: {
      syntax: {
        name: "@babel/plugin-syntax-do-expressions",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-do-expressions"
      },
      transform: {
        name: "@babel/plugin-proposal-do-expressions",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions"
      }
    },
    exportDefaultFrom: {
      syntax: {
        name: "@babel/plugin-syntax-export-default-from",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-default-from"
      },
      transform: {
        name: "@babel/plugin-proposal-export-default-from",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from"
      }
    },
    flow: {
      syntax: {
        name: "@babel/plugin-syntax-flow",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-flow"
      },
      transform: {
        name: "@babel/preset-flow",
        url: "https://github.com/babel/babel/tree/main/packages/babel-preset-flow"
      }
    },
    functionBind: {
      syntax: {
        name: "@babel/plugin-syntax-function-bind",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-bind"
      },
      transform: {
        name: "@babel/plugin-proposal-function-bind",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-bind"
      }
    },
    functionSent: {
      syntax: {
        name: "@babel/plugin-syntax-function-sent",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-sent"
      },
      transform: {
        name: "@babel/plugin-proposal-function-sent",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent"
      }
    },
    jsx: {
      syntax: {
        name: "@babel/plugin-syntax-jsx",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx"
      },
      transform: {
        name: "@babel/preset-react",
        url: "https://github.com/babel/babel/tree/main/packages/babel-preset-react"
      }
    },
    importAttributes: {
      syntax: {
        name: "@babel/plugin-syntax-import-attributes",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-attributes"
      }
    },
    pipelineOperator: {
      syntax: {
        name: "@babel/plugin-syntax-pipeline-operator",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-pipeline-operator"
      },
      transform: {
        name: "@babel/plugin-proposal-pipeline-operator",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator"
      }
    },
    recordAndTuple: {
      syntax: {
        name: "@babel/plugin-syntax-record-and-tuple",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-record-and-tuple"
      }
    },
    throwExpressions: {
      syntax: {
        name: "@babel/plugin-syntax-throw-expressions",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-throw-expressions"
      },
      transform: {
        name: "@babel/plugin-proposal-throw-expressions",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-throw-expressions"
      }
    },
    typescript: {
      syntax: {
        name: "@babel/plugin-syntax-typescript",
        url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-typescript"
      },
      transform: {
        name: "@babel/preset-typescript",
        url: "https://github.com/babel/babel/tree/main/packages/babel-preset-typescript"
      }
    }
  };
  {
    Object.assign(pluginNameMap, {
      asyncGenerators: {
        syntax: {
          name: "@babel/plugin-syntax-async-generators",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-generators"
        },
        transform: {
          name: "@babel/plugin-transform-async-generator-functions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-async-generator-functions"
        }
      },
      classProperties: {
        syntax: {
          name: "@babel/plugin-syntax-class-properties",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
        },
        transform: {
          name: "@babel/plugin-transform-class-properties",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties"
        }
      },
      classPrivateProperties: {
        syntax: {
          name: "@babel/plugin-syntax-class-properties",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
        },
        transform: {
          name: "@babel/plugin-transform-class-properties",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-class-properties"
        }
      },
      classPrivateMethods: {
        syntax: {
          name: "@babel/plugin-syntax-class-properties",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
        },
        transform: {
          name: "@babel/plugin-transform-private-methods",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-methods"
        }
      },
      classStaticBlock: {
        syntax: {
          name: "@babel/plugin-syntax-class-static-block",
          url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block"
        },
        transform: {
          name: "@babel/plugin-transform-class-static-block",
          url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-transform-class-static-block"
        }
      },
      dynamicImport: {
        syntax: {
          name: "@babel/plugin-syntax-dynamic-import",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import"
        }
      },
      exportNamespaceFrom: {
        syntax: {
          name: "@babel/plugin-syntax-export-namespace-from",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from"
        },
        transform: {
          name: "@babel/plugin-transform-export-namespace-from",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-export-namespace-from"
        }
      },
      importAssertions: {
        syntax: {
          name: "@babel/plugin-syntax-import-assertions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions"
        }
      },
      importMeta: {
        syntax: {
          name: "@babel/plugin-syntax-import-meta",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta"
        }
      },
      logicalAssignment: {
        syntax: {
          name: "@babel/plugin-syntax-logical-assignment-operators",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-logical-assignment-operators"
        },
        transform: {
          name: "@babel/plugin-transform-logical-assignment-operators",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-logical-assignment-operators"
        }
      },
      moduleStringNames: {
        syntax: {
          name: "@babel/plugin-syntax-module-string-names",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names"
        }
      },
      numericSeparator: {
        syntax: {
          name: "@babel/plugin-syntax-numeric-separator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator"
        },
        transform: {
          name: "@babel/plugin-transform-numeric-separator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-numeric-separator"
        }
      },
      nullishCoalescingOperator: {
        syntax: {
          name: "@babel/plugin-syntax-nullish-coalescing-operator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-nullish-coalescing-operator"
        },
        transform: {
          name: "@babel/plugin-transform-nullish-coalescing-operator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-nullish-coalescing-opearator"
        }
      },
      objectRestSpread: {
        syntax: {
          name: "@babel/plugin-syntax-object-rest-spread",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-object-rest-spread"
        },
        transform: {
          name: "@babel/plugin-transform-object-rest-spread",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-object-rest-spread"
        }
      },
      optionalCatchBinding: {
        syntax: {
          name: "@babel/plugin-syntax-optional-catch-binding",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-catch-binding"
        },
        transform: {
          name: "@babel/plugin-transform-optional-catch-binding",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-catch-binding"
        }
      },
      optionalChaining: {
        syntax: {
          name: "@babel/plugin-syntax-optional-chaining",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining"
        },
        transform: {
          name: "@babel/plugin-transform-optional-chaining",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-optional-chaining"
        }
      },
      privateIn: {
        syntax: {
          name: "@babel/plugin-syntax-private-property-in-object",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object"
        },
        transform: {
          name: "@babel/plugin-transform-private-property-in-object",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-private-property-in-object"
        }
      },
      regexpUnicodeSets: {
        syntax: {
          name: "@babel/plugin-syntax-unicode-sets-regex",
          url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-syntax-unicode-sets-regex/README.md"
        },
        transform: {
          name: "@babel/plugin-transform-unicode-sets-regex",
          url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-proposalunicode-sets-regex/README.md"
        }
      }
    });
  }
  var getNameURLCombination = function getNameURLCombination(_ref) {
    var name = _ref.name,
      url = _ref.url;
    return name + " (" + url + ")";
  };
  function generateMissingPluginMessage(missingPluginName, loc, codeFrame, filename) {
    var helpMessage = "Support for the experimental syntax '" + missingPluginName + "' isn't currently enabled " + ("(" + loc.line + ":" + (loc.column + 1) + "):\n\n") + codeFrame;
    var pluginInfo = pluginNameMap[missingPluginName];
    if (pluginInfo) {
      var syntaxPlugin = pluginInfo.syntax,
        transformPlugin = pluginInfo.transform;
      if (syntaxPlugin) {
        var syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
        if (transformPlugin) {
          var transformPluginInfo = getNameURLCombination(transformPlugin);
          var sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets";
          helpMessage += "\n\nAdd " + transformPluginInfo + " to the '" + sectionType + "' section of your Babel config to enable transformation.\nIf you want to leave it as-is, add " + syntaxPluginInfo + " to the 'plugins' section to enable parsing.";
        } else {
          helpMessage += "\n\nAdd " + syntaxPluginInfo + " to the 'plugins' section of your Babel config " + "to enable parsing.";
        }
      }
    }
    var msgFilename = filename === "unknown" ? "<name of the input file>" : filename;
    helpMessage += "\n\nIf you already added the plugin for this syntax to your config, it's possible that your config isn't being loaded.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded configuration:\n\tnpx cross-env BABEL_SHOW_CONFIG_FOR=" + msgFilename + " <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.\n";
    return helpMessage;
  }

  function parser$1(pluginPasses, _ref, code) {
    var parserOpts = _ref.parserOpts,
      _ref$highlightCode = _ref.highlightCode,
      highlightCode = _ref$highlightCode === void 0 ? true : _ref$highlightCode,
      _ref$filename = _ref.filename,
      filename = _ref$filename === void 0 ? "unknown" : _ref$filename;
    return _regeneratorRuntime().mark(function _callee() {
      var results, _iterator, _step, plugins, _iterator2, _step2, plugin, parserOverride, ast, loc, missingPlugin, codeFrame;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            _context.prev = 0;
            results = [];
            for (_iterator = _createForOfIteratorHelperLoose(pluginPasses); !(_step = _iterator()).done;) {
              plugins = _step.value;
              for (_iterator2 = _createForOfIteratorHelperLoose(plugins); !(_step2 = _iterator2()).done;) {
                plugin = _step2.value;
                parserOverride = plugin.parserOverride;
                if (parserOverride) {
                  ast = parserOverride(code, parserOpts, parse$4);
                  if (ast !== undefined) results.push(ast);
                }
              }
            }
            if (!(results.length === 0)) {
              _context.next = 7;
              break;
            }
            return _context.abrupt("return", parse$4(code, parserOpts));
          case 7:
            if (!(results.length === 1)) {
              _context.next = 12;
              break;
            }
            return _context.delegateYield([], "t0", 9);
          case 9:
            if (!(typeof results[0].then === "function")) {
              _context.next = 11;
              break;
            }
            throw new Error("You appear to be using an async parser plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
          case 11:
            return _context.abrupt("return", results[0]);
          case 12:
            throw new Error("More than one plugin attempted to override parsing.");
          case 15:
            _context.prev = 15;
            _context.t1 = _context["catch"](0);
            if (_context.t1.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") {
              _context.t1.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file.";
            }
            loc = _context.t1.loc, missingPlugin = _context.t1.missingPlugin;
            if (loc) {
              codeFrame = codeFrameColumns(code, {
                start: {
                  line: loc.line,
                  column: loc.column + 1
                }
              }, {
                highlightCode: highlightCode
              });
              if (missingPlugin) {
                _context.t1.message = filename + ": " + generateMissingPluginMessage(missingPlugin[0], loc, codeFrame, filename);
              } else {
                _context.t1.message = filename + ": " + _context.t1.message + "\n\n" + codeFrame;
              }
              _context.t1.code = "BABEL_PARSE_ERROR";
            }
            throw _context.t1;
          case 21:
          case "end":
            return _context.stop();
        }
      }, _callee, null, [[0, 15]]);
    })();
  }

  function deepClone(value, cache) {
    if (value !== null) {
      if (cache.has(value)) return cache.get(value);
      var cloned;
      if (Array.isArray(value)) {
        cloned = new Array(value.length);
        cache.set(value, cloned);
        for (var i = 0; i < value.length; i++) {
          cloned[i] = typeof value[i] !== "object" ? value[i] : deepClone(value[i], cache);
        }
      } else {
        cloned = {};
        cache.set(value, cloned);
        var keys = Object.keys(value);
        for (var _i = 0; _i < keys.length; _i++) {
          var key = keys[_i];
          cloned[key] = typeof value[key] !== "object" ? value[key] : deepClone(value[key], cache);
        }
      }
      return cloned;
    }
    return value;
  }
  function cloneDeep (value) {
    if (typeof value !== "object") return value;
    return deepClone(value, new Map());
  }

  var _marked$2 = _regeneratorRuntime().mark(normalizeFile);
  var file = file$1,
    traverseFast = traverseFast$2;
  var debug = browserExports("babel:transform:file");
  var INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,.*$/;
  var EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/;
  function normalizeFile(pluginPasses, options, code, ast) {
    var inputMap, lastComment, _lastComment, match, inputMapContent;
    return _regeneratorRuntime().wrap(function normalizeFile$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          code = "" + (code || "");
          if (!ast) {
            _context.next = 11;
            break;
          }
          if (!(ast.type === "Program")) {
            _context.next = 6;
            break;
          }
          ast = file(ast, [], []);
          _context.next = 8;
          break;
        case 6:
          if (!(ast.type !== "File")) {
            _context.next = 8;
            break;
          }
          throw new Error("AST root must be a Program or File node");
        case 8:
          if (options.cloneInputAst) {
            ast = cloneDeep(ast);
          }
          _context.next = 13;
          break;
        case 11:
          return _context.delegateYield(parser$1(pluginPasses, options, code), "t0", 12);
        case 12:
          ast = _context.t0;
        case 13:
          inputMap = null;
          if (options.inputSourceMap !== false) {
            if (typeof options.inputSourceMap === "object") {
              inputMap = convertSourceMap.fromObject(options.inputSourceMap);
            }
            if (!inputMap) {
              lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
              if (lastComment) {
                try {
                  inputMap = convertSourceMap.fromComment("//" + lastComment);
                } catch (err) {
                  {
                    debug("discarding unknown inline input sourcemap");
                  }
                }
              }
            }
            if (!inputMap) {
              _lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
              if (typeof options.filename === "string" && _lastComment) {
                try {
                  match = EXTERNAL_SOURCEMAP_REGEX.exec(_lastComment);
                  inputMapContent = fs.readFileSync(path$1.resolve(path$1.dirname(options.filename), match[1]), "utf8");
                  inputMap = convertSourceMap.fromJSON(inputMapContent);
                } catch (err) {
                  debug("discarding unknown file input sourcemap", err);
                }
              } else if (_lastComment) {
                debug("discarding un-loadable file input sourcemap");
              }
            }
          }
          return _context.abrupt("return", new File(options, {
            code: code,
            ast: ast,
            inputMap: inputMap
          }));
        case 16:
        case "end":
          return _context.stop();
      }
    }, _marked$2);
  }
  function extractCommentsFromList(regex, comments, lastComment) {
    if (comments) {
      comments = comments.filter(function (_ref) {
        var value = _ref.value;
        if (regex.test(value)) {
          lastComment = value;
          return false;
        }
        return true;
      });
    }
    return [comments, lastComment];
  }
  function extractComments(regex, ast) {
    var lastComment = null;
    traverseFast(ast, function (node) {
      var _extractCommentsFromL = extractCommentsFromList(regex, node.leadingComments, lastComment);
      var _extractCommentsFromL2 = _slicedToArray(_extractCommentsFromL, 2);
      node.leadingComments = _extractCommentsFromL2[0];
      lastComment = _extractCommentsFromL2[1];
      var _extractCommentsFromL3 = extractCommentsFromList(regex, node.innerComments, lastComment);
      var _extractCommentsFromL4 = _slicedToArray(_extractCommentsFromL3, 2);
      node.innerComments = _extractCommentsFromL4[0];
      lastComment = _extractCommentsFromL4[1];
      var _extractCommentsFromL5 = extractCommentsFromList(regex, node.trailingComments, lastComment);
      var _extractCommentsFromL6 = _slicedToArray(_extractCommentsFromL5, 2);
      node.trailingComments = _extractCommentsFromL6[0];
      lastComment = _extractCommentsFromL6[1];
    });
    return lastComment;
  }

  var genMapping_umd = {exports: {}};

  (function (module, exports) {
    (function (global, factory) {
      factory(exports, requireSetArray_umd(), requireSourcemapCodec_umd()) ;
    })(commonjsGlobal, function (exports, setArray, sourcemapCodec) {
      exports.addSegment = void 0;
      exports.addMapping = void 0;
      exports.setSourceContent = void 0;
      exports.decodedMap = void 0;
      exports.encodedMap = void 0;
      exports.allMappings = void 0;
      var GenMapping = _createClass(function GenMapping(_temp) {
        var _ref = _temp === void 0 ? {} : _temp,
          file = _ref.file,
          sourceRoot = _ref.sourceRoot;
        this._names = new setArray.SetArray();
        this._sources = new setArray.SetArray();
        this._sourcesContent = [];
        this._mappings = [];
        this.file = file;
        this.sourceRoot = sourceRoot;
      });
      (function () {
        exports.addSegment = function (map, genLine, genColumn, source, sourceLine, sourceColumn, name) {
          var mappings = map._mappings,
            sources = map._sources,
            sourcesContent = map._sourcesContent,
            names = map._names;
          var line = getLine(mappings, genLine);
          if (source == null) {
            var _seg = [genColumn];
            var _index = getColumnIndex(line, genColumn, _seg);
            return insert(line, _index, _seg);
          }
          var sourcesIndex = setArray.put(sources, source);
          var seg = name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, setArray.put(names, name)] : [genColumn, sourcesIndex, sourceLine, sourceColumn];
          var index = getColumnIndex(line, genColumn, seg);
          if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = null;
          insert(line, index, seg);
        };
        exports.addMapping = function (map, mapping) {
          var generated = mapping.generated,
            source = mapping.source,
            original = mapping.original,
            name = mapping.name;
          return exports.addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name);
        };
        exports.setSourceContent = function (map, source, content) {
          var sources = map._sources,
            sourcesContent = map._sourcesContent;
          sourcesContent[setArray.put(sources, source)] = content;
        };
        exports.decodedMap = function (map) {
          var file = map.file,
            sourceRoot = map.sourceRoot,
            mappings = map._mappings,
            sources = map._sources,
            sourcesContent = map._sourcesContent,
            names = map._names;
          return {
            version: 3,
            file: file,
            names: names.array,
            sourceRoot: sourceRoot || undefined,
            sources: sources.array,
            sourcesContent: sourcesContent,
            mappings: mappings
          };
        };
        exports.encodedMap = function (map) {
          var decoded = exports.decodedMap(map);
          return Object.assign(Object.assign({}, decoded), {
            mappings: sourcemapCodec.encode(decoded.mappings)
          });
        };
        exports.allMappings = function (map) {
          var out = [];
          var mappings = map._mappings,
            sources = map._sources,
            names = map._names;
          for (var i = 0; i < mappings.length; i++) {
            var line = mappings[i];
            for (var j = 0; j < line.length; j++) {
              var seg = line[j];
              var generated = {
                line: i + 1,
                column: seg[0]
              };
              var source = undefined;
              var original = undefined;
              var name = undefined;
              if (seg.length !== 1) {
                source = sources.array[seg[1]];
                original = {
                  line: seg[2] + 1,
                  column: seg[3]
                };
                if (seg.length === 5) name = names.array[seg[4]];
              }
              out.push({
                generated: generated,
                source: source,
                original: original,
                name: name
              });
            }
          }
          return out;
        };
      })();
      function getLine(mappings, index) {
        for (var i = mappings.length; i <= index; i++) {
          mappings[i] = [];
        }
        return mappings[index];
      }
      function getColumnIndex(line, column, seg) {
        var index = line.length;
        for (var i = index - 1; i >= 0; i--, index--) {
          var current = line[i];
          var col = current[0];
          if (col > column) continue;
          if (col < column) break;
          var cmp = compare(current, seg);
          if (cmp === 0) return index;
          if (cmp < 0) break;
        }
        return index;
      }
      function compare(a, b) {
        var cmp = compareNum(a.length, b.length);
        if (cmp !== 0) return cmp;
        if (a.length === 1) return 0;
        cmp = compareNum(a[1], b[1]);
        if (cmp !== 0) return cmp;
        cmp = compareNum(a[2], b[2]);
        if (cmp !== 0) return cmp;
        cmp = compareNum(a[3], b[3]);
        if (cmp !== 0) return cmp;
        if (a.length === 4) return 0;
        return compareNum(a[4], b[4]);
      }
      function compareNum(a, b) {
        return a - b;
      }
      function insert(array, index, value) {
        if (index === -1) return;
        for (var i = array.length; i > index; i--) {
          array[i] = array[i - 1];
        }
        array[index] = value;
      }
      exports.GenMapping = GenMapping;
      Object.defineProperty(exports, '__esModule', {
        value: true
      });
    });
  })(genMapping_umd, genMapping_umd.exports);
  var genMapping_umdExports = genMapping_umd.exports;

  var SOURCELESS_MAPPING = {
    source: null,
    column: null,
    line: null,
    name: null,
    content: null
  };
  var EMPTY_SOURCES = [];
  function Source(map, sources, source, content) {
    return {
      map: map,
      sources: sources,
      source: source,
      content: content
    };
  }
  function MapSource(map, sources) {
    return Source(map, sources, '', null);
  }
  function OriginalSource(source, content) {
    return Source(null, EMPTY_SOURCES, source, content);
  }
  function traceMappings(tree) {
    var gen = new genMapping_umdExports.GenMapping({
      file: tree.map.file
    });
    var rootSources = tree.sources,
      map = tree.map;
    var rootNames = map.names;
    var rootMappings = traceMapping_umdExports.decodedMappings(map);
    for (var i = 0; i < rootMappings.length; i++) {
      var segments = rootMappings[i];
      var lastSource = null;
      var lastSourceLine = null;
      var lastSourceColumn = null;
      for (var j = 0; j < segments.length; j++) {
        var segment = segments[j];
        var genCol = segment[0];
        var traced = SOURCELESS_MAPPING;
        if (segment.length !== 1) {
          var _source = rootSources[segment[1]];
          traced = originalPositionFor(_source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
          if (traced == null) continue;
        }
        var _traced = traced,
          column = _traced.column,
          line = _traced.line,
          name = _traced.name,
          content = _traced.content,
          source = _traced.source;
        if (line === lastSourceLine && column === lastSourceColumn && source === lastSource) {
          continue;
        }
        lastSourceLine = line;
        lastSourceColumn = column;
        lastSource = source;
        genMapping_umdExports.addSegment(gen, i, genCol, source, line, column, name);
        if (content != null) genMapping_umdExports.setSourceContent(gen, source, content);
      }
    }
    return gen;
  }
  function originalPositionFor(source, line, column, name) {
    if (!source.map) {
      return {
        column: column,
        line: line,
        name: name,
        source: source.source,
        content: source.content
      };
    }
    var segment = traceMapping_umdExports.traceSegment(source.map, line, column);
    if (segment == null) return null;
    if (segment.length === 1) return SOURCELESS_MAPPING;
    return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
  }
  function asArray(value) {
    if (Array.isArray(value)) return value;
    return [value];
  }
  function buildSourceMapTree(input, loader) {
    var maps = asArray(input).map(function (m) {
      return new traceMapping_umdExports.TraceMap(m, '');
    });
    var map = maps.pop();
    for (var i = 0; i < maps.length; i++) {
      if (maps[i].sources.length > 1) {
        throw new Error("Transformation map " + i + " must have exactly one source file.\n" + 'Did you specify these with the most recent transformation maps first?');
      }
    }
    var tree = build$1(map, loader, '', 0);
    for (var _i = maps.length - 1; _i >= 0; _i--) {
      tree = MapSource(maps[_i], [tree]);
    }
    return tree;
  }
  function build$1(map, loader, importer, importerDepth) {
    var resolvedSources = map.resolvedSources,
      sourcesContent = map.sourcesContent;
    var depth = importerDepth + 1;
    var children = resolvedSources.map(function (sourceFile, i) {
      var ctx = {
        importer: importer,
        depth: depth,
        source: sourceFile || '',
        content: undefined
      };
      var sourceMap = loader(ctx.source, ctx);
      var source = ctx.source,
        content = ctx.content;
      if (sourceMap) return build$1(new traceMapping_umdExports.TraceMap(sourceMap, source), loader, source, depth);
      var sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
      return OriginalSource(source, sourceContent);
    });
    return MapSource(map, children);
  }
  var SourceMap = function () {
    function SourceMap(map, options) {
      var out = options.decodedMappings ? genMapping_umdExports.decodedMap(map) : genMapping_umdExports.encodedMap(map);
      this.version = out.version;
      this.file = out.file;
      this.mappings = out.mappings;
      this.names = out.names;
      this.sourceRoot = out.sourceRoot;
      this.sources = out.sources;
      if (!options.excludeContent) {
        this.sourcesContent = out.sourcesContent;
      }
    }
    var _proto = SourceMap.prototype;
    _proto.toString = function toString() {
      return JSON.stringify(this);
    };
    return _createClass(SourceMap);
  }();
  function remapping(input, loader, options) {
    var opts = {
      excludeContent: !!options,
      decodedMappings: false
    };
    var tree = buildSourceMapTree(input, loader);
    return new SourceMap(traceMappings(tree), opts);
  }

  function mergeSourceMap(inputMap, map, sourceFileName) {
    var source = sourceFileName.replace(/\\/g, "/");
    var found = false;
    var result = remapping(rootless(map), function (s, ctx) {
      if (s === source && !found) {
        found = true;
        ctx.source = "";
        return rootless(inputMap);
      }
      return null;
    });
    if (typeof inputMap.sourceRoot === "string") {
      result.sourceRoot = inputMap.sourceRoot;
    }
    return Object.assign({}, result);
  }
  function rootless(map) {
    return Object.assign({}, map, {
      sourceRoot: null
    });
  }

  function generateCode(pluginPasses, file) {
    var opts = file.opts,
      ast = file.ast,
      code = file.code,
      inputMap = file.inputMap;
    var generatorOpts = opts.generatorOpts;
    generatorOpts.inputSourceMap = inputMap == null ? void 0 : inputMap.toObject();
    var results = [];
    for (var _iterator = _createForOfIteratorHelperLoose(pluginPasses), _step; !(_step = _iterator()).done;) {
      var plugins = _step.value;
      for (var _iterator2 = _createForOfIteratorHelperLoose(plugins), _step2; !(_step2 = _iterator2()).done;) {
        var plugin = _step2.value;
        var generatorOverride = plugin.generatorOverride;
        if (generatorOverride) {
          var _result2 = generatorOverride(ast, generatorOpts, code, generate$1);
          if (_result2 !== undefined) results.push(_result2);
        }
      }
    }
    var result;
    if (results.length === 0) {
      result = generate$1(ast, generatorOpts, code);
    } else if (results.length === 1) {
      result = results[0];
      if (typeof result.then === "function") {
        throw new Error("You appear to be using an async codegen plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, " + "you may need to upgrade your @babel/core version.");
      }
    } else {
      throw new Error("More than one plugin attempted to override codegen.");
    }
    var _result = result,
      outputCode = _result.code,
      _result$decodedMap = _result.decodedMap,
      outputMap = _result$decodedMap === void 0 ? result.map : _result$decodedMap;
    if (result.__mergedMap) {
      outputMap = Object.assign({}, result.map);
    } else {
      if (outputMap) {
        if (inputMap) {
          outputMap = mergeSourceMap(inputMap.toObject(), outputMap, generatorOpts.sourceFileName);
        } else {
          outputMap = result.map;
        }
      }
    }
    if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") {
      outputCode += "\n" + convertSourceMap.fromObject(outputMap).toComment();
    }
    if (opts.sourceMaps === "inline") {
      outputMap = null;
    }
    return {
      outputCode: outputCode,
      outputMap: outputMap
    };
  }

  var _marked$1 = _regeneratorRuntime().mark(run$1),
    _marked2$1 = _regeneratorRuntime().mark(transformFile$1);
  function run$1(config, code, ast) {
    var file, opts, _opts$filename, outputCode, outputMap, _generateCode, _opts$filename2;
    return _regeneratorRuntime().wrap(function run$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(normalizeFile(config.passes, normalizeOptions$6(config), code, ast), "t0", 1);
        case 1:
          file = _context.t0;
          opts = file.opts;
          _context.prev = 3;
          return _context.delegateYield(transformFile$1(file, config.passes), "t1", 5);
        case 5:
          _context.next = 12;
          break;
        case 7:
          _context.prev = 7;
          _context.t2 = _context["catch"](3);
          _context.t2.message = ((_opts$filename = opts.filename) != null ? _opts$filename : "unknown file") + ": " + _context.t2.message;
          if (!_context.t2.code) {
            _context.t2.code = "BABEL_TRANSFORM_ERROR";
          }
          throw _context.t2;
        case 12:
          _context.prev = 12;
          if (opts.code !== false) {
            _generateCode = generateCode(config.passes, file);
            outputCode = _generateCode.outputCode;
            outputMap = _generateCode.outputMap;
          }
          _context.next = 21;
          break;
        case 16:
          _context.prev = 16;
          _context.t3 = _context["catch"](12);
          _context.t3.message = ((_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown file") + ": " + _context.t3.message;
          if (!_context.t3.code) {
            _context.t3.code = "BABEL_GENERATE_ERROR";
          }
          throw _context.t3;
        case 21:
          return _context.abrupt("return", {
            metadata: file.metadata,
            options: opts,
            ast: opts.ast === true ? file.ast : null,
            code: outputCode === undefined ? null : outputCode,
            map: outputMap === undefined ? null : outputMap,
            sourceType: file.ast.program.sourceType,
            externalDependencies: flattenToSet(config.externalDependencies)
          });
        case 22:
        case "end":
          return _context.stop();
      }
    }, _marked$1, null, [[3, 7], [12, 16]]);
  }
  function transformFile$1(file, pluginPasses) {
    var _iterator, _step, pluginPairs, passPairs, passes, visitors, _iterator2, _step2, _plugin2, _pass2, _i, _passPairs, _passPairs$_i, plugin, pass, fn, result, visitor, _i2, _passPairs2, _passPairs2$_i, _plugin, _pass, _fn, _result;
    return _regeneratorRuntime().wrap(function transformFile$(_context2) {
      while (1) switch (_context2.prev = _context2.next) {
        case 0:
          _iterator = _createForOfIteratorHelperLoose(pluginPasses);
        case 1:
          if ((_step = _iterator()).done) {
            _context2.next = 35;
            break;
          }
          pluginPairs = _step.value;
          passPairs = [];
          passes = [];
          visitors = [];
          for (_iterator2 = _createForOfIteratorHelperLoose(pluginPairs.concat([loadBlockHoistPlugin()])); !(_step2 = _iterator2()).done;) {
            _plugin2 = _step2.value;
            _pass2 = new PluginPass(file, _plugin2.key, _plugin2.options);
            passPairs.push([_plugin2, _pass2]);
            passes.push(_pass2);
            visitors.push(_plugin2.visitor);
          }
          _i = 0, _passPairs = passPairs;
        case 8:
          if (!(_i < _passPairs.length)) {
            _context2.next = 19;
            break;
          }
          _passPairs$_i = _slicedToArray(_passPairs[_i], 2), plugin = _passPairs$_i[0], pass = _passPairs$_i[1];
          fn = plugin.pre;
          if (!fn) {
            _context2.next = 16;
            break;
          }
          result = fn.call(pass, file);
          return _context2.delegateYield([], "t0", 14);
        case 14:
          if (!isThenable(result)) {
            _context2.next = 16;
            break;
          }
          throw new Error("You appear to be using an plugin with an async .pre, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
        case 16:
          _i++;
          _context2.next = 8;
          break;
        case 19:
          visitor = traverse.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod);
          traverse(file.ast, visitor, file.scope);
          _i2 = 0, _passPairs2 = passPairs;
        case 22:
          if (!(_i2 < _passPairs2.length)) {
            _context2.next = 33;
            break;
          }
          _passPairs2$_i = _slicedToArray(_passPairs2[_i2], 2), _plugin = _passPairs2$_i[0], _pass = _passPairs2$_i[1];
          _fn = _plugin.post;
          if (!_fn) {
            _context2.next = 30;
            break;
          }
          _result = _fn.call(_pass, file);
          return _context2.delegateYield([], "t1", 28);
        case 28:
          if (!isThenable(_result)) {
            _context2.next = 30;
            break;
          }
          throw new Error("You appear to be using an plugin with an async .post, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
        case 30:
          _i2++;
          _context2.next = 22;
          break;
        case 33:
          _context2.next = 1;
          break;
        case 35:
        case "end":
          return _context2.stop();
      }
    }, _marked2$1);
  }
  function isThenable(val) {
    return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
  }

  var transformRunner = gensync(_regeneratorRuntime().mark(function transform(code, opts) {
    var config;
    return _regeneratorRuntime().wrap(function transform$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(loadConfig(opts), "t0", 1);
        case 1:
          config = _context.t0;
          if (!(config === null)) {
            _context.next = 4;
            break;
          }
          return _context.abrupt("return", null);
        case 4:
          return _context.delegateYield(run$1(config, code), "t1", 5);
        case 5:
          return _context.abrupt("return", _context.t1);
        case 6:
        case "end":
          return _context.stop();
      }
    }, transform);
  }));
  var transform$3 = function transform(code, optsOrCallback, maybeCallback) {
    var opts;
    var callback;
    if (typeof optsOrCallback === "function") {
      callback = optsOrCallback;
      opts = undefined;
    } else {
      opts = optsOrCallback;
      callback = maybeCallback;
    }
    if (callback === undefined) {
      {
        return beginHiddenCallStack(transformRunner.sync)(code, opts);
      }
    }
    beginHiddenCallStack(transformRunner.errback)(code, opts, callback);
  };
  function transformSync() {
    return beginHiddenCallStack(transformRunner.sync).apply(void 0, arguments);
  }
  function transformAsync() {
    return beginHiddenCallStack(transformRunner.async).apply(void 0, arguments);
  }

  var transformFile = function transformFile(filename, opts, callback) {
    if (typeof opts === "function") {
      callback = opts;
    }
    callback(new Error("Transforming files is not supported in browsers"), null);
  };
  function transformFileSync() {
    throw new Error("Transforming files is not supported in browsers");
  }
  function transformFileAsync() {
    return Promise.reject(new Error("Transforming files is not supported in browsers"));
  }

  var transformFromAstRunner = gensync(_regeneratorRuntime().mark(function _callee(ast, code, opts) {
    var config;
    return _regeneratorRuntime().wrap(function _callee$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(loadConfig(opts), "t0", 1);
        case 1:
          config = _context.t0;
          if (!(config === null)) {
            _context.next = 4;
            break;
          }
          return _context.abrupt("return", null);
        case 4:
          if (ast) {
            _context.next = 6;
            break;
          }
          throw new Error("No AST given");
        case 6:
          return _context.delegateYield(run$1(config, code, ast), "t1", 7);
        case 7:
          return _context.abrupt("return", _context.t1);
        case 8:
        case "end":
          return _context.stop();
      }
    }, _callee);
  }));
  var transformFromAst$1 = function transformFromAst(ast, code, optsOrCallback, maybeCallback) {
    var opts;
    var callback;
    if (typeof optsOrCallback === "function") {
      callback = optsOrCallback;
      opts = undefined;
    } else {
      opts = optsOrCallback;
      callback = maybeCallback;
    }
    if (callback === undefined) {
      {
        return beginHiddenCallStack(transformFromAstRunner.sync)(ast, code, opts);
      }
    }
    beginHiddenCallStack(transformFromAstRunner.errback)(ast, code, opts, callback);
  };
  function transformFromAstSync() {
    return beginHiddenCallStack(transformFromAstRunner.sync).apply(void 0, arguments);
  }
  function transformFromAstAsync() {
    return beginHiddenCallStack(transformFromAstRunner.async).apply(void 0, arguments);
  }

  var parseRunner = gensync(_regeneratorRuntime().mark(function parse(code, opts) {
    var config;
    return _regeneratorRuntime().wrap(function parse$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          return _context.delegateYield(loadConfig(opts), "t0", 1);
        case 1:
          config = _context.t0;
          if (!(config === null)) {
            _context.next = 4;
            break;
          }
          return _context.abrupt("return", null);
        case 4:
          return _context.delegateYield(parser$1(config.passes, normalizeOptions$6(config), code), "t1", 5);
        case 5:
          return _context.abrupt("return", _context.t1);
        case 6:
        case "end":
          return _context.stop();
      }
    }, parse);
  }));
  var parse$1 = function parse(code, opts, callback) {
    if (typeof opts === "function") {
      callback = opts;
      opts = undefined;
    }
    if (callback === undefined) {
      {
        return beginHiddenCallStack(parseRunner.sync)(code, opts);
      }
    }
    beginHiddenCallStack(parseRunner.errback)(code, opts, callback);
  };
  function parseSync() {
    return beginHiddenCallStack(parseRunner.sync).apply(void 0, arguments);
  }
  function parseAsync() {
    return beginHiddenCallStack(parseRunner.async).apply(void 0, arguments);
  }

  var version$1 = "7.25.2";
  var DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]);
  {
    exports.OptionManager = function () {
      function OptionManager() {}
      var _proto = OptionManager.prototype;
      _proto.init = function init(opts) {
        return loadOptionsSync(opts);
      };
      return _createClass(OptionManager);
    }();
    exports.Plugin = function Plugin(alias) {
      throw new Error("The (" + alias + ") Babel 5 plugin is being run with an unsupported Babel version.");
    };
  }

  function makeNoopPlugin() {
    var p;
    return (p = function p() {
      return {};
    })["default"] = p;
  }

  function declare(x) {
    return x;
  }

  var pluginUtilsShim = /*#__PURE__*/Object.freeze({
    __proto__: null,
    declare: declare,
    declarePreset: declare
  });

  var externalHelpers = declare(function (api, options) {
    api.assertVersion("*");
    var _options$helperVersio = options.helperVersion,
      helperVersion = _options$helperVersio === void 0 ? "7.0.0-beta.0" : _options$helperVersio,
      _options$whitelist = options.whitelist,
      whitelist = _options$whitelist === void 0 ? false : _options$whitelist;
    if (whitelist !== false && (!Array.isArray(whitelist) || whitelist.some(function (w) {
      return typeof w !== "string";
    }))) {
      throw new Error(".whitelist must be undefined, false, or an array of strings");
    }
    var helperWhitelist = whitelist ? new Set(whitelist) : null;
    return {
      name: "external-helpers",
      pre: function pre(file) {
        file.set("helperGenerator", function (name) {
          if (file.availableHelper && !file.availableHelper(name, helperVersion)) {
            return;
          }
          if (helperWhitelist && !helperWhitelist.has(name)) return;
          return memberExpression$a(identifier$e("babelHelpers"), identifier$e(name));
        });
      }
    };
  });

  var syntaxDecimal = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-decimal",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("decimal");
      }
    };
  });

  var syntaxDecorators = declare(function (api, options) {
    api.assertVersion("*");
    var version = options.version;
    {
      var legacy = options.legacy;
      if (legacy !== undefined) {
        if (typeof legacy !== "boolean") {
          throw new Error(".legacy must be a boolean.");
        }
        if (version !== undefined) {
          throw new Error("You can either use the .legacy or the .version option, not both.");
        }
      }
      if (version === undefined) {
        version = legacy ? "legacy" : "2018-09";
      } else if (version !== "2023-11" && version !== "2023-05" && version !== "2023-01" && version !== "2022-03" && version !== "2021-12" && version !== "2018-09" && version !== "legacy") {
        throw new Error("Unsupported decorators version: " + version);
      }
      var decoratorsBeforeExport = options.decoratorsBeforeExport;
      if (decoratorsBeforeExport === undefined) {
        if (version === "2021-12" || version === "2022-03") {
          decoratorsBeforeExport = false;
        } else if (version === "2018-09") {
          throw new Error("The decorators plugin, when .version is '2018-09' or not specified," + " requires a 'decoratorsBeforeExport' option, whose value must be a boolean.");
        }
      } else {
        if (version === "legacy" || version === "2022-03" || version === "2023-01") {
          throw new Error("'decoratorsBeforeExport' can't be used with " + version + " decorators.");
        }
        if (typeof decoratorsBeforeExport !== "boolean") {
          throw new Error("'decoratorsBeforeExport' must be a boolean.");
        }
      }
    }
    return {
      name: "syntax-decorators",
      manipulateOptions: function manipulateOptions(_ref, parserOpts) {
        var generatorOpts = _ref.generatorOpts;
        if (version === "legacy") {
          parserOpts.plugins.push("decorators-legacy");
        } else {
          if (version === "2023-01" || version === "2023-05" || version === "2023-11") {
            parserOpts.plugins.push(["decorators", {
              allowCallParenthesized: false
            }], "decoratorAutoAccessors");
          } else if (version === "2022-03") {
            parserOpts.plugins.push(["decorators", {
              decoratorsBeforeExport: false,
              allowCallParenthesized: false
            }], "decoratorAutoAccessors");
          } else if (version === "2021-12") {
            parserOpts.plugins.push(["decorators", {
              decoratorsBeforeExport: decoratorsBeforeExport
            }], "decoratorAutoAccessors");
            generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
          } else if (version === "2018-09") {
            parserOpts.plugins.push(["decorators", {
              decoratorsBeforeExport: decoratorsBeforeExport
            }]);
            generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
          }
        }
      }
    };
  });

  var syntaxDestructuringPrivate = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-destructuring-private",
      manipulateOptions: function manipulateOptions(_, parserOpts) {
        parserOpts.plugins.push("destructuringPrivate");
      }
    };
  });

  var syntaxDoExpressions = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-do-expressions",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("doExpressions");
      }
    };
  });

  var syntaxExplicitResourceManagement = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-explicit-resource-management",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("explicitResourceManagement");
      }
    };
  });

  var syntaxExportDefaultFrom = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-export-default-from",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("exportDefaultFrom");
      }
    };
  });

  var syntaxFlow = declare(function (api, options) {
    api.assertVersion("*");
    var all = options.all,
      enums = options.enums;
    if (typeof all !== "boolean" && typeof all !== "undefined") {
      throw new Error(".all must be a boolean, or undefined");
    }
    if (typeof enums !== "boolean" && typeof enums !== "undefined") {
      throw new Error(".enums must be a boolean, or undefined");
    }
    return {
      name: "syntax-flow",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          if (parserOpts.plugins.some(function (p) {
            return (Array.isArray(p) ? p[0] : p) === "typescript";
          })) {
            return;
          }
        }
        parserOpts.plugins.push(["flow", {
          all: all,
          enums: enums
        }]);
      }
    };
  });

  var syntaxFunctionBind = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-function-bind",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("functionBind");
      }
    };
  });

  var syntaxFunctionSent = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-function-sent",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("functionSent");
      }
    };
  });

  var _syntaxImportAssertions = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-import-assertions",
      manipulateOptions: function manipulateOptions(opts, _ref) {
        var plugins = _ref.plugins;
        for (var i = 0; i < plugins.length; i++) {
          var plugin = plugins[i];
          if (plugin === "importAttributes") {
            plugins[i] = ["importAttributes", {
              deprecatedAssertSyntax: true
            }];
            return;
          }
          if (Array.isArray(plugin) && plugin[0] === "importAttributes") {
            if (plugin.length < 2) plugins[i].push({});
            plugin[1].deprecatedAssertSyntax = true;
            return;
          }
        }
        plugins.push("importAssertions");
      }
    };
  });

  var _syntaxImportAttributes = declare(function (api, _ref) {
    var deprecatedAssertSyntax = _ref.deprecatedAssertSyntax;
    api.assertVersion("*");
    if (deprecatedAssertSyntax != null && typeof deprecatedAssertSyntax !== "boolean") {
      throw new Error("'deprecatedAssertSyntax' must be a boolean, if specified.");
    }
    return {
      name: "syntax-import-attributes",
      manipulateOptions: function manipulateOptions(_ref2) {
        var _generatorOpts$import;
        var parserOpts = _ref2.parserOpts,
          generatorOpts = _ref2.generatorOpts;
        (_generatorOpts$import = generatorOpts.importAttributesKeyword) != null ? _generatorOpts$import : generatorOpts.importAttributesKeyword = "with";
        var importAssertionsPluginIndex = parserOpts.plugins.indexOf("importAssertions");
        if (importAssertionsPluginIndex !== -1) {
          parserOpts.plugins.splice(importAssertionsPluginIndex, 1);
          deprecatedAssertSyntax = true;
        }
        parserOpts.plugins.push(["importAttributes", {
          deprecatedAssertSyntax: Boolean(deprecatedAssertSyntax)
        }]);
      }
    };
  });

  var syntaxImportReflection = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-import-reflection",
      manipulateOptions: function manipulateOptions(_, parserOpts) {
        parserOpts.plugins.push("importReflection");
      }
    };
  });

  var syntaxJsx = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-jsx",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          if (parserOpts.plugins.some(function (p) {
            return (Array.isArray(p) ? p[0] : p) === "typescript";
          })) {
            return;
          }
        }
        parserOpts.plugins.push("jsx");
      }
    };
  });

  var syntaxModuleBlocks = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-module-blocks",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("moduleBlocks");
      }
    };
  });

  var v$3 = new OptionValidator("@babel/plugin-syntax-optional-chaining-assign");
  var syntaxOptionalChainingAssign = declare(function (api, options) {
    api.assertVersion("*");
    v$3.validateTopLevelOptions(options, {
      version: "version"
    });
    var version = options.version;
    v$3.invariant(version === "2023-07", "'.version' option required, representing the last proposal update. " + "Currently, the only supported value is '2023-07'.");
    return {
      name: "syntax-optional-chaining-assign",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push(["optionalChainingAssign", {
          version: version
        }]);
      }
    };
  });

  var PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];
  var TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"];
  var documentationURL = "https://babeljs.io/docs/en/babel-plugin-proposal-pipeline-operator";
  var syntaxPipelineOperator = declare(function (api, _ref) {
    var proposal = _ref.proposal,
      topicToken = _ref.topicToken;
    api.assertVersion("*");
    if (typeof proposal !== "string" || !PIPELINE_PROPOSALS.includes(proposal)) {
      var proposalList = PIPELINE_PROPOSALS.map(function (p) {
        return "\"" + p + "\"";
      }).join(", ");
      throw new Error("The pipeline plugin requires a \"proposal\" option. \"proposal\" must be one of: " + proposalList + ". See <" + documentationURL + ">.");
    }
    if (proposal === "hack" && !TOPIC_TOKENS.includes(topicToken)) {
      var topicTokenList = TOPIC_TOKENS.map(function (t) {
        return "\"" + t + "\"";
      }).join(", ");
      throw new Error("The pipeline plugin in \"proposal\": \"hack\" mode also requires a \"topicToken\" option. \"topicToken\" must be one of: " + topicTokenList + ". See <" + documentationURL + ">.");
    }
    return {
      name: "syntax-pipeline-operator",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push(["pipelineOperator", {
          proposal: proposal,
          topicToken: topicToken
        }]);
        opts.generatorOpts.topicToken = topicToken;
      }
    };
  });

  var syntaxRecordAndTuple = declare(function (api, options) {
    api.assertVersion("*");
    return {
      name: "syntax-record-and-tuple",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          opts.generatorOpts.recordAndTupleSyntaxType = options.syntaxType;
          parserOpts.plugins.push(["recordAndTuple", {
            syntaxType: options.syntaxType
          }]);
        }
      }
    };
  });

  {
    var removePlugin = function removePlugin(plugins, name) {
      var indices = [];
      plugins.forEach(function (plugin, i) {
        var n = Array.isArray(plugin) ? plugin[0] : plugin;
        if (n === name) {
          indices.unshift(i);
        }
      });
      for (var _i = 0, _indices = indices; _i < _indices.length; _i++) {
        var i = _indices[_i];
        plugins.splice(i, 1);
      }
    };
  }
  var syntaxTypescript = declare(function (api, opts) {
    api.assertVersion("*");
    var disallowAmbiguousJSXLike = opts.disallowAmbiguousJSXLike,
      dts = opts.dts;
    {
      var isTSX = opts.isTSX;
    }
    return {
      name: "syntax-typescript",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          var plugins = parserOpts.plugins;
          removePlugin(plugins, "flow");
          removePlugin(plugins, "jsx");
          {
            plugins.push("objectRestSpread", "classProperties");
          }
          if (isTSX) {
            plugins.push("jsx");
          }
        }
        parserOpts.plugins.push(["typescript", {
          disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
          dts: dts
        }]);
      }
    };
  });

  var blockStatement = blockStatement$6,
    callExpression$5 = callExpression$c,
    functionExpression = functionExpression$2,
    isAssignmentPattern$1 = isAssignmentPattern$4,
    isFunctionDeclaration = isFunctionDeclaration$2,
    isRestElement = isRestElement$2,
    returnStatement = returnStatement$3,
    isCallExpression = isCallExpression$8;
  var buildAnonymousExpressionWrapper = template$1.expression("\n  (function () {\n    var REF = FUNCTION;\n    return function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    };\n  })()\n");
  var buildNamedExpressionWrapper = template$1.expression("\n  (function () {\n    var REF = FUNCTION;\n    function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    }\n    return NAME;\n  })()\n");
  var buildDeclarationWrapper = template$1.statements("\n  function NAME(PARAMS) { return REF.apply(this, arguments); }\n  function REF() {\n    REF = FUNCTION;\n    return REF.apply(this, arguments);\n  }\n");
  function classOrObjectMethod(path, callId) {
    var node = path.node;
    var body = node.body;
    var container = functionExpression(null, [], blockStatement(body.body), true);
    body.body = [returnStatement(callExpression$5(callExpression$5(callId, [container]), []))];
    node.async = false;
    node.generator = false;
    path.get("body.body.0.argument.callee.arguments.0").unwrapFunctionEnvironment();
  }
  function plainFunction(inPath, callId, noNewArrows, ignoreFunctionLength, hadName) {
    var path = inPath;
    var node;
    var functionId = null;
    var nodeParams = inPath.node.params;
    if (path.isArrowFunctionExpression()) {
      {
        var _path$arrowFunctionTo;
        path = (_path$arrowFunctionTo = path.arrowFunctionToExpression({
          noNewArrows: noNewArrows
        })) != null ? _path$arrowFunctionTo : path;
      }
      node = path.node;
    } else {
      node = path.node;
    }
    var isDeclaration = isFunctionDeclaration(node);
    var built = node;
    if (!isCallExpression(node)) {
      functionId = node.id;
      node.id = null;
      node.type = "FunctionExpression";
      built = callExpression$5(callId, [node]);
    }
    var params = [];
    for (var _iterator = _createForOfIteratorHelperLoose(nodeParams), _step; !(_step = _iterator()).done;) {
      var param = _step.value;
      if (isAssignmentPattern$1(param) || isRestElement(param)) {
        break;
      }
      params.push(path.scope.generateUidIdentifier("x"));
    }
    var wrapperArgs = {
      NAME: functionId || null,
      REF: path.scope.generateUidIdentifier(hadName ? functionId.name : "ref"),
      FUNCTION: built,
      PARAMS: params
    };
    if (isDeclaration) {
      var container = buildDeclarationWrapper(wrapperArgs);
      path.replaceWith(container[0]);
      path.insertAfter(container[1]);
    } else {
      var _container;
      if (hadName) {
        _container = buildNamedExpressionWrapper(wrapperArgs);
      } else {
        _container = buildAnonymousExpressionWrapper(wrapperArgs);
      }
      if (functionId || !ignoreFunctionLength && params.length) {
        path.replaceWith(_container);
      } else {
        path.replaceWith(built);
      }
    }
  }
  function wrapFunction(path, callId, noNewArrows, ignoreFunctionLength) {
    if (noNewArrows === void 0) {
      noNewArrows = true;
    }
    if (ignoreFunctionLength === void 0) {
      ignoreFunctionLength = false;
    }
    if (path.isMethod()) {
      classOrObjectMethod(path, callId);
    } else {
      var hadName = "id" in path.node && !!path.node.id;
      path = path.ensureFunctionName(false);
      plainFunction(path, callId, noNewArrows, ignoreFunctionLength, hadName);
    }
  }

  var addComment = addComment$2;
  var PURE_ANNOTATION = "#__PURE__";
  var isPureAnnotated = function isPureAnnotated(_ref) {
    var leadingComments = _ref.leadingComments;
    return !!leadingComments && leadingComments.some(function (comment) {
      return /[@#]__PURE__/.test(comment.value);
    });
  };
  function annotateAsPure(pathOrNode) {
    var node = pathOrNode["node"] || pathOrNode;
    if (isPureAnnotated(node)) {
      return;
    }
    addComment(node, "leading", PURE_ANNOTATION);
  }

  var callExpression$4 = callExpression$c,
    cloneNode$4 = cloneNode$g,
    isIdentifier$3 = isIdentifier$f,
    isThisExpression = isThisExpression$2,
    yieldExpression = yieldExpression$2;
  var awaitVisitor$1 = environmentVisitor({
    ArrowFunctionExpression: function ArrowFunctionExpression(path) {
      path.skip();
    },
    AwaitExpression: function AwaitExpression(path, _ref) {
      var wrapAwait = _ref.wrapAwait;
      var argument = path.get("argument");
      path.replaceWith(yieldExpression(wrapAwait ? callExpression$4(cloneNode$4(wrapAwait), [argument.node]) : argument.node));
    }
  });
  function remapAsyncToGenerator (path, helpers, noNewArrows, ignoreFunctionLength) {
    path.traverse(awaitVisitor$1, {
      wrapAwait: helpers.wrapAwait
    });
    var isIIFE = checkIsIIFE(path);
    path.node.async = false;
    path.node.generator = true;
    wrapFunction(path, cloneNode$4(helpers.wrapAsync), noNewArrows, ignoreFunctionLength);
    var isProperty = path.isObjectMethod() || path.isClassMethod() || path.parentPath.isObjectProperty() || path.parentPath.isClassProperty();
    if (!isProperty && !isIIFE && path.isExpression()) {
      annotateAsPure(path);
    }
    function checkIsIIFE(path) {
      if (path.parentPath.isCallExpression({
        callee: path.node
      })) {
        return true;
      }
      var parentPath = path.parentPath;
      if (parentPath.isMemberExpression() && isIdentifier$3(parentPath.node.property, {
        name: "bind"
      })) {
        var bindCall = parentPath.parentPath;
        return bindCall.isCallExpression() && bindCall.node.arguments.length === 1 && isThisExpression(bindCall.node.arguments[0]) && bindCall.parentPath.isCallExpression({
          callee: bindCall.node
        });
      }
      return false;
    }
  }

  var buildForAwait = template$1("\n  async function wrapper() {\n    var ITERATOR_ABRUPT_COMPLETION = false;\n    var ITERATOR_HAD_ERROR_KEY = false;\n    var ITERATOR_ERROR_KEY;\n    try {\n      for (\n        var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY;\n        ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done;\n        ITERATOR_ABRUPT_COMPLETION = false\n      ) {\n      }\n    } catch (err) {\n      ITERATOR_HAD_ERROR_KEY = true;\n      ITERATOR_ERROR_KEY = err;\n    } finally {\n      try {\n        if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) {\n          await ITERATOR_KEY.return();\n        }\n      } finally {\n        if (ITERATOR_HAD_ERROR_KEY) {\n          throw ITERATOR_ERROR_KEY;\n        }\n      }\n    }\n  }\n");
  function rewriteForAwait (path, _ref) {
    var getAsyncIterator = _ref.getAsyncIterator;
    var node = path.node,
      scope = path.scope,
      parent = path.parent;
    var stepKey = scope.generateUidIdentifier("step");
    var stepValue = memberExpression$a(stepKey, identifier$e("value"));
    var left = node.left;
    var declar;
    if (isIdentifier$f(left) || isPattern(left) || isMemberExpression$8(left)) {
      declar = expressionStatement$7(assignmentExpression$b("=", left, stepValue));
    } else if (isVariableDeclaration$3(left)) {
      declar = variableDeclaration$6(left.kind, [variableDeclarator$6(left.declarations[0].id, stepValue)]);
    }
    var template = buildForAwait({
      ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
      ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier("iteratorAbruptCompletion"),
      ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
      ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
      GET_ITERATOR: getAsyncIterator,
      OBJECT: node.right,
      STEP_KEY: cloneNode$g(stepKey)
    });
    template = template.body.body;
    var isLabeledParent = isLabeledStatement(parent);
    var tryBody = template[3].block.body;
    var loop = tryBody[0];
    if (isLabeledParent) {
      tryBody[0] = labeledStatement(parent.label, loop);
    }
    return {
      replaceParent: isLabeledParent,
      node: template,
      declar: declar,
      loop: loop
    };
  }

  var _transformAsyncGeneratorFunctions = declare(function (api) {
    api.assertVersion("*");
    var yieldStarVisitor = environmentVisitor({
      ArrowFunctionExpression: function ArrowFunctionExpression(path) {
        path.skip();
      },
      YieldExpression: function YieldExpression(_ref, state) {
        var node = _ref.node;
        if (!node.delegate) return;
        var asyncIter = callExpression$c(state.addHelper("asyncIterator"), [node.argument]);
        node.argument = callExpression$c(state.addHelper("asyncGeneratorDelegate"), [asyncIter, state.addHelper("awaitAsyncGenerator")]);
      }
    });
    var forAwaitVisitor = environmentVisitor({
      ArrowFunctionExpression: function ArrowFunctionExpression(path) {
        path.skip();
      },
      ForOfStatement: function ForOfStatement(path, _ref2) {
        var file = _ref2.file;
        var node = path.node;
        if (!node["await"]) return;
        var build = rewriteForAwait(path, {
          getAsyncIterator: file.addHelper("asyncIterator")
        });
        var declar = build.declar,
          loop = build.loop;
        var block = loop.body;
        path.ensureBlock();
        if (declar) {
          block.body.push(declar);
          if (path.node.body.body.length) {
            block.body.push(blockStatement$6(path.node.body.body));
          }
        } else {
          var _block$body;
          (_block$body = block.body).push.apply(_block$body, _toConsumableArray(path.node.body.body));
        }
        inherits$3(loop, node);
        inherits$3(loop.body, node.body);
        var p = build.replaceParent ? path.parentPath : path;
        p.replaceWithMultiple(build.node);
        p.scope.parent.crawl();
      }
    });
    var visitor = {
      Function: function Function(path, state) {
        if (!path.node.async) return;
        path.traverse(forAwaitVisitor, state);
        if (!path.node.generator) return;
        path.traverse(yieldStarVisitor, state);
        remapAsyncToGenerator(path, {
          wrapAsync: state.addHelper("wrapAsyncGenerator"),
          wrapAwait: state.addHelper("awaitAsyncGenerator")
        });
      }
    };
    return {
      name: "transform-async-generator-functions",
      inherits: undefined,
      visitor: {
        Program: function Program(path, state) {
          path.traverse(visitor, state);
        }
      }
    };
  });

  function willPathCastToBoolean$1(path) {
    var maybeWrapped = path;
    var node = maybeWrapped.node,
      parentPath = maybeWrapped.parentPath;
    if (parentPath.isLogicalExpression()) {
      var _parentPath$node = parentPath.node,
        operator = _parentPath$node.operator,
        right = _parentPath$node.right;
      if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
        return willPathCastToBoolean$1(parentPath);
      }
    }
    if (parentPath.isSequenceExpression()) {
      var expressions = parentPath.node.expressions;
      if (expressions[expressions.length - 1] === node) {
        return willPathCastToBoolean$1(parentPath);
      } else {
        return true;
      }
    }
    return parentPath.isConditional({
      test: node
    }) || parentPath.isUnaryExpression({
      operator: "!"
    }) || parentPath.isLoop({
      test: node
    });
  }

  var LOGICAL_OPERATORS = LOGICAL_OPERATORS$3,
    arrowFunctionExpression = arrowFunctionExpression$4,
    assignmentExpression$4 = assignmentExpression$b,
    binaryExpression$1 = binaryExpression$5,
    booleanLiteral$1 = booleanLiteral$2,
    callExpression$3 = callExpression$c,
    cloneNode$3 = cloneNode$g,
    conditionalExpression$1 = conditionalExpression$5,
    identifier$3 = identifier$e,
    isMemberExpression$1 = isMemberExpression$8,
    isOptionalCallExpression = isOptionalCallExpression$2,
    isOptionalMemberExpression = isOptionalMemberExpression$3,
    isUpdateExpression = isUpdateExpression$1,
    logicalExpression = logicalExpression$3,
    memberExpression$5 = memberExpression$a,
    nullLiteral$1 = nullLiteral$2,
    optionalCallExpression$1 = optionalCallExpression$2,
    optionalMemberExpression$1 = optionalMemberExpression$2,
    sequenceExpression$2 = sequenceExpression$8,
    updateExpression = updateExpression$1;
  var AssignmentMemoiser = function () {
    function AssignmentMemoiser() {
      this._map = void 0;
      this._map = new WeakMap();
    }
    var _proto = AssignmentMemoiser.prototype;
    _proto.has = function has(key) {
      return this._map.has(key);
    };
    _proto.get = function get(key) {
      if (!this.has(key)) return;
      var record = this._map.get(key);
      var value = record.value;
      record.count--;
      if (record.count === 0) {
        return assignmentExpression$4("=", value, key);
      }
      return value;
    };
    _proto.set = function set(key, value, count) {
      return this._map.set(key, {
        count: count,
        value: value
      });
    };
    return _createClass(AssignmentMemoiser);
  }();
  function toNonOptional(path, base) {
    var node = path.node;
    if (isOptionalMemberExpression(node)) {
      return memberExpression$5(base, node.property, node.computed);
    }
    if (path.isOptionalCallExpression()) {
      var callee = path.get("callee");
      if (path.node.optional && callee.isOptionalMemberExpression()) {
        var object = callee.node.object;
        var context = path.scope.maybeGenerateMemoised(object);
        callee.get("object").replaceWith(assignmentExpression$4("=", context, object));
        return callExpression$3(memberExpression$5(base, identifier$3("call")), [context].concat(_toConsumableArray(path.node.arguments)));
      }
      return callExpression$3(base, path.node.arguments);
    }
    return path.node;
  }
  function isInDetachedTree(path) {
    while (path) {
      if (path.isProgram()) break;
      var _path = path,
        parentPath = _path.parentPath,
        container = _path.container,
        listKey = _path.listKey;
      var parentNode = parentPath.node;
      if (listKey) {
        if (container !== parentNode[listKey]) {
          return true;
        }
      } else {
        if (container !== parentNode) return true;
      }
      path = parentPath;
    }
    return false;
  }
  var handle = {
    memoise: function memoise() {},
    handle: function handle(member, noDocumentAll) {
      var node = member.node,
        parent = member.parent,
        parentPath = member.parentPath,
        scope = member.scope;
      if (member.isOptionalMemberExpression()) {
        if (isInDetachedTree(member)) return;
        var endPath = member.find(function (_ref) {
          var node = _ref.node,
            parent = _ref.parent;
          if (isOptionalMemberExpression(parent)) {
            return parent.optional || parent.object !== node;
          }
          if (isOptionalCallExpression(parent)) {
            return node !== member.node && parent.optional || parent.callee !== node;
          }
          return true;
        });
        if (scope.path.isPattern()) {
          endPath.replaceWith(callExpression$3(arrowFunctionExpression([], endPath.node), []));
          return;
        }
        var willEndPathCastToBoolean = willPathCastToBoolean$1(endPath);
        var rootParentPath = endPath.parentPath;
        if (rootParentPath.isUpdateExpression({
          argument: node
        })) {
          throw member.buildCodeFrameError("can't handle update expression");
        }
        var isAssignment = rootParentPath.isAssignmentExpression({
          left: endPath.node
        });
        var isDeleteOperation = rootParentPath.isUnaryExpression({
          operator: "delete"
        });
        if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) {
          throw member.buildCodeFrameError("can't delete a private class element");
        }
        var startingOptional = member;
        for (;;) {
          if (startingOptional.isOptionalMemberExpression()) {
            if (startingOptional.node.optional) break;
            startingOptional = startingOptional.get("object");
            continue;
          } else if (startingOptional.isOptionalCallExpression()) {
            if (startingOptional.node.optional) break;
            startingOptional = startingOptional.get("callee");
            continue;
          }
          throw new Error("Internal error: unexpected " + startingOptional.node.type);
        }
        var startingNode = startingOptional.isOptionalMemberExpression() ? startingOptional.node.object : startingOptional.node.callee;
        var baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);
        var baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode;
        var parentIsOptionalCall = parentPath.isOptionalCallExpression({
          callee: node
        });
        var isOptionalCall = function isOptionalCall(parent) {
          return parentIsOptionalCall;
        };
        var parentIsCall = parentPath.isCallExpression({
          callee: node
        });
        startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));
        if (isOptionalCall(parent)) {
          if (parent.optional) {
            parentPath.replaceWith(this.optionalCall(member, parent.arguments));
          } else {
            parentPath.replaceWith(this.call(member, parent.arguments));
          }
        } else if (parentIsCall) {
          member.replaceWith(this.boundGet(member));
        } else if (this["delete"] && parentPath.isUnaryExpression({
          operator: "delete"
        })) {
          parentPath.replaceWith(this["delete"](member));
        } else if (parentPath.isAssignmentExpression()) {
          handleAssignment(this, member, parentPath);
        } else {
          member.replaceWith(this.get(member));
        }
        var regular = member.node;
        for (var current = member; current !== endPath;) {
          var _parentPath = current.parentPath;
          if (_parentPath === endPath && isOptionalCall(parent) && parent.optional) {
            regular = _parentPath.node;
            break;
          }
          regular = toNonOptional(_parentPath, regular);
          current = _parentPath;
        }
        var context;
        var endParentPath = endPath.parentPath;
        if (isMemberExpression$1(regular) && endParentPath.isOptionalCallExpression({
          callee: endPath.node,
          optional: true
        })) {
          var _regular = regular,
            object = _regular.object;
          context = member.scope.maybeGenerateMemoised(object);
          if (context) {
            regular.object = assignmentExpression$4("=", context, object);
          }
        }
        var replacementPath = endPath;
        if (isDeleteOperation || isAssignment) {
          replacementPath = endParentPath;
          regular = endParentPath.node;
        }
        var baseMemoised = baseNeedsMemoised ? assignmentExpression$4("=", cloneNode$3(baseRef), cloneNode$3(startingNode)) : cloneNode$3(baseRef);
        if (willEndPathCastToBoolean) {
          var nonNullishCheck;
          if (noDocumentAll) {
            nonNullishCheck = binaryExpression$1("!=", baseMemoised, nullLiteral$1());
          } else {
            nonNullishCheck = logicalExpression("&&", binaryExpression$1("!==", baseMemoised, nullLiteral$1()), binaryExpression$1("!==", cloneNode$3(baseRef), scope.buildUndefinedNode()));
          }
          replacementPath.replaceWith(logicalExpression("&&", nonNullishCheck, regular));
        } else {
          var nullishCheck;
          if (noDocumentAll) {
            nullishCheck = binaryExpression$1("==", baseMemoised, nullLiteral$1());
          } else {
            nullishCheck = logicalExpression("||", binaryExpression$1("===", baseMemoised, nullLiteral$1()), binaryExpression$1("===", cloneNode$3(baseRef), scope.buildUndefinedNode()));
          }
          replacementPath.replaceWith(conditionalExpression$1(nullishCheck, isDeleteOperation ? booleanLiteral$1(true) : scope.buildUndefinedNode(), regular));
        }
        if (context) {
          var endParent = endParentPath.node;
          endParentPath.replaceWith(optionalCallExpression$1(optionalMemberExpression$1(endParent.callee, identifier$3("call"), false, true), [cloneNode$3(context)].concat(_toConsumableArray(endParent.arguments)), false));
        }
        return;
      }
      if (isUpdateExpression(parent, {
        argument: node
      })) {
        if (this.simpleSet) {
          member.replaceWith(this.simpleSet(member));
          return;
        }
        var operator = parent.operator,
          prefix = parent.prefix;
        this.memoise(member, 2);
        var ref = scope.generateUidIdentifierBasedOnNode(node);
        scope.push({
          id: ref
        });
        var seq = [assignmentExpression$4("=", cloneNode$3(ref), this.get(member))];
        if (prefix) {
          seq.push(updateExpression(operator, cloneNode$3(ref), prefix));
          var _value = sequenceExpression$2(seq);
          parentPath.replaceWith(this.set(member, _value));
          return;
        } else {
          var ref2 = scope.generateUidIdentifierBasedOnNode(node);
          scope.push({
            id: ref2
          });
          seq.push(assignmentExpression$4("=", cloneNode$3(ref2), updateExpression(operator, cloneNode$3(ref), prefix)), cloneNode$3(ref));
          var _value2 = sequenceExpression$2(seq);
          parentPath.replaceWith(sequenceExpression$2([this.set(member, _value2), cloneNode$3(ref2)]));
          return;
        }
      }
      if (parentPath.isAssignmentExpression({
        left: node
      })) {
        handleAssignment(this, member, parentPath);
        return;
      }
      if (parentPath.isCallExpression({
        callee: node
      })) {
        parentPath.replaceWith(this.call(member, parentPath.node.arguments));
        return;
      }
      if (parentPath.isOptionalCallExpression({
        callee: node
      })) {
        if (scope.path.isPattern()) {
          parentPath.replaceWith(callExpression$3(arrowFunctionExpression([], parentPath.node), []));
          return;
        }
        parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments));
        return;
      }
      if (this["delete"] && parentPath.isUnaryExpression({
        operator: "delete"
      })) {
        parentPath.replaceWith(this["delete"](member));
        return;
      }
      if (parentPath.isForXStatement({
        left: node
      }) || parentPath.isObjectProperty({
        value: node
      }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({
        left: node
      }) && parentPath.parentPath.isObjectProperty({
        value: parent
      }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({
        left: node
      }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) {
        member.replaceWith(this.destructureSet(member));
        return;
      }
      if (parentPath.isTaggedTemplateExpression()) {
        member.replaceWith(this.boundGet(member));
      } else {
        member.replaceWith(this.get(member));
      }
    }
  };
  function handleAssignment(state, member, parentPath) {
    if (state.simpleSet) {
      member.replaceWith(state.simpleSet(member));
      return;
    }
    var _parentPath$node = parentPath.node,
      operator = _parentPath$node.operator,
      value = _parentPath$node.right;
    if (operator === "=") {
      parentPath.replaceWith(state.set(member, value));
    } else {
      var operatorTrunc = operator.slice(0, -1);
      if (LOGICAL_OPERATORS.includes(operatorTrunc)) {
        state.memoise(member, 1);
        parentPath.replaceWith(logicalExpression(operatorTrunc, state.get(member), state.set(member, value)));
      } else {
        state.memoise(member, 2);
        parentPath.replaceWith(state.set(member, binaryExpression$1(operatorTrunc, state.get(member), value)));
      }
    }
  }
  function memberExpressionToFunctions(path, visitor, state) {
    path.traverse(visitor, Object.assign({}, handle, state, {
      memoiser: new AssignmentMemoiser()
    }));
  }

  var callExpression$2 = callExpression$c,
    identifier$2 = identifier$e,
    isIdentifier$2 = isIdentifier$f,
    isSpreadElement = isSpreadElement$1,
    memberExpression$4 = memberExpression$a,
    optionalCallExpression = optionalCallExpression$2,
    optionalMemberExpression = optionalMemberExpression$2;
  function optimiseCallExpression(callee, thisNode, args, optional) {
    if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier$2(args[0].argument, {
      name: "arguments"
    })) {
      if (optional) {
        return optionalCallExpression(optionalMemberExpression(callee, identifier$2("apply"), false, true), [thisNode, args[0].argument], false);
      }
      return callExpression$2(memberExpression$4(callee, identifier$2("apply")), [thisNode, args[0].argument]);
    } else {
      if (optional) {
        return optionalCallExpression(optionalMemberExpression(callee, identifier$2("call"), false, true), [thisNode].concat(_toConsumableArray(args)), false);
      }
      return callExpression$2(memberExpression$4(callee, identifier$2("call")), [thisNode].concat(_toConsumableArray(args)));
    }
  }

  var _templateObject$w, _templateObject2$h, _templateObject3$d, _templateObject4$8;
  var assignmentExpression$3 = assignmentExpression$b,
    callExpression$1 = callExpression$c,
    cloneNode$2 = cloneNode$g,
    identifier$1 = identifier$e,
    memberExpression$3 = memberExpression$a,
    sequenceExpression$1 = sequenceExpression$8,
    stringLiteral$1 = stringLiteral$6,
    thisExpression$1 = thisExpression$4;
  var visitor$2 = environmentVisitor({
    Super: function Super(path, state) {
      var node = path.node,
        parentPath = path.parentPath;
      if (!parentPath.isMemberExpression({
        object: node
      })) return;
      state.handle(parentPath);
    }
  });
  var unshadowSuperBindingVisitor = environmentVisitor({
    Scopable: function Scopable(path, _ref) {
      var refName = _ref.refName;
      var binding = path.scope.getOwnBinding(refName);
      if (binding && binding.identifier.name === refName) {
        path.scope.rename(refName);
      }
    }
  });
  var specHandlers = {
    memoise: function memoise(superMember, count) {
      var scope = superMember.scope,
        node = superMember.node;
      var computed = node.computed,
        property = node.property;
      if (!computed) {
        return;
      }
      var memo = scope.maybeGenerateMemoised(property);
      if (!memo) {
        return;
      }
      this.memoiser.set(property, memo, count);
    },
    prop: function prop(superMember) {
      var _superMember$node = superMember.node,
        computed = _superMember$node.computed,
        property = _superMember$node.property;
      if (this.memoiser.has(property)) {
        return cloneNode$2(this.memoiser.get(property));
      }
      if (computed) {
        return cloneNode$2(property);
      }
      return stringLiteral$1(property.name);
    },
    _getPrototypeOfExpression: function _getPrototypeOfExpression() {
      var objectRef = cloneNode$2(this.getObjectRef());
      var targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression$3(objectRef, identifier$1("prototype"));
      return callExpression$1(this.file.addHelper("getPrototypeOf"), [targetRef]);
    },
    get: function get(superMember) {
      var objectRef = cloneNode$2(this.getObjectRef());
      return callExpression$1(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression$1([thisExpression$1(), objectRef]) : objectRef, this.prop(superMember), thisExpression$1()].concat(_toConsumableArray(this.isStatic || this.isPrivateMethod ? [] : [numericLiteral$6(1)])));
    },
    _call: function _call(superMember, args, optional) {
      var objectRef = cloneNode$2(this.getObjectRef());
      var argsNode;
      if (args.length === 1 && isSpreadElement$1(args[0]) && (isIdentifier$f(args[0].argument) || isArrayExpression$2(args[0].argument))) {
        argsNode = args[0].argument;
      } else {
        argsNode = arrayExpression$1(args);
      }
      var call = callExpression$c(this.file.addHelper("superPropGet"), [this.isDerivedConstructor ? sequenceExpression$1([thisExpression$1(), objectRef]) : objectRef, this.prop(superMember), thisExpression$1(), numericLiteral$6(2 | (this.isStatic || this.isPrivateMethod ? 0 : 1))]);
      if (optional) {
        return optionalCallExpression$2(call, [argsNode], true);
      }
      return callExpression$1(call, [argsNode]);
    },
    set: function set(superMember, value) {
      var objectRef = cloneNode$2(this.getObjectRef());
      return callExpression$1(this.file.addHelper("superPropSet"), [this.isDerivedConstructor ? sequenceExpression$1([thisExpression$1(), objectRef]) : objectRef, this.prop(superMember), value, thisExpression$1(), numericLiteral$6(superMember.isInStrictMode() ? 1 : 0)].concat(_toConsumableArray(this.isStatic || this.isPrivateMethod ? [] : [numericLiteral$6(1)])));
    },
    destructureSet: function destructureSet(superMember) {
      throw superMember.buildCodeFrameError("Destructuring to a super field is not supported yet.");
    },
    call: function call(superMember, args) {
      return this._call(superMember, args, false);
    },
    optionalCall: function optionalCall(superMember, args) {
      return this._call(superMember, args, true);
    },
    "delete": function _delete(superMember) {
      if (superMember.node.computed) {
        return sequenceExpression$1([callExpression$1(this.file.addHelper("toPropertyKey"), [cloneNode$2(superMember.node.property)]), template$1.expression.ast(_templateObject$w || (_templateObject$w = _taggedTemplateLiteralLoose(["\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        "])))]);
      } else {
        return template$1.expression.ast(_templateObject2$h || (_templateObject2$h = _taggedTemplateLiteralLoose(["\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      "])));
      }
    }
  };
  var specHandlers_old = {
    memoise: function memoise(superMember, count) {
      var scope = superMember.scope,
        node = superMember.node;
      var computed = node.computed,
        property = node.property;
      if (!computed) {
        return;
      }
      var memo = scope.maybeGenerateMemoised(property);
      if (!memo) {
        return;
      }
      this.memoiser.set(property, memo, count);
    },
    prop: function prop(superMember) {
      var _superMember$node2 = superMember.node,
        computed = _superMember$node2.computed,
        property = _superMember$node2.property;
      if (this.memoiser.has(property)) {
        return cloneNode$2(this.memoiser.get(property));
      }
      if (computed) {
        return cloneNode$2(property);
      }
      return stringLiteral$1(property.name);
    },
    _getPrototypeOfExpression: function _getPrototypeOfExpression() {
      var objectRef = cloneNode$2(this.getObjectRef());
      var targetRef = this.isStatic || this.isPrivateMethod ? objectRef : memberExpression$3(objectRef, identifier$1("prototype"));
      return callExpression$1(this.file.addHelper("getPrototypeOf"), [targetRef]);
    },
    get: function get(superMember) {
      return this._get(superMember);
    },
    _get: function _get(superMember) {
      var proto = this._getPrototypeOfExpression();
      return callExpression$1(this.file.addHelper("get"), [this.isDerivedConstructor ? sequenceExpression$1([thisExpression$1(), proto]) : proto, this.prop(superMember), thisExpression$1()]);
    },
    set: function set(superMember, value) {
      var proto = this._getPrototypeOfExpression();
      return callExpression$1(this.file.addHelper("set"), [this.isDerivedConstructor ? sequenceExpression$1([thisExpression$1(), proto]) : proto, this.prop(superMember), value, thisExpression$1(), booleanLiteral$2(superMember.isInStrictMode())]);
    },
    destructureSet: function destructureSet(superMember) {
      throw superMember.buildCodeFrameError("Destructuring to a super field is not supported yet.");
    },
    call: function call(superMember, args) {
      return optimiseCallExpression(this._get(superMember), thisExpression$1(), args, false);
    },
    optionalCall: function optionalCall(superMember, args) {
      return optimiseCallExpression(this._get(superMember), cloneNode$2(thisExpression$1()), args, true);
    },
    "delete": function _delete(superMember) {
      if (superMember.node.computed) {
        return sequenceExpression$1([callExpression$1(this.file.addHelper("toPropertyKey"), [cloneNode$2(superMember.node.property)]), template$1.expression.ast(_templateObject3$d || (_templateObject3$d = _taggedTemplateLiteralLoose(["\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        "])))]);
      } else {
        return template$1.expression.ast(_templateObject4$8 || (_templateObject4$8 = _taggedTemplateLiteralLoose(["\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      "])));
      }
    }
  };
  var looseHandlers = Object.assign({}, specHandlers, {
    prop: function prop(superMember) {
      var property = superMember.node.property;
      if (this.memoiser.has(property)) {
        return cloneNode$2(this.memoiser.get(property));
      }
      return cloneNode$2(property);
    },
    get: function get(superMember) {
      var isStatic = this.isStatic,
        getSuperRef = this.getSuperRef;
      var computed = superMember.node.computed;
      var prop = this.prop(superMember);
      var object;
      if (isStatic) {
        var _getSuperRef;
        object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : memberExpression$3(identifier$1("Function"), identifier$1("prototype"));
      } else {
        var _getSuperRef2;
        object = memberExpression$3((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : identifier$1("Object"), identifier$1("prototype"));
      }
      return memberExpression$3(object, prop, computed);
    },
    set: function set(superMember, value) {
      var computed = superMember.node.computed;
      var prop = this.prop(superMember);
      return assignmentExpression$3("=", memberExpression$3(thisExpression$1(), prop, computed), value);
    },
    destructureSet: function destructureSet(superMember) {
      var computed = superMember.node.computed;
      var prop = this.prop(superMember);
      return memberExpression$3(thisExpression$1(), prop, computed);
    },
    call: function call(superMember, args) {
      return optimiseCallExpression(this.get(superMember), thisExpression$1(), args, false);
    },
    optionalCall: function optionalCall(superMember, args) {
      return optimiseCallExpression(this.get(superMember), thisExpression$1(), args, true);
    }
  });
  var ReplaceSupers = function () {
    function ReplaceSupers(opts) {
      var _opts$constantSuper;
      var path = opts.methodPath;
      this.methodPath = path;
      this.isDerivedConstructor = path.isClassMethod({
        kind: "constructor"
      }) && !!opts.superRef;
      this.isStatic = path.isObjectMethod() || path.node["static"] || (path.isStaticBlock == null ? void 0 : path.isStaticBlock());
      this.isPrivateMethod = path.isPrivate() && path.isMethod();
      this.file = opts.file;
      this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose;
      this.opts = opts;
    }
    var _proto = ReplaceSupers.prototype;
    _proto.getObjectRef = function getObjectRef() {
      return cloneNode$2(this.opts.objectRef || this.opts.getObjectRef());
    };
    _proto.getSuperRef = function getSuperRef() {
      if (this.opts.superRef) return cloneNode$2(this.opts.superRef);
      if (this.opts.getSuperRef) {
        return cloneNode$2(this.opts.getSuperRef());
      }
    };
    _proto.replace = function replace() {
      var methodPath = this.methodPath;
      if (this.opts.refToPreserve) {
        methodPath.traverse(unshadowSuperBindingVisitor, {
          refName: this.opts.refToPreserve.name
        });
      }
      var handler = this.constantSuper ? looseHandlers : this.file.availableHelper("superPropSet") ? specHandlers : specHandlers_old;
      visitor$2.shouldSkip = function (path) {
        if (path.parentPath === methodPath) {
          if (path.parentKey === "decorators" || path.parentKey === "key") {
            return true;
          }
        }
      };
      memberExpressionToFunctions(methodPath, visitor$2, Object.assign({
        file: this.file,
        scope: this.methodPath.scope,
        isDerivedConstructor: this.isDerivedConstructor,
        isStatic: this.isStatic,
        isPrivateMethod: this.isPrivateMethod,
        getObjectRef: this.getObjectRef.bind(this),
        getSuperRef: this.getSuperRef.bind(this),
        boundGet: handler.get
      }, handler));
    };
    return _createClass(ReplaceSupers);
  }();

  var isParenthesizedExpression = isParenthesizedExpression$2,
    isTSAsExpression = isTSAsExpression$1,
    isTSNonNullExpression = isTSNonNullExpression$1,
    isTSSatisfiesExpression = isTSSatisfiesExpression$1,
    isTSTypeAssertion = isTSTypeAssertion$1,
    isTypeCastExpression = isTypeCastExpression$1;
  function isTransparentExprWrapper(node) {
    return isTSAsExpression(node) || isTSSatisfiesExpression(node) || isTSTypeAssertion(node) || isTSNonNullExpression(node) || isTypeCastExpression(node) || isParenthesizedExpression(node);
  }
  function skipTransparentExprWrappers(path) {
    while (isTransparentExprWrapper(path.node)) {
      path = path.get("expression");
    }
    return path;
  }
  function skipTransparentExprWrapperNodes(node) {
    while (isTransparentExprWrapper(node)) {
      node = node.expression;
    }
    return node;
  }

  function assertFieldTransformed(path) {
    if (path.node.declare || false) {
      throw path.buildCodeFrameError("TypeScript 'declare' fields must first be transformed by " + "@babel/plugin-transform-typescript.\n" + "If you have already enabled that plugin (or '@babel/preset-typescript'), make sure " + "that it runs before any plugin related to additional class features:\n" + " - @babel/plugin-transform-class-properties\n" + " - @babel/plugin-transform-private-methods\n" + " - @babel/plugin-proposal-decorators");
    }
  }

  var _templateObject$v, _templateObject2$g, _templateObject3$c, _templateObject4$7, _templateObject5$4, _templateObject6$2, _templateObject7$1, _templateObject8$1, _templateObject9$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1, _templateObject20$1, _templateObject21$1, _templateObject22;
  {
    var newHelpers = function newHelpers(file) {
      return file.availableHelper("classPrivateFieldGet2");
    };
  }
  function buildPrivateNamesMap(className, privateFieldsAsSymbolsOrProperties, props, file) {
    var privateNamesMap = new Map();
    var classBrandId;
    for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done;) {
      var prop = _step.value;
      if (prop.isPrivate()) {
        var name = prop.node.key.id.name;
        var update = privateNamesMap.get(name);
        if (!update) {
          var isMethod = !prop.isProperty();
          var isStatic = prop.node["static"];
          var initAdded = false;
          var id = void 0;
          if (!privateFieldsAsSymbolsOrProperties && newHelpers(file) && isMethod && !isStatic) {
            var _classBrandId;
            initAdded = !!classBrandId;
            (_classBrandId = classBrandId) != null ? _classBrandId : classBrandId = prop.scope.generateUidIdentifier(className + "_brand");
            id = classBrandId;
          } else {
            id = prop.scope.generateUidIdentifier(name);
          }
          update = {
            id: id,
            "static": isStatic,
            method: isMethod,
            initAdded: initAdded
          };
          privateNamesMap.set(name, update);
        }
        if (prop.isClassPrivateMethod()) {
          if (prop.node.kind === "get") {
            var body = prop.node.body.body;
            var $ = void 0;
            if (body.length === 1 && isReturnStatement($ = body[0]) && isCallExpression$8($ = $.argument) && $.arguments.length === 1 && isThisExpression$2($.arguments[0]) && isIdentifier$f($ = $.callee)) {
              update.getId = cloneNode$g($);
              update.getterDeclared = true;
            } else {
              update.getId = prop.scope.generateUidIdentifier("get_" + name);
            }
          } else if (prop.node.kind === "set") {
            var params = prop.node.params;
            var _body = prop.node.body.body;
            var _$ = void 0;
            if (_body.length === 1 && isExpressionStatement$2(_$ = _body[0]) && isCallExpression$8(_$ = _$.expression) && _$.arguments.length === 2 && isThisExpression$2(_$.arguments[0]) && isIdentifier$f(_$.arguments[1], {
              name: params[0].name
            }) && isIdentifier$f(_$ = _$.callee)) {
              update.setId = cloneNode$g(_$);
              update.setterDeclared = true;
            } else {
              update.setId = prop.scope.generateUidIdentifier("set_" + name);
            }
          } else if (prop.node.kind === "method") {
            update.methodId = prop.scope.generateUidIdentifier(name);
          }
        }
        privateNamesMap.set(name, update);
      }
    }
    return privateNamesMap;
  }
  function buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties, privateFieldsAsSymbols, state) {
    var initNodes = [];
    var injectedIds = new Set();
    for (var _iterator2 = _createForOfIteratorHelperLoose(privateNamesMap), _step2; !(_step2 = _iterator2()).done;) {
      var _step2$value = _slicedToArray(_step2.value, 2),
        name = _step2$value[0],
        value = _step2$value[1];
      var isStatic = value["static"],
        isMethod = value.method,
        getId = value.getId,
        setId = value.setId;
      var isGetterOrSetter = getId || setId;
      var id = cloneNode$g(value.id);
      var init = void 0;
      if (privateFieldsAsProperties) {
        init = callExpression$c(state.addHelper("classPrivateFieldLooseKey"), [stringLiteral$6(name)]);
      } else if (privateFieldsAsSymbols) {
        init = callExpression$c(identifier$e("Symbol"), [stringLiteral$6(name)]);
      } else if (!isStatic) {
        if (injectedIds.has(id.name)) continue;
        injectedIds.add(id.name);
        init = newExpression(identifier$e(isMethod && (!isGetterOrSetter || newHelpers(state)) ? "WeakSet" : "WeakMap"), []);
      }
      if (init) {
        if (!privateFieldsAsSymbols) {
          annotateAsPure(init);
        }
        initNodes.push(template$1.statement.ast(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["var ", " = ", ""])), id, init));
      }
    }
    return initNodes;
  }
  function privateNameVisitorFactory(visitor) {
    var nestedVisitor = environmentVisitor(Object.assign({}, visitor));
    var privateNameVisitor = Object.assign({}, visitor, {
      Class: function Class(path) {
        var privateNamesMap = this.privateNamesMap;
        var body = path.get("body.body");
        var visiblePrivateNames = new Map(privateNamesMap);
        var redeclared = [];
        for (var _iterator3 = _createForOfIteratorHelperLoose(body), _step3; !(_step3 = _iterator3()).done;) {
          var prop = _step3.value;
          if (!prop.isPrivate()) continue;
          var name = prop.node.key.id.name;
          visiblePrivateNames["delete"](name);
          redeclared.push(name);
        }
        if (!redeclared.length) {
          return;
        }
        path.get("body").traverse(nestedVisitor, Object.assign({}, this, {
          redeclared: redeclared
        }));
        path.traverse(privateNameVisitor, Object.assign({}, this, {
          privateNamesMap: visiblePrivateNames
        }));
        path.skipKey("body");
      }
    });
    return privateNameVisitor;
  }
  var privateNameVisitor = privateNameVisitorFactory({
    PrivateName: function PrivateName(path, _ref) {
      var noDocumentAll = _ref.noDocumentAll;
      var privateNamesMap = this.privateNamesMap,
        redeclared = this.redeclared;
      var node = path.node,
        parentPath = path.parentPath;
      if (!parentPath.isMemberExpression({
        property: node
      }) && !parentPath.isOptionalMemberExpression({
        property: node
      })) {
        return;
      }
      var name = node.id.name;
      if (!privateNamesMap.has(name)) return;
      if (redeclared != null && redeclared.includes(name)) return;
      this.handle(parentPath, noDocumentAll);
    }
  });
  function unshadow(name, scope, innerBinding) {
    while ((_scope = scope) != null && _scope.hasBinding(name) && !scope.bindingIdentifierEquals(name, innerBinding)) {
      var _scope;
      scope.rename(name);
      scope = scope.parent;
    }
  }
  function buildCheckInRHS(rhs, file, inRHSIsObject) {
    if (!(file.availableHelper != null && file.availableHelper("checkInRHS"))) return rhs;
    return callExpression$c(file.addHelper("checkInRHS"), [rhs]);
  }
  var privateInVisitor = privateNameVisitorFactory({
    BinaryExpression: function BinaryExpression(path, _ref2) {
      var file = _ref2.file;
      var _path$node = path.node,
        operator = _path$node.operator,
        left = _path$node.left,
        right = _path$node.right;
      if (operator !== "in") return;
      if (!isPrivateName$3(left)) return;
      var privateFieldsAsProperties = this.privateFieldsAsProperties,
        privateNamesMap = this.privateNamesMap,
        redeclared = this.redeclared;
      var name = left.id.name;
      if (!privateNamesMap.has(name)) return;
      if (redeclared != null && redeclared.includes(name)) return;
      unshadow(this.classRef.name, path.scope, this.innerBinding);
      if (privateFieldsAsProperties) {
        var _privateNamesMap$get = privateNamesMap.get(name),
          _id = _privateNamesMap$get.id;
        path.replaceWith(template$1.expression.ast(_templateObject2$g || (_templateObject2$g = _taggedTemplateLiteralLoose(["\n        Object.prototype.hasOwnProperty.call(", ", ", ")\n      "])), buildCheckInRHS(right, file), cloneNode$g(_id)));
        return;
      }
      var _privateNamesMap$get2 = privateNamesMap.get(name),
        id = _privateNamesMap$get2.id,
        isStatic = _privateNamesMap$get2["static"];
      if (isStatic) {
        path.replaceWith(template$1.expression.ast(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteralLoose(["", " === ", ""])), buildCheckInRHS(right, file), cloneNode$g(this.classRef)));
        return;
      }
      path.replaceWith(template$1.expression.ast(_templateObject4$7 || (_templateObject4$7 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), cloneNode$g(id), buildCheckInRHS(right, file)));
    }
  });
  function readOnlyError(file, name) {
    return callExpression$c(file.addHelper("readOnlyError"), [stringLiteral$6("#" + name)]);
  }
  function writeOnlyError(file, name) {
    if (!file.availableHelper("writeOnlyError")) {
      console.warn("@babel/helpers is outdated, update it to silence this warning.");
      return buildUndefinedNode$2();
    }
    return callExpression$c(file.addHelper("writeOnlyError"), [stringLiteral$6("#" + name)]);
  }
  function buildStaticPrivateFieldAccess(expr, noUninitializedPrivateFieldAccess) {
    if (noUninitializedPrivateFieldAccess) return expr;
    return memberExpression$a(expr, identifier$e("_"));
  }
  function autoInherits(fn) {
    return function (member) {
      return inherits$3(fn.apply(this, arguments), member.node);
    };
  }
  var privateNameHandlerSpec = {
    memoise: function memoise(member, count) {
      var scope = member.scope;
      var _ref3 = member.node,
        object = _ref3.object;
      var memo = scope.maybeGenerateMemoised(object);
      if (!memo) {
        return;
      }
      this.memoiser.set(object, memo, count);
    },
    receiver: function receiver(member) {
      var _ref4 = member.node,
        object = _ref4.object;
      if (this.memoiser.has(object)) {
        return cloneNode$g(this.memoiser.get(object));
      }
      return cloneNode$g(object);
    },
    get: autoInherits(function (member) {
      var classRef = this.classRef,
        privateNamesMap = this.privateNamesMap,
        file = this.file,
        innerBinding = this.innerBinding,
        noUninitializedPrivateFieldAccess = this.noUninitializedPrivateFieldAccess;
      var privateName = member.node.property;
      var name = privateName.id.name;
      var _privateNamesMap$get3 = privateNamesMap.get(name),
        id = _privateNamesMap$get3.id,
        isStatic = _privateNamesMap$get3["static"],
        isMethod = _privateNamesMap$get3.method,
        methodId = _privateNamesMap$get3.methodId,
        getId = _privateNamesMap$get3.getId,
        setId = _privateNamesMap$get3.setId;
      var isGetterOrSetter = getId || setId;
      var cloneId = function cloneId(id) {
        return inherits$3(cloneNode$g(id), privateName);
      };
      if (isStatic) {
        unshadow(classRef.name, member.scope, innerBinding);
        if (!newHelpers(file)) {
          var helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodGet" : "classStaticPrivateFieldSpecGet";
          return callExpression$c(file.addHelper(helperName), [this.receiver(member), cloneNode$g(classRef), cloneId(id)]);
        }
        var _receiver = this.receiver(member);
        var skipCheck = isIdentifier$f(_receiver) && _receiver.name === classRef.name;
        if (!isMethod) {
          if (skipCheck) {
            return buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess);
          }
          return buildStaticPrivateFieldAccess(callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(classRef), _receiver, cloneId(id)]), noUninitializedPrivateFieldAccess);
        }
        if (getId) {
          if (skipCheck) {
            return callExpression$c(cloneId(getId), [_receiver]);
          }
          return callExpression$c(file.addHelper("classPrivateGetter"), [cloneNode$g(classRef), _receiver, cloneId(getId)]);
        }
        if (setId) {
          var err = buildUndefinedNode$2();
          if (skipCheck) return err;
          return sequenceExpression$8([callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(classRef), _receiver]), err]);
        }
        if (skipCheck) return cloneId(id);
        return callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(classRef), _receiver, cloneId(id)]);
      }
      if (isMethod) {
        if (isGetterOrSetter) {
          if (!getId) {
            return sequenceExpression$8([this.receiver(member), writeOnlyError(file, name)]);
          }
          if (!newHelpers(file)) {
            return callExpression$c(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
          }
          return callExpression$c(file.addHelper("classPrivateGetter"), [cloneNode$g(id), this.receiver(member), cloneId(getId)]);
        }
        if (!newHelpers(file)) {
          return callExpression$c(file.addHelper("classPrivateMethodGet"), [this.receiver(member), cloneNode$g(id), cloneId(methodId)]);
        }
        return callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(id), this.receiver(member), cloneId(methodId)]);
      }
      if (newHelpers(file)) {
        return callExpression$c(file.addHelper("classPrivateFieldGet2"), [cloneId(id), this.receiver(member)]);
      }
      return callExpression$c(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneId(id)]);
    }),
    boundGet: function boundGet(member) {
      this.memoise(member, 1);
      return callExpression$c(memberExpression$a(this.get(member), identifier$e("bind")), [this.receiver(member)]);
    },
    set: autoInherits(function (member, value) {
      var classRef = this.classRef,
        privateNamesMap = this.privateNamesMap,
        file = this.file,
        noUninitializedPrivateFieldAccess = this.noUninitializedPrivateFieldAccess;
      var privateName = member.node.property;
      var name = privateName.id.name;
      var _privateNamesMap$get4 = privateNamesMap.get(name),
        id = _privateNamesMap$get4.id,
        isStatic = _privateNamesMap$get4["static"],
        isMethod = _privateNamesMap$get4.method,
        setId = _privateNamesMap$get4.setId,
        getId = _privateNamesMap$get4.getId;
      var isGetterOrSetter = getId || setId;
      var cloneId = function cloneId(id) {
        return inherits$3(cloneNode$g(id), privateName);
      };
      if (isStatic) {
        if (!newHelpers(file)) {
          var helperName = isMethod && !isGetterOrSetter ? "classStaticPrivateMethodSet" : "classStaticPrivateFieldSpecSet";
          return callExpression$c(file.addHelper(helperName), [this.receiver(member), cloneNode$g(classRef), cloneId(id), value]);
        }
        var _receiver2 = this.receiver(member);
        var skipCheck = isIdentifier$f(_receiver2) && _receiver2.name === classRef.name;
        if (isMethod && !setId) {
          var err = readOnlyError(file, name);
          if (skipCheck) return sequenceExpression$8([value, err]);
          return sequenceExpression$8([value, callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(classRef), _receiver2]), readOnlyError(file, name)]);
        }
        if (setId) {
          if (skipCheck) {
            return callExpression$c(cloneNode$g(setId), [_receiver2, value]);
          }
          return callExpression$c(file.addHelper("classPrivateSetter"), [cloneNode$g(classRef), cloneId(setId), _receiver2, value]);
        }
        return assignmentExpression$b("=", buildStaticPrivateFieldAccess(cloneId(id), noUninitializedPrivateFieldAccess), skipCheck ? value : callExpression$c(file.addHelper("assertClassBrand"), [cloneNode$g(classRef), _receiver2, value]));
      }
      if (isMethod) {
        if (setId) {
          if (!newHelpers(file)) {
            return callExpression$c(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
          }
          return callExpression$c(file.addHelper("classPrivateSetter"), [cloneNode$g(id), cloneId(setId), this.receiver(member), value]);
        }
        return sequenceExpression$8([this.receiver(member), value, readOnlyError(file, name)]);
      }
      if (newHelpers(file)) {
        return callExpression$c(file.addHelper("classPrivateFieldSet2"), [cloneId(id), this.receiver(member), value]);
      }
      return callExpression$c(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneId(id), value]);
    }),
    destructureSet: function destructureSet(member) {
      var classRef = this.classRef,
        privateNamesMap = this.privateNamesMap,
        file = this.file,
        noUninitializedPrivateFieldAccess = this.noUninitializedPrivateFieldAccess;
      var privateName = member.node.property;
      var name = privateName.id.name;
      var _privateNamesMap$get5 = privateNamesMap.get(name),
        id = _privateNamesMap$get5.id,
        isStatic = _privateNamesMap$get5["static"],
        isMethod = _privateNamesMap$get5.method,
        setId = _privateNamesMap$get5.setId;
      var cloneId = function cloneId(id) {
        return inherits$3(cloneNode$g(id), privateName);
      };
      if (!newHelpers(file)) {
        if (isStatic) {
          try {
            var helper = file.addHelper("classStaticPrivateFieldDestructureSet");
          } catch (_unused) {
            throw new Error("Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \n" + "please update @babel/helpers to the latest version.");
          }
          return memberExpression$a(callExpression$c(helper, [this.receiver(member), cloneNode$g(classRef), cloneId(id)]), identifier$e("value"));
        }
        return memberExpression$a(callExpression$c(file.addHelper("classPrivateFieldDestructureSet"), [this.receiver(member), cloneId(id)]), identifier$e("value"));
      }
      if (isMethod && !setId) {
        return memberExpression$a(sequenceExpression$8([member.node.object, readOnlyError(file, name)]), identifier$e("_"));
      }
      if (isStatic && !isMethod) {
        var getCall = this.get(member);
        if (!noUninitializedPrivateFieldAccess || !isCallExpression$8(getCall)) {
          return getCall;
        }
        var ref = getCall.arguments.pop();
        getCall.arguments.push(template$1.expression.ast(_templateObject5$4 || (_templateObject5$4 = _taggedTemplateLiteralLoose(["(_) => ", " = _"])), ref));
        return memberExpression$a(callExpression$c(file.addHelper("toSetter"), [getCall]), identifier$e("_"));
      }
      var setCall = this.set(member, identifier$e("_"));
      if (!isCallExpression$8(setCall) || !isIdentifier$f(setCall.arguments[setCall.arguments.length - 1], {
        name: "_"
      })) {
        throw member.buildCodeFrameError("Internal Babel error while compiling this code. This is a Babel bug. " + "Please report it at https://github.com/babel/babel/issues.");
      }
      var args;
      if (isMemberExpression$8(setCall.callee, {
        computed: false
      }) && isIdentifier$f(setCall.callee.property) && setCall.callee.property.name === "call") {
        args = [setCall.callee.object, arrayExpression$1(setCall.arguments.slice(1, -1)), setCall.arguments[0]];
      } else {
        args = [setCall.callee, arrayExpression$1(setCall.arguments.slice(0, -1))];
      }
      return memberExpression$a(callExpression$c(file.addHelper("toSetter"), args), identifier$e("_"));
    },
    call: function call(member, args) {
      this.memoise(member, 1);
      return optimiseCallExpression(this.get(member), this.receiver(member), args, false);
    },
    optionalCall: function optionalCall(member, args) {
      this.memoise(member, 1);
      return optimiseCallExpression(this.get(member), this.receiver(member), args, true);
    },
    "delete": function _delete() {
      throw new Error("Internal Babel error: deleting private elements is a parsing error.");
    }
  };
  var privateNameHandlerLoose = {
    get: function get(member) {
      var privateNamesMap = this.privateNamesMap,
        file = this.file;
      var object = member.node.object;
      var name = member.node.property.id.name;
      return template$1.expression(_templateObject6$2 || (_templateObject6$2 = _taggedTemplateLiteralLoose(["BASE(REF, PROP)[PROP]"])))({
        BASE: file.addHelper("classPrivateFieldLooseBase"),
        REF: cloneNode$g(object),
        PROP: cloneNode$g(privateNamesMap.get(name).id)
      });
    },
    set: function set() {
      throw new Error("private name handler with loose = true don't need set()");
    },
    boundGet: function boundGet(member) {
      return callExpression$c(memberExpression$a(this.get(member), identifier$e("bind")), [cloneNode$g(member.node.object)]);
    },
    simpleSet: function simpleSet(member) {
      return this.get(member);
    },
    destructureSet: function destructureSet(member) {
      return this.get(member);
    },
    call: function call(member, args) {
      return callExpression$c(this.get(member), args);
    },
    optionalCall: function optionalCall(member, args) {
      return optionalCallExpression$2(this.get(member), args, true);
    },
    "delete": function _delete() {
      throw new Error("Internal Babel error: deleting private elements is a parsing error.");
    }
  };
  function transformPrivateNamesUsage(ref, path, privateNamesMap, _ref5, state) {
    var privateFieldsAsProperties = _ref5.privateFieldsAsProperties,
      noUninitializedPrivateFieldAccess = _ref5.noUninitializedPrivateFieldAccess,
      noDocumentAll = _ref5.noDocumentAll,
      innerBinding = _ref5.innerBinding;
    if (!privateNamesMap.size) return;
    var body = path.get("body");
    var handler = privateFieldsAsProperties ? privateNameHandlerLoose : privateNameHandlerSpec;
    memberExpressionToFunctions(body, privateNameVisitor, Object.assign({
      privateNamesMap: privateNamesMap,
      classRef: ref,
      file: state
    }, handler, {
      noDocumentAll: noDocumentAll,
      noUninitializedPrivateFieldAccess: noUninitializedPrivateFieldAccess,
      innerBinding: innerBinding
    }));
    body.traverse(privateInVisitor, {
      privateNamesMap: privateNamesMap,
      classRef: ref,
      file: state,
      privateFieldsAsProperties: privateFieldsAsProperties,
      innerBinding: innerBinding
    });
  }
  function buildPrivateFieldInitLoose(ref, prop, privateNamesMap) {
    var _privateNamesMap$get6 = privateNamesMap.get(prop.node.key.id.name),
      id = _privateNamesMap$get6.id;
    var value = prop.node.value || prop.scope.buildUndefinedNode();
    return inheritPropComments(template$1.statement.ast(_templateObject7$1 || (_templateObject7$1 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", ", ", {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ", "\n      });\n    "])), ref, cloneNode$g(id), value), prop);
  }
  function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap, state) {
    var _privateNamesMap$get7 = privateNamesMap.get(prop.node.key.id.name),
      id = _privateNamesMap$get7.id;
    var value = prop.node.value || prop.scope.buildUndefinedNode();
    {
      if (!state.availableHelper("classPrivateFieldInitSpec")) {
        return inheritPropComments(template$1.statement.ast(_templateObject8$1 || (_templateObject8$1 = _taggedTemplateLiteralLoose(["", ".set(", ", {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ", ",\n        })"])), cloneNode$g(id), ref, value), prop);
      }
    }
    var helper = state.addHelper("classPrivateFieldInitSpec");
    return inheritLoc(inheritPropComments(expressionStatement$7(callExpression$c(helper, [thisExpression$4(), inheritLoc(cloneNode$g(id), prop.node.key), newHelpers(state) ? value : template$1.expression.ast(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["{ writable: true, value: ", " }"])), value)])), prop), prop.node);
  }
  function buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var value = noUninitializedPrivateFieldAccess ? prop.node.value : template$1.expression.ast(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["{\n        _: ", "\n      }"])), prop.node.value || buildUndefinedNode$2());
    return inheritPropComments(variableDeclaration$6("var", [variableDeclarator$6(cloneNode$g(privateName.id), value)]), prop);
  }
  {
    var buildPrivateStaticFieldInitSpecOld = function buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id,
        getId = privateName.getId,
        setId = privateName.setId,
        initAdded = privateName.initAdded;
      var isGetterOrSetter = getId || setId;
      if (!prop.isProperty() && (initAdded || !isGetterOrSetter)) return;
      if (isGetterOrSetter) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          initAdded: true
        }));
        return inheritPropComments(template$1.statement.ast(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n          var ", " = {\n            // configurable is false by default\n            // enumerable is false by default\n            // writable is false by default\n            get: ", ",\n            set: ", "\n          }\n        "])), cloneNode$g(id), getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
      }
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      return inheritPropComments(template$1.statement.ast(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["\n        var ", " = {\n          // configurable is false by default\n          // enumerable is false by default\n          writable: true,\n          value: ", "\n        };\n      "])), cloneNode$g(id), value), prop);
    };
  }
  function buildPrivateMethodInitLoose(ref, prop, privateNamesMap) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var methodId = privateName.methodId,
      id = privateName.id,
      getId = privateName.getId,
      setId = privateName.setId,
      initAdded = privateName.initAdded;
    if (initAdded) return;
    if (methodId) {
      return inheritPropComments(template$1.statement.ast(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ", "\n        });\n      "])), ref, id, methodId.name), prop);
    }
    var isGetterOrSetter = getId || setId;
    if (isGetterOrSetter) {
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        initAdded: true
      }));
      return inheritPropComments(template$1.statement.ast(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ", ",\n          set: ", "\n        });\n      "])), ref, id, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
    }
  }
  function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap, state) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    if (privateName.initAdded) return;
    if (!newHelpers(state)) {
      var isGetterOrSetter = privateName.getId || privateName.setId;
      if (isGetterOrSetter) {
        return buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state);
      }
    }
    return buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state);
  }
  function buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var id = privateName.id,
      getId = privateName.getId,
      setId = privateName.setId;
    privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
      initAdded: true
    }));
    {
      if (!state.availableHelper("classPrivateFieldInitSpec")) {
        return inheritPropComments(template$1.statement.ast(_templateObject15$1 || (_templateObject15$1 = _taggedTemplateLiteralLoose(["\n          ", ".set(", ", {\n            get: ", ",\n            set: ", "\n          });\n        "])), id, ref, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
      }
    }
    var helper = state.addHelper("classPrivateFieldInitSpec");
    return inheritLoc(inheritPropComments(template$1.statement.ast(_templateObject16$1 || (_templateObject16$1 = _taggedTemplateLiteralLoose(["", "(\n      ", ",\n      ", ",\n      {\n        get: ", ",\n        set: ", "\n      },\n    )"])), helper, thisExpression$4(), cloneNode$g(id), getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop), prop.node);
  }
  function buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var id = privateName.id;
    {
      if (!state.availableHelper("classPrivateMethodInitSpec")) {
        return inheritPropComments(template$1.statement.ast(_templateObject17$1 || (_templateObject17$1 = _taggedTemplateLiteralLoose(["", ".add(", ")"])), id, ref), prop);
      }
    }
    var helper = state.addHelper("classPrivateMethodInitSpec");
    return inheritPropComments(template$1.statement.ast(_templateObject18$1 || (_templateObject18$1 = _taggedTemplateLiteralLoose(["", "(\n      ", ",\n      ", "\n    )"])), helper, thisExpression$4(), cloneNode$g(id)), prop);
  }
  function buildPublicFieldInitLoose(ref, prop) {
    var _prop$node = prop.node,
      key = _prop$node.key,
      computed = _prop$node.computed;
    var value = prop.node.value || prop.scope.buildUndefinedNode();
    return inheritPropComments(expressionStatement$7(assignmentExpression$b("=", memberExpression$a(ref, key, computed || isLiteral$5(key)), value)), prop);
  }
  function buildPublicFieldInitSpec(ref, prop, state) {
    var _prop$node2 = prop.node,
      key = _prop$node2.key,
      computed = _prop$node2.computed;
    var value = prop.node.value || prop.scope.buildUndefinedNode();
    return inheritPropComments(expressionStatement$7(callExpression$c(state.addHelper("defineProperty"), [ref, computed || isLiteral$5(key) ? key : stringLiteral$6(key.name), value])), prop);
  }
  function buildPrivateStaticMethodInitLoose(ref, prop, state, privateNamesMap) {
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var id = privateName.id,
      methodId = privateName.methodId,
      getId = privateName.getId,
      setId = privateName.setId,
      initAdded = privateName.initAdded;
    if (initAdded) return;
    var isGetterOrSetter = getId || setId;
    if (isGetterOrSetter) {
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        initAdded: true
      }));
      return inheritPropComments(template$1.statement.ast(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ", ",\n          set: ", "\n        })\n      "])), ref, id, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
    }
    return inheritPropComments(template$1.statement.ast(_templateObject20$1 || (_templateObject20$1 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", ", ", {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ", "\n      });\n    "])), ref, id, methodId.name), prop);
  }
  function buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties) {
    if (privateFieldsAsSymbolsOrProperties === void 0) {
      privateFieldsAsSymbolsOrProperties = false;
    }
    var privateName = privateNamesMap.get(prop.node.key.id.name);
    var id = privateName.id,
      methodId = privateName.methodId,
      getId = privateName.getId,
      setId = privateName.setId,
      getterDeclared = privateName.getterDeclared,
      setterDeclared = privateName.setterDeclared,
      isStatic = privateName["static"];
    var _prop$node3 = prop.node,
      params = _prop$node3.params,
      body = _prop$node3.body,
      generator = _prop$node3.generator,
      async = _prop$node3.async;
    var isGetter = getId && params.length === 0;
    var isSetter = setId && params.length > 0;
    if (isGetter && getterDeclared || isSetter && setterDeclared) {
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        initAdded: true
      }));
      return null;
    }
    if (newHelpers(file) && (isGetter || isSetter) && !privateFieldsAsSymbolsOrProperties) {
      var scope = prop.get("body").scope;
      var thisArg = scope.generateUidIdentifier("this");
      var state = {
        thisRef: thisArg,
        argumentsPath: []
      };
      prop.traverse(thisContextVisitor, state);
      if (state.argumentsPath.length) {
        var argumentsId = scope.generateUidIdentifier("arguments");
        scope.push({
          id: argumentsId,
          init: template$1.expression.ast(_templateObject21$1 || (_templateObject21$1 = _taggedTemplateLiteralLoose(["[].slice.call(arguments, 1)"])))
        });
        for (var _iterator4 = _createForOfIteratorHelperLoose(state.argumentsPath), _step4; !(_step4 = _iterator4()).done;) {
          var path = _step4.value;
          path.replaceWith(cloneNode$g(argumentsId));
        }
      }
      params.unshift(cloneNode$g(thisArg));
    }
    var declId = methodId;
    if (isGetter) {
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        getterDeclared: true,
        initAdded: true
      }));
      declId = getId;
    } else if (isSetter) {
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        setterDeclared: true,
        initAdded: true
      }));
      declId = setId;
    } else if (isStatic && !privateFieldsAsSymbolsOrProperties) {
      declId = id;
    }
    return inheritPropComments(functionDeclaration(cloneNode$g(declId), params, body, generator, async), prop);
  }
  var thisContextVisitor = environmentVisitor({
    Identifier: function Identifier(path, state) {
      if (state.argumentsPath && path.node.name === "arguments") {
        state.argumentsPath.push(path);
      }
    },
    UnaryExpression: function UnaryExpression(path) {
      var node = path.node;
      if (node.operator === "delete") {
        var argument = skipTransparentExprWrapperNodes(node.argument);
        if (isThisExpression$2(argument)) {
          path.replaceWith(booleanLiteral$2(true));
        }
      }
    },
    ThisExpression: function ThisExpression(path, state) {
      state.needsClassRef = true;
      path.replaceWith(cloneNode$g(state.thisRef));
    },
    MetaProperty: function MetaProperty(path) {
      var node = path.node,
        scope = path.scope;
      if (node.meta.name === "new" && node.property.name === "target") {
        path.replaceWith(scope.buildUndefinedNode());
      }
    }
  });
  var innerReferencesVisitor = {
    ReferencedIdentifier: function ReferencedIdentifier(path, state) {
      if (path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)) {
        state.needsClassRef = true;
        path.node.name = state.thisRef.name;
      }
    }
  };
  function replaceThisContext(path, ref, innerBindingRef) {
    var _state$thisRef;
    var state = {
      thisRef: ref,
      needsClassRef: false,
      innerBinding: innerBindingRef
    };
    if (!path.isMethod()) {
      path.traverse(thisContextVisitor, state);
    }
    if (innerBindingRef != null && (_state$thisRef = state.thisRef) != null && _state$thisRef.name && state.thisRef.name !== innerBindingRef.name) {
      path.traverse(innerReferencesVisitor, state);
    }
    return state.needsClassRef;
  }
  function isNameOrLength$1(_ref6) {
    var key = _ref6.key,
      computed = _ref6.computed;
    if (key.type === "Identifier") {
      return !computed && (key.name === "name" || key.name === "length");
    }
    if (key.type === "StringLiteral") {
      return key.value === "name" || key.value === "length";
    }
    return false;
  }
  function inheritPropComments(node, prop) {
    inheritLeadingComments$1(node, prop.node);
    inheritInnerComments(node, prop.node);
    return node;
  }
  function inheritLoc(node, original) {
    node.start = original.start;
    node.end = original.end;
    node.loc = original.loc;
    return node;
  }
  function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, file, setPublicClassFields, privateFieldsAsSymbolsOrProperties, noUninitializedPrivateFieldAccess, constantSuper, innerBindingRef) {
    var _ref7, _ref8;
    var classRefFlags = 0;
    var injectSuperRef;
    var staticNodes = [];
    var instanceNodes = [];
    var lastInstanceNodeReturnsThis = false;
    var pureStaticNodes = [];
    var classBindingNode = null;
    var getSuperRef = isIdentifier$f(superRef) ? function () {
      return superRef;
    } : function () {
      var _injectSuperRef;
      (_injectSuperRef = injectSuperRef) != null ? _injectSuperRef : injectSuperRef = props[0].scope.generateUidIdentifierBasedOnNode(superRef);
      return injectSuperRef;
    };
    var classRefForInnerBinding = (_ref7 = ref) != null ? _ref7 : props[0].scope.generateUidIdentifier((innerBindingRef == null ? void 0 : innerBindingRef.name) || "Class");
    (_ref8 = ref) != null ? _ref8 : ref = cloneNode$g(innerBindingRef);
    var _loop = function _loop() {
      var prop = _step5.value;
      if (prop.isClassProperty()) {
        assertFieldTransformed(prop);
      }
      var isStatic = !(isStaticBlock != null && isStaticBlock(prop.node)) && prop.node["static"];
      var isInstance = !isStatic;
      var isPrivate = prop.isPrivate();
      var isPublic = !isPrivate;
      var isField = prop.isProperty();
      var isMethod = !isField;
      var isStaticBlock$1 = prop.isStaticBlock == null ? void 0 : prop.isStaticBlock();
      if (isStatic) classRefFlags |= 1;
      if (isStatic || isMethod && isPrivate || isStaticBlock$1) {
        new ReplaceSupers({
          methodPath: prop,
          constantSuper: constantSuper,
          file: file,
          refToPreserve: innerBindingRef,
          getSuperRef: getSuperRef,
          getObjectRef: function getObjectRef() {
            classRefFlags |= 2;
            if (isStatic || isStaticBlock$1) {
              return classRefForInnerBinding;
            } else {
              return memberExpression$a(classRefForInnerBinding, identifier$e("prototype"));
            }
          }
        }).replace();
        var replaced = replaceThisContext(prop, classRefForInnerBinding, innerBindingRef);
        if (replaced) {
          classRefFlags |= 2;
        }
      }
      lastInstanceNodeReturnsThis = false;
      switch (true) {
        case isStaticBlock$1:
          {
            var blockBody = prop.node.body;
            if (blockBody.length === 1 && isExpressionStatement$2(blockBody[0])) {
              staticNodes.push(inheritPropComments(blockBody[0], prop));
            } else {
              staticNodes.push(inheritsComments$1(template$1.statement.ast(_templateObject22 || (_templateObject22 = _taggedTemplateLiteralLoose(["(() => { ", " })()"])), blockBody), prop.node));
            }
            break;
          }
        case isStatic && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
          staticNodes.push(buildPrivateFieldInitLoose(cloneNode$g(ref), prop, privateNamesMap));
          break;
        case isStatic && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
          if (!newHelpers(file)) {
            staticNodes.push(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
          } else {
            staticNodes.push(buildPrivateStaticFieldInitSpec(prop, privateNamesMap, noUninitializedPrivateFieldAccess));
          }
          break;
        case isStatic && isPublic && isField && setPublicClassFields:
          if (!isNameOrLength$1(prop.node)) {
            staticNodes.push(buildPublicFieldInitLoose(cloneNode$g(ref), prop));
            break;
          }
        case isStatic && isPublic && isField && !setPublicClassFields:
          staticNodes.push(buildPublicFieldInitSpec(cloneNode$g(ref), prop, file));
          break;
        case isInstance && isPrivate && isField && privateFieldsAsSymbolsOrProperties:
          instanceNodes.push(buildPrivateFieldInitLoose(thisExpression$4(), prop, privateNamesMap));
          break;
        case isInstance && isPrivate && isField && !privateFieldsAsSymbolsOrProperties:
          instanceNodes.push(buildPrivateInstanceFieldInitSpec(thisExpression$4(), prop, privateNamesMap, file));
          break;
        case isInstance && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
          instanceNodes.unshift(buildPrivateMethodInitLoose(thisExpression$4(), prop, privateNamesMap));
          pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
          break;
        case isInstance && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
          instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(thisExpression$4(), prop, privateNamesMap, file));
          pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
          break;
        case isStatic && isPrivate && isMethod && !privateFieldsAsSymbolsOrProperties:
          if (!newHelpers(file)) {
            staticNodes.unshift(buildPrivateStaticFieldInitSpecOld(prop, privateNamesMap));
          }
          pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
          break;
        case isStatic && isPrivate && isMethod && privateFieldsAsSymbolsOrProperties:
          staticNodes.unshift(buildPrivateStaticMethodInitLoose(cloneNode$g(ref), prop, file, privateNamesMap));
          pureStaticNodes.push(buildPrivateMethodDeclaration(file, prop, privateNamesMap, privateFieldsAsSymbolsOrProperties));
          break;
        case isInstance && isPublic && isField && setPublicClassFields:
          instanceNodes.push(buildPublicFieldInitLoose(thisExpression$4(), prop));
          break;
        case isInstance && isPublic && isField && !setPublicClassFields:
          lastInstanceNodeReturnsThis = true;
          instanceNodes.push(buildPublicFieldInitSpec(thisExpression$4(), prop, file));
          break;
        default:
          throw new Error("Unreachable.");
      }
    };
    for (var _iterator5 = _createForOfIteratorHelperLoose(props), _step5; !(_step5 = _iterator5()).done;) {
      _loop();
    }
    if (classRefFlags & 2 && innerBindingRef != null) {
      classBindingNode = expressionStatement$7(assignmentExpression$b("=", cloneNode$g(classRefForInnerBinding), cloneNode$g(innerBindingRef)));
    }
    return {
      staticNodes: staticNodes.filter(Boolean),
      instanceNodes: instanceNodes.filter(Boolean),
      lastInstanceNodeReturnsThis: lastInstanceNodeReturnsThis,
      pureStaticNodes: pureStaticNodes.filter(Boolean),
      classBindingNode: classBindingNode,
      wrapClass: function wrapClass(path) {
        for (var _iterator6 = _createForOfIteratorHelperLoose(props), _step6; !(_step6 = _iterator6()).done;) {
          var prop = _step6.value;
          prop.node.leadingComments = null;
          prop.remove();
        }
        if (injectSuperRef) {
          path.scope.push({
            id: cloneNode$g(injectSuperRef)
          });
          path.set("superClass", assignmentExpression$b("=", injectSuperRef, path.node.superClass));
        }
        if (classRefFlags !== 0) {
          if (path.isClassExpression()) {
            path.scope.push({
              id: ref
            });
            path.replaceWith(assignmentExpression$b("=", cloneNode$g(ref), path.node));
          } else {
            if (innerBindingRef == null) {
              path.node.id = ref;
            }
            if (classBindingNode != null) {
              path.scope.push({
                id: classRefForInnerBinding
              });
            }
          }
        }
        return path;
      }
    };
  }

  var _templateObject$u;
  var findBareSupers = environmentVisitor({
    Super: function Super(path) {
      var node = path.node,
        parentPath = path.parentPath;
      if (parentPath.isCallExpression({
        callee: node
      })) {
        this.push(parentPath);
      }
    }
  });
  var referenceVisitor = {
    "TSTypeAnnotation|TypeAnnotation": function TSTypeAnnotationTypeAnnotation(path) {
      path.skip();
    },
    ReferencedIdentifier: function ReferencedIdentifier(path, _ref) {
      var scope = _ref.scope;
      if (scope.hasOwnBinding(path.node.name)) {
        scope.rename(path.node.name);
        path.skip();
      }
    }
  };
  function handleClassTDZ(path, state) {
    if (state.classBinding && state.classBinding === path.scope.getBinding(path.node.name)) {
      var classNameTDZError = state.file.addHelper("classNameTDZError");
      var throwNode = callExpression$c(classNameTDZError, [stringLiteral$6(path.node.name)]);
      path.replaceWith(sequenceExpression$8([throwNode, path.node]));
      path.skip();
    }
  }
  var classFieldDefinitionEvaluationTDZVisitor = {
    ReferencedIdentifier: handleClassTDZ
  };
  function injectInitialization(path, constructor, nodes, renamer, lastReturnsThis) {
    if (!nodes.length) return;
    var isDerived = !!path.node.superClass;
    if (!constructor) {
      var newConstructor = classMethod("constructor", identifier$e("constructor"), [], blockStatement$6([]));
      if (isDerived) {
        newConstructor.params = [restElement$2(identifier$e("args"))];
        newConstructor.body.body.push(template$1.statement.ast(_templateObject$u || (_templateObject$u = _taggedTemplateLiteralLoose(["super(...args)"]))));
      }
      var _ref2 = path.get("body").unshiftContainer("body", newConstructor);
      var _ref3 = _slicedToArray(_ref2, 1);
      constructor = _ref3[0];
    }
    if (renamer) {
      renamer(referenceVisitor, {
        scope: constructor.scope
      });
    }
    if (isDerived) {
      var bareSupers = [];
      constructor.traverse(findBareSupers, bareSupers);
      var isFirst = true;
      for (var _i = 0, _bareSupers = bareSupers; _i < _bareSupers.length; _i++) {
        var bareSuper = _bareSupers[_i];
        if (isFirst) {
          isFirst = false;
        } else {
          nodes = nodes.map(function (n) {
            return cloneNode$g(n);
          });
        }
        if (!bareSuper.parentPath.isExpressionStatement()) {
          var allNodes = [bareSuper.node].concat(_toConsumableArray(nodes.map(function (n) {
            return toExpression$1(n);
          })));
          if (!lastReturnsThis) allNodes.push(thisExpression$4());
          bareSuper.replaceWith(sequenceExpression$8(allNodes));
        } else {
          bareSuper.insertAfter(nodes);
        }
      }
    } else {
      constructor.get("body").unshiftContainer("body", nodes);
    }
  }
  function memoiseComputedKey(keyNode, scope, hint) {
    var isUidReference = isIdentifier$f(keyNode) && scope.hasUid(keyNode.name);
    if (isUidReference) {
      return;
    }
    var isMemoiseAssignment = isAssignmentExpression$2(keyNode, {
      operator: "="
    }) && isIdentifier$f(keyNode.left) && scope.hasUid(keyNode.left.name);
    if (isMemoiseAssignment) {
      return cloneNode$g(keyNode);
    } else {
      var ident = identifier$e(hint);
      scope.push({
        id: ident,
        kind: "let"
      });
      return assignmentExpression$b("=", cloneNode$g(ident), keyNode);
    }
  }
  function extractComputedKeys(path, computedPaths, file) {
    var scope = path.scope;
    var declarations = [];
    var state = {
      classBinding: path.node.id && scope.getBinding(path.node.id.name),
      file: file
    };
    for (var _iterator = _createForOfIteratorHelperLoose(computedPaths), _step; !(_step = _iterator()).done;) {
      var computedPath = _step.value;
      var computedKey = computedPath.get("key");
      if (computedKey.isReferencedIdentifier()) {
        handleClassTDZ(computedKey, state);
      } else {
        computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);
      }
      var computedNode = computedPath.node;
      if (!computedKey.isConstantExpression()) {
        var assignment = memoiseComputedKey(computedKey.node, scope, scope.generateUidBasedOnNode(computedKey.node));
        if (assignment) {
          declarations.push(expressionStatement$7(assignment));
          computedNode.key = cloneNode$g(assignment.left);
        }
      }
    }
    return declarations;
  }

  var _templateObject$t, _templateObject2$f, _templateObject3$b, _templateObject4$6, _templateObject5$3;
  function incrementId(id, idx) {
    if (idx === void 0) {
      idx = id.length - 1;
    }
    if (idx === -1) {
      id.unshift(65);
      return;
    }
    var current = id[idx];
    if (current === 90) {
      id[idx] = 97;
    } else if (current === 122) {
      id[idx] = 65;
      incrementId(id, idx - 1);
    } else {
      id[idx] = current + 1;
    }
  }
  function createPrivateUidGeneratorForClass(classPath) {
    var currentPrivateId = [];
    var privateNames = new Set();
    classPath.traverse({
      PrivateName: function PrivateName(path) {
        privateNames.add(path.node.id.name);
      }
    });
    return function () {
      var reifiedId;
      do {
        incrementId(currentPrivateId);
        reifiedId = String.fromCharCode.apply(String, currentPrivateId);
      } while (privateNames.has(reifiedId));
      return privateName(identifier$e(reifiedId));
    };
  }
  function createLazyPrivateUidGeneratorForClass(classPath) {
    var generator;
    return function () {
      if (!generator) {
        generator = createPrivateUidGeneratorForClass(classPath);
      }
      return generator();
    };
  }
  function replaceClassWithVar(path, className) {
    var id = path.node.id;
    var scope = path.scope;
    if (path.type === "ClassDeclaration") {
      var _className = id.name;
      var varId = scope.generateUidIdentifierBasedOnNode(id);
      var classId = identifier$e(_className);
      scope.rename(_className, varId.name);
      path.get("id").replaceWith(classId);
      return {
        id: cloneNode$g(varId),
        path: path
      };
    } else {
      var _varId;
      if (id) {
        className = id.name;
        _varId = generateLetUidIdentifier(scope.parent, className);
        scope.rename(className, _varId.name);
      } else {
        _varId = generateLetUidIdentifier(scope.parent, typeof className === "string" ? className : "decorated_class");
      }
      var newClassExpr = classExpression(typeof className === "string" ? identifier$e(className) : null, path.node.superClass, path.node.body);
      var _path$replaceWith = path.replaceWith(sequenceExpression$8([newClassExpr, _varId])),
        _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
        newPath = _path$replaceWith2[0];
      return {
        id: cloneNode$g(_varId),
        path: newPath.get("expressions.0")
      };
    }
  }
  function generateClassProperty(key, value, isStatic) {
    if (key.type === "PrivateName") {
      return classPrivateProperty(key, value, undefined, isStatic);
    } else {
      return classProperty(key, value, undefined, undefined, isStatic);
    }
  }
  function assignIdForAnonymousClass(path, className) {
    if (!path.node.id) {
      path.node.id = typeof className === "string" ? identifier$e(className) : path.scope.generateUidIdentifier("Class");
    }
  }
  function addProxyAccessorsFor(className, element, getterKey, setterKey, targetKey, isComputed, isStatic, version) {
    var thisArg = (version === "2023-11" || version === "2023-05") && isStatic ? className : thisExpression$4();
    var getterBody = blockStatement$6([returnStatement$3(memberExpression$a(cloneNode$g(thisArg), cloneNode$g(targetKey)))]);
    var setterBody = blockStatement$6([expressionStatement$7(assignmentExpression$b("=", memberExpression$a(cloneNode$g(thisArg), cloneNode$g(targetKey)), identifier$e("v")))]);
    var getter, setter;
    if (getterKey.type === "PrivateName") {
      getter = classPrivateMethod("get", getterKey, [], getterBody, isStatic);
      setter = classPrivateMethod("set", setterKey, [identifier$e("v")], setterBody, isStatic);
    } else {
      getter = classMethod("get", getterKey, [], getterBody, isComputed, isStatic);
      setter = classMethod("set", setterKey, [identifier$e("v")], setterBody, isComputed, isStatic);
    }
    element.insertAfter(setter);
    element.insertAfter(getter);
  }
  function extractProxyAccessorsFor(targetKey, version) {
    if (version !== "2023-11" && version !== "2023-05" && version !== "2023-01") {
      return [template$1.expression.ast(_templateObject$t || (_templateObject$t = _taggedTemplateLiteralLoose(["\n        function () {\n          return this.", ";\n        }\n      "])), cloneNode$g(targetKey)), template$1.expression.ast(_templateObject2$f || (_templateObject2$f = _taggedTemplateLiteralLoose(["\n        function (value) {\n          this.", " = value;\n        }\n      "])), cloneNode$g(targetKey))];
    }
    return [template$1.expression.ast(_templateObject3$b || (_templateObject3$b = _taggedTemplateLiteralLoose(["\n      o => o.", "\n    "])), cloneNode$g(targetKey)), template$1.expression.ast(_templateObject4$6 || (_templateObject4$6 = _taggedTemplateLiteralLoose(["\n      (o, v) => o.", " = v\n    "])), cloneNode$g(targetKey))];
  }
  function getComputedKeyLastElement(path) {
    path = skipTransparentExprWrappers(path);
    if (path.isSequenceExpression()) {
      var expressions = path.get("expressions");
      return getComputedKeyLastElement(expressions[expressions.length - 1]);
    }
    return path;
  }
  function getComputedKeyMemoiser(path) {
    var element = getComputedKeyLastElement(path);
    if (element.isConstantExpression()) {
      return cloneNode$g(path.node);
    } else if (element.isIdentifier() && path.scope.hasUid(element.node.name)) {
      return cloneNode$g(path.node);
    } else if (element.isAssignmentExpression() && element.get("left").isIdentifier()) {
      return cloneNode$g(element.node.left);
    } else {
      throw new Error("Internal Error: the computed key " + path.toString() + " has not yet been memoised.");
    }
  }
  function prependExpressionsToComputedKey(expressions, fieldPath) {
    var key = fieldPath.get("key");
    if (key.isSequenceExpression()) {
      expressions.push.apply(expressions, _toConsumableArray(key.node.expressions));
    } else {
      expressions.push(key.node);
    }
    key.replaceWith(maybeSequenceExpression(expressions));
  }
  function appendExpressionsToComputedKey(expressions, fieldPath) {
    var key = fieldPath.get("key");
    var completion = getComputedKeyLastElement(key);
    if (completion.isConstantExpression()) {
      prependExpressionsToComputedKey(expressions, fieldPath);
    } else {
      var scopeParent = key.scope.parent;
      var maybeAssignment = memoiseComputedKey(completion.node, scopeParent, scopeParent.generateUid("computedKey"));
      if (!maybeAssignment) {
        prependExpressionsToComputedKey(expressions, fieldPath);
      } else {
        var expressionSequence = [].concat(_toConsumableArray(expressions), [cloneNode$g(maybeAssignment.left)]);
        var completionParent = completion.parentPath;
        if (completionParent.isSequenceExpression()) {
          completionParent.pushContainer("expressions", expressionSequence);
        } else {
          completion.replaceWith(maybeSequenceExpression([cloneNode$g(maybeAssignment)].concat(_toConsumableArray(expressionSequence))));
        }
      }
    }
  }
  function prependExpressionsToFieldInitializer(expressions, fieldPath) {
    var initializer = fieldPath.get("value");
    if (initializer.node) {
      expressions.push(initializer.node);
    } else if (expressions.length > 0) {
      expressions[expressions.length - 1] = unaryExpression$5("void", expressions[expressions.length - 1]);
    }
    initializer.replaceWith(maybeSequenceExpression(expressions));
  }
  function prependExpressionsToStaticBlock(expressions, blockPath) {
    blockPath.unshiftContainer("body", expressionStatement$7(maybeSequenceExpression(expressions)));
  }
  function prependExpressionsToConstructor(expressions, constructorPath) {
    constructorPath.node.body.body.unshift(expressionStatement$7(maybeSequenceExpression(expressions)));
  }
  function isProtoInitCallExpression(expression, protoInitCall) {
    return isCallExpression$8(expression) && isIdentifier$f(expression.callee, {
      name: protoInitCall.name
    });
  }
  function optimizeSuperCallAndExpressions(expressions, protoInitLocal) {
    if (protoInitLocal) {
      if (expressions.length >= 2 && isProtoInitCallExpression(expressions[1], protoInitLocal)) {
        var mergedSuperCall = callExpression$c(cloneNode$g(protoInitLocal), [expressions[0]]);
        expressions.splice(0, 2, mergedSuperCall);
      }
      if (expressions.length >= 2 && isThisExpression$2(expressions[expressions.length - 1]) && isProtoInitCallExpression(expressions[expressions.length - 2], protoInitLocal)) {
        expressions.splice(expressions.length - 1, 1);
      }
    }
    return maybeSequenceExpression(expressions);
  }
  function insertExpressionsAfterSuperCallAndOptimize(expressions, constructorPath, protoInitLocal) {
    constructorPath.traverse({
      CallExpression: {
        exit: function exit(path) {
          if (!path.get("callee").isSuper()) return;
          var newNodes = [path.node].concat(_toConsumableArray(expressions.map(function (expr) {
            return cloneNode$g(expr);
          })));
          if (path.isCompletionRecord()) {
            newNodes.push(thisExpression$4());
          }
          path.replaceWith(optimizeSuperCallAndExpressions(newNodes, protoInitLocal));
          path.skip();
        }
      },
      ClassMethod: function ClassMethod(path) {
        if (path.node.kind === "constructor") {
          path.skip();
        }
      }
    });
  }
  function createConstructorFromExpressions(expressions, isDerivedClass) {
    var body = [expressionStatement$7(maybeSequenceExpression(expressions))];
    if (isDerivedClass) {
      body.unshift(expressionStatement$7(callExpression$c(_super$1(), [spreadElement$2(identifier$e("args"))])));
    }
    return classMethod("constructor", identifier$e("constructor"), isDerivedClass ? [restElement$2(identifier$e("args"))] : [], blockStatement$6(body));
  }
  function createStaticBlockFromExpressions(expressions) {
    return staticBlock([expressionStatement$7(maybeSequenceExpression(expressions))]);
  }
  var FIELD = 0;
  var ACCESSOR = 1;
  var METHOD = 2;
  var GETTER = 3;
  var SETTER = 4;
  var STATIC_OLD_VERSION = 5;
  var STATIC = 8;
  var DECORATORS_HAVE_THIS = 16;
  function getElementKind(element) {
    switch (element.node.type) {
      case "ClassProperty":
      case "ClassPrivateProperty":
        return FIELD;
      case "ClassAccessorProperty":
        return ACCESSOR;
      case "ClassMethod":
      case "ClassPrivateMethod":
        if (element.node.kind === "get") {
          return GETTER;
        } else if (element.node.kind === "set") {
          return SETTER;
        } else {
          return METHOD;
        }
    }
  }
  function toSortedDecoratorInfo(info) {
    return [].concat(_toConsumableArray(info.filter(function (el) {
      return el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER;
    })), _toConsumableArray(info.filter(function (el) {
      return !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER;
    })), _toConsumableArray(info.filter(function (el) {
      return el.isStatic && el.kind === FIELD;
    })), _toConsumableArray(info.filter(function (el) {
      return !el.isStatic && el.kind === FIELD;
    })));
  }
  function generateDecorationList(decorators, decoratorsThis, version) {
    var decsCount = decorators.length;
    var haveOneThis = decoratorsThis.some(Boolean);
    var decs = [];
    for (var i = 0; i < decsCount; i++) {
      if ((version === "2023-11" || version === "2023-05") && haveOneThis) {
        decs.push(decoratorsThis[i] || unaryExpression$5("void", numericLiteral$6(0)));
      }
      decs.push(decorators[i].expression);
    }
    return {
      haveThis: haveOneThis,
      decs: decs
    };
  }
  function generateDecorationExprs(decorationInfo, version) {
    return arrayExpression$1(decorationInfo.map(function (el) {
      var flag = el.kind;
      if (el.isStatic) {
        flag += version === "2023-11" || version === "2023-05" ? STATIC : STATIC_OLD_VERSION;
      }
      if (el.decoratorsHaveThis) flag += DECORATORS_HAVE_THIS;
      return arrayExpression$1([el.decoratorsArray, numericLiteral$6(flag), el.name].concat(_toConsumableArray(el.privateMethods || [])));
    }));
  }
  function extractElementLocalAssignments(decorationInfo) {
    var localIds = [];
    for (var _iterator = _createForOfIteratorHelperLoose(decorationInfo), _step; !(_step = _iterator()).done;) {
      var el = _step.value;
      var locals = el.locals;
      if (Array.isArray(locals)) {
        localIds.push.apply(localIds, _toConsumableArray(locals));
      } else if (locals !== undefined) {
        localIds.push(locals);
      }
    }
    return localIds;
  }
  function addCallAccessorsFor(version, element, key, getId, setId, isStatic) {
    element.insertAfter(classPrivateMethod("get", cloneNode$g(key), [], blockStatement$6([returnStatement$3(callExpression$c(cloneNode$g(getId), version === "2023-11" && isStatic ? [] : [thisExpression$4()]))]), isStatic));
    element.insertAfter(classPrivateMethod("set", cloneNode$g(key), [identifier$e("v")], blockStatement$6([expressionStatement$7(callExpression$c(cloneNode$g(setId), version === "2023-11" && isStatic ? [identifier$e("v")] : [thisExpression$4(), identifier$e("v")]))]), isStatic));
  }
  function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
    var params;
    var block;
    if (element.node.kind === "set") {
      params = [identifier$e("v")];
      block = [expressionStatement$7(callExpression$c(methodLocalVar, [thisExpression$4(), identifier$e("v")]))];
    } else {
      params = [];
      block = [returnStatement$3(callExpression$c(methodLocalVar, [thisExpression$4()]))];
    }
    element.replaceWith(classPrivateMethod(element.node.kind, cloneNode$g(key), params, blockStatement$6(block), isStatic));
  }
  function isClassDecoratableElementPath(path) {
    var type = path.type;
    return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
  }
  function staticBlockToIIFE(block) {
    return callExpression$c(arrowFunctionExpression$4([], blockStatement$6(block.body)), []);
  }
  function staticBlockToFunctionClosure(block) {
    return functionExpression$2(null, [], blockStatement$6(block.body));
  }
  function fieldInitializerToClosure(value) {
    return functionExpression$2(null, [], blockStatement$6([returnStatement$3(value)]));
  }
  function maybeSequenceExpression(exprs) {
    if (exprs.length === 0) return unaryExpression$5("void", numericLiteral$6(0));
    if (exprs.length === 1) return exprs[0];
    return sequenceExpression$8(exprs);
  }
  function createFunctionExpressionFromPrivateMethod(node) {
    var params = node.params,
      body = node.body,
      isGenerator = node.generator,
      isAsync = node.async;
    return functionExpression$2(undefined, params, body, isGenerator, isAsync);
  }
  function createSetFunctionNameCall(state, className) {
    return callExpression$c(state.addHelper("setFunctionName"), [thisExpression$4(), className]);
  }
  function createToPropertyKeyCall(state, propertyKey) {
    return callExpression$c(state.addHelper("toPropertyKey"), [propertyKey]);
  }
  function createPrivateBrandCheckClosure(brandName) {
    return arrowFunctionExpression$4([identifier$e("_")], binaryExpression$5("in", cloneNode$g(brandName), identifier$e("_")));
  }
  function usesPrivateField(expression) {
    try {
      traverseFast$2(expression, function (node) {
        if (isPrivateName$3(node)) {
          throw null;
        }
      });
      return false;
    } catch (_unused) {
      return true;
    }
  }
  function convertToComputedKey(path) {
    var node = path.node;
    node.computed = true;
    if (isIdentifier$f(node.key)) {
      node.key = stringLiteral$6(node.key.name);
    }
  }
  function hasInstancePrivateAccess(path, privateNames) {
    var containsInstancePrivateAccess = false;
    if (privateNames.length > 0) {
      var privateNameVisitor = privateNameVisitorFactory({
        PrivateName: function PrivateName(path, state) {
          if (state.privateNamesMap.has(path.node.id.name)) {
            containsInstancePrivateAccess = true;
            path.stop();
          }
        }
      });
      var privateNamesMap = new Map();
      for (var _iterator2 = _createForOfIteratorHelperLoose(privateNames), _step2; !(_step2 = _iterator2()).done;) {
        var name = _step2.value;
        privateNamesMap.set(name, null);
      }
      path.traverse(privateNameVisitor, {
        privateNamesMap: privateNamesMap
      });
    }
    return containsInstancePrivateAccess;
  }
  function checkPrivateMethodUpdateError(path, decoratedPrivateMethods) {
    var privateNameVisitor = privateNameVisitorFactory({
      PrivateName: function PrivateName(path, state) {
        if (!state.privateNamesMap.has(path.node.id.name)) return;
        var parentPath = path.parentPath;
        var parentParentPath = parentPath.parentPath;
        if (parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node || parentParentPath.node.type === "UpdateExpression" || parentParentPath.node.type === "RestElement" || parentParentPath.node.type === "ArrayPattern" || parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" || parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
          throw path.buildCodeFrameError("Decorated private methods are read-only, but \"#" + path.node.id.name + "\" is updated via this expression.");
        }
      }
    });
    var privateNamesMap = new Map();
    for (var _iterator3 = _createForOfIteratorHelperLoose(decoratedPrivateMethods), _step3; !(_step3 = _iterator3()).done;) {
      var name = _step3.value;
      privateNamesMap.set(name, null);
    }
    path.traverse(privateNameVisitor, {
      privateNamesMap: privateNamesMap
    });
  }
  function transformClass$1(path, state, constantSuper, ignoreFunctionLength, className, propertyVisitor, version) {
    var _path$node$id, _classDecorationsId;
    var body = path.get("body.body");
    var classDecorators = path.node.decorators;
    var hasElementDecorators = false;
    var hasComputedKeysSideEffects = false;
    var elemDecsUseFnContext = false;
    var generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
    var classAssignments = [];
    var scopeParent = path.scope.parent;
    var memoiseExpression = function memoiseExpression(expression, hint, assignments) {
      var localEvaluatedId = generateLetUidIdentifier(scopeParent, hint);
      assignments.push(assignmentExpression$b("=", localEvaluatedId, expression));
      return cloneNode$g(localEvaluatedId);
    };
    var protoInitLocal;
    var staticInitLocal;
    var classIdName = (_path$node$id = path.node.id) == null ? void 0 : _path$node$id.name;
    var setClassName = typeof className === "object" ? className : undefined;
    var usesFunctionContextOrYieldAwait = function usesFunctionContextOrYieldAwait(decorator) {
      try {
        traverseFast$2(decorator, function (node) {
          if (isThisExpression$2(node) || isSuper$3(node) || isYieldExpression$1(node) || isAwaitExpression(node) || isIdentifier$f(node, {
            name: "arguments"
          }) || classIdName && isIdentifier$f(node, {
            name: classIdName
          }) || isMetaProperty$1(node) && node.meta.name !== "import") {
            throw null;
          }
        });
        return false;
      } catch (_unused2) {
        return true;
      }
    };
    var instancePrivateNames = [];
    for (var _iterator4 = _createForOfIteratorHelperLoose(body), _step4; !(_step4 = _iterator4()).done;) {
      var _element2 = _step4.value;
      if (!isClassDecoratableElementPath(_element2)) {
        continue;
      }
      var elementNode = _element2.node;
      if (!elementNode["static"] && isPrivateName$3(elementNode.key)) {
        instancePrivateNames.push(elementNode.key.id.name);
      }
      if (isDecorated(elementNode)) {
        switch (elementNode.type) {
          case "ClassProperty":
            propertyVisitor.ClassProperty(_element2, state);
            break;
          case "ClassPrivateProperty":
            propertyVisitor.ClassPrivateProperty(_element2, state);
            break;
          case "ClassAccessorProperty":
            propertyVisitor.ClassAccessorProperty(_element2, state);
            if (version === "2023-11") {
              break;
            }
          default:
            if (elementNode["static"]) {
              var _staticInitLocal;
              (_staticInitLocal = staticInitLocal) != null ? _staticInitLocal : staticInitLocal = generateLetUidIdentifier(scopeParent, "initStatic");
            } else {
              var _protoInitLocal;
              (_protoInitLocal = protoInitLocal) != null ? _protoInitLocal : protoInitLocal = generateLetUidIdentifier(scopeParent, "initProto");
            }
            break;
        }
        hasElementDecorators = true;
        elemDecsUseFnContext || (elemDecsUseFnContext = elementNode.decorators.some(usesFunctionContextOrYieldAwait));
      } else if (elementNode.type === "ClassAccessorProperty") {
        propertyVisitor.ClassAccessorProperty(_element2, state);
        var _key3 = elementNode.key,
          _value = elementNode.value,
          _isStatic = elementNode["static"],
          computed = elementNode.computed;
        var _newId = generateClassPrivateUid();
        var _newField = generateClassProperty(_newId, _value, _isStatic);
        var keyPath = _element2.get("key");
        var _element2$replaceWith = _element2.replaceWith(_newField),
          _element2$replaceWith2 = _slicedToArray(_element2$replaceWith, 1),
          _newPath2 = _element2$replaceWith2[0];
        var getterKey = void 0,
          setterKey = void 0;
        if (computed && !keyPath.isConstantExpression()) {
          getterKey = memoiseComputedKey(createToPropertyKeyCall(state, _key3), scopeParent, scopeParent.generateUid("computedKey"));
          setterKey = cloneNode$g(getterKey.left);
        } else {
          getterKey = cloneNode$g(_key3);
          setterKey = cloneNode$g(_key3);
        }
        assignIdForAnonymousClass(path, className);
        addProxyAccessorsFor(path.node.id, _newPath2, getterKey, setterKey, _newId, computed, _isStatic, version);
      }
      if ("computed" in _element2.node && _element2.node.computed) {
        hasComputedKeysSideEffects || (hasComputedKeysSideEffects = !scopeParent.isStatic(_element2.node.key));
      }
    }
    if (!classDecorators && !hasElementDecorators) {
      if (!path.node.id && typeof className === "string") {
        path.node.id = identifier$e(className);
      }
      if (setClassName) {
        path.node.body.body.unshift(createStaticBlockFromExpressions([createSetFunctionNameCall(state, setClassName)]));
      }
      return;
    }
    var elementDecoratorInfo = [];
    var constructorPath;
    var decoratedPrivateMethods = new Set();
    var classInitLocal, classIdLocal;
    var decoratorReceiverId = null;
    function handleDecorators(decorators) {
      var hasSideEffects = false;
      var usesFnContext = false;
      var decoratorsThis = [];
      for (var _iterator5 = _createForOfIteratorHelperLoose(decorators), _step5; !(_step5 = _iterator5()).done;) {
        var decorator = _step5.value;
        var expression = decorator.expression;
        var object = void 0;
        if ((version === "2023-11" || version === "2023-05") && isMemberExpression$8(expression)) {
          if (isSuper$3(expression.object)) {
            object = thisExpression$4();
          } else if (scopeParent.isStatic(expression.object)) {
            object = cloneNode$g(expression.object);
          } else {
            var _decoratorReceiverId;
            (_decoratorReceiverId = decoratorReceiverId) != null ? _decoratorReceiverId : decoratorReceiverId = generateLetUidIdentifier(scopeParent, "obj");
            object = assignmentExpression$b("=", cloneNode$g(decoratorReceiverId), expression.object);
            expression.object = cloneNode$g(decoratorReceiverId);
          }
        }
        decoratorsThis.push(object);
        hasSideEffects || (hasSideEffects = !scopeParent.isStatic(expression));
        usesFnContext || (usesFnContext = usesFunctionContextOrYieldAwait(decorator));
      }
      return {
        hasSideEffects: hasSideEffects,
        usesFnContext: usesFnContext,
        decoratorsThis: decoratorsThis
      };
    }
    var willExtractSomeElemDecs = hasComputedKeysSideEffects || elemDecsUseFnContext || version !== "2023-11";
    var needsDeclaraionForClassBinding = false;
    var classDecorationsFlag = 0;
    var classDecorations = [];
    var classDecorationsId;
    var computedKeyAssignments = [];
    if (classDecorators) {
      classInitLocal = generateLetUidIdentifier(scopeParent, "initClass");
      needsDeclaraionForClassBinding = path.isClassDeclaration();
      var _replaceClassWithVar = replaceClassWithVar(path, className);
      classIdLocal = _replaceClassWithVar.id;
      path = _replaceClassWithVar.path;
      path.node.decorators = null;
      var classDecsUsePrivateName = classDecorators.some(usesPrivateField);
      var _handleDecorators = handleDecorators(classDecorators),
        hasSideEffects = _handleDecorators.hasSideEffects,
        usesFnContext = _handleDecorators.usesFnContext,
        decoratorsThis = _handleDecorators.decoratorsThis;
      var _generateDecorationLi = generateDecorationList(classDecorators, decoratorsThis, version),
        haveThis = _generateDecorationLi.haveThis,
        decs = _generateDecorationLi.decs;
      classDecorationsFlag = haveThis ? 1 : 0;
      classDecorations = decs;
      if (usesFnContext || hasSideEffects && willExtractSomeElemDecs || classDecsUsePrivateName) {
        classDecorationsId = memoiseExpression(arrayExpression$1(classDecorations), "classDecs", classAssignments);
      }
      if (!hasElementDecorators) {
        for (var _iterator6 = _createForOfIteratorHelperLoose(path.get("body.body")), _step6; !(_step6 = _iterator6()).done;) {
          var element = _step6.value;
          var node = element.node;
          var isComputed = "computed" in node && node.computed;
          if (isComputed) {
            if (element.isClassProperty({
              "static": true
            })) {
              if (!element.get("key").isConstantExpression()) {
                var key = node.key;
                var maybeAssignment = memoiseComputedKey(key, scopeParent, scopeParent.generateUid("computedKey"));
                if (maybeAssignment != null) {
                  node.key = cloneNode$g(maybeAssignment.left);
                  computedKeyAssignments.push(maybeAssignment);
                }
              }
            } else if (computedKeyAssignments.length > 0) {
              prependExpressionsToComputedKey(computedKeyAssignments, element);
              computedKeyAssignments = [];
            }
          }
        }
      }
    } else {
      assignIdForAnonymousClass(path, className);
      classIdLocal = cloneNode$g(path.node.id);
    }
    var lastInstancePrivateName;
    var needsInstancePrivateBrandCheck = false;
    var fieldInitializerExpressions = [];
    var staticFieldInitializerExpressions = [];
    if (hasElementDecorators) {
      if (protoInitLocal) {
        var protoInitCall = callExpression$c(cloneNode$g(protoInitLocal), [thisExpression$4()]);
        fieldInitializerExpressions.push(protoInitCall);
      }
      for (var _iterator7 = _createForOfIteratorHelperLoose(body), _step7; !(_step7 = _iterator7()).done;) {
        var _element = _step7.value;
        if (!isClassDecoratableElementPath(_element)) {
          if (staticFieldInitializerExpressions.length > 0 && _element.isStaticBlock()) {
            prependExpressionsToStaticBlock(staticFieldInitializerExpressions, _element);
            staticFieldInitializerExpressions = [];
          }
          continue;
        }
        var _node = _element.node;
        var decorators = _node.decorators;
        var hasDecorators = !!(decorators != null && decorators.length);
        var _isComputed = "computed" in _node && _node.computed;
        var name = "computedKey";
        if (_node.key.type === "PrivateName") {
          name = _node.key.id.name;
        } else if (!_isComputed && _node.key.type === "Identifier") {
          name = _node.key.name;
        }
        var decoratorsArray = void 0;
        var decoratorsHaveThis = void 0;
        if (hasDecorators) {
          var _handleDecorators2 = handleDecorators(decorators),
            _hasSideEffects = _handleDecorators2.hasSideEffects,
            _usesFnContext = _handleDecorators2.usesFnContext,
            _decoratorsThis = _handleDecorators2.decoratorsThis;
          var _generateDecorationLi2 = generateDecorationList(decorators, _decoratorsThis, version),
            _decs = _generateDecorationLi2.decs,
            _haveThis = _generateDecorationLi2.haveThis;
          decoratorsHaveThis = _haveThis;
          decoratorsArray = _decs.length === 1 ? _decs[0] : arrayExpression$1(_decs);
          if (_usesFnContext || _hasSideEffects && willExtractSomeElemDecs) {
            decoratorsArray = memoiseExpression(decoratorsArray, name + "Decs", computedKeyAssignments);
          }
        }
        if (_isComputed) {
          if (!_element.get("key").isConstantExpression()) {
            var _key = _node.key;
            var _maybeAssignment = memoiseComputedKey(hasDecorators ? createToPropertyKeyCall(state, _key) : _key, scopeParent, scopeParent.generateUid("computedKey"));
            if (_maybeAssignment != null) {
              if (classDecorators && _element.isClassProperty({
                "static": true
              })) {
                _node.key = cloneNode$g(_maybeAssignment.left);
                computedKeyAssignments.push(_maybeAssignment);
              } else {
                _node.key = _maybeAssignment;
              }
            }
          }
        }
        var _key2 = _node.key,
          isStatic = _node["static"];
        var isPrivate = _key2.type === "PrivateName";
        var kind = getElementKind(_element);
        if (isPrivate && !isStatic) {
          if (hasDecorators) {
            needsInstancePrivateBrandCheck = true;
          }
          if (isClassPrivateProperty(_node) || !lastInstancePrivateName) {
            lastInstancePrivateName = _key2;
          }
        }
        if (_element.isClassMethod({
          kind: "constructor"
        })) {
          constructorPath = _element;
        }
        var locals = void 0;
        if (hasDecorators) {
          var privateMethods = void 0;
          var nameExpr = void 0;
          if (_isComputed) {
            nameExpr = getComputedKeyMemoiser(_element.get("key"));
          } else if (_key2.type === "PrivateName") {
            nameExpr = stringLiteral$6(_key2.id.name);
          } else if (_key2.type === "Identifier") {
            nameExpr = stringLiteral$6(_key2.name);
          } else {
            nameExpr = cloneNode$g(_key2);
          }
          if (kind === ACCESSOR) {
            var _ref = _element.node,
              value = _ref.value;
            var params = version === "2023-11" && isStatic ? [] : [thisExpression$4()];
            if (value) {
              params.push(cloneNode$g(value));
            }
            var newId = generateClassPrivateUid();
            var newFieldInitId = generateLetUidIdentifier(scopeParent, "init_" + name);
            var newValue = callExpression$c(cloneNode$g(newFieldInitId), params);
            var newField = generateClassProperty(newId, newValue, isStatic);
            var _element$replaceWith = _element.replaceWith(newField),
              _element$replaceWith2 = _slicedToArray(_element$replaceWith, 1),
              newPath = _element$replaceWith2[0];
            if (isPrivate) {
              privateMethods = extractProxyAccessorsFor(newId, version);
              var getId = generateLetUidIdentifier(scopeParent, "get_" + name);
              var setId = generateLetUidIdentifier(scopeParent, "set_" + name);
              addCallAccessorsFor(version, newPath, _key2, getId, setId, isStatic);
              locals = [newFieldInitId, getId, setId];
            } else {
              assignIdForAnonymousClass(path, className);
              addProxyAccessorsFor(path.node.id, newPath, cloneNode$g(_key2), isAssignmentExpression$2(_key2) ? cloneNode$g(_key2.left) : cloneNode$g(_key2), newId, _isComputed, isStatic, version);
              locals = [newFieldInitId];
            }
          } else if (kind === FIELD) {
            var initId = generateLetUidIdentifier(scopeParent, "init_" + name);
            var valuePath = _element.get("value");
            var args = version === "2023-11" && isStatic ? [] : [thisExpression$4()];
            if (valuePath.node) args.push(valuePath.node);
            valuePath.replaceWith(callExpression$c(cloneNode$g(initId), args));
            locals = [initId];
            if (isPrivate) {
              privateMethods = extractProxyAccessorsFor(_key2, version);
            }
          } else if (isPrivate) {
            var callId = generateLetUidIdentifier(scopeParent, "call_" + name);
            locals = [callId];
            var replaceSupers = new ReplaceSupers({
              constantSuper: constantSuper,
              methodPath: _element,
              objectRef: classIdLocal,
              superRef: path.node.superClass,
              file: state.file,
              refToPreserve: classIdLocal
            });
            replaceSupers.replace();
            privateMethods = [createFunctionExpressionFromPrivateMethod(_element.node)];
            if (kind === GETTER || kind === SETTER) {
              movePrivateAccessor(_element, cloneNode$g(_key2), cloneNode$g(callId), isStatic);
            } else {
              var _node2 = _element.node;
              path.node.body.body.unshift(classPrivateProperty(_key2, cloneNode$g(callId), [], _node2["static"]));
              decoratedPrivateMethods.add(_key2.id.name);
              _element.remove();
            }
          }
          elementDecoratorInfo.push({
            kind: kind,
            decoratorsArray: decoratorsArray,
            decoratorsHaveThis: decoratorsHaveThis,
            name: nameExpr,
            isStatic: isStatic,
            privateMethods: privateMethods,
            locals: locals
          });
          if (_element.node) {
            _element.node.decorators = null;
          }
        }
        if (_isComputed && computedKeyAssignments.length > 0) {
          if (classDecorators && _element.isClassProperty({
            "static": true
          })) ; else {
            prependExpressionsToComputedKey(computedKeyAssignments, kind === ACCESSOR ? _element.getNextSibling() : _element);
            computedKeyAssignments = [];
          }
        }
        if (fieldInitializerExpressions.length > 0 && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
          prependExpressionsToFieldInitializer(fieldInitializerExpressions, _element);
          fieldInitializerExpressions = [];
        }
        if (staticFieldInitializerExpressions.length > 0 && isStatic && (kind === FIELD || kind === ACCESSOR)) {
          prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, _element);
          staticFieldInitializerExpressions = [];
        }
        if (hasDecorators && version === "2023-11") {
          if (kind === FIELD || kind === ACCESSOR) {
            var initExtraId = generateLetUidIdentifier(scopeParent, "init_extra_" + name);
            locals.push(initExtraId);
            var initExtraCall = callExpression$c(cloneNode$g(initExtraId), isStatic ? [] : [thisExpression$4()]);
            if (!isStatic) {
              fieldInitializerExpressions.push(initExtraCall);
            } else {
              staticFieldInitializerExpressions.push(initExtraCall);
            }
          }
        }
      }
    }
    if (computedKeyAssignments.length > 0) {
      var elements = path.get("body.body");
      var lastComputedElement;
      for (var i = elements.length - 1; i >= 0; i--) {
        var _path = elements[i];
        var _node3 = _path.node;
        if (_node3.computed) {
          if (classDecorators && isClassProperty(_node3, {
            "static": true
          })) {
            continue;
          }
          lastComputedElement = _path;
          break;
        }
      }
      if (lastComputedElement != null) {
        appendExpressionsToComputedKey(computedKeyAssignments, lastComputedElement);
        computedKeyAssignments = [];
      }
    }
    if (fieldInitializerExpressions.length > 0) {
      var isDerivedClass = !!path.node.superClass;
      if (constructorPath) {
        if (isDerivedClass) {
          insertExpressionsAfterSuperCallAndOptimize(fieldInitializerExpressions, constructorPath, protoInitLocal);
        } else {
          prependExpressionsToConstructor(fieldInitializerExpressions, constructorPath);
        }
      } else {
        path.node.body.body.unshift(createConstructorFromExpressions(fieldInitializerExpressions, isDerivedClass));
      }
      fieldInitializerExpressions = [];
    }
    if (staticFieldInitializerExpressions.length > 0) {
      path.node.body.body.push(createStaticBlockFromExpressions(staticFieldInitializerExpressions));
      staticFieldInitializerExpressions = [];
    }
    var sortedElementDecoratorInfo = toSortedDecoratorInfo(elementDecoratorInfo);
    var elementDecorations = generateDecorationExprs(version === "2023-11" ? elementDecoratorInfo : sortedElementDecoratorInfo, version);
    var elementLocals = extractElementLocalAssignments(sortedElementDecoratorInfo);
    if (protoInitLocal) {
      elementLocals.push(protoInitLocal);
    }
    if (staticInitLocal) {
      elementLocals.push(staticInitLocal);
    }
    var classLocals = [];
    var classInitInjected = false;
    var classInitCall = classInitLocal && callExpression$c(cloneNode$g(classInitLocal), []);
    var originalClassPath = path;
    var originalClass = path.node;
    var staticClosures = [];
    if (classDecorators) {
      classLocals.push(classIdLocal, classInitLocal);
      var statics = [];
      path.get("body.body").forEach(function (element) {
        if (element.isStaticBlock()) {
          if (hasInstancePrivateAccess(element, instancePrivateNames)) {
            var staticBlockClosureId = memoiseExpression(staticBlockToFunctionClosure(element.node), "staticBlock", staticClosures);
            staticFieldInitializerExpressions.push(callExpression$c(memberExpression$a(staticBlockClosureId, identifier$e("call")), [thisExpression$4()]));
          } else {
            staticFieldInitializerExpressions.push(staticBlockToIIFE(element.node));
          }
          element.remove();
          return;
        }
        if ((element.isClassProperty() || element.isClassPrivateProperty()) && element.node["static"]) {
          var _valuePath = element.get("value");
          if (hasInstancePrivateAccess(_valuePath, instancePrivateNames)) {
            var fieldValueClosureId = memoiseExpression(fieldInitializerToClosure(_valuePath.node), "fieldValue", staticClosures);
            _valuePath.replaceWith(callExpression$c(memberExpression$a(fieldValueClosureId, identifier$e("call")), [thisExpression$4()]));
          }
          if (staticFieldInitializerExpressions.length > 0) {
            prependExpressionsToFieldInitializer(staticFieldInitializerExpressions, element);
            staticFieldInitializerExpressions = [];
          }
          element.node["static"] = false;
          statics.push(element.node);
          element.remove();
        } else if (element.isClassPrivateMethod({
          "static": true
        })) {
          if (hasInstancePrivateAccess(element, instancePrivateNames)) {
            var _replaceSupers = new ReplaceSupers({
              constantSuper: constantSuper,
              methodPath: element,
              objectRef: classIdLocal,
              superRef: path.node.superClass,
              file: state.file,
              refToPreserve: classIdLocal
            });
            _replaceSupers.replace();
            var privateMethodDelegateId = memoiseExpression(createFunctionExpressionFromPrivateMethod(element.node), element.get("key.id").node.name, staticClosures);
            if (ignoreFunctionLength) {
              element.node.params = [restElement$2(identifier$e("arg"))];
              element.node.body = blockStatement$6([returnStatement$3(callExpression$c(memberExpression$a(privateMethodDelegateId, identifier$e("apply")), [thisExpression$4(), identifier$e("arg")]))]);
            } else {
              element.node.params = element.node.params.map(function (p, i) {
                if (isRestElement$2(p)) {
                  return restElement$2(identifier$e("arg"));
                } else {
                  return identifier$e("_" + i);
                }
              });
              element.node.body = blockStatement$6([returnStatement$3(callExpression$c(memberExpression$a(privateMethodDelegateId, identifier$e("apply")), [thisExpression$4(), identifier$e("arguments")]))]);
            }
          }
          element.node["static"] = false;
          statics.push(element.node);
          element.remove();
        }
      });
      if (statics.length > 0 || staticFieldInitializerExpressions.length > 0) {
        var staticsClass = template$1.expression.ast(_templateObject5$3 || (_templateObject5$3 = _taggedTemplateLiteralLoose(["\n        class extends ", " {}\n      "])), state.addHelper("identity"));
        staticsClass.body.body = [classProperty(toExpression$1(originalClass), undefined, undefined, undefined, true, true)].concat(statics);
        var constructorBody = [];
        var newExpr = newExpression(staticsClass, []);
        if (staticFieldInitializerExpressions.length > 0) {
          constructorBody.push.apply(constructorBody, _toConsumableArray(staticFieldInitializerExpressions));
        }
        if (classInitCall) {
          classInitInjected = true;
          constructorBody.push(classInitCall);
        }
        if (constructorBody.length > 0) {
          constructorBody.unshift(callExpression$c(_super$1(), [cloneNode$g(classIdLocal)]));
          staticsClass.body.body.push(createConstructorFromExpressions(constructorBody, false));
        } else {
          newExpr.arguments.push(cloneNode$g(classIdLocal));
        }
        var _path$replaceWith3 = path.replaceWith(newExpr),
          _path$replaceWith4 = _slicedToArray(_path$replaceWith3, 1),
          _newPath = _path$replaceWith4[0];
        originalClassPath = _newPath.get("callee").get("body").get("body.0.key");
      }
    }
    if (!classInitInjected && classInitCall) {
      path.node.body.body.push(staticBlock([expressionStatement$7(classInitCall)]));
    }
    var superClass = originalClass.superClass;
    if (superClass && (version === "2023-11" || version === "2023-05")) {
      var id = path.scope.maybeGenerateMemoised(superClass);
      if (id) {
        originalClass.superClass = assignmentExpression$b("=", id, superClass);
        superClass = id;
      }
    }
    var applyDecoratorWrapper = staticBlock([]);
    originalClass.body.body.unshift(applyDecoratorWrapper);
    var applyDecsBody = applyDecoratorWrapper.body;
    if (computedKeyAssignments.length > 0) {
      var _elements = originalClassPath.get("body.body");
      var firstPublicElement;
      for (var _iterator8 = _createForOfIteratorHelperLoose(_elements), _step8; !(_step8 = _iterator8()).done;) {
        var _path2 = _step8.value;
        if ((_path2.isClassProperty() || _path2.isClassMethod()) && _path2.node.kind !== "constructor") {
          firstPublicElement = _path2;
          break;
        }
      }
      if (firstPublicElement != null) {
        convertToComputedKey(firstPublicElement);
        prependExpressionsToComputedKey(computedKeyAssignments, firstPublicElement);
      } else {
        originalClass.body.body.unshift(classProperty(sequenceExpression$8([].concat(_toConsumableArray(computedKeyAssignments), [stringLiteral$6("_")])), undefined, undefined, undefined, true, true));
        applyDecsBody.push(expressionStatement$7(unaryExpression$5("delete", memberExpression$a(thisExpression$4(), identifier$e("_")))));
      }
      computedKeyAssignments = [];
    }
    applyDecsBody.push(expressionStatement$7(createLocalsAssignment(elementLocals, classLocals, elementDecorations, (_classDecorationsId = classDecorationsId) != null ? _classDecorationsId : arrayExpression$1(classDecorations), numericLiteral$6(classDecorationsFlag), needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, setClassName, cloneNode$g(superClass), state, version)));
    if (staticInitLocal) {
      applyDecsBody.push(expressionStatement$7(callExpression$c(cloneNode$g(staticInitLocal), [thisExpression$4()])));
    }
    if (staticClosures.length > 0) {
      applyDecsBody.push.apply(applyDecsBody, _toConsumableArray(staticClosures.map(function (expr) {
        return expressionStatement$7(expr);
      })));
    }
    path.insertBefore(classAssignments.map(function (expr) {
      return expressionStatement$7(expr);
    }));
    if (needsDeclaraionForClassBinding) {
      var classBindingInfo = scopeParent.getBinding(classIdLocal.name);
      if (!classBindingInfo.constantViolations.length) {
        path.insertBefore(variableDeclaration$6("let", [variableDeclarator$6(cloneNode$g(classIdLocal))]));
      } else {
        var classOuterBindingDelegateLocal = scopeParent.generateUidIdentifier("t" + classIdLocal.name);
        var classOuterBindingLocal = classIdLocal;
        path.replaceWithMultiple([variableDeclaration$6("let", [variableDeclarator$6(cloneNode$g(classOuterBindingLocal)), variableDeclarator$6(classOuterBindingDelegateLocal)]), blockStatement$6([variableDeclaration$6("let", [variableDeclarator$6(cloneNode$g(classIdLocal))]), path.node, expressionStatement$7(assignmentExpression$b("=", cloneNode$g(classOuterBindingDelegateLocal), cloneNode$g(classIdLocal)))]), expressionStatement$7(assignmentExpression$b("=", cloneNode$g(classOuterBindingLocal), cloneNode$g(classOuterBindingDelegateLocal)))]);
      }
    }
    if (decoratedPrivateMethods.size > 0) {
      checkPrivateMethodUpdateError(path, decoratedPrivateMethods);
    }
    path.scope.crawl();
    return path;
  }
  function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, classDecorationsFlag, maybePrivateBrandName, setClassName, superClass, state, version) {
    var lhs, rhs;
    var args = [setClassName ? createSetFunctionNameCall(state, setClassName) : thisExpression$4(), classDecorations, elementDecorations];
    {
      if (version !== "2023-11") {
        args.splice(1, 2, elementDecorations, classDecorations);
      }
      if (version === "2021-12" || version === "2022-03" && !state.availableHelper("applyDecs2203R")) {
        lhs = arrayPattern([].concat(_toConsumableArray(elementLocals), _toConsumableArray(classLocals)));
        rhs = callExpression$c(state.addHelper(version === "2021-12" ? "applyDecs" : "applyDecs2203"), args);
        return assignmentExpression$b("=", lhs, rhs);
      } else if (version === "2022-03") {
        rhs = callExpression$c(state.addHelper("applyDecs2203R"), args);
      } else if (version === "2023-01") {
        if (maybePrivateBrandName) {
          args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
        }
        rhs = callExpression$c(state.addHelper("applyDecs2301"), args);
      } else if (version === "2023-05") {
        if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
          args.push(classDecorationsFlag);
        }
        if (maybePrivateBrandName) {
          args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
        } else if (superClass) {
          args.push(unaryExpression$5("void", numericLiteral$6(0)));
        }
        if (superClass) args.push(superClass);
        rhs = callExpression$c(state.addHelper("applyDecs2305"), args);
      }
    }
    if (version === "2023-11") {
      if (maybePrivateBrandName || superClass || classDecorationsFlag.value !== 0) {
        args.push(classDecorationsFlag);
      }
      if (maybePrivateBrandName) {
        args.push(createPrivateBrandCheckClosure(maybePrivateBrandName));
      } else if (superClass) {
        args.push(unaryExpression$5("void", numericLiteral$6(0)));
      }
      if (superClass) args.push(superClass);
      rhs = callExpression$c(state.addHelper("applyDecs2311"), args);
    }
    if (elementLocals.length > 0) {
      if (classLocals.length > 0) {
        lhs = objectPattern$1([objectProperty$1(identifier$e("e"), arrayPattern(elementLocals)), objectProperty$1(identifier$e("c"), arrayPattern(classLocals))]);
      } else {
        lhs = arrayPattern(elementLocals);
        rhs = memberExpression$a(rhs, identifier$e("e"), false, false);
      }
    } else {
      lhs = arrayPattern(classLocals);
      rhs = memberExpression$a(rhs, identifier$e("c"), false, false);
    }
    return assignmentExpression$b("=", lhs, rhs);
  }
  function isProtoKey(node) {
    return node.type === "Identifier" ? node.name === "__proto__" : node.value === "__proto__";
  }
  function isDecorated(node) {
    return node.decorators && node.decorators.length > 0;
  }
  function shouldTransformElement(node) {
    switch (node.type) {
      case "ClassAccessorProperty":
        return true;
      case "ClassMethod":
      case "ClassProperty":
      case "ClassPrivateMethod":
      case "ClassPrivateProperty":
        return isDecorated(node);
      default:
        return false;
    }
  }
  function shouldTransformClass(node) {
    return isDecorated(node) || node.body.body.some(shouldTransformElement);
  }
  function NamedEvaluationVisitoryFactory(isAnonymous, visitor) {
    function handleComputedProperty(propertyPath, key, state) {
      switch (key.type) {
        case "StringLiteral":
          return stringLiteral$6(key.value);
        case "NumericLiteral":
        case "BigIntLiteral":
          {
            var keyValue = key.value + "";
            propertyPath.get("key").replaceWith(stringLiteral$6(keyValue));
            return stringLiteral$6(keyValue);
          }
        default:
          {
            var ref = propertyPath.scope.maybeGenerateMemoised(key);
            propertyPath.get("key").replaceWith(assignmentExpression$b("=", ref, createToPropertyKeyCall(state, key)));
            return cloneNode$g(ref);
          }
      }
    }
    return {
      VariableDeclarator: function VariableDeclarator(path, state) {
        var id = path.node.id;
        if (id.type === "Identifier") {
          var initializer = skipTransparentExprWrappers(path.get("init"));
          if (isAnonymous(initializer)) {
            var name = id.name;
            visitor(initializer, state, name);
          }
        }
      },
      AssignmentExpression: function AssignmentExpression(path, state) {
        var id = path.node.left;
        if (id.type === "Identifier") {
          var initializer = skipTransparentExprWrappers(path.get("right"));
          if (isAnonymous(initializer)) {
            switch (path.node.operator) {
              case "=":
              case "&&=":
              case "||=":
              case "??=":
                visitor(initializer, state, id.name);
            }
          }
        }
      },
      AssignmentPattern: function AssignmentPattern(path, state) {
        var id = path.node.left;
        if (id.type === "Identifier") {
          var initializer = skipTransparentExprWrappers(path.get("right"));
          if (isAnonymous(initializer)) {
            var name = id.name;
            visitor(initializer, state, name);
          }
        }
      },
      ObjectExpression: function ObjectExpression(path, state) {
        for (var _iterator9 = _createForOfIteratorHelperLoose(path.get("properties")), _step9; !(_step9 = _iterator9()).done;) {
          var propertyPath = _step9.value;
          if (!propertyPath.isObjectProperty()) continue;
          var node = propertyPath.node;
          var id = node.key;
          var initializer = skipTransparentExprWrappers(propertyPath.get("value"));
          if (isAnonymous(initializer)) {
            if (!node.computed) {
              if (!isProtoKey(id)) {
                if (id.type === "Identifier") {
                  visitor(initializer, state, id.name);
                } else {
                  var className = stringLiteral$6(id.value + "");
                  visitor(initializer, state, className);
                }
              }
            } else {
              var ref = handleComputedProperty(propertyPath, id, state);
              visitor(initializer, state, ref);
            }
          }
        }
      },
      ClassPrivateProperty: function ClassPrivateProperty(path, state) {
        var node = path.node;
        var initializer = skipTransparentExprWrappers(path.get("value"));
        if (isAnonymous(initializer)) {
          var className = stringLiteral$6("#" + node.key.id.name);
          visitor(initializer, state, className);
        }
      },
      ClassAccessorProperty: function ClassAccessorProperty(path, state) {
        var node = path.node;
        var id = node.key;
        var initializer = skipTransparentExprWrappers(path.get("value"));
        if (isAnonymous(initializer)) {
          if (!node.computed) {
            if (id.type === "Identifier") {
              visitor(initializer, state, id.name);
            } else if (id.type === "PrivateName") {
              var className = stringLiteral$6("#" + id.id.name);
              visitor(initializer, state, className);
            } else {
              var _className2 = stringLiteral$6(id.value + "");
              visitor(initializer, state, _className2);
            }
          } else {
            var ref = handleComputedProperty(path, id, state);
            visitor(initializer, state, ref);
          }
        }
      },
      ClassProperty: function ClassProperty(path, state) {
        var node = path.node;
        var id = node.key;
        var initializer = skipTransparentExprWrappers(path.get("value"));
        if (isAnonymous(initializer)) {
          if (!node.computed) {
            if (id.type === "Identifier") {
              visitor(initializer, state, id.name);
            } else {
              var className = stringLiteral$6(id.value + "");
              visitor(initializer, state, className);
            }
          } else {
            var ref = handleComputedProperty(path, id, state);
            visitor(initializer, state, ref);
          }
        }
      }
    };
  }
  function isDecoratedAnonymousClassExpression(path) {
    return path.isClassExpression({
      id: null
    }) && shouldTransformClass(path.node);
  }
  function generateLetUidIdentifier(scope, name) {
    var id = scope.generateUidIdentifier(name);
    scope.push({
      id: id,
      kind: "let"
    });
    return cloneNode$g(id);
  }
  function createDecoratorTransform (_ref2, _ref3, version, inherits) {
    var _assumption, _assumption2;
    var assertVersion = _ref2.assertVersion,
      assumption = _ref2.assumption;
    var loose = _ref3.loose;
    {
      if (version === "2023-11" || version === "2023-05" || version === "2023-01") {
        assertVersion("*");
      } else if (version === "2021-12") {
        assertVersion("*");
      } else {
        assertVersion("*");
      }
    }
    var VISITED = new WeakSet();
    var constantSuper = (_assumption = assumption("constantSuper")) != null ? _assumption : loose;
    var ignoreFunctionLength = (_assumption2 = assumption("ignoreFunctionLength")) != null ? _assumption2 : loose;
    var namedEvaluationVisitor = NamedEvaluationVisitoryFactory(isDecoratedAnonymousClassExpression, visitClass);
    function visitClass(path, state, className) {
      var _className3, _node$id;
      if (VISITED.has(path)) return;
      var node = path.node;
      (_className3 = className) != null ? _className3 : className = (_node$id = node.id) == null ? void 0 : _node$id.name;
      var newPath = transformClass$1(path, state, constantSuper, ignoreFunctionLength, className, namedEvaluationVisitor, version);
      if (newPath) {
        VISITED.add(newPath);
        return;
      }
      VISITED.add(path);
    }
    return {
      name: "proposal-decorators",
      inherits: inherits,
      visitor: Object.assign({
        ExportDefaultDeclaration: function ExportDefaultDeclaration(path, state) {
          var declaration = path.node.declaration;
          if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
            var isAnonymous = !declaration.id;
            var updatedVarDeclarationPath = path.splitExportDeclaration();
            if (isAnonymous) {
              visitClass(updatedVarDeclarationPath, state, stringLiteral$6("default"));
            }
          }
        },
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var declaration = path.node.declaration;
          if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && isDecorated(declaration)) {
            path.splitExportDeclaration();
          }
        },
        Class: function Class(path, state) {
          visitClass(path, state, undefined);
        }
      }, namedEvaluationVisitor)
    };
  }

  function bool$4(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$7 = bool$4(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  var _templateObject$s, _templateObject2$e, _templateObject3$a, _templateObject4$5;
  function hasOwnDecorators(node) {
    var _node$decorators;
    return !!((_node$decorators = node.decorators) != null && _node$decorators.length);
  }
  function hasDecorators(node) {
    return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);
  }
  function prop(key, value) {
    if (!value) return null;
    return objectProperty$1(identifier$e(key), value);
  }
  function method(key, body) {
    return objectMethod("method", identifier$e(key), [], blockStatement$6(body));
  }
  function takeDecorators(node) {
    var result;
    if (node.decorators && node.decorators.length > 0) {
      result = arrayExpression$1(node.decorators.map(function (decorator) {
        return decorator.expression;
      }));
    }
    node.decorators = undefined;
    return result;
  }
  function getKey(node) {
    if (node.computed) {
      return node.key;
    } else if (isIdentifier$f(node.key)) {
      return stringLiteral$6(node.key.name);
    } else {
      return stringLiteral$6(String(node.key.value));
    }
  }
  function extractElementDescriptor(file, classRef, superRef, path) {
    var isMethod = path.isClassMethod();
    if (path.isPrivate()) {
      throw path.buildCodeFrameError("Private " + (isMethod ? "methods" : "fields") + " in decorated classes are not supported yet.");
    }
    if (path.node.type === "ClassAccessorProperty") {
      throw path.buildCodeFrameError("Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.");
    }
    if (path.node.type === "StaticBlock") {
      throw path.buildCodeFrameError("Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.");
    }
    var _ref = path,
      node = _ref.node,
      scope = _ref.scope;
    if (!path.isTSDeclareMethod()) {
      new ReplaceSupers({
        methodPath: path,
        objectRef: classRef,
        superRef: superRef,
        file: file,
        refToPreserve: classRef
      }).replace();
    }
    var properties = [prop("kind", stringLiteral$6(isClassMethod(node) ? node.kind : "field")), prop("decorators", takeDecorators(node)), prop("static", node["static"] && booleanLiteral$2(true)), prop("key", getKey(node))].filter(Boolean);
    if (isMethod) {
      path.ensureFunctionName(false);
      properties.push(prop("value", toExpression$1(path.node)));
    } else if (isClassProperty(node) && node.value) {
      properties.push(method("value", template$1.statements.ast(_templateObject$s || (_templateObject$s = _taggedTemplateLiteralLoose(["return ", ""])), node.value)));
    } else {
      properties.push(prop("value", scope.buildUndefinedNode()));
    }
    path.remove();
    return objectExpression$3(properties);
  }
  function addDecorateHelper(file) {
    return file.addHelper("decorate");
  }
  function buildDecoratedClass(ref, path, elements, file) {
    var node = path.node,
      scope = path.scope;
    var initializeId = scope.generateUidIdentifier("initialize");
    var isDeclaration = node.id && path.isDeclaration();
    var isStrict = path.isInStrictMode();
    var superClass = node.superClass;
    node.type = "ClassDeclaration";
    if (!node.id) node.id = cloneNode$g(ref);
    var superId;
    if (superClass) {
      superId = scope.generateUidIdentifierBasedOnNode(node.superClass, "super");
      node.superClass = superId;
    }
    var classDecorators = takeDecorators(node);
    var definitions = arrayExpression$1(elements.filter(function (element) {
      return !element.node["abstract"] && element.node.type !== "TSIndexSignature";
    }).map(function (path) {
      return extractElementDescriptor(file, node.id, superId, path);
    }));
    var wrapperCall = template$1.expression.ast(_templateObject2$e || (_templateObject2$e = _taggedTemplateLiteralLoose(["\n    ", "(\n      ", ",\n      function (", ", ", ") {\n        ", "\n        return { F: ", ", d: ", " };\n      },\n      ", "\n    )\n  "])), addDecorateHelper(file), classDecorators || nullLiteral$2(), initializeId, superClass ? cloneNode$g(superId) : null, node, cloneNode$g(node.id), definitions, superClass);
    if (!isStrict) {
      wrapperCall.arguments[1].body.directives.push(directive(directiveLiteral("use strict")));
    }
    var replacement = wrapperCall;
    var classPathDesc = "arguments.1.body.body.0";
    if (isDeclaration) {
      replacement = template$1.statement.ast(_templateObject3$a || (_templateObject3$a = _taggedTemplateLiteralLoose(["let ", " = ", ""])), ref, wrapperCall);
      classPathDesc = "declarations.0.init." + classPathDesc;
    }
    return {
      instanceNodes: [template$1.statement.ast(_templateObject4$5 || (_templateObject4$5 = _taggedTemplateLiteralLoose(["\n        ", "(this)\n      "])), cloneNode$g(initializeId))],
      wrapClass: function wrapClass(path) {
        path.replaceWith(replacement);
        return path.get(classPathDesc);
      }
    };
  }

  var FEATURES$1 = Object.freeze({
    fields: 1 << 1,
    privateMethods: 1 << 2,
    decorators: 1 << 3,
    privateIn: 1 << 4,
    staticBlocks: 1 << 5
  });
  var featuresSameLoose = new Map([[FEATURES$1.fields, "@babel/plugin-transform-class-properties"], [FEATURES$1.privateMethods, "@babel/plugin-transform-private-methods"], [FEATURES$1.privateIn, "@babel/plugin-transform-private-property-in-object"]]);
  var featuresKey$1 = "@babel/plugin-class-features/featuresKey";
  var looseKey = "@babel/plugin-class-features/looseKey";
  {
    var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
  }
  {
    var canIgnoreLoose = function canIgnoreLoose(file, feature) {
      return !!(file.get(looseLowPriorityKey) & feature);
    };
  }
  function enableFeature$1(file, feature, loose) {
    if (!hasFeature$1(file, feature) || canIgnoreLoose(file, feature)) {
      file.set(featuresKey$1, file.get(featuresKey$1) | feature);
      if (loose === "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error") {
        setLoose(file, feature, true);
        file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
      } else if (loose === "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error") {
        setLoose(file, feature, false);
        file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
      } else {
        setLoose(file, feature, loose);
      }
    }
    var resolvedLoose;
    for (var _iterator = _createForOfIteratorHelperLoose(featuresSameLoose), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        _mask = _step$value[0],
        _name = _step$value[1];
      if (!hasFeature$1(file, _mask)) continue;
      {
        if (canIgnoreLoose(file, _mask)) continue;
      }
      var _loose = isLoose(file, _mask);
      if (resolvedLoose === !_loose) {
        throw new Error("'loose' mode configuration must be the same for @babel/plugin-transform-class-properties, " + "@babel/plugin-transform-private-methods and " + "@babel/plugin-transform-private-property-in-object (when they are enabled)." + "\n\n" + getBabelShowConfigForHint(file));
      } else {
        resolvedLoose = _loose;
        {
          var higherPriorityPluginName = _name;
        }
      }
    }
    if (resolvedLoose !== undefined) {
      for (var _iterator2 = _createForOfIteratorHelperLoose(featuresSameLoose), _step2; !(_step2 = _iterator2()).done;) {
        var _step2$value = _slicedToArray(_step2.value, 2),
          mask = _step2$value[0],
          name = _step2$value[1];
        if (hasFeature$1(file, mask) && isLoose(file, mask) !== resolvedLoose) {
          setLoose(file, mask, resolvedLoose);
          console.warn("Though the \"loose\" option was set to \"" + !resolvedLoose + "\" in your @babel/preset-env " + ("config, it will not be used for " + name + " since the \"loose\" mode option was set to ") + ("\"" + resolvedLoose + "\" for " + higherPriorityPluginName + ".\nThe \"loose\" option must be the ") + "same for @babel/plugin-transform-class-properties, @babel/plugin-transform-private-methods " + "and @babel/plugin-transform-private-property-in-object (when they are enabled): you can " + "silence this warning by explicitly adding\n" + ("\t[\"" + name + "\", { \"loose\": " + resolvedLoose + " }]\n") + "to the \"plugins\" section of your Babel config." + "\n\n" + getBabelShowConfigForHint(file));
        }
      }
    }
  }
  function getBabelShowConfigForHint(file) {
    var filename = file.opts.filename;
    if (!filename || filename === "unknown") {
      filename = "[name of the input file]";
    }
    return "If you already set the same 'loose' mode for these plugins in your config, it's possible that they are enabled multiple times with different options.\nYou can re-run Babel with the BABEL_SHOW_CONFIG_FOR environment variable to show the loaded configuration:\n\tnpx cross-env BABEL_SHOW_CONFIG_FOR=" + filename + " <your build command>\nSee https://babeljs.io/docs/configuration#print-effective-configs for more info.";
  }
  function hasFeature$1(file, feature) {
    return !!(file.get(featuresKey$1) & feature);
  }
  function isLoose(file, feature) {
    return !!(file.get(looseKey) & feature);
  }
  function setLoose(file, feature, loose) {
    if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
    {
      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
    }
  }
  function shouldTransform$2(path, file) {
    var decoratorPath = null;
    var publicFieldPath = null;
    var privateFieldPath = null;
    var privateMethodPath = null;
    var staticBlockPath = null;
    if (hasOwnDecorators(path.node)) {
      decoratorPath = path.get("decorators.0");
    }
    for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("body.body")), _step3; !(_step3 = _iterator3()).done;) {
      var el = _step3.value;
      if (!decoratorPath && hasOwnDecorators(el.node)) {
        decoratorPath = el.get("decorators.0");
      }
      if (!publicFieldPath && el.isClassProperty()) {
        publicFieldPath = el;
      }
      if (!privateFieldPath && el.isClassPrivateProperty()) {
        privateFieldPath = el;
      }
      if (!privateMethodPath && el.isClassPrivateMethod != null && el.isClassPrivateMethod()) {
        privateMethodPath = el;
      }
      if (!staticBlockPath && el.isStaticBlock != null && el.isStaticBlock()) {
        staticBlockPath = el;
      }
    }
    if (decoratorPath && privateFieldPath) {
      throw privateFieldPath.buildCodeFrameError("Private fields in decorated classes are not supported yet.");
    }
    if (decoratorPath && privateMethodPath) {
      throw privateMethodPath.buildCodeFrameError("Private methods in decorated classes are not supported yet.");
    }
    if (decoratorPath && !hasFeature$1(file, FEATURES$1.decorators)) {
      throw path.buildCodeFrameError("Decorators are not enabled." + "\nIf you are using " + '["@babel/plugin-proposal-decorators", { "version": "legacy" }], ' + 'make sure it comes *before* "@babel/plugin-transform-class-properties" ' + "and enable loose mode, like so:\n" + '\t["@babel/plugin-proposal-decorators", { "version": "legacy" }]\n' + '\t["@babel/plugin-transform-class-properties", { "loose": true }]');
    }
    if (privateMethodPath && !hasFeature$1(file, FEATURES$1.privateMethods)) {
      throw privateMethodPath.buildCodeFrameError("Class private methods are not enabled. " + "Please add `@babel/plugin-transform-private-methods` to your configuration.");
    }
    if ((publicFieldPath || privateFieldPath) && !hasFeature$1(file, FEATURES$1.fields) && !hasFeature$1(file, FEATURES$1.privateMethods)) {
      throw path.buildCodeFrameError("Class fields are not enabled. " + "Please add `@babel/plugin-transform-class-properties` to your configuration.");
    }
    if (staticBlockPath && !hasFeature$1(file, FEATURES$1.staticBlocks)) {
      throw path.buildCodeFrameError("Static class blocks are not enabled. " + "Please add `@babel/plugin-transform-class-static-block` to your configuration.");
    }
    if (decoratorPath || privateMethodPath || staticBlockPath) {
      return true;
    }
    if ((publicFieldPath || privateFieldPath) && hasFeature$1(file, FEATURES$1.fields)) {
      return true;
    }
    return false;
  }

  var versionKey$1 = "@babel/plugin-class-features/version";
  function createClassFeaturePlugin(_ref) {
    var _api$assumption;
    var name = _ref.name,
      feature = _ref.feature,
      loose = _ref.loose,
      manipulateOptions = _ref.manipulateOptions,
      api = _ref.api,
      inherits = _ref.inherits,
      decoratorVersion = _ref.decoratorVersion;
    if (feature & FEATURES$1.decorators) {
      {
        if (decoratorVersion === "2023-11" || decoratorVersion === "2023-05" || decoratorVersion === "2023-01" || decoratorVersion === "2022-03" || decoratorVersion === "2021-12") {
          return createDecoratorTransform(api, {
            loose: loose
          }, decoratorVersion, inherits);
        }
      }
    }
    {
      var _api;
      (_api = api) != null ? _api : api = {
        assumption: function assumption() {
          return void 0;
        }
      };
    }
    var setPublicClassFields = api.assumption("setPublicClassFields");
    var privateFieldsAsSymbols = api.assumption("privateFieldsAsSymbols");
    var privateFieldsAsProperties = api.assumption("privateFieldsAsProperties");
    var noUninitializedPrivateFieldAccess = (_api$assumption = api.assumption("noUninitializedPrivateFieldAccess")) != null ? _api$assumption : false;
    var constantSuper = api.assumption("constantSuper");
    var noDocumentAll = api.assumption("noDocumentAll");
    if (privateFieldsAsProperties && privateFieldsAsSymbols) {
      throw new Error("Cannot enable both the \"privateFieldsAsProperties\" and " + "\"privateFieldsAsSymbols\" assumptions as the same time.");
    }
    var privateFieldsAsSymbolsOrProperties = privateFieldsAsProperties || privateFieldsAsSymbols;
    if (loose === true) {
      var explicit = [];
      if (setPublicClassFields !== undefined) {
        explicit.push("\"setPublicClassFields\"");
      }
      if (privateFieldsAsProperties !== undefined) {
        explicit.push("\"privateFieldsAsProperties\"");
      }
      if (privateFieldsAsSymbols !== undefined) {
        explicit.push("\"privateFieldsAsSymbols\"");
      }
      if (explicit.length !== 0) {
        console.warn("[" + name + "]: You are using the \"loose: true\" option and you are" + (" explicitly setting a value for the " + explicit.join(" and ")) + (" assumption" + (explicit.length > 1 ? "s" : "") + ". The \"loose\" option") + " can cause incompatibilities with the other class features" + " plugins, so it's recommended that you replace it with the" + " following top-level option:\n" + "\t\"assumptions\": {\n" + "\t\t\"setPublicClassFields\": true,\n" + "\t\t\"privateFieldsAsSymbols\": true\n" + "\t}");
      }
    }
    return {
      name: name,
      manipulateOptions: manipulateOptions,
      inherits: inherits,
      pre: function pre(file) {
        enableFeature$1(file, feature, loose);
        {
          if (typeof file.get(versionKey$1) === "number") {
            file.set(versionKey$1, "7.25.4");
            return;
          }
        }
        if (!file.get(versionKey$1) || semver$7.lt(file.get(versionKey$1), "7.25.4")) {
          file.set(versionKey$1, "7.25.4");
        }
      },
      visitor: {
        Class: function Class(path, _ref2) {
          var _ref3;
          var file = _ref2.file;
          if (file.get(versionKey$1) !== "7.25.4") return;
          if (!shouldTransform$2(path, file)) return;
          var pathIsClassDeclaration = path.isClassDeclaration();
          if (pathIsClassDeclaration) assertFieldTransformed(path);
          var loose = isLoose(file, feature);
          var constructor;
          var isDecorated = hasDecorators(path.node);
          var props = [];
          var elements = [];
          var computedPaths = [];
          var privateNames = new Set();
          var body = path.get("body");
          for (var _iterator = _createForOfIteratorHelperLoose(body.get("body")), _step; !(_step = _iterator()).done;) {
            var _path = _step.value;
            if ((_path.isClassProperty() || _path.isClassMethod()) && _path.node.computed) {
              computedPaths.push(_path);
            }
            if (_path.isPrivate()) {
              var _name = _path.node.key.id.name;
              var getName = "get " + _name;
              var setName = "set " + _name;
              if (_path.isClassPrivateMethod()) {
                if (_path.node.kind === "get") {
                  if (privateNames.has(getName) || privateNames.has(_name) && !privateNames.has(setName)) {
                    throw _path.buildCodeFrameError("Duplicate private field");
                  }
                  privateNames.add(getName).add(_name);
                } else if (_path.node.kind === "set") {
                  if (privateNames.has(setName) || privateNames.has(_name) && !privateNames.has(getName)) {
                    throw _path.buildCodeFrameError("Duplicate private field");
                  }
                  privateNames.add(setName).add(_name);
                }
              } else {
                if (privateNames.has(_name) && !privateNames.has(getName) && !privateNames.has(setName) || privateNames.has(_name) && (privateNames.has(getName) || privateNames.has(setName))) {
                  throw _path.buildCodeFrameError("Duplicate private field");
                }
                privateNames.add(_name);
              }
            }
            if (_path.isClassMethod({
              kind: "constructor"
            })) {
              constructor = _path;
            } else {
              elements.push(_path);
              if (_path.isProperty() || _path.isPrivate() || _path.isStaticBlock != null && _path.isStaticBlock()) {
                props.push(_path);
              }
            }
          }
          {
            if (!props.length && !isDecorated) return;
          }
          var innerBinding = path.node.id;
          var ref;
          if (!innerBinding || !pathIsClassDeclaration) {
            path.ensureFunctionName(false);
            ref = path.scope.generateUidIdentifier((innerBinding == null ? void 0 : innerBinding.name) || "Class");
          }
          var classRefForDefine = (_ref3 = ref) != null ? _ref3 : cloneNode$g(innerBinding);
          var privateNamesMap = buildPrivateNamesMap(classRefForDefine.name, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, props, file);
          var privateNamesNodes = buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties != null ? privateFieldsAsProperties : loose, privateFieldsAsSymbols != null ? privateFieldsAsSymbols : false, file);
          transformPrivateNamesUsage(classRefForDefine, path, privateNamesMap, {
            privateFieldsAsProperties: privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose,
            noUninitializedPrivateFieldAccess: noUninitializedPrivateFieldAccess,
            noDocumentAll: noDocumentAll,
            innerBinding: innerBinding
          }, file);
          var keysNodes, staticNodes, instanceNodes, lastInstanceNodeReturnsThis, pureStaticNodes, classBindingNode, wrapClass;
          {
            if (isDecorated) {
              staticNodes = pureStaticNodes = keysNodes = [];
              var _buildDecoratedClass = buildDecoratedClass(classRefForDefine, path, elements, file);
              instanceNodes = _buildDecoratedClass.instanceNodes;
              wrapClass = _buildDecoratedClass.wrapClass;
            } else {
              keysNodes = extractComputedKeys(path, computedPaths, file);
              var _buildFieldsInitNodes = buildFieldsInitNodes(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, noUninitializedPrivateFieldAccess, constantSuper != null ? constantSuper : loose, innerBinding);
              staticNodes = _buildFieldsInitNodes.staticNodes;
              pureStaticNodes = _buildFieldsInitNodes.pureStaticNodes;
              instanceNodes = _buildFieldsInitNodes.instanceNodes;
              lastInstanceNodeReturnsThis = _buildFieldsInitNodes.lastInstanceNodeReturnsThis;
              classBindingNode = _buildFieldsInitNodes.classBindingNode;
              wrapClass = _buildFieldsInitNodes.wrapClass;
            }
          }
          if (instanceNodes.length > 0) {
            injectInitialization(path, constructor, instanceNodes, function (referenceVisitor, state) {
              {
                if (isDecorated) return;
              }
              for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
                var prop = _step2.value;
                if (isStaticBlock != null && isStaticBlock(prop.node) || prop.node["static"]) continue;
                prop.traverse(referenceVisitor, state);
              }
            }, lastInstanceNodeReturnsThis);
          }
          var wrappedPath = wrapClass(path);
          wrappedPath.insertBefore([].concat(_toConsumableArray(privateNamesNodes), _toConsumableArray(keysNodes)));
          if (staticNodes.length > 0) {
            wrappedPath.insertAfter(staticNodes);
          }
          if (pureStaticNodes.length > 0) {
            wrappedPath.find(function (parent) {
              return parent.isStatement() || parent.isDeclaration();
            }).insertAfter(pureStaticNodes);
          }
          if (classBindingNode != null && pathIsClassDeclaration) {
            wrappedPath.insertAfter(classBindingNode);
          }
        },
        ExportDefaultDeclaration: function ExportDefaultDeclaration(path, _ref4) {
          var file = _ref4.file;
          {
            if (file.get(versionKey$1) !== "7.25.4") return;
            var decl = path.get("declaration");
            if (decl.isClassDeclaration() && hasDecorators(decl.node)) {
              if (decl.node.id) {
                path.splitExportDeclaration();
              } else {
                decl.node.type = "ClassExpression";
              }
            }
          }
        }
      }
    };
  }

  var _transformClassProperties = declare(function (api, options) {
    api.assertVersion("*");
    return createClassFeaturePlugin({
      name: "transform-class-properties",
      api: api,
      feature: FEATURES$1.fields,
      loose: options.loose,
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          parserOpts.plugins.push("classProperties", "classPrivateProperties");
        }
      }
    });
  });

  var _templateObject$r;
  function generateUid(scope, denyList) {
    var name = "";
    var uid;
    var i = 1;
    do {
      uid = scope._generateUid(name, i);
      i++;
    } while (denyList.has(uid));
    return uid;
  }
  var _transformClassStaticBlock = declare(function (_ref) {
    var t = _ref.types,
      template = _ref.template,
      assertVersion = _ref.assertVersion;
      _ref.version;
    assertVersion("*");
    return {
      name: "transform-class-static-block",
      inherits: undefined,
      pre: function pre() {
        enableFeature$1(this.file, FEATURES$1.staticBlocks, false);
      },
      visitor: {
        ClassBody: function ClassBody(classBody) {
          var scope = classBody.scope;
          var privateNames = new Set();
          var body = classBody.get("body");
          for (var _iterator = _createForOfIteratorHelperLoose(body), _step; !(_step = _iterator()).done;) {
            var path = _step.value;
            if (path.isPrivate()) {
              privateNames.add(path.get("key.id").node.name);
            }
          }
          for (var _iterator2 = _createForOfIteratorHelperLoose(body), _step2; !(_step2 = _iterator2()).done;) {
            var _path = _step2.value;
            if (!_path.isStaticBlock()) continue;
            var staticBlockPrivateId = generateUid(scope, privateNames);
            privateNames.add(staticBlockPrivateId);
            var staticBlockRef = t.privateName(t.identifier(staticBlockPrivateId));
            var replacement = void 0;
            var blockBody = _path.node.body;
            if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {
              replacement = t.inheritsComments(blockBody[0].expression, blockBody[0]);
            } else {
              replacement = template.expression.ast(_templateObject$r || (_templateObject$r = _taggedTemplateLiteralLoose(["(() => { ", " })()"])), blockBody);
            }
            _path.replaceWith(t.classPrivateProperty(staticBlockRef, replacement, [], true));
          }
        }
      }
    };
  });

  var buildClassDecorator = template$1.statement("\n  DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n");
  var buildClassPrototype = template$1("\n  CLASS_REF.prototype;\n");
  var buildGetDescriptor = template$1("\n    Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n");
  var buildGetObjectInitializer = template$1("\n    (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        initializer: function(){\n            return TEMP;\n        }\n    })\n");
  var WARNING_CALLS = new WeakSet();
  function applyEnsureOrdering(path) {
    var decorators = (path.isClass() ? [path].concat(_toConsumableArray(path.get("body.body"))) : path.get("properties")).reduce(function (acc, prop) {
      return acc.concat(prop.node.decorators || []);
    }, []);
    var identDecorators = decorators.filter(function (decorator) {
      return !isIdentifier$f(decorator.expression);
    });
    if (identDecorators.length === 0) return;
    return sequenceExpression$8(identDecorators.map(function (decorator) {
      var expression = decorator.expression;
      var id = decorator.expression = path.scope.generateDeclaredUidIdentifier("dec");
      return assignmentExpression$b("=", id, expression);
    }).concat([path.node]));
  }
  function applyClassDecorators(classPath) {
    if (!hasClassDecorators(classPath.node)) return;
    var decorators = classPath.node.decorators || [];
    classPath.node.decorators = null;
    var name = classPath.scope.generateDeclaredUidIdentifier("class");
    return decorators.map(function (dec) {
      return dec.expression;
    }).reverse().reduce(function (acc, decorator) {
      return buildClassDecorator({
        CLASS_REF: cloneNode$g(name),
        DECORATOR: cloneNode$g(decorator),
        INNER: acc
      }).expression;
    }, classPath.node);
  }
  function hasClassDecorators(classNode) {
    var _classNode$decorators;
    return !!((_classNode$decorators = classNode.decorators) != null && _classNode$decorators.length);
  }
  function applyMethodDecorators(path, state) {
    if (!hasMethodDecorators(path.node.body.body)) return;
    return applyTargetDecorators(path, state, path.node.body.body);
  }
  function hasMethodDecorators(body) {
    return body.some(function (node) {
      var _node$decorators;
      return (_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length;
    });
  }
  function applyObjectDecorators(path, state) {
    if (!hasMethodDecorators(path.node.properties)) return;
    return applyTargetDecorators(path, state, path.node.properties.filter(function (prop) {
      return prop.type !== "SpreadElement";
    }));
  }
  function applyTargetDecorators(path, state, decoratedProps) {
    var name = path.scope.generateDeclaredUidIdentifier(path.isClass() ? "class" : "obj");
    var exprs = decoratedProps.reduce(function (acc, node) {
      var decorators = [];
      if (node.decorators != null) {
        decorators = node.decorators;
        node.decorators = null;
      }
      if (decorators.length === 0) return acc;
      if (node.computed) {
        throw path.buildCodeFrameError("Computed method/property decorators are not yet supported.");
      }
      var property = isLiteral$5(node.key) ? node.key : stringLiteral$6(node.key.name);
      var target = path.isClass() && !node["static"] ? buildClassPrototype({
        CLASS_REF: name
      }).expression : name;
      if (isClassProperty(node, {
        "static": false
      })) {
        var descriptor = path.scope.generateDeclaredUidIdentifier("descriptor");
        var initializer = node.value ? functionExpression$2(null, [], blockStatement$6([returnStatement$3(node.value)])) : nullLiteral$2();
        node.value = callExpression$c(state.addHelper("initializerWarningHelper"), [descriptor, thisExpression$4()]);
        WARNING_CALLS.add(node.value);
        acc.push(assignmentExpression$b("=", cloneNode$g(descriptor), callExpression$c(state.addHelper("applyDecoratedDescriptor"), [cloneNode$g(target), cloneNode$g(property), arrayExpression$1(decorators.map(function (dec) {
          return cloneNode$g(dec.expression);
        })), objectExpression$3([objectProperty$1(identifier$e("configurable"), booleanLiteral$2(true)), objectProperty$1(identifier$e("enumerable"), booleanLiteral$2(true)), objectProperty$1(identifier$e("writable"), booleanLiteral$2(true)), objectProperty$1(identifier$e("initializer"), initializer)])])));
      } else {
        acc.push(callExpression$c(state.addHelper("applyDecoratedDescriptor"), [cloneNode$g(target), cloneNode$g(property), arrayExpression$1(decorators.map(function (dec) {
          return cloneNode$g(dec.expression);
        })), isObjectProperty$3(node) || isClassProperty(node, {
          "static": true
        }) ? buildGetObjectInitializer({
          TEMP: path.scope.generateDeclaredUidIdentifier("init"),
          TARGET: cloneNode$g(target),
          PROPERTY: cloneNode$g(property)
        }).expression : buildGetDescriptor({
          TARGET: cloneNode$g(target),
          PROPERTY: cloneNode$g(property)
        }).expression, cloneNode$g(target)]));
      }
      return acc;
    }, []);
    return sequenceExpression$8([assignmentExpression$b("=", cloneNode$g(name), path.node), sequenceExpression$8(exprs), cloneNode$g(name)]);
  }
  function decoratedClassToExpression(_ref) {
    var node = _ref.node,
      scope = _ref.scope;
    if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {
      return;
    }
    var ref = node.id ? cloneNode$g(node.id) : scope.generateUidIdentifier("class");
    return variableDeclaration$6("let", [variableDeclarator$6(ref, toExpression$1(node))]);
  }
  var visitor$1 = {
    ExportDefaultDeclaration: function ExportDefaultDeclaration(path) {
      var decl = path.get("declaration");
      if (!decl.isClassDeclaration()) return;
      var replacement = decoratedClassToExpression(decl);
      if (replacement) {
        var _path$replaceWithMult = path.replaceWithMultiple([replacement, exportNamedDeclaration$2(null, [exportSpecifier$2(cloneNode$g(replacement.declarations[0].id), identifier$e("default"))])]),
          _path$replaceWithMult2 = _slicedToArray(_path$replaceWithMult, 1),
          varDeclPath = _path$replaceWithMult2[0];
        if (!decl.node.id) {
          path.scope.registerDeclaration(varDeclPath);
        }
      }
    },
    ClassDeclaration: function ClassDeclaration(path) {
      var replacement = decoratedClassToExpression(path);
      if (replacement) {
        var _path$replaceWith = path.replaceWith(replacement),
          _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
          newPath = _path$replaceWith2[0];
        var decl = newPath.get("declarations.0");
        var id = decl.node.id;
        var binding = path.scope.getOwnBinding(id.name);
        binding.identifier = id;
        binding.path = decl;
      }
    },
    ClassExpression: function ClassExpression(path, state) {
      var decoratedClass = applyEnsureOrdering(path) || applyClassDecorators(path) || applyMethodDecorators(path, state);
      if (decoratedClass) path.replaceWith(decoratedClass);
    },
    ObjectExpression: function ObjectExpression(path, state) {
      var decoratedObject = applyEnsureOrdering(path) || applyObjectDecorators(path, state);
      if (decoratedObject) path.replaceWith(decoratedObject);
    },
    AssignmentExpression: function AssignmentExpression(path, state) {
      if (!WARNING_CALLS.has(path.node.right)) return;
      path.replaceWith(callExpression$c(state.addHelper("initializerDefineProperty"), [cloneNode$g(path.get("left.object").node), stringLiteral$6(path.get("left.property").node.name || path.get("left.property").node.value), cloneNode$g(path.get("right.arguments")[0].node), cloneNode$g(path.get("right.arguments")[1].node)]));
    },
    CallExpression: function CallExpression(path, state) {
      if (path.node.arguments.length !== 3) return;
      if (!WARNING_CALLS.has(path.node.arguments[2])) return;
      if (path.node.callee.name !== state.addHelper("defineProperty").name) {
        return;
      }
      path.replaceWith(callExpression$c(state.addHelper("initializerDefineProperty"), [cloneNode$g(path.get("arguments")[0].node), cloneNode$g(path.get("arguments")[1].node), cloneNode$g(path.get("arguments.2.arguments")[0].node), cloneNode$g(path.get("arguments.2.arguments")[1].node)]));
    }
  };

  var proposalDecorators = declare(function (api, options) {
    api.assertVersion("*");
    {
      var legacy = options.legacy;
    }
    var version = options.version;
    if (legacy || version === "legacy") {
      return {
        name: "proposal-decorators",
        inherits: syntaxDecorators,
        visitor: visitor$1
      };
    } else if (!version || version === "2018-09" || version === "2021-12" || version === "2022-03" || version === "2023-01" || version === "2023-05" || version === "2023-11") {
      api.assertVersion("*");
      return createClassFeaturePlugin({
        name: "proposal-decorators",
        api: api,
        feature: FEATURES$1.decorators,
        inherits: syntaxDecorators,
        decoratorVersion: version
      });
    } else {
      throw new Error("The '.version' option must be one of 'legacy', '2023-11', '2023-05', '2023-01', '2022-03', or '2021-12'.");
    }
  });

  function isPureVoid(node) {
    return isUnaryExpression$1(node) && node.operator === "void" && isPureish$2(node.argument);
  }
  function unshiftForXStatementBody(statementPath, newStatements) {
    statementPath.ensureBlock();
    var scope = statementPath.scope,
      node = statementPath.node;
    var bodyScopeBindings = statementPath.get("body").scope.bindings;
    var hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(function (name) {
      return scope.hasBinding(name);
    });
    if (hasShadowedBlockScopedBindings) {
      node.body = blockStatement$6([].concat(_toConsumableArray(newStatements), [node.body]));
    } else {
      var _body;
      (_body = node.body.body).unshift.apply(_body, _toConsumableArray(newStatements));
    }
  }
  function hasArrayRest(pattern) {
    return pattern.elements.some(function (elem) {
      return isRestElement$2(elem);
    });
  }
  function hasObjectRest(pattern) {
    return pattern.properties.some(function (prop) {
      return isRestElement$2(prop);
    });
  }
  var STOP_TRAVERSAL = {};
  var arrayUnpackVisitor = function arrayUnpackVisitor(node, ancestors, state) {
    if (!ancestors.length) {
      return;
    }
    if (isIdentifier$f(node) && isReferenced$2(node, ancestors[ancestors.length - 1].node) && state.bindings[node.name]) {
      state.deopt = true;
      throw STOP_TRAVERSAL;
    }
  };
  var DestructuringTransformer = function () {
    function DestructuringTransformer(opts) {
      this.blockHoist = void 0;
      this.operator = void 0;
      this.arrayRefSet = void 0;
      this.nodes = void 0;
      this.scope = void 0;
      this.kind = void 0;
      this.iterableIsArray = void 0;
      this.arrayLikeIsIterable = void 0;
      this.objectRestNoSymbols = void 0;
      this.useBuiltIns = void 0;
      this.addHelper = void 0;
      this.blockHoist = opts.blockHoist;
      this.operator = opts.operator;
      this.arrayRefSet = new Set();
      this.nodes = opts.nodes || [];
      this.scope = opts.scope;
      this.kind = opts.kind;
      this.iterableIsArray = opts.iterableIsArray;
      this.arrayLikeIsIterable = opts.arrayLikeIsIterable;
      this.objectRestNoSymbols = opts.objectRestNoSymbols;
      this.useBuiltIns = opts.useBuiltIns;
      this.addHelper = opts.addHelper;
    }
    var _proto = DestructuringTransformer.prototype;
    _proto.getExtendsHelper = function getExtendsHelper() {
      return this.useBuiltIns ? memberExpression$a(identifier$e("Object"), identifier$e("assign")) : this.addHelper("extends");
    };
    _proto.buildVariableAssignment = function buildVariableAssignment(id, init) {
      var op = this.operator;
      if (isMemberExpression$8(id) || isOptionalMemberExpression$3(id)) op = "=";
      var node;
      if (op) {
        node = expressionStatement$7(assignmentExpression$b(op, id, cloneNode$g(init) || this.scope.buildUndefinedNode()));
      } else {
        var nodeInit;
        if ((this.kind === "const" || this.kind === "using") && init === null) {
          nodeInit = this.scope.buildUndefinedNode();
        } else {
          nodeInit = cloneNode$g(init);
        }
        node = variableDeclaration$6(this.kind, [variableDeclarator$6(id, nodeInit)]);
      }
      node._blockHoist = this.blockHoist;
      return node;
    };
    _proto.buildVariableDeclaration = function buildVariableDeclaration(id, init) {
      var declar = variableDeclaration$6("var", [variableDeclarator$6(cloneNode$g(id), cloneNode$g(init))]);
      declar._blockHoist = this.blockHoist;
      return declar;
    };
    _proto.push = function push(id, _init) {
      var init = cloneNode$g(_init);
      if (isObjectPattern$1(id)) {
        this.pushObjectPattern(id, init);
      } else if (isArrayPattern(id)) {
        this.pushArrayPattern(id, init);
      } else if (isAssignmentPattern$4(id)) {
        this.pushAssignmentPattern(id, init);
      } else {
        this.nodes.push(this.buildVariableAssignment(id, init));
      }
    };
    _proto.toArray = function toArray(node, count) {
      if (this.iterableIsArray || isIdentifier$f(node) && this.arrayRefSet.has(node.name)) {
        return node;
      } else {
        return this.scope.toArray(node, count, this.arrayLikeIsIterable);
      }
    };
    _proto.pushAssignmentPattern = function pushAssignmentPattern(_ref, valueRef) {
      var left = _ref.left,
        right = _ref.right;
      if (isPureVoid(valueRef)) {
        this.push(left, right);
        return;
      }
      var tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);
      this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));
      var tempConditional = conditionalExpression$5(binaryExpression$5("===", cloneNode$g(tempId), this.scope.buildUndefinedNode()), right, cloneNode$g(tempId));
      if (isPattern(left)) {
        var patternId;
        var node;
        if (this.kind === "const" || this.kind === "let" || this.kind === "using") {
          patternId = this.scope.generateUidIdentifier(tempId.name);
          node = this.buildVariableDeclaration(patternId, tempConditional);
        } else {
          patternId = tempId;
          node = expressionStatement$7(assignmentExpression$b("=", cloneNode$g(tempId), tempConditional));
        }
        this.nodes.push(node);
        this.push(left, patternId);
      } else {
        this.nodes.push(this.buildVariableAssignment(left, tempConditional));
      }
    };
    _proto.pushObjectRest = function pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) {
      var _this = this;
      var value = buildObjectExcludingKeys(pattern.properties.slice(0, spreadPropIndex), objRef, this.scope, function (name) {
        return _this.addHelper(name);
      }, this.objectRestNoSymbols, this.useBuiltIns);
      this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));
    };
    _proto.pushObjectProperty = function pushObjectProperty(prop, propRef) {
      if (isLiteral$5(prop.key)) prop.computed = true;
      var pattern = prop.value;
      var objRef = memberExpression$a(cloneNode$g(propRef), prop.key, prop.computed);
      if (isPattern(pattern)) {
        this.push(pattern, objRef);
      } else {
        this.nodes.push(this.buildVariableAssignment(pattern, objRef));
      }
    };
    _proto.pushObjectPattern = function pushObjectPattern(pattern, objRef) {
      if (!pattern.properties.length) {
        this.nodes.push(expressionStatement$7(callExpression$c(this.addHelper("objectDestructuringEmpty"), isPureVoid(objRef) ? [] : [objRef])));
        return;
      }
      if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {
        var temp = this.scope.generateUidIdentifierBasedOnNode(objRef);
        this.nodes.push(this.buildVariableDeclaration(temp, objRef));
        objRef = temp;
      }
      if (hasObjectRest(pattern)) {
        var copiedPattern;
        for (var i = 0; i < pattern.properties.length; i++) {
          var prop = pattern.properties[i];
          if (isRestElement$2(prop)) {
            break;
          }
          var key = prop.key;
          if (prop.computed && !this.scope.isPure(key)) {
            var name = this.scope.generateUidIdentifierBasedOnNode(key);
            this.nodes.push(this.buildVariableDeclaration(name, key));
            if (!copiedPattern) {
              copiedPattern = pattern = Object.assign({}, pattern, {
                properties: pattern.properties.slice()
              });
            }
            copiedPattern.properties[i] = Object.assign({}, prop, {
              key: name
            });
          }
        }
      }
      for (var _i = 0; _i < pattern.properties.length; _i++) {
        var _prop = pattern.properties[_i];
        if (isRestElement$2(_prop)) {
          this.pushObjectRest(pattern, objRef, _prop, _i);
        } else {
          this.pushObjectProperty(_prop, objRef);
        }
      }
    };
    _proto.canUnpackArrayPattern = function canUnpackArrayPattern(pattern, arr) {
      if (!isArrayExpression$2(arr)) return false;
      if (pattern.elements.length > arr.elements.length) return;
      if (pattern.elements.length < arr.elements.length && !hasArrayRest(pattern)) {
        return false;
      }
      for (var _iterator = _createForOfIteratorHelperLoose(pattern.elements), _step; !(_step = _iterator()).done;) {
        var elem = _step.value;
        if (!elem) return false;
        if (isMemberExpression$8(elem)) return false;
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(arr.elements), _step2; !(_step2 = _iterator2()).done;) {
        var _elem = _step2.value;
        if (isSpreadElement$1(_elem)) return false;
        if (isCallExpression$8(_elem)) return false;
        if (isMemberExpression$8(_elem)) return false;
      }
      var bindings = getBindingIdentifiers$4(pattern);
      var state = {
        deopt: false,
        bindings: bindings
      };
      try {
        traverse$2(arr, arrayUnpackVisitor, state);
      } catch (e) {
        if (e !== STOP_TRAVERSAL) throw e;
      }
      return !state.deopt;
    };
    _proto.pushUnpackedArrayPattern = function pushUnpackedArrayPattern(pattern, arr) {
      var _this2 = this;
      var holeToUndefined = function holeToUndefined(el) {
        return el != null ? el : _this2.scope.buildUndefinedNode();
      };
      for (var i = 0; i < pattern.elements.length; i++) {
        var elem = pattern.elements[i];
        if (isRestElement$2(elem)) {
          this.push(elem.argument, arrayExpression$1(arr.elements.slice(i).map(holeToUndefined)));
        } else {
          this.push(elem, holeToUndefined(arr.elements[i]));
        }
      }
    };
    _proto.pushArrayPattern = function pushArrayPattern(pattern, arrayRef) {
      if (arrayRef === null) {
        this.nodes.push(expressionStatement$7(callExpression$c(this.addHelper("objectDestructuringEmpty"), [])));
        return;
      }
      if (!pattern.elements) return;
      if (this.canUnpackArrayPattern(pattern, arrayRef)) {
        this.pushUnpackedArrayPattern(pattern, arrayRef);
        return;
      }
      var count = !hasArrayRest(pattern) && pattern.elements.length;
      var toArray = this.toArray(arrayRef, count);
      if (isIdentifier$f(toArray)) {
        arrayRef = toArray;
      } else {
        arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);
        this.arrayRefSet.add(arrayRef.name);
        this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));
      }
      for (var i = 0; i < pattern.elements.length; i++) {
        var elem = pattern.elements[i];
        if (!elem) continue;
        var elemRef = void 0;
        if (isRestElement$2(elem)) {
          elemRef = this.toArray(arrayRef);
          elemRef = callExpression$c(memberExpression$a(elemRef, identifier$e("slice")), [numericLiteral$6(i)]);
          this.push(elem.argument, elemRef);
        } else {
          elemRef = memberExpression$a(arrayRef, numericLiteral$6(i), true);
          this.push(elem, elemRef);
        }
      }
    };
    _proto.init = function init(pattern, ref) {
      if (!isArrayExpression$2(ref) && !isMemberExpression$8(ref)) {
        var memo = this.scope.maybeGenerateMemoised(ref, true);
        if (memo) {
          this.nodes.push(this.buildVariableDeclaration(memo, cloneNode$g(ref)));
          ref = memo;
        }
      }
      this.push(pattern, ref);
      return this.nodes;
    };
    return _createClass(DestructuringTransformer);
  }();
  function buildObjectExcludingKeys(excludedKeys, objRef, scope, addHelper, objectRestNoSymbols, useBuiltIns) {
    var keys = [];
    var allLiteral = true;
    var hasTemplateLiteral = false;
    for (var i = 0; i < excludedKeys.length; i++) {
      var prop = excludedKeys[i];
      var key = prop.key;
      if (isIdentifier$f(key) && !prop.computed) {
        keys.push(stringLiteral$6(key.name));
      } else if (isTemplateLiteral$1(key)) {
        keys.push(cloneNode$g(key));
        hasTemplateLiteral = true;
      } else if (isLiteral$5(key)) {
        keys.push(stringLiteral$6(String(key.value)));
      } else if (isPrivateName$3(key)) ; else {
        keys.push(cloneNode$g(key));
        allLiteral = false;
      }
    }
    var value;
    if (keys.length === 0) {
      var extendsHelper = useBuiltIns ? memberExpression$a(identifier$e("Object"), identifier$e("assign")) : addHelper("extends");
      value = callExpression$c(extendsHelper, [objectExpression$3([]), sequenceExpression$8([callExpression$c(addHelper("objectDestructuringEmpty"), [cloneNode$g(objRef)]), cloneNode$g(objRef)])]);
    } else {
      var keyExpression = arrayExpression$1(keys);
      if (!allLiteral) {
        keyExpression = callExpression$c(memberExpression$a(keyExpression, identifier$e("map")), [addHelper("toPropertyKey")]);
      } else if (!hasTemplateLiteral && !isProgram$1(scope.block)) {
        var programScope = scope.getProgramParent();
        var id = programScope.generateUidIdentifier("excluded");
        programScope.push({
          id: id,
          init: keyExpression,
          kind: "const"
        });
        keyExpression = cloneNode$g(id);
      }
      value = callExpression$c(addHelper("objectWithoutProperties" + (objectRestNoSymbols ? "Loose" : "")), [cloneNode$g(objRef), keyExpression]);
    }
    return value;
  }
  function convertVariableDeclaration(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
    var node = path.node,
      scope = path.scope;
    var nodeKind = node.kind;
    var nodeLoc = node.loc;
    var nodes = [];
    for (var i = 0; i < node.declarations.length; i++) {
      var declar = node.declarations[i];
      var patternId = declar.init;
      var pattern = declar.id;
      var destructuring = new DestructuringTransformer({
        blockHoist: node._blockHoist,
        nodes: nodes,
        scope: scope,
        kind: node.kind,
        iterableIsArray: iterableIsArray,
        arrayLikeIsIterable: arrayLikeIsIterable,
        useBuiltIns: useBuiltIns,
        objectRestNoSymbols: objectRestNoSymbols,
        addHelper: addHelper
      });
      if (isPattern(pattern)) {
        destructuring.init(pattern, patternId);
        if (+i !== node.declarations.length - 1) {
          inherits$3(nodes[nodes.length - 1], declar);
        }
      } else {
        nodes.push(inherits$3(destructuring.buildVariableAssignment(pattern, patternId), declar));
      }
    }
    var tail = null;
    var nodesOut = [];
    for (var _i2 = 0, _nodes = nodes; _i2 < _nodes.length; _i2++) {
      var _node = _nodes[_i2];
      if (isVariableDeclaration$3(_node)) {
        if (tail !== null) {
          var _tail$declarations;
          (_tail$declarations = tail.declarations).push.apply(_tail$declarations, _toConsumableArray(_node.declarations));
          continue;
        } else {
          _node.kind = nodeKind;
          tail = _node;
        }
      } else {
        tail = null;
      }
      if (!_node.loc) {
        _node.loc = nodeLoc;
      }
      nodesOut.push(_node);
    }
    if (nodesOut.length === 2 && isVariableDeclaration$3(nodesOut[0]) && isExpressionStatement$2(nodesOut[1]) && isCallExpression$8(nodesOut[1].expression) && nodesOut[0].declarations.length === 1) {
      var expr = nodesOut[1].expression;
      expr.arguments = [nodesOut[0].declarations[0].init];
      nodesOut = [expr];
    } else {
      if (isForStatement$2(path.parent, {
        init: node
      }) && !nodesOut.some(function (v) {
        return isVariableDeclaration$3(v);
      })) {
        for (var _i3 = 0; _i3 < nodesOut.length; _i3++) {
          var _node2 = nodesOut[_i3];
          if (isExpressionStatement$2(_node2)) {
            nodesOut[_i3] = _node2.expression;
          }
        }
      }
    }
    if (nodesOut.length === 1) {
      path.replaceWith(nodesOut[0]);
    } else {
      path.replaceWithMultiple(nodesOut);
    }
    scope.crawl();
  }
  function convertAssignmentExpression(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
    var node = path.node,
      scope = path.scope,
      parentPath = path.parentPath;
    var nodes = [];
    var destructuring = new DestructuringTransformer({
      operator: node.operator,
      scope: scope,
      nodes: nodes,
      arrayLikeIsIterable: arrayLikeIsIterable,
      iterableIsArray: iterableIsArray,
      objectRestNoSymbols: objectRestNoSymbols,
      useBuiltIns: useBuiltIns,
      addHelper: addHelper
    });
    var ref;
    if (!parentPath.isExpressionStatement() && !parentPath.isSequenceExpression() || path.isCompletionRecord()) {
      ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref");
      nodes.push(variableDeclaration$6("var", [variableDeclarator$6(ref, node.right)]));
      if (isArrayExpression$2(node.right)) {
        destructuring.arrayRefSet.add(ref.name);
      }
    }
    destructuring.init(node.left, ref || node.right);
    if (ref) {
      if (parentPath.isArrowFunctionExpression()) {
        path.replaceWith(blockStatement$6([]));
        nodes.push(returnStatement$3(cloneNode$g(ref)));
      } else {
        nodes.push(expressionStatement$7(cloneNode$g(ref)));
      }
    }
    path.replaceWithMultiple(nodes);
    scope.crawl();
  }

  function variableDeclarationHasPattern(node) {
    for (var _iterator = _createForOfIteratorHelperLoose(node.declarations), _step; !(_step = _iterator()).done;) {
      var declar = _step.value;
      if (isPattern(declar.id)) {
        return true;
      }
    }
    return false;
  }
  var _transformDestructuring = declare(function (api, options) {
    var _ref, _api$assumption, _ref2, _options$allowArrayLi, _ref3, _api$assumption2;
    api.assertVersion("*");
    var _options$useBuiltIns = options.useBuiltIns,
      useBuiltIns = _options$useBuiltIns === void 0 ? false : _options$useBuiltIns;
    var iterableIsArray = (_ref = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose) != null ? _ref : false;
    var arrayLikeIsIterable = (_ref2 = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable")) != null ? _ref2 : false;
    var objectRestNoSymbols = (_ref3 = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : options.loose) != null ? _ref3 : false;
    return {
      name: "transform-destructuring",
      visitor: {
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var declaration = path.get("declaration");
          if (!declaration.isVariableDeclaration()) return;
          if (!variableDeclarationHasPattern(declaration.node)) return;
          var specifiers = [];
          for (var _i = 0, _Object$keys = Object.keys(path.getOuterBindingIdentifiers()); _i < _Object$keys.length; _i++) {
            var name = _Object$keys[_i];
            specifiers.push(exportSpecifier$2(identifier$e(name), identifier$e(name)));
          }
          path.replaceWith(declaration.node);
          path.insertAfter(exportNamedDeclaration$2(null, specifiers));
          path.scope.crawl();
        },
        ForXStatement: function ForXStatement(path) {
          var _this = this;
          var node = path.node,
            scope = path.scope;
          var left = node.left;
          if (isPattern(left)) {
            var temp = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration$6("var", [variableDeclarator$6(temp)]);
            path.ensureBlock();
            var statementBody = path.node.body.body;
            var _nodes = [];
            if (statementBody.length === 0 && path.isCompletionRecord()) {
              _nodes.unshift(expressionStatement$7(scope.buildUndefinedNode()));
            }
            _nodes.unshift(expressionStatement$7(assignmentExpression$b("=", left, cloneNode$g(temp))));
            unshiftForXStatementBody(path, _nodes);
            scope.crawl();
            return;
          }
          if (!isVariableDeclaration$3(left)) return;
          var pattern = left.declarations[0].id;
          if (!isPattern(pattern)) return;
          var key = scope.generateUidIdentifier("ref");
          node.left = variableDeclaration$6(left.kind, [variableDeclarator$6(key, null)]);
          var nodes = [];
          var destructuring = new DestructuringTransformer({
            kind: left.kind,
            scope: scope,
            nodes: nodes,
            arrayLikeIsIterable: arrayLikeIsIterable,
            iterableIsArray: iterableIsArray,
            objectRestNoSymbols: objectRestNoSymbols,
            useBuiltIns: useBuiltIns,
            addHelper: function addHelper(name) {
              return _this.addHelper(name);
            }
          });
          destructuring.init(pattern, key);
          unshiftForXStatementBody(path, nodes);
          scope.crawl();
        },
        CatchClause: function CatchClause(_ref4) {
          var _this2 = this;
          var node = _ref4.node,
            scope = _ref4.scope;
          var pattern = node.param;
          if (!isPattern(pattern)) return;
          var ref = scope.generateUidIdentifier("ref");
          node.param = ref;
          var nodes = [];
          var destructuring = new DestructuringTransformer({
            kind: "let",
            scope: scope,
            nodes: nodes,
            arrayLikeIsIterable: arrayLikeIsIterable,
            iterableIsArray: iterableIsArray,
            objectRestNoSymbols: objectRestNoSymbols,
            useBuiltIns: useBuiltIns,
            addHelper: function addHelper(name) {
              return _this2.addHelper(name);
            }
          });
          destructuring.init(pattern, ref);
          node.body.body = [].concat(nodes, _toConsumableArray(node.body.body));
          scope.crawl();
        },
        AssignmentExpression: function (_AssignmentExpression) {
          function AssignmentExpression(_x, _x2) {
            return _AssignmentExpression.apply(this, arguments);
          }
          AssignmentExpression.toString = function () {
            return _AssignmentExpression.toString();
          };
          return AssignmentExpression;
        }(function (path, state) {
          if (!isPattern(path.node.left)) return;
          convertAssignmentExpression(path, function (name) {
            return state.addHelper(name);
          }, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
        }),
        VariableDeclaration: function VariableDeclaration(path, state) {
          var node = path.node,
            parent = path.parent;
          if (isForXStatement$1(parent)) return;
          if (!parent || !path.container) return;
          if (!variableDeclarationHasPattern(node)) return;
          convertVariableDeclaration(path, function (name) {
            return state.addHelper(name);
          }, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
        }
      }
    };
  });

  var _marked = _regeneratorRuntime().mark(traversePattern),
    _marked2 = _regeneratorRuntime().mark(privateKeyPathIterator),
    _marked3 = _regeneratorRuntime().mark(transformPrivateKeyDestructuring);
  var assignmentExpression$2 = assignmentExpression$b,
    binaryExpression = binaryExpression$5,
    conditionalExpression = conditionalExpression$5,
    cloneNode$1 = cloneNode$g,
    isObjectProperty$1 = isObjectProperty$3,
    isPrivateName$1 = isPrivateName$3,
    memberExpression$2 = memberExpression$a,
    numericLiteral = numericLiteral$6,
    objectPattern = objectPattern$1,
    restElement = restElement$2,
    variableDeclarator = variableDeclarator$6,
    variableDeclaration = variableDeclaration$6,
    unaryExpression = unaryExpression$5;
  function buildUndefinedNode() {
    return unaryExpression("void", numericLiteral(0));
  }
  function transformAssignmentPattern(initializer, tempId) {
    return conditionalExpression(binaryExpression("===", cloneNode$1(tempId), buildUndefinedNode()), initializer, cloneNode$1(tempId));
  }
  function initRestExcludingKeys(pattern) {
    if (pattern.type === "ObjectPattern") {
      var properties = pattern.properties;
      if (properties[properties.length - 1].type === "RestElement") {
        return [];
      }
    }
    return null;
  }
  function growRestExcludingKeys(excludingKeys, properties, scope) {
    if (excludingKeys === null) return;
    for (var _iterator = _createForOfIteratorHelperLoose(properties), _step; !(_step = _iterator()).done;) {
      var property = _step.value;
      var propertyKey = property.key;
      if (property.computed && !scope.isStatic(propertyKey)) {
        var tempId = scope.generateDeclaredUidIdentifier("m");
        property.key = assignmentExpression$2("=", tempId, propertyKey);
        excludingKeys.push({
          key: tempId,
          computed: true
        });
      } else if (propertyKey.type !== "PrivateName") {
        excludingKeys.push(property);
      }
    }
  }
  function buildVariableDeclarationFromParams(params, scope) {
    var _buildAssignmentsFrom = buildAssignmentsFromPatternList(params, scope, false),
      elements = _buildAssignmentsFrom.elements,
      transformed = _buildAssignmentsFrom.transformed;
    return {
      params: elements,
      variableDeclaration: variableDeclaration("var", transformed.map(function (_ref) {
        var left = _ref.left,
          right = _ref.right;
        return variableDeclarator(left, right);
      }))
    };
  }
  function buildAssignmentsFromPatternList(elements, scope, isAssignment) {
    var newElements = [],
      transformed = [];
    for (var _iterator2 = _createForOfIteratorHelperLoose(elements), _step2; !(_step2 = _iterator2()).done;) {
      var element = _step2.value;
      if (element === null) {
        newElements.push(null);
        transformed.push(null);
        continue;
      }
      var tempId = scope.generateUidIdentifier("p");
      if (isAssignment) {
        scope.push({
          id: cloneNode$1(tempId)
        });
      }
      if (element.type === "RestElement") {
        newElements.push(restElement(tempId));
        element = element.argument;
      } else {
        newElements.push(tempId);
      }
      if (element.type === "AssignmentPattern") {
        transformed.push({
          left: element.left,
          right: transformAssignmentPattern(element.right, tempId)
        });
      } else {
        transformed.push({
          left: element,
          right: cloneNode$1(tempId)
        });
      }
    }
    return {
      elements: newElements,
      transformed: transformed
    };
  }
  function traversePattern(root, visitor) {
    var stack, item, _item, node, index, depth, list, i, _list, _i;
    return _regeneratorRuntime().wrap(function traversePattern$(_context) {
      while (1) switch (_context.prev = _context.next) {
        case 0:
          stack = [];
          stack.push({
            node: root,
            index: 0,
            depth: 0
          });
        case 2:
          if (!((item = stack.pop()) !== undefined)) {
            _context.next = 25;
            break;
          }
          _item = item, node = _item.node, index = _item.index;
          if (!(node === null)) {
            _context.next = 6;
            break;
          }
          return _context.abrupt("continue", 2);
        case 6:
          return _context.delegateYield(visitor(node, index, item.depth), "t0", 7);
        case 7:
          depth = item.depth + 1;
          _context.t1 = node.type;
          _context.next = _context.t1 === "AssignmentPattern" ? 11 : _context.t1 === "ObjectProperty" ? 13 : _context.t1 === "RestElement" ? 15 : _context.t1 === "ObjectPattern" ? 17 : _context.t1 === "ArrayPattern" ? 19 : _context.t1 === "TSParameterProperty" ? 21 : _context.t1 === "TSAsExpression" ? 21 : _context.t1 === "TSTypeAssertion" ? 21 : _context.t1 === "TSNonNullExpression" ? 21 : 22;
          break;
        case 11:
          stack.push({
            node: node.left,
            index: 0,
            depth: depth
          });
          return _context.abrupt("break", 23);
        case 13:
          stack.push({
            node: node.value,
            index: index,
            depth: item.depth
          });
          return _context.abrupt("break", 23);
        case 15:
          stack.push({
            node: node.argument,
            index: 0,
            depth: depth
          });
          return _context.abrupt("break", 23);
        case 17:
          for (list = node.properties, i = list.length - 1; i >= 0; i--) {
            stack.push({
              node: list[i],
              index: i,
              depth: depth
            });
          }
          return _context.abrupt("break", 23);
        case 19:
          for (_list = node.elements, _i = _list.length - 1; _i >= 0; _i--) {
            stack.push({
              node: _list[_i],
              index: _i,
              depth: depth
            });
          }
          return _context.abrupt("break", 23);
        case 21:
          throw new Error("TypeScript features must first be transformed by " + "@babel/plugin-transform-typescript.\n" + "If you have already enabled that plugin (or '@babel/preset-typescript'), make sure " + "that it runs before @babel/plugin-proposal-destructuring-private.");
        case 22:
          return _context.abrupt("break", 23);
        case 23:
          _context.next = 2;
          break;
        case 25:
        case "end":
          return _context.stop();
      }
    }, _marked);
  }
  function hasPrivateKeys(pattern) {
    var result = false;
    traversePattern(pattern, _regeneratorRuntime().mark(function _callee(node) {
      return _regeneratorRuntime().wrap(function _callee$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            if (!(isObjectProperty$1(node) && isPrivateName$1(node.key))) {
              _context2.next = 4;
              break;
            }
            result = true;
            _context2.next = 4;
            return;
          case 4:
          case "end":
            return _context2.stop();
        }
      }, _callee);
    })).next();
    return result;
  }
  function hasPrivateClassElement(node) {
    return node.body.some(function (element) {
      return isPrivateName$1(element.key);
    });
  }
  function privateKeyPathIterator(pattern) {
    var indexPath;
    return _regeneratorRuntime().wrap(function privateKeyPathIterator$(_context4) {
      while (1) switch (_context4.prev = _context4.next) {
        case 0:
          indexPath = [];
          return _context4.delegateYield(traversePattern(pattern, _regeneratorRuntime().mark(function _callee2(node, index, depth) {
            return _regeneratorRuntime().wrap(function _callee2$(_context3) {
              while (1) switch (_context3.prev = _context3.next) {
                case 0:
                  indexPath[depth] = index;
                  if (!(isObjectProperty$1(node) && isPrivateName$1(node.key))) {
                    _context3.next = 4;
                    break;
                  }
                  _context3.next = 4;
                  return indexPath.slice(1, depth + 1);
                case 4:
                case "end":
                  return _context3.stop();
              }
            }, _callee2);
          })), "t0", 2);
        case 2:
        case "end":
          return _context4.stop();
      }
    }, _marked2);
  }
  function rightWillBeReferencedOnce(left) {
    switch (left.type) {
      case "Identifier":
      case "ArrayPattern":
        return true;
      case "ObjectPattern":
        return left.properties.length === 1;
      default:
        return false;
    }
  }
  function transformPrivateKeyDestructuring(left, right, scope, isAssignment, shouldPreserveCompletion, addHelper, objectRestNoSymbols, useBuiltIns) {
    var stack, rootRight, item, _item2, restExcludingKeys, _item3, _left, _right, searchPrivateKey, _ref2, properties, indexPath, indexPathIndex, index, isRightSafeToReuse, tempId, _left2, _properties, propertiesSlice, nextRestExcludingKeys, property, key, computed, leftElements, leftElementsAfterIndex, _buildAssignmentsFrom2, elements, transformed, i, _transformed$;
    return _regeneratorRuntime().wrap(function transformPrivateKeyDestructuring$(_context5) {
      while (1) switch (_context5.prev = _context5.next) {
        case 0:
          stack = [];
          rootRight = right;
          stack.push({
            left: left,
            right: right,
            restExcludingKeys: initRestExcludingKeys(left)
          });
        case 3:
          if (!((item = stack.pop()) !== undefined)) {
            _context5.next = 65;
            break;
          }
          _item2 = item, restExcludingKeys = _item2.restExcludingKeys;
          _item3 = item, _left = _item3.left, _right = _item3.right;
          searchPrivateKey = privateKeyPathIterator(_left).next();
          if (!searchPrivateKey.done) {
            _context5.next = 19;
            break;
          }
          if (!((restExcludingKeys == null ? void 0 : restExcludingKeys.length) > 0)) {
            _context5.next = 15;
            break;
          }
          _ref2 = _left, properties = _ref2.properties;
          if (properties.length === 1) {
            _left = properties[0].argument;
          }
          _context5.next = 13;
          return {
            left: _left,
            right: buildObjectExcludingKeys(restExcludingKeys, _right, scope, addHelper, objectRestNoSymbols, useBuiltIns)
          };
        case 13:
          _context5.next = 17;
          break;
        case 15:
          _context5.next = 17;
          return {
            left: _left,
            right: _right
          };
        case 17:
          _context5.next = 63;
          break;
        case 19:
          indexPath = searchPrivateKey.value;
          indexPathIndex = 0;
        case 21:
          if (!(indexPathIndex < indexPath.length && (index = indexPath[indexPathIndex]) !== undefined || _left.type === "AssignmentPattern")) {
            _context5.next = 62;
            break;
          }
          isRightSafeToReuse = !(shouldPreserveCompletion && _right === rootRight) && (rightWillBeReferencedOnce(_left) || scope.isStatic(_right));
          if (isRightSafeToReuse) {
            _context5.next = 29;
            break;
          }
          tempId = scope.generateUidIdentifier("m");
          if (isAssignment) {
            scope.push({
              id: cloneNode$1(tempId)
            });
          }
          _context5.next = 28;
          return {
            left: tempId,
            right: _right
          };
        case 28:
          _right = cloneNode$1(tempId);
        case 29:
          _context5.t0 = _left.type;
          _context5.next = _context5.t0 === "ObjectPattern" ? 32 : _context5.t0 === "AssignmentPattern" ? 44 : _context5.t0 === "ArrayPattern" ? 47 : 58;
          break;
        case 32:
          _left2 = _left, _properties = _left2.properties;
          if (!(index > 0)) {
            _context5.next = 37;
            break;
          }
          propertiesSlice = _properties.slice(0, index);
          _context5.next = 37;
          return {
            left: objectPattern(propertiesSlice),
            right: cloneNode$1(_right)
          };
        case 37:
          if (index < _properties.length - 1) {
            nextRestExcludingKeys = indexPathIndex === 0 ? restExcludingKeys : initRestExcludingKeys(_left);
            growRestExcludingKeys(nextRestExcludingKeys, _properties.slice(0, index + 1), scope);
            stack.push({
              left: objectPattern(_properties.slice(index + 1)),
              right: cloneNode$1(_right),
              restExcludingKeys: nextRestExcludingKeys
            });
          }
          property = _properties[index];
          _left = property.value;
          key = property.key;
          computed = property.computed || key.type !== "Identifier" && key.type !== "PrivateName";
          _right = memberExpression$2(_right, key, computed);
          return _context5.abrupt("break", 59);
        case 44:
          _right = transformAssignmentPattern(_left.right, _right);
          _left = _left.left;
          return _context5.abrupt("break", 59);
        case 47:
          leftElements = _left.elements;
          leftElementsAfterIndex = leftElements.splice(index);
          _buildAssignmentsFrom2 = buildAssignmentsFromPatternList(leftElementsAfterIndex, scope, isAssignment), elements = _buildAssignmentsFrom2.elements, transformed = _buildAssignmentsFrom2.transformed;
          leftElements.push.apply(leftElements, _toConsumableArray(elements));
          _context5.next = 53;
          return {
            left: _left,
            right: cloneNode$1(_right)
          };
        case 53:
          for (i = transformed.length - 1; i > 0; i--) {
            if (transformed[i] !== null) {
              stack.push(transformed[i]);
            }
          }
          _transformed$ = transformed[0];
          _left = _transformed$.left;
          _right = _transformed$.right;
          return _context5.abrupt("break", 59);
        case 58:
          return _context5.abrupt("break", 59);
        case 59:
          indexPathIndex++;
          _context5.next = 21;
          break;
        case 62:
          stack.push({
            left: _left,
            right: _right,
            restExcludingKeys: initRestExcludingKeys(_left)
          });
        case 63:
          _context5.next = 3;
          break;
        case 65:
        case "end":
          return _context5.stop();
      }
    }, _marked3);
  }

  var iifeVisitor = {
    "ReferencedIdentifier|BindingIdentifier": function ReferencedIdentifierBindingIdentifier(path, state) {
      var scope = path.scope,
        node = path.node;
      var name = node.name;
      if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) {
        state.needsOuterBinding = true;
        path.stop();
      }
    },
    "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": function TypeAnnotationTSTypeAnnotationTypeParameterDeclarationTSTypeParameterDeclaration(path) {
      return path.skip();
    }
  };
  function collectShadowedParamsNames(param, functionScope, shadowedParams) {
    for (var _i = 0, _Object$keys = Object.keys(param.getBindingIdentifiers()); _i < _Object$keys.length; _i++) {
      var _functionScope$bindin;
      var name = _Object$keys[_i];
      var constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations;
      if (constantViolations) {
        for (var _iterator = _createForOfIteratorHelperLoose(constantViolations), _step; !(_step = _iterator()).done;) {
          var redeclarator = _step.value;
          var node = redeclarator.node;
          switch (node.type) {
            case "VariableDeclarator":
              {
                if (node.init === null) {
                  var declaration = redeclarator.parentPath;
                  if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) {
                    redeclarator.remove();
                    break;
                  }
                }
                shadowedParams.add(name);
                break;
              }
            case "FunctionDeclaration":
              shadowedParams.add(name);
              break;
          }
        }
      }
    }
  }
  function buildScopeIIFE(shadowedParams, body) {
    var args = [];
    var params = [];
    for (var _iterator2 = _createForOfIteratorHelperLoose(shadowedParams), _step2; !(_step2 = _iterator2()).done;) {
      var name = _step2.value;
      args.push(identifier$e(name));
      params.push(identifier$e(name));
    }
    return returnStatement$3(callExpression$c(arrowFunctionExpression$4(params, body), args));
  }

  var _templateObject$q;
  var buildDefaultParam = template$1.statement("\n  let VARIABLE_NAME =\n    arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?\n      arguments[ARGUMENT_KEY]\n    :\n      DEFAULT_VALUE;\n");
  var buildLooseDefaultParam = template$1.statement("\n  if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {\n    ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;\n  }\n");
  var buildLooseDestructuredDefaultParam = template$1.statement("\n  let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;\n");
  var buildSafeArgumentsAccess = template$1.statement("\n  let $0 = arguments.length > $1 ? arguments[$1] : undefined;\n");
  function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) {
    var params = path.get("params");
    var isSimpleParameterList = params.every(function (param) {
      return param.isIdentifier();
    });
    if (isSimpleParameterList) return false;
    var node = path.node,
      scope = path.scope;
    var body = [];
    var shadowedParams = new Set();
    for (var _iterator = _createForOfIteratorHelperLoose(params), _step; !(_step = _iterator()).done;) {
      var _param2 = _step.value;
      collectShadowedParamsNames(_param2, scope, shadowedParams);
    }
    var state = {
      needsOuterBinding: false,
      scope: scope
    };
    if (shadowedParams.size === 0) {
      for (var _iterator2 = _createForOfIteratorHelperLoose(params), _step2; !(_step2 = _iterator2()).done;) {
        var param = _step2.value;
        if (!param.isIdentifier()) param.traverse(iifeVisitor, state);
        if (state.needsOuterBinding) break;
      }
    }
    var firstOptionalIndex = null;
    for (var i = 0; i < params.length; i++) {
      var _param = params[i];
      if (shouldTransformParam && !shouldTransformParam(i)) {
        continue;
      }
      var transformedRestNodes = [];
      if (replaceRestElement) {
        replaceRestElement(path, _param, transformedRestNodes);
      }
      var paramIsAssignmentPattern = _param.isAssignmentPattern();
      if (paramIsAssignmentPattern && (ignoreFunctionLength || isMethod$1(node, {
        kind: "set"
      }))) {
        var left = _param.get("left");
        var right = _param.get("right");
        var undefinedNode = scope.buildUndefinedNode();
        if (left.isIdentifier()) {
          body.push(buildLooseDefaultParam({
            ASSIGNMENT_IDENTIFIER: cloneNode$g(left.node),
            DEFAULT_VALUE: right.node,
            UNDEFINED: undefinedNode
          }));
          _param.replaceWith(left.node);
        } else if (left.isObjectPattern() || left.isArrayPattern()) {
          var paramName = scope.generateUidIdentifier();
          body.push(buildLooseDestructuredDefaultParam({
            ASSIGNMENT_IDENTIFIER: left.node,
            DEFAULT_VALUE: right.node,
            PARAMETER_NAME: cloneNode$g(paramName),
            UNDEFINED: undefinedNode
          }));
          _param.replaceWith(paramName);
        }
      } else if (paramIsAssignmentPattern) {
        if (firstOptionalIndex === null) firstOptionalIndex = i;
        var _left = _param.get("left");
        var _right = _param.get("right");
        var defNode = buildDefaultParam({
          VARIABLE_NAME: _left.node,
          DEFAULT_VALUE: _right.node,
          ARGUMENT_KEY: numericLiteral$6(i)
        });
        body.push(defNode);
      } else if (firstOptionalIndex !== null) {
        var _defNode = buildSafeArgumentsAccess([_param.node, numericLiteral$6(i)]);
        body.push(_defNode);
      } else if (_param.isObjectPattern() || _param.isArrayPattern()) {
        var uid = path.scope.generateUidIdentifier("ref");
        uid.typeAnnotation = _param.node.typeAnnotation;
        var _defNode2 = variableDeclaration$6("let", [variableDeclarator$6(_param.node, uid)]);
        body.push(_defNode2);
        _param.replaceWith(cloneNode$g(uid));
      }
      if (transformedRestNodes) {
        for (var _iterator3 = _createForOfIteratorHelperLoose(transformedRestNodes), _step3; !(_step3 = _iterator3()).done;) {
          var transformedNode = _step3.value;
          body.push(transformedNode);
        }
      }
    }
    if (firstOptionalIndex !== null) {
      node.params = node.params.slice(0, firstOptionalIndex);
    }
    path.ensureBlock();
    var path2 = path;
    var async = node.async,
      generator = node.generator;
    if (generator || state.needsOuterBinding || shadowedParams.size > 0) {
      body.push(buildScopeIIFE(shadowedParams, path2.node.body));
      path.set("body", blockStatement$6(body));
      var bodyPath = path2.get("body.body");
      var arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee");
      arrowPath.arrowFunctionToExpression();
      arrowPath.node.generator = generator;
      arrowPath.node.async = async;
      node.generator = false;
      node.async = false;
      if (async) {
        path2.node.body = template$1.statement.ast(_templateObject$q || (_templateObject$q = _taggedTemplateLiteralLoose(["{\n        try {\n          ", "\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }"])), path2.node.body.body);
      }
    } else {
      path2.get("body").unshiftContainer("body", body);
    }
    return true;
  }

  var buildRest = template$1.statement("\n  for (var LEN = ARGUMENTS.length,\n           ARRAY = new Array(ARRAY_LEN),\n           KEY = START;\n       KEY < LEN;\n       KEY++) {\n    ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n  }\n");
  var restIndex = template$1.expression("\n  (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]\n");
  var restIndexImpure = template$1.expression("\n  REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]\n");
  var restLength = template$1.expression("\n  ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n");
  function referencesRest(path, state) {
    if (path.node.name === state.name) {
      return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);
    }
    return false;
  }
  var memberExpressionOptimisationVisitor = {
    Scope: function Scope(path, state) {
      if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {
        path.skip();
      }
    },
    Flow: function Flow(path) {
      if (path.isTypeCastExpression()) return;
      path.skip();
    },
    Function: function Function(path, state) {
      var oldNoOptimise = state.noOptimise;
      state.noOptimise = true;
      path.traverse(memberExpressionOptimisationVisitor, state);
      state.noOptimise = oldNoOptimise;
      path.skip();
    },
    ReferencedIdentifier: function ReferencedIdentifier(path, state) {
      var node = path.node;
      if (node.name === "arguments") {
        state.deopted = true;
      }
      if (!referencesRest(path, state)) return;
      if (state.noOptimise) {
        state.deopted = true;
      } else {
        var parentPath = path.parentPath;
        if (parentPath.listKey === "params" && parentPath.key < state.offset) {
          return;
        }
        if (parentPath.isMemberExpression({
          object: node
        })) {
          var grandparentPath = parentPath.parentPath;
          var argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({
            operator: "delete"
          }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee);
          if (argsOptEligible) {
            if (parentPath.node.computed) {
              if (parentPath.get("property").isBaseType("number")) {
                state.candidates.push({
                  cause: "indexGetter",
                  path: path
                });
                return;
              }
            } else if (parentPath.node.property.name === "length") {
              state.candidates.push({
                cause: "lengthGetter",
                path: path
              });
              return;
            }
          }
        }
        if (state.offset === 0 && parentPath.isSpreadElement()) {
          var call = parentPath.parentPath;
          if (call.isCallExpression() && call.node.arguments.length === 1) {
            state.candidates.push({
              cause: "argSpread",
              path: path
            });
            return;
          }
        }
        state.references.push(path);
      }
    },
    BindingIdentifier: function BindingIdentifier(path, state) {
      if (referencesRest(path, state)) {
        state.deopted = true;
      }
    }
  };
  function getParamsCount(node) {
    var count = node.params.length;
    if (count > 0 && isIdentifier$f(node.params[0], {
      name: "this"
    })) {
      count -= 1;
    }
    return count;
  }
  function hasRest(node) {
    var length = node.params.length;
    return length > 0 && isRestElement$2(node.params[length - 1]);
  }
  function optimiseIndexGetter(path, argsId, offset) {
    var offsetLiteral = numericLiteral$6(offset);
    var index;
    var parent = path.parent;
    if (isNumericLiteral(parent.property)) {
      index = numericLiteral$6(parent.property.value + offset);
    } else if (offset === 0) {
      index = parent.property;
    } else {
      index = binaryExpression$5("+", parent.property, cloneNode$g(offsetLiteral));
    }
    var scope = path.scope,
      parentPath = path.parentPath;
    if (!scope.isPure(index)) {
      var temp = scope.generateUidIdentifierBasedOnNode(index);
      scope.push({
        id: temp,
        kind: "var"
      });
      parentPath.replaceWith(restIndexImpure({
        ARGUMENTS: argsId,
        OFFSET: offsetLiteral,
        INDEX: index,
        REF: cloneNode$g(temp)
      }));
    } else {
      parentPath.replaceWith(restIndex({
        ARGUMENTS: argsId,
        OFFSET: offsetLiteral,
        INDEX: index
      }));
      var replacedParentPath = parentPath;
      var offsetTestPath = replacedParentPath.get("test");
      var valRes = offsetTestPath.get("left").evaluate();
      if (valRes.confident) {
        if (valRes.value === true) {
          replacedParentPath.replaceWith(scope.buildUndefinedNode());
        } else {
          offsetTestPath.replaceWith(offsetTestPath.get("right"));
        }
      }
    }
  }
  function optimiseLengthGetter(path, argsId, offset) {
    if (offset) {
      path.parentPath.replaceWith(restLength({
        ARGUMENTS: argsId,
        OFFSET: numericLiteral$6(offset)
      }));
    } else {
      path.replaceWith(argsId);
    }
  }
  function convertFunctionRest(path) {
    var _state$references;
    var node = path.node,
      scope = path.scope;
    if (!hasRest(node)) return false;
    var restPath = path.get("params." + (node.params.length - 1) + ".argument");
    if (!restPath.isIdentifier()) {
      var shadowedParams = new Set();
      collectShadowedParamsNames(restPath, path.scope, shadowedParams);
      var needsIIFE = shadowedParams.size > 0;
      if (!needsIIFE) {
        var _state = {
          needsOuterBinding: false,
          scope: scope
        };
        restPath.traverse(iifeVisitor, _state);
        needsIIFE = _state.needsOuterBinding;
      }
      if (needsIIFE) {
        path.ensureBlock();
        path.set("body", blockStatement$6([buildScopeIIFE(shadowedParams, path.node.body)]));
      }
    }
    var rest = restPath.node;
    node.params.pop();
    if (isPattern(rest)) {
      var pattern = rest;
      rest = scope.generateUidIdentifier("ref");
      var declar = variableDeclaration$6("let", [variableDeclarator$6(pattern, rest)]);
      path.ensureBlock();
      node.body.body.unshift(declar);
    } else if (rest.name === "arguments") {
      scope.rename(rest.name);
    }
    var argsId = identifier$e("arguments");
    var paramsCount = getParamsCount(node);
    var state = {
      references: [],
      offset: paramsCount,
      argumentsNode: argsId,
      outerBinding: scope.getBindingIdentifier(rest.name),
      candidates: [],
      name: rest.name,
      deopted: false
    };
    path.traverse(memberExpressionOptimisationVisitor, state);
    if (!state.deopted && !state.references.length) {
      for (var _iterator = _createForOfIteratorHelperLoose(state.candidates), _step; !(_step = _iterator()).done;) {
        var _step$value = _step.value,
          _path = _step$value.path,
          cause = _step$value.cause;
        var clonedArgsId = cloneNode$g(argsId);
        switch (cause) {
          case "indexGetter":
            optimiseIndexGetter(_path, clonedArgsId, state.offset);
            break;
          case "lengthGetter":
            optimiseLengthGetter(_path, clonedArgsId, state.offset);
            break;
          default:
            _path.replaceWith(clonedArgsId);
        }
      }
      return true;
    }
    (_state$references = state.references).push.apply(_state$references, _toConsumableArray(state.candidates.map(function (_ref) {
      var path = _ref.path;
      return path;
    })));
    var start = numericLiteral$6(paramsCount);
    var key = scope.generateUidIdentifier("key");
    var len = scope.generateUidIdentifier("len");
    var arrKey, arrLen;
    if (paramsCount) {
      arrKey = binaryExpression$5("-", cloneNode$g(key), cloneNode$g(start));
      arrLen = conditionalExpression$5(binaryExpression$5(">", cloneNode$g(len), cloneNode$g(start)), binaryExpression$5("-", cloneNode$g(len), cloneNode$g(start)), numericLiteral$6(0));
    } else {
      arrKey = identifier$e(key.name);
      arrLen = identifier$e(len.name);
    }
    var loop = buildRest({
      ARGUMENTS: argsId,
      ARRAY_KEY: arrKey,
      ARRAY_LEN: arrLen,
      START: start,
      ARRAY: rest,
      KEY: key,
      LEN: len
    });
    if (state.deopted) {
      node.body.body.unshift(loop);
    } else {
      var target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent();
      target.findParent(function (path) {
        if (path.isLoop()) {
          target = path;
        } else {
          return path.isFunction();
        }
      });
      target.insertBefore(loop);
    }
    return true;
  }

  var _transformParameters = declare(function (api, options) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose;
    var noNewArrows = (_api$assumption2 = api.assumption("noNewArrows")) != null ? _api$assumption2 : true;
    return {
      name: "transform-parameters",
      visitor: {
        Function: function Function(path) {
          if (path.isArrowFunctionExpression() && path.get("params").some(function (param) {
            return param.isRestElement() || param.isAssignmentPattern();
          })) {
            path.arrowFunctionToExpression({
              allowInsertArrowWithRest: false,
              noNewArrows: noNewArrows
            });
            if (!path.isFunctionExpression()) return;
          }
          var convertedRest = convertFunctionRest(path);
          var convertedParams = convertFunctionParams(path, ignoreFunctionLength);
          if (convertedRest || convertedParams) {
            path.scope.crawl();
          }
        }
      }
    };
  });

  var proposalDestructuringPrivate = declare(function (_ref) {
    var assertVersion = _ref.assertVersion,
      assumption = _ref.assumption,
      t = _ref.types;
    assertVersion("*");
    var assignmentExpression = t.assignmentExpression,
      assignmentPattern = t.assignmentPattern,
      cloneNode = t.cloneNode,
      expressionStatement = t.expressionStatement,
      isExpressionStatement = t.isExpressionStatement,
      isIdentifier = t.isIdentifier,
      isSequenceExpression = t.isSequenceExpression,
      sequenceExpression = t.sequenceExpression,
      variableDeclaration = t.variableDeclaration,
      variableDeclarator = t.variableDeclarator;
    var ignoreFunctionLength = assumption("ignoreFunctionLength");
    var objectRestNoSymbols = assumption("objectRestNoSymbols");
    var privateKeyDestructuringVisitor = {
      Function: function Function(path) {
        var firstPrivateIndex = path.node.params.findIndex(function (param) {
          return hasPrivateKeys(param);
        });
        if (firstPrivateIndex === -1) return;
        convertFunctionParams(path, ignoreFunctionLength, function () {
          return false;
        });
        var node = path.node,
          scope = path.scope;
        var params = node.params;
        var firstAssignmentPatternIndex = ignoreFunctionLength ? -1 : params.findIndex(function (param) {
          return param.type === "AssignmentPattern";
        });
        var paramsAfterIndex = params.splice(firstPrivateIndex);
        var _buildVariableDeclara = buildVariableDeclarationFromParams(paramsAfterIndex, scope),
          transformedParams = _buildVariableDeclara.params,
          variableDeclaration = _buildVariableDeclara.variableDeclaration;
        path.get("body").unshiftContainer("body", variableDeclaration);
        params.push.apply(params, _toConsumableArray(transformedParams));
        if (firstAssignmentPatternIndex >= firstPrivateIndex) {
          params[firstAssignmentPatternIndex] = assignmentPattern(params[firstAssignmentPatternIndex], scope.buildUndefinedNode());
        }
        scope.crawl();
      },
      CatchClause: function CatchClause(path) {
        var node = path.node,
          scope = path.scope;
        if (!hasPrivateKeys(node.param)) return;
        var ref = scope.generateUidIdentifier("e");
        path.get("body").unshiftContainer("body", variableDeclaration("let", [variableDeclarator(node.param, ref)]));
        node.param = cloneNode(ref);
        scope.crawl();
      },
      ForXStatement: function ForXStatement(path) {
        var node = path.node,
          scope = path.scope;
        var leftPath = path.get("left");
        if (leftPath.isVariableDeclaration()) {
          var left = leftPath.node;
          if (!hasPrivateKeys(left.declarations[0].id)) return;
          var temp = scope.generateUidIdentifier("ref");
          node.left = variableDeclaration(left.kind, [variableDeclarator(temp, null)]);
          left.declarations[0].init = cloneNode(temp);
          unshiftForXStatementBody(path, [left]);
          scope.crawl();
        } else if (leftPath.isPattern()) {
          if (!hasPrivateKeys(leftPath.node)) return;
          var _temp = scope.generateUidIdentifier("ref");
          node.left = variableDeclaration("const", [variableDeclarator(_temp, null)]);
          var assignExpr = expressionStatement(assignmentExpression("=", leftPath.node, cloneNode(_temp)));
          unshiftForXStatementBody(path, [assignExpr]);
          scope.crawl();
        }
      },
      VariableDeclaration: function VariableDeclaration(path, state) {
        var scope = path.scope,
          node = path.node;
        var declarations = node.declarations;
        if (!declarations.some(function (declarator) {
          return hasPrivateKeys(declarator.id);
        })) {
          return;
        }
        var newDeclarations = [];
        for (var _iterator = _createForOfIteratorHelperLoose(declarations), _step; !(_step = _iterator()).done;) {
          var declarator = _step.value;
          for (var _iterator2 = _createForOfIteratorHelperLoose(transformPrivateKeyDestructuring(declarator.id, declarator.init, scope, false, false, function (name) {
              return state.addHelper(name);
            }, objectRestNoSymbols, true)), _step2; !(_step2 = _iterator2()).done;) {
            var _step2$value = _step2.value,
              left = _step2$value.left,
              right = _step2$value.right;
            newDeclarations.push(variableDeclarator(left, right));
          }
        }
        node.declarations = newDeclarations;
        scope.crawl();
      },
      AssignmentExpression: function AssignmentExpression(path, state) {
        var node = path.node,
          scope = path.scope,
          parent = path.parent;
        if (!hasPrivateKeys(node.left)) return;
        var assignments = [];
        var shouldPreserveCompletion = !isExpressionStatement(parent) && !isSequenceExpression(parent) || path.isCompletionRecord();
        for (var _iterator3 = _createForOfIteratorHelperLoose(transformPrivateKeyDestructuring(node.left, node.right, scope, true, shouldPreserveCompletion, function (name) {
            return state.addHelper(name);
          }, objectRestNoSymbols, true)), _step3; !(_step3 = _iterator3()).done;) {
          var _step3$value = _step3.value,
            _left = _step3$value.left,
            _right = _step3$value.right;
          assignments.push(assignmentExpression("=", _left, _right));
        }
        if (shouldPreserveCompletion) {
          var _assignments$ = assignments[0],
            left = _assignments$.left,
            right = _assignments$.right;
          if (isIdentifier(left) && right === node.right) {
            if (!isIdentifier(assignments[assignments.length - 1].right, {
              name: left.name
            })) {
              assignments.push(cloneNode(left));
            }
          } else {
            var tempId = scope.generateDeclaredUidIdentifier("m");
            assignments.unshift(assignmentExpression("=", tempId, cloneNode(node.right)));
            assignments.push(cloneNode(tempId));
          }
        }
        path.replaceWith(sequenceExpression(assignments));
        scope.crawl();
      }
    };
    var visitor = {
      Class: function Class(path, state) {
        if (!hasPrivateClassElement(path.node.body)) return;
        path.traverse(privateKeyDestructuringVisitor, state);
      }
    };
    return {
      name: "proposal-destructuring-private",
      inherits: syntaxDestructuringPrivate,
      visitor: visitor
    };
  });

  var proposalDoExpressions = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "proposal-do-expressions",
      inherits: syntaxDoExpressions,
      visitor: {
        DoExpression: {
          exit: function exit(path) {
            var node = path.node;
            if (node.async) {
              return;
            }
            var body = node.body.body;
            if (body.length) {
              path.replaceExpressionWithStatements(body);
            } else {
              path.replaceWith(path.scope.buildUndefinedNode());
            }
          }
        }
      }
    };
  });

  var Alphabetic = {};

  var regenerate$2 = {exports: {}};

  regenerate$2.exports;
  (function (module, exports) {
    (function (root) {
      var freeExports = exports;
      var freeModule = module && module.exports == freeExports && module;
      var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
      if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
        root = freeGlobal;
      }
      var ERRORS = {
        'rangeOrder': "A range\u2019s `stop` value must be greater than or equal " + 'to the `start` value.',
        'codePointRange': 'Invalid code point value. Code points range from ' + 'U+000000 to U+10FFFF.'
      };
      var HIGH_SURROGATE_MIN = 0xD800;
      var HIGH_SURROGATE_MAX = 0xDBFF;
      var LOW_SURROGATE_MIN = 0xDC00;
      var LOW_SURROGATE_MAX = 0xDFFF;
      var regexNull = /\\x00([^0123456789]|$)/g;
      var object = {};
      var hasOwnProperty = object.hasOwnProperty;
      var extend = function extend(destination, source) {
        var key;
        for (key in source) {
          if (hasOwnProperty.call(source, key)) {
            destination[key] = source[key];
          }
        }
        return destination;
      };
      var forEach = function forEach(array, callback) {
        var index = -1;
        var length = array.length;
        while (++index < length) {
          callback(array[index], index);
        }
      };
      var toString = object.toString;
      var isArray = function isArray(value) {
        return toString.call(value) == '[object Array]';
      };
      var isNumber = function isNumber(value) {
        return typeof value == 'number' || toString.call(value) == '[object Number]';
      };
      var zeroes = '0000';
      var pad = function pad(number, totalCharacters) {
        var string = String(number);
        return string.length < totalCharacters ? (zeroes + string).slice(-totalCharacters) : string;
      };
      var hex = function hex(number) {
        return Number(number).toString(16).toUpperCase();
      };
      var slice = [].slice;
      var dataFromCodePoints = function dataFromCodePoints(codePoints) {
        var index = -1;
        var length = codePoints.length;
        var max = length - 1;
        var result = [];
        var isStart = true;
        var tmp;
        var previous = 0;
        while (++index < length) {
          tmp = codePoints[index];
          if (isStart) {
            result.push(tmp);
            previous = tmp;
            isStart = false;
          } else {
            if (tmp == previous + 1) {
              if (index != max) {
                previous = tmp;
                continue;
              } else {
                isStart = true;
                result.push(tmp + 1);
              }
            } else {
              result.push(previous + 1, tmp);
              previous = tmp;
            }
          }
        }
        if (!isStart) {
          result.push(tmp + 1);
        }
        return result;
      };
      var dataRemove = function dataRemove(data, codePoint) {
        var index = 0;
        var start;
        var end;
        var length = data.length;
        while (index < length) {
          start = data[index];
          end = data[index + 1];
          if (codePoint >= start && codePoint < end) {
            if (codePoint == start) {
              if (end == start + 1) {
                data.splice(index, 2);
                return data;
              } else {
                data[index] = codePoint + 1;
                return data;
              }
            } else if (codePoint == end - 1) {
              data[index + 1] = codePoint;
              return data;
            } else {
              data.splice(index, 2, start, codePoint, codePoint + 1, end);
              return data;
            }
          }
          index += 2;
        }
        return data;
      };
      var dataRemoveRange = function dataRemoveRange(data, rangeStart, rangeEnd) {
        if (rangeEnd < rangeStart) {
          throw Error(ERRORS.rangeOrder);
        }
        var index = 0;
        var start;
        var end;
        while (index < data.length) {
          start = data[index];
          end = data[index + 1] - 1;
          if (start > rangeEnd) {
            return data;
          }
          if (rangeStart <= start && rangeEnd >= end) {
            data.splice(index, 2);
            continue;
          }
          if (rangeStart >= start && rangeEnd < end) {
            if (rangeStart == start) {
              data[index] = rangeEnd + 1;
              data[index + 1] = end + 1;
              return data;
            }
            data.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);
            return data;
          }
          if (rangeStart >= start && rangeStart <= end) {
            data[index + 1] = rangeStart;
          } else if (rangeEnd >= start && rangeEnd <= end) {
            data[index] = rangeEnd + 1;
            return data;
          }
          index += 2;
        }
        return data;
      };
      var dataAdd = function dataAdd(data, codePoint) {
        var index = 0;
        var start;
        var end;
        var lastIndex = null;
        var length = data.length;
        if (codePoint < 0x0 || codePoint > 0x10FFFF) {
          throw RangeError(ERRORS.codePointRange);
        }
        while (index < length) {
          start = data[index];
          end = data[index + 1];
          if (codePoint >= start && codePoint < end) {
            return data;
          }
          if (codePoint == start - 1) {
            data[index] = codePoint;
            return data;
          }
          if (start > codePoint) {
            data.splice(lastIndex != null ? lastIndex + 2 : 0, 0, codePoint, codePoint + 1);
            return data;
          }
          if (codePoint == end) {
            if (codePoint + 1 == data[index + 2]) {
              data.splice(index, 4, start, data[index + 3]);
              return data;
            }
            data[index + 1] = codePoint + 1;
            return data;
          }
          lastIndex = index;
          index += 2;
        }
        data.push(codePoint, codePoint + 1);
        return data;
      };
      var dataAddData = function dataAddData(dataA, dataB) {
        var index = 0;
        var start;
        var end;
        var data = dataA.slice();
        var length = dataB.length;
        while (index < length) {
          start = dataB[index];
          end = dataB[index + 1] - 1;
          if (start == end) {
            data = dataAdd(data, start);
          } else {
            data = dataAddRange(data, start, end);
          }
          index += 2;
        }
        return data;
      };
      var dataRemoveData = function dataRemoveData(dataA, dataB) {
        var index = 0;
        var start;
        var end;
        var data = dataA.slice();
        var length = dataB.length;
        while (index < length) {
          start = dataB[index];
          end = dataB[index + 1] - 1;
          if (start == end) {
            data = dataRemove(data, start);
          } else {
            data = dataRemoveRange(data, start, end);
          }
          index += 2;
        }
        return data;
      };
      var dataAddRange = function dataAddRange(data, rangeStart, rangeEnd) {
        if (rangeEnd < rangeStart) {
          throw Error(ERRORS.rangeOrder);
        }
        if (rangeStart < 0x0 || rangeStart > 0x10FFFF || rangeEnd < 0x0 || rangeEnd > 0x10FFFF) {
          throw RangeError(ERRORS.codePointRange);
        }
        var index = 0;
        var start;
        var end;
        var added = false;
        var length = data.length;
        while (index < length) {
          start = data[index];
          end = data[index + 1];
          if (added) {
            if (start == rangeEnd + 1) {
              data.splice(index - 1, 2);
              return data;
            }
            if (start > rangeEnd) {
              return data;
            }
            if (start >= rangeStart && start <= rangeEnd) {
              if (end > rangeStart && end - 1 <= rangeEnd) {
                data.splice(index, 2);
                index -= 2;
              } else {
                data.splice(index - 1, 2);
                index -= 2;
              }
            }
          } else if (start == rangeEnd + 1 || start == rangeEnd) {
            data[index] = rangeStart;
            return data;
          } else if (start > rangeEnd) {
            data.splice(index, 0, rangeStart, rangeEnd + 1);
            return data;
          } else if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {
            return data;
          } else if (rangeStart >= start && rangeStart < end || end == rangeStart) {
            data[index + 1] = rangeEnd + 1;
            added = true;
          } else if (rangeStart <= start && rangeEnd + 1 >= end) {
            data[index] = rangeStart;
            data[index + 1] = rangeEnd + 1;
            added = true;
          }
          index += 2;
        }
        if (!added) {
          data.push(rangeStart, rangeEnd + 1);
        }
        return data;
      };
      var dataContains = function dataContains(data, codePoint) {
        var index = 0;
        var length = data.length;
        var start = data[index];
        var end = data[length - 1];
        if (length >= 2) {
          if (codePoint < start || codePoint > end) {
            return false;
          }
        }
        while (index < length) {
          start = data[index];
          end = data[index + 1];
          if (codePoint >= start && codePoint < end) {
            return true;
          }
          index += 2;
        }
        return false;
      };
      var dataIntersection = function dataIntersection(data, codePoints) {
        var index = 0;
        var length = codePoints.length;
        var codePoint;
        var result = [];
        while (index < length) {
          codePoint = codePoints[index];
          if (dataContains(data, codePoint)) {
            result.push(codePoint);
          }
          ++index;
        }
        return dataFromCodePoints(result);
      };
      var dataIsEmpty = function dataIsEmpty(data) {
        return !data.length;
      };
      var dataIsSingleton = function dataIsSingleton(data) {
        return data.length == 2 && data[0] + 1 == data[1];
      };
      var dataToArray = function dataToArray(data) {
        var index = 0;
        var start;
        var end;
        var result = [];
        var length = data.length;
        while (index < length) {
          start = data[index];
          end = data[index + 1];
          while (start < end) {
            result.push(start);
            ++start;
          }
          index += 2;
        }
        return result;
      };
      var floor = Math.floor;
      var highSurrogate = function highSurrogate(codePoint) {
        return parseInt(floor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN, 10);
      };
      var lowSurrogate = function lowSurrogate(codePoint) {
        return parseInt((codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN, 10);
      };
      var stringFromCharCode = String.fromCharCode;
      var codePointToString = function codePointToString(codePoint) {
        var string;
        if (codePoint == 0x09) {
          string = '\\t';
        } else if (codePoint == 0x0A) {
          string = '\\n';
        } else if (codePoint == 0x0C) {
          string = '\\f';
        } else if (codePoint == 0x0D) {
          string = '\\r';
        } else if (codePoint == 0x2D) {
          string = '\\x2D';
        } else if (codePoint == 0x5C) {
          string = '\\\\';
        } else if (codePoint == 0x24 || codePoint >= 0x28 && codePoint <= 0x2B || codePoint == 0x2E || codePoint == 0x2F || codePoint == 0x3F || codePoint >= 0x5B && codePoint <= 0x5E || codePoint >= 0x7B && codePoint <= 0x7D) {
          string = '\\' + stringFromCharCode(codePoint);
        } else if (codePoint >= 0x20 && codePoint <= 0x7E) {
          string = stringFromCharCode(codePoint);
        } else if (codePoint <= 0xFF) {
          string = '\\x' + pad(hex(codePoint), 2);
        } else {
          string = "\\u" + pad(hex(codePoint), 4);
        }
        return string;
      };
      var codePointToStringUnicode = function codePointToStringUnicode(codePoint) {
        if (codePoint <= 0xFFFF) {
          return codePointToString(codePoint);
        }
        return "\\u{" + codePoint.toString(16).toUpperCase() + '}';
      };
      var symbolToCodePoint = function symbolToCodePoint(symbol) {
        var length = symbol.length;
        var first = symbol.charCodeAt(0);
        var second;
        if (first >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX && length > 1) {
          second = symbol.charCodeAt(1);
          return (first - HIGH_SURROGATE_MIN) * 0x400 + second - LOW_SURROGATE_MIN + 0x10000;
        }
        return first;
      };
      var createBMPCharacterClasses = function createBMPCharacterClasses(data) {
        var result = '';
        var index = 0;
        var start;
        var end;
        var length = data.length;
        if (dataIsSingleton(data)) {
          return codePointToString(data[0]);
        }
        while (index < length) {
          start = data[index];
          end = data[index + 1] - 1;
          if (start == end) {
            result += codePointToString(start);
          } else if (start + 1 == end) {
            result += codePointToString(start) + codePointToString(end);
          } else {
            result += codePointToString(start) + '-' + codePointToString(end);
          }
          index += 2;
        }
        return '[' + result + ']';
      };
      var createUnicodeCharacterClasses = function createUnicodeCharacterClasses(data) {
        var result = '';
        var index = 0;
        var start;
        var end;
        var length = data.length;
        if (dataIsSingleton(data)) {
          return codePointToStringUnicode(data[0]);
        }
        while (index < length) {
          start = data[index];
          end = data[index + 1] - 1;
          if (start == end) {
            result += codePointToStringUnicode(start);
          } else if (start + 1 == end) {
            result += codePointToStringUnicode(start) + codePointToStringUnicode(end);
          } else {
            result += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);
          }
          index += 2;
        }
        return '[' + result + ']';
      };
      var splitAtBMP = function splitAtBMP(data) {
        var loneHighSurrogates = [];
        var loneLowSurrogates = [];
        var bmp = [];
        var astral = [];
        var index = 0;
        var start;
        var end;
        var length = data.length;
        while (index < length) {
          start = data[index];
          end = data[index + 1] - 1;
          if (start < HIGH_SURROGATE_MIN) {
            if (end < HIGH_SURROGATE_MIN) {
              bmp.push(start, end + 1);
            }
            if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {
              bmp.push(start, HIGH_SURROGATE_MIN);
              loneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);
            }
            if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
              bmp.push(start, HIGH_SURROGATE_MIN);
              loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);
              loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);
            }
            if (end > LOW_SURROGATE_MAX) {
              bmp.push(start, HIGH_SURROGATE_MIN);
              loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);
              loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);
              if (end <= 0xFFFF) {
                bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
              } else {
                bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                astral.push(0xFFFF + 1, end + 1);
              }
            }
          } else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {
            if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {
              loneHighSurrogates.push(start, end + 1);
            }
            if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
              loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);
              loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);
            }
            if (end > LOW_SURROGATE_MAX) {
              loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);
              loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);
              if (end <= 0xFFFF) {
                bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
              } else {
                bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                astral.push(0xFFFF + 1, end + 1);
              }
            }
          } else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {
            if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
              loneLowSurrogates.push(start, end + 1);
            }
            if (end > LOW_SURROGATE_MAX) {
              loneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);
              if (end <= 0xFFFF) {
                bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
              } else {
                bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                astral.push(0xFFFF + 1, end + 1);
              }
            }
          } else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {
            if (end <= 0xFFFF) {
              bmp.push(start, end + 1);
            } else {
              bmp.push(start, 0xFFFF + 1);
              astral.push(0xFFFF + 1, end + 1);
            }
          } else {
            astral.push(start, end + 1);
          }
          index += 2;
        }
        return {
          'loneHighSurrogates': loneHighSurrogates,
          'loneLowSurrogates': loneLowSurrogates,
          'bmp': bmp,
          'astral': astral
        };
      };
      var optimizeSurrogateMappings = function optimizeSurrogateMappings(surrogateMappings) {
        var result = [];
        var tmpLow = [];
        var addLow = false;
        var mapping;
        var nextMapping;
        var highSurrogates;
        var lowSurrogates;
        var nextHighSurrogates;
        var nextLowSurrogates;
        var index = -1;
        var length = surrogateMappings.length;
        while (++index < length) {
          mapping = surrogateMappings[index];
          nextMapping = surrogateMappings[index + 1];
          if (!nextMapping) {
            result.push(mapping);
            continue;
          }
          highSurrogates = mapping[0];
          lowSurrogates = mapping[1];
          nextHighSurrogates = nextMapping[0];
          nextLowSurrogates = nextMapping[1];
          tmpLow = lowSurrogates;
          while (nextHighSurrogates && highSurrogates[0] == nextHighSurrogates[0] && highSurrogates[1] == nextHighSurrogates[1]) {
            if (dataIsSingleton(nextLowSurrogates)) {
              tmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);
            } else {
              tmpLow = dataAddRange(tmpLow, nextLowSurrogates[0], nextLowSurrogates[1] - 1);
            }
            ++index;
            mapping = surrogateMappings[index];
            highSurrogates = mapping[0];
            lowSurrogates = mapping[1];
            nextMapping = surrogateMappings[index + 1];
            nextHighSurrogates = nextMapping && nextMapping[0];
            nextLowSurrogates = nextMapping && nextMapping[1];
            addLow = true;
          }
          result.push([highSurrogates, addLow ? tmpLow : lowSurrogates]);
          addLow = false;
        }
        return optimizeByLowSurrogates(result);
      };
      var optimizeByLowSurrogates = function optimizeByLowSurrogates(surrogateMappings) {
        if (surrogateMappings.length == 1) {
          return surrogateMappings;
        }
        var index = -1;
        var innerIndex = -1;
        while (++index < surrogateMappings.length) {
          var mapping = surrogateMappings[index];
          var lowSurrogates = mapping[1];
          var lowSurrogateStart = lowSurrogates[0];
          var lowSurrogateEnd = lowSurrogates[1];
          innerIndex = index;
          while (++innerIndex < surrogateMappings.length) {
            var otherMapping = surrogateMappings[innerIndex];
            var otherLowSurrogates = otherMapping[1];
            var otherLowSurrogateStart = otherLowSurrogates[0];
            var otherLowSurrogateEnd = otherLowSurrogates[1];
            if (lowSurrogateStart == otherLowSurrogateStart && lowSurrogateEnd == otherLowSurrogateEnd && otherLowSurrogates.length === 2) {
              if (dataIsSingleton(otherMapping[0])) {
                mapping[0] = dataAdd(mapping[0], otherMapping[0][0]);
              } else {
                mapping[0] = dataAddRange(mapping[0], otherMapping[0][0], otherMapping[0][1] - 1);
              }
              surrogateMappings.splice(innerIndex, 1);
              --innerIndex;
            }
          }
        }
        return surrogateMappings;
      };
      var surrogateSet = function surrogateSet(data) {
        if (!data.length) {
          return [];
        }
        var index = 0;
        var start;
        var end;
        var startHigh;
        var startLow;
        var endHigh;
        var endLow;
        var surrogateMappings = [];
        var length = data.length;
        while (index < length) {
          start = data[index];
          end = data[index + 1] - 1;
          startHigh = highSurrogate(start);
          startLow = lowSurrogate(start);
          endHigh = highSurrogate(end);
          endLow = lowSurrogate(end);
          var startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;
          var endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;
          var complete = false;
          if (startHigh == endHigh || startsWithLowestLowSurrogate && endsWithHighestLowSurrogate) {
            surrogateMappings.push([[startHigh, endHigh + 1], [startLow, endLow + 1]]);
            complete = true;
          } else {
            surrogateMappings.push([[startHigh, startHigh + 1], [startLow, LOW_SURROGATE_MAX + 1]]);
          }
          if (!complete && startHigh + 1 < endHigh) {
            if (endsWithHighestLowSurrogate) {
              surrogateMappings.push([[startHigh + 1, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);
              complete = true;
            } else {
              surrogateMappings.push([[startHigh + 1, endHigh], [LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]]);
            }
          }
          if (!complete) {
            surrogateMappings.push([[endHigh, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);
          }
          index += 2;
        }
        return optimizeSurrogateMappings(surrogateMappings);
      };
      var createSurrogateCharacterClasses = function createSurrogateCharacterClasses(surrogateMappings) {
        var result = [];
        forEach(surrogateMappings, function (surrogateMapping) {
          var highSurrogates = surrogateMapping[0];
          var lowSurrogates = surrogateMapping[1];
          result.push(createBMPCharacterClasses(highSurrogates) + createBMPCharacterClasses(lowSurrogates));
        });
        return result.join('|');
      };
      var createCharacterClassesFromData = function createCharacterClassesFromData(data, bmpOnly, hasUnicodeFlag) {
        if (hasUnicodeFlag) {
          return createUnicodeCharacterClasses(data);
        }
        var result = [];
        var parts = splitAtBMP(data);
        var loneHighSurrogates = parts.loneHighSurrogates;
        var loneLowSurrogates = parts.loneLowSurrogates;
        var bmp = parts.bmp;
        var astral = parts.astral;
        var hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);
        var hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);
        var surrogateMappings = surrogateSet(astral);
        if (bmpOnly) {
          bmp = dataAddData(bmp, loneHighSurrogates);
          hasLoneHighSurrogates = false;
          bmp = dataAddData(bmp, loneLowSurrogates);
          hasLoneLowSurrogates = false;
        }
        if (!dataIsEmpty(bmp)) {
          result.push(createBMPCharacterClasses(bmp));
        }
        if (surrogateMappings.length) {
          result.push(createSurrogateCharacterClasses(surrogateMappings));
        }
        if (hasLoneHighSurrogates) {
          result.push(createBMPCharacterClasses(loneHighSurrogates) + "(?![\\uDC00-\\uDFFF])");
        }
        if (hasLoneLowSurrogates) {
          result.push("(?:[^\\uD800-\\uDBFF]|^)" + createBMPCharacterClasses(loneLowSurrogates));
        }
        return result.join('|');
      };
      var _regenerate = function regenerate(value) {
        if (arguments.length > 1) {
          value = slice.call(arguments);
        }
        if (this instanceof _regenerate) {
          this.data = [];
          return value ? this.add(value) : this;
        }
        return new _regenerate().add(value);
      };
      _regenerate.version = '1.4.2';
      var proto = _regenerate.prototype;
      extend(proto, {
        'add': function add(value) {
          var $this = this;
          if (value == null) {
            return $this;
          }
          if (value instanceof _regenerate) {
            $this.data = dataAddData($this.data, value.data);
            return $this;
          }
          if (arguments.length > 1) {
            value = slice.call(arguments);
          }
          if (isArray(value)) {
            forEach(value, function (item) {
              $this.add(item);
            });
            return $this;
          }
          $this.data = dataAdd($this.data, isNumber(value) ? value : symbolToCodePoint(value));
          return $this;
        },
        'remove': function remove(value) {
          var $this = this;
          if (value == null) {
            return $this;
          }
          if (value instanceof _regenerate) {
            $this.data = dataRemoveData($this.data, value.data);
            return $this;
          }
          if (arguments.length > 1) {
            value = slice.call(arguments);
          }
          if (isArray(value)) {
            forEach(value, function (item) {
              $this.remove(item);
            });
            return $this;
          }
          $this.data = dataRemove($this.data, isNumber(value) ? value : symbolToCodePoint(value));
          return $this;
        },
        'addRange': function addRange(start, end) {
          var $this = this;
          $this.data = dataAddRange($this.data, isNumber(start) ? start : symbolToCodePoint(start), isNumber(end) ? end : symbolToCodePoint(end));
          return $this;
        },
        'removeRange': function removeRange(start, end) {
          var $this = this;
          var startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);
          var endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);
          $this.data = dataRemoveRange($this.data, startCodePoint, endCodePoint);
          return $this;
        },
        'intersection': function intersection(argument) {
          var $this = this;
          var array = argument instanceof _regenerate ? dataToArray(argument.data) : argument;
          $this.data = dataIntersection($this.data, array);
          return $this;
        },
        'contains': function contains(codePoint) {
          return dataContains(this.data, isNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint));
        },
        'clone': function clone() {
          var set = new _regenerate();
          set.data = this.data.slice(0);
          return set;
        },
        'toString': function toString(options) {
          var result = createCharacterClassesFromData(this.data, options ? options.bmpOnly : false, options ? options.hasUnicodeFlag : false);
          if (!result) {
            return '[]';
          }
          return result.replace(regexNull, '\\0$1');
        },
        'toRegExp': function toRegExp(flags) {
          var pattern = this.toString(flags && flags.indexOf('u') != -1 ? {
            'hasUnicodeFlag': true
          } : null);
          return RegExp(pattern, flags || '');
        },
        'valueOf': function valueOf() {
          return dataToArray(this.data);
        }
      });
      proto.toArray = proto.valueOf;
      if (freeExports && !freeExports.nodeType) {
        if (freeModule) {
          freeModule.exports = _regenerate;
        } else {
          freeExports.regenerate = _regenerate;
        }
      } else {
        root.regenerate = _regenerate;
      }
    })(commonjsGlobal);
  })(regenerate$2, regenerate$2.exports);
  var regenerateExports = regenerate$2.exports;

  var hasRequiredAlphabetic;
  function requireAlphabetic() {
    if (hasRequiredAlphabetic) return Alphabetic;
    hasRequiredAlphabetic = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x345, 0x37F, 0x386, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x9B2, 0x9CE, 0x9D7, 0x9FC, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xD4E, 0xDBD, 0xDD6, 0xE4D, 0xE84, 0xEA5, 0xEC6, 0xECD, 0xF00, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8C5, 0xA8FB, 0xA9CF, 0xAAC0, 0xAAC2, 0xFB3E, 0x10808, 0x1083C, 0x10F27, 0x110C2, 0x11176, 0x111DA, 0x111DC, 0x11237, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11640, 0x11644, 0x116B8, 0x11909, 0x119E1, 0x11A9D, 0x11C40, 0x11D3A, 0x11D43, 0x11D98, 0x11FB0, 0x16FE3, 0x1B132, 0x1B155, 0x1BC9E, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E08F, 0x1E14E, 0x1E947, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5B0, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x657).addRange(0x659, 0x65F).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6E1, 0x6E8).addRange(0x6ED, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x710, 0x73F).addRange(0x74D, 0x7B1).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x817).addRange(0x81A, 0x82C).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x8D4, 0x8DF).addRange(0x8E3, 0x8E9).addRange(0x8F0, 0x93B).addRange(0x93D, 0x94C).addRange(0x94E, 0x950).addRange(0x955, 0x963).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8);
    set.addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BD, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9F0, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4C).addRange(0xA59, 0xA5C).addRange(0xA70, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE3).addRange(0xAF9, 0xAFC).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3D, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB56, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A);
    set.addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3D, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4C).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCC).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3D, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A);
    set.addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB9).addRange(0xEBB, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF83).addRange(0xF88, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1036).addRange(0x103B, 0x103F).addRange(0x1050, 0x108F).addRange(0x109A, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1713).addRange(0x171F, 0x1733).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17B3).addRange(0x17B6, 0x17C8).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B);
    set.addRange(0x1930, 0x1938).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A61, 0x1A74).addRange(0x1ABF, 0x1AC0).addRange(0x1ACC, 0x1ACE).addRange(0x1B00, 0x1B33).addRange(0x1B35, 0x1B43).addRange(0x1B45, 0x1B4C).addRange(0x1B80, 0x1BA9).addRange(0x1BAC, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1BE7, 0x1BF1).addRange(0x1C00, 0x1C36).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1DE7, 0x1DF4).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188);
    set.addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA674, 0xA67B).addRange(0xA67F, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA805).addRange(0xA807, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FF).addRange(0xA90A, 0xA92A).addRange(0xA930, 0xA952).addRange(0xA960, 0xA97C);
    set.addRange(0xA980, 0xA9B2).addRange(0xA9B4, 0xA9BF).addRange(0xA9E0, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAABE).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D);
    set.addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4);
    set.addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11045).addRange(0x11071, 0x11075).addRange(0x11080, 0x110B8).addRange(0x110D0, 0x110E8).addRange(0x11100, 0x11132).addRange(0x11144, 0x11147).addRange(0x11150, 0x11172).addRange(0x11180, 0x111BF).addRange(0x111C1, 0x111C4).addRange(0x111CE, 0x111CF).addRange(0x11200, 0x11211).addRange(0x11213, 0x11234).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112E8).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133D, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134C).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11441).addRange(0x11443, 0x11445).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114C1).addRange(0x114C4, 0x114C5);
    set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115BE).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x1163E).addRange(0x11680, 0x116B5).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172A).addRange(0x11740, 0x11746).addRange(0x11800, 0x11838).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193C).addRange(0x1193F, 0x11942).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119DF).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A32).addRange(0x11A35, 0x11A3E).addRange(0x11A50, 0x11A97).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C3E).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D41).addRange(0x11D46, 0x11D47).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D96).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F40).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F);
    set.addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734);
    set.addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D);
    set.addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Alphabetic.characters = set;
    return Alphabetic;
  }

  var Any = {};

  var hasRequiredAny;
  function requireAny() {
    if (hasRequiredAny) return Any;
    hasRequiredAny = 1;
    var set = regenerateExports();
    set.addRange(0x0, 0x10FFFF);
    Any.characters = set;
    return Any;
  }

  var ASCII_Hex_Digit = {};

  var hasRequiredASCII_Hex_Digit;
  function requireASCII_Hex_Digit() {
    if (hasRequiredASCII_Hex_Digit) return ASCII_Hex_Digit;
    hasRequiredASCII_Hex_Digit = 1;
    var set = regenerateExports();
    set.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66);
    ASCII_Hex_Digit.characters = set;
    return ASCII_Hex_Digit;
  }

  var ASCII = {};

  var hasRequiredASCII;
  function requireASCII() {
    if (hasRequiredASCII) return ASCII;
    hasRequiredASCII = 1;
    var set = regenerateExports();
    set.addRange(0x0, 0x7F);
    ASCII.characters = set;
    return ASCII;
  }

  var Assigned = {};

  var hasRequiredAssigned;
  function requireAssigned() {
    if (hasRequiredAssigned) return Assigned;
    hasRequiredAssigned = 1;
    var set = regenerateExports(0x38C, 0x85E, 0x9B2, 0x9D7, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1940, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA7D3, 0xFB3E, 0xFDCF, 0xFEFF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x110CD, 0x11288, 0x11350, 0x11357, 0x11909, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E08F, 0x1E2FF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0, 0xE0001);
    set.addRange(0x0, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x600, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x82D).addRange(0x830, 0x83E).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0);
    set.addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9);
    set.addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE3A).addRange(0xE3F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5);
    set.addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1736).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A1B).addRange(0x1A1E, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E).addRange(0x1B80, 0x1BF3).addRange(0x1BFC, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CD0, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D);
    set.addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x2064).addRange(0x2066, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x20D0, 0x20F0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x303F).addRange(0x3041, 0x3096).addRange(0x3099, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31EF, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9);
    set.addRange(0xA7F2, 0xA82C).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9).addRange(0xA8E0, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAAC2).addRange(0xAADB, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xD800, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFE19).addRange(0xFE20, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD);
    set.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FD).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E0, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939);
    set.addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F27).addRange(0x10F30, 0x10F59).addRange(0x10F70, 0x10F89).addRange(0x10FB0, 0x10FCB).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075).addRange(0x1107F, 0x110C2).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147).addRange(0x11150, 0x11176).addRange(0x11180, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);
    set.addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746).addRange(0x11800, 0x1183B).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4).addRange(0x11A00, 0x11A47).addRange(0x11A50, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11B00, 0x11B09).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06);
    set.addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF8).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5).addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB);
    set.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D1EA).addRange(0x1D200, 0x1D245).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E4D0, 0x1E4F9);
    set.addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887);
    set.addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);
    Assigned.characters = set;
    return Assigned;
  }

  var Bidi_Control = {};

  var hasRequiredBidi_Control;
  function requireBidi_Control() {
    if (hasRequiredBidi_Control) return Bidi_Control;
    hasRequiredBidi_Control = 1;
    var set = regenerateExports(0x61C);
    set.addRange(0x200E, 0x200F).addRange(0x202A, 0x202E).addRange(0x2066, 0x2069);
    Bidi_Control.characters = set;
    return Bidi_Control;
  }

  var Bidi_Mirrored = {};

  var hasRequiredBidi_Mirrored;
  function requireBidi_Mirrored() {
    if (hasRequiredBidi_Mirrored) return Bidi_Mirrored;
    hasRequiredBidi_Mirrored = 1;
    var set = regenerateExports(0x3C, 0x3E, 0x5B, 0x5D, 0x7B, 0x7D, 0xAB, 0xBB, 0x2140, 0x2211, 0x2224, 0x2226, 0x2239, 0x2262, 0x2298, 0x27C0, 0x29B8, 0x29C9, 0x29E1, 0x2A24, 0x2A26, 0x2A29, 0x2ADC, 0x2ADE, 0x2AF3, 0x2AFD, 0x2BFE, 0xFF1C, 0xFF1E, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x1D6DB, 0x1D715, 0x1D74F, 0x1D789, 0x1D7C3);
    set.addRange(0x28, 0x29).addRange(0xF3A, 0xF3D).addRange(0x169B, 0x169C).addRange(0x2039, 0x203A).addRange(0x2045, 0x2046).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2201, 0x2204).addRange(0x2208, 0x220D).addRange(0x2215, 0x2216).addRange(0x221A, 0x221D).addRange(0x221F, 0x2222).addRange(0x222B, 0x2233).addRange(0x223B, 0x224C).addRange(0x2252, 0x2255).addRange(0x225F, 0x2260).addRange(0x2264, 0x226B).addRange(0x226E, 0x228C).addRange(0x228F, 0x2292).addRange(0x22A2, 0x22A3).addRange(0x22A6, 0x22B8).addRange(0x22BE, 0x22BF).addRange(0x22C9, 0x22CD).addRange(0x22D0, 0x22D1).addRange(0x22D6, 0x22ED).addRange(0x22F0, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C3, 0x27C6).addRange(0x27C8, 0x27C9).addRange(0x27CB, 0x27CD).addRange(0x27D3, 0x27D6).addRange(0x27DC, 0x27DE).addRange(0x27E2, 0x27EF).addRange(0x2983, 0x2998).addRange(0x299B, 0x29A0).addRange(0x29A2, 0x29AF).addRange(0x29C0, 0x29C5).addRange(0x29CE, 0x29D2).addRange(0x29D4, 0x29D5).addRange(0x29D8, 0x29DC).addRange(0x29E3, 0x29E5).addRange(0x29E8, 0x29E9).addRange(0x29F4, 0x29F9).addRange(0x29FC, 0x29FD).addRange(0x2A0A, 0x2A1C).addRange(0x2A1E, 0x2A21).addRange(0x2A2B, 0x2A2E).addRange(0x2A34, 0x2A35);
    set.addRange(0x2A3C, 0x2A3E).addRange(0x2A57, 0x2A58).addRange(0x2A64, 0x2A65).addRange(0x2A6A, 0x2A6D).addRange(0x2A6F, 0x2A70).addRange(0x2A73, 0x2A74).addRange(0x2A79, 0x2AA3).addRange(0x2AA6, 0x2AAD).addRange(0x2AAF, 0x2AD6).addRange(0x2AE2, 0x2AE6).addRange(0x2AEC, 0x2AEE).addRange(0x2AF7, 0x2AFB).addRange(0x2E02, 0x2E05).addRange(0x2E09, 0x2E0A).addRange(0x2E0C, 0x2E0D).addRange(0x2E1C, 0x2E1D).addRange(0x2E20, 0x2E29).addRange(0x2E55, 0x2E5C).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xFE59, 0xFE5E).addRange(0xFE64, 0xFE65).addRange(0xFF08, 0xFF09).addRange(0xFF5F, 0xFF60).addRange(0xFF62, 0xFF63);
    Bidi_Mirrored.characters = set;
    return Bidi_Mirrored;
  }

  var Case_Ignorable = {};

  var hasRequiredCase_Ignorable;
  function requireCase_Ignorable() {
    if (hasRequiredCase_Ignorable) return Case_Ignorable;
    hasRequiredCase_Ignorable = 1;
    var set = regenerateExports(0x27, 0x2E, 0x3A, 0x5E, 0x60, 0xA8, 0xAD, 0xAF, 0xB4, 0x37A, 0x387, 0x559, 0x55F, 0x5BF, 0x5C7, 0x5F4, 0x61C, 0x640, 0x670, 0x70F, 0x711, 0x7FA, 0x7FD, 0x888, 0x93A, 0x93C, 0x94D, 0x971, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xEC6, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x10FC, 0x17C6, 0x17D7, 0x17DD, 0x1843, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1AA7, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x1D78, 0x1FBD, 0x2024, 0x2027, 0x2071, 0x207F, 0x2D6F, 0x2D7F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9CF, 0xAA43, 0xAA4C, 0xAA70, 0xAA7C, 0xAAB0, 0xAAC1, 0xAADD, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0xFE13, 0xFE52, 0xFE55, 0xFEFF, 0xFF07, 0xFF0E, 0xFF1A, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110BD, 0x110C2, 0x110CD, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x16F4F, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE, 0xE0001);
    set.addRange(0xB7, 0xB8).addRange(0x2B0, 0x36F).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x600, 0x605).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DD).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x816, 0x82D).addRange(0x859, 0x85B).addRange(0x890, 0x891).addRange(0x898, 0x89F).addRange(0x8C9, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);
    set.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE46, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180F).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);
    set.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x200B, 0x200F).addRange(0x2018, 0x2019).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20F0).addRange(0x2C7C, 0x2C7D).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3031, 0x3035).addRange(0x3099, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69C, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xA9E5, 0xA9E6).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xAAF3, 0xAAF4).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B);
    set.addRange(0xFBB2, 0xFBC2).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0xFFF9, 0xFFFB).addRange(0x10376, 0x1037A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725);
    set.addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13430, 0x13440).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1BC9D, 0x1BC9E).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D173, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006);
    set.addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E130, 0x1E13D).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EB, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94B).addRange(0x1F3FB, 0x1F3FF).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);
    Case_Ignorable.characters = set;
    return Case_Ignorable;
  }

  var Cased = {};

  var hasRequiredCased;
  function requireCased() {
    if (hasRequiredCased) return Cased;
    hasRequiredCased = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0x10780, 0x1D4A2, 0x1D4BB, 0x1D546);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149);
    set.addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69D).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7F6).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514);
    set.addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E900, 0x1E943).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);
    Cased.characters = set;
    return Cased;
  }

  var Changes_When_Casefolded = {};

  var hasRequiredChanges_When_Casefolded;
  function requireChanges_When_Casefolded() {
    if (hasRequiredChanges_When_Casefolded) return Changes_When_Casefolded;
    hasRequiredChanges_When_Casefolded = 1;
    var set = regenerateExports(0xB5, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x345, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);
    set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D1).addRange(0x3D5, 0x3D6).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4);
    set.addRange(0x1FB7, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC7, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);
    Changes_When_Casefolded.characters = set;
    return Changes_When_Casefolded;
  }

  var Changes_When_Casemapped = {};

  var hasRequiredChanges_When_Casemapped;
  function requireChanges_When_Casemapped() {
    if (hasRequiredChanges_When_Casemapped) return Changes_When_Casemapped;
    hasRequiredChanges_When_Casemapped = 1;
    var set = regenerateExports(0xB5, 0x1BF, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1D79, 0x1D7D, 0x1D8E, 0x1E9E, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2126, 0x2132, 0x214E, 0x2D27, 0x2D2D, 0xAB53);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x137).addRange(0x139, 0x18C).addRange(0x18E, 0x19A).addRange(0x19C, 0x1A9).addRange(0x1AC, 0x1B9).addRange(0x1BC, 0x1BD).addRange(0x1C4, 0x220).addRange(0x222, 0x233).addRange(0x23A, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3D1).addRange(0x3D5, 0x3F5).addRange(0x3F7, 0x3FB).addRange(0x3FD, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x561, 0x587).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E00, 0x1E9B).addRange(0x1EA0, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC);
    set.addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2C70).addRange(0x2C72, 0x2C73).addRange(0x2C75, 0x2C76).addRange(0x2C7E, 0x2CE3).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA72F).addRange(0xA732, 0xA76F).addRange(0xA779, 0xA787).addRange(0xA78B, 0xA78D).addRange(0xA790, 0xA794).addRange(0xA796, 0xA7AE).addRange(0xA7B0, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D6, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1E900, 0x1E943);
    Changes_When_Casemapped.characters = set;
    return Changes_When_Casemapped;
  }

  var Changes_When_Lowercased = {};

  var hasRequiredChanges_When_Lowercased;
  function requireChanges_When_Lowercased() {
    if (hasRequiredChanges_When_Lowercased) return Changes_When_Lowercased;
    hasRequiredChanges_When_Lowercased = 1;
    var set = regenerateExports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);
    set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF).addRange(0x1FB8, 0x1FBC).addRange(0x1FC8, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFC).addRange(0x212A, 0x212B);
    set.addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);
    Changes_When_Lowercased.characters = set;
    return Changes_When_Lowercased;
  }

  var Changes_When_NFKC_Casefolded = {};

  var hasRequiredChanges_When_NFKC_Casefolded;
  function requireChanges_When_NFKC_Casefolded() {
    if (hasRequiredChanges_When_NFKC_Casefolded) return Changes_When_NFKC_Casefolded;
    hasRequiredChanges_When_NFKC_Casefolded = 1;
    var set = regenerateExports(0xA0, 0xA8, 0xAA, 0xAD, 0xAF, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x136, 0x139, 0x13B, 0x13D, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x34F, 0x370, 0x372, 0x374, 0x376, 0x37A, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x61C, 0x9DF, 0xA33, 0xA36, 0xA5E, 0xE33, 0xEB3, 0xF0C, 0xF43, 0xF4D, 0xF52, 0xF57, 0xF5C, 0xF69, 0xF73, 0xF81, 0xF93, 0xF9D, 0xFA2, 0xFA7, 0xFAC, 0xFB9, 0x10C7, 0x10CD, 0x10FC, 0x1D78, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F71, 0x1F73, 0x1F75, 0x1F77, 0x1F79, 0x1F7B, 0x1F7D, 0x1FD3, 0x1FE3, 0x2011, 0x2017, 0x203C, 0x203E, 0x2057, 0x20A8, 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2A0C, 0x2ADC, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0x2D6F, 0x2E9F, 0x2EF3, 0x3000, 0x3036, 0x309F, 0x30FF, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA770, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xAB69, 0xFA10, 0xFA12, 0xFA20, 0xFA22, 0xFB1D, 0xFB3E, 0xFE74, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F190);
    set.addRange(0x41, 0x5A).addRange(0xB2, 0xB5).addRange(0xB8, 0xBA).addRange(0xBC, 0xBE).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x132, 0x134).addRange(0x13F, 0x141).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1CD).addRange(0x1F1, 0x1F4).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x2B0, 0x2B8).addRange(0x2D8, 0x2DD).addRange(0x2E0, 0x2E4).addRange(0x340, 0x341).addRange(0x343, 0x345).addRange(0x37E, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D6).addRange(0x3F0, 0x3F2).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x675, 0x678).addRange(0x958, 0x95F).addRange(0x9DC, 0x9DD).addRange(0xA59, 0xA5B).addRange(0xB5C, 0xB5D).addRange(0xEDC, 0xEDD);
    set.addRange(0xF75, 0xF79).addRange(0x10A0, 0x10C5).addRange(0x115F, 0x1160).addRange(0x13F8, 0x13FD).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D2C, 0x1D2E).addRange(0x1D30, 0x1D3A).addRange(0x1D3C, 0x1D4D).addRange(0x1D4F, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4).addRange(0x1FB7, 0x1FC4).addRange(0x1FC7, 0x1FCF).addRange(0x1FD8, 0x1FDB).addRange(0x1FDD, 0x1FDF).addRange(0x1FE8, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFE).addRange(0x2000, 0x200F).addRange(0x2024, 0x2026).addRange(0x202A, 0x202F).addRange(0x2033, 0x2034).addRange(0x2036, 0x2037).addRange(0x2047, 0x2049).addRange(0x205F, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x2100, 0x2103).addRange(0x2105, 0x2107).addRange(0x2109, 0x2113).addRange(0x2115, 0x2116).addRange(0x2119, 0x211D).addRange(0x2120, 0x2122).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213B, 0x2140).addRange(0x2145, 0x2149).addRange(0x2150, 0x217F).addRange(0x222C, 0x222D);
    set.addRange(0x222F, 0x2230).addRange(0x2329, 0x232A).addRange(0x2460, 0x24EA).addRange(0x2A74, 0x2A76).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7C, 0x2C80).addRange(0x2F00, 0x2FD5).addRange(0x3038, 0x303A).addRange(0x309B, 0x309C).addRange(0x3131, 0x318E).addRange(0x3192, 0x319F).addRange(0x3200, 0x321E).addRange(0x3220, 0x3247).addRange(0x3250, 0x327E).addRange(0x3280, 0x33FF).addRange(0xA69C, 0xA69D).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xA7F2, 0xA7F5).addRange(0xA7F8, 0xA7F9).addRange(0xAB5C, 0xAB5F).addRange(0xAB70, 0xABBF).addRange(0xF900, 0xFA0D).addRange(0xFA15, 0xFA1E).addRange(0xFA25, 0xFA26).addRange(0xFA2A, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFC).addRange(0xFE00, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE72).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7);
    set.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF0, 0xFFF8).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10781, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D15E, 0x1D164).addRange(0x1D173, 0x1D17A).addRange(0x1D1BB, 0x1D1C0).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E030, 0x1E06D).addRange(0x1E900, 0x1E921).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A);
    set.addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F100, 0x1F10A).addRange(0x1F110, 0x1F12E).addRange(0x1F130, 0x1F14F).addRange(0x1F16A, 0x1F16C).addRange(0x1F200, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1FBF0, 0x1FBF9).addRange(0x2F800, 0x2FA1D).addRange(0xE0000, 0xE0FFF);
    Changes_When_NFKC_Casefolded.characters = set;
    return Changes_When_NFKC_Casefolded;
  }

  var Changes_When_Titlecased = {};

  var hasRequiredChanges_When_Titlecased;
  function requireChanges_When_Titlecased() {
    if (hasRequiredChanges_When_Titlecased) return Changes_When_Titlecased;
    hasRequiredChanges_When_Titlecased = 1;
    var set = regenerateExports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1C4, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);
    set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C6, 0x1C7).addRange(0x1C9, 0x1CA).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F1).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4);
    set.addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);
    Changes_When_Titlecased.characters = set;
    return Changes_When_Titlecased;
  }

  var Changes_When_Uppercased = {};

  var hasRequiredChanges_When_Uppercased;
  function requireChanges_When_Uppercased() {
    if (hasRequiredChanges_When_Uppercased) return Changes_When_Uppercased;
    hasRequiredChanges_When_Uppercased = 1;
    var set = regenerateExports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBC, 0x1FBE, 0x1FCC, 0x1FFC, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);
    set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C5, 0x1C6).addRange(0x1C8, 0x1C9).addRange(0x1CB, 0x1CC).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x1F2, 0x1F3).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7);
    set.addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);
    Changes_When_Uppercased.characters = set;
    return Changes_When_Uppercased;
  }

  var Dash = {};

  var hasRequiredDash;
  function requireDash() {
    if (hasRequiredDash) return Dash;
    hasRequiredDash = 1;
    var set = regenerateExports(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2053, 0x207B, 0x208B, 0x2212, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);
    set.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);
    Dash.characters = set;
    return Dash;
  }

  var Default_Ignorable_Code_Point = {};

  var hasRequiredDefault_Ignorable_Code_Point;
  function requireDefault_Ignorable_Code_Point() {
    if (hasRequiredDefault_Ignorable_Code_Point) return Default_Ignorable_Code_Point;
    hasRequiredDefault_Ignorable_Code_Point = 1;
    var set = regenerateExports(0xAD, 0x34F, 0x61C, 0x3164, 0xFEFF, 0xFFA0);
    set.addRange(0x115F, 0x1160).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0xFE00, 0xFE0F).addRange(0xFFF0, 0xFFF8).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0000, 0xE0FFF);
    Default_Ignorable_Code_Point.characters = set;
    return Default_Ignorable_Code_Point;
  }

  var Deprecated = {};

  var hasRequiredDeprecated;
  function requireDeprecated() {
    if (hasRequiredDeprecated) return Deprecated;
    hasRequiredDeprecated = 1;
    var set = regenerateExports(0x149, 0x673, 0xF77, 0xF79, 0xE0001);
    set.addRange(0x17A3, 0x17A4).addRange(0x206A, 0x206F).addRange(0x2329, 0x232A);
    Deprecated.characters = set;
    return Deprecated;
  }

  var Diacritic = {};

  var hasRequiredDiacritic;
  function requireDiacritic() {
    if (hasRequiredDiacritic) return Diacritic;
    hasRequiredDiacritic = 1;
    var set = regenerateExports(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0x37A, 0x559, 0x5BF, 0x5C4, 0x93C, 0x94D, 0x971, 0x9BC, 0x9CD, 0xA3C, 0xA4D, 0xABC, 0xACD, 0xB3C, 0xB4D, 0xB55, 0xBCD, 0xC3C, 0xC4D, 0xCBC, 0xCCD, 0xD4D, 0xDCA, 0xE4E, 0xEBA, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1037, 0x108F, 0x17DD, 0x1A7F, 0x1B34, 0x1B44, 0x1CED, 0x1CF4, 0x1FBD, 0x2E2F, 0x30FC, 0xA66F, 0xA67F, 0xA8C4, 0xA953, 0xA9B3, 0xA9C0, 0xA9E5, 0xAAF6, 0xFB1E, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x102E0, 0x11046, 0x11070, 0x11173, 0x111C0, 0x1133C, 0x1134D, 0x11442, 0x11446, 0x1163F, 0x1172B, 0x11943, 0x119E0, 0x11A34, 0x11A47, 0x11A99, 0x11C3F, 0x11D42, 0x11D97, 0x1E2AE);
    set.addRange(0xB7, 0xB8).addRange(0x2B0, 0x34E).addRange(0x350, 0x357).addRange(0x35D, 0x362).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x487).addRange(0x591, 0x5A1).addRange(0x5A3, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x64B, 0x652).addRange(0x657, 0x658).addRange(0x6DF, 0x6E0).addRange(0x6E5, 0x6E6).addRange(0x6EA, 0x6EC).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x818, 0x819).addRange(0x898, 0x89F).addRange(0x8C9, 0x8D2).addRange(0x8E3, 0x8FE).addRange(0x951, 0x954).addRange(0xAFD, 0xAFF).addRange(0xD3B, 0xD3C).addRange(0xE47, 0xE4C).addRange(0xEC8, 0xECC).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF82, 0xF84).addRange(0xF86, 0xF87).addRange(0x1039, 0x103A).addRange(0x1063, 0x1064).addRange(0x1069, 0x106D).addRange(0x1087, 0x108D).addRange(0x109A, 0x109B).addRange(0x135D, 0x135F).addRange(0x1714, 0x1715).addRange(0x17C9, 0x17D3).addRange(0x1939, 0x193B).addRange(0x1A75, 0x1A7C).addRange(0x1AB0, 0x1ABE).addRange(0x1AC1, 0x1ACB).addRange(0x1B6B, 0x1B73).addRange(0x1BAA, 0x1BAB).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1DC4, 0x1DCF);
    set.addRange(0x1DF5, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x2CEF, 0x2CF1).addRange(0x302A, 0x302F).addRange(0x3099, 0x309C).addRange(0xA67C, 0xA67D).addRange(0xA69C, 0xA69D).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F8, 0xA7F9).addRange(0xA8E0, 0xA8F1).addRange(0xA92B, 0xA92E).addRange(0xAA7B, 0xAA7D).addRange(0xAABF, 0xAAC2).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B).addRange(0xABEC, 0xABED).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10AE5, 0x10AE6).addRange(0x10D22, 0x10D27).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x110B9, 0x110BA).addRange(0x11133, 0x11134).addRange(0x111CA, 0x111CC).addRange(0x11235, 0x11236).addRange(0x112E9, 0x112EA).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x114C2, 0x114C3).addRange(0x115BF, 0x115C0).addRange(0x116B6, 0x116B7).addRange(0x11839, 0x1183A).addRange(0x1193D, 0x1193E).addRange(0x11D44, 0x11D45).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F9F).addRange(0x16FF0, 0x16FF1).addRange(0x1AFF0, 0x1AFF3);
    set.addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1E030, 0x1E06D).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E946).addRange(0x1E948, 0x1E94A);
    Diacritic.characters = set;
    return Diacritic;
  }

  var Emoji_Component = {};

  var hasRequiredEmoji_Component;
  function requireEmoji_Component() {
    if (hasRequiredEmoji_Component) return Emoji_Component;
    hasRequiredEmoji_Component = 1;
    var set = regenerateExports(0x23, 0x2A, 0x200D, 0x20E3, 0xFE0F);
    set.addRange(0x30, 0x39).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F3FB, 0x1F3FF).addRange(0x1F9B0, 0x1F9B3).addRange(0xE0020, 0xE007F);
    Emoji_Component.characters = set;
    return Emoji_Component;
  }

  var Emoji_Modifier_Base = {};

  var hasRequiredEmoji_Modifier_Base;
  function requireEmoji_Modifier_Base() {
    if (hasRequiredEmoji_Modifier_Base) return Emoji_Modifier_Base;
    hasRequiredEmoji_Modifier_Base = 1;
    var set = regenerateExports(0x261D, 0x26F9, 0x1F385, 0x1F3C7, 0x1F47C, 0x1F48F, 0x1F491, 0x1F4AA, 0x1F57A, 0x1F590, 0x1F6A3, 0x1F6C0, 0x1F6CC, 0x1F90C, 0x1F90F, 0x1F926, 0x1F977, 0x1F9BB);
    set.addRange(0x270A, 0x270D).addRange(0x1F3C2, 0x1F3C4).addRange(0x1F3CA, 0x1F3CC).addRange(0x1F442, 0x1F443).addRange(0x1F446, 0x1F450).addRange(0x1F466, 0x1F478).addRange(0x1F481, 0x1F483).addRange(0x1F485, 0x1F487).addRange(0x1F574, 0x1F575).addRange(0x1F595, 0x1F596).addRange(0x1F645, 0x1F647).addRange(0x1F64B, 0x1F64F).addRange(0x1F6B4, 0x1F6B6).addRange(0x1F918, 0x1F91F).addRange(0x1F930, 0x1F939).addRange(0x1F93C, 0x1F93E).addRange(0x1F9B5, 0x1F9B6).addRange(0x1F9B8, 0x1F9B9).addRange(0x1F9CD, 0x1F9CF).addRange(0x1F9D1, 0x1F9DD).addRange(0x1FAC3, 0x1FAC5).addRange(0x1FAF0, 0x1FAF8);
    Emoji_Modifier_Base.characters = set;
    return Emoji_Modifier_Base;
  }

  var Emoji_Modifier = {};

  var hasRequiredEmoji_Modifier;
  function requireEmoji_Modifier() {
    if (hasRequiredEmoji_Modifier) return Emoji_Modifier;
    hasRequiredEmoji_Modifier = 1;
    var set = regenerateExports();
    set.addRange(0x1F3FB, 0x1F3FF);
    Emoji_Modifier.characters = set;
    return Emoji_Modifier;
  }

  var Emoji_Presentation = {};

  var hasRequiredEmoji_Presentation;
  function requireEmoji_Presentation() {
    if (hasRequiredEmoji_Presentation) return Emoji_Presentation;
    hasRequiredEmoji_Presentation = 1;
    var set = regenerateExports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
    set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
    Emoji_Presentation.characters = set;
    return Emoji_Presentation;
  }

  var Emoji = {};

  var hasRequiredEmoji;
  function requireEmoji() {
    if (hasRequiredEmoji) return Emoji;
    hasRequiredEmoji = 1;
    var set = regenerateExports(0x23, 0x2A, 0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x260E, 0x2611, 0x2618, 0x261D, 0x2620, 0x2626, 0x262A, 0x2640, 0x2642, 0x2663, 0x2668, 0x267B, 0x2699, 0x26A7, 0x26C8, 0x26D1, 0x26FD, 0x2702, 0x2705, 0x270F, 0x2712, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F21A, 0x1F22F, 0x1F587, 0x1F590, 0x1F5A8, 0x1F5BC, 0x1F5E1, 0x1F5E3, 0x1F5E8, 0x1F5EF, 0x1F5F3, 0x1F6E9, 0x1F6F0, 0x1F7F0);
    set.addRange(0x30, 0x39).addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2604).addRange(0x2614, 0x2615).addRange(0x2622, 0x2623).addRange(0x262E, 0x262F).addRange(0x2638, 0x263A).addRange(0x2648, 0x2653).addRange(0x265F, 0x2660).addRange(0x2665, 0x2666).addRange(0x267E, 0x267F).addRange(0x2692, 0x2697).addRange(0x269B, 0x269C).addRange(0x26A0, 0x26A1).addRange(0x26AA, 0x26AB).addRange(0x26B0, 0x26B1).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26CE, 0x26CF).addRange(0x26D3, 0x26D4).addRange(0x26E9, 0x26EA).addRange(0x26F0, 0x26F5).addRange(0x26F7, 0x26FA).addRange(0x2708, 0x270D).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2764).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F170, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F232, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F321).addRange(0x1F324, 0x1F393).addRange(0x1F396, 0x1F397).addRange(0x1F399, 0x1F39B).addRange(0x1F39E, 0x1F3F0).addRange(0x1F3F3, 0x1F3F5).addRange(0x1F3F7, 0x1F4FD);
    set.addRange(0x1F4FF, 0x1F53D).addRange(0x1F549, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F56F, 0x1F570).addRange(0x1F573, 0x1F57A).addRange(0x1F58A, 0x1F58D).addRange(0x1F595, 0x1F596).addRange(0x1F5A4, 0x1F5A5).addRange(0x1F5B1, 0x1F5B2).addRange(0x1F5C2, 0x1F5C4).addRange(0x1F5D1, 0x1F5D3).addRange(0x1F5DC, 0x1F5DE).addRange(0x1F5FA, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6CB, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6E5).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F3, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
    Emoji.characters = set;
    return Emoji;
  }

  var Extended_Pictographic = {};

  var hasRequiredExtended_Pictographic;
  function requireExtended_Pictographic() {
    if (hasRequiredExtended_Pictographic) return Extended_Pictographic;
    hasRequiredExtended_Pictographic = 1;
    var set = regenerateExports(0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x2388, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F12F, 0x1F18E, 0x1F21A, 0x1F22F);
    set.addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2605).addRange(0x2607, 0x2612).addRange(0x2614, 0x2685).addRange(0x2690, 0x2705).addRange(0x2708, 0x2712).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2767).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F000, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16C, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F201, 0x1F20F).addRange(0x1F232, 0x1F23A).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F3FA).addRange(0x1F400, 0x1F53D).addRange(0x1F546, 0x1F64F).addRange(0x1F680, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D5, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1FAFF).addRange(0x1FC00, 0x1FFFD);
    Extended_Pictographic.characters = set;
    return Extended_Pictographic;
  }

  var Extender = {};

  var hasRequiredExtender;
  function requireExtender() {
    if (hasRequiredExtender) return Extender;
    hasRequiredExtender = 1;
    var set = regenerateExports(0xB7, 0x640, 0x7FA, 0xB55, 0xE46, 0xEC6, 0x180A, 0x1843, 0x1AA7, 0x1C36, 0x1C7B, 0x3005, 0xA015, 0xA60C, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xFF70, 0x1135D, 0x11A98, 0x16FE3);
    set.addRange(0x2D0, 0x2D1).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xAAF3, 0xAAF4).addRange(0x10781, 0x10782).addRange(0x115C6, 0x115C8).addRange(0x16B42, 0x16B43).addRange(0x16FE0, 0x16FE1).addRange(0x1E13C, 0x1E13D).addRange(0x1E944, 0x1E946);
    Extender.characters = set;
    return Extender;
  }

  var Grapheme_Base = {};

  var hasRequiredGrapheme_Base;
  function requireGrapheme_Base() {
    if (hasRequiredGrapheme_Base) return Grapheme_Base;
    hasRequiredGrapheme_Base = 1;
    var set = regenerateExports(0x38C, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6DE, 0x6E9, 0x710, 0x7B1, 0x81A, 0x824, 0x828, 0x85E, 0x93B, 0x9B2, 0x9BD, 0x9CE, 0xA03, 0xA5E, 0xA76, 0xA83, 0xAC9, 0xAD0, 0xAF9, 0xB3D, 0xB40, 0xB83, 0xB9C, 0xBBF, 0xBD0, 0xC3D, 0xC5D, 0xD3D, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF36, 0xF38, 0xF7F, 0xF85, 0x1031, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1715, 0x17B6, 0x18AA, 0x1940, 0x1A57, 0x1A61, 0x1B3B, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CD3, 0x1CE1, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA673, 0xA7D3, 0xAA4D, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFDCF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x10EAD, 0x11000, 0x11075, 0x1112C, 0x11235, 0x11288, 0x1133D, 0x1133F, 0x11350, 0x11445, 0x1145D, 0x114B9, 0x114BE, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1183B, 0x11909, 0x1193D, 0x11A00, 0x11A50, 0x11A97, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D46, 0x11D96, 0x11D98, 0x11F41, 0x11FB0, 0x16AF5, 0x1B132, 0x1B155, 0x1BC9C, 0x1BC9F, 0x1D166, 0x1D245, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0);
    set.addRange(0x20, 0x7E).addRange(0xA0, 0xAC).addRange(0xAE, 0x2FF).addRange(0x370, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x482).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x606, 0x60F).addRange(0x61D, 0x64A).addRange(0x660, 0x66F).addRange(0x671, 0x6D5).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x70D).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7C0, 0x7EA).addRange(0x7F4, 0x7FA).addRange(0x7FE, 0x815).addRange(0x830, 0x83E).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x903, 0x939).addRange(0x93D, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x950).addRange(0x958, 0x961).addRange(0x964, 0x980).addRange(0x982, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BF, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9E6, 0x9FD).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28);
    set.addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA40).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA6F).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC0).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE1).addRange(0xAE6, 0xAF1).addRange(0xB02, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB66, 0xB77).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xBE6, 0xBFA).addRange(0xC01, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC41, 0xC44).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC66, 0xC6F);
    set.addRange(0xC77, 0xC80).addRange(0xC82, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCBE).addRange(0xCC0, 0xCC1).addRange(0xCC3, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD02, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3F, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD4E, 0xD4F).addRange(0xD54, 0xD56).addRange(0xD58, 0xD61).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDD0, 0xDD1).addRange(0xDD8, 0xDDE).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE3F, 0xE46).addRange(0xE4F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF17).addRange(0xF1A, 0xF34).addRange(0xF3A, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C);
    set.addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x102C).addRange(0x103B, 0x103C).addRange(0x103F, 0x1057).addRange(0x105A, 0x105D).addRange(0x1061, 0x1070).addRange(0x1075, 0x1081).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x108E, 0x109C).addRange(0x109E, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1360, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1734, 0x1736).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x17D4, 0x17DC).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180A).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5);
    set.addRange(0x1900, 0x191E).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A16).addRange(0x1A19, 0x1A1A).addRange(0x1A1E, 0x1A55).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1B04, 0x1B33).addRange(0x1B3D, 0x1B41).addRange(0x1B43, 0x1B4C).addRange(0x1B50, 0x1B6A).addRange(0x1B74, 0x1B7E).addRange(0x1B82, 0x1BA1).addRange(0x1BA6, 0x1BA7).addRange(0x1BAE, 0x1BE5).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1BFC, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE);
    set.addRange(0x2000, 0x200A).addRange(0x2010, 0x2027).addRange(0x202F, 0x205F).addRange(0x2070, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2E00, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x3029).addRange(0x3030, 0x303F).addRange(0x3041, 0x3096).addRange(0x309B, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31EF, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67E, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA6F2, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A);
    set.addRange(0xA80C, 0xA824).addRange(0xA827, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C3).addRange(0xA8CE, 0xA8D9).addRange(0xA8F2, 0xA8FE).addRange(0xA900, 0xA925).addRange(0xA92E, 0xA946).addRange(0xA952, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA983, 0xA9B2).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9E4).addRange(0xA9E6, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA7B).addRange(0xAA7D, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAAEB).addRange(0xAAEE, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEC).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44);
    set.addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E1, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1);
    set.addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A00).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A40, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE4).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D23).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F45).addRange(0x10F51, 0x10F59).addRange(0x10F70, 0x10F81).addRange(0x10F86, 0x10F89).addRange(0x10FB0, 0x10FCB).addRange(0x10FE0, 0x10FF6);
    set.addRange(0x11002, 0x11037).addRange(0x11047, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x11071, 0x11072).addRange(0x11082, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11103, 0x11126).addRange(0x11136, 0x11147).addRange(0x11150, 0x11172).addRange(0x11174, 0x11176).addRange(0x11182, 0x111B5).addRange(0x111BF, 0x111C8).addRange(0x111CD, 0x111CE).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122E).addRange(0x11232, 0x11233).addRange(0x11238, 0x1123D).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112DE).addRange(0x112E0, 0x112E2).addRange(0x112F0, 0x112F9).addRange(0x11302, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11437).addRange(0x11440, 0x11441).addRange(0x11447, 0x1145B).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114B1, 0x114B2).addRange(0x114BB, 0x114BC).addRange(0x114C4, 0x114C7).addRange(0x114D0, 0x114D9);
    set.addRange(0x11580, 0x115AE).addRange(0x115B0, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x115C1, 0x115DB).addRange(0x11600, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x11641, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116AA).addRange(0x116AE, 0x116AF).addRange(0x116B8, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x11720, 0x11721).addRange(0x11730, 0x11746).addRange(0x11800, 0x1182E).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x11931, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193F, 0x11942).addRange(0x11944, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x119E1, 0x119E4).addRange(0x11A0B, 0x11A32).addRange(0x11A39, 0x11A3A).addRange(0x11A3F, 0x11A46).addRange(0x11A57, 0x11A58).addRange(0x11A5C, 0x11A89).addRange(0x11A9A, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11B00, 0x11B09).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2F).addRange(0x11C40, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E);
    set.addRange(0x11D93, 0x11D94).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF2).addRange(0x11EF5, 0x11EF8).addRange(0x11F02, 0x11F10).addRange(0x11F12, 0x11F35).addRange(0x11F3E, 0x11F3F).addRange(0x11F43, 0x11F59).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B37, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F50, 0x16F87).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5);
    set.addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16D).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA8B).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8CF);
    set.addRange(0x1E900, 0x1E943).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88);
    set.addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Grapheme_Base.characters = set;
    return Grapheme_Base;
  }

  var Grapheme_Extend = {};

  var hasRequiredGrapheme_Extend;
  function requireGrapheme_Extend() {
    if (hasRequiredGrapheme_Extend) return Grapheme_Extend;
    hasRequiredGrapheme_Extend = 1;
    var set = regenerateExports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9BE, 0x9CD, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB4D, 0xB82, 0xBBE, 0xBC0, 0xBCD, 0xBD7, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC2, 0xCC6, 0xD3E, 0xD4D, 0xD57, 0xD81, 0xDCA, 0xDCF, 0xDD6, 0xDDF, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x200C, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x1133E, 0x11340, 0x11357, 0x11446, 0x1145E, 0x114B0, 0x114BA, 0x114BD, 0x115AF, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x11930, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x13440, 0x16F4F, 0x16FE4, 0x1D165, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
    set.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB3E, 0xB3F).addRange(0xB41, 0xB44).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C);
    set.addRange(0xD41, 0xD44).addRange(0xD62, 0xD63).addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B34, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2);
    set.addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181);
    set.addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4);
    set.addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16E, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);
    Grapheme_Extend.characters = set;
    return Grapheme_Extend;
  }

  var Hex_Digit = {};

  var hasRequiredHex_Digit;
  function requireHex_Digit() {
    if (hasRequiredHex_Digit) return Hex_Digit;
    hasRequiredHex_Digit = 1;
    var set = regenerateExports();
    set.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF26).addRange(0xFF41, 0xFF46);
    Hex_Digit.characters = set;
    return Hex_Digit;
  }

  var ID_Continue = {};

  var hasRequiredID_Continue;
  function requireID_Continue() {
    if (hasRequiredID_Continue) return ID_Continue;
    hasRequiredID_Continue = 1;
    var set = regenerateExports(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);
    set.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);
    set.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);
    set.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);
    set.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x200C, 0x200D).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC);
    set.addRange(0x20E5, 0x20F0).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309F).addRange(0x30A1, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7).addRange(0xA8FD, 0xA92D);
    set.addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF65, 0xFFBE).addRange(0xFFC2, 0xFFC7);
    set.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7);
    set.addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C);
    set.addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06);
    set.addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x11F50, 0x11F59).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13440, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167);
    set.addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021);
    set.addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E4D0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0100, 0xE01EF);
    ID_Continue.characters = set;
    return ID_Continue;
  }

  var ID_Start = {};

  var hasRequiredID_Start;
  function requireID_Start() {
    if (hasRequiredID_Start) return ID_Start;
    hasRequiredID_Start = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
    set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
    set.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8);
    set.addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96);
    set.addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309B, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42);
    set.addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C);
    set.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);
    set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7);
    set.addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C);
    set.addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C);
    set.addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    ID_Start.characters = set;
    return ID_Start;
  }

  var Ideographic = {};

  var hasRequiredIdeographic;
  function requireIdeographic() {
    if (hasRequiredIdeographic) return Ideographic;
    hasRequiredIdeographic = 1;
    var set = regenerateExports(0x16FE4);
    set.addRange(0x3006, 0x3007).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B170, 0x1B2FB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Ideographic.characters = set;
    return Ideographic;
  }

  var IDS_Binary_Operator = {};

  var hasRequiredIDS_Binary_Operator;
  function requireIDS_Binary_Operator() {
    if (hasRequiredIDS_Binary_Operator) return IDS_Binary_Operator;
    hasRequiredIDS_Binary_Operator = 1;
    var set = regenerateExports(0x31EF);
    set.addRange(0x2FF0, 0x2FF1).addRange(0x2FF4, 0x2FFD);
    IDS_Binary_Operator.characters = set;
    return IDS_Binary_Operator;
  }

  var IDS_Trinary_Operator = {};

  var hasRequiredIDS_Trinary_Operator;
  function requireIDS_Trinary_Operator() {
    if (hasRequiredIDS_Trinary_Operator) return IDS_Trinary_Operator;
    hasRequiredIDS_Trinary_Operator = 1;
    var set = regenerateExports();
    set.addRange(0x2FF2, 0x2FF3);
    IDS_Trinary_Operator.characters = set;
    return IDS_Trinary_Operator;
  }

  var Join_Control = {};

  var hasRequiredJoin_Control;
  function requireJoin_Control() {
    if (hasRequiredJoin_Control) return Join_Control;
    hasRequiredJoin_Control = 1;
    var set = regenerateExports();
    set.addRange(0x200C, 0x200D);
    Join_Control.characters = set;
    return Join_Control;
  }

  var Logical_Order_Exception = {};

  var hasRequiredLogical_Order_Exception;
  function requireLogical_Order_Exception() {
    if (hasRequiredLogical_Order_Exception) return Logical_Order_Exception;
    hasRequiredLogical_Order_Exception = 1;
    var set = regenerateExports(0x19BA, 0xAAB9);
    set.addRange(0xE40, 0xE44).addRange(0xEC0, 0xEC4).addRange(0x19B5, 0x19B7).addRange(0xAAB5, 0xAAB6).addRange(0xAABB, 0xAABC);
    Logical_Order_Exception.characters = set;
    return Logical_Order_Exception;
  }

  var Lowercase = {};

  var hasRequiredLowercase;
  function requireLowercase() {
    if (hasRequiredLowercase) return Lowercase;
    hasRequiredLowercase = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x2071, 0x207F, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0x10780, 0x1D4BB, 0x1D7CB);
    set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x37A, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1DBF).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);
    set.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2090, 0x209C).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7D).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA69B, 0xA69D).addRange(0xA72F, 0xA731).addRange(0xA76F, 0xA778).addRange(0xA793, 0xA795).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3);
    set.addRange(0x1D5EE, 0x1D607).addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E922, 0x1E943);
    Lowercase.characters = set;
    return Lowercase;
  }

  var _Math = {};

  var hasRequired_Math;
  function require_Math() {
    if (hasRequired_Math) return _Math;
    hasRequired_Math = 1;
    var set = regenerateExports(0x2B, 0x5E, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3D5, 0x2016, 0x2040, 0x2044, 0x2052, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x214B, 0x21DD, 0x237C, 0x23B7, 0x23D0, 0x25E2, 0x25E4, 0x2640, 0x2642, 0xFB29, 0xFE68, 0xFF0B, 0xFF3C, 0xFF3E, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x3C, 0x3E).addRange(0x3D0, 0x3D2).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F6).addRange(0x606, 0x608).addRange(0x2032, 0x2034).addRange(0x2061, 0x2064).addRange(0x207A, 0x207E).addRange(0x208A, 0x208E).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20E6).addRange(0x20EB, 0x20EF).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x2128, 0x2129).addRange(0x212C, 0x212D).addRange(0x212F, 0x2131).addRange(0x2133, 0x2138).addRange(0x213C, 0x2149).addRange(0x2190, 0x21A7).addRange(0x21A9, 0x21AE).addRange(0x21B0, 0x21B1).addRange(0x21B6, 0x21B7).addRange(0x21BC, 0x21DB).addRange(0x21E4, 0x21E5).addRange(0x21F4, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B5).addRange(0x23DC, 0x23E2).addRange(0x25A0, 0x25A1).addRange(0x25AE, 0x25B7).addRange(0x25BC, 0x25C1).addRange(0x25C6, 0x25C7).addRange(0x25CA, 0x25CB).addRange(0x25CF, 0x25D3).addRange(0x25E7, 0x25EC).addRange(0x25F8, 0x25FF).addRange(0x2605, 0x2606).addRange(0x2660, 0x2663).addRange(0x266D, 0x266F).addRange(0x27C0, 0x27FF).addRange(0x2900, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE61, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
    set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
    _Math.characters = set;
    return _Math;
  }

  var Noncharacter_Code_Point = {};

  var hasRequiredNoncharacter_Code_Point;
  function requireNoncharacter_Code_Point() {
    if (hasRequiredNoncharacter_Code_Point) return Noncharacter_Code_Point;
    hasRequiredNoncharacter_Code_Point = 1;
    var set = regenerateExports();
    set.addRange(0xFDD0, 0xFDEF).addRange(0xFFFE, 0xFFFF).addRange(0x1FFFE, 0x1FFFF).addRange(0x2FFFE, 0x2FFFF).addRange(0x3FFFE, 0x3FFFF).addRange(0x4FFFE, 0x4FFFF).addRange(0x5FFFE, 0x5FFFF).addRange(0x6FFFE, 0x6FFFF).addRange(0x7FFFE, 0x7FFFF).addRange(0x8FFFE, 0x8FFFF).addRange(0x9FFFE, 0x9FFFF).addRange(0xAFFFE, 0xAFFFF).addRange(0xBFFFE, 0xBFFFF).addRange(0xCFFFE, 0xCFFFF).addRange(0xDFFFE, 0xDFFFF).addRange(0xEFFFE, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);
    Noncharacter_Code_Point.characters = set;
    return Noncharacter_Code_Point;
  }

  var Pattern_Syntax = {};

  var hasRequiredPattern_Syntax;
  function requirePattern_Syntax() {
    if (hasRequiredPattern_Syntax) return Pattern_Syntax;
    hasRequiredPattern_Syntax = 1;
    var set = regenerateExports(0x60, 0xA9, 0xAE, 0xB6, 0xBB, 0xBF, 0xD7, 0xF7, 0x3030);
    set.addRange(0x21, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x7E).addRange(0xA1, 0xA7).addRange(0xAB, 0xAC).addRange(0xB0, 0xB1).addRange(0x2010, 0x2027).addRange(0x2030, 0x203E).addRange(0x2041, 0x2053).addRange(0x2055, 0x205E).addRange(0x2190, 0x245F).addRange(0x2500, 0x2775).addRange(0x2794, 0x2BFF).addRange(0x2E00, 0x2E7F).addRange(0x3001, 0x3003).addRange(0x3008, 0x3020).addRange(0xFD3E, 0xFD3F).addRange(0xFE45, 0xFE46);
    Pattern_Syntax.characters = set;
    return Pattern_Syntax;
  }

  var Pattern_White_Space = {};

  var hasRequiredPattern_White_Space;
  function requirePattern_White_Space() {
    if (hasRequiredPattern_White_Space) return Pattern_White_Space;
    hasRequiredPattern_White_Space = 1;
    var set = regenerateExports(0x20, 0x85);
    set.addRange(0x9, 0xD).addRange(0x200E, 0x200F).addRange(0x2028, 0x2029);
    Pattern_White_Space.characters = set;
    return Pattern_White_Space;
  }

  var Quotation_Mark = {};

  var hasRequiredQuotation_Mark;
  function requireQuotation_Mark() {
    if (hasRequiredQuotation_Mark) return Quotation_Mark;
    hasRequiredQuotation_Mark = 1;
    var set = regenerateExports(0x22, 0x27, 0xAB, 0xBB, 0x2E42, 0xFF02, 0xFF07);
    set.addRange(0x2018, 0x201F).addRange(0x2039, 0x203A).addRange(0x300C, 0x300F).addRange(0x301D, 0x301F).addRange(0xFE41, 0xFE44).addRange(0xFF62, 0xFF63);
    Quotation_Mark.characters = set;
    return Quotation_Mark;
  }

  var Radical = {};

  var hasRequiredRadical;
  function requireRadical() {
    if (hasRequiredRadical) return Radical;
    hasRequiredRadical = 1;
    var set = regenerateExports();
    set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5);
    Radical.characters = set;
    return Radical;
  }

  var Regional_Indicator = {};

  var hasRequiredRegional_Indicator;
  function requireRegional_Indicator() {
    if (hasRequiredRegional_Indicator) return Regional_Indicator;
    hasRequiredRegional_Indicator = 1;
    var set = regenerateExports();
    set.addRange(0x1F1E6, 0x1F1FF);
    Regional_Indicator.characters = set;
    return Regional_Indicator;
  }

  var Sentence_Terminal = {};

  var hasRequiredSentence_Terminal;
  function requireSentence_Terminal() {
    if (hasRequiredSentence_Terminal) return Sentence_Terminal;
    hasRequiredSentence_Terminal = 1;
    var set = regenerateExports(0x21, 0x2E, 0x3F, 0x589, 0x6D4, 0x7F9, 0x837, 0x839, 0x1362, 0x166E, 0x1803, 0x1809, 0x2E2E, 0x2E3C, 0x3002, 0xA4FF, 0xA6F3, 0xA6F7, 0xA92F, 0xABEB, 0xFE52, 0xFF01, 0xFF0E, 0xFF1F, 0xFF61, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x16AF5, 0x16B44, 0x16E98, 0x1BC9F, 0x1DA88);
    set.addRange(0x61D, 0x61F).addRange(0x700, 0x702).addRange(0x83D, 0x83E).addRange(0x964, 0x965).addRange(0x104A, 0x104B).addRange(0x1367, 0x1368).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D5).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5E, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3C).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E53, 0x2E54).addRange(0xA60E, 0xA60F).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C8, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE56, 0xFE57).addRange(0x10A56, 0x10A57).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x11048).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x11239).addRange(0x1123B, 0x1123C).addRange(0x1144B, 0x1144C).addRange(0x115C2, 0x115C3).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11C41, 0x11C42).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F44).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B38);
    Sentence_Terminal.characters = set;
    return Sentence_Terminal;
  }

  var Soft_Dotted = {};

  var hasRequiredSoft_Dotted;
  function requireSoft_Dotted() {
    if (hasRequiredSoft_Dotted) return Soft_Dotted;
    hasRequiredSoft_Dotted = 1;
    var set = regenerateExports(0x12F, 0x249, 0x268, 0x29D, 0x2B2, 0x3F3, 0x456, 0x458, 0x1D62, 0x1D96, 0x1DA4, 0x1DA8, 0x1E2D, 0x1ECB, 0x2071, 0x2C7C, 0x1DF1A, 0x1E068);
    set.addRange(0x69, 0x6A).addRange(0x2148, 0x2149).addRange(0x1D422, 0x1D423).addRange(0x1D456, 0x1D457).addRange(0x1D48A, 0x1D48B).addRange(0x1D4BE, 0x1D4BF).addRange(0x1D4F2, 0x1D4F3).addRange(0x1D526, 0x1D527).addRange(0x1D55A, 0x1D55B).addRange(0x1D58E, 0x1D58F).addRange(0x1D5C2, 0x1D5C3).addRange(0x1D5F6, 0x1D5F7).addRange(0x1D62A, 0x1D62B).addRange(0x1D65E, 0x1D65F).addRange(0x1D692, 0x1D693).addRange(0x1E04C, 0x1E04D);
    Soft_Dotted.characters = set;
    return Soft_Dotted;
  }

  var Terminal_Punctuation = {};

  var hasRequiredTerminal_Punctuation;
  function requireTerminal_Punctuation() {
    if (hasRequiredTerminal_Punctuation) return Terminal_Punctuation;
    hasRequiredTerminal_Punctuation = 1;
    var set = regenerateExports(0x21, 0x2C, 0x2E, 0x3F, 0x37E, 0x387, 0x589, 0x5C3, 0x60C, 0x61B, 0x6D4, 0x70C, 0x85E, 0xF08, 0x166E, 0x17DA, 0x2E2E, 0x2E3C, 0x2E41, 0x2E4C, 0xA92F, 0xAADF, 0xABEB, 0xFF01, 0xFF0C, 0xFF0E, 0xFF1F, 0xFF61, 0xFF64, 0x1039F, 0x103D0, 0x10857, 0x1091F, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x11C71, 0x16AF5, 0x16B44, 0x1BC9F);
    set.addRange(0x3A, 0x3B).addRange(0x61D, 0x61F).addRange(0x700, 0x70A).addRange(0x7F8, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF0D, 0xF12).addRange(0x104A, 0x104B).addRange(0x1361, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x1802, 0x1805).addRange(0x1808, 0x1809).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5D, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E4E, 0x2E4F).addRange(0x2E53, 0x2E54).addRange(0x3001, 0x3002).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F3, 0xA6F7).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C7, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFF1A, 0xFF1B).addRange(0x10A56, 0x10A57).addRange(0x10AF0, 0x10AF5).addRange(0x10B3A, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x1123C).addRange(0x1144B, 0x1144D);
    set.addRange(0x1145A, 0x1145B).addRange(0x115C2, 0x115C5).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11AA1, 0x11AA2).addRange(0x11C41, 0x11C43).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F44).addRange(0x12470, 0x12474).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B39).addRange(0x16E97, 0x16E98).addRange(0x1DA87, 0x1DA8A);
    Terminal_Punctuation.characters = set;
    return Terminal_Punctuation;
  }

  var Unified_Ideograph = {};

  var hasRequiredUnified_Ideograph;
  function requireUnified_Ideograph() {
    if (hasRequiredUnified_Ideograph) return Unified_Ideograph;
    hasRequiredUnified_Ideograph = 1;
    var set = regenerateExports(0xFA11, 0xFA1F, 0xFA21);
    set.addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xFA0E, 0xFA0F).addRange(0xFA13, 0xFA14).addRange(0xFA23, 0xFA24).addRange(0xFA27, 0xFA29).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Unified_Ideograph.characters = set;
    return Unified_Ideograph;
  }

  var Uppercase = {};

  var hasRequiredUppercase;
  function requireUppercase() {
    if (hasRequiredUppercase) return Uppercase;
    hasRequiredUppercase = 1;
    var set = regenerateExports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);
    set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2160, 0x216F);
    set.addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);
    Uppercase.characters = set;
    return Uppercase;
  }

  var Variation_Selector = {};

  var hasRequiredVariation_Selector;
  function requireVariation_Selector() {
    if (hasRequiredVariation_Selector) return Variation_Selector;
    hasRequiredVariation_Selector = 1;
    var set = regenerateExports(0x180F);
    set.addRange(0x180B, 0x180D).addRange(0xFE00, 0xFE0F).addRange(0xE0100, 0xE01EF);
    Variation_Selector.characters = set;
    return Variation_Selector;
  }

  var White_Space = {};

  var hasRequiredWhite_Space;
  function requireWhite_Space() {
    if (hasRequiredWhite_Space) return White_Space;
    hasRequiredWhite_Space = 1;
    var set = regenerateExports(0x20, 0x85, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
    set.addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);
    White_Space.characters = set;
    return White_Space;
  }

  var XID_Continue = {};

  var hasRequiredXID_Continue;
  function requireXID_Continue() {
    if (hasRequiredXID_Continue) return XID_Continue;
    hasRequiredXID_Continue = 1;
    var set = regenerateExports(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);
    set.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);
    set.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);
    set.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);
    set.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x200C, 0x200D).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC);
    set.addRange(0x20E5, 0x20F0).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309A).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7);
    set.addRange(0xA8FD, 0xA92D).addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE7F, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF65, 0xFFBE);
    set.addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939);
    set.addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303);
    set.addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
    set.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x11F50, 0x11F59).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13440, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152);
    set.addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018);
    set.addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E4D0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0100, 0xE01EF);
    XID_Continue.characters = set;
    return XID_Continue;
  }

  var XID_Start = {};

  var hasRequiredXID_Start;
  function requireXID_Start() {
    if (hasRequiredXID_Start) return XID_Start;
    hasRequiredXID_Start = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE32, 0xE84, 0xEA5, 0xEB2, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
    set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
    set.addRange(0xE01, 0xE30).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E);
    set.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE);
    set.addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76);
    set.addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE7F, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0);
    set.addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2);
    set.addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0);
    set.addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
    set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89);
    set.addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    XID_Start.characters = set;
    return XID_Start;
  }

  var Cased_Letter = {};

  var hasRequiredCased_Letter;
  function requireCased_Letter() {
    if (hasRequiredCased_Letter) return Cased_Letter;
    hasRequiredCased_Letter = 1;
    var set = regenerateExports(0xB5, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0xA7FA, 0x1D4A2, 0x1D4BB, 0x1D546);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2AF).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184);
    set.addRange(0x2C00, 0x2C7B).addRange(0x2C7E, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA76F).addRange(0xA771, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550);
    set.addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E900, 0x1E943);
    Cased_Letter.characters = set;
    return Cased_Letter;
  }

  var Close_Punctuation = {};

  var hasRequiredClose_Punctuation;
  function requireClose_Punctuation() {
    if (hasRequiredClose_Punctuation) return Close_Punctuation;
    hasRequiredClose_Punctuation = 1;
    var set = regenerateExports(0x29, 0x5D, 0x7D, 0xF3B, 0xF3D, 0x169C, 0x2046, 0x207E, 0x208E, 0x2309, 0x230B, 0x232A, 0x2769, 0x276B, 0x276D, 0x276F, 0x2771, 0x2773, 0x2775, 0x27C6, 0x27E7, 0x27E9, 0x27EB, 0x27ED, 0x27EF, 0x2984, 0x2986, 0x2988, 0x298A, 0x298C, 0x298E, 0x2990, 0x2992, 0x2994, 0x2996, 0x2998, 0x29D9, 0x29DB, 0x29FD, 0x2E23, 0x2E25, 0x2E27, 0x2E29, 0x2E56, 0x2E58, 0x2E5A, 0x2E5C, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, 0x3017, 0x3019, 0x301B, 0xFD3E, 0xFE18, 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, 0xFE5A, 0xFE5C, 0xFE5E, 0xFF09, 0xFF3D, 0xFF5D, 0xFF60, 0xFF63);
    set.addRange(0x301E, 0x301F);
    Close_Punctuation.characters = set;
    return Close_Punctuation;
  }

  var Connector_Punctuation = {};

  var hasRequiredConnector_Punctuation;
  function requireConnector_Punctuation() {
    if (hasRequiredConnector_Punctuation) return Connector_Punctuation;
    hasRequiredConnector_Punctuation = 1;
    var set = regenerateExports(0x5F, 0x2054, 0xFF3F);
    set.addRange(0x203F, 0x2040).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F);
    Connector_Punctuation.characters = set;
    return Connector_Punctuation;
  }

  var Control = {};

  var hasRequiredControl;
  function requireControl() {
    if (hasRequiredControl) return Control;
    hasRequiredControl = 1;
    var set = regenerateExports();
    set.addRange(0x0, 0x1F).addRange(0x7F, 0x9F);
    Control.characters = set;
    return Control;
  }

  var Currency_Symbol = {};

  var hasRequiredCurrency_Symbol;
  function requireCurrency_Symbol() {
    if (hasRequiredCurrency_Symbol) return Currency_Symbol;
    hasRequiredCurrency_Symbol = 1;
    var set = regenerateExports(0x24, 0x58F, 0x60B, 0x9FB, 0xAF1, 0xBF9, 0xE3F, 0x17DB, 0xA838, 0xFDFC, 0xFE69, 0xFF04, 0x1E2FF, 0x1ECB0);
    set.addRange(0xA2, 0xA5).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x20A0, 0x20C0).addRange(0xFFE0, 0xFFE1).addRange(0xFFE5, 0xFFE6).addRange(0x11FDD, 0x11FE0);
    Currency_Symbol.characters = set;
    return Currency_Symbol;
  }

  var Dash_Punctuation = {};

  var hasRequiredDash_Punctuation;
  function requireDash_Punctuation() {
    if (hasRequiredDash_Punctuation) return Dash_Punctuation;
    hasRequiredDash_Punctuation = 1;
    var set = regenerateExports(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);
    set.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);
    Dash_Punctuation.characters = set;
    return Dash_Punctuation;
  }

  var Decimal_Number = {};

  var hasRequiredDecimal_Number;
  function requireDecimal_Number() {
    if (hasRequiredDecimal_Number) return Decimal_Number;
    hasRequiredDecimal_Number = 1;
    var set = regenerateExports();
    set.addRange(0x30, 0x39).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xBE6, 0xBEF).addRange(0xC66, 0xC6F).addRange(0xCE6, 0xCEF).addRange(0xD66, 0xD6F).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF29).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x17E0, 0x17E9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19D9).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0xA620, 0xA629).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x104A0, 0x104A9).addRange(0x10D30, 0x10D39).addRange(0x11066, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x11739).addRange(0x118E0, 0x118E9).addRange(0x11950, 0x11959);
    set.addRange(0x11C50, 0x11C59).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x11F50, 0x11F59).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E950, 0x1E959).addRange(0x1FBF0, 0x1FBF9);
    Decimal_Number.characters = set;
    return Decimal_Number;
  }

  var Enclosing_Mark = {};

  var hasRequiredEnclosing_Mark;
  function requireEnclosing_Mark() {
    if (hasRequiredEnclosing_Mark) return Enclosing_Mark;
    hasRequiredEnclosing_Mark = 1;
    var set = regenerateExports(0x1ABE);
    set.addRange(0x488, 0x489).addRange(0x20DD, 0x20E0).addRange(0x20E2, 0x20E4).addRange(0xA670, 0xA672);
    Enclosing_Mark.characters = set;
    return Enclosing_Mark;
  }

  var Final_Punctuation = {};

  var hasRequiredFinal_Punctuation;
  function requireFinal_Punctuation() {
    if (hasRequiredFinal_Punctuation) return Final_Punctuation;
    hasRequiredFinal_Punctuation = 1;
    var set = regenerateExports(0xBB, 0x2019, 0x201D, 0x203A, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, 0x2E1D, 0x2E21);
    Final_Punctuation.characters = set;
    return Final_Punctuation;
  }

  var Format = {};

  var hasRequiredFormat;
  function requireFormat() {
    if (hasRequiredFormat) return Format;
    hasRequiredFormat = 1;
    var set = regenerateExports(0xAD, 0x61C, 0x6DD, 0x70F, 0x8E2, 0x180E, 0xFEFF, 0x110BD, 0x110CD, 0xE0001);
    set.addRange(0x600, 0x605).addRange(0x890, 0x891).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0xFFF9, 0xFFFB).addRange(0x13430, 0x1343F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0020, 0xE007F);
    Format.characters = set;
    return Format;
  }

  var Initial_Punctuation = {};

  var hasRequiredInitial_Punctuation;
  function requireInitial_Punctuation() {
    if (hasRequiredInitial_Punctuation) return Initial_Punctuation;
    hasRequiredInitial_Punctuation = 1;
    var set = regenerateExports(0xAB, 0x2018, 0x201F, 0x2039, 0x2E02, 0x2E04, 0x2E09, 0x2E0C, 0x2E1C, 0x2E20);
    set.addRange(0x201B, 0x201C);
    Initial_Punctuation.characters = set;
    return Initial_Punctuation;
  }

  var Letter_Number = {};

  var hasRequiredLetter_Number;
  function requireLetter_Number() {
    if (hasRequiredLetter_Number) return Letter_Number;
    hasRequiredLetter_Number = 1;
    var set = regenerateExports(0x3007, 0x10341, 0x1034A);
    set.addRange(0x16EE, 0x16F0).addRange(0x2160, 0x2182).addRange(0x2185, 0x2188).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0xA6E6, 0xA6EF).addRange(0x10140, 0x10174).addRange(0x103D1, 0x103D5).addRange(0x12400, 0x1246E);
    Letter_Number.characters = set;
    return Letter_Number;
  }

  var Letter = {};

  var hasRequiredLetter;
  function requireLetter() {
    if (hasRequiredLetter) return Letter;
    hasRequiredLetter = 1;
    var set = regenerateExports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
    set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
    set.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884);
    set.addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25);
    set.addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3006).addRange(0x3031, 0x3035).addRange(0x303B, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6E5).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28);
    set.addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C);
    set.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);
    set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7);
    set.addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
    set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89);
    set.addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Letter.characters = set;
    return Letter;
  }

  var Line_Separator = {};

  var hasRequiredLine_Separator;
  function requireLine_Separator() {
    if (hasRequiredLine_Separator) return Line_Separator;
    hasRequiredLine_Separator = 1;
    var set = regenerateExports(0x2028);
    Line_Separator.characters = set;
    return Line_Separator;
  }

  var Lowercase_Letter = {};

  var hasRequiredLowercase_Letter;
  function requireLowercase_Letter() {
    if (hasRequiredLowercase_Letter) return Lowercase_Letter;
    hasRequiredLowercase_Letter = 1;
    var set = regenerateExports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0xA7FA, 0x1D4BB, 0x1D7CB);
    set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2AF).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);
    set.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7B).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA72F, 0xA731).addRange(0xA771, 0xA778).addRange(0xA793, 0xA795).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3).addRange(0x1D5EE, 0x1D607).addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E);
    set.addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E922, 0x1E943);
    Lowercase_Letter.characters = set;
    return Lowercase_Letter;
  }

  var Mark = {};

  var hasRequiredMark;
  function requireMark() {
    if (hasRequiredMark) return Mark;
    hasRequiredMark = 1;
    var set = regenerateExports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x9BC, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xB3C, 0xB82, 0xBD7, 0xC3C, 0xCBC, 0xCF3, 0xD57, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x108F, 0x17DD, 0x180F, 0x18A9, 0x1A7F, 0x1CED, 0x1CF4, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9E5, 0xAA43, 0xAAB0, 0xAAC1, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11070, 0x110C2, 0x11173, 0x1123E, 0x11241, 0x11357, 0x1145E, 0x11940, 0x119E4, 0x11A47, 0x11D3A, 0x11D47, 0x11F03, 0x13440, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
    set.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x903).addRange(0x93A, 0x93C).addRange(0x93E, 0x94F).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x981, 0x983).addRange(0x9BE, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CD).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA03).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA83).addRange(0xABE, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB3E, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD);
    set.addRange(0xC00, 0xC04).addRange(0xC3E, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xC81, 0xC83).addRange(0xCBE, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD03).addRange(0xD3B, 0xD3C).addRange(0xD3E, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4D).addRange(0xD62, 0xD63).addRange(0xD81, 0xD83).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF71, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102B, 0x103E).addRange(0x1056, 0x1059).addRange(0x105E, 0x1060).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1071, 0x1074).addRange(0x1082, 0x108D).addRange(0x109A, 0x109D).addRange(0x135D, 0x135F).addRange(0x1712, 0x1715).addRange(0x1732, 0x1734).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1A17, 0x1A1B);
    set.addRange(0x1A55, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B04).addRange(0x1B34, 0x1B44).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B82).addRange(0x1BA1, 0x1BAD).addRange(0x1BE6, 0x1BF3).addRange(0x1C24, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA823, 0xA827).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA953).addRange(0xA980, 0xA983).addRange(0xA9B3, 0xA9C0).addRange(0xAA29, 0xAA36).addRange(0xAA4C, 0xAA4D).addRange(0xAA7B, 0xAA7D).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEB, 0xAAEF).addRange(0xAAF5, 0xAAF6).addRange(0xABE3, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC);
    set.addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11000, 0x11002).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11082).addRange(0x110B0, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x11134).addRange(0x11145, 0x11146).addRange(0x11180, 0x11182).addRange(0x111B3, 0x111C0).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111CF).addRange(0x1122C, 0x11237).addRange(0x112DF, 0x112EA).addRange(0x11300, 0x11303).addRange(0x1133B, 0x1133C).addRange(0x1133E, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11435, 0x11446).addRange(0x114B0, 0x114C3).addRange(0x115AF, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11630, 0x11640).addRange(0x116AB, 0x116B7).addRange(0x1171D, 0x1172B).addRange(0x1182C, 0x1183A).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193E).addRange(0x11942, 0x11943).addRange(0x119D1, 0x119D7).addRange(0x119DA, 0x119E0).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A39).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A5B).addRange(0x11A8A, 0x11A99).addRange(0x11C2F, 0x11C36).addRange(0x11C38, 0x11C3F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D);
    set.addRange(0x11D3F, 0x11D45).addRange(0x11D8A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D97).addRange(0x11EF3, 0x11EF6).addRange(0x11F00, 0x11F01).addRange(0x11F34, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F51, 0x16F87).addRange(0x16F8F, 0x16F92).addRange(0x16FF0, 0x16FF1).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);
    Mark.characters = set;
    return Mark;
  }

  var Math_Symbol = {};

  var hasRequiredMath_Symbol;
  function requireMath_Symbol() {
    if (hasRequiredMath_Symbol) return Math_Symbol;
    hasRequiredMath_Symbol = 1;
    var set = regenerateExports(0x2B, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3F6, 0x2044, 0x2052, 0x2118, 0x214B, 0x21A0, 0x21A3, 0x21A6, 0x21AE, 0x21D2, 0x21D4, 0x237C, 0x25B7, 0x25C1, 0x266F, 0xFB29, 0xFE62, 0xFF0B, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3);
    set.addRange(0x3C, 0x3E).addRange(0x606, 0x608).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x2140, 0x2144).addRange(0x2190, 0x2194).addRange(0x219A, 0x219B).addRange(0x21CE, 0x21CF).addRange(0x21F4, 0x22FF).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B3).addRange(0x23DC, 0x23E1).addRange(0x25F8, 0x25FF).addRange(0x27C0, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x27FF).addRange(0x2900, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1EEF0, 0x1EEF1);
    Math_Symbol.characters = set;
    return Math_Symbol;
  }

  var Modifier_Letter = {};

  var hasRequiredModifier_Letter;
  function requireModifier_Letter() {
    if (hasRequiredModifier_Letter) return Modifier_Letter;
    hasRequiredModifier_Letter = 1;
    var set = regenerateExports(0x2EC, 0x2EE, 0x374, 0x37A, 0x559, 0x640, 0x7FA, 0x81A, 0x824, 0x828, 0x8C9, 0x971, 0xE46, 0xEC6, 0x10FC, 0x17D7, 0x1843, 0x1AA7, 0x1D78, 0x2071, 0x207F, 0x2D6F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA788, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xAB69, 0xFF70, 0x16FE3, 0x1E4EB, 0x1E94B);
    set.addRange(0x2B0, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x6E5, 0x6E6).addRange(0x7F4, 0x7F5).addRange(0x1C78, 0x1C7D).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x2090, 0x209C).addRange(0x2C7C, 0x2C7D).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA69C, 0xA69D).addRange(0xA717, 0xA71F).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xAAF3, 0xAAF4).addRange(0xAB5C, 0xAB5F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x16B40, 0x16B43).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1E030, 0x1E06D).addRange(0x1E137, 0x1E13D);
    Modifier_Letter.characters = set;
    return Modifier_Letter;
  }

  var Modifier_Symbol = {};

  var hasRequiredModifier_Symbol;
  function requireModifier_Symbol() {
    if (hasRequiredModifier_Symbol) return Modifier_Symbol;
    hasRequiredModifier_Symbol = 1;
    var set = regenerateExports(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0xB8, 0x2ED, 0x375, 0x888, 0x1FBD, 0xAB5B, 0xFF3E, 0xFF40, 0xFFE3);
    set.addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x309B, 0x309C).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0x1F3FB, 0x1F3FF);
    Modifier_Symbol.characters = set;
    return Modifier_Symbol;
  }

  var Nonspacing_Mark = {};

  var hasRequiredNonspacing_Mark;
  function requireNonspacing_Mark() {
    if (hasRequiredNonspacing_Mark) return Nonspacing_Mark;
    hasRequiredNonspacing_Mark = 1;
    var set = regenerateExports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x20E1, 0x2D7F, 0xA66F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x13440, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
    set.addRange(0x300, 0x36F).addRange(0x483, 0x487).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);
    set.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);
    set.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC);
    set.addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92);
    set.addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);
    Nonspacing_Mark.characters = set;
    return Nonspacing_Mark;
  }

  var _Number = {};

  var hasRequired_Number;
  function require_Number() {
    if (hasRequired_Number) return _Number;
    hasRequired_Number = 1;
    var set = regenerateExports(0xB9, 0x2070, 0x2CFD, 0x3007, 0x10341, 0x1034A);
    set.addRange(0x30, 0x39).addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0x9F4, 0x9F9).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xB72, 0xB77).addRange(0xBE6, 0xBF2).addRange(0xC66, 0xC6F).addRange(0xC78, 0xC7E).addRange(0xCE6, 0xCEF).addRange(0xD58, 0xD5E).addRange(0xD66, 0xD78).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF33).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x1369, 0x137C).addRange(0x16EE, 0x16F0).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19DA).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x2182).addRange(0x2185, 0x2189).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F);
    set.addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA620, 0xA629).addRange(0xA6E6, 0xA6EF).addRange(0xA830, 0xA835).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x10107, 0x10133).addRange(0x10140, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x103D1, 0x103D5).addRange(0x104A0, 0x104A9).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x111E1, 0x111F4).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x1173B);
    set.addRange(0x118E0, 0x118F2).addRange(0x11950, 0x11959).addRange(0x11C50, 0x11C6C).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x11F50, 0x11F59).addRange(0x11FC0, 0x11FD4).addRange(0x12400, 0x1246E).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E950, 0x1E959).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C).addRange(0x1FBF0, 0x1FBF9);
    _Number.characters = set;
    return _Number;
  }

  var Open_Punctuation = {};

  var hasRequiredOpen_Punctuation;
  function requireOpen_Punctuation() {
    if (hasRequiredOpen_Punctuation) return Open_Punctuation;
    hasRequiredOpen_Punctuation = 1;
    var set = regenerateExports(0x28, 0x5B, 0x7B, 0xF3A, 0xF3C, 0x169B, 0x201A, 0x201E, 0x2045, 0x207D, 0x208D, 0x2308, 0x230A, 0x2329, 0x2768, 0x276A, 0x276C, 0x276E, 0x2770, 0x2772, 0x2774, 0x27C5, 0x27E6, 0x27E8, 0x27EA, 0x27EC, 0x27EE, 0x2983, 0x2985, 0x2987, 0x2989, 0x298B, 0x298D, 0x298F, 0x2991, 0x2993, 0x2995, 0x2997, 0x29D8, 0x29DA, 0x29FC, 0x2E22, 0x2E24, 0x2E26, 0x2E28, 0x2E42, 0x2E55, 0x2E57, 0x2E59, 0x2E5B, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, 0x3018, 0x301A, 0x301D, 0xFD3F, 0xFE17, 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, 0xFE59, 0xFE5B, 0xFE5D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62);
    Open_Punctuation.characters = set;
    return Open_Punctuation;
  }

  var Other_Letter = {};

  var hasRequiredOther_Letter;
  function requireOther_Letter() {
    if (hasRequiredOther_Letter) return Other_Letter;
    hasRequiredOther_Letter = 1;
    var set = regenerateExports(0xAA, 0xBA, 0x1BB, 0x294, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xF00, 0x103F, 0x1061, 0x108E, 0x1258, 0x12C0, 0x17DC, 0x18AA, 0x1CFA, 0x3006, 0x303C, 0x309F, 0x30FF, 0xA66E, 0xA78F, 0xA7F7, 0xA8FB, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xAAF2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x1B132, 0x1B155, 0x1DF0A, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x1C0, 0x1C3).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C8).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x972, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39);
    set.addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE45).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066);
    set.addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x1100, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1842).addRange(0x1844, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C77).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6);
    set.addRange(0x2135, 0x2138).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3041, 0x3096).addRange(0x30A1, 0x30FA).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA014).addRange(0xA016, 0xA48C).addRange(0xA4D0, 0xA4F7).addRange(0xA500, 0xA60B).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA6A0, 0xA6E5).addRange(0xA7FB, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E7, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA6F).addRange(0xAA71, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADC).addRange(0xAAE0, 0xAAEA).addRange(0xAB01, 0xAB06);
    set.addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xABC0, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10450, 0x1049D).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
    set.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328);
    set.addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16F00, 0x16F4A);
    set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1E100, 0x1E12C).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EA).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Other_Letter.characters = set;
    return Other_Letter;
  }

  var Other_Number = {};

  var hasRequiredOther_Number;
  function requireOther_Number() {
    if (hasRequiredOther_Number) return Other_Number;
    hasRequiredOther_Number = 1;
    var set = regenerateExports(0xB9, 0x19DA, 0x2070, 0x2189, 0x2CFD);
    set.addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x9F4, 0x9F9).addRange(0xB72, 0xB77).addRange(0xBF0, 0xBF2).addRange(0xC78, 0xC7E).addRange(0xD58, 0xD5E).addRange(0xD70, 0xD78).addRange(0xF2A, 0xF33).addRange(0x1369, 0x137C).addRange(0x17F0, 0x17F9).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x215F).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F).addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA830, 0xA835).addRange(0x10107, 0x10133).addRange(0x10175, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x11065).addRange(0x111E1, 0x111F4);
    set.addRange(0x1173A, 0x1173B).addRange(0x118EA, 0x118F2).addRange(0x11C5A, 0x11C6C).addRange(0x11FC0, 0x11FD4).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1E8C7, 0x1E8CF).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C);
    Other_Number.characters = set;
    return Other_Number;
  }

  var Other_Punctuation = {};

  var hasRequiredOther_Punctuation;
  function requireOther_Punctuation() {
    if (hasRequiredOther_Punctuation) return Other_Punctuation;
    hasRequiredOther_Punctuation = 1;
    var set = regenerateExports(0x2A, 0x2C, 0x5C, 0xA1, 0xA7, 0xBF, 0x37E, 0x387, 0x589, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x166E, 0x1CD3, 0x2053, 0x2D70, 0x2E0B, 0x2E1B, 0x2E41, 0x303D, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE19, 0xFE30, 0xFE68, 0xFF0A, 0xFF0C, 0xFF3C, 0xFF61, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);
    set.addRange(0x21, 0x23).addRange(0x25, 0x27).addRange(0x2E, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x1805).addRange(0x1807, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2016, 0x2017).addRange(0x2020, 0x2027).addRange(0x2030, 0x2038).addRange(0x203B, 0x203E).addRange(0x2041, 0x2043).addRange(0x2047, 0x2051).addRange(0x2055, 0x205E).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E01).addRange(0x2E06, 0x2E08).addRange(0x2E0E, 0x2E16).addRange(0x2E18, 0x2E19);
    set.addRange(0x2E1E, 0x2E1F).addRange(0x2E2A, 0x2E2E).addRange(0x2E30, 0x2E39).addRange(0x2E3C, 0x2E3F).addRange(0x2E43, 0x2E4F).addRange(0x2E52, 0x2E54).addRange(0x3001, 0x3003).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFE10, 0xFE16).addRange(0xFE45, 0xFE46).addRange(0xFE49, 0xFE4C).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFE5F, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF07).addRange(0xFF0E, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF64, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D).addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643);
    set.addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11B00, 0x11B09).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F4F).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);
    Other_Punctuation.characters = set;
    return Other_Punctuation;
  }

  var Other_Symbol = {};

  var hasRequiredOther_Symbol;
  function requireOther_Symbol() {
    if (hasRequiredOther_Symbol) return Other_Symbol;
    hasRequiredOther_Symbol = 1;
    var set = regenerateExports(0xA6, 0xA9, 0xAE, 0xB0, 0x482, 0x6DE, 0x6E9, 0x7F6, 0x9FA, 0xB70, 0xBFA, 0xC7F, 0xD4F, 0xD79, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x31EF, 0x3250, 0xA839, 0xFDCF, 0xFFE4, 0xFFE8, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1E14F, 0x1ECAC, 0x1ED2E, 0x1F7F0);
    set.addRange(0x58D, 0x58E).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0xBF3, 0xBF8).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2117).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x214C, 0x214D).addRange(0x218A, 0x218B).addRange(0x2195, 0x2199).addRange(0x219C, 0x219F).addRange(0x21A1, 0x21A2).addRange(0x21A4, 0x21A5).addRange(0x21A7, 0x21AD).addRange(0x21AF, 0x21CD).addRange(0x21D0, 0x21D1).addRange(0x21D5, 0x21F3).addRange(0x2300, 0x2307).addRange(0x230C, 0x231F).addRange(0x2322, 0x2328).addRange(0x232B, 0x237B).addRange(0x237D, 0x239A).addRange(0x23B4, 0x23DB).addRange(0x23E2, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9).addRange(0x2500, 0x25B6).addRange(0x25B8, 0x25C0).addRange(0x25C2, 0x25F7).addRange(0x2600, 0x266E).addRange(0x2670, 0x2767).addRange(0x2794, 0x27BF).addRange(0x2800, 0x28FF).addRange(0x2B00, 0x2B2F).addRange(0x2B45, 0x2B46).addRange(0x2B4D, 0x2B73);
    set.addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFF).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA837).addRange(0xAA77, 0xAA79).addRange(0xFD40, 0xFD4F).addRange(0xFDFD, 0xFDFF).addRange(0xFFED, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FDC).addRange(0x11FE1, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83);
    set.addRange(0x1DA85, 0x1DA86).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F3FA).addRange(0x1F400, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA);
    Other_Symbol.characters = set;
    return Other_Symbol;
  }

  var Other = {};

  var hasRequiredOther;
  function requireOther() {
    if (hasRequiredOther) return Other;
    hasRequiredOther = 1;
    var set = regenerateExports(0xAD, 0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x61C, 0x6DD, 0x83F, 0x85F, 0x8E2, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xECF, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x180E, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x110BD, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x11F11, 0x1246F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FABE, 0x1FB93);
    set.addRange(0x0, 0x1F).addRange(0x7F, 0x9F).addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x605).addRange(0x70E, 0x70F).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x88F, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D);
    set.addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7).addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF4, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F);
    set.addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E).addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F);
    set.addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EE).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xF8FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F);
    set.addRange(0xFEFD, 0xFF00).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFFB).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F);
    set.addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFC).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x11242, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F);
    set.addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11747, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11AFF).addRange(0x11B0A, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11EFF).addRange(0x11F3B, 0x11F3D).addRange(0x11F5A, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x13430, 0x1343F).addRange(0x13456, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E);
    set.addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF).addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF).addRange(0x18D09, 0x1AFEF).addRange(0x1B123, 0x1B131).addRange(0x1B133, 0x1B14F).addRange(0x1B153, 0x1B154).addRange(0x1B156, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA0, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D173, 0x1D17A).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2BF).addRange(0x1D2D4, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DF24).addRange(0x1DF2B, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E02F).addRange(0x1E06E, 0x1E08E).addRange(0x1E090, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E4CF);
    set.addRange(0x1E4FA, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DB).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F777, 0x1F77A).addRange(0x1F7DA, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA89, 0x1FA8F).addRange(0x1FAC6, 0x1FACD).addRange(0x1FADC, 0x1FADF).addRange(0x1FAE9, 0x1FAEF).addRange(0x1FAF9, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF).addRange(0x2B73A, 0x2B73F);
    set.addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2EBEF).addRange(0x2EE5E, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0x3134F).addRange(0x323B0, 0xE00FF).addRange(0xE01F0, 0x10FFFF);
    Other.characters = set;
    return Other;
  }

  var Paragraph_Separator = {};

  var hasRequiredParagraph_Separator;
  function requireParagraph_Separator() {
    if (hasRequiredParagraph_Separator) return Paragraph_Separator;
    hasRequiredParagraph_Separator = 1;
    var set = regenerateExports(0x2029);
    Paragraph_Separator.characters = set;
    return Paragraph_Separator;
  }

  var Private_Use = {};

  var hasRequiredPrivate_Use;
  function requirePrivate_Use() {
    if (hasRequiredPrivate_Use) return Private_Use;
    hasRequiredPrivate_Use = 1;
    var set = regenerateExports();
    set.addRange(0xE000, 0xF8FF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);
    Private_Use.characters = set;
    return Private_Use;
  }

  var Punctuation = {};

  var hasRequiredPunctuation;
  function requirePunctuation() {
    if (hasRequiredPunctuation) return Punctuation;
    hasRequiredPunctuation = 1;
    var set = regenerateExports(0x5F, 0x7B, 0x7D, 0xA1, 0xA7, 0xAB, 0xBB, 0xBF, 0x37E, 0x387, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x1400, 0x166E, 0x1CD3, 0x2D70, 0x3030, 0x303D, 0x30A0, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE63, 0xFE68, 0xFF3F, 0xFF5B, 0xFF5D, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x10EAD, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);
    set.addRange(0x21, 0x23).addRange(0x25, 0x2A).addRange(0x2C, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0x5B, 0x5D).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x589, 0x58A).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xF3A, 0xF3D).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x169B, 0x169C).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2010, 0x2027).addRange(0x2030, 0x2043).addRange(0x2045, 0x2051).addRange(0x2053, 0x205E).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2308, 0x230B).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C5, 0x27C6);
    set.addRange(0x27E6, 0x27EF).addRange(0x2983, 0x2998).addRange(0x29D8, 0x29DB).addRange(0x29FC, 0x29FD).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E2E).addRange(0x2E30, 0x2E4F).addRange(0x2E52, 0x2E5D).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3014, 0x301F).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF0A).addRange(0xFF0C, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF3B, 0xFF3D).addRange(0xFF5F, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D);
    set.addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643).addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11B00, 0x11B09).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F4F).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);
    Punctuation.characters = set;
    return Punctuation;
  }

  var Separator = {};

  var hasRequiredSeparator;
  function requireSeparator() {
    if (hasRequiredSeparator) return Separator;
    hasRequiredSeparator = 1;
    var set = regenerateExports(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
    set.addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);
    Separator.characters = set;
    return Separator;
  }

  var Space_Separator = {};

  var hasRequiredSpace_Separator;
  function requireSpace_Separator() {
    if (hasRequiredSpace_Separator) return Space_Separator;
    hasRequiredSpace_Separator = 1;
    var set = regenerateExports(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
    set.addRange(0x2000, 0x200A);
    Space_Separator.characters = set;
    return Space_Separator;
  }

  var Spacing_Mark = {};

  var hasRequiredSpacing_Mark;
  function requireSpacing_Mark() {
    if (hasRequiredSpacing_Mark) return Spacing_Mark;
    hasRequiredSpacing_Mark = 1;
    var set = regenerateExports(0x903, 0x93B, 0x9D7, 0xA03, 0xA83, 0xAC9, 0xB3E, 0xB40, 0xB57, 0xBD7, 0xCBE, 0xCF3, 0xD57, 0xF7F, 0x1031, 0x1038, 0x108F, 0x1715, 0x1734, 0x17B6, 0x1A55, 0x1A57, 0x1A61, 0x1B04, 0x1B35, 0x1B3B, 0x1B82, 0x1BA1, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CE1, 0x1CF7, 0xA827, 0xA983, 0xAA4D, 0xAA7B, 0xAA7D, 0xAAEB, 0xAAF5, 0xABEC, 0x11000, 0x11002, 0x11082, 0x1112C, 0x11182, 0x111CE, 0x11235, 0x11357, 0x11445, 0x114B9, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1193D, 0x11940, 0x11942, 0x119E4, 0x11A39, 0x11A97, 0x11C2F, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D96, 0x11F03, 0x11F41);
    set.addRange(0x93E, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x94F).addRange(0x982, 0x983).addRange(0x9BE, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0xA3E, 0xA40).addRange(0xABE, 0xAC0).addRange(0xACB, 0xACC).addRange(0xB02, 0xB03).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xBBE, 0xBBF).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC01, 0xC03).addRange(0xC41, 0xC44).addRange(0xC82, 0xC83).addRange(0xCC0, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCD5, 0xCD6).addRange(0xD02, 0xD03).addRange(0xD3E, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD82, 0xD83).addRange(0xDCF, 0xDD1).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xF3E, 0xF3F).addRange(0x102B, 0x102C).addRange(0x103B, 0x103C).addRange(0x1056, 0x1057).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x109A, 0x109C).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1A19, 0x1A1A).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1B3D, 0x1B41);
    set.addRange(0x1B43, 0x1B44).addRange(0x1BA6, 0x1BA7).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1C24, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x302E, 0x302F).addRange(0xA823, 0xA824).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C3).addRange(0xA952, 0xA953).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9C0).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAAEE, 0xAAEF).addRange(0xABE3, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEA).addRange(0x110B0, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x11145, 0x11146).addRange(0x111B3, 0x111B5).addRange(0x111BF, 0x111C0).addRange(0x1122C, 0x1122E).addRange(0x11232, 0x11233).addRange(0x112E0, 0x112E2).addRange(0x11302, 0x11303).addRange(0x1133E, 0x1133F).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11435, 0x11437).addRange(0x11440, 0x11441).addRange(0x114B0, 0x114B2).addRange(0x114BB, 0x114BE).addRange(0x115AF, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x11630, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x116AE, 0x116AF).addRange(0x11720, 0x11721).addRange(0x1182C, 0x1182E).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x119D1, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x11A57, 0x11A58).addRange(0x11D8A, 0x11D8E);
    set.addRange(0x11D93, 0x11D94).addRange(0x11EF5, 0x11EF6).addRange(0x11F34, 0x11F35).addRange(0x11F3E, 0x11F3F).addRange(0x16F51, 0x16F87).addRange(0x16FF0, 0x16FF1).addRange(0x1D165, 0x1D166).addRange(0x1D16D, 0x1D172);
    Spacing_Mark.characters = set;
    return Spacing_Mark;
  }

  var Surrogate = {};

  var hasRequiredSurrogate;
  function requireSurrogate() {
    if (hasRequiredSurrogate) return Surrogate;
    hasRequiredSurrogate = 1;
    var set = regenerateExports();
    set.addRange(0xD800, 0xDFFF);
    Surrogate.characters = set;
    return Surrogate;
  }

  var _Symbol = {};

  var hasRequired_Symbol;
  function require_Symbol() {
    if (hasRequired_Symbol) return _Symbol;
    hasRequired_Symbol = 1;
    var set = regenerateExports(0x24, 0x2B, 0x5E, 0x60, 0x7C, 0x7E, 0xAC, 0xB4, 0xB8, 0xD7, 0xF7, 0x2ED, 0x375, 0x3F6, 0x482, 0x60B, 0x6DE, 0x6E9, 0x7F6, 0x888, 0xAF1, 0xB70, 0xC7F, 0xD4F, 0xD79, 0xE3F, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x17DB, 0x1940, 0x1FBD, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214F, 0x3004, 0x3020, 0x31EF, 0x3250, 0xAB5B, 0xFB29, 0xFDCF, 0xFE62, 0xFE69, 0xFF04, 0xFF0B, 0xFF3E, 0xFF40, 0xFF5C, 0xFF5E, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3, 0x1E14F, 0x1E2FF, 0x1ECAC, 0x1ECB0, 0x1ED2E, 0x1F7F0);
    set.addRange(0x3C, 0x3E).addRange(0xA2, 0xA6).addRange(0xA8, 0xA9).addRange(0xAE, 0xB1).addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x58D, 0x58F).addRange(0x606, 0x608).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x9FA, 0x9FB).addRange(0xBF3, 0xBFA).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2118).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x2140, 0x2144).addRange(0x214A, 0x214D).addRange(0x218A, 0x218B).addRange(0x2190, 0x2307).addRange(0x230C, 0x2328).addRange(0x232B, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9);
    set.addRange(0x2500, 0x2767).addRange(0x2794, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFF).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x309B, 0x309C).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA839).addRange(0xAA77, 0xAA79).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0xFD40, 0xFD4F).addRange(0xFDFC, 0xFDFF).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FF1);
    set.addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92);
    set.addRange(0x1FB94, 0x1FBCA);
    _Symbol.characters = set;
    return _Symbol;
  }

  var Titlecase_Letter = {};

  var hasRequiredTitlecase_Letter;
  function requireTitlecase_Letter() {
    if (hasRequiredTitlecase_Letter) return Titlecase_Letter;
    hasRequiredTitlecase_Letter = 1;
    var set = regenerateExports(0x1C5, 0x1C8, 0x1CB, 0x1F2, 0x1FBC, 0x1FCC, 0x1FFC);
    set.addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF);
    Titlecase_Letter.characters = set;
    return Titlecase_Letter;
  }

  var Unassigned = {};

  var hasRequiredUnassigned;
  function requireUnassigned() {
    if (hasRequiredUnassigned) return Unassigned;
    hasRequiredUnassigned = 1;
    var set = regenerateExports(0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x70E, 0x83F, 0x85F, 0x88F, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xECF, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x2065, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFF00, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x11F11, 0x1246F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FABE, 0x1FB93);
    set.addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x5FF).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x892, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7);
    set.addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF4, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E).addRange(0x1737, 0x173F);
    set.addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E);
    set.addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EE).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xD7FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFEFE).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF);
    set.addRange(0xFFEF, 0xFFF8).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77);
    set.addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFC).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CC).addRange(0x110CE, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x11242, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11747, 0x117FF);
    set.addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11AFF).addRange(0x11B0A, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11EFF).addRange(0x11F3B, 0x11F3D).addRange(0x11F5A, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x13456, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF).addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF).addRange(0x18D09, 0x1AFEF);
    set.addRange(0x1B123, 0x1B131).addRange(0x1B133, 0x1B14F).addRange(0x1B153, 0x1B154).addRange(0x1B156, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA4, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2BF).addRange(0x1D2D4, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DF24).addRange(0x1DF2B, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E02F).addRange(0x1E06E, 0x1E08E).addRange(0x1E090, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E4CF).addRange(0x1E4FA, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00);
    set.addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DB).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F777, 0x1F77A).addRange(0x1F7DA, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA89, 0x1FA8F).addRange(0x1FAC6, 0x1FACD).addRange(0x1FADC, 0x1FADF).addRange(0x1FAE9, 0x1FAEF).addRange(0x1FAF9, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF).addRange(0x2B73A, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2EBEF).addRange(0x2EE5E, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0x3134F).addRange(0x323B0, 0xE0000);
    set.addRange(0xE0002, 0xE001F).addRange(0xE0080, 0xE00FF).addRange(0xE01F0, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);
    Unassigned.characters = set;
    return Unassigned;
  }

  var Uppercase_Letter = {};

  var hasRequiredUppercase_Letter;
  function requireUppercase_Letter() {
    if (hasRequiredUppercase_Letter) return Uppercase_Letter;
    hasRequiredUppercase_Letter = 1;
    var set = regenerateExports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);
    set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2C00, 0x2C2F);
    set.addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921);
    Uppercase_Letter.characters = set;
    return Uppercase_Letter;
  }

  var regenerateUnicodeProperties;
  var hasRequiredRegenerateUnicodeProperties;
  function requireRegenerateUnicodeProperties() {
    if (hasRequiredRegenerateUnicodeProperties) return regenerateUnicodeProperties;
    hasRequiredRegenerateUnicodeProperties = 1;
    regenerateUnicodeProperties = new Map([['General_Category', ['Cased_Letter', 'Close_Punctuation', 'Connector_Punctuation', 'Control', 'Currency_Symbol', 'Dash_Punctuation', 'Decimal_Number', 'Enclosing_Mark', 'Final_Punctuation', 'Format', 'Initial_Punctuation', 'Letter', 'Letter_Number', 'Line_Separator', 'Lowercase_Letter', 'Mark', 'Math_Symbol', 'Modifier_Letter', 'Modifier_Symbol', 'Nonspacing_Mark', 'Number', 'Open_Punctuation', 'Other', 'Other_Letter', 'Other_Number', 'Other_Punctuation', 'Other_Symbol', 'Paragraph_Separator', 'Private_Use', 'Punctuation', 'Separator', 'Space_Separator', 'Spacing_Mark', 'Surrogate', 'Symbol', 'Titlecase_Letter', 'Unassigned', 'Uppercase_Letter']], ['Script', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kawi', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nag_Mundari', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Script_Extensions', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kawi', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nag_Mundari', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Binary_Property', ['ASCII', 'ASCII_Hex_Digit', 'Alphabetic', 'Any', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'ID_Continue', 'ID_Start', 'Ideographic', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']], ['Property_of_Strings', ['Basic_Emoji', 'Emoji_Keycap_Sequence', 'RGI_Emoji', 'RGI_Emoji_Flag_Sequence', 'RGI_Emoji_Modifier_Sequence', 'RGI_Emoji_Tag_Sequence', 'RGI_Emoji_ZWJ_Sequence']]]);
    return regenerateUnicodeProperties;
  }

  var Basic_Emoji = {};

  var hasRequiredBasic_Emoji;
  function requireBasic_Emoji() {
    if (hasRequiredBasic_Emoji) return Basic_Emoji;
    hasRequiredBasic_Emoji = 1;
    var set = regenerateExports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
    set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
    Basic_Emoji.characters = set;
    Basic_Emoji.strings = ["\xA9\uFE0F", "\xAE\uFE0F", "\u203C\uFE0F", "\u2049\uFE0F", "\u2122\uFE0F", "\u2139\uFE0F", "\u2194\uFE0F", "\u2195\uFE0F", "\u2196\uFE0F", "\u2197\uFE0F", "\u2198\uFE0F", "\u2199\uFE0F", "\u21A9\uFE0F", "\u21AA\uFE0F", "\u2328\uFE0F", "\u23CF\uFE0F", "\u23ED\uFE0F", "\u23EE\uFE0F", "\u23EF\uFE0F", "\u23F1\uFE0F", "\u23F2\uFE0F", "\u23F8\uFE0F", "\u23F9\uFE0F", "\u23FA\uFE0F", "\u24C2\uFE0F", "\u25AA\uFE0F", "\u25AB\uFE0F", "\u25B6\uFE0F", "\u25C0\uFE0F", "\u25FB\uFE0F", "\u25FC\uFE0F", "\u2600\uFE0F", "\u2601\uFE0F", "\u2602\uFE0F", "\u2603\uFE0F", "\u2604\uFE0F", "\u260E\uFE0F", "\u2611\uFE0F", "\u2618\uFE0F", "\u261D\uFE0F", "\u2620\uFE0F", "\u2622\uFE0F", "\u2623\uFE0F", "\u2626\uFE0F", "\u262A\uFE0F", "\u262E\uFE0F", "\u262F\uFE0F", "\u2638\uFE0F", "\u2639\uFE0F", "\u263A\uFE0F", "\u2640\uFE0F", "\u2642\uFE0F", "\u265F\uFE0F", "\u2660\uFE0F", "\u2663\uFE0F", "\u2665\uFE0F", "\u2666\uFE0F", "\u2668\uFE0F", "\u267B\uFE0F", "\u267E\uFE0F", "\u2692\uFE0F", "\u2694\uFE0F", "\u2695\uFE0F", "\u2696\uFE0F", "\u2697\uFE0F", "\u2699\uFE0F", "\u269B\uFE0F", "\u269C\uFE0F", "\u26A0\uFE0F", "\u26A7\uFE0F", "\u26B0\uFE0F", "\u26B1\uFE0F", "\u26C8\uFE0F", "\u26CF\uFE0F", "\u26D1\uFE0F", "\u26D3\uFE0F", "\u26E9\uFE0F", "\u26F0\uFE0F", "\u26F1\uFE0F", "\u26F4\uFE0F", "\u26F7\uFE0F", "\u26F8\uFE0F", "\u26F9\uFE0F", "\u2702\uFE0F", "\u2708\uFE0F", "\u2709\uFE0F", "\u270C\uFE0F", "\u270D\uFE0F", "\u270F\uFE0F", "\u2712\uFE0F", "\u2714\uFE0F", "\u2716\uFE0F", "\u271D\uFE0F", "\u2721\uFE0F", "\u2733\uFE0F", "\u2734\uFE0F", "\u2744\uFE0F", "\u2747\uFE0F", "\u2763\uFE0F", "\u2764\uFE0F", "\u27A1\uFE0F", "\u2934\uFE0F", "\u2935\uFE0F", "\u2B05\uFE0F", "\u2B06\uFE0F", "\u2B07\uFE0F", "\u3030\uFE0F", "\u303D\uFE0F", "\u3297\uFE0F", "\u3299\uFE0F", "\uD83C\uDD70\uFE0F", "\uD83C\uDD71\uFE0F", "\uD83C\uDD7E\uFE0F", "\uD83C\uDD7F\uFE0F", "\uD83C\uDE02\uFE0F", "\uD83C\uDE37\uFE0F", "\uD83C\uDF21\uFE0F", "\uD83C\uDF24\uFE0F", "\uD83C\uDF25\uFE0F", "\uD83C\uDF26\uFE0F", "\uD83C\uDF27\uFE0F", "\uD83C\uDF28\uFE0F", "\uD83C\uDF29\uFE0F", "\uD83C\uDF2A\uFE0F", "\uD83C\uDF2B\uFE0F", "\uD83C\uDF2C\uFE0F", "\uD83C\uDF36\uFE0F", "\uD83C\uDF7D\uFE0F", "\uD83C\uDF96\uFE0F", "\uD83C\uDF97\uFE0F", "\uD83C\uDF99\uFE0F", "\uD83C\uDF9A\uFE0F", "\uD83C\uDF9B\uFE0F", "\uD83C\uDF9E\uFE0F", "\uD83C\uDF9F\uFE0F", "\uD83C\uDFCB\uFE0F", "\uD83C\uDFCC\uFE0F", "\uD83C\uDFCD\uFE0F", "\uD83C\uDFCE\uFE0F", "\uD83C\uDFD4\uFE0F", "\uD83C\uDFD5\uFE0F", "\uD83C\uDFD6\uFE0F", "\uD83C\uDFD7\uFE0F", "\uD83C\uDFD8\uFE0F", "\uD83C\uDFD9\uFE0F", "\uD83C\uDFDA\uFE0F", "\uD83C\uDFDB\uFE0F", "\uD83C\uDFDC\uFE0F", "\uD83C\uDFDD\uFE0F", "\uD83C\uDFDE\uFE0F", "\uD83C\uDFDF\uFE0F", "\uD83C\uDFF3\uFE0F", "\uD83C\uDFF5\uFE0F", "\uD83C\uDFF7\uFE0F", "\uD83D\uDC3F\uFE0F", "\uD83D\uDC41\uFE0F", "\uD83D\uDCFD\uFE0F", "\uD83D\uDD49\uFE0F", "\uD83D\uDD4A\uFE0F", "\uD83D\uDD6F\uFE0F", "\uD83D\uDD70\uFE0F", "\uD83D\uDD73\uFE0F", "\uD83D\uDD74\uFE0F", "\uD83D\uDD75\uFE0F", "\uD83D\uDD76\uFE0F", "\uD83D\uDD77\uFE0F", "\uD83D\uDD78\uFE0F", "\uD83D\uDD79\uFE0F", "\uD83D\uDD87\uFE0F", "\uD83D\uDD8A\uFE0F", "\uD83D\uDD8B\uFE0F", "\uD83D\uDD8C\uFE0F", "\uD83D\uDD8D\uFE0F", "\uD83D\uDD90\uFE0F", "\uD83D\uDDA5\uFE0F", "\uD83D\uDDA8\uFE0F", "\uD83D\uDDB1\uFE0F", "\uD83D\uDDB2\uFE0F", "\uD83D\uDDBC\uFE0F", "\uD83D\uDDC2\uFE0F", "\uD83D\uDDC3\uFE0F", "\uD83D\uDDC4\uFE0F", "\uD83D\uDDD1\uFE0F", "\uD83D\uDDD2\uFE0F", "\uD83D\uDDD3\uFE0F", "\uD83D\uDDDC\uFE0F", "\uD83D\uDDDD\uFE0F", "\uD83D\uDDDE\uFE0F", "\uD83D\uDDE1\uFE0F", "\uD83D\uDDE3\uFE0F", "\uD83D\uDDE8\uFE0F", "\uD83D\uDDEF\uFE0F", "\uD83D\uDDF3\uFE0F", "\uD83D\uDDFA\uFE0F", "\uD83D\uDECB\uFE0F", "\uD83D\uDECD\uFE0F", "\uD83D\uDECE\uFE0F", "\uD83D\uDECF\uFE0F", "\uD83D\uDEE0\uFE0F", "\uD83D\uDEE1\uFE0F", "\uD83D\uDEE2\uFE0F", "\uD83D\uDEE3\uFE0F", "\uD83D\uDEE4\uFE0F", "\uD83D\uDEE5\uFE0F", "\uD83D\uDEE9\uFE0F", "\uD83D\uDEF0\uFE0F", "\uD83D\uDEF3\uFE0F"];
    return Basic_Emoji;
  }

  var Emoji_Keycap_Sequence = {};

  var hasRequiredEmoji_Keycap_Sequence;
  function requireEmoji_Keycap_Sequence() {
    if (hasRequiredEmoji_Keycap_Sequence) return Emoji_Keycap_Sequence;
    hasRequiredEmoji_Keycap_Sequence = 1;
    var set = regenerateExports();
    Emoji_Keycap_Sequence.characters = set;
    Emoji_Keycap_Sequence.strings = ["#\uFE0F\u20E3", "*\uFE0F\u20E3", "0\uFE0F\u20E3", "1\uFE0F\u20E3", "2\uFE0F\u20E3", "3\uFE0F\u20E3", "4\uFE0F\u20E3", "5\uFE0F\u20E3", "6\uFE0F\u20E3", "7\uFE0F\u20E3", "8\uFE0F\u20E3", "9\uFE0F\u20E3"];
    return Emoji_Keycap_Sequence;
  }

  var RGI_Emoji_Flag_Sequence = {};

  var hasRequiredRGI_Emoji_Flag_Sequence;
  function requireRGI_Emoji_Flag_Sequence() {
    if (hasRequiredRGI_Emoji_Flag_Sequence) return RGI_Emoji_Flag_Sequence;
    hasRequiredRGI_Emoji_Flag_Sequence = 1;
    var set = regenerateExports();
    RGI_Emoji_Flag_Sequence.characters = set;
    RGI_Emoji_Flag_Sequence.strings = ["\uD83C\uDDE6\uD83C\uDDE8", "\uD83C\uDDE6\uD83C\uDDE9", "\uD83C\uDDE6\uD83C\uDDEA", "\uD83C\uDDE6\uD83C\uDDEB", "\uD83C\uDDE6\uD83C\uDDEC", "\uD83C\uDDE6\uD83C\uDDEE", "\uD83C\uDDE6\uD83C\uDDF1", "\uD83C\uDDE6\uD83C\uDDF2", "\uD83C\uDDE6\uD83C\uDDF4", "\uD83C\uDDE6\uD83C\uDDF6", "\uD83C\uDDE6\uD83C\uDDF7", "\uD83C\uDDE6\uD83C\uDDF8", "\uD83C\uDDE6\uD83C\uDDF9", "\uD83C\uDDE6\uD83C\uDDFA", "\uD83C\uDDE6\uD83C\uDDFC", "\uD83C\uDDE6\uD83C\uDDFD", "\uD83C\uDDE6\uD83C\uDDFF", "\uD83C\uDDE7\uD83C\uDDE6", "\uD83C\uDDE7\uD83C\uDDE7", "\uD83C\uDDE7\uD83C\uDDE9", "\uD83C\uDDE7\uD83C\uDDEA", "\uD83C\uDDE7\uD83C\uDDEB", "\uD83C\uDDE7\uD83C\uDDEC", "\uD83C\uDDE7\uD83C\uDDED", "\uD83C\uDDE7\uD83C\uDDEE", "\uD83C\uDDE7\uD83C\uDDEF", "\uD83C\uDDE7\uD83C\uDDF1", "\uD83C\uDDE7\uD83C\uDDF2", "\uD83C\uDDE7\uD83C\uDDF3", "\uD83C\uDDE7\uD83C\uDDF4", "\uD83C\uDDE7\uD83C\uDDF6", "\uD83C\uDDE7\uD83C\uDDF7", "\uD83C\uDDE7\uD83C\uDDF8", "\uD83C\uDDE7\uD83C\uDDF9", "\uD83C\uDDE7\uD83C\uDDFB", "\uD83C\uDDE7\uD83C\uDDFC", "\uD83C\uDDE7\uD83C\uDDFE", "\uD83C\uDDE7\uD83C\uDDFF", "\uD83C\uDDE8\uD83C\uDDE6", "\uD83C\uDDE8\uD83C\uDDE8", "\uD83C\uDDE8\uD83C\uDDE9", "\uD83C\uDDE8\uD83C\uDDEB", "\uD83C\uDDE8\uD83C\uDDEC", "\uD83C\uDDE8\uD83C\uDDED", "\uD83C\uDDE8\uD83C\uDDEE", "\uD83C\uDDE8\uD83C\uDDF0", "\uD83C\uDDE8\uD83C\uDDF1", "\uD83C\uDDE8\uD83C\uDDF2", "\uD83C\uDDE8\uD83C\uDDF3", "\uD83C\uDDE8\uD83C\uDDF4", "\uD83C\uDDE8\uD83C\uDDF5", "\uD83C\uDDE8\uD83C\uDDF7", "\uD83C\uDDE8\uD83C\uDDFA", "\uD83C\uDDE8\uD83C\uDDFB", "\uD83C\uDDE8\uD83C\uDDFC", "\uD83C\uDDE8\uD83C\uDDFD", "\uD83C\uDDE8\uD83C\uDDFE", "\uD83C\uDDE8\uD83C\uDDFF", "\uD83C\uDDE9\uD83C\uDDEA", "\uD83C\uDDE9\uD83C\uDDEC", "\uD83C\uDDE9\uD83C\uDDEF", "\uD83C\uDDE9\uD83C\uDDF0", "\uD83C\uDDE9\uD83C\uDDF2", "\uD83C\uDDE9\uD83C\uDDF4", "\uD83C\uDDE9\uD83C\uDDFF", "\uD83C\uDDEA\uD83C\uDDE6", "\uD83C\uDDEA\uD83C\uDDE8", "\uD83C\uDDEA\uD83C\uDDEA", "\uD83C\uDDEA\uD83C\uDDEC", "\uD83C\uDDEA\uD83C\uDDED", "\uD83C\uDDEA\uD83C\uDDF7", "\uD83C\uDDEA\uD83C\uDDF8", "\uD83C\uDDEA\uD83C\uDDF9", "\uD83C\uDDEA\uD83C\uDDFA", "\uD83C\uDDEB\uD83C\uDDEE", "\uD83C\uDDEB\uD83C\uDDEF", "\uD83C\uDDEB\uD83C\uDDF0", "\uD83C\uDDEB\uD83C\uDDF2", "\uD83C\uDDEB\uD83C\uDDF4", "\uD83C\uDDEB\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDE6", "\uD83C\uDDEC\uD83C\uDDE7", "\uD83C\uDDEC\uD83C\uDDE9", "\uD83C\uDDEC\uD83C\uDDEA", "\uD83C\uDDEC\uD83C\uDDEB", "\uD83C\uDDEC\uD83C\uDDEC", "\uD83C\uDDEC\uD83C\uDDED", "\uD83C\uDDEC\uD83C\uDDEE", "\uD83C\uDDEC\uD83C\uDDF1", "\uD83C\uDDEC\uD83C\uDDF2", "\uD83C\uDDEC\uD83C\uDDF3", "\uD83C\uDDEC\uD83C\uDDF5", "\uD83C\uDDEC\uD83C\uDDF6", "\uD83C\uDDEC\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDF8", "\uD83C\uDDEC\uD83C\uDDF9", "\uD83C\uDDEC\uD83C\uDDFA", "\uD83C\uDDEC\uD83C\uDDFC", "\uD83C\uDDEC\uD83C\uDDFE", "\uD83C\uDDED\uD83C\uDDF0", "\uD83C\uDDED\uD83C\uDDF2", "\uD83C\uDDED\uD83C\uDDF3", "\uD83C\uDDED\uD83C\uDDF7", "\uD83C\uDDED\uD83C\uDDF9", "\uD83C\uDDED\uD83C\uDDFA", "\uD83C\uDDEE\uD83C\uDDE8", "\uD83C\uDDEE\uD83C\uDDE9", "\uD83C\uDDEE\uD83C\uDDEA", "\uD83C\uDDEE\uD83C\uDDF1", "\uD83C\uDDEE\uD83C\uDDF2", "\uD83C\uDDEE\uD83C\uDDF3", "\uD83C\uDDEE\uD83C\uDDF4", "\uD83C\uDDEE\uD83C\uDDF6", "\uD83C\uDDEE\uD83C\uDDF7", "\uD83C\uDDEE\uD83C\uDDF8", "\uD83C\uDDEE\uD83C\uDDF9", "\uD83C\uDDEF\uD83C\uDDEA", "\uD83C\uDDEF\uD83C\uDDF2", "\uD83C\uDDEF\uD83C\uDDF4", "\uD83C\uDDEF\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDEA", "\uD83C\uDDF0\uD83C\uDDEC", "\uD83C\uDDF0\uD83C\uDDED", "\uD83C\uDDF0\uD83C\uDDEE", "\uD83C\uDDF0\uD83C\uDDF2", "\uD83C\uDDF0\uD83C\uDDF3", "\uD83C\uDDF0\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDF7", "\uD83C\uDDF0\uD83C\uDDFC", "\uD83C\uDDF0\uD83C\uDDFE", "\uD83C\uDDF0\uD83C\uDDFF", "\uD83C\uDDF1\uD83C\uDDE6", "\uD83C\uDDF1\uD83C\uDDE7", "\uD83C\uDDF1\uD83C\uDDE8", "\uD83C\uDDF1\uD83C\uDDEE", "\uD83C\uDDF1\uD83C\uDDF0", "\uD83C\uDDF1\uD83C\uDDF7", "\uD83C\uDDF1\uD83C\uDDF8", "\uD83C\uDDF1\uD83C\uDDF9", "\uD83C\uDDF1\uD83C\uDDFA", "\uD83C\uDDF1\uD83C\uDDFB", "\uD83C\uDDF1\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDE6", "\uD83C\uDDF2\uD83C\uDDE8", "\uD83C\uDDF2\uD83C\uDDE9", "\uD83C\uDDF2\uD83C\uDDEA", "\uD83C\uDDF2\uD83C\uDDEB", "\uD83C\uDDF2\uD83C\uDDEC", "\uD83C\uDDF2\uD83C\uDDED", "\uD83C\uDDF2\uD83C\uDDF0", "\uD83C\uDDF2\uD83C\uDDF1", "\uD83C\uDDF2\uD83C\uDDF2", "\uD83C\uDDF2\uD83C\uDDF3", "\uD83C\uDDF2\uD83C\uDDF4", "\uD83C\uDDF2\uD83C\uDDF5", "\uD83C\uDDF2\uD83C\uDDF6", "\uD83C\uDDF2\uD83C\uDDF7", "\uD83C\uDDF2\uD83C\uDDF8", "\uD83C\uDDF2\uD83C\uDDF9", "\uD83C\uDDF2\uD83C\uDDFA", "\uD83C\uDDF2\uD83C\uDDFB", "\uD83C\uDDF2\uD83C\uDDFC", "\uD83C\uDDF2\uD83C\uDDFD", "\uD83C\uDDF2\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDFF", "\uD83C\uDDF3\uD83C\uDDE6", "\uD83C\uDDF3\uD83C\uDDE8", "\uD83C\uDDF3\uD83C\uDDEA", "\uD83C\uDDF3\uD83C\uDDEB", "\uD83C\uDDF3\uD83C\uDDEC", "\uD83C\uDDF3\uD83C\uDDEE", "\uD83C\uDDF3\uD83C\uDDF1", "\uD83C\uDDF3\uD83C\uDDF4", "\uD83C\uDDF3\uD83C\uDDF5", "\uD83C\uDDF3\uD83C\uDDF7", "\uD83C\uDDF3\uD83C\uDDFA", "\uD83C\uDDF3\uD83C\uDDFF", "\uD83C\uDDF4\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDE6", "\uD83C\uDDF5\uD83C\uDDEA", "\uD83C\uDDF5\uD83C\uDDEB", "\uD83C\uDDF5\uD83C\uDDEC", "\uD83C\uDDF5\uD83C\uDDED", "\uD83C\uDDF5\uD83C\uDDF0", "\uD83C\uDDF5\uD83C\uDDF1", "\uD83C\uDDF5\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDF3", "\uD83C\uDDF5\uD83C\uDDF7", "\uD83C\uDDF5\uD83C\uDDF8", "\uD83C\uDDF5\uD83C\uDDF9", "\uD83C\uDDF5\uD83C\uDDFC", "\uD83C\uDDF5\uD83C\uDDFE", "\uD83C\uDDF6\uD83C\uDDE6", "\uD83C\uDDF7\uD83C\uDDEA", "\uD83C\uDDF7\uD83C\uDDF4", "\uD83C\uDDF7\uD83C\uDDF8", "\uD83C\uDDF7\uD83C\uDDFA", "\uD83C\uDDF7\uD83C\uDDFC", "\uD83C\uDDF8\uD83C\uDDE6", "\uD83C\uDDF8\uD83C\uDDE7", "\uD83C\uDDF8\uD83C\uDDE8", "\uD83C\uDDF8\uD83C\uDDE9", "\uD83C\uDDF8\uD83C\uDDEA", "\uD83C\uDDF8\uD83C\uDDEC", "\uD83C\uDDF8\uD83C\uDDED", "\uD83C\uDDF8\uD83C\uDDEE", "\uD83C\uDDF8\uD83C\uDDEF", "\uD83C\uDDF8\uD83C\uDDF0", "\uD83C\uDDF8\uD83C\uDDF1", "\uD83C\uDDF8\uD83C\uDDF2", "\uD83C\uDDF8\uD83C\uDDF3", "\uD83C\uDDF8\uD83C\uDDF4", "\uD83C\uDDF8\uD83C\uDDF7", "\uD83C\uDDF8\uD83C\uDDF8", "\uD83C\uDDF8\uD83C\uDDF9", "\uD83C\uDDF8\uD83C\uDDFB", "\uD83C\uDDF8\uD83C\uDDFD", "\uD83C\uDDF8\uD83C\uDDFE", "\uD83C\uDDF8\uD83C\uDDFF", "\uD83C\uDDF9\uD83C\uDDE6", "\uD83C\uDDF9\uD83C\uDDE8", "\uD83C\uDDF9\uD83C\uDDE9", "\uD83C\uDDF9\uD83C\uDDEB", "\uD83C\uDDF9\uD83C\uDDEC", "\uD83C\uDDF9\uD83C\uDDED", "\uD83C\uDDF9\uD83C\uDDEF", "\uD83C\uDDF9\uD83C\uDDF0", "\uD83C\uDDF9\uD83C\uDDF1", "\uD83C\uDDF9\uD83C\uDDF2", "\uD83C\uDDF9\uD83C\uDDF3", "\uD83C\uDDF9\uD83C\uDDF4", "\uD83C\uDDF9\uD83C\uDDF7", "\uD83C\uDDF9\uD83C\uDDF9", "\uD83C\uDDF9\uD83C\uDDFB", "\uD83C\uDDF9\uD83C\uDDFC", "\uD83C\uDDF9\uD83C\uDDFF", "\uD83C\uDDFA\uD83C\uDDE6", "\uD83C\uDDFA\uD83C\uDDEC", "\uD83C\uDDFA\uD83C\uDDF2", "\uD83C\uDDFA\uD83C\uDDF3", "\uD83C\uDDFA\uD83C\uDDF8", "\uD83C\uDDFA\uD83C\uDDFE", "\uD83C\uDDFA\uD83C\uDDFF", "\uD83C\uDDFB\uD83C\uDDE6", "\uD83C\uDDFB\uD83C\uDDE8", "\uD83C\uDDFB\uD83C\uDDEA", "\uD83C\uDDFB\uD83C\uDDEC", "\uD83C\uDDFB\uD83C\uDDEE", "\uD83C\uDDFB\uD83C\uDDF3", "\uD83C\uDDFB\uD83C\uDDFA", "\uD83C\uDDFC\uD83C\uDDEB", "\uD83C\uDDFC\uD83C\uDDF8", "\uD83C\uDDFD\uD83C\uDDF0", "\uD83C\uDDFE\uD83C\uDDEA", "\uD83C\uDDFE\uD83C\uDDF9", "\uD83C\uDDFF\uD83C\uDDE6", "\uD83C\uDDFF\uD83C\uDDF2", "\uD83C\uDDFF\uD83C\uDDFC"];
    return RGI_Emoji_Flag_Sequence;
  }

  var RGI_Emoji_Modifier_Sequence = {};

  var hasRequiredRGI_Emoji_Modifier_Sequence;
  function requireRGI_Emoji_Modifier_Sequence() {
    if (hasRequiredRGI_Emoji_Modifier_Sequence) return RGI_Emoji_Modifier_Sequence;
    hasRequiredRGI_Emoji_Modifier_Sequence = 1;
    var set = regenerateExports();
    RGI_Emoji_Modifier_Sequence.characters = set;
    RGI_Emoji_Modifier_Sequence.strings = ["\u261D\uD83C\uDFFB", "\u261D\uD83C\uDFFC", "\u261D\uD83C\uDFFD", "\u261D\uD83C\uDFFE", "\u261D\uD83C\uDFFF", "\u26F9\uD83C\uDFFB", "\u26F9\uD83C\uDFFC", "\u26F9\uD83C\uDFFD", "\u26F9\uD83C\uDFFE", "\u26F9\uD83C\uDFFF", "\u270A\uD83C\uDFFB", "\u270A\uD83C\uDFFC", "\u270A\uD83C\uDFFD", "\u270A\uD83C\uDFFE", "\u270A\uD83C\uDFFF", "\u270B\uD83C\uDFFB", "\u270B\uD83C\uDFFC", "\u270B\uD83C\uDFFD", "\u270B\uD83C\uDFFE", "\u270B\uD83C\uDFFF", "\u270C\uD83C\uDFFB", "\u270C\uD83C\uDFFC", "\u270C\uD83C\uDFFD", "\u270C\uD83C\uDFFE", "\u270C\uD83C\uDFFF", "\u270D\uD83C\uDFFB", "\u270D\uD83C\uDFFC", "\u270D\uD83C\uDFFD", "\u270D\uD83C\uDFFE", "\u270D\uD83C\uDFFF", "\uD83C\uDF85\uD83C\uDFFB", "\uD83C\uDF85\uD83C\uDFFC", "\uD83C\uDF85\uD83C\uDFFD", "\uD83C\uDF85\uD83C\uDFFE", "\uD83C\uDF85\uD83C\uDFFF", "\uD83C\uDFC2\uD83C\uDFFB", "\uD83C\uDFC2\uD83C\uDFFC", "\uD83C\uDFC2\uD83C\uDFFD", "\uD83C\uDFC2\uD83C\uDFFE", "\uD83C\uDFC2\uD83C\uDFFF", "\uD83C\uDFC3\uD83C\uDFFB", "\uD83C\uDFC3\uD83C\uDFFC", "\uD83C\uDFC3\uD83C\uDFFD", "\uD83C\uDFC3\uD83C\uDFFE", "\uD83C\uDFC3\uD83C\uDFFF", "\uD83C\uDFC4\uD83C\uDFFB", "\uD83C\uDFC4\uD83C\uDFFC", "\uD83C\uDFC4\uD83C\uDFFD", "\uD83C\uDFC4\uD83C\uDFFE", "\uD83C\uDFC4\uD83C\uDFFF", "\uD83C\uDFC7\uD83C\uDFFB", "\uD83C\uDFC7\uD83C\uDFFC", "\uD83C\uDFC7\uD83C\uDFFD", "\uD83C\uDFC7\uD83C\uDFFE", "\uD83C\uDFC7\uD83C\uDFFF", "\uD83C\uDFCA\uD83C\uDFFB", "\uD83C\uDFCA\uD83C\uDFFC", "\uD83C\uDFCA\uD83C\uDFFD", "\uD83C\uDFCA\uD83C\uDFFE", "\uD83C\uDFCA\uD83C\uDFFF", "\uD83C\uDFCB\uD83C\uDFFB", "\uD83C\uDFCB\uD83C\uDFFC", "\uD83C\uDFCB\uD83C\uDFFD", "\uD83C\uDFCB\uD83C\uDFFE", "\uD83C\uDFCB\uD83C\uDFFF", "\uD83C\uDFCC\uD83C\uDFFB", "\uD83C\uDFCC\uD83C\uDFFC", "\uD83C\uDFCC\uD83C\uDFFD", "\uD83C\uDFCC\uD83C\uDFFE", "\uD83C\uDFCC\uD83C\uDFFF", "\uD83D\uDC42\uD83C\uDFFB", "\uD83D\uDC42\uD83C\uDFFC", "\uD83D\uDC42\uD83C\uDFFD", "\uD83D\uDC42\uD83C\uDFFE", "\uD83D\uDC42\uD83C\uDFFF", "\uD83D\uDC43\uD83C\uDFFB", "\uD83D\uDC43\uD83C\uDFFC", "\uD83D\uDC43\uD83C\uDFFD", "\uD83D\uDC43\uD83C\uDFFE", "\uD83D\uDC43\uD83C\uDFFF", "\uD83D\uDC46\uD83C\uDFFB", "\uD83D\uDC46\uD83C\uDFFC", "\uD83D\uDC46\uD83C\uDFFD", "\uD83D\uDC46\uD83C\uDFFE", "\uD83D\uDC46\uD83C\uDFFF", "\uD83D\uDC47\uD83C\uDFFB", "\uD83D\uDC47\uD83C\uDFFC", "\uD83D\uDC47\uD83C\uDFFD", "\uD83D\uDC47\uD83C\uDFFE", "\uD83D\uDC47\uD83C\uDFFF", "\uD83D\uDC48\uD83C\uDFFB", "\uD83D\uDC48\uD83C\uDFFC", "\uD83D\uDC48\uD83C\uDFFD", "\uD83D\uDC48\uD83C\uDFFE", "\uD83D\uDC48\uD83C\uDFFF", "\uD83D\uDC49\uD83C\uDFFB", "\uD83D\uDC49\uD83C\uDFFC", "\uD83D\uDC49\uD83C\uDFFD", "\uD83D\uDC49\uD83C\uDFFE", "\uD83D\uDC49\uD83C\uDFFF", "\uD83D\uDC4A\uD83C\uDFFB", "\uD83D\uDC4A\uD83C\uDFFC", "\uD83D\uDC4A\uD83C\uDFFD", "\uD83D\uDC4A\uD83C\uDFFE", "\uD83D\uDC4A\uD83C\uDFFF", "\uD83D\uDC4B\uD83C\uDFFB", "\uD83D\uDC4B\uD83C\uDFFC", "\uD83D\uDC4B\uD83C\uDFFD", "\uD83D\uDC4B\uD83C\uDFFE", "\uD83D\uDC4B\uD83C\uDFFF", "\uD83D\uDC4C\uD83C\uDFFB", "\uD83D\uDC4C\uD83C\uDFFC", "\uD83D\uDC4C\uD83C\uDFFD", "\uD83D\uDC4C\uD83C\uDFFE", "\uD83D\uDC4C\uD83C\uDFFF", "\uD83D\uDC4D\uD83C\uDFFB", "\uD83D\uDC4D\uD83C\uDFFC", "\uD83D\uDC4D\uD83C\uDFFD", "\uD83D\uDC4D\uD83C\uDFFE", "\uD83D\uDC4D\uD83C\uDFFF", "\uD83D\uDC4E\uD83C\uDFFB", "\uD83D\uDC4E\uD83C\uDFFC", "\uD83D\uDC4E\uD83C\uDFFD", "\uD83D\uDC4E\uD83C\uDFFE", "\uD83D\uDC4E\uD83C\uDFFF", "\uD83D\uDC4F\uD83C\uDFFB", "\uD83D\uDC4F\uD83C\uDFFC", "\uD83D\uDC4F\uD83C\uDFFD", "\uD83D\uDC4F\uD83C\uDFFE", "\uD83D\uDC4F\uD83C\uDFFF", "\uD83D\uDC50\uD83C\uDFFB", "\uD83D\uDC50\uD83C\uDFFC", "\uD83D\uDC50\uD83C\uDFFD", "\uD83D\uDC50\uD83C\uDFFE", "\uD83D\uDC50\uD83C\uDFFF", "\uD83D\uDC66\uD83C\uDFFB", "\uD83D\uDC66\uD83C\uDFFC", "\uD83D\uDC66\uD83C\uDFFD", "\uD83D\uDC66\uD83C\uDFFE", "\uD83D\uDC66\uD83C\uDFFF", "\uD83D\uDC67\uD83C\uDFFB", "\uD83D\uDC67\uD83C\uDFFC", "\uD83D\uDC67\uD83C\uDFFD", "\uD83D\uDC67\uD83C\uDFFE", "\uD83D\uDC67\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC6B\uD83C\uDFFB", "\uD83D\uDC6B\uD83C\uDFFC", "\uD83D\uDC6B\uD83C\uDFFD", "\uD83D\uDC6B\uD83C\uDFFE", "\uD83D\uDC6B\uD83C\uDFFF", "\uD83D\uDC6C\uD83C\uDFFB", "\uD83D\uDC6C\uD83C\uDFFC", "\uD83D\uDC6C\uD83C\uDFFD", "\uD83D\uDC6C\uD83C\uDFFE", "\uD83D\uDC6C\uD83C\uDFFF", "\uD83D\uDC6D\uD83C\uDFFB", "\uD83D\uDC6D\uD83C\uDFFC", "\uD83D\uDC6D\uD83C\uDFFD", "\uD83D\uDC6D\uD83C\uDFFE", "\uD83D\uDC6D\uD83C\uDFFF", "\uD83D\uDC6E\uD83C\uDFFB", "\uD83D\uDC6E\uD83C\uDFFC", "\uD83D\uDC6E\uD83C\uDFFD", "\uD83D\uDC6E\uD83C\uDFFE", "\uD83D\uDC6E\uD83C\uDFFF", "\uD83D\uDC70\uD83C\uDFFB", "\uD83D\uDC70\uD83C\uDFFC", "\uD83D\uDC70\uD83C\uDFFD", "\uD83D\uDC70\uD83C\uDFFE", "\uD83D\uDC70\uD83C\uDFFF", "\uD83D\uDC71\uD83C\uDFFB", "\uD83D\uDC71\uD83C\uDFFC", "\uD83D\uDC71\uD83C\uDFFD", "\uD83D\uDC71\uD83C\uDFFE", "\uD83D\uDC71\uD83C\uDFFF", "\uD83D\uDC72\uD83C\uDFFB", "\uD83D\uDC72\uD83C\uDFFC", "\uD83D\uDC72\uD83C\uDFFD", "\uD83D\uDC72\uD83C\uDFFE", "\uD83D\uDC72\uD83C\uDFFF", "\uD83D\uDC73\uD83C\uDFFB", "\uD83D\uDC73\uD83C\uDFFC", "\uD83D\uDC73\uD83C\uDFFD", "\uD83D\uDC73\uD83C\uDFFE", "\uD83D\uDC73\uD83C\uDFFF", "\uD83D\uDC74\uD83C\uDFFB", "\uD83D\uDC74\uD83C\uDFFC", "\uD83D\uDC74\uD83C\uDFFD", "\uD83D\uDC74\uD83C\uDFFE", "\uD83D\uDC74\uD83C\uDFFF", "\uD83D\uDC75\uD83C\uDFFB", "\uD83D\uDC75\uD83C\uDFFC", "\uD83D\uDC75\uD83C\uDFFD", "\uD83D\uDC75\uD83C\uDFFE", "\uD83D\uDC75\uD83C\uDFFF", "\uD83D\uDC76\uD83C\uDFFB", "\uD83D\uDC76\uD83C\uDFFC", "\uD83D\uDC76\uD83C\uDFFD", "\uD83D\uDC76\uD83C\uDFFE", "\uD83D\uDC76\uD83C\uDFFF", "\uD83D\uDC77\uD83C\uDFFB", "\uD83D\uDC77\uD83C\uDFFC", "\uD83D\uDC77\uD83C\uDFFD", "\uD83D\uDC77\uD83C\uDFFE", "\uD83D\uDC77\uD83C\uDFFF", "\uD83D\uDC78\uD83C\uDFFB", "\uD83D\uDC78\uD83C\uDFFC", "\uD83D\uDC78\uD83C\uDFFD", "\uD83D\uDC78\uD83C\uDFFE", "\uD83D\uDC78\uD83C\uDFFF", "\uD83D\uDC7C\uD83C\uDFFB", "\uD83D\uDC7C\uD83C\uDFFC", "\uD83D\uDC7C\uD83C\uDFFD", "\uD83D\uDC7C\uD83C\uDFFE", "\uD83D\uDC7C\uD83C\uDFFF", "\uD83D\uDC81\uD83C\uDFFB", "\uD83D\uDC81\uD83C\uDFFC", "\uD83D\uDC81\uD83C\uDFFD", "\uD83D\uDC81\uD83C\uDFFE", "\uD83D\uDC81\uD83C\uDFFF", "\uD83D\uDC82\uD83C\uDFFB", "\uD83D\uDC82\uD83C\uDFFC", "\uD83D\uDC82\uD83C\uDFFD", "\uD83D\uDC82\uD83C\uDFFE", "\uD83D\uDC82\uD83C\uDFFF", "\uD83D\uDC83\uD83C\uDFFB", "\uD83D\uDC83\uD83C\uDFFC", "\uD83D\uDC83\uD83C\uDFFD", "\uD83D\uDC83\uD83C\uDFFE", "\uD83D\uDC83\uD83C\uDFFF", "\uD83D\uDC85\uD83C\uDFFB", "\uD83D\uDC85\uD83C\uDFFC", "\uD83D\uDC85\uD83C\uDFFD", "\uD83D\uDC85\uD83C\uDFFE", "\uD83D\uDC85\uD83C\uDFFF", "\uD83D\uDC86\uD83C\uDFFB", "\uD83D\uDC86\uD83C\uDFFC", "\uD83D\uDC86\uD83C\uDFFD", "\uD83D\uDC86\uD83C\uDFFE", "\uD83D\uDC86\uD83C\uDFFF", "\uD83D\uDC87\uD83C\uDFFB", "\uD83D\uDC87\uD83C\uDFFC", "\uD83D\uDC87\uD83C\uDFFD", "\uD83D\uDC87\uD83C\uDFFE", "\uD83D\uDC87\uD83C\uDFFF", "\uD83D\uDC8F\uD83C\uDFFB", "\uD83D\uDC8F\uD83C\uDFFC", "\uD83D\uDC8F\uD83C\uDFFD", "\uD83D\uDC8F\uD83C\uDFFE", "\uD83D\uDC8F\uD83C\uDFFF", "\uD83D\uDC91\uD83C\uDFFB", "\uD83D\uDC91\uD83C\uDFFC", "\uD83D\uDC91\uD83C\uDFFD", "\uD83D\uDC91\uD83C\uDFFE", "\uD83D\uDC91\uD83C\uDFFF", "\uD83D\uDCAA\uD83C\uDFFB", "\uD83D\uDCAA\uD83C\uDFFC", "\uD83D\uDCAA\uD83C\uDFFD", "\uD83D\uDCAA\uD83C\uDFFE", "\uD83D\uDCAA\uD83C\uDFFF", "\uD83D\uDD74\uD83C\uDFFB", "\uD83D\uDD74\uD83C\uDFFC", "\uD83D\uDD74\uD83C\uDFFD", "\uD83D\uDD74\uD83C\uDFFE", "\uD83D\uDD74\uD83C\uDFFF", "\uD83D\uDD75\uD83C\uDFFB", "\uD83D\uDD75\uD83C\uDFFC", "\uD83D\uDD75\uD83C\uDFFD", "\uD83D\uDD75\uD83C\uDFFE", "\uD83D\uDD75\uD83C\uDFFF", "\uD83D\uDD7A\uD83C\uDFFB", "\uD83D\uDD7A\uD83C\uDFFC", "\uD83D\uDD7A\uD83C\uDFFD", "\uD83D\uDD7A\uD83C\uDFFE", "\uD83D\uDD7A\uD83C\uDFFF", "\uD83D\uDD90\uD83C\uDFFB", "\uD83D\uDD90\uD83C\uDFFC", "\uD83D\uDD90\uD83C\uDFFD", "\uD83D\uDD90\uD83C\uDFFE", "\uD83D\uDD90\uD83C\uDFFF", "\uD83D\uDD95\uD83C\uDFFB", "\uD83D\uDD95\uD83C\uDFFC", "\uD83D\uDD95\uD83C\uDFFD", "\uD83D\uDD95\uD83C\uDFFE", "\uD83D\uDD95\uD83C\uDFFF", "\uD83D\uDD96\uD83C\uDFFB", "\uD83D\uDD96\uD83C\uDFFC", "\uD83D\uDD96\uD83C\uDFFD", "\uD83D\uDD96\uD83C\uDFFE", "\uD83D\uDD96\uD83C\uDFFF", "\uD83D\uDE45\uD83C\uDFFB", "\uD83D\uDE45\uD83C\uDFFC", "\uD83D\uDE45\uD83C\uDFFD", "\uD83D\uDE45\uD83C\uDFFE", "\uD83D\uDE45\uD83C\uDFFF", "\uD83D\uDE46\uD83C\uDFFB", "\uD83D\uDE46\uD83C\uDFFC", "\uD83D\uDE46\uD83C\uDFFD", "\uD83D\uDE46\uD83C\uDFFE", "\uD83D\uDE46\uD83C\uDFFF", "\uD83D\uDE47\uD83C\uDFFB", "\uD83D\uDE47\uD83C\uDFFC", "\uD83D\uDE47\uD83C\uDFFD", "\uD83D\uDE47\uD83C\uDFFE", "\uD83D\uDE47\uD83C\uDFFF", "\uD83D\uDE4B\uD83C\uDFFB", "\uD83D\uDE4B\uD83C\uDFFC", "\uD83D\uDE4B\uD83C\uDFFD", "\uD83D\uDE4B\uD83C\uDFFE", "\uD83D\uDE4B\uD83C\uDFFF", "\uD83D\uDE4C\uD83C\uDFFB", "\uD83D\uDE4C\uD83C\uDFFC", "\uD83D\uDE4C\uD83C\uDFFD", "\uD83D\uDE4C\uD83C\uDFFE", "\uD83D\uDE4C\uD83C\uDFFF", "\uD83D\uDE4D\uD83C\uDFFB", "\uD83D\uDE4D\uD83C\uDFFC", "\uD83D\uDE4D\uD83C\uDFFD", "\uD83D\uDE4D\uD83C\uDFFE", "\uD83D\uDE4D\uD83C\uDFFF", "\uD83D\uDE4E\uD83C\uDFFB", "\uD83D\uDE4E\uD83C\uDFFC", "\uD83D\uDE4E\uD83C\uDFFD", "\uD83D\uDE4E\uD83C\uDFFE", "\uD83D\uDE4E\uD83C\uDFFF", "\uD83D\uDE4F\uD83C\uDFFB", "\uD83D\uDE4F\uD83C\uDFFC", "\uD83D\uDE4F\uD83C\uDFFD", "\uD83D\uDE4F\uD83C\uDFFE", "\uD83D\uDE4F\uD83C\uDFFF", "\uD83D\uDEA3\uD83C\uDFFB", "\uD83D\uDEA3\uD83C\uDFFC", "\uD83D\uDEA3\uD83C\uDFFD", "\uD83D\uDEA3\uD83C\uDFFE", "\uD83D\uDEA3\uD83C\uDFFF", "\uD83D\uDEB4\uD83C\uDFFB", "\uD83D\uDEB4\uD83C\uDFFC", "\uD83D\uDEB4\uD83C\uDFFD", "\uD83D\uDEB4\uD83C\uDFFE", "\uD83D\uDEB4\uD83C\uDFFF", "\uD83D\uDEB5\uD83C\uDFFB", "\uD83D\uDEB5\uD83C\uDFFC", "\uD83D\uDEB5\uD83C\uDFFD", "\uD83D\uDEB5\uD83C\uDFFE", "\uD83D\uDEB5\uD83C\uDFFF", "\uD83D\uDEB6\uD83C\uDFFB", "\uD83D\uDEB6\uD83C\uDFFC", "\uD83D\uDEB6\uD83C\uDFFD", "\uD83D\uDEB6\uD83C\uDFFE", "\uD83D\uDEB6\uD83C\uDFFF", "\uD83D\uDEC0\uD83C\uDFFB", "\uD83D\uDEC0\uD83C\uDFFC", "\uD83D\uDEC0\uD83C\uDFFD", "\uD83D\uDEC0\uD83C\uDFFE", "\uD83D\uDEC0\uD83C\uDFFF", "\uD83D\uDECC\uD83C\uDFFB", "\uD83D\uDECC\uD83C\uDFFC", "\uD83D\uDECC\uD83C\uDFFD", "\uD83D\uDECC\uD83C\uDFFE", "\uD83D\uDECC\uD83C\uDFFF", "\uD83E\uDD0C\uD83C\uDFFB", "\uD83E\uDD0C\uD83C\uDFFC", "\uD83E\uDD0C\uD83C\uDFFD", "\uD83E\uDD0C\uD83C\uDFFE", "\uD83E\uDD0C\uD83C\uDFFF", "\uD83E\uDD0F\uD83C\uDFFB", "\uD83E\uDD0F\uD83C\uDFFC", "\uD83E\uDD0F\uD83C\uDFFD", "\uD83E\uDD0F\uD83C\uDFFE", "\uD83E\uDD0F\uD83C\uDFFF", "\uD83E\uDD18\uD83C\uDFFB", "\uD83E\uDD18\uD83C\uDFFC", "\uD83E\uDD18\uD83C\uDFFD", "\uD83E\uDD18\uD83C\uDFFE", "\uD83E\uDD18\uD83C\uDFFF", "\uD83E\uDD19\uD83C\uDFFB", "\uD83E\uDD19\uD83C\uDFFC", "\uD83E\uDD19\uD83C\uDFFD", "\uD83E\uDD19\uD83C\uDFFE", "\uD83E\uDD19\uD83C\uDFFF", "\uD83E\uDD1A\uD83C\uDFFB", "\uD83E\uDD1A\uD83C\uDFFC", "\uD83E\uDD1A\uD83C\uDFFD", "\uD83E\uDD1A\uD83C\uDFFE", "\uD83E\uDD1A\uD83C\uDFFF", "\uD83E\uDD1B\uD83C\uDFFB", "\uD83E\uDD1B\uD83C\uDFFC", "\uD83E\uDD1B\uD83C\uDFFD", "\uD83E\uDD1B\uD83C\uDFFE", "\uD83E\uDD1B\uD83C\uDFFF", "\uD83E\uDD1C\uD83C\uDFFB", "\uD83E\uDD1C\uD83C\uDFFC", "\uD83E\uDD1C\uD83C\uDFFD", "\uD83E\uDD1C\uD83C\uDFFE", "\uD83E\uDD1C\uD83C\uDFFF", "\uD83E\uDD1D\uD83C\uDFFB", "\uD83E\uDD1D\uD83C\uDFFC", "\uD83E\uDD1D\uD83C\uDFFD", "\uD83E\uDD1D\uD83C\uDFFE", "\uD83E\uDD1D\uD83C\uDFFF", "\uD83E\uDD1E\uD83C\uDFFB", "\uD83E\uDD1E\uD83C\uDFFC", "\uD83E\uDD1E\uD83C\uDFFD", "\uD83E\uDD1E\uD83C\uDFFE", "\uD83E\uDD1E\uD83C\uDFFF", "\uD83E\uDD1F\uD83C\uDFFB", "\uD83E\uDD1F\uD83C\uDFFC", "\uD83E\uDD1F\uD83C\uDFFD", "\uD83E\uDD1F\uD83C\uDFFE", "\uD83E\uDD1F\uD83C\uDFFF", "\uD83E\uDD26\uD83C\uDFFB", "\uD83E\uDD26\uD83C\uDFFC", "\uD83E\uDD26\uD83C\uDFFD", "\uD83E\uDD26\uD83C\uDFFE", "\uD83E\uDD26\uD83C\uDFFF", "\uD83E\uDD30\uD83C\uDFFB", "\uD83E\uDD30\uD83C\uDFFC", "\uD83E\uDD30\uD83C\uDFFD", "\uD83E\uDD30\uD83C\uDFFE", "\uD83E\uDD30\uD83C\uDFFF", "\uD83E\uDD31\uD83C\uDFFB", "\uD83E\uDD31\uD83C\uDFFC", "\uD83E\uDD31\uD83C\uDFFD", "\uD83E\uDD31\uD83C\uDFFE", "\uD83E\uDD31\uD83C\uDFFF", "\uD83E\uDD32\uD83C\uDFFB", "\uD83E\uDD32\uD83C\uDFFC", "\uD83E\uDD32\uD83C\uDFFD", "\uD83E\uDD32\uD83C\uDFFE", "\uD83E\uDD32\uD83C\uDFFF", "\uD83E\uDD33\uD83C\uDFFB", "\uD83E\uDD33\uD83C\uDFFC", "\uD83E\uDD33\uD83C\uDFFD", "\uD83E\uDD33\uD83C\uDFFE", "\uD83E\uDD33\uD83C\uDFFF", "\uD83E\uDD34\uD83C\uDFFB", "\uD83E\uDD34\uD83C\uDFFC", "\uD83E\uDD34\uD83C\uDFFD", "\uD83E\uDD34\uD83C\uDFFE", "\uD83E\uDD34\uD83C\uDFFF", "\uD83E\uDD35\uD83C\uDFFB", "\uD83E\uDD35\uD83C\uDFFC", "\uD83E\uDD35\uD83C\uDFFD", "\uD83E\uDD35\uD83C\uDFFE", "\uD83E\uDD35\uD83C\uDFFF", "\uD83E\uDD36\uD83C\uDFFB", "\uD83E\uDD36\uD83C\uDFFC", "\uD83E\uDD36\uD83C\uDFFD", "\uD83E\uDD36\uD83C\uDFFE", "\uD83E\uDD36\uD83C\uDFFF", "\uD83E\uDD37\uD83C\uDFFB", "\uD83E\uDD37\uD83C\uDFFC", "\uD83E\uDD37\uD83C\uDFFD", "\uD83E\uDD37\uD83C\uDFFE", "\uD83E\uDD37\uD83C\uDFFF", "\uD83E\uDD38\uD83C\uDFFB", "\uD83E\uDD38\uD83C\uDFFC", "\uD83E\uDD38\uD83C\uDFFD", "\uD83E\uDD38\uD83C\uDFFE", "\uD83E\uDD38\uD83C\uDFFF", "\uD83E\uDD39\uD83C\uDFFB", "\uD83E\uDD39\uD83C\uDFFC", "\uD83E\uDD39\uD83C\uDFFD", "\uD83E\uDD39\uD83C\uDFFE", "\uD83E\uDD39\uD83C\uDFFF", "\uD83E\uDD3D\uD83C\uDFFB", "\uD83E\uDD3D\uD83C\uDFFC", "\uD83E\uDD3D\uD83C\uDFFD", "\uD83E\uDD3D\uD83C\uDFFE", "\uD83E\uDD3D\uD83C\uDFFF", "\uD83E\uDD3E\uD83C\uDFFB", "\uD83E\uDD3E\uD83C\uDFFC", "\uD83E\uDD3E\uD83C\uDFFD", "\uD83E\uDD3E\uD83C\uDFFE", "\uD83E\uDD3E\uD83C\uDFFF", "\uD83E\uDD77\uD83C\uDFFB", "\uD83E\uDD77\uD83C\uDFFC", "\uD83E\uDD77\uD83C\uDFFD", "\uD83E\uDD77\uD83C\uDFFE", "\uD83E\uDD77\uD83C\uDFFF", "\uD83E\uDDB5\uD83C\uDFFB", "\uD83E\uDDB5\uD83C\uDFFC", "\uD83E\uDDB5\uD83C\uDFFD", "\uD83E\uDDB5\uD83C\uDFFE", "\uD83E\uDDB5\uD83C\uDFFF", "\uD83E\uDDB6\uD83C\uDFFB", "\uD83E\uDDB6\uD83C\uDFFC", "\uD83E\uDDB6\uD83C\uDFFD", "\uD83E\uDDB6\uD83C\uDFFE", "\uD83E\uDDB6\uD83C\uDFFF", "\uD83E\uDDB8\uD83C\uDFFB", "\uD83E\uDDB8\uD83C\uDFFC", "\uD83E\uDDB8\uD83C\uDFFD", "\uD83E\uDDB8\uD83C\uDFFE", "\uD83E\uDDB8\uD83C\uDFFF", "\uD83E\uDDB9\uD83C\uDFFB", "\uD83E\uDDB9\uD83C\uDFFC", "\uD83E\uDDB9\uD83C\uDFFD", "\uD83E\uDDB9\uD83C\uDFFE", "\uD83E\uDDB9\uD83C\uDFFF", "\uD83E\uDDBB\uD83C\uDFFB", "\uD83E\uDDBB\uD83C\uDFFC", "\uD83E\uDDBB\uD83C\uDFFD", "\uD83E\uDDBB\uD83C\uDFFE", "\uD83E\uDDBB\uD83C\uDFFF", "\uD83E\uDDCD\uD83C\uDFFB", "\uD83E\uDDCD\uD83C\uDFFC", "\uD83E\uDDCD\uD83C\uDFFD", "\uD83E\uDDCD\uD83C\uDFFE", "\uD83E\uDDCD\uD83C\uDFFF", "\uD83E\uDDCE\uD83C\uDFFB", "\uD83E\uDDCE\uD83C\uDFFC", "\uD83E\uDDCE\uD83C\uDFFD", "\uD83E\uDDCE\uD83C\uDFFE", "\uD83E\uDDCE\uD83C\uDFFF", "\uD83E\uDDCF\uD83C\uDFFB", "\uD83E\uDDCF\uD83C\uDFFC", "\uD83E\uDDCF\uD83C\uDFFD", "\uD83E\uDDCF\uD83C\uDFFE", "\uD83E\uDDCF\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD2\uD83C\uDFFB", "\uD83E\uDDD2\uD83C\uDFFC", "\uD83E\uDDD2\uD83C\uDFFD", "\uD83E\uDDD2\uD83C\uDFFE", "\uD83E\uDDD2\uD83C\uDFFF", "\uD83E\uDDD3\uD83C\uDFFB", "\uD83E\uDDD3\uD83C\uDFFC", "\uD83E\uDDD3\uD83C\uDFFD", "\uD83E\uDDD3\uD83C\uDFFE", "\uD83E\uDDD3\uD83C\uDFFF", "\uD83E\uDDD4\uD83C\uDFFB", "\uD83E\uDDD4\uD83C\uDFFC", "\uD83E\uDDD4\uD83C\uDFFD", "\uD83E\uDDD4\uD83C\uDFFE", "\uD83E\uDDD4\uD83C\uDFFF", "\uD83E\uDDD5\uD83C\uDFFB", "\uD83E\uDDD5\uD83C\uDFFC", "\uD83E\uDDD5\uD83C\uDFFD", "\uD83E\uDDD5\uD83C\uDFFE", "\uD83E\uDDD5\uD83C\uDFFF", "\uD83E\uDDD6\uD83C\uDFFB", "\uD83E\uDDD6\uD83C\uDFFC", "\uD83E\uDDD6\uD83C\uDFFD", "\uD83E\uDDD6\uD83C\uDFFE", "\uD83E\uDDD6\uD83C\uDFFF", "\uD83E\uDDD7\uD83C\uDFFB", "\uD83E\uDDD7\uD83C\uDFFC", "\uD83E\uDDD7\uD83C\uDFFD", "\uD83E\uDDD7\uD83C\uDFFE", "\uD83E\uDDD7\uD83C\uDFFF", "\uD83E\uDDD8\uD83C\uDFFB", "\uD83E\uDDD8\uD83C\uDFFC", "\uD83E\uDDD8\uD83C\uDFFD", "\uD83E\uDDD8\uD83C\uDFFE", "\uD83E\uDDD8\uD83C\uDFFF", "\uD83E\uDDD9\uD83C\uDFFB", "\uD83E\uDDD9\uD83C\uDFFC", "\uD83E\uDDD9\uD83C\uDFFD", "\uD83E\uDDD9\uD83C\uDFFE", "\uD83E\uDDD9\uD83C\uDFFF", "\uD83E\uDDDA\uD83C\uDFFB", "\uD83E\uDDDA\uD83C\uDFFC", "\uD83E\uDDDA\uD83C\uDFFD", "\uD83E\uDDDA\uD83C\uDFFE", "\uD83E\uDDDA\uD83C\uDFFF", "\uD83E\uDDDB\uD83C\uDFFB", "\uD83E\uDDDB\uD83C\uDFFC", "\uD83E\uDDDB\uD83C\uDFFD", "\uD83E\uDDDB\uD83C\uDFFE", "\uD83E\uDDDB\uD83C\uDFFF", "\uD83E\uDDDC\uD83C\uDFFB", "\uD83E\uDDDC\uD83C\uDFFC", "\uD83E\uDDDC\uD83C\uDFFD", "\uD83E\uDDDC\uD83C\uDFFE", "\uD83E\uDDDC\uD83C\uDFFF", "\uD83E\uDDDD\uD83C\uDFFB", "\uD83E\uDDDD\uD83C\uDFFC", "\uD83E\uDDDD\uD83C\uDFFD", "\uD83E\uDDDD\uD83C\uDFFE", "\uD83E\uDDDD\uD83C\uDFFF", "\uD83E\uDEC3\uD83C\uDFFB", "\uD83E\uDEC3\uD83C\uDFFC", "\uD83E\uDEC3\uD83C\uDFFD", "\uD83E\uDEC3\uD83C\uDFFE", "\uD83E\uDEC3\uD83C\uDFFF", "\uD83E\uDEC4\uD83C\uDFFB", "\uD83E\uDEC4\uD83C\uDFFC", "\uD83E\uDEC4\uD83C\uDFFD", "\uD83E\uDEC4\uD83C\uDFFE", "\uD83E\uDEC4\uD83C\uDFFF", "\uD83E\uDEC5\uD83C\uDFFB", "\uD83E\uDEC5\uD83C\uDFFC", "\uD83E\uDEC5\uD83C\uDFFD", "\uD83E\uDEC5\uD83C\uDFFE", "\uD83E\uDEC5\uD83C\uDFFF", "\uD83E\uDEF0\uD83C\uDFFB", "\uD83E\uDEF0\uD83C\uDFFC", "\uD83E\uDEF0\uD83C\uDFFD", "\uD83E\uDEF0\uD83C\uDFFE", "\uD83E\uDEF0\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFF", "\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF3\uD83C\uDFFB", "\uD83E\uDEF3\uD83C\uDFFC", "\uD83E\uDEF3\uD83C\uDFFD", "\uD83E\uDEF3\uD83C\uDFFE", "\uD83E\uDEF3\uD83C\uDFFF", "\uD83E\uDEF4\uD83C\uDFFB", "\uD83E\uDEF4\uD83C\uDFFC", "\uD83E\uDEF4\uD83C\uDFFD", "\uD83E\uDEF4\uD83C\uDFFE", "\uD83E\uDEF4\uD83C\uDFFF", "\uD83E\uDEF5\uD83C\uDFFB", "\uD83E\uDEF5\uD83C\uDFFC", "\uD83E\uDEF5\uD83C\uDFFD", "\uD83E\uDEF5\uD83C\uDFFE", "\uD83E\uDEF5\uD83C\uDFFF", "\uD83E\uDEF6\uD83C\uDFFB", "\uD83E\uDEF6\uD83C\uDFFC", "\uD83E\uDEF6\uD83C\uDFFD", "\uD83E\uDEF6\uD83C\uDFFE", "\uD83E\uDEF6\uD83C\uDFFF", "\uD83E\uDEF7\uD83C\uDFFB", "\uD83E\uDEF7\uD83C\uDFFC", "\uD83E\uDEF7\uD83C\uDFFD", "\uD83E\uDEF7\uD83C\uDFFE", "\uD83E\uDEF7\uD83C\uDFFF", "\uD83E\uDEF8\uD83C\uDFFB", "\uD83E\uDEF8\uD83C\uDFFC", "\uD83E\uDEF8\uD83C\uDFFD", "\uD83E\uDEF8\uD83C\uDFFE", "\uD83E\uDEF8\uD83C\uDFFF"];
    return RGI_Emoji_Modifier_Sequence;
  }

  var RGI_Emoji_Tag_Sequence = {};

  var hasRequiredRGI_Emoji_Tag_Sequence;
  function requireRGI_Emoji_Tag_Sequence() {
    if (hasRequiredRGI_Emoji_Tag_Sequence) return RGI_Emoji_Tag_Sequence;
    hasRequiredRGI_Emoji_Tag_Sequence = 1;
    var set = regenerateExports();
    RGI_Emoji_Tag_Sequence.characters = set;
    RGI_Emoji_Tag_Sequence.strings = ["\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F"];
    return RGI_Emoji_Tag_Sequence;
  }

  var RGI_Emoji_ZWJ_Sequence = {};

  var hasRequiredRGI_Emoji_ZWJ_Sequence;
  function requireRGI_Emoji_ZWJ_Sequence() {
    if (hasRequiredRGI_Emoji_ZWJ_Sequence) return RGI_Emoji_ZWJ_Sequence;
    hasRequiredRGI_Emoji_ZWJ_Sequence = 1;
    var set = regenerateExports();
    RGI_Emoji_ZWJ_Sequence.characters = set;
    RGI_Emoji_ZWJ_Sequence.strings = ["\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1", "\uD83E\uDDD1\u200D\uD83E\uDDD1\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD1\u200D\uD83E\uDDD2\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD2\u200D\uD83E\uDDD2", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83C\uDFC3\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83D\uDC68\u200D\u2695\uFE0F", "\uD83D\uDC68\u200D\u2696\uFE0F", "\uD83D\uDC68\u200D\u2708\uFE0F", "\uD83D\uDC68\u200D\uD83C\uDF3E", "\uD83D\uDC68\u200D\uD83C\uDF73", "\uD83D\uDC68\u200D\uD83C\uDF7C", "\uD83D\uDC68\u200D\uD83C\uDF93", "\uD83D\uDC68\u200D\uD83C\uDFA4", "\uD83D\uDC68\u200D\uD83C\uDFA8", "\uD83D\uDC68\u200D\uD83C\uDFEB", "\uD83D\uDC68\u200D\uD83C\uDFED", "\uD83D\uDC68\u200D\uD83D\uDCBB", "\uD83D\uDC68\u200D\uD83D\uDCBC", "\uD83D\uDC68\u200D\uD83D\uDD27", "\uD83D\uDC68\u200D\uD83D\uDD2C", "\uD83D\uDC68\u200D\uD83D\uDE80", "\uD83D\uDC68\u200D\uD83D\uDE92", "\uD83D\uDC68\u200D\uD83E\uDDAF", "\uD83D\uDC68\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDBC", "\uD83D\uDC68\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDBD", "\uD83D\uDC68\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\u2695\uFE0F", "\uD83D\uDC69\u200D\u2696\uFE0F", "\uD83D\uDC69\u200D\u2708\uFE0F", "\uD83D\uDC69\u200D\uD83C\uDF3E", "\uD83D\uDC69\u200D\uD83C\uDF73", "\uD83D\uDC69\u200D\uD83C\uDF7C", "\uD83D\uDC69\u200D\uD83C\uDF93", "\uD83D\uDC69\u200D\uD83C\uDFA4", "\uD83D\uDC69\u200D\uD83C\uDFA8", "\uD83D\uDC69\u200D\uD83C\uDFEB", "\uD83D\uDC69\u200D\uD83C\uDFED", "\uD83D\uDC69\u200D\uD83D\uDCBB", "\uD83D\uDC69\u200D\uD83D\uDCBC", "\uD83D\uDC69\u200D\uD83D\uDD27", "\uD83D\uDC69\u200D\uD83D\uDD2C", "\uD83D\uDC69\u200D\uD83D\uDE80", "\uD83D\uDC69\u200D\uD83D\uDE92", "\uD83D\uDC69\u200D\uD83E\uDDAF", "\uD83D\uDC69\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\uD83E\uDDBC", "\uD83D\uDC69\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\uD83E\uDDBD", "\uD83D\uDC69\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDEB6\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83E\uDDCE\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\u2695\uFE0F", "\uD83E\uDDD1\u200D\u2696\uFE0F", "\uD83E\uDDD1\u200D\u2708\uFE0F", "\uD83E\uDDD1\u200D\uD83C\uDF3E", "\uD83E\uDDD1\u200D\uD83C\uDF73", "\uD83E\uDDD1\u200D\uD83C\uDF7C", "\uD83E\uDDD1\u200D\uD83C\uDF84", "\uD83E\uDDD1\u200D\uD83C\uDF93", "\uD83E\uDDD1\u200D\uD83C\uDFA4", "\uD83E\uDDD1\u200D\uD83C\uDFA8", "\uD83E\uDDD1\u200D\uD83C\uDFEB", "\uD83E\uDDD1\u200D\uD83C\uDFED", "\uD83E\uDDD1\u200D\uD83D\uDCBB", "\uD83E\uDDD1\u200D\uD83D\uDCBC", "\uD83E\uDDD1\u200D\uD83D\uDD27", "\uD83E\uDDD1\u200D\uD83D\uDD2C", "\uD83E\uDDD1\u200D\uD83D\uDE80", "\uD83E\uDDD1\u200D\uD83D\uDE92", "\uD83E\uDDD1\u200D\uD83E\uDDAF", "\uD83E\uDDD1\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\uD83E\uDDBC", "\uD83E\uDDD1\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\uD83E\uDDBD", "\uD83E\uDDD1\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\u26F9\uD83C\uDFFB\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFB\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2642\uFE0F", "\u26F9\uFE0F\u200D\u2640\uFE0F", "\u26F9\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFC3\u200D\u2640\uFE0F", "\uD83C\uDFC3\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC4\u200D\u2640\uFE0F", "\uD83C\uDFC4\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCA\u200D\u2640\uFE0F", "\uD83C\uDFCA\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDC6E\u200D\u2640\uFE0F", "\uD83D\uDC6E\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC6F\u200D\u2640\uFE0F", "\uD83D\uDC6F\u200D\u2642\uFE0F", "\uD83D\uDC70\u200D\u2640\uFE0F", "\uD83D\uDC70\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC71\u200D\u2640\uFE0F", "\uD83D\uDC71\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC73\u200D\u2640\uFE0F", "\uD83D\uDC73\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC77\u200D\u2640\uFE0F", "\uD83D\uDC77\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC81\u200D\u2640\uFE0F", "\uD83D\uDC81\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC82\u200D\u2640\uFE0F", "\uD83D\uDC82\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC86\u200D\u2640\uFE0F", "\uD83D\uDC86\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC87\u200D\u2640\uFE0F", "\uD83D\uDC87\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2640\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDE45\u200D\u2640\uFE0F", "\uD83D\uDE45\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE46\u200D\u2640\uFE0F", "\uD83D\uDE46\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE47\u200D\u2640\uFE0F", "\uD83D\uDE47\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4B\u200D\u2640\uFE0F", "\uD83D\uDE4B\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4D\u200D\u2640\uFE0F", "\uD83D\uDE4D\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4E\u200D\u2640\uFE0F", "\uD83D\uDE4E\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEA3\u200D\u2640\uFE0F", "\uD83D\uDEA3\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB4\u200D\u2640\uFE0F", "\uD83D\uDEB4\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB5\u200D\u2640\uFE0F", "\uD83D\uDEB5\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDD26\u200D\u2640\uFE0F", "\uD83E\uDD26\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD35\u200D\u2640\uFE0F", "\uD83E\uDD35\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD37\u200D\u2640\uFE0F", "\uD83E\uDD37\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD38\u200D\u2640\uFE0F", "\uD83E\uDD38\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD39\u200D\u2640\uFE0F", "\uD83E\uDD39\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3C\u200D\u2640\uFE0F", "\uD83E\uDD3C\u200D\u2642\uFE0F", "\uD83E\uDD3D\u200D\u2640\uFE0F", "\uD83E\uDD3D\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3E\u200D\u2640\uFE0F", "\uD83E\uDD3E\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB8\u200D\u2640\uFE0F", "\uD83E\uDDB8\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB9\u200D\u2640\uFE0F", "\uD83E\uDDB9\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCD\u200D\u2640\uFE0F", "\uD83E\uDDCD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCF\u200D\u2640\uFE0F", "\uD83E\uDDCF\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD4\u200D\u2640\uFE0F", "\uD83E\uDDD4\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD6\u200D\u2640\uFE0F", "\uD83E\uDDD6\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD7\u200D\u2640\uFE0F", "\uD83E\uDDD7\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD8\u200D\u2640\uFE0F", "\uD83E\uDDD8\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD9\u200D\u2640\uFE0F", "\uD83E\uDDD9\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDA\u200D\u2640\uFE0F", "\uD83E\uDDDA\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDB\u200D\u2640\uFE0F", "\uD83E\uDDDB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDC\u200D\u2640\uFE0F", "\uD83E\uDDDC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDD\u200D\u2640\uFE0F", "\uD83E\uDDDD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDE\u200D\u2640\uFE0F", "\uD83E\uDDDE\u200D\u2642\uFE0F", "\uD83E\uDDDF\u200D\u2640\uFE0F", "\uD83E\uDDDF\u200D\u2642\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDB0", "\uD83D\uDC68\u200D\uD83E\uDDB1", "\uD83D\uDC68\u200D\uD83E\uDDB2", "\uD83D\uDC68\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC69\u200D\uD83E\uDDB0", "\uD83D\uDC69\u200D\uD83E\uDDB1", "\uD83D\uDC69\u200D\uD83E\uDDB2", "\uD83D\uDC69\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83E\uDDD1\u200D\uD83E\uDDB0", "\uD83E\uDDD1\u200D\uD83E\uDDB1", "\uD83E\uDDD1\u200D\uD83E\uDDB2", "\uD83E\uDDD1\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB3", "\u26D3\uFE0F\u200D\uD83D\uDCA5", "\u2764\uFE0F\u200D\uD83D\uDD25", "\u2764\uFE0F\u200D\uD83E\uDE79", "\uD83C\uDF44\u200D\uD83D\uDFEB", "\uD83C\uDF4B\u200D\uD83D\uDFE9", "\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08", "\uD83C\uDFF4\u200D\u2620\uFE0F", "\uD83D\uDC08\u200D\u2B1B", "\uD83D\uDC15\u200D\uD83E\uDDBA", "\uD83D\uDC26\u200D\u2B1B", "\uD83D\uDC26\u200D\uD83D\uDD25", "\uD83D\uDC3B\u200D\u2744\uFE0F", "\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8\uFE0F", "\uD83D\uDE2E\u200D\uD83D\uDCA8", "\uD83D\uDE35\u200D\uD83D\uDCAB", "\uD83D\uDE36\u200D\uD83C\uDF2B\uFE0F", "\uD83D\uDE42\u200D\u2194\uFE0F", "\uD83D\uDE42\u200D\u2195\uFE0F"];
    return RGI_Emoji_ZWJ_Sequence;
  }

  var RGI_Emoji = {};

  var hasRequiredRGI_Emoji;
  function requireRGI_Emoji() {
    if (hasRequiredRGI_Emoji) return RGI_Emoji;
    hasRequiredRGI_Emoji = 1;
    var set = regenerateExports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
    set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
    RGI_Emoji.characters = set;
    RGI_Emoji.strings = ["#\uFE0F\u20E3", "*\uFE0F\u20E3", "0\uFE0F\u20E3", "1\uFE0F\u20E3", "2\uFE0F\u20E3", "3\uFE0F\u20E3", "4\uFE0F\u20E3", "5\uFE0F\u20E3", "6\uFE0F\u20E3", "7\uFE0F\u20E3", "8\uFE0F\u20E3", "9\uFE0F\u20E3", "\xA9\uFE0F", "\xAE\uFE0F", "\u203C\uFE0F", "\u2049\uFE0F", "\u2122\uFE0F", "\u2139\uFE0F", "\u2194\uFE0F", "\u2195\uFE0F", "\u2196\uFE0F", "\u2197\uFE0F", "\u2198\uFE0F", "\u2199\uFE0F", "\u21A9\uFE0F", "\u21AA\uFE0F", "\u2328\uFE0F", "\u23CF\uFE0F", "\u23ED\uFE0F", "\u23EE\uFE0F", "\u23EF\uFE0F", "\u23F1\uFE0F", "\u23F2\uFE0F", "\u23F8\uFE0F", "\u23F9\uFE0F", "\u23FA\uFE0F", "\u24C2\uFE0F", "\u25AA\uFE0F", "\u25AB\uFE0F", "\u25B6\uFE0F", "\u25C0\uFE0F", "\u25FB\uFE0F", "\u25FC\uFE0F", "\u2600\uFE0F", "\u2601\uFE0F", "\u2602\uFE0F", "\u2603\uFE0F", "\u2604\uFE0F", "\u260E\uFE0F", "\u2611\uFE0F", "\u2618\uFE0F", "\u261D\uD83C\uDFFB", "\u261D\uD83C\uDFFC", "\u261D\uD83C\uDFFD", "\u261D\uD83C\uDFFE", "\u261D\uD83C\uDFFF", "\u261D\uFE0F", "\u2620\uFE0F", "\u2622\uFE0F", "\u2623\uFE0F", "\u2626\uFE0F", "\u262A\uFE0F", "\u262E\uFE0F", "\u262F\uFE0F", "\u2638\uFE0F", "\u2639\uFE0F", "\u263A\uFE0F", "\u2640\uFE0F", "\u2642\uFE0F", "\u265F\uFE0F", "\u2660\uFE0F", "\u2663\uFE0F", "\u2665\uFE0F", "\u2666\uFE0F", "\u2668\uFE0F", "\u267B\uFE0F", "\u267E\uFE0F", "\u2692\uFE0F", "\u2694\uFE0F", "\u2695\uFE0F", "\u2696\uFE0F", "\u2697\uFE0F", "\u2699\uFE0F", "\u269B\uFE0F", "\u269C\uFE0F", "\u26A0\uFE0F", "\u26A7\uFE0F", "\u26B0\uFE0F", "\u26B1\uFE0F", "\u26C8\uFE0F", "\u26CF\uFE0F", "\u26D1\uFE0F", "\u26D3\uFE0F", "\u26D3\uFE0F\u200D\uD83D\uDCA5", "\u26E9\uFE0F", "\u26F0\uFE0F", "\u26F1\uFE0F", "\u26F4\uFE0F", "\u26F7\uFE0F", "\u26F8\uFE0F", "\u26F9\uD83C\uDFFB", "\u26F9\uD83C\uDFFB\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFB\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFC", "\u26F9\uD83C\uDFFC\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFD", "\u26F9\uD83C\uDFFD\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFE", "\u26F9\uD83C\uDFFE\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFF", "\u26F9\uD83C\uDFFF\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2642\uFE0F", "\u26F9\uFE0F", "\u26F9\uFE0F\u200D\u2640\uFE0F", "\u26F9\uFE0F\u200D\u2642\uFE0F", "\u2702\uFE0F", "\u2708\uFE0F", "\u2709\uFE0F", "\u270A\uD83C\uDFFB", "\u270A\uD83C\uDFFC", "\u270A\uD83C\uDFFD", "\u270A\uD83C\uDFFE", "\u270A\uD83C\uDFFF", "\u270B\uD83C\uDFFB", "\u270B\uD83C\uDFFC", "\u270B\uD83C\uDFFD", "\u270B\uD83C\uDFFE", "\u270B\uD83C\uDFFF", "\u270C\uD83C\uDFFB", "\u270C\uD83C\uDFFC", "\u270C\uD83C\uDFFD", "\u270C\uD83C\uDFFE", "\u270C\uD83C\uDFFF", "\u270C\uFE0F", "\u270D\uD83C\uDFFB", "\u270D\uD83C\uDFFC", "\u270D\uD83C\uDFFD", "\u270D\uD83C\uDFFE", "\u270D\uD83C\uDFFF", "\u270D\uFE0F", "\u270F\uFE0F", "\u2712\uFE0F", "\u2714\uFE0F", "\u2716\uFE0F", "\u271D\uFE0F", "\u2721\uFE0F", "\u2733\uFE0F", "\u2734\uFE0F", "\u2744\uFE0F", "\u2747\uFE0F", "\u2763\uFE0F", "\u2764\uFE0F", "\u2764\uFE0F\u200D\uD83D\uDD25", "\u2764\uFE0F\u200D\uD83E\uDE79", "\u27A1\uFE0F", "\u2934\uFE0F", "\u2935\uFE0F", "\u2B05\uFE0F", "\u2B06\uFE0F", "\u2B07\uFE0F", "\u3030\uFE0F", "\u303D\uFE0F", "\u3297\uFE0F", "\u3299\uFE0F", "\uD83C\uDD70\uFE0F", "\uD83C\uDD71\uFE0F", "\uD83C\uDD7E\uFE0F", "\uD83C\uDD7F\uFE0F", "\uD83C\uDDE6\uD83C\uDDE8", "\uD83C\uDDE6\uD83C\uDDE9", "\uD83C\uDDE6\uD83C\uDDEA", "\uD83C\uDDE6\uD83C\uDDEB", "\uD83C\uDDE6\uD83C\uDDEC", "\uD83C\uDDE6\uD83C\uDDEE", "\uD83C\uDDE6\uD83C\uDDF1", "\uD83C\uDDE6\uD83C\uDDF2", "\uD83C\uDDE6\uD83C\uDDF4", "\uD83C\uDDE6\uD83C\uDDF6", "\uD83C\uDDE6\uD83C\uDDF7", "\uD83C\uDDE6\uD83C\uDDF8", "\uD83C\uDDE6\uD83C\uDDF9", "\uD83C\uDDE6\uD83C\uDDFA", "\uD83C\uDDE6\uD83C\uDDFC", "\uD83C\uDDE6\uD83C\uDDFD", "\uD83C\uDDE6\uD83C\uDDFF", "\uD83C\uDDE7\uD83C\uDDE6", "\uD83C\uDDE7\uD83C\uDDE7", "\uD83C\uDDE7\uD83C\uDDE9", "\uD83C\uDDE7\uD83C\uDDEA", "\uD83C\uDDE7\uD83C\uDDEB", "\uD83C\uDDE7\uD83C\uDDEC", "\uD83C\uDDE7\uD83C\uDDED", "\uD83C\uDDE7\uD83C\uDDEE", "\uD83C\uDDE7\uD83C\uDDEF", "\uD83C\uDDE7\uD83C\uDDF1", "\uD83C\uDDE7\uD83C\uDDF2", "\uD83C\uDDE7\uD83C\uDDF3", "\uD83C\uDDE7\uD83C\uDDF4", "\uD83C\uDDE7\uD83C\uDDF6", "\uD83C\uDDE7\uD83C\uDDF7", "\uD83C\uDDE7\uD83C\uDDF8", "\uD83C\uDDE7\uD83C\uDDF9", "\uD83C\uDDE7\uD83C\uDDFB", "\uD83C\uDDE7\uD83C\uDDFC", "\uD83C\uDDE7\uD83C\uDDFE", "\uD83C\uDDE7\uD83C\uDDFF", "\uD83C\uDDE8\uD83C\uDDE6", "\uD83C\uDDE8\uD83C\uDDE8", "\uD83C\uDDE8\uD83C\uDDE9", "\uD83C\uDDE8\uD83C\uDDEB", "\uD83C\uDDE8\uD83C\uDDEC", "\uD83C\uDDE8\uD83C\uDDED", "\uD83C\uDDE8\uD83C\uDDEE", "\uD83C\uDDE8\uD83C\uDDF0", "\uD83C\uDDE8\uD83C\uDDF1", "\uD83C\uDDE8\uD83C\uDDF2", "\uD83C\uDDE8\uD83C\uDDF3", "\uD83C\uDDE8\uD83C\uDDF4", "\uD83C\uDDE8\uD83C\uDDF5", "\uD83C\uDDE8\uD83C\uDDF7", "\uD83C\uDDE8\uD83C\uDDFA", "\uD83C\uDDE8\uD83C\uDDFB", "\uD83C\uDDE8\uD83C\uDDFC", "\uD83C\uDDE8\uD83C\uDDFD", "\uD83C\uDDE8\uD83C\uDDFE", "\uD83C\uDDE8\uD83C\uDDFF", "\uD83C\uDDE9\uD83C\uDDEA", "\uD83C\uDDE9\uD83C\uDDEC", "\uD83C\uDDE9\uD83C\uDDEF", "\uD83C\uDDE9\uD83C\uDDF0", "\uD83C\uDDE9\uD83C\uDDF2", "\uD83C\uDDE9\uD83C\uDDF4", "\uD83C\uDDE9\uD83C\uDDFF", "\uD83C\uDDEA\uD83C\uDDE6", "\uD83C\uDDEA\uD83C\uDDE8", "\uD83C\uDDEA\uD83C\uDDEA", "\uD83C\uDDEA\uD83C\uDDEC", "\uD83C\uDDEA\uD83C\uDDED", "\uD83C\uDDEA\uD83C\uDDF7", "\uD83C\uDDEA\uD83C\uDDF8", "\uD83C\uDDEA\uD83C\uDDF9", "\uD83C\uDDEA\uD83C\uDDFA", "\uD83C\uDDEB\uD83C\uDDEE", "\uD83C\uDDEB\uD83C\uDDEF", "\uD83C\uDDEB\uD83C\uDDF0", "\uD83C\uDDEB\uD83C\uDDF2", "\uD83C\uDDEB\uD83C\uDDF4", "\uD83C\uDDEB\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDE6", "\uD83C\uDDEC\uD83C\uDDE7", "\uD83C\uDDEC\uD83C\uDDE9", "\uD83C\uDDEC\uD83C\uDDEA", "\uD83C\uDDEC\uD83C\uDDEB", "\uD83C\uDDEC\uD83C\uDDEC", "\uD83C\uDDEC\uD83C\uDDED", "\uD83C\uDDEC\uD83C\uDDEE", "\uD83C\uDDEC\uD83C\uDDF1", "\uD83C\uDDEC\uD83C\uDDF2", "\uD83C\uDDEC\uD83C\uDDF3", "\uD83C\uDDEC\uD83C\uDDF5", "\uD83C\uDDEC\uD83C\uDDF6", "\uD83C\uDDEC\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDF8", "\uD83C\uDDEC\uD83C\uDDF9", "\uD83C\uDDEC\uD83C\uDDFA", "\uD83C\uDDEC\uD83C\uDDFC", "\uD83C\uDDEC\uD83C\uDDFE", "\uD83C\uDDED\uD83C\uDDF0", "\uD83C\uDDED\uD83C\uDDF2", "\uD83C\uDDED\uD83C\uDDF3", "\uD83C\uDDED\uD83C\uDDF7", "\uD83C\uDDED\uD83C\uDDF9", "\uD83C\uDDED\uD83C\uDDFA", "\uD83C\uDDEE\uD83C\uDDE8", "\uD83C\uDDEE\uD83C\uDDE9", "\uD83C\uDDEE\uD83C\uDDEA", "\uD83C\uDDEE\uD83C\uDDF1", "\uD83C\uDDEE\uD83C\uDDF2", "\uD83C\uDDEE\uD83C\uDDF3", "\uD83C\uDDEE\uD83C\uDDF4", "\uD83C\uDDEE\uD83C\uDDF6", "\uD83C\uDDEE\uD83C\uDDF7", "\uD83C\uDDEE\uD83C\uDDF8", "\uD83C\uDDEE\uD83C\uDDF9", "\uD83C\uDDEF\uD83C\uDDEA", "\uD83C\uDDEF\uD83C\uDDF2", "\uD83C\uDDEF\uD83C\uDDF4", "\uD83C\uDDEF\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDEA", "\uD83C\uDDF0\uD83C\uDDEC", "\uD83C\uDDF0\uD83C\uDDED", "\uD83C\uDDF0\uD83C\uDDEE", "\uD83C\uDDF0\uD83C\uDDF2", "\uD83C\uDDF0\uD83C\uDDF3", "\uD83C\uDDF0\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDF7", "\uD83C\uDDF0\uD83C\uDDFC", "\uD83C\uDDF0\uD83C\uDDFE", "\uD83C\uDDF0\uD83C\uDDFF", "\uD83C\uDDF1\uD83C\uDDE6", "\uD83C\uDDF1\uD83C\uDDE7", "\uD83C\uDDF1\uD83C\uDDE8", "\uD83C\uDDF1\uD83C\uDDEE", "\uD83C\uDDF1\uD83C\uDDF0", "\uD83C\uDDF1\uD83C\uDDF7", "\uD83C\uDDF1\uD83C\uDDF8", "\uD83C\uDDF1\uD83C\uDDF9", "\uD83C\uDDF1\uD83C\uDDFA", "\uD83C\uDDF1\uD83C\uDDFB", "\uD83C\uDDF1\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDE6", "\uD83C\uDDF2\uD83C\uDDE8", "\uD83C\uDDF2\uD83C\uDDE9", "\uD83C\uDDF2\uD83C\uDDEA", "\uD83C\uDDF2\uD83C\uDDEB", "\uD83C\uDDF2\uD83C\uDDEC", "\uD83C\uDDF2\uD83C\uDDED", "\uD83C\uDDF2\uD83C\uDDF0", "\uD83C\uDDF2\uD83C\uDDF1", "\uD83C\uDDF2\uD83C\uDDF2", "\uD83C\uDDF2\uD83C\uDDF3", "\uD83C\uDDF2\uD83C\uDDF4", "\uD83C\uDDF2\uD83C\uDDF5", "\uD83C\uDDF2\uD83C\uDDF6", "\uD83C\uDDF2\uD83C\uDDF7", "\uD83C\uDDF2\uD83C\uDDF8", "\uD83C\uDDF2\uD83C\uDDF9", "\uD83C\uDDF2\uD83C\uDDFA", "\uD83C\uDDF2\uD83C\uDDFB", "\uD83C\uDDF2\uD83C\uDDFC", "\uD83C\uDDF2\uD83C\uDDFD", "\uD83C\uDDF2\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDFF", "\uD83C\uDDF3\uD83C\uDDE6", "\uD83C\uDDF3\uD83C\uDDE8", "\uD83C\uDDF3\uD83C\uDDEA", "\uD83C\uDDF3\uD83C\uDDEB", "\uD83C\uDDF3\uD83C\uDDEC", "\uD83C\uDDF3\uD83C\uDDEE", "\uD83C\uDDF3\uD83C\uDDF1", "\uD83C\uDDF3\uD83C\uDDF4", "\uD83C\uDDF3\uD83C\uDDF5", "\uD83C\uDDF3\uD83C\uDDF7", "\uD83C\uDDF3\uD83C\uDDFA", "\uD83C\uDDF3\uD83C\uDDFF", "\uD83C\uDDF4\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDE6", "\uD83C\uDDF5\uD83C\uDDEA", "\uD83C\uDDF5\uD83C\uDDEB", "\uD83C\uDDF5\uD83C\uDDEC", "\uD83C\uDDF5\uD83C\uDDED", "\uD83C\uDDF5\uD83C\uDDF0", "\uD83C\uDDF5\uD83C\uDDF1", "\uD83C\uDDF5\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDF3", "\uD83C\uDDF5\uD83C\uDDF7", "\uD83C\uDDF5\uD83C\uDDF8", "\uD83C\uDDF5\uD83C\uDDF9", "\uD83C\uDDF5\uD83C\uDDFC", "\uD83C\uDDF5\uD83C\uDDFE", "\uD83C\uDDF6\uD83C\uDDE6", "\uD83C\uDDF7\uD83C\uDDEA", "\uD83C\uDDF7\uD83C\uDDF4", "\uD83C\uDDF7\uD83C\uDDF8", "\uD83C\uDDF7\uD83C\uDDFA", "\uD83C\uDDF7\uD83C\uDDFC", "\uD83C\uDDF8\uD83C\uDDE6", "\uD83C\uDDF8\uD83C\uDDE7", "\uD83C\uDDF8\uD83C\uDDE8", "\uD83C\uDDF8\uD83C\uDDE9", "\uD83C\uDDF8\uD83C\uDDEA", "\uD83C\uDDF8\uD83C\uDDEC", "\uD83C\uDDF8\uD83C\uDDED", "\uD83C\uDDF8\uD83C\uDDEE", "\uD83C\uDDF8\uD83C\uDDEF", "\uD83C\uDDF8\uD83C\uDDF0", "\uD83C\uDDF8\uD83C\uDDF1", "\uD83C\uDDF8\uD83C\uDDF2", "\uD83C\uDDF8\uD83C\uDDF3", "\uD83C\uDDF8\uD83C\uDDF4", "\uD83C\uDDF8\uD83C\uDDF7", "\uD83C\uDDF8\uD83C\uDDF8", "\uD83C\uDDF8\uD83C\uDDF9", "\uD83C\uDDF8\uD83C\uDDFB", "\uD83C\uDDF8\uD83C\uDDFD", "\uD83C\uDDF8\uD83C\uDDFE", "\uD83C\uDDF8\uD83C\uDDFF", "\uD83C\uDDF9\uD83C\uDDE6", "\uD83C\uDDF9\uD83C\uDDE8", "\uD83C\uDDF9\uD83C\uDDE9", "\uD83C\uDDF9\uD83C\uDDEB", "\uD83C\uDDF9\uD83C\uDDEC", "\uD83C\uDDF9\uD83C\uDDED", "\uD83C\uDDF9\uD83C\uDDEF", "\uD83C\uDDF9\uD83C\uDDF0", "\uD83C\uDDF9\uD83C\uDDF1", "\uD83C\uDDF9\uD83C\uDDF2", "\uD83C\uDDF9\uD83C\uDDF3", "\uD83C\uDDF9\uD83C\uDDF4", "\uD83C\uDDF9\uD83C\uDDF7", "\uD83C\uDDF9\uD83C\uDDF9", "\uD83C\uDDF9\uD83C\uDDFB", "\uD83C\uDDF9\uD83C\uDDFC", "\uD83C\uDDF9\uD83C\uDDFF", "\uD83C\uDDFA\uD83C\uDDE6", "\uD83C\uDDFA\uD83C\uDDEC", "\uD83C\uDDFA\uD83C\uDDF2", "\uD83C\uDDFA\uD83C\uDDF3", "\uD83C\uDDFA\uD83C\uDDF8", "\uD83C\uDDFA\uD83C\uDDFE", "\uD83C\uDDFA\uD83C\uDDFF", "\uD83C\uDDFB\uD83C\uDDE6", "\uD83C\uDDFB\uD83C\uDDE8", "\uD83C\uDDFB\uD83C\uDDEA", "\uD83C\uDDFB\uD83C\uDDEC", "\uD83C\uDDFB\uD83C\uDDEE", "\uD83C\uDDFB\uD83C\uDDF3", "\uD83C\uDDFB\uD83C\uDDFA", "\uD83C\uDDFC\uD83C\uDDEB", "\uD83C\uDDFC\uD83C\uDDF8", "\uD83C\uDDFD\uD83C\uDDF0", "\uD83C\uDDFE\uD83C\uDDEA", "\uD83C\uDDFE\uD83C\uDDF9", "\uD83C\uDDFF\uD83C\uDDE6", "\uD83C\uDDFF\uD83C\uDDF2", "\uD83C\uDDFF\uD83C\uDDFC", "\uD83C\uDE02\uFE0F", "\uD83C\uDE37\uFE0F", "\uD83C\uDF21\uFE0F", "\uD83C\uDF24\uFE0F", "\uD83C\uDF25\uFE0F", "\uD83C\uDF26\uFE0F", "\uD83C\uDF27\uFE0F", "\uD83C\uDF28\uFE0F", "\uD83C\uDF29\uFE0F", "\uD83C\uDF2A\uFE0F", "\uD83C\uDF2B\uFE0F", "\uD83C\uDF2C\uFE0F", "\uD83C\uDF36\uFE0F", "\uD83C\uDF44\u200D\uD83D\uDFEB", "\uD83C\uDF4B\u200D\uD83D\uDFE9", "\uD83C\uDF7D\uFE0F", "\uD83C\uDF85\uD83C\uDFFB", "\uD83C\uDF85\uD83C\uDFFC", "\uD83C\uDF85\uD83C\uDFFD", "\uD83C\uDF85\uD83C\uDFFE", "\uD83C\uDF85\uD83C\uDFFF", "\uD83C\uDF96\uFE0F", "\uD83C\uDF97\uFE0F", "\uD83C\uDF99\uFE0F", "\uD83C\uDF9A\uFE0F", "\uD83C\uDF9B\uFE0F", "\uD83C\uDF9E\uFE0F", "\uD83C\uDF9F\uFE0F", "\uD83C\uDFC2\uD83C\uDFFB", "\uD83C\uDFC2\uD83C\uDFFC", "\uD83C\uDFC2\uD83C\uDFFD", "\uD83C\uDFC2\uD83C\uDFFE", "\uD83C\uDFC2\uD83C\uDFFF", "\uD83C\uDFC3\u200D\u2640\uFE0F", "\uD83C\uDFC3\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83C\uDFC4\u200D\u2640\uFE0F", "\uD83C\uDFC4\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC7\uD83C\uDFFB", "\uD83C\uDFC7\uD83C\uDFFC", "\uD83C\uDFC7\uD83C\uDFFD", "\uD83C\uDFC7\uD83C\uDFFE", "\uD83C\uDFC7\uD83C\uDFFF", "\uD83C\uDFCA\u200D\u2640\uFE0F", "\uD83C\uDFCA\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCC\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCD\uFE0F", "\uD83C\uDFCE\uFE0F", "\uD83C\uDFD4\uFE0F", "\uD83C\uDFD5\uFE0F", "\uD83C\uDFD6\uFE0F", "\uD83C\uDFD7\uFE0F", "\uD83C\uDFD8\uFE0F", "\uD83C\uDFD9\uFE0F", "\uD83C\uDFDA\uFE0F", "\uD83C\uDFDB\uFE0F", "\uD83C\uDFDC\uFE0F", "\uD83C\uDFDD\uFE0F", "\uD83C\uDFDE\uFE0F", "\uD83C\uDFDF\uFE0F", "\uD83C\uDFF3\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08", "\uD83C\uDFF4\u200D\u2620\uFE0F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F", "\uD83C\uDFF5\uFE0F", "\uD83C\uDFF7\uFE0F", "\uD83D\uDC08\u200D\u2B1B", "\uD83D\uDC15\u200D\uD83E\uDDBA", "\uD83D\uDC26\u200D\u2B1B", "\uD83D\uDC26\u200D\uD83D\uDD25", "\uD83D\uDC3B\u200D\u2744\uFE0F", "\uD83D\uDC3F\uFE0F", "\uD83D\uDC41\uFE0F", "\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8\uFE0F", "\uD83D\uDC42\uD83C\uDFFB", "\uD83D\uDC42\uD83C\uDFFC", "\uD83D\uDC42\uD83C\uDFFD", "\uD83D\uDC42\uD83C\uDFFE", "\uD83D\uDC42\uD83C\uDFFF", "\uD83D\uDC43\uD83C\uDFFB", "\uD83D\uDC43\uD83C\uDFFC", "\uD83D\uDC43\uD83C\uDFFD", "\uD83D\uDC43\uD83C\uDFFE", "\uD83D\uDC43\uD83C\uDFFF", "\uD83D\uDC46\uD83C\uDFFB", "\uD83D\uDC46\uD83C\uDFFC", "\uD83D\uDC46\uD83C\uDFFD", "\uD83D\uDC46\uD83C\uDFFE", "\uD83D\uDC46\uD83C\uDFFF", "\uD83D\uDC47\uD83C\uDFFB", "\uD83D\uDC47\uD83C\uDFFC", "\uD83D\uDC47\uD83C\uDFFD", "\uD83D\uDC47\uD83C\uDFFE", "\uD83D\uDC47\uD83C\uDFFF", "\uD83D\uDC48\uD83C\uDFFB", "\uD83D\uDC48\uD83C\uDFFC", "\uD83D\uDC48\uD83C\uDFFD", "\uD83D\uDC48\uD83C\uDFFE", "\uD83D\uDC48\uD83C\uDFFF", "\uD83D\uDC49\uD83C\uDFFB", "\uD83D\uDC49\uD83C\uDFFC", "\uD83D\uDC49\uD83C\uDFFD", "\uD83D\uDC49\uD83C\uDFFE", "\uD83D\uDC49\uD83C\uDFFF", "\uD83D\uDC4A\uD83C\uDFFB", "\uD83D\uDC4A\uD83C\uDFFC", "\uD83D\uDC4A\uD83C\uDFFD", "\uD83D\uDC4A\uD83C\uDFFE", "\uD83D\uDC4A\uD83C\uDFFF", "\uD83D\uDC4B\uD83C\uDFFB", "\uD83D\uDC4B\uD83C\uDFFC", "\uD83D\uDC4B\uD83C\uDFFD", "\uD83D\uDC4B\uD83C\uDFFE", "\uD83D\uDC4B\uD83C\uDFFF", "\uD83D\uDC4C\uD83C\uDFFB", "\uD83D\uDC4C\uD83C\uDFFC", "\uD83D\uDC4C\uD83C\uDFFD", "\uD83D\uDC4C\uD83C\uDFFE", "\uD83D\uDC4C\uD83C\uDFFF", "\uD83D\uDC4D\uD83C\uDFFB", "\uD83D\uDC4D\uD83C\uDFFC", "\uD83D\uDC4D\uD83C\uDFFD", "\uD83D\uDC4D\uD83C\uDFFE", "\uD83D\uDC4D\uD83C\uDFFF", "\uD83D\uDC4E\uD83C\uDFFB", "\uD83D\uDC4E\uD83C\uDFFC", "\uD83D\uDC4E\uD83C\uDFFD", "\uD83D\uDC4E\uD83C\uDFFE", "\uD83D\uDC4E\uD83C\uDFFF", "\uD83D\uDC4F\uD83C\uDFFB", "\uD83D\uDC4F\uD83C\uDFFC", "\uD83D\uDC4F\uD83C\uDFFD", "\uD83D\uDC4F\uD83C\uDFFE", "\uD83D\uDC4F\uD83C\uDFFF", "\uD83D\uDC50\uD83C\uDFFB", "\uD83D\uDC50\uD83C\uDFFC", "\uD83D\uDC50\uD83C\uDFFD", "\uD83D\uDC50\uD83C\uDFFE", "\uD83D\uDC50\uD83C\uDFFF", "\uD83D\uDC66\uD83C\uDFFB", "\uD83D\uDC66\uD83C\uDFFC", "\uD83D\uDC66\uD83C\uDFFD", "\uD83D\uDC66\uD83C\uDFFE", "\uD83D\uDC66\uD83C\uDFFF", "\uD83D\uDC67\uD83C\uDFFB", "\uD83D\uDC67\uD83C\uDFFC", "\uD83D\uDC67\uD83C\uDFFD", "\uD83D\uDC67\uD83C\uDFFE", "\uD83D\uDC67\uD83C\uDFFF", "\uD83D\uDC68\u200D\u2695\uFE0F", "\uD83D\uDC68\u200D\u2696\uFE0F", "\uD83D\uDC68\u200D\u2708\uFE0F", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\uD83C\uDF3E", "\uD83D\uDC68\u200D\uD83C\uDF73", "\uD83D\uDC68\u200D\uD83C\uDF7C", "\uD83D\uDC68\u200D\uD83C\uDF93", "\uD83D\uDC68\u200D\uD83C\uDFA4", "\uD83D\uDC68\u200D\uD83C\uDFA8", "\uD83D\uDC68\u200D\uD83C\uDFEB", "\uD83D\uDC68\u200D\uD83C\uDFED", "\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDCBB", "\uD83D\uDC68\u200D\uD83D\uDCBC", "\uD83D\uDC68\u200D\uD83D\uDD27", "\uD83D\uDC68\u200D\uD83D\uDD2C", "\uD83D\uDC68\u200D\uD83D\uDE80", "\uD83D\uDC68\u200D\uD83D\uDE92", "\uD83D\uDC68\u200D\uD83E\uDDAF", "\uD83D\uDC68\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDB0", "\uD83D\uDC68\u200D\uD83E\uDDB1", "\uD83D\uDC68\u200D\uD83E\uDDB2", "\uD83D\uDC68\u200D\uD83E\uDDB3", "\uD83D\uDC68\u200D\uD83E\uDDBC", "\uD83D\uDC68\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDBD", "\uD83D\uDC68\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\u2695\uFE0F", "\uD83D\uDC69\u200D\u2696\uFE0F", "\uD83D\uDC69\u200D\u2708\uFE0F", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\uD83C\uDF3E", "\uD83D\uDC69\u200D\uD83C\uDF73", "\uD83D\uDC69\u200D\uD83C\uDF7C", "\uD83D\uDC69\u200D\uD83C\uDF93", "\uD83D\uDC69\u200D\uD83C\uDFA4", "\uD83D\uDC69\u200D\uD83C\uDFA8", "\uD83D\uDC69\u200D\uD83C\uDFEB", "\uD83D\uDC69\u200D\uD83C\uDFED", "\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDCBB", "\uD83D\uDC69\u200D\uD83D\uDCBC", "\uD83D\uDC69\u200D\uD83D\uDD27", "\uD83D\uDC69\u200D\uD83D\uDD2C", "\uD83D\uDC69\u200D\uD83D\uDE80", "\uD83D\uDC69\u200D\uD83D\uDE92", "\uD83D\uDC69\u200D\uD83E\uDDAF", "\uD83D\uDC69\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\uD83E\uDDB0", "\uD83D\uDC69\u200D\uD83E\uDDB1", "\uD83D\uDC69\u200D\uD83E\uDDB2", "\uD83D\uDC69\u200D\uD83E\uDDB3", "\uD83D\uDC69\u200D\uD83E\uDDBC", "\uD83D\uDC69\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\u200D\uD83E\uDDBD", "\uD83D\uDC69\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83D\uDC6B\uD83C\uDFFB", "\uD83D\uDC6B\uD83C\uDFFC", "\uD83D\uDC6B\uD83C\uDFFD", "\uD83D\uDC6B\uD83C\uDFFE", "\uD83D\uDC6B\uD83C\uDFFF", "\uD83D\uDC6C\uD83C\uDFFB", "\uD83D\uDC6C\uD83C\uDFFC", "\uD83D\uDC6C\uD83C\uDFFD", "\uD83D\uDC6C\uD83C\uDFFE", "\uD83D\uDC6C\uD83C\uDFFF", "\uD83D\uDC6D\uD83C\uDFFB", "\uD83D\uDC6D\uD83C\uDFFC", "\uD83D\uDC6D\uD83C\uDFFD", "\uD83D\uDC6D\uD83C\uDFFE", "\uD83D\uDC6D\uD83C\uDFFF", "\uD83D\uDC6E\u200D\u2640\uFE0F", "\uD83D\uDC6E\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC6F\u200D\u2640\uFE0F", "\uD83D\uDC6F\u200D\u2642\uFE0F", "\uD83D\uDC70\u200D\u2640\uFE0F", "\uD83D\uDC70\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFB", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFC", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFD", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFE", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFF", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC71\u200D\u2640\uFE0F", "\uD83D\uDC71\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFB", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFC", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFD", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFE", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFF", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC72\uD83C\uDFFB", "\uD83D\uDC72\uD83C\uDFFC", "\uD83D\uDC72\uD83C\uDFFD", "\uD83D\uDC72\uD83C\uDFFE", "\uD83D\uDC72\uD83C\uDFFF", "\uD83D\uDC73\u200D\u2640\uFE0F", "\uD83D\uDC73\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFB", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFC", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFD", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFE", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFF", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC74\uD83C\uDFFB", "\uD83D\uDC74\uD83C\uDFFC", "\uD83D\uDC74\uD83C\uDFFD", "\uD83D\uDC74\uD83C\uDFFE", "\uD83D\uDC74\uD83C\uDFFF", "\uD83D\uDC75\uD83C\uDFFB", "\uD83D\uDC75\uD83C\uDFFC", "\uD83D\uDC75\uD83C\uDFFD", "\uD83D\uDC75\uD83C\uDFFE", "\uD83D\uDC75\uD83C\uDFFF", "\uD83D\uDC76\uD83C\uDFFB", "\uD83D\uDC76\uD83C\uDFFC", "\uD83D\uDC76\uD83C\uDFFD", "\uD83D\uDC76\uD83C\uDFFE", "\uD83D\uDC76\uD83C\uDFFF", "\uD83D\uDC77\u200D\u2640\uFE0F", "\uD83D\uDC77\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFB", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFC", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFD", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFE", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFF", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC78\uD83C\uDFFB", "\uD83D\uDC78\uD83C\uDFFC", "\uD83D\uDC78\uD83C\uDFFD", "\uD83D\uDC78\uD83C\uDFFE", "\uD83D\uDC78\uD83C\uDFFF", "\uD83D\uDC7C\uD83C\uDFFB", "\uD83D\uDC7C\uD83C\uDFFC", "\uD83D\uDC7C\uD83C\uDFFD", "\uD83D\uDC7C\uD83C\uDFFE", "\uD83D\uDC7C\uD83C\uDFFF", "\uD83D\uDC81\u200D\u2640\uFE0F", "\uD83D\uDC81\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFB", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFC", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFD", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFE", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFF", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC82\u200D\u2640\uFE0F", "\uD83D\uDC82\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFB", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFC", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFD", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFE", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFF", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC83\uD83C\uDFFB", "\uD83D\uDC83\uD83C\uDFFC", "\uD83D\uDC83\uD83C\uDFFD", "\uD83D\uDC83\uD83C\uDFFE", "\uD83D\uDC83\uD83C\uDFFF", "\uD83D\uDC85\uD83C\uDFFB", "\uD83D\uDC85\uD83C\uDFFC", "\uD83D\uDC85\uD83C\uDFFD", "\uD83D\uDC85\uD83C\uDFFE", "\uD83D\uDC85\uD83C\uDFFF", "\uD83D\uDC86\u200D\u2640\uFE0F", "\uD83D\uDC86\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFB", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFC", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFD", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFE", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFF", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC87\u200D\u2640\uFE0F", "\uD83D\uDC87\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFB", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFC", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFD", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFE", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFF", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC8F\uD83C\uDFFB", "\uD83D\uDC8F\uD83C\uDFFC", "\uD83D\uDC8F\uD83C\uDFFD", "\uD83D\uDC8F\uD83C\uDFFE", "\uD83D\uDC8F\uD83C\uDFFF", "\uD83D\uDC91\uD83C\uDFFB", "\uD83D\uDC91\uD83C\uDFFC", "\uD83D\uDC91\uD83C\uDFFD", "\uD83D\uDC91\uD83C\uDFFE", "\uD83D\uDC91\uD83C\uDFFF", "\uD83D\uDCAA\uD83C\uDFFB", "\uD83D\uDCAA\uD83C\uDFFC", "\uD83D\uDCAA\uD83C\uDFFD", "\uD83D\uDCAA\uD83C\uDFFE", "\uD83D\uDCAA\uD83C\uDFFF", "\uD83D\uDCFD\uFE0F", "\uD83D\uDD49\uFE0F", "\uD83D\uDD4A\uFE0F", "\uD83D\uDD6F\uFE0F", "\uD83D\uDD70\uFE0F", "\uD83D\uDD73\uFE0F", "\uD83D\uDD74\uD83C\uDFFB", "\uD83D\uDD74\uD83C\uDFFC", "\uD83D\uDD74\uD83C\uDFFD", "\uD83D\uDD74\uD83C\uDFFE", "\uD83D\uDD74\uD83C\uDFFF", "\uD83D\uDD74\uFE0F", "\uD83D\uDD75\uD83C\uDFFB", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFC", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFD", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFE", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFF", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2640\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDD76\uFE0F", "\uD83D\uDD77\uFE0F", "\uD83D\uDD78\uFE0F", "\uD83D\uDD79\uFE0F", "\uD83D\uDD7A\uD83C\uDFFB", "\uD83D\uDD7A\uD83C\uDFFC", "\uD83D\uDD7A\uD83C\uDFFD", "\uD83D\uDD7A\uD83C\uDFFE", "\uD83D\uDD7A\uD83C\uDFFF", "\uD83D\uDD87\uFE0F", "\uD83D\uDD8A\uFE0F", "\uD83D\uDD8B\uFE0F", "\uD83D\uDD8C\uFE0F", "\uD83D\uDD8D\uFE0F", "\uD83D\uDD90\uD83C\uDFFB", "\uD83D\uDD90\uD83C\uDFFC", "\uD83D\uDD90\uD83C\uDFFD", "\uD83D\uDD90\uD83C\uDFFE", "\uD83D\uDD90\uD83C\uDFFF", "\uD83D\uDD90\uFE0F", "\uD83D\uDD95\uD83C\uDFFB", "\uD83D\uDD95\uD83C\uDFFC", "\uD83D\uDD95\uD83C\uDFFD", "\uD83D\uDD95\uD83C\uDFFE", "\uD83D\uDD95\uD83C\uDFFF", "\uD83D\uDD96\uD83C\uDFFB", "\uD83D\uDD96\uD83C\uDFFC", "\uD83D\uDD96\uD83C\uDFFD", "\uD83D\uDD96\uD83C\uDFFE", "\uD83D\uDD96\uD83C\uDFFF", "\uD83D\uDDA5\uFE0F", "\uD83D\uDDA8\uFE0F", "\uD83D\uDDB1\uFE0F", "\uD83D\uDDB2\uFE0F", "\uD83D\uDDBC\uFE0F", "\uD83D\uDDC2\uFE0F", "\uD83D\uDDC3\uFE0F", "\uD83D\uDDC4\uFE0F", "\uD83D\uDDD1\uFE0F", "\uD83D\uDDD2\uFE0F", "\uD83D\uDDD3\uFE0F", "\uD83D\uDDDC\uFE0F", "\uD83D\uDDDD\uFE0F", "\uD83D\uDDDE\uFE0F", "\uD83D\uDDE1\uFE0F", "\uD83D\uDDE3\uFE0F", "\uD83D\uDDE8\uFE0F", "\uD83D\uDDEF\uFE0F", "\uD83D\uDDF3\uFE0F", "\uD83D\uDDFA\uFE0F", "\uD83D\uDE2E\u200D\uD83D\uDCA8", "\uD83D\uDE35\u200D\uD83D\uDCAB", "\uD83D\uDE36\u200D\uD83C\uDF2B\uFE0F", "\uD83D\uDE42\u200D\u2194\uFE0F", "\uD83D\uDE42\u200D\u2195\uFE0F", "\uD83D\uDE45\u200D\u2640\uFE0F", "\uD83D\uDE45\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFB", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFC", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFD", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFE", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFF", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE46\u200D\u2640\uFE0F", "\uD83D\uDE46\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFB", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFC", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFD", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFE", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFF", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE47\u200D\u2640\uFE0F", "\uD83D\uDE47\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFB", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFC", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFD", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFE", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFF", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4B\u200D\u2640\uFE0F", "\uD83D\uDE4B\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4C\uD83C\uDFFB", "\uD83D\uDE4C\uD83C\uDFFC", "\uD83D\uDE4C\uD83C\uDFFD", "\uD83D\uDE4C\uD83C\uDFFE", "\uD83D\uDE4C\uD83C\uDFFF", "\uD83D\uDE4D\u200D\u2640\uFE0F", "\uD83D\uDE4D\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4E\u200D\u2640\uFE0F", "\uD83D\uDE4E\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4F\uD83C\uDFFB", "\uD83D\uDE4F\uD83C\uDFFC", "\uD83D\uDE4F\uD83C\uDFFD", "\uD83D\uDE4F\uD83C\uDFFE", "\uD83D\uDE4F\uD83C\uDFFF", "\uD83D\uDEA3\u200D\u2640\uFE0F", "\uD83D\uDEA3\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB4\u200D\u2640\uFE0F", "\uD83D\uDEB4\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB5\u200D\u2640\uFE0F", "\uD83D\uDEB5\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83D\uDEC0\uD83C\uDFFB", "\uD83D\uDEC0\uD83C\uDFFC", "\uD83D\uDEC0\uD83C\uDFFD", "\uD83D\uDEC0\uD83C\uDFFE", "\uD83D\uDEC0\uD83C\uDFFF", "\uD83D\uDECB\uFE0F", "\uD83D\uDECC\uD83C\uDFFB", "\uD83D\uDECC\uD83C\uDFFC", "\uD83D\uDECC\uD83C\uDFFD", "\uD83D\uDECC\uD83C\uDFFE", "\uD83D\uDECC\uD83C\uDFFF", "\uD83D\uDECD\uFE0F", "\uD83D\uDECE\uFE0F", "\uD83D\uDECF\uFE0F", "\uD83D\uDEE0\uFE0F", "\uD83D\uDEE1\uFE0F", "\uD83D\uDEE2\uFE0F", "\uD83D\uDEE3\uFE0F", "\uD83D\uDEE4\uFE0F", "\uD83D\uDEE5\uFE0F", "\uD83D\uDEE9\uFE0F", "\uD83D\uDEF0\uFE0F", "\uD83D\uDEF3\uFE0F", "\uD83E\uDD0C\uD83C\uDFFB", "\uD83E\uDD0C\uD83C\uDFFC", "\uD83E\uDD0C\uD83C\uDFFD", "\uD83E\uDD0C\uD83C\uDFFE", "\uD83E\uDD0C\uD83C\uDFFF", "\uD83E\uDD0F\uD83C\uDFFB", "\uD83E\uDD0F\uD83C\uDFFC", "\uD83E\uDD0F\uD83C\uDFFD", "\uD83E\uDD0F\uD83C\uDFFE", "\uD83E\uDD0F\uD83C\uDFFF", "\uD83E\uDD18\uD83C\uDFFB", "\uD83E\uDD18\uD83C\uDFFC", "\uD83E\uDD18\uD83C\uDFFD", "\uD83E\uDD18\uD83C\uDFFE", "\uD83E\uDD18\uD83C\uDFFF", "\uD83E\uDD19\uD83C\uDFFB", "\uD83E\uDD19\uD83C\uDFFC", "\uD83E\uDD19\uD83C\uDFFD", "\uD83E\uDD19\uD83C\uDFFE", "\uD83E\uDD19\uD83C\uDFFF", "\uD83E\uDD1A\uD83C\uDFFB", "\uD83E\uDD1A\uD83C\uDFFC", "\uD83E\uDD1A\uD83C\uDFFD", "\uD83E\uDD1A\uD83C\uDFFE", "\uD83E\uDD1A\uD83C\uDFFF", "\uD83E\uDD1B\uD83C\uDFFB", "\uD83E\uDD1B\uD83C\uDFFC", "\uD83E\uDD1B\uD83C\uDFFD", "\uD83E\uDD1B\uD83C\uDFFE", "\uD83E\uDD1B\uD83C\uDFFF", "\uD83E\uDD1C\uD83C\uDFFB", "\uD83E\uDD1C\uD83C\uDFFC", "\uD83E\uDD1C\uD83C\uDFFD", "\uD83E\uDD1C\uD83C\uDFFE", "\uD83E\uDD1C\uD83C\uDFFF", "\uD83E\uDD1D\uD83C\uDFFB", "\uD83E\uDD1D\uD83C\uDFFC", "\uD83E\uDD1D\uD83C\uDFFD", "\uD83E\uDD1D\uD83C\uDFFE", "\uD83E\uDD1D\uD83C\uDFFF", "\uD83E\uDD1E\uD83C\uDFFB", "\uD83E\uDD1E\uD83C\uDFFC", "\uD83E\uDD1E\uD83C\uDFFD", "\uD83E\uDD1E\uD83C\uDFFE", "\uD83E\uDD1E\uD83C\uDFFF", "\uD83E\uDD1F\uD83C\uDFFB", "\uD83E\uDD1F\uD83C\uDFFC", "\uD83E\uDD1F\uD83C\uDFFD", "\uD83E\uDD1F\uD83C\uDFFE", "\uD83E\uDD1F\uD83C\uDFFF", "\uD83E\uDD26\u200D\u2640\uFE0F", "\uD83E\uDD26\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFB", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFC", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFD", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFE", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFF", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD30\uD83C\uDFFB", "\uD83E\uDD30\uD83C\uDFFC", "\uD83E\uDD30\uD83C\uDFFD", "\uD83E\uDD30\uD83C\uDFFE", "\uD83E\uDD30\uD83C\uDFFF", "\uD83E\uDD31\uD83C\uDFFB", "\uD83E\uDD31\uD83C\uDFFC", "\uD83E\uDD31\uD83C\uDFFD", "\uD83E\uDD31\uD83C\uDFFE", "\uD83E\uDD31\uD83C\uDFFF", "\uD83E\uDD32\uD83C\uDFFB", "\uD83E\uDD32\uD83C\uDFFC", "\uD83E\uDD32\uD83C\uDFFD", "\uD83E\uDD32\uD83C\uDFFE", "\uD83E\uDD32\uD83C\uDFFF", "\uD83E\uDD33\uD83C\uDFFB", "\uD83E\uDD33\uD83C\uDFFC", "\uD83E\uDD33\uD83C\uDFFD", "\uD83E\uDD33\uD83C\uDFFE", "\uD83E\uDD33\uD83C\uDFFF", "\uD83E\uDD34\uD83C\uDFFB", "\uD83E\uDD34\uD83C\uDFFC", "\uD83E\uDD34\uD83C\uDFFD", "\uD83E\uDD34\uD83C\uDFFE", "\uD83E\uDD34\uD83C\uDFFF", "\uD83E\uDD35\u200D\u2640\uFE0F", "\uD83E\uDD35\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFB", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFC", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFD", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFE", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFF", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD36\uD83C\uDFFB", "\uD83E\uDD36\uD83C\uDFFC", "\uD83E\uDD36\uD83C\uDFFD", "\uD83E\uDD36\uD83C\uDFFE", "\uD83E\uDD36\uD83C\uDFFF", "\uD83E\uDD37\u200D\u2640\uFE0F", "\uD83E\uDD37\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFB", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFC", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFD", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFE", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFF", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD38\u200D\u2640\uFE0F", "\uD83E\uDD38\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFB", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFC", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFD", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFE", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFF", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD39\u200D\u2640\uFE0F", "\uD83E\uDD39\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFB", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFC", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFD", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFE", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFF", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3C\u200D\u2640\uFE0F", "\uD83E\uDD3C\u200D\u2642\uFE0F", "\uD83E\uDD3D\u200D\u2640\uFE0F", "\uD83E\uDD3D\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3E\u200D\u2640\uFE0F", "\uD83E\uDD3E\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD77\uD83C\uDFFB", "\uD83E\uDD77\uD83C\uDFFC", "\uD83E\uDD77\uD83C\uDFFD", "\uD83E\uDD77\uD83C\uDFFE", "\uD83E\uDD77\uD83C\uDFFF", "\uD83E\uDDB5\uD83C\uDFFB", "\uD83E\uDDB5\uD83C\uDFFC", "\uD83E\uDDB5\uD83C\uDFFD", "\uD83E\uDDB5\uD83C\uDFFE", "\uD83E\uDDB5\uD83C\uDFFF", "\uD83E\uDDB6\uD83C\uDFFB", "\uD83E\uDDB6\uD83C\uDFFC", "\uD83E\uDDB6\uD83C\uDFFD", "\uD83E\uDDB6\uD83C\uDFFE", "\uD83E\uDDB6\uD83C\uDFFF", "\uD83E\uDDB8\u200D\u2640\uFE0F", "\uD83E\uDDB8\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB9\u200D\u2640\uFE0F", "\uD83E\uDDB9\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDBB\uD83C\uDFFB", "\uD83E\uDDBB\uD83C\uDFFC", "\uD83E\uDDBB\uD83C\uDFFD", "\uD83E\uDDBB\uD83C\uDFFE", "\uD83E\uDDBB\uD83C\uDFFF", "\uD83E\uDDCD\u200D\u2640\uFE0F", "\uD83E\uDDCD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F\u200D\u27A1\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u27A1\uFE0F", "\uD83E\uDDCF\u200D\u2640\uFE0F", "\uD83E\uDDCF\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD1\u200D\u2695\uFE0F", "\uD83E\uDDD1\u200D\u2696\uFE0F", "\uD83E\uDDD1\u200D\u2708\uFE0F", "\uD83E\uDDD1\u200D\uD83C\uDF3E", "\uD83E\uDDD1\u200D\uD83C\uDF73", "\uD83E\uDDD1\u200D\uD83C\uDF7C", "\uD83E\uDDD1\u200D\uD83C\uDF84", "\uD83E\uDDD1\u200D\uD83C\uDF93", "\uD83E\uDDD1\u200D\uD83C\uDFA4", "\uD83E\uDDD1\u200D\uD83C\uDFA8", "\uD83E\uDDD1\u200D\uD83C\uDFEB", "\uD83E\uDDD1\u200D\uD83C\uDFED", "\uD83E\uDDD1\u200D\uD83D\uDCBB", "\uD83E\uDDD1\u200D\uD83D\uDCBC", "\uD83E\uDDD1\u200D\uD83D\uDD27", "\uD83E\uDDD1\u200D\uD83D\uDD2C", "\uD83E\uDDD1\u200D\uD83D\uDE80", "\uD83E\uDDD1\u200D\uD83D\uDE92", "\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1", "\uD83E\uDDD1\u200D\uD83E\uDDAF", "\uD83E\uDDD1\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\uD83E\uDDB0", "\uD83E\uDDD1\u200D\uD83E\uDDB1", "\uD83E\uDDD1\u200D\uD83E\uDDB2", "\uD83E\uDDD1\u200D\uD83E\uDDB3", "\uD83E\uDDD1\u200D\uD83E\uDDBC", "\uD83E\uDDD1\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\uD83E\uDDBD", "\uD83E\uDDD1\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\u200D\uD83E\uDDD1\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD1\u200D\uD83E\uDDD2\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD2", "\uD83E\uDDD1\u200D\uD83E\uDDD2\u200D\uD83E\uDDD2", "\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC\u200D\u27A1\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD\u200D\u27A1\uFE0F", "\uD83E\uDDD2\uD83C\uDFFB", "\uD83E\uDDD2\uD83C\uDFFC", "\uD83E\uDDD2\uD83C\uDFFD", "\uD83E\uDDD2\uD83C\uDFFE", "\uD83E\uDDD2\uD83C\uDFFF", "\uD83E\uDDD3\uD83C\uDFFB", "\uD83E\uDDD3\uD83C\uDFFC", "\uD83E\uDDD3\uD83C\uDFFD", "\uD83E\uDDD3\uD83C\uDFFE", "\uD83E\uDDD3\uD83C\uDFFF", "\uD83E\uDDD4\u200D\u2640\uFE0F", "\uD83E\uDDD4\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD5\uD83C\uDFFB", "\uD83E\uDDD5\uD83C\uDFFC", "\uD83E\uDDD5\uD83C\uDFFD", "\uD83E\uDDD5\uD83C\uDFFE", "\uD83E\uDDD5\uD83C\uDFFF", "\uD83E\uDDD6\u200D\u2640\uFE0F", "\uD83E\uDDD6\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD7\u200D\u2640\uFE0F", "\uD83E\uDDD7\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD8\u200D\u2640\uFE0F", "\uD83E\uDDD8\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD9\u200D\u2640\uFE0F", "\uD83E\uDDD9\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDA\u200D\u2640\uFE0F", "\uD83E\uDDDA\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDB\u200D\u2640\uFE0F", "\uD83E\uDDDB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDC\u200D\u2640\uFE0F", "\uD83E\uDDDC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDD\u200D\u2640\uFE0F", "\uD83E\uDDDD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDE\u200D\u2640\uFE0F", "\uD83E\uDDDE\u200D\u2642\uFE0F", "\uD83E\uDDDF\u200D\u2640\uFE0F", "\uD83E\uDDDF\u200D\u2642\uFE0F", "\uD83E\uDEC3\uD83C\uDFFB", "\uD83E\uDEC3\uD83C\uDFFC", "\uD83E\uDEC3\uD83C\uDFFD", "\uD83E\uDEC3\uD83C\uDFFE", "\uD83E\uDEC3\uD83C\uDFFF", "\uD83E\uDEC4\uD83C\uDFFB", "\uD83E\uDEC4\uD83C\uDFFC", "\uD83E\uDEC4\uD83C\uDFFD", "\uD83E\uDEC4\uD83C\uDFFE", "\uD83E\uDEC4\uD83C\uDFFF", "\uD83E\uDEC5\uD83C\uDFFB", "\uD83E\uDEC5\uD83C\uDFFC", "\uD83E\uDEC5\uD83C\uDFFD", "\uD83E\uDEC5\uD83C\uDFFE", "\uD83E\uDEC5\uD83C\uDFFF", "\uD83E\uDEF0\uD83C\uDFFB", "\uD83E\uDEF0\uD83C\uDFFC", "\uD83E\uDEF0\uD83C\uDFFD", "\uD83E\uDEF0\uD83C\uDFFE", "\uD83E\uDEF0\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF3\uD83C\uDFFB", "\uD83E\uDEF3\uD83C\uDFFC", "\uD83E\uDEF3\uD83C\uDFFD", "\uD83E\uDEF3\uD83C\uDFFE", "\uD83E\uDEF3\uD83C\uDFFF", "\uD83E\uDEF4\uD83C\uDFFB", "\uD83E\uDEF4\uD83C\uDFFC", "\uD83E\uDEF4\uD83C\uDFFD", "\uD83E\uDEF4\uD83C\uDFFE", "\uD83E\uDEF4\uD83C\uDFFF", "\uD83E\uDEF5\uD83C\uDFFB", "\uD83E\uDEF5\uD83C\uDFFC", "\uD83E\uDEF5\uD83C\uDFFD", "\uD83E\uDEF5\uD83C\uDFFE", "\uD83E\uDEF5\uD83C\uDFFF", "\uD83E\uDEF6\uD83C\uDFFB", "\uD83E\uDEF6\uD83C\uDFFC", "\uD83E\uDEF6\uD83C\uDFFD", "\uD83E\uDEF6\uD83C\uDFFE", "\uD83E\uDEF6\uD83C\uDFFF", "\uD83E\uDEF7\uD83C\uDFFB", "\uD83E\uDEF7\uD83C\uDFFC", "\uD83E\uDEF7\uD83C\uDFFD", "\uD83E\uDEF7\uD83C\uDFFE", "\uD83E\uDEF7\uD83C\uDFFF", "\uD83E\uDEF8\uD83C\uDFFB", "\uD83E\uDEF8\uD83C\uDFFC", "\uD83E\uDEF8\uD83C\uDFFD", "\uD83E\uDEF8\uD83C\uDFFE", "\uD83E\uDEF8\uD83C\uDFFF"];
    return RGI_Emoji;
  }

  var Adlam$1 = {};

  var hasRequiredAdlam$1;
  function requireAdlam$1() {
    if (hasRequiredAdlam$1) return Adlam$1;
    hasRequiredAdlam$1 = 1;
    var set = regenerateExports(0x61F, 0x640);
    set.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);
    Adlam$1.characters = set;
    return Adlam$1;
  }

  var Ahom$1 = {};

  var hasRequiredAhom$1;
  function requireAhom$1() {
    if (hasRequiredAhom$1) return Ahom$1;
    hasRequiredAhom$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);
    Ahom$1.characters = set;
    return Ahom$1;
  }

  var Anatolian_Hieroglyphs$1 = {};

  var hasRequiredAnatolian_Hieroglyphs$1;
  function requireAnatolian_Hieroglyphs$1() {
    if (hasRequiredAnatolian_Hieroglyphs$1) return Anatolian_Hieroglyphs$1;
    hasRequiredAnatolian_Hieroglyphs$1 = 1;
    var set = regenerateExports();
    set.addRange(0x14400, 0x14646);
    Anatolian_Hieroglyphs$1.characters = set;
    return Anatolian_Hieroglyphs$1;
  }

  var Arabic$1 = {};

  var hasRequiredArabic$1;
  function requireArabic$1() {
    if (hasRequiredArabic$1) return Arabic$1;
    hasRequiredArabic$1 = 1;
    var set = regenerateExports(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x600, 0x604).addRange(0x606, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x102E0, 0x102FB).addRange(0x10E60, 0x10E7E).addRange(0x10EFD, 0x10EFF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
    Arabic$1.characters = set;
    return Arabic$1;
  }

  var Armenian$1 = {};

  var hasRequiredArmenian$1;
  function requireArmenian$1() {
    if (hasRequiredArmenian$1) return Armenian$1;
    hasRequiredArmenian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);
    Armenian$1.characters = set;
    return Armenian$1;
  }

  var Avestan$1 = {};

  var hasRequiredAvestan$1;
  function requireAvestan$1() {
    if (hasRequiredAvestan$1) return Avestan$1;
    hasRequiredAvestan$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);
    Avestan$1.characters = set;
    return Avestan$1;
  }

  var Balinese$1 = {};

  var hasRequiredBalinese$1;
  function requireBalinese$1() {
    if (hasRequiredBalinese$1) return Balinese$1;
    hasRequiredBalinese$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);
    Balinese$1.characters = set;
    return Balinese$1;
  }

  var Bamum$1 = {};

  var hasRequiredBamum$1;
  function requireBamum$1() {
    if (hasRequiredBamum$1) return Bamum$1;
    hasRequiredBamum$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);
    Bamum$1.characters = set;
    return Bamum$1;
  }

  var Bassa_Vah$1 = {};

  var hasRequiredBassa_Vah$1;
  function requireBassa_Vah$1() {
    if (hasRequiredBassa_Vah$1) return Bassa_Vah$1;
    hasRequiredBassa_Vah$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);
    Bassa_Vah$1.characters = set;
    return Bassa_Vah$1;
  }

  var Batak$1 = {};

  var hasRequiredBatak$1;
  function requireBatak$1() {
    if (hasRequiredBatak$1) return Batak$1;
    hasRequiredBatak$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);
    Batak$1.characters = set;
    return Batak$1;
  }

  var Bengali$1 = {};

  var hasRequiredBengali$1;
  function requireBengali$1() {
    if (hasRequiredBengali$1) return Bengali$1;
    hasRequiredBengali$1 = 1;
    var set = regenerateExports(0x9B2, 0x9D7, 0x1CD0, 0x1CD2, 0x1CD8, 0x1CE1, 0x1CEA, 0x1CED, 0x1CF2, 0xA8F1);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0x1CD5, 0x1CD6).addRange(0x1CF5, 0x1CF7);
    Bengali$1.characters = set;
    return Bengali$1;
  }

  var Bhaiksuki$1 = {};

  var hasRequiredBhaiksuki$1;
  function requireBhaiksuki$1() {
    if (hasRequiredBhaiksuki$1) return Bhaiksuki$1;
    hasRequiredBhaiksuki$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);
    Bhaiksuki$1.characters = set;
    return Bhaiksuki$1;
  }

  var Bopomofo$1 = {};

  var hasRequiredBopomofo$1;
  function requireBopomofo$1() {
    if (hasRequiredBopomofo$1) return Bopomofo$1;
    hasRequiredBopomofo$1 = 1;
    var set = regenerateExports(0x3030, 0x3037, 0x30FB);
    set.addRange(0x2EA, 0x2EB).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302A, 0x302D).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65);
    Bopomofo$1.characters = set;
    return Bopomofo$1;
  }

  var Brahmi$1 = {};

  var hasRequiredBrahmi$1;
  function requireBrahmi$1() {
    if (hasRequiredBrahmi$1) return Brahmi$1;
    hasRequiredBrahmi$1 = 1;
    var set = regenerateExports(0x1107F);
    set.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);
    Brahmi$1.characters = set;
    return Brahmi$1;
  }

  var Braille$1 = {};

  var hasRequiredBraille$1;
  function requireBraille$1() {
    if (hasRequiredBraille$1) return Braille$1;
    hasRequiredBraille$1 = 1;
    var set = regenerateExports();
    set.addRange(0x2800, 0x28FF);
    Braille$1.characters = set;
    return Braille$1;
  }

  var Buginese$1 = {};

  var hasRequiredBuginese$1;
  function requireBuginese$1() {
    if (hasRequiredBuginese$1) return Buginese$1;
    hasRequiredBuginese$1 = 1;
    var set = regenerateExports(0xA9CF);
    set.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);
    Buginese$1.characters = set;
    return Buginese$1;
  }

  var Buhid$1 = {};

  var hasRequiredBuhid$1;
  function requireBuhid$1() {
    if (hasRequiredBuhid$1) return Buhid$1;
    hasRequiredBuhid$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1735, 0x1736).addRange(0x1740, 0x1753);
    Buhid$1.characters = set;
    return Buhid$1;
  }

  var Canadian_Aboriginal$1 = {};

  var hasRequiredCanadian_Aboriginal$1;
  function requireCanadian_Aboriginal$1() {
    if (hasRequiredCanadian_Aboriginal$1) return Canadian_Aboriginal$1;
    hasRequiredCanadian_Aboriginal$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);
    Canadian_Aboriginal$1.characters = set;
    return Canadian_Aboriginal$1;
  }

  var Carian$1 = {};

  var hasRequiredCarian$1;
  function requireCarian$1() {
    if (hasRequiredCarian$1) return Carian$1;
    hasRequiredCarian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x102A0, 0x102D0);
    Carian$1.characters = set;
    return Carian$1;
  }

  var Caucasian_Albanian$1 = {};

  var hasRequiredCaucasian_Albanian$1;
  function requireCaucasian_Albanian$1() {
    if (hasRequiredCaucasian_Albanian$1) return Caucasian_Albanian$1;
    hasRequiredCaucasian_Albanian$1 = 1;
    var set = regenerateExports(0x1056F);
    set.addRange(0x10530, 0x10563);
    Caucasian_Albanian$1.characters = set;
    return Caucasian_Albanian$1;
  }

  var Chakma$1 = {};

  var hasRequiredChakma$1;
  function requireChakma$1() {
    if (hasRequiredChakma$1) return Chakma$1;
    hasRequiredChakma$1 = 1;
    var set = regenerateExports();
    set.addRange(0x9E6, 0x9EF).addRange(0x1040, 0x1049).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);
    Chakma$1.characters = set;
    return Chakma$1;
  }

  var Cham$1 = {};

  var hasRequiredCham$1;
  function requireCham$1() {
    if (hasRequiredCham$1) return Cham$1;
    hasRequiredCham$1 = 1;
    var set = regenerateExports();
    set.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);
    Cham$1.characters = set;
    return Cham$1;
  }

  var Cherokee$1 = {};

  var hasRequiredCherokee$1;
  function requireCherokee$1() {
    if (hasRequiredCherokee$1) return Cherokee$1;
    hasRequiredCherokee$1 = 1;
    var set = regenerateExports();
    set.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);
    Cherokee$1.characters = set;
    return Cherokee$1;
  }

  var Chorasmian$1 = {};

  var hasRequiredChorasmian$1;
  function requireChorasmian$1() {
    if (hasRequiredChorasmian$1) return Chorasmian$1;
    hasRequiredChorasmian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10FB0, 0x10FCB);
    Chorasmian$1.characters = set;
    return Chorasmian$1;
  }

  var Common$1 = {};

  var hasRequiredCommon$1;
  function requireCommon$1() {
    if (hasRequiredCommon$1) return Common$1;
    hasRequiredCommon$1 = 1;
    var set = regenerateExports(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x6DD, 0x8E2, 0xE3F, 0x3004, 0x3012, 0x3020, 0x3036, 0x31EF, 0x327F, 0x33FF, 0xAB5B, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);
    set.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x2000, 0x200B).addRange(0x200E, 0x202E).addRange(0x2030, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E42).addRange(0x2E44, 0x2E5D).addRange(0x2FF0, 0x3000).addRange(0x3248, 0x325F).addRange(0x32B1, 0x32BF).addRange(0x32CC, 0x32CF).addRange(0x3371, 0x337A).addRange(0x3380, 0x33DF).addRange(0x4DC0, 0x4DFF).addRange(0xA708, 0xA721).addRange(0xA788, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF60).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE);
    set.addRange(0xFFF9, 0xFFFD).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D372, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776);
    set.addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);
    Common$1.characters = set;
    return Common$1;
  }

  var Coptic$1 = {};

  var hasRequiredCoptic$1;
  function requireCoptic$1() {
    if (hasRequiredCoptic$1) return Coptic$1;
    hasRequiredCoptic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF).addRange(0x102E0, 0x102FB);
    Coptic$1.characters = set;
    return Coptic$1;
  }

  var Cuneiform$1 = {};

  var hasRequiredCuneiform$1;
  function requireCuneiform$1() {
    if (hasRequiredCuneiform$1) return Cuneiform$1;
    hasRequiredCuneiform$1 = 1;
    var set = regenerateExports();
    set.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);
    Cuneiform$1.characters = set;
    return Cuneiform$1;
  }

  var Cypriot$1 = {};

  var hasRequiredCypriot$1;
  function requireCypriot$1() {
    if (hasRequiredCypriot$1) return Cypriot$1;
    hasRequiredCypriot$1 = 1;
    var set = regenerateExports(0x10808, 0x1083C, 0x1083F);
    set.addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);
    Cypriot$1.characters = set;
    return Cypriot$1;
  }

  var Cypro_Minoan$1 = {};

  var hasRequiredCypro_Minoan$1;
  function requireCypro_Minoan$1() {
    if (hasRequiredCypro_Minoan$1) return Cypro_Minoan$1;
    hasRequiredCypro_Minoan$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10100, 0x10101).addRange(0x12F90, 0x12FF2);
    Cypro_Minoan$1.characters = set;
    return Cypro_Minoan$1;
  }

  var Cyrillic$1 = {};

  var hasRequiredCyrillic$1;
  function requireCyrillic$1() {
    if (hasRequiredCyrillic$1) return Cyrillic$1;
    hasRequiredCyrillic$1 = 1;
    var set = regenerateExports(0x1D2B, 0x1D78, 0x1DF8, 0x2E43, 0x1E08F);
    set.addRange(0x400, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F).addRange(0x1E030, 0x1E06D);
    Cyrillic$1.characters = set;
    return Cyrillic$1;
  }

  var Deseret$1 = {};

  var hasRequiredDeseret$1;
  function requireDeseret$1() {
    if (hasRequiredDeseret$1) return Deseret$1;
    hasRequiredDeseret$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10400, 0x1044F);
    Deseret$1.characters = set;
    return Deseret$1;
  }

  var Devanagari$1 = {};

  var hasRequiredDevanagari$1;
  function requireDevanagari$1() {
    if (hasRequiredDevanagari$1) return Devanagari$1;
    hasRequiredDevanagari$1 = 1;
    var set = regenerateExports(0x20F0);
    set.addRange(0x900, 0x952).addRange(0x955, 0x97F).addRange(0x1CD0, 0x1CF6).addRange(0x1CF8, 0x1CF9).addRange(0xA830, 0xA839).addRange(0xA8E0, 0xA8FF).addRange(0x11B00, 0x11B09);
    Devanagari$1.characters = set;
    return Devanagari$1;
  }

  var Dives_Akuru$1 = {};

  var hasRequiredDives_Akuru$1;
  function requireDives_Akuru$1() {
    if (hasRequiredDives_Akuru$1) return Dives_Akuru$1;
    hasRequiredDives_Akuru$1 = 1;
    var set = regenerateExports(0x11909);
    set.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);
    Dives_Akuru$1.characters = set;
    return Dives_Akuru$1;
  }

  var Dogra$1 = {};

  var hasRequiredDogra$1;
  function requireDogra$1() {
    if (hasRequiredDogra$1) return Dogra$1;
    hasRequiredDogra$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11800, 0x1183B);
    Dogra$1.characters = set;
    return Dogra$1;
  }

  var Duployan$1 = {};

  var hasRequiredDuployan$1;
  function requireDuployan$1() {
    if (hasRequiredDuployan$1) return Duployan$1;
    hasRequiredDuployan$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3);
    Duployan$1.characters = set;
    return Duployan$1;
  }

  var Egyptian_Hieroglyphs$1 = {};

  var hasRequiredEgyptian_Hieroglyphs$1;
  function requireEgyptian_Hieroglyphs$1() {
    if (hasRequiredEgyptian_Hieroglyphs$1) return Egyptian_Hieroglyphs$1;
    hasRequiredEgyptian_Hieroglyphs$1 = 1;
    var set = regenerateExports();
    set.addRange(0x13000, 0x13455);
    Egyptian_Hieroglyphs$1.characters = set;
    return Egyptian_Hieroglyphs$1;
  }

  var Elbasan$1 = {};

  var hasRequiredElbasan$1;
  function requireElbasan$1() {
    if (hasRequiredElbasan$1) return Elbasan$1;
    hasRequiredElbasan$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10500, 0x10527);
    Elbasan$1.characters = set;
    return Elbasan$1;
  }

  var Elymaic$1 = {};

  var hasRequiredElymaic$1;
  function requireElymaic$1() {
    if (hasRequiredElymaic$1) return Elymaic$1;
    hasRequiredElymaic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10FE0, 0x10FF6);
    Elymaic$1.characters = set;
    return Elymaic$1;
  }

  var Ethiopic$1 = {};

  var hasRequiredEthiopic$1;
  function requireEthiopic$1() {
    if (hasRequiredEthiopic$1) return Ethiopic$1;
    hasRequiredEthiopic$1 = 1;
    var set = regenerateExports(0x1258, 0x12C0);
    set.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);
    Ethiopic$1.characters = set;
    return Ethiopic$1;
  }

  var Georgian$1 = {};

  var hasRequiredGeorgian$1;
  function requireGeorgian$1() {
    if (hasRequiredGeorgian$1) return Georgian$1;
    hasRequiredGeorgian$1 = 1;
    var set = regenerateExports(0x10C7, 0x10CD, 0x2D27, 0x2D2D);
    set.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);
    Georgian$1.characters = set;
    return Georgian$1;
  }

  var Glagolitic$1 = {};

  var hasRequiredGlagolitic$1;
  function requireGlagolitic$1() {
    if (hasRequiredGlagolitic$1) return Glagolitic$1;
    hasRequiredGlagolitic$1 = 1;
    var set = regenerateExports(0x484, 0x487, 0x2E43, 0xA66F);
    set.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);
    Glagolitic$1.characters = set;
    return Glagolitic$1;
  }

  var Gothic$1 = {};

  var hasRequiredGothic$1;
  function requireGothic$1() {
    if (hasRequiredGothic$1) return Gothic$1;
    hasRequiredGothic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10330, 0x1034A);
    Gothic$1.characters = set;
    return Gothic$1;
  }

  var Grantha$1 = {};

  var hasRequiredGrantha$1;
  function requireGrantha$1() {
    if (hasRequiredGrantha$1) return Grantha$1;
    hasRequiredGrantha$1 = 1;
    var set = regenerateExports(0x1CD0, 0x20F0, 0x11350, 0x11357, 0x11FD3);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xBE6, 0xBF3).addRange(0x1CD2, 0x1CD3).addRange(0x1CF2, 0x1CF4).addRange(0x1CF8, 0x1CF9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11FD0, 0x11FD1);
    Grantha$1.characters = set;
    return Grantha$1;
  }

  var Greek$1 = {};

  var hasRequiredGreek$1;
  function requireGreek$1() {
    if (hasRequiredGreek$1) return Greek$1;
    hasRequiredGreek$1 = 1;
    var set = regenerateExports(0x342, 0x345, 0x37F, 0x384, 0x386, 0x38C, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);
    set.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1DBF, 0x1DC1).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);
    Greek$1.characters = set;
    return Greek$1;
  }

  var Gujarati$1 = {};

  var hasRequiredGujarati$1;
  function requireGujarati$1() {
    if (hasRequiredGujarati$1) return Gujarati$1;
    hasRequiredGujarati$1 = 1;
    var set = regenerateExports(0xAD0);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xA830, 0xA839);
    Gujarati$1.characters = set;
    return Gujarati$1;
  }

  var Gunjala_Gondi$1 = {};

  var hasRequiredGunjala_Gondi$1;
  function requireGunjala_Gondi$1() {
    if (hasRequiredGunjala_Gondi$1) return Gunjala_Gondi$1;
    hasRequiredGunjala_Gondi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x965).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);
    Gunjala_Gondi$1.characters = set;
    return Gunjala_Gondi$1;
  }

  var Gurmukhi$1 = {};

  var hasRequiredGurmukhi$1;
  function requireGurmukhi$1() {
    if (hasRequiredGurmukhi$1) return Gurmukhi$1;
    hasRequiredGurmukhi$1 = 1;
    var set = regenerateExports(0xA3C, 0xA51, 0xA5E);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA830, 0xA839);
    Gurmukhi$1.characters = set;
    return Gurmukhi$1;
  }

  var Han$1 = {};

  var hasRequiredHan$1;
  function requireHan$1() {
    if (hasRequiredHan$1) return Han$1;
    hasRequiredHan$1 = 1;
    var set = regenerateExports(0x3030, 0x30FB, 0x32FF);
    set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3001, 0x3003).addRange(0x3005, 0x3011).addRange(0x3013, 0x301F).addRange(0x3021, 0x302D).addRange(0x3037, 0x303F).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x3247).addRange(0x3280, 0x32B0).addRange(0x32C0, 0x32CB).addRange(0x3358, 0x3370).addRange(0x337B, 0x337F).addRange(0x33E0, 0x33FE).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xA700, 0xA707).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x1D360, 0x1D371).addRange(0x1F250, 0x1F251).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Han$1.characters = set;
    return Han$1;
  }

  var Hangul$1 = {};

  var hasRequiredHangul$1;
  function requireHangul$1() {
    if (hasRequiredHangul$1) return Hangul$1;
    hasRequiredHangul$1 = 1;
    var set = regenerateExports(0x3037, 0x30FB);
    set.addRange(0x1100, 0x11FF).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302E, 0x3030).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);
    Hangul$1.characters = set;
    return Hangul$1;
  }

  var Hanifi_Rohingya$1 = {};

  var hasRequiredHanifi_Rohingya$1;
  function requireHanifi_Rohingya$1() {
    if (hasRequiredHanifi_Rohingya$1) return Hanifi_Rohingya$1;
    hasRequiredHanifi_Rohingya$1 = 1;
    var set = regenerateExports(0x60C, 0x61B, 0x61F, 0x640, 0x6D4);
    set.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);
    Hanifi_Rohingya$1.characters = set;
    return Hanifi_Rohingya$1;
  }

  var Hanunoo$1 = {};

  var hasRequiredHanunoo$1;
  function requireHanunoo$1() {
    if (hasRequiredHanunoo$1) return Hanunoo$1;
    hasRequiredHanunoo$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1720, 0x1736);
    Hanunoo$1.characters = set;
    return Hanunoo$1;
  }

  var Hatran$1 = {};

  var hasRequiredHatran$1;
  function requireHatran$1() {
    if (hasRequiredHatran$1) return Hatran$1;
    hasRequiredHatran$1 = 1;
    var set = regenerateExports();
    set.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);
    Hatran$1.characters = set;
    return Hatran$1;
  }

  var Hebrew$1 = {};

  var hasRequiredHebrew$1;
  function requireHebrew$1() {
    if (hasRequiredHebrew$1) return Hebrew$1;
    hasRequiredHebrew$1 = 1;
    var set = regenerateExports(0xFB3E);
    set.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);
    Hebrew$1.characters = set;
    return Hebrew$1;
  }

  var Hiragana$1 = {};

  var hasRequiredHiragana$1;
  function requireHiragana$1() {
    if (hasRequiredHiragana$1) return Hiragana$1;
    hasRequiredHiragana$1 = 1;
    var set = regenerateExports(0x3037, 0xFF70, 0x1B132, 0x1F200);
    set.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3041, 0x3096).addRange(0x3099, 0x30A0).addRange(0x30FB, 0x30FC).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);
    Hiragana$1.characters = set;
    return Hiragana$1;
  }

  var Imperial_Aramaic$1 = {};

  var hasRequiredImperial_Aramaic$1;
  function requireImperial_Aramaic$1() {
    if (hasRequiredImperial_Aramaic$1) return Imperial_Aramaic$1;
    hasRequiredImperial_Aramaic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);
    Imperial_Aramaic$1.characters = set;
    return Imperial_Aramaic$1;
  }

  var Inherited$1 = {};

  var hasRequiredInherited$1;
  function requireInherited$1() {
    if (hasRequiredInherited$1) return Inherited$1;
    hasRequiredInherited$1 = 1;
    var set = regenerateExports(0x1DF9, 0x101FD);
    set.addRange(0x300, 0x341).addRange(0x343, 0x344).addRange(0x346, 0x362).addRange(0x953, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1DC2, 0x1DF7).addRange(0x1DFB, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20EF).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);
    Inherited$1.characters = set;
    return Inherited$1;
  }

  var Inscriptional_Pahlavi$1 = {};

  var hasRequiredInscriptional_Pahlavi$1;
  function requireInscriptional_Pahlavi$1() {
    if (hasRequiredInscriptional_Pahlavi$1) return Inscriptional_Pahlavi$1;
    hasRequiredInscriptional_Pahlavi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);
    Inscriptional_Pahlavi$1.characters = set;
    return Inscriptional_Pahlavi$1;
  }

  var Inscriptional_Parthian$1 = {};

  var hasRequiredInscriptional_Parthian$1;
  function requireInscriptional_Parthian$1() {
    if (hasRequiredInscriptional_Parthian$1) return Inscriptional_Parthian$1;
    hasRequiredInscriptional_Parthian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);
    Inscriptional_Parthian$1.characters = set;
    return Inscriptional_Parthian$1;
  }

  var Javanese$1 = {};

  var hasRequiredJavanese$1;
  function requireJavanese$1() {
    if (hasRequiredJavanese$1) return Javanese$1;
    hasRequiredJavanese$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9DF);
    Javanese$1.characters = set;
    return Javanese$1;
  }

  var Kaithi$1 = {};

  var hasRequiredKaithi$1;
  function requireKaithi$1() {
    if (hasRequiredKaithi$1) return Kaithi$1;
    hasRequiredKaithi$1 = 1;
    var set = regenerateExports(0x110CD);
    set.addRange(0x966, 0x96F).addRange(0xA830, 0xA839).addRange(0x11080, 0x110C2);
    Kaithi$1.characters = set;
    return Kaithi$1;
  }

  var Kannada$1 = {};

  var hasRequiredKannada$1;
  function requireKannada$1() {
    if (hasRequiredKannada$1) return Kannada$1;
    hasRequiredKannada$1 = 1;
    var set = regenerateExports(0x1CD0, 0x1CD2, 0x1CDA, 0x1CF2, 0x1CF4);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xA830, 0xA835);
    Kannada$1.characters = set;
    return Kannada$1;
  }

  var Katakana$1 = {};

  var hasRequiredKatakana$1;
  function requireKatakana$1() {
    if (hasRequiredKatakana$1) return Katakana$1;
    hasRequiredKatakana$1 = 1;
    var set = regenerateExports(0x3037, 0x1B000, 0x1B155);
    set.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3099, 0x309C).addRange(0x30A0, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF9F).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);
    Katakana$1.characters = set;
    return Katakana$1;
  }

  var Kawi$1 = {};

  var hasRequiredKawi$1;
  function requireKawi$1() {
    if (hasRequiredKawi$1) return Kawi$1;
    hasRequiredKawi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59);
    Kawi$1.characters = set;
    return Kawi$1;
  }

  var Kayah_Li$1 = {};

  var hasRequiredKayah_Li$1;
  function requireKayah_Li$1() {
    if (hasRequiredKayah_Li$1) return Kayah_Li$1;
    hasRequiredKayah_Li$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA900, 0xA92F);
    Kayah_Li$1.characters = set;
    return Kayah_Li$1;
  }

  var Kharoshthi$1 = {};

  var hasRequiredKharoshthi$1;
  function requireKharoshthi$1() {
    if (hasRequiredKharoshthi$1) return Kharoshthi$1;
    hasRequiredKharoshthi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);
    Kharoshthi$1.characters = set;
    return Kharoshthi$1;
  }

  var Khitan_Small_Script$1 = {};

  var hasRequiredKhitan_Small_Script$1;
  function requireKhitan_Small_Script$1() {
    if (hasRequiredKhitan_Small_Script$1) return Khitan_Small_Script$1;
    hasRequiredKhitan_Small_Script$1 = 1;
    var set = regenerateExports(0x16FE4);
    set.addRange(0x18B00, 0x18CD5);
    Khitan_Small_Script$1.characters = set;
    return Khitan_Small_Script$1;
  }

  var Khmer$1 = {};

  var hasRequiredKhmer$1;
  function requireKhmer$1() {
    if (hasRequiredKhmer$1) return Khmer$1;
    hasRequiredKhmer$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);
    Khmer$1.characters = set;
    return Khmer$1;
  }

  var Khojki$1 = {};

  var hasRequiredKhojki$1;
  function requireKhojki$1() {
    if (hasRequiredKhojki$1) return Khojki$1;
    hasRequiredKhojki$1 = 1;
    var set = regenerateExports();
    set.addRange(0xAE6, 0xAEF).addRange(0xA830, 0xA839).addRange(0x11200, 0x11211).addRange(0x11213, 0x11241);
    Khojki$1.characters = set;
    return Khojki$1;
  }

  var Khudawadi$1 = {};

  var hasRequiredKhudawadi$1;
  function requireKhudawadi$1() {
    if (hasRequiredKhudawadi$1) return Khudawadi$1;
    hasRequiredKhudawadi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);
    Khudawadi$1.characters = set;
    return Khudawadi$1;
  }

  var Lao$1 = {};

  var hasRequiredLao$1;
  function requireLao$1() {
    if (hasRequiredLao$1) return Lao$1;
    hasRequiredLao$1 = 1;
    var set = regenerateExports(0xE84, 0xEA5, 0xEC6);
    set.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);
    Lao$1.characters = set;
    return Lao$1;
  }

  var Latin$1 = {};

  var hasRequiredLatin$1;
  function requireLatin$1() {
    if (hasRequiredLatin$1) return Latin$1;
    hasRequiredLatin$1 = 1;
    var set = regenerateExports(0xAA, 0xBA, 0x10FB, 0x202F, 0x2071, 0x207F, 0x20F0, 0x2132, 0x214E, 0xA7D3, 0xA92E);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x363, 0x36F).addRange(0x485, 0x486).addRange(0x951, 0x952).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA700, 0xA707).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A);
    Latin$1.characters = set;
    return Latin$1;
  }

  var Lepcha$1 = {};

  var hasRequiredLepcha$1;
  function requireLepcha$1() {
    if (hasRequiredLepcha$1) return Lepcha$1;
    hasRequiredLepcha$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);
    Lepcha$1.characters = set;
    return Lepcha$1;
  }

  var Limbu$1 = {};

  var hasRequiredLimbu$1;
  function requireLimbu$1() {
    if (hasRequiredLimbu$1) return Limbu$1;
    hasRequiredLimbu$1 = 1;
    var set = regenerateExports(0x965, 0x1940);
    set.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);
    Limbu$1.characters = set;
    return Limbu$1;
  }

  var Linear_A$1 = {};

  var hasRequiredLinear_A$1;
  function requireLinear_A$1() {
    if (hasRequiredLinear_A$1) return Linear_A$1;
    hasRequiredLinear_A$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10107, 0x10133).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
    Linear_A$1.characters = set;
    return Linear_A$1;
  }

  var Linear_B$1 = {};

  var hasRequiredLinear_B$1;
  function requireLinear_B$1() {
    if (hasRequiredLinear_B$1) return Linear_B$1;
    hasRequiredLinear_B$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F);
    Linear_B$1.characters = set;
    return Linear_B$1;
  }

  var Lisu$1 = {};

  var hasRequiredLisu$1;
  function requireLisu$1() {
    if (hasRequiredLisu$1) return Lisu$1;
    hasRequiredLisu$1 = 1;
    var set = regenerateExports(0x11FB0);
    set.addRange(0xA4D0, 0xA4FF);
    Lisu$1.characters = set;
    return Lisu$1;
  }

  var Lycian$1 = {};

  var hasRequiredLycian$1;
  function requireLycian$1() {
    if (hasRequiredLycian$1) return Lycian$1;
    hasRequiredLycian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10280, 0x1029C);
    Lycian$1.characters = set;
    return Lycian$1;
  }

  var Lydian$1 = {};

  var hasRequiredLydian$1;
  function requireLydian$1() {
    if (hasRequiredLydian$1) return Lydian$1;
    hasRequiredLydian$1 = 1;
    var set = regenerateExports(0x1093F);
    set.addRange(0x10920, 0x10939);
    Lydian$1.characters = set;
    return Lydian$1;
  }

  var Mahajani$1 = {};

  var hasRequiredMahajani$1;
  function requireMahajani$1() {
    if (hasRequiredMahajani$1) return Mahajani$1;
    hasRequiredMahajani$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11150, 0x11176);
    Mahajani$1.characters = set;
    return Mahajani$1;
  }

  var Makasar$1 = {};

  var hasRequiredMakasar$1;
  function requireMakasar$1() {
    if (hasRequiredMakasar$1) return Makasar$1;
    hasRequiredMakasar$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11EE0, 0x11EF8);
    Makasar$1.characters = set;
    return Makasar$1;
  }

  var Malayalam$1 = {};

  var hasRequiredMalayalam$1;
  function requireMalayalam$1() {
    if (hasRequiredMalayalam$1) return Malayalam$1;
    hasRequiredMalayalam$1 = 1;
    var set = regenerateExports(0x1CDA, 0x1CF2);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xA830, 0xA832);
    Malayalam$1.characters = set;
    return Malayalam$1;
  }

  var Mandaic$1 = {};

  var hasRequiredMandaic$1;
  function requireMandaic$1() {
    if (hasRequiredMandaic$1) return Mandaic$1;
    hasRequiredMandaic$1 = 1;
    var set = regenerateExports(0x640, 0x85E);
    set.addRange(0x840, 0x85B);
    Mandaic$1.characters = set;
    return Mandaic$1;
  }

  var Manichaean$1 = {};

  var hasRequiredManichaean$1;
  function requireManichaean$1() {
    if (hasRequiredManichaean$1) return Manichaean$1;
    hasRequiredManichaean$1 = 1;
    var set = regenerateExports(0x640);
    set.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);
    Manichaean$1.characters = set;
    return Manichaean$1;
  }

  var Marchen$1 = {};

  var hasRequiredMarchen$1;
  function requireMarchen$1() {
    if (hasRequiredMarchen$1) return Marchen$1;
    hasRequiredMarchen$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
    Marchen$1.characters = set;
    return Marchen$1;
  }

  var Masaram_Gondi$1 = {};

  var hasRequiredMasaram_Gondi$1;
  function requireMasaram_Gondi$1() {
    if (hasRequiredMasaram_Gondi$1) return Masaram_Gondi$1;
    hasRequiredMasaram_Gondi$1 = 1;
    var set = regenerateExports(0x11D3A);
    set.addRange(0x964, 0x965).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);
    Masaram_Gondi$1.characters = set;
    return Masaram_Gondi$1;
  }

  var Medefaidrin$1 = {};

  var hasRequiredMedefaidrin$1;
  function requireMedefaidrin$1() {
    if (hasRequiredMedefaidrin$1) return Medefaidrin$1;
    hasRequiredMedefaidrin$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16E40, 0x16E9A);
    Medefaidrin$1.characters = set;
    return Medefaidrin$1;
  }

  var Meetei_Mayek$1 = {};

  var hasRequiredMeetei_Mayek$1;
  function requireMeetei_Mayek$1() {
    if (hasRequiredMeetei_Mayek$1) return Meetei_Mayek$1;
    hasRequiredMeetei_Mayek$1 = 1;
    var set = regenerateExports();
    set.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);
    Meetei_Mayek$1.characters = set;
    return Meetei_Mayek$1;
  }

  var Mende_Kikakui$1 = {};

  var hasRequiredMende_Kikakui$1;
  function requireMende_Kikakui$1() {
    if (hasRequiredMende_Kikakui$1) return Mende_Kikakui$1;
    hasRequiredMende_Kikakui$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);
    Mende_Kikakui$1.characters = set;
    return Mende_Kikakui$1;
  }

  var Meroitic_Cursive$1 = {};

  var hasRequiredMeroitic_Cursive$1;
  function requireMeroitic_Cursive$1() {
    if (hasRequiredMeroitic_Cursive$1) return Meroitic_Cursive$1;
    hasRequiredMeroitic_Cursive$1 = 1;
    var set = regenerateExports();
    set.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);
    Meroitic_Cursive$1.characters = set;
    return Meroitic_Cursive$1;
  }

  var Meroitic_Hieroglyphs$1 = {};

  var hasRequiredMeroitic_Hieroglyphs$1;
  function requireMeroitic_Hieroglyphs$1() {
    if (hasRequiredMeroitic_Hieroglyphs$1) return Meroitic_Hieroglyphs$1;
    hasRequiredMeroitic_Hieroglyphs$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10980, 0x1099F);
    Meroitic_Hieroglyphs$1.characters = set;
    return Meroitic_Hieroglyphs$1;
  }

  var Miao$1 = {};

  var hasRequiredMiao$1;
  function requireMiao$1() {
    if (hasRequiredMiao$1) return Miao$1;
    hasRequiredMiao$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);
    Miao$1.characters = set;
    return Miao$1;
  }

  var Modi$1 = {};

  var hasRequiredModi$1;
  function requireModi$1() {
    if (hasRequiredModi$1) return Modi$1;
    hasRequiredModi$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA830, 0xA839).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);
    Modi$1.characters = set;
    return Modi$1;
  }

  var Mongolian$1 = {};

  var hasRequiredMongolian$1;
  function requireMongolian$1() {
    if (hasRequiredMongolian$1) return Mongolian$1;
    hasRequiredMongolian$1 = 1;
    var set = regenerateExports(0x202F);
    set.addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);
    Mongolian$1.characters = set;
    return Mongolian$1;
  }

  var Mro$1 = {};

  var hasRequiredMro$1;
  function requireMro$1() {
    if (hasRequiredMro$1) return Mro$1;
    hasRequiredMro$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);
    Mro$1.characters = set;
    return Mro$1;
  }

  var Multani$1 = {};

  var hasRequiredMultani$1;
  function requireMultani$1() {
    if (hasRequiredMultani$1) return Multani$1;
    hasRequiredMultani$1 = 1;
    var set = regenerateExports(0x11288);
    set.addRange(0xA66, 0xA6F).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);
    Multani$1.characters = set;
    return Multani$1;
  }

  var Myanmar$1 = {};

  var hasRequiredMyanmar$1;
  function requireMyanmar$1() {
    if (hasRequiredMyanmar$1) return Myanmar$1;
    hasRequiredMyanmar$1 = 1;
    var set = regenerateExports(0xA92E);
    set.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);
    Myanmar$1.characters = set;
    return Myanmar$1;
  }

  var Nabataean$1 = {};

  var hasRequiredNabataean$1;
  function requireNabataean$1() {
    if (hasRequiredNabataean$1) return Nabataean$1;
    hasRequiredNabataean$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);
    Nabataean$1.characters = set;
    return Nabataean$1;
  }

  var Nag_Mundari$1 = {};

  var hasRequiredNag_Mundari$1;
  function requireNag_Mundari$1() {
    if (hasRequiredNag_Mundari$1) return Nag_Mundari$1;
    hasRequiredNag_Mundari$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1E4D0, 0x1E4F9);
    Nag_Mundari$1.characters = set;
    return Nag_Mundari$1;
  }

  var Nandinagari$1 = {};

  var hasRequiredNandinagari$1;
  function requireNandinagari$1() {
    if (hasRequiredNandinagari$1) return Nandinagari$1;
    hasRequiredNandinagari$1 = 1;
    var set = regenerateExports(0x1CE9, 0x1CF2, 0x1CFA);
    set.addRange(0x964, 0x965).addRange(0xCE6, 0xCEF).addRange(0xA830, 0xA835).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);
    Nandinagari$1.characters = set;
    return Nandinagari$1;
  }

  var New_Tai_Lue$1 = {};

  var hasRequiredNew_Tai_Lue$1;
  function requireNew_Tai_Lue$1() {
    if (hasRequiredNew_Tai_Lue$1) return New_Tai_Lue$1;
    hasRequiredNew_Tai_Lue$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);
    New_Tai_Lue$1.characters = set;
    return New_Tai_Lue$1;
  }

  var Newa$1 = {};

  var hasRequiredNewa$1;
  function requireNewa$1() {
    if (hasRequiredNewa$1) return Newa$1;
    hasRequiredNewa$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);
    Newa$1.characters = set;
    return Newa$1;
  }

  var Nko$1 = {};

  var hasRequiredNko$1;
  function requireNko$1() {
    if (hasRequiredNko$1) return Nko$1;
    hasRequiredNko$1 = 1;
    var set = regenerateExports(0x60C, 0x61B, 0x61F);
    set.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF).addRange(0xFD3E, 0xFD3F);
    Nko$1.characters = set;
    return Nko$1;
  }

  var Nushu$1 = {};

  var hasRequiredNushu$1;
  function requireNushu$1() {
    if (hasRequiredNushu$1) return Nushu$1;
    hasRequiredNushu$1 = 1;
    var set = regenerateExports(0x16FE1);
    set.addRange(0x1B170, 0x1B2FB);
    Nushu$1.characters = set;
    return Nushu$1;
  }

  var Nyiakeng_Puachue_Hmong$1 = {};

  var hasRequiredNyiakeng_Puachue_Hmong$1;
  function requireNyiakeng_Puachue_Hmong$1() {
    if (hasRequiredNyiakeng_Puachue_Hmong$1) return Nyiakeng_Puachue_Hmong$1;
    hasRequiredNyiakeng_Puachue_Hmong$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);
    Nyiakeng_Puachue_Hmong$1.characters = set;
    return Nyiakeng_Puachue_Hmong$1;
  }

  var Ogham$1 = {};

  var hasRequiredOgham$1;
  function requireOgham$1() {
    if (hasRequiredOgham$1) return Ogham$1;
    hasRequiredOgham$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1680, 0x169C);
    Ogham$1.characters = set;
    return Ogham$1;
  }

  var Ol_Chiki$1 = {};

  var hasRequiredOl_Chiki$1;
  function requireOl_Chiki$1() {
    if (hasRequiredOl_Chiki$1) return Ol_Chiki$1;
    hasRequiredOl_Chiki$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1C50, 0x1C7F);
    Ol_Chiki$1.characters = set;
    return Ol_Chiki$1;
  }

  var Old_Hungarian$1 = {};

  var hasRequiredOld_Hungarian$1;
  function requireOld_Hungarian$1() {
    if (hasRequiredOld_Hungarian$1) return Old_Hungarian$1;
    hasRequiredOld_Hungarian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);
    Old_Hungarian$1.characters = set;
    return Old_Hungarian$1;
  }

  var Old_Italic$1 = {};

  var hasRequiredOld_Italic$1;
  function requireOld_Italic$1() {
    if (hasRequiredOld_Italic$1) return Old_Italic$1;
    hasRequiredOld_Italic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);
    Old_Italic$1.characters = set;
    return Old_Italic$1;
  }

  var Old_North_Arabian$1 = {};

  var hasRequiredOld_North_Arabian$1;
  function requireOld_North_Arabian$1() {
    if (hasRequiredOld_North_Arabian$1) return Old_North_Arabian$1;
    hasRequiredOld_North_Arabian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10A80, 0x10A9F);
    Old_North_Arabian$1.characters = set;
    return Old_North_Arabian$1;
  }

  var Old_Permic$1 = {};

  var hasRequiredOld_Permic$1;
  function requireOld_Permic$1() {
    if (hasRequiredOld_Permic$1) return Old_Permic$1;
    hasRequiredOld_Permic$1 = 1;
    var set = regenerateExports(0x483);
    set.addRange(0x10350, 0x1037A);
    Old_Permic$1.characters = set;
    return Old_Permic$1;
  }

  var Old_Persian$1 = {};

  var hasRequiredOld_Persian$1;
  function requireOld_Persian$1() {
    if (hasRequiredOld_Persian$1) return Old_Persian$1;
    hasRequiredOld_Persian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);
    Old_Persian$1.characters = set;
    return Old_Persian$1;
  }

  var Old_Sogdian$1 = {};

  var hasRequiredOld_Sogdian$1;
  function requireOld_Sogdian$1() {
    if (hasRequiredOld_Sogdian$1) return Old_Sogdian$1;
    hasRequiredOld_Sogdian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10F00, 0x10F27);
    Old_Sogdian$1.characters = set;
    return Old_Sogdian$1;
  }

  var Old_South_Arabian$1 = {};

  var hasRequiredOld_South_Arabian$1;
  function requireOld_South_Arabian$1() {
    if (hasRequiredOld_South_Arabian$1) return Old_South_Arabian$1;
    hasRequiredOld_South_Arabian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10A60, 0x10A7F);
    Old_South_Arabian$1.characters = set;
    return Old_South_Arabian$1;
  }

  var Old_Turkic$1 = {};

  var hasRequiredOld_Turkic$1;
  function requireOld_Turkic$1() {
    if (hasRequiredOld_Turkic$1) return Old_Turkic$1;
    hasRequiredOld_Turkic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10C00, 0x10C48);
    Old_Turkic$1.characters = set;
    return Old_Turkic$1;
  }

  var Old_Uyghur$1 = {};

  var hasRequiredOld_Uyghur$1;
  function requireOld_Uyghur$1() {
    if (hasRequiredOld_Uyghur$1) return Old_Uyghur$1;
    hasRequiredOld_Uyghur$1 = 1;
    var set = regenerateExports(0x640, 0x10AF2);
    set.addRange(0x10F70, 0x10F89);
    Old_Uyghur$1.characters = set;
    return Old_Uyghur$1;
  }

  var Oriya$1 = {};

  var hasRequiredOriya$1;
  function requireOriya$1() {
    if (hasRequiredOriya$1) return Oriya$1;
    hasRequiredOriya$1 = 1;
    var set = regenerateExports(0x1CDA, 0x1CF2);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);
    Oriya$1.characters = set;
    return Oriya$1;
  }

  var Osage$1 = {};

  var hasRequiredOsage$1;
  function requireOsage$1() {
    if (hasRequiredOsage$1) return Osage$1;
    hasRequiredOsage$1 = 1;
    var set = regenerateExports();
    set.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);
    Osage$1.characters = set;
    return Osage$1;
  }

  var Osmanya$1 = {};

  var hasRequiredOsmanya$1;
  function requireOsmanya$1() {
    if (hasRequiredOsmanya$1) return Osmanya$1;
    hasRequiredOsmanya$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);
    Osmanya$1.characters = set;
    return Osmanya$1;
  }

  var Pahawh_Hmong$1 = {};

  var hasRequiredPahawh_Hmong$1;
  function requirePahawh_Hmong$1() {
    if (hasRequiredPahawh_Hmong$1) return Pahawh_Hmong$1;
    hasRequiredPahawh_Hmong$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);
    Pahawh_Hmong$1.characters = set;
    return Pahawh_Hmong$1;
  }

  var Palmyrene$1 = {};

  var hasRequiredPalmyrene$1;
  function requirePalmyrene$1() {
    if (hasRequiredPalmyrene$1) return Palmyrene$1;
    hasRequiredPalmyrene$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10860, 0x1087F);
    Palmyrene$1.characters = set;
    return Palmyrene$1;
  }

  var Pau_Cin_Hau$1 = {};

  var hasRequiredPau_Cin_Hau$1;
  function requirePau_Cin_Hau$1() {
    if (hasRequiredPau_Cin_Hau$1) return Pau_Cin_Hau$1;
    hasRequiredPau_Cin_Hau$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11AC0, 0x11AF8);
    Pau_Cin_Hau$1.characters = set;
    return Pau_Cin_Hau$1;
  }

  var Phags_Pa$1 = {};

  var hasRequiredPhags_Pa$1;
  function requirePhags_Pa$1() {
    if (hasRequiredPhags_Pa$1) return Phags_Pa$1;
    hasRequiredPhags_Pa$1 = 1;
    var set = regenerateExports(0x1805);
    set.addRange(0x1802, 0x1803).addRange(0xA840, 0xA877);
    Phags_Pa$1.characters = set;
    return Phags_Pa$1;
  }

  var Phoenician$1 = {};

  var hasRequiredPhoenician$1;
  function requirePhoenician$1() {
    if (hasRequiredPhoenician$1) return Phoenician$1;
    hasRequiredPhoenician$1 = 1;
    var set = regenerateExports(0x1091F);
    set.addRange(0x10900, 0x1091B);
    Phoenician$1.characters = set;
    return Phoenician$1;
  }

  var Psalter_Pahlavi$1 = {};

  var hasRequiredPsalter_Pahlavi$1;
  function requirePsalter_Pahlavi$1() {
    if (hasRequiredPsalter_Pahlavi$1) return Psalter_Pahlavi$1;
    hasRequiredPsalter_Pahlavi$1 = 1;
    var set = regenerateExports(0x640);
    set.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);
    Psalter_Pahlavi$1.characters = set;
    return Psalter_Pahlavi$1;
  }

  var Rejang$1 = {};

  var hasRequiredRejang$1;
  function requireRejang$1() {
    if (hasRequiredRejang$1) return Rejang$1;
    hasRequiredRejang$1 = 1;
    var set = regenerateExports(0xA95F);
    set.addRange(0xA930, 0xA953);
    Rejang$1.characters = set;
    return Rejang$1;
  }

  var Runic$1 = {};

  var hasRequiredRunic$1;
  function requireRunic$1() {
    if (hasRequiredRunic$1) return Runic$1;
    hasRequiredRunic$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);
    Runic$1.characters = set;
    return Runic$1;
  }

  var Samaritan$1 = {};

  var hasRequiredSamaritan$1;
  function requireSamaritan$1() {
    if (hasRequiredSamaritan$1) return Samaritan$1;
    hasRequiredSamaritan$1 = 1;
    var set = regenerateExports();
    set.addRange(0x800, 0x82D).addRange(0x830, 0x83E);
    Samaritan$1.characters = set;
    return Samaritan$1;
  }

  var Saurashtra$1 = {};

  var hasRequiredSaurashtra$1;
  function requireSaurashtra$1() {
    if (hasRequiredSaurashtra$1) return Saurashtra$1;
    hasRequiredSaurashtra$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);
    Saurashtra$1.characters = set;
    return Saurashtra$1;
  }

  var Sharada$1 = {};

  var hasRequiredSharada$1;
  function requireSharada$1() {
    if (hasRequiredSharada$1) return Sharada$1;
    hasRequiredSharada$1 = 1;
    var set = regenerateExports(0x951, 0x1CD7, 0x1CD9, 0x1CE0, 0xA838);
    set.addRange(0x1CDC, 0x1CDD).addRange(0xA830, 0xA835).addRange(0x11180, 0x111DF);
    Sharada$1.characters = set;
    return Sharada$1;
  }

  var Shavian$1 = {};

  var hasRequiredShavian$1;
  function requireShavian$1() {
    if (hasRequiredShavian$1) return Shavian$1;
    hasRequiredShavian$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10450, 0x1047F);
    Shavian$1.characters = set;
    return Shavian$1;
  }

  var Siddham$1 = {};

  var hasRequiredSiddham$1;
  function requireSiddham$1() {
    if (hasRequiredSiddham$1) return Siddham$1;
    hasRequiredSiddham$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);
    Siddham$1.characters = set;
    return Siddham$1;
  }

  var SignWriting$1 = {};

  var hasRequiredSignWriting$1;
  function requireSignWriting$1() {
    if (hasRequiredSignWriting$1) return SignWriting$1;
    hasRequiredSignWriting$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);
    SignWriting$1.characters = set;
    return SignWriting$1;
  }

  var Sinhala$1 = {};

  var hasRequiredSinhala$1;
  function requireSinhala$1() {
    if (hasRequiredSinhala$1) return Sinhala$1;
    hasRequiredSinhala$1 = 1;
    var set = regenerateExports(0xDBD, 0xDCA, 0xDD6, 0x1CF2);
    set.addRange(0x964, 0x965).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);
    Sinhala$1.characters = set;
    return Sinhala$1;
  }

  var Sogdian$1 = {};

  var hasRequiredSogdian$1;
  function requireSogdian$1() {
    if (hasRequiredSogdian$1) return Sogdian$1;
    hasRequiredSogdian$1 = 1;
    var set = regenerateExports(0x640);
    set.addRange(0x10F30, 0x10F59);
    Sogdian$1.characters = set;
    return Sogdian$1;
  }

  var Sora_Sompeng$1 = {};

  var hasRequiredSora_Sompeng$1;
  function requireSora_Sompeng$1() {
    if (hasRequiredSora_Sompeng$1) return Sora_Sompeng$1;
    hasRequiredSora_Sompeng$1 = 1;
    var set = regenerateExports();
    set.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);
    Sora_Sompeng$1.characters = set;
    return Sora_Sompeng$1;
  }

  var Soyombo$1 = {};

  var hasRequiredSoyombo$1;
  function requireSoyombo$1() {
    if (hasRequiredSoyombo$1) return Soyombo$1;
    hasRequiredSoyombo$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11A50, 0x11AA2);
    Soyombo$1.characters = set;
    return Soyombo$1;
  }

  var Sundanese$1 = {};

  var hasRequiredSundanese$1;
  function requireSundanese$1() {
    if (hasRequiredSundanese$1) return Sundanese$1;
    hasRequiredSundanese$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);
    Sundanese$1.characters = set;
    return Sundanese$1;
  }

  var Syloti_Nagri$1 = {};

  var hasRequiredSyloti_Nagri$1;
  function requireSyloti_Nagri$1() {
    if (hasRequiredSyloti_Nagri$1) return Syloti_Nagri$1;
    hasRequiredSyloti_Nagri$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x965).addRange(0x9E6, 0x9EF).addRange(0xA800, 0xA82C);
    Syloti_Nagri$1.characters = set;
    return Syloti_Nagri$1;
  }

  var Syriac$1 = {};

  var hasRequiredSyriac$1;
  function requireSyriac$1() {
    if (hasRequiredSyriac$1) return Syriac$1;
    hasRequiredSyriac$1 = 1;
    var set = regenerateExports(0x60C, 0x61F, 0x640, 0x670, 0x1DF8, 0x1DFA);
    set.addRange(0x61B, 0x61C).addRange(0x64B, 0x655).addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);
    Syriac$1.characters = set;
    return Syriac$1;
  }

  var Tagalog$1 = {};

  var hasRequiredTagalog$1;
  function requireTagalog$1() {
    if (hasRequiredTagalog$1) return Tagalog$1;
    hasRequiredTagalog$1 = 1;
    var set = regenerateExports(0x171F);
    set.addRange(0x1700, 0x1715).addRange(0x1735, 0x1736);
    Tagalog$1.characters = set;
    return Tagalog$1;
  }

  var Tagbanwa$1 = {};

  var hasRequiredTagbanwa$1;
  function requireTagbanwa$1() {
    if (hasRequiredTagbanwa$1) return Tagbanwa$1;
    hasRequiredTagbanwa$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1735, 0x1736).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);
    Tagbanwa$1.characters = set;
    return Tagbanwa$1;
  }

  var Tai_Le$1 = {};

  var hasRequiredTai_Le$1;
  function requireTai_Le$1() {
    if (hasRequiredTai_Le$1) return Tai_Le$1;
    hasRequiredTai_Le$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1040, 0x1049).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);
    Tai_Le$1.characters = set;
    return Tai_Le$1;
  }

  var Tai_Tham$1 = {};

  var hasRequiredTai_Tham$1;
  function requireTai_Tham$1() {
    if (hasRequiredTai_Tham$1) return Tai_Tham$1;
    hasRequiredTai_Tham$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);
    Tai_Tham$1.characters = set;
    return Tai_Tham$1;
  }

  var Tai_Viet$1 = {};

  var hasRequiredTai_Viet$1;
  function requireTai_Viet$1() {
    if (hasRequiredTai_Viet$1) return Tai_Viet$1;
    hasRequiredTai_Viet$1 = 1;
    var set = regenerateExports();
    set.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);
    Tai_Viet$1.characters = set;
    return Tai_Viet$1;
  }

  var Takri$1 = {};

  var hasRequiredTakri$1;
  function requireTakri$1() {
    if (hasRequiredTakri$1) return Takri$1;
    hasRequiredTakri$1 = 1;
    var set = regenerateExports();
    set.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);
    Takri$1.characters = set;
    return Takri$1;
  }

  var Tamil$1 = {};

  var hasRequiredTamil$1;
  function requireTamil$1() {
    if (hasRequiredTamil$1) return Tamil$1;
    hasRequiredTamil$1 = 1;
    var set = regenerateExports(0xB9C, 0xBD0, 0xBD7, 0x1CDA, 0xA8F3, 0x11301, 0x11303, 0x11FFF);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x1133B, 0x1133C).addRange(0x11FC0, 0x11FF1);
    Tamil$1.characters = set;
    return Tamil$1;
  }

  var Tangsa$1 = {};

  var hasRequiredTangsa$1;
  function requireTangsa$1() {
    if (hasRequiredTangsa$1) return Tangsa$1;
    hasRequiredTangsa$1 = 1;
    var set = regenerateExports();
    set.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);
    Tangsa$1.characters = set;
    return Tangsa$1;
  }

  var Tangut$1 = {};

  var hasRequiredTangut$1;
  function requireTangut$1() {
    if (hasRequiredTangut$1) return Tangut$1;
    hasRequiredTangut$1 = 1;
    var set = regenerateExports(0x16FE0);
    set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);
    Tangut$1.characters = set;
    return Tangut$1;
  }

  var Telugu$1 = {};

  var hasRequiredTelugu$1;
  function requireTelugu$1() {
    if (hasRequiredTelugu$1) return Telugu$1;
    hasRequiredTelugu$1 = 1;
    var set = regenerateExports(0xC5D, 0x1CDA, 0x1CF2);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);
    Telugu$1.characters = set;
    return Telugu$1;
  }

  var Thaana$1 = {};

  var hasRequiredThaana$1;
  function requireThaana$1() {
    if (hasRequiredThaana$1) return Thaana$1;
    hasRequiredThaana$1 = 1;
    var set = regenerateExports(0x60C, 0x61F, 0xFDF2, 0xFDFD);
    set.addRange(0x61B, 0x61C).addRange(0x660, 0x669).addRange(0x780, 0x7B1);
    Thaana$1.characters = set;
    return Thaana$1;
  }

  var Thai$1 = {};

  var hasRequiredThai$1;
  function requireThai$1() {
    if (hasRequiredThai$1) return Thai$1;
    hasRequiredThai$1 = 1;
    var set = regenerateExports();
    set.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);
    Thai$1.characters = set;
    return Thai$1;
  }

  var Tibetan$1 = {};

  var hasRequiredTibetan$1;
  function requireTibetan$1() {
    if (hasRequiredTibetan$1) return Tibetan$1;
    hasRequiredTibetan$1 = 1;
    var set = regenerateExports();
    set.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);
    Tibetan$1.characters = set;
    return Tibetan$1;
  }

  var Tifinagh$1 = {};

  var hasRequiredTifinagh$1;
  function requireTifinagh$1() {
    if (hasRequiredTifinagh$1) return Tifinagh$1;
    hasRequiredTifinagh$1 = 1;
    var set = regenerateExports(0x2D7F);
    set.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);
    Tifinagh$1.characters = set;
    return Tifinagh$1;
  }

  var Tirhuta$1 = {};

  var hasRequiredTirhuta$1;
  function requireTirhuta$1() {
    if (hasRequiredTirhuta$1) return Tirhuta$1;
    hasRequiredTirhuta$1 = 1;
    var set = regenerateExports(0x1CF2);
    set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);
    Tirhuta$1.characters = set;
    return Tirhuta$1;
  }

  var Toto$1 = {};

  var hasRequiredToto$1;
  function requireToto$1() {
    if (hasRequiredToto$1) return Toto$1;
    hasRequiredToto$1 = 1;
    var set = regenerateExports();
    set.addRange(0x1E290, 0x1E2AE);
    Toto$1.characters = set;
    return Toto$1;
  }

  var Ugaritic$1 = {};

  var hasRequiredUgaritic$1;
  function requireUgaritic$1() {
    if (hasRequiredUgaritic$1) return Ugaritic$1;
    hasRequiredUgaritic$1 = 1;
    var set = regenerateExports(0x1039F);
    set.addRange(0x10380, 0x1039D);
    Ugaritic$1.characters = set;
    return Ugaritic$1;
  }

  var Vai$1 = {};

  var hasRequiredVai$1;
  function requireVai$1() {
    if (hasRequiredVai$1) return Vai$1;
    hasRequiredVai$1 = 1;
    var set = regenerateExports();
    set.addRange(0xA500, 0xA62B);
    Vai$1.characters = set;
    return Vai$1;
  }

  var Vithkuqi$1 = {};

  var hasRequiredVithkuqi$1;
  function requireVithkuqi$1() {
    if (hasRequiredVithkuqi$1) return Vithkuqi$1;
    hasRequiredVithkuqi$1 = 1;
    var set = regenerateExports();
    set.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);
    Vithkuqi$1.characters = set;
    return Vithkuqi$1;
  }

  var Wancho$1 = {};

  var hasRequiredWancho$1;
  function requireWancho$1() {
    if (hasRequiredWancho$1) return Wancho$1;
    hasRequiredWancho$1 = 1;
    var set = regenerateExports(0x1E2FF);
    set.addRange(0x1E2C0, 0x1E2F9);
    Wancho$1.characters = set;
    return Wancho$1;
  }

  var Warang_Citi$1 = {};

  var hasRequiredWarang_Citi$1;
  function requireWarang_Citi$1() {
    if (hasRequiredWarang_Citi$1) return Warang_Citi$1;
    hasRequiredWarang_Citi$1 = 1;
    var set = regenerateExports(0x118FF);
    set.addRange(0x118A0, 0x118F2);
    Warang_Citi$1.characters = set;
    return Warang_Citi$1;
  }

  var Yezidi$1 = {};

  var hasRequiredYezidi$1;
  function requireYezidi$1() {
    if (hasRequiredYezidi$1) return Yezidi$1;
    hasRequiredYezidi$1 = 1;
    var set = regenerateExports(0x60C, 0x61B, 0x61F);
    set.addRange(0x660, 0x669).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);
    Yezidi$1.characters = set;
    return Yezidi$1;
  }

  var Yi$1 = {};

  var hasRequiredYi$1;
  function requireYi$1() {
    if (hasRequiredYi$1) return Yi$1;
    hasRequiredYi$1 = 1;
    var set = regenerateExports(0x30FB);
    set.addRange(0x3001, 0x3002).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xFF61, 0xFF65);
    Yi$1.characters = set;
    return Yi$1;
  }

  var Zanabazar_Square$1 = {};

  var hasRequiredZanabazar_Square$1;
  function requireZanabazar_Square$1() {
    if (hasRequiredZanabazar_Square$1) return Zanabazar_Square$1;
    hasRequiredZanabazar_Square$1 = 1;
    var set = regenerateExports();
    set.addRange(0x11A00, 0x11A47);
    Zanabazar_Square$1.characters = set;
    return Zanabazar_Square$1;
  }

  var Adlam = {};

  var hasRequiredAdlam;
  function requireAdlam() {
    if (hasRequiredAdlam) return Adlam;
    hasRequiredAdlam = 1;
    var set = regenerateExports();
    set.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);
    Adlam.characters = set;
    return Adlam;
  }

  var Ahom = {};

  var hasRequiredAhom;
  function requireAhom() {
    if (hasRequiredAhom) return Ahom;
    hasRequiredAhom = 1;
    var set = regenerateExports();
    set.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);
    Ahom.characters = set;
    return Ahom;
  }

  var Anatolian_Hieroglyphs = {};

  var hasRequiredAnatolian_Hieroglyphs;
  function requireAnatolian_Hieroglyphs() {
    if (hasRequiredAnatolian_Hieroglyphs) return Anatolian_Hieroglyphs;
    hasRequiredAnatolian_Hieroglyphs = 1;
    var set = regenerateExports();
    set.addRange(0x14400, 0x14646);
    Anatolian_Hieroglyphs.characters = set;
    return Anatolian_Hieroglyphs;
  }

  var Arabic = {};

  var hasRequiredArabic;
  function requireArabic() {
    if (hasRequiredArabic) return Arabic;
    hasRequiredArabic = 1;
    var set = regenerateExports(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
    set.addRange(0x600, 0x604).addRange(0x606, 0x60B).addRange(0x60D, 0x61A).addRange(0x61C, 0x61E).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x656, 0x66F).addRange(0x671, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD3D).addRange(0xFD40, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x10E60, 0x10E7E).addRange(0x10EFD, 0x10EFF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
    Arabic.characters = set;
    return Arabic;
  }

  var Armenian = {};

  var hasRequiredArmenian;
  function requireArmenian() {
    if (hasRequiredArmenian) return Armenian;
    hasRequiredArmenian = 1;
    var set = regenerateExports();
    set.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);
    Armenian.characters = set;
    return Armenian;
  }

  var Avestan = {};

  var hasRequiredAvestan;
  function requireAvestan() {
    if (hasRequiredAvestan) return Avestan;
    hasRequiredAvestan = 1;
    var set = regenerateExports();
    set.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);
    Avestan.characters = set;
    return Avestan;
  }

  var Balinese = {};

  var hasRequiredBalinese;
  function requireBalinese() {
    if (hasRequiredBalinese) return Balinese;
    hasRequiredBalinese = 1;
    var set = regenerateExports();
    set.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);
    Balinese.characters = set;
    return Balinese;
  }

  var Bamum = {};

  var hasRequiredBamum;
  function requireBamum() {
    if (hasRequiredBamum) return Bamum;
    hasRequiredBamum = 1;
    var set = regenerateExports();
    set.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);
    Bamum.characters = set;
    return Bamum;
  }

  var Bassa_Vah = {};

  var hasRequiredBassa_Vah;
  function requireBassa_Vah() {
    if (hasRequiredBassa_Vah) return Bassa_Vah;
    hasRequiredBassa_Vah = 1;
    var set = regenerateExports();
    set.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);
    Bassa_Vah.characters = set;
    return Bassa_Vah;
  }

  var Batak = {};

  var hasRequiredBatak;
  function requireBatak() {
    if (hasRequiredBatak) return Batak;
    hasRequiredBatak = 1;
    var set = regenerateExports();
    set.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);
    Batak.characters = set;
    return Batak;
  }

  var Bengali = {};

  var hasRequiredBengali;
  function requireBengali() {
    if (hasRequiredBengali) return Bengali;
    hasRequiredBengali = 1;
    var set = regenerateExports(0x9B2, 0x9D7);
    set.addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE);
    Bengali.characters = set;
    return Bengali;
  }

  var Bhaiksuki = {};

  var hasRequiredBhaiksuki;
  function requireBhaiksuki() {
    if (hasRequiredBhaiksuki) return Bhaiksuki;
    hasRequiredBhaiksuki = 1;
    var set = regenerateExports();
    set.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);
    Bhaiksuki.characters = set;
    return Bhaiksuki;
  }

  var Bopomofo = {};

  var hasRequiredBopomofo;
  function requireBopomofo() {
    if (hasRequiredBopomofo) return Bopomofo;
    hasRequiredBopomofo = 1;
    var set = regenerateExports();
    set.addRange(0x2EA, 0x2EB).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF);
    Bopomofo.characters = set;
    return Bopomofo;
  }

  var Brahmi = {};

  var hasRequiredBrahmi;
  function requireBrahmi() {
    if (hasRequiredBrahmi) return Brahmi;
    hasRequiredBrahmi = 1;
    var set = regenerateExports(0x1107F);
    set.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);
    Brahmi.characters = set;
    return Brahmi;
  }

  var Braille = {};

  var hasRequiredBraille;
  function requireBraille() {
    if (hasRequiredBraille) return Braille;
    hasRequiredBraille = 1;
    var set = regenerateExports();
    set.addRange(0x2800, 0x28FF);
    Braille.characters = set;
    return Braille;
  }

  var Buginese = {};

  var hasRequiredBuginese;
  function requireBuginese() {
    if (hasRequiredBuginese) return Buginese;
    hasRequiredBuginese = 1;
    var set = regenerateExports();
    set.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);
    Buginese.characters = set;
    return Buginese;
  }

  var Buhid = {};

  var hasRequiredBuhid;
  function requireBuhid() {
    if (hasRequiredBuhid) return Buhid;
    hasRequiredBuhid = 1;
    var set = regenerateExports();
    set.addRange(0x1740, 0x1753);
    Buhid.characters = set;
    return Buhid;
  }

  var Canadian_Aboriginal = {};

  var hasRequiredCanadian_Aboriginal;
  function requireCanadian_Aboriginal() {
    if (hasRequiredCanadian_Aboriginal) return Canadian_Aboriginal;
    hasRequiredCanadian_Aboriginal = 1;
    var set = regenerateExports();
    set.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);
    Canadian_Aboriginal.characters = set;
    return Canadian_Aboriginal;
  }

  var Carian = {};

  var hasRequiredCarian;
  function requireCarian() {
    if (hasRequiredCarian) return Carian;
    hasRequiredCarian = 1;
    var set = regenerateExports();
    set.addRange(0x102A0, 0x102D0);
    Carian.characters = set;
    return Carian;
  }

  var Caucasian_Albanian = {};

  var hasRequiredCaucasian_Albanian;
  function requireCaucasian_Albanian() {
    if (hasRequiredCaucasian_Albanian) return Caucasian_Albanian;
    hasRequiredCaucasian_Albanian = 1;
    var set = regenerateExports(0x1056F);
    set.addRange(0x10530, 0x10563);
    Caucasian_Albanian.characters = set;
    return Caucasian_Albanian;
  }

  var Chakma = {};

  var hasRequiredChakma;
  function requireChakma() {
    if (hasRequiredChakma) return Chakma;
    hasRequiredChakma = 1;
    var set = regenerateExports();
    set.addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);
    Chakma.characters = set;
    return Chakma;
  }

  var Cham = {};

  var hasRequiredCham;
  function requireCham() {
    if (hasRequiredCham) return Cham;
    hasRequiredCham = 1;
    var set = regenerateExports();
    set.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);
    Cham.characters = set;
    return Cham;
  }

  var Cherokee = {};

  var hasRequiredCherokee;
  function requireCherokee() {
    if (hasRequiredCherokee) return Cherokee;
    hasRequiredCherokee = 1;
    var set = regenerateExports();
    set.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);
    Cherokee.characters = set;
    return Cherokee;
  }

  var Chorasmian = {};

  var hasRequiredChorasmian;
  function requireChorasmian() {
    if (hasRequiredChorasmian) return Chorasmian;
    hasRequiredChorasmian = 1;
    var set = regenerateExports();
    set.addRange(0x10FB0, 0x10FCB);
    Chorasmian.characters = set;
    return Chorasmian;
  }

  var Common = {};

  var hasRequiredCommon;
  function requireCommon() {
    if (hasRequiredCommon) return Common;
    hasRequiredCommon = 1;
    var set = regenerateExports(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x60C, 0x61B, 0x61F, 0x640, 0x6DD, 0x8E2, 0xE3F, 0x10FB, 0x1805, 0x1CD3, 0x1CE1, 0x1CFA, 0x3006, 0x30A0, 0x31EF, 0x32FF, 0xA92E, 0xA9CF, 0xAB5B, 0xFEFF, 0xFF70, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);
    set.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0x964, 0x965).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x1802, 0x1803).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x2000, 0x200B).addRange(0x200E, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E5D).addRange(0x2FF0, 0x3004).addRange(0x3008, 0x3020).addRange(0x3030, 0x3037).addRange(0x303C, 0x303F).addRange(0x309B, 0x309C).addRange(0x30FB, 0x30FC).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x325F).addRange(0x327F, 0x32CF).addRange(0x3358, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA830, 0xA839).addRange(0xAB6A, 0xAB6B);
    set.addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x102E1, 0x102FB).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D);
    set.addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);
    Common.characters = set;
    return Common;
  }

  var Coptic = {};

  var hasRequiredCoptic;
  function requireCoptic() {
    if (hasRequiredCoptic) return Coptic;
    hasRequiredCoptic = 1;
    var set = regenerateExports();
    set.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF);
    Coptic.characters = set;
    return Coptic;
  }

  var Cuneiform = {};

  var hasRequiredCuneiform;
  function requireCuneiform() {
    if (hasRequiredCuneiform) return Cuneiform;
    hasRequiredCuneiform = 1;
    var set = regenerateExports();
    set.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);
    Cuneiform.characters = set;
    return Cuneiform;
  }

  var Cypriot = {};

  var hasRequiredCypriot;
  function requireCypriot() {
    if (hasRequiredCypriot) return Cypriot;
    hasRequiredCypriot = 1;
    var set = regenerateExports(0x10808, 0x1083C, 0x1083F);
    set.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);
    Cypriot.characters = set;
    return Cypriot;
  }

  var Cypro_Minoan = {};

  var hasRequiredCypro_Minoan;
  function requireCypro_Minoan() {
    if (hasRequiredCypro_Minoan) return Cypro_Minoan;
    hasRequiredCypro_Minoan = 1;
    var set = regenerateExports();
    set.addRange(0x12F90, 0x12FF2);
    Cypro_Minoan.characters = set;
    return Cypro_Minoan;
  }

  var Cyrillic = {};

  var hasRequiredCyrillic;
  function requireCyrillic() {
    if (hasRequiredCyrillic) return Cyrillic;
    hasRequiredCyrillic = 1;
    var set = regenerateExports(0x1D2B, 0x1D78, 0x1E08F);
    set.addRange(0x400, 0x484).addRange(0x487, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F).addRange(0x1E030, 0x1E06D);
    Cyrillic.characters = set;
    return Cyrillic;
  }

  var Deseret = {};

  var hasRequiredDeseret;
  function requireDeseret() {
    if (hasRequiredDeseret) return Deseret;
    hasRequiredDeseret = 1;
    var set = regenerateExports();
    set.addRange(0x10400, 0x1044F);
    Deseret.characters = set;
    return Deseret;
  }

  var Devanagari = {};

  var hasRequiredDevanagari;
  function requireDevanagari() {
    if (hasRequiredDevanagari) return Devanagari;
    hasRequiredDevanagari = 1;
    var set = regenerateExports();
    set.addRange(0x900, 0x950).addRange(0x955, 0x963).addRange(0x966, 0x97F).addRange(0xA8E0, 0xA8FF).addRange(0x11B00, 0x11B09);
    Devanagari.characters = set;
    return Devanagari;
  }

  var Dives_Akuru = {};

  var hasRequiredDives_Akuru;
  function requireDives_Akuru() {
    if (hasRequiredDives_Akuru) return Dives_Akuru;
    hasRequiredDives_Akuru = 1;
    var set = regenerateExports(0x11909);
    set.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);
    Dives_Akuru.characters = set;
    return Dives_Akuru;
  }

  var Dogra = {};

  var hasRequiredDogra;
  function requireDogra() {
    if (hasRequiredDogra) return Dogra;
    hasRequiredDogra = 1;
    var set = regenerateExports();
    set.addRange(0x11800, 0x1183B);
    Dogra.characters = set;
    return Dogra;
  }

  var Duployan = {};

  var hasRequiredDuployan;
  function requireDuployan() {
    if (hasRequiredDuployan) return Duployan;
    hasRequiredDuployan = 1;
    var set = regenerateExports();
    set.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BC9F);
    Duployan.characters = set;
    return Duployan;
  }

  var Egyptian_Hieroglyphs = {};

  var hasRequiredEgyptian_Hieroglyphs;
  function requireEgyptian_Hieroglyphs() {
    if (hasRequiredEgyptian_Hieroglyphs) return Egyptian_Hieroglyphs;
    hasRequiredEgyptian_Hieroglyphs = 1;
    var set = regenerateExports();
    set.addRange(0x13000, 0x13455);
    Egyptian_Hieroglyphs.characters = set;
    return Egyptian_Hieroglyphs;
  }

  var Elbasan = {};

  var hasRequiredElbasan;
  function requireElbasan() {
    if (hasRequiredElbasan) return Elbasan;
    hasRequiredElbasan = 1;
    var set = regenerateExports();
    set.addRange(0x10500, 0x10527);
    Elbasan.characters = set;
    return Elbasan;
  }

  var Elymaic = {};

  var hasRequiredElymaic;
  function requireElymaic() {
    if (hasRequiredElymaic) return Elymaic;
    hasRequiredElymaic = 1;
    var set = regenerateExports();
    set.addRange(0x10FE0, 0x10FF6);
    Elymaic.characters = set;
    return Elymaic;
  }

  var Ethiopic = {};

  var hasRequiredEthiopic;
  function requireEthiopic() {
    if (hasRequiredEthiopic) return Ethiopic;
    hasRequiredEthiopic = 1;
    var set = regenerateExports(0x1258, 0x12C0);
    set.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);
    Ethiopic.characters = set;
    return Ethiopic;
  }

  var Georgian = {};

  var hasRequiredGeorgian;
  function requireGeorgian() {
    if (hasRequiredGeorgian) return Georgian;
    hasRequiredGeorgian = 1;
    var set = regenerateExports(0x10C7, 0x10CD, 0x2D27, 0x2D2D);
    set.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);
    Georgian.characters = set;
    return Georgian;
  }

  var Glagolitic = {};

  var hasRequiredGlagolitic;
  function requireGlagolitic() {
    if (hasRequiredGlagolitic) return Glagolitic;
    hasRequiredGlagolitic = 1;
    var set = regenerateExports();
    set.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);
    Glagolitic.characters = set;
    return Glagolitic;
  }

  var Gothic = {};

  var hasRequiredGothic;
  function requireGothic() {
    if (hasRequiredGothic) return Gothic;
    hasRequiredGothic = 1;
    var set = regenerateExports();
    set.addRange(0x10330, 0x1034A);
    Gothic.characters = set;
    return Gothic;
  }

  var Grantha = {};

  var hasRequiredGrantha;
  function requireGrantha() {
    if (hasRequiredGrantha) return Grantha;
    hasRequiredGrantha = 1;
    var set = regenerateExports(0x11350, 0x11357);
    set.addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133C, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374);
    Grantha.characters = set;
    return Grantha;
  }

  var Greek = {};

  var hasRequiredGreek;
  function requireGreek() {
    if (hasRequiredGreek) return Greek;
    hasRequiredGreek = 1;
    var set = regenerateExports(0x37F, 0x384, 0x386, 0x38C, 0x1DBF, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);
    set.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);
    Greek.characters = set;
    return Greek;
  }

  var Gujarati = {};

  var hasRequiredGujarati;
  function requireGujarati() {
    if (hasRequiredGujarati) return Gujarati;
    hasRequiredGujarati = 1;
    var set = regenerateExports(0xAD0);
    set.addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF);
    Gujarati.characters = set;
    return Gujarati;
  }

  var Gunjala_Gondi = {};

  var hasRequiredGunjala_Gondi;
  function requireGunjala_Gondi() {
    if (hasRequiredGunjala_Gondi) return Gunjala_Gondi;
    hasRequiredGunjala_Gondi = 1;
    var set = regenerateExports();
    set.addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);
    Gunjala_Gondi.characters = set;
    return Gunjala_Gondi;
  }

  var Gurmukhi = {};

  var hasRequiredGurmukhi;
  function requireGurmukhi() {
    if (hasRequiredGurmukhi) return Gurmukhi;
    hasRequiredGurmukhi = 1;
    var set = regenerateExports(0xA3C, 0xA51, 0xA5E);
    set.addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76);
    Gurmukhi.characters = set;
    return Gurmukhi;
  }

  var Han = {};

  var hasRequiredHan;
  function requireHan() {
    if (hasRequiredHan) return Han;
    hasRequiredHan = 1;
    var set = regenerateExports(0x3005, 0x3007);
    set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3021, 0x3029).addRange(0x3038, 0x303B).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2EBF0, 0x2EE5D).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
    Han.characters = set;
    return Han;
  }

  var Hangul = {};

  var hasRequiredHangul;
  function requireHangul() {
    if (hasRequiredHangul) return Hangul;
    hasRequiredHangul = 1;
    var set = regenerateExports();
    set.addRange(0x1100, 0x11FF).addRange(0x302E, 0x302F).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);
    Hangul.characters = set;
    return Hangul;
  }

  var Hanifi_Rohingya = {};

  var hasRequiredHanifi_Rohingya;
  function requireHanifi_Rohingya() {
    if (hasRequiredHanifi_Rohingya) return Hanifi_Rohingya;
    hasRequiredHanifi_Rohingya = 1;
    var set = regenerateExports();
    set.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);
    Hanifi_Rohingya.characters = set;
    return Hanifi_Rohingya;
  }

  var Hanunoo = {};

  var hasRequiredHanunoo;
  function requireHanunoo() {
    if (hasRequiredHanunoo) return Hanunoo;
    hasRequiredHanunoo = 1;
    var set = regenerateExports();
    set.addRange(0x1720, 0x1734);
    Hanunoo.characters = set;
    return Hanunoo;
  }

  var Hatran = {};

  var hasRequiredHatran;
  function requireHatran() {
    if (hasRequiredHatran) return Hatran;
    hasRequiredHatran = 1;
    var set = regenerateExports();
    set.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);
    Hatran.characters = set;
    return Hatran;
  }

  var Hebrew = {};

  var hasRequiredHebrew;
  function requireHebrew() {
    if (hasRequiredHebrew) return Hebrew;
    hasRequiredHebrew = 1;
    var set = regenerateExports(0xFB3E);
    set.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);
    Hebrew.characters = set;
    return Hebrew;
  }

  var Hiragana = {};

  var hasRequiredHiragana;
  function requireHiragana() {
    if (hasRequiredHiragana) return Hiragana;
    hasRequiredHiragana = 1;
    var set = regenerateExports(0x1B132, 0x1F200);
    set.addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);
    Hiragana.characters = set;
    return Hiragana;
  }

  var Imperial_Aramaic = {};

  var hasRequiredImperial_Aramaic;
  function requireImperial_Aramaic() {
    if (hasRequiredImperial_Aramaic) return Imperial_Aramaic;
    hasRequiredImperial_Aramaic = 1;
    var set = regenerateExports();
    set.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);
    Imperial_Aramaic.characters = set;
    return Imperial_Aramaic;
  }

  var Inherited = {};

  var hasRequiredInherited;
  function requireInherited() {
    if (hasRequiredInherited) return Inherited;
    hasRequiredInherited = 1;
    var set = regenerateExports(0x670, 0x1CED, 0x1CF4, 0x101FD, 0x102E0, 0x1133B);
    set.addRange(0x300, 0x36F).addRange(0x485, 0x486).addRange(0x64B, 0x655).addRange(0x951, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20F0).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);
    Inherited.characters = set;
    return Inherited;
  }

  var Inscriptional_Pahlavi = {};

  var hasRequiredInscriptional_Pahlavi;
  function requireInscriptional_Pahlavi() {
    if (hasRequiredInscriptional_Pahlavi) return Inscriptional_Pahlavi;
    hasRequiredInscriptional_Pahlavi = 1;
    var set = regenerateExports();
    set.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);
    Inscriptional_Pahlavi.characters = set;
    return Inscriptional_Pahlavi;
  }

  var Inscriptional_Parthian = {};

  var hasRequiredInscriptional_Parthian;
  function requireInscriptional_Parthian() {
    if (hasRequiredInscriptional_Parthian) return Inscriptional_Parthian;
    hasRequiredInscriptional_Parthian = 1;
    var set = regenerateExports();
    set.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);
    Inscriptional_Parthian.characters = set;
    return Inscriptional_Parthian;
  }

  var Javanese = {};

  var hasRequiredJavanese;
  function requireJavanese() {
    if (hasRequiredJavanese) return Javanese;
    hasRequiredJavanese = 1;
    var set = regenerateExports();
    set.addRange(0xA980, 0xA9CD).addRange(0xA9D0, 0xA9D9).addRange(0xA9DE, 0xA9DF);
    Javanese.characters = set;
    return Javanese;
  }

  var Kaithi = {};

  var hasRequiredKaithi;
  function requireKaithi() {
    if (hasRequiredKaithi) return Kaithi;
    hasRequiredKaithi = 1;
    var set = regenerateExports(0x110CD);
    set.addRange(0x11080, 0x110C2);
    Kaithi.characters = set;
    return Kaithi;
  }

  var Kannada = {};

  var hasRequiredKannada;
  function requireKannada() {
    if (hasRequiredKannada) return Kannada;
    hasRequiredKannada = 1;
    var set = regenerateExports();
    set.addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3);
    Kannada.characters = set;
    return Kannada;
  }

  var Katakana = {};

  var hasRequiredKatakana;
  function requireKatakana() {
    if (hasRequiredKatakana) return Katakana;
    hasRequiredKatakana = 1;
    var set = regenerateExports(0x1B000, 0x1B155);
    set.addRange(0x30A1, 0x30FA).addRange(0x30FD, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);
    Katakana.characters = set;
    return Katakana;
  }

  var Kawi = {};

  var hasRequiredKawi;
  function requireKawi() {
    if (hasRequiredKawi) return Kawi;
    hasRequiredKawi = 1;
    var set = regenerateExports();
    set.addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59);
    Kawi.characters = set;
    return Kawi;
  }

  var Kayah_Li = {};

  var hasRequiredKayah_Li;
  function requireKayah_Li() {
    if (hasRequiredKayah_Li) return Kayah_Li;
    hasRequiredKayah_Li = 1;
    var set = regenerateExports(0xA92F);
    set.addRange(0xA900, 0xA92D);
    Kayah_Li.characters = set;
    return Kayah_Li;
  }

  var Kharoshthi = {};

  var hasRequiredKharoshthi;
  function requireKharoshthi() {
    if (hasRequiredKharoshthi) return Kharoshthi;
    hasRequiredKharoshthi = 1;
    var set = regenerateExports();
    set.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);
    Kharoshthi.characters = set;
    return Kharoshthi;
  }

  var Khitan_Small_Script = {};

  var hasRequiredKhitan_Small_Script;
  function requireKhitan_Small_Script() {
    if (hasRequiredKhitan_Small_Script) return Khitan_Small_Script;
    hasRequiredKhitan_Small_Script = 1;
    var set = regenerateExports(0x16FE4);
    set.addRange(0x18B00, 0x18CD5);
    Khitan_Small_Script.characters = set;
    return Khitan_Small_Script;
  }

  var Khmer = {};

  var hasRequiredKhmer;
  function requireKhmer() {
    if (hasRequiredKhmer) return Khmer;
    hasRequiredKhmer = 1;
    var set = regenerateExports();
    set.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);
    Khmer.characters = set;
    return Khmer;
  }

  var Khojki = {};

  var hasRequiredKhojki;
  function requireKhojki() {
    if (hasRequiredKhojki) return Khojki;
    hasRequiredKhojki = 1;
    var set = regenerateExports();
    set.addRange(0x11200, 0x11211).addRange(0x11213, 0x11241);
    Khojki.characters = set;
    return Khojki;
  }

  var Khudawadi = {};

  var hasRequiredKhudawadi;
  function requireKhudawadi() {
    if (hasRequiredKhudawadi) return Khudawadi;
    hasRequiredKhudawadi = 1;
    var set = regenerateExports();
    set.addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);
    Khudawadi.characters = set;
    return Khudawadi;
  }

  var Lao = {};

  var hasRequiredLao;
  function requireLao() {
    if (hasRequiredLao) return Lao;
    hasRequiredLao = 1;
    var set = regenerateExports(0xE84, 0xEA5, 0xEC6);
    set.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);
    Lao.characters = set;
    return Lao;
  }

  var Latin = {};

  var hasRequiredLatin;
  function requireLatin() {
    if (hasRequiredLatin) return Latin;
    hasRequiredLatin = 1;
    var set = regenerateExports(0xAA, 0xBA, 0x2071, 0x207F, 0x2132, 0x214E, 0xA7D3);
    set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A);
    Latin.characters = set;
    return Latin;
  }

  var Lepcha = {};

  var hasRequiredLepcha;
  function requireLepcha() {
    if (hasRequiredLepcha) return Lepcha;
    hasRequiredLepcha = 1;
    var set = regenerateExports();
    set.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);
    Lepcha.characters = set;
    return Lepcha;
  }

  var Limbu = {};

  var hasRequiredLimbu;
  function requireLimbu() {
    if (hasRequiredLimbu) return Limbu;
    hasRequiredLimbu = 1;
    var set = regenerateExports(0x1940);
    set.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);
    Limbu.characters = set;
    return Limbu;
  }

  var Linear_A = {};

  var hasRequiredLinear_A;
  function requireLinear_A() {
    if (hasRequiredLinear_A) return Linear_A;
    hasRequiredLinear_A = 1;
    var set = regenerateExports();
    set.addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
    Linear_A.characters = set;
    return Linear_A;
  }

  var Linear_B = {};

  var hasRequiredLinear_B;
  function requireLinear_B() {
    if (hasRequiredLinear_B) return Linear_B;
    hasRequiredLinear_B = 1;
    var set = regenerateExports();
    set.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA);
    Linear_B.characters = set;
    return Linear_B;
  }

  var Lisu = {};

  var hasRequiredLisu;
  function requireLisu() {
    if (hasRequiredLisu) return Lisu;
    hasRequiredLisu = 1;
    var set = regenerateExports(0x11FB0);
    set.addRange(0xA4D0, 0xA4FF);
    Lisu.characters = set;
    return Lisu;
  }

  var Lycian = {};

  var hasRequiredLycian;
  function requireLycian() {
    if (hasRequiredLycian) return Lycian;
    hasRequiredLycian = 1;
    var set = regenerateExports();
    set.addRange(0x10280, 0x1029C);
    Lycian.characters = set;
    return Lycian;
  }

  var Lydian = {};

  var hasRequiredLydian;
  function requireLydian() {
    if (hasRequiredLydian) return Lydian;
    hasRequiredLydian = 1;
    var set = regenerateExports(0x1093F);
    set.addRange(0x10920, 0x10939);
    Lydian.characters = set;
    return Lydian;
  }

  var Mahajani = {};

  var hasRequiredMahajani;
  function requireMahajani() {
    if (hasRequiredMahajani) return Mahajani;
    hasRequiredMahajani = 1;
    var set = regenerateExports();
    set.addRange(0x11150, 0x11176);
    Mahajani.characters = set;
    return Mahajani;
  }

  var Makasar = {};

  var hasRequiredMakasar;
  function requireMakasar() {
    if (hasRequiredMakasar) return Makasar;
    hasRequiredMakasar = 1;
    var set = regenerateExports();
    set.addRange(0x11EE0, 0x11EF8);
    Makasar.characters = set;
    return Makasar;
  }

  var Malayalam = {};

  var hasRequiredMalayalam;
  function requireMalayalam() {
    if (hasRequiredMalayalam) return Malayalam;
    hasRequiredMalayalam = 1;
    var set = regenerateExports();
    set.addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F);
    Malayalam.characters = set;
    return Malayalam;
  }

  var Mandaic = {};

  var hasRequiredMandaic;
  function requireMandaic() {
    if (hasRequiredMandaic) return Mandaic;
    hasRequiredMandaic = 1;
    var set = regenerateExports(0x85E);
    set.addRange(0x840, 0x85B);
    Mandaic.characters = set;
    return Mandaic;
  }

  var Manichaean = {};

  var hasRequiredManichaean;
  function requireManichaean() {
    if (hasRequiredManichaean) return Manichaean;
    hasRequiredManichaean = 1;
    var set = regenerateExports();
    set.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);
    Manichaean.characters = set;
    return Manichaean;
  }

  var Marchen = {};

  var hasRequiredMarchen;
  function requireMarchen() {
    if (hasRequiredMarchen) return Marchen;
    hasRequiredMarchen = 1;
    var set = regenerateExports();
    set.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
    Marchen.characters = set;
    return Marchen;
  }

  var Masaram_Gondi = {};

  var hasRequiredMasaram_Gondi;
  function requireMasaram_Gondi() {
    if (hasRequiredMasaram_Gondi) return Masaram_Gondi;
    hasRequiredMasaram_Gondi = 1;
    var set = regenerateExports(0x11D3A);
    set.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);
    Masaram_Gondi.characters = set;
    return Masaram_Gondi;
  }

  var Medefaidrin = {};

  var hasRequiredMedefaidrin;
  function requireMedefaidrin() {
    if (hasRequiredMedefaidrin) return Medefaidrin;
    hasRequiredMedefaidrin = 1;
    var set = regenerateExports();
    set.addRange(0x16E40, 0x16E9A);
    Medefaidrin.characters = set;
    return Medefaidrin;
  }

  var Meetei_Mayek = {};

  var hasRequiredMeetei_Mayek;
  function requireMeetei_Mayek() {
    if (hasRequiredMeetei_Mayek) return Meetei_Mayek;
    hasRequiredMeetei_Mayek = 1;
    var set = regenerateExports();
    set.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);
    Meetei_Mayek.characters = set;
    return Meetei_Mayek;
  }

  var Mende_Kikakui = {};

  var hasRequiredMende_Kikakui;
  function requireMende_Kikakui() {
    if (hasRequiredMende_Kikakui) return Mende_Kikakui;
    hasRequiredMende_Kikakui = 1;
    var set = regenerateExports();
    set.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);
    Mende_Kikakui.characters = set;
    return Mende_Kikakui;
  }

  var Meroitic_Cursive = {};

  var hasRequiredMeroitic_Cursive;
  function requireMeroitic_Cursive() {
    if (hasRequiredMeroitic_Cursive) return Meroitic_Cursive;
    hasRequiredMeroitic_Cursive = 1;
    var set = regenerateExports();
    set.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);
    Meroitic_Cursive.characters = set;
    return Meroitic_Cursive;
  }

  var Meroitic_Hieroglyphs = {};

  var hasRequiredMeroitic_Hieroglyphs;
  function requireMeroitic_Hieroglyphs() {
    if (hasRequiredMeroitic_Hieroglyphs) return Meroitic_Hieroglyphs;
    hasRequiredMeroitic_Hieroglyphs = 1;
    var set = regenerateExports();
    set.addRange(0x10980, 0x1099F);
    Meroitic_Hieroglyphs.characters = set;
    return Meroitic_Hieroglyphs;
  }

  var Miao = {};

  var hasRequiredMiao;
  function requireMiao() {
    if (hasRequiredMiao) return Miao;
    hasRequiredMiao = 1;
    var set = regenerateExports();
    set.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);
    Miao.characters = set;
    return Miao;
  }

  var Modi = {};

  var hasRequiredModi;
  function requireModi() {
    if (hasRequiredModi) return Modi;
    hasRequiredModi = 1;
    var set = regenerateExports();
    set.addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);
    Modi.characters = set;
    return Modi;
  }

  var Mongolian = {};

  var hasRequiredMongolian;
  function requireMongolian() {
    if (hasRequiredMongolian) return Mongolian;
    hasRequiredMongolian = 1;
    var set = regenerateExports(0x1804);
    set.addRange(0x1800, 0x1801).addRange(0x1806, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);
    Mongolian.characters = set;
    return Mongolian;
  }

  var Mro = {};

  var hasRequiredMro;
  function requireMro() {
    if (hasRequiredMro) return Mro;
    hasRequiredMro = 1;
    var set = regenerateExports();
    set.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);
    Mro.characters = set;
    return Mro;
  }

  var Multani = {};

  var hasRequiredMultani;
  function requireMultani() {
    if (hasRequiredMultani) return Multani;
    hasRequiredMultani = 1;
    var set = regenerateExports(0x11288);
    set.addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);
    Multani.characters = set;
    return Multani;
  }

  var Myanmar = {};

  var hasRequiredMyanmar;
  function requireMyanmar() {
    if (hasRequiredMyanmar) return Myanmar;
    hasRequiredMyanmar = 1;
    var set = regenerateExports();
    set.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);
    Myanmar.characters = set;
    return Myanmar;
  }

  var Nabataean = {};

  var hasRequiredNabataean;
  function requireNabataean() {
    if (hasRequiredNabataean) return Nabataean;
    hasRequiredNabataean = 1;
    var set = regenerateExports();
    set.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);
    Nabataean.characters = set;
    return Nabataean;
  }

  var Nag_Mundari = {};

  var hasRequiredNag_Mundari;
  function requireNag_Mundari() {
    if (hasRequiredNag_Mundari) return Nag_Mundari;
    hasRequiredNag_Mundari = 1;
    var set = regenerateExports();
    set.addRange(0x1E4D0, 0x1E4F9);
    Nag_Mundari.characters = set;
    return Nag_Mundari;
  }

  var Nandinagari = {};

  var hasRequiredNandinagari;
  function requireNandinagari() {
    if (hasRequiredNandinagari) return Nandinagari;
    hasRequiredNandinagari = 1;
    var set = regenerateExports();
    set.addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);
    Nandinagari.characters = set;
    return Nandinagari;
  }

  var New_Tai_Lue = {};

  var hasRequiredNew_Tai_Lue;
  function requireNew_Tai_Lue() {
    if (hasRequiredNew_Tai_Lue) return New_Tai_Lue;
    hasRequiredNew_Tai_Lue = 1;
    var set = regenerateExports();
    set.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);
    New_Tai_Lue.characters = set;
    return New_Tai_Lue;
  }

  var Newa = {};

  var hasRequiredNewa;
  function requireNewa() {
    if (hasRequiredNewa) return Newa;
    hasRequiredNewa = 1;
    var set = regenerateExports();
    set.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);
    Newa.characters = set;
    return Newa;
  }

  var Nko = {};

  var hasRequiredNko;
  function requireNko() {
    if (hasRequiredNko) return Nko;
    hasRequiredNko = 1;
    var set = regenerateExports();
    set.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF);
    Nko.characters = set;
    return Nko;
  }

  var Nushu = {};

  var hasRequiredNushu;
  function requireNushu() {
    if (hasRequiredNushu) return Nushu;
    hasRequiredNushu = 1;
    var set = regenerateExports(0x16FE1);
    set.addRange(0x1B170, 0x1B2FB);
    Nushu.characters = set;
    return Nushu;
  }

  var Nyiakeng_Puachue_Hmong = {};

  var hasRequiredNyiakeng_Puachue_Hmong;
  function requireNyiakeng_Puachue_Hmong() {
    if (hasRequiredNyiakeng_Puachue_Hmong) return Nyiakeng_Puachue_Hmong;
    hasRequiredNyiakeng_Puachue_Hmong = 1;
    var set = regenerateExports();
    set.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);
    Nyiakeng_Puachue_Hmong.characters = set;
    return Nyiakeng_Puachue_Hmong;
  }

  var Ogham = {};

  var hasRequiredOgham;
  function requireOgham() {
    if (hasRequiredOgham) return Ogham;
    hasRequiredOgham = 1;
    var set = regenerateExports();
    set.addRange(0x1680, 0x169C);
    Ogham.characters = set;
    return Ogham;
  }

  var Ol_Chiki = {};

  var hasRequiredOl_Chiki;
  function requireOl_Chiki() {
    if (hasRequiredOl_Chiki) return Ol_Chiki;
    hasRequiredOl_Chiki = 1;
    var set = regenerateExports();
    set.addRange(0x1C50, 0x1C7F);
    Ol_Chiki.characters = set;
    return Ol_Chiki;
  }

  var Old_Hungarian = {};

  var hasRequiredOld_Hungarian;
  function requireOld_Hungarian() {
    if (hasRequiredOld_Hungarian) return Old_Hungarian;
    hasRequiredOld_Hungarian = 1;
    var set = regenerateExports();
    set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);
    Old_Hungarian.characters = set;
    return Old_Hungarian;
  }

  var Old_Italic = {};

  var hasRequiredOld_Italic;
  function requireOld_Italic() {
    if (hasRequiredOld_Italic) return Old_Italic;
    hasRequiredOld_Italic = 1;
    var set = regenerateExports();
    set.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);
    Old_Italic.characters = set;
    return Old_Italic;
  }

  var Old_North_Arabian = {};

  var hasRequiredOld_North_Arabian;
  function requireOld_North_Arabian() {
    if (hasRequiredOld_North_Arabian) return Old_North_Arabian;
    hasRequiredOld_North_Arabian = 1;
    var set = regenerateExports();
    set.addRange(0x10A80, 0x10A9F);
    Old_North_Arabian.characters = set;
    return Old_North_Arabian;
  }

  var Old_Permic = {};

  var hasRequiredOld_Permic;
  function requireOld_Permic() {
    if (hasRequiredOld_Permic) return Old_Permic;
    hasRequiredOld_Permic = 1;
    var set = regenerateExports();
    set.addRange(0x10350, 0x1037A);
    Old_Permic.characters = set;
    return Old_Permic;
  }

  var Old_Persian = {};

  var hasRequiredOld_Persian;
  function requireOld_Persian() {
    if (hasRequiredOld_Persian) return Old_Persian;
    hasRequiredOld_Persian = 1;
    var set = regenerateExports();
    set.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);
    Old_Persian.characters = set;
    return Old_Persian;
  }

  var Old_Sogdian = {};

  var hasRequiredOld_Sogdian;
  function requireOld_Sogdian() {
    if (hasRequiredOld_Sogdian) return Old_Sogdian;
    hasRequiredOld_Sogdian = 1;
    var set = regenerateExports();
    set.addRange(0x10F00, 0x10F27);
    Old_Sogdian.characters = set;
    return Old_Sogdian;
  }

  var Old_South_Arabian = {};

  var hasRequiredOld_South_Arabian;
  function requireOld_South_Arabian() {
    if (hasRequiredOld_South_Arabian) return Old_South_Arabian;
    hasRequiredOld_South_Arabian = 1;
    var set = regenerateExports();
    set.addRange(0x10A60, 0x10A7F);
    Old_South_Arabian.characters = set;
    return Old_South_Arabian;
  }

  var Old_Turkic = {};

  var hasRequiredOld_Turkic;
  function requireOld_Turkic() {
    if (hasRequiredOld_Turkic) return Old_Turkic;
    hasRequiredOld_Turkic = 1;
    var set = regenerateExports();
    set.addRange(0x10C00, 0x10C48);
    Old_Turkic.characters = set;
    return Old_Turkic;
  }

  var Old_Uyghur = {};

  var hasRequiredOld_Uyghur;
  function requireOld_Uyghur() {
    if (hasRequiredOld_Uyghur) return Old_Uyghur;
    hasRequiredOld_Uyghur = 1;
    var set = regenerateExports();
    set.addRange(0x10F70, 0x10F89);
    Old_Uyghur.characters = set;
    return Old_Uyghur;
  }

  var Oriya = {};

  var hasRequiredOriya;
  function requireOriya() {
    if (hasRequiredOriya) return Oriya;
    hasRequiredOriya = 1;
    var set = regenerateExports();
    set.addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);
    Oriya.characters = set;
    return Oriya;
  }

  var Osage = {};

  var hasRequiredOsage;
  function requireOsage() {
    if (hasRequiredOsage) return Osage;
    hasRequiredOsage = 1;
    var set = regenerateExports();
    set.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);
    Osage.characters = set;
    return Osage;
  }

  var Osmanya = {};

  var hasRequiredOsmanya;
  function requireOsmanya() {
    if (hasRequiredOsmanya) return Osmanya;
    hasRequiredOsmanya = 1;
    var set = regenerateExports();
    set.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);
    Osmanya.characters = set;
    return Osmanya;
  }

  var Pahawh_Hmong = {};

  var hasRequiredPahawh_Hmong;
  function requirePahawh_Hmong() {
    if (hasRequiredPahawh_Hmong) return Pahawh_Hmong;
    hasRequiredPahawh_Hmong = 1;
    var set = regenerateExports();
    set.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);
    Pahawh_Hmong.characters = set;
    return Pahawh_Hmong;
  }

  var Palmyrene = {};

  var hasRequiredPalmyrene;
  function requirePalmyrene() {
    if (hasRequiredPalmyrene) return Palmyrene;
    hasRequiredPalmyrene = 1;
    var set = regenerateExports();
    set.addRange(0x10860, 0x1087F);
    Palmyrene.characters = set;
    return Palmyrene;
  }

  var Pau_Cin_Hau = {};

  var hasRequiredPau_Cin_Hau;
  function requirePau_Cin_Hau() {
    if (hasRequiredPau_Cin_Hau) return Pau_Cin_Hau;
    hasRequiredPau_Cin_Hau = 1;
    var set = regenerateExports();
    set.addRange(0x11AC0, 0x11AF8);
    Pau_Cin_Hau.characters = set;
    return Pau_Cin_Hau;
  }

  var Phags_Pa = {};

  var hasRequiredPhags_Pa;
  function requirePhags_Pa() {
    if (hasRequiredPhags_Pa) return Phags_Pa;
    hasRequiredPhags_Pa = 1;
    var set = regenerateExports();
    set.addRange(0xA840, 0xA877);
    Phags_Pa.characters = set;
    return Phags_Pa;
  }

  var Phoenician = {};

  var hasRequiredPhoenician;
  function requirePhoenician() {
    if (hasRequiredPhoenician) return Phoenician;
    hasRequiredPhoenician = 1;
    var set = regenerateExports(0x1091F);
    set.addRange(0x10900, 0x1091B);
    Phoenician.characters = set;
    return Phoenician;
  }

  var Psalter_Pahlavi = {};

  var hasRequiredPsalter_Pahlavi;
  function requirePsalter_Pahlavi() {
    if (hasRequiredPsalter_Pahlavi) return Psalter_Pahlavi;
    hasRequiredPsalter_Pahlavi = 1;
    var set = regenerateExports();
    set.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);
    Psalter_Pahlavi.characters = set;
    return Psalter_Pahlavi;
  }

  var Rejang = {};

  var hasRequiredRejang;
  function requireRejang() {
    if (hasRequiredRejang) return Rejang;
    hasRequiredRejang = 1;
    var set = regenerateExports(0xA95F);
    set.addRange(0xA930, 0xA953);
    Rejang.characters = set;
    return Rejang;
  }

  var Runic = {};

  var hasRequiredRunic;
  function requireRunic() {
    if (hasRequiredRunic) return Runic;
    hasRequiredRunic = 1;
    var set = regenerateExports();
    set.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);
    Runic.characters = set;
    return Runic;
  }

  var Samaritan = {};

  var hasRequiredSamaritan;
  function requireSamaritan() {
    if (hasRequiredSamaritan) return Samaritan;
    hasRequiredSamaritan = 1;
    var set = regenerateExports();
    set.addRange(0x800, 0x82D).addRange(0x830, 0x83E);
    Samaritan.characters = set;
    return Samaritan;
  }

  var Saurashtra = {};

  var hasRequiredSaurashtra;
  function requireSaurashtra() {
    if (hasRequiredSaurashtra) return Saurashtra;
    hasRequiredSaurashtra = 1;
    var set = regenerateExports();
    set.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);
    Saurashtra.characters = set;
    return Saurashtra;
  }

  var Sharada = {};

  var hasRequiredSharada;
  function requireSharada() {
    if (hasRequiredSharada) return Sharada;
    hasRequiredSharada = 1;
    var set = regenerateExports();
    set.addRange(0x11180, 0x111DF);
    Sharada.characters = set;
    return Sharada;
  }

  var Shavian = {};

  var hasRequiredShavian;
  function requireShavian() {
    if (hasRequiredShavian) return Shavian;
    hasRequiredShavian = 1;
    var set = regenerateExports();
    set.addRange(0x10450, 0x1047F);
    Shavian.characters = set;
    return Shavian;
  }

  var Siddham = {};

  var hasRequiredSiddham;
  function requireSiddham() {
    if (hasRequiredSiddham) return Siddham;
    hasRequiredSiddham = 1;
    var set = regenerateExports();
    set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);
    Siddham.characters = set;
    return Siddham;
  }

  var SignWriting = {};

  var hasRequiredSignWriting;
  function requireSignWriting() {
    if (hasRequiredSignWriting) return SignWriting;
    hasRequiredSignWriting = 1;
    var set = regenerateExports();
    set.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);
    SignWriting.characters = set;
    return SignWriting;
  }

  var Sinhala = {};

  var hasRequiredSinhala;
  function requireSinhala() {
    if (hasRequiredSinhala) return Sinhala;
    hasRequiredSinhala = 1;
    var set = regenerateExports(0xDBD, 0xDCA, 0xDD6);
    set.addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);
    Sinhala.characters = set;
    return Sinhala;
  }

  var Sogdian = {};

  var hasRequiredSogdian;
  function requireSogdian() {
    if (hasRequiredSogdian) return Sogdian;
    hasRequiredSogdian = 1;
    var set = regenerateExports();
    set.addRange(0x10F30, 0x10F59);
    Sogdian.characters = set;
    return Sogdian;
  }

  var Sora_Sompeng = {};

  var hasRequiredSora_Sompeng;
  function requireSora_Sompeng() {
    if (hasRequiredSora_Sompeng) return Sora_Sompeng;
    hasRequiredSora_Sompeng = 1;
    var set = regenerateExports();
    set.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);
    Sora_Sompeng.characters = set;
    return Sora_Sompeng;
  }

  var Soyombo = {};

  var hasRequiredSoyombo;
  function requireSoyombo() {
    if (hasRequiredSoyombo) return Soyombo;
    hasRequiredSoyombo = 1;
    var set = regenerateExports();
    set.addRange(0x11A50, 0x11AA2);
    Soyombo.characters = set;
    return Soyombo;
  }

  var Sundanese = {};

  var hasRequiredSundanese;
  function requireSundanese() {
    if (hasRequiredSundanese) return Sundanese;
    hasRequiredSundanese = 1;
    var set = regenerateExports();
    set.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);
    Sundanese.characters = set;
    return Sundanese;
  }

  var Syloti_Nagri = {};

  var hasRequiredSyloti_Nagri;
  function requireSyloti_Nagri() {
    if (hasRequiredSyloti_Nagri) return Syloti_Nagri;
    hasRequiredSyloti_Nagri = 1;
    var set = regenerateExports();
    set.addRange(0xA800, 0xA82C);
    Syloti_Nagri.characters = set;
    return Syloti_Nagri;
  }

  var Syriac = {};

  var hasRequiredSyriac;
  function requireSyriac() {
    if (hasRequiredSyriac) return Syriac;
    hasRequiredSyriac = 1;
    var set = regenerateExports();
    set.addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);
    Syriac.characters = set;
    return Syriac;
  }

  var Tagalog = {};

  var hasRequiredTagalog;
  function requireTagalog() {
    if (hasRequiredTagalog) return Tagalog;
    hasRequiredTagalog = 1;
    var set = regenerateExports(0x171F);
    set.addRange(0x1700, 0x1715);
    Tagalog.characters = set;
    return Tagalog;
  }

  var Tagbanwa = {};

  var hasRequiredTagbanwa;
  function requireTagbanwa() {
    if (hasRequiredTagbanwa) return Tagbanwa;
    hasRequiredTagbanwa = 1;
    var set = regenerateExports();
    set.addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);
    Tagbanwa.characters = set;
    return Tagbanwa;
  }

  var Tai_Le = {};

  var hasRequiredTai_Le;
  function requireTai_Le() {
    if (hasRequiredTai_Le) return Tai_Le;
    hasRequiredTai_Le = 1;
    var set = regenerateExports();
    set.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);
    Tai_Le.characters = set;
    return Tai_Le;
  }

  var Tai_Tham = {};

  var hasRequiredTai_Tham;
  function requireTai_Tham() {
    if (hasRequiredTai_Tham) return Tai_Tham;
    hasRequiredTai_Tham = 1;
    var set = regenerateExports();
    set.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);
    Tai_Tham.characters = set;
    return Tai_Tham;
  }

  var Tai_Viet = {};

  var hasRequiredTai_Viet;
  function requireTai_Viet() {
    if (hasRequiredTai_Viet) return Tai_Viet;
    hasRequiredTai_Viet = 1;
    var set = regenerateExports();
    set.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);
    Tai_Viet.characters = set;
    return Tai_Viet;
  }

  var Takri = {};

  var hasRequiredTakri;
  function requireTakri() {
    if (hasRequiredTakri) return Takri;
    hasRequiredTakri = 1;
    var set = regenerateExports();
    set.addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);
    Takri.characters = set;
    return Takri;
  }

  var Tamil = {};

  var hasRequiredTamil;
  function requireTamil() {
    if (hasRequiredTamil) return Tamil;
    hasRequiredTamil = 1;
    var set = regenerateExports(0xB9C, 0xBD0, 0xBD7, 0x11FFF);
    set.addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x11FC0, 0x11FF1);
    Tamil.characters = set;
    return Tamil;
  }

  var Tangsa = {};

  var hasRequiredTangsa;
  function requireTangsa() {
    if (hasRequiredTangsa) return Tangsa;
    hasRequiredTangsa = 1;
    var set = regenerateExports();
    set.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);
    Tangsa.characters = set;
    return Tangsa;
  }

  var Tangut = {};

  var hasRequiredTangut;
  function requireTangut() {
    if (hasRequiredTangut) return Tangut;
    hasRequiredTangut = 1;
    var set = regenerateExports(0x16FE0);
    set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);
    Tangut.characters = set;
    return Tangut;
  }

  var Telugu = {};

  var hasRequiredTelugu;
  function requireTelugu() {
    if (hasRequiredTelugu) return Telugu;
    hasRequiredTelugu = 1;
    var set = regenerateExports(0xC5D);
    set.addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);
    Telugu.characters = set;
    return Telugu;
  }

  var Thaana = {};

  var hasRequiredThaana;
  function requireThaana() {
    if (hasRequiredThaana) return Thaana;
    hasRequiredThaana = 1;
    var set = regenerateExports();
    set.addRange(0x780, 0x7B1);
    Thaana.characters = set;
    return Thaana;
  }

  var Thai = {};

  var hasRequiredThai;
  function requireThai() {
    if (hasRequiredThai) return Thai;
    hasRequiredThai = 1;
    var set = regenerateExports();
    set.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);
    Thai.characters = set;
    return Thai;
  }

  var Tibetan = {};

  var hasRequiredTibetan;
  function requireTibetan() {
    if (hasRequiredTibetan) return Tibetan;
    hasRequiredTibetan = 1;
    var set = regenerateExports();
    set.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);
    Tibetan.characters = set;
    return Tibetan;
  }

  var Tifinagh = {};

  var hasRequiredTifinagh;
  function requireTifinagh() {
    if (hasRequiredTifinagh) return Tifinagh;
    hasRequiredTifinagh = 1;
    var set = regenerateExports(0x2D7F);
    set.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);
    Tifinagh.characters = set;
    return Tifinagh;
  }

  var Tirhuta = {};

  var hasRequiredTirhuta;
  function requireTirhuta() {
    if (hasRequiredTirhuta) return Tirhuta;
    hasRequiredTirhuta = 1;
    var set = regenerateExports();
    set.addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);
    Tirhuta.characters = set;
    return Tirhuta;
  }

  var Toto = {};

  var hasRequiredToto;
  function requireToto() {
    if (hasRequiredToto) return Toto;
    hasRequiredToto = 1;
    var set = regenerateExports();
    set.addRange(0x1E290, 0x1E2AE);
    Toto.characters = set;
    return Toto;
  }

  var Ugaritic = {};

  var hasRequiredUgaritic;
  function requireUgaritic() {
    if (hasRequiredUgaritic) return Ugaritic;
    hasRequiredUgaritic = 1;
    var set = regenerateExports(0x1039F);
    set.addRange(0x10380, 0x1039D);
    Ugaritic.characters = set;
    return Ugaritic;
  }

  var Vai = {};

  var hasRequiredVai;
  function requireVai() {
    if (hasRequiredVai) return Vai;
    hasRequiredVai = 1;
    var set = regenerateExports();
    set.addRange(0xA500, 0xA62B);
    Vai.characters = set;
    return Vai;
  }

  var Vithkuqi = {};

  var hasRequiredVithkuqi;
  function requireVithkuqi() {
    if (hasRequiredVithkuqi) return Vithkuqi;
    hasRequiredVithkuqi = 1;
    var set = regenerateExports();
    set.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);
    Vithkuqi.characters = set;
    return Vithkuqi;
  }

  var Wancho = {};

  var hasRequiredWancho;
  function requireWancho() {
    if (hasRequiredWancho) return Wancho;
    hasRequiredWancho = 1;
    var set = regenerateExports(0x1E2FF);
    set.addRange(0x1E2C0, 0x1E2F9);
    Wancho.characters = set;
    return Wancho;
  }

  var Warang_Citi = {};

  var hasRequiredWarang_Citi;
  function requireWarang_Citi() {
    if (hasRequiredWarang_Citi) return Warang_Citi;
    hasRequiredWarang_Citi = 1;
    var set = regenerateExports(0x118FF);
    set.addRange(0x118A0, 0x118F2);
    Warang_Citi.characters = set;
    return Warang_Citi;
  }

  var Yezidi = {};

  var hasRequiredYezidi;
  function requireYezidi() {
    if (hasRequiredYezidi) return Yezidi;
    hasRequiredYezidi = 1;
    var set = regenerateExports();
    set.addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);
    Yezidi.characters = set;
    return Yezidi;
  }

  var Yi = {};

  var hasRequiredYi;
  function requireYi() {
    if (hasRequiredYi) return Yi;
    hasRequiredYi = 1;
    var set = regenerateExports();
    set.addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6);
    Yi.characters = set;
    return Yi;
  }

  var Zanabazar_Square = {};

  var hasRequiredZanabazar_Square;
  function requireZanabazar_Square() {
    if (hasRequiredZanabazar_Square) return Zanabazar_Square;
    hasRequiredZanabazar_Square = 1;
    var set = regenerateExports();
    set.addRange(0x11A00, 0x11A47);
    Zanabazar_Square.characters = set;
    return Zanabazar_Square;
  }

  var unicodeVersion;
  var hasRequiredUnicodeVersion;
  function requireUnicodeVersion() {
    if (hasRequiredUnicodeVersion) return unicodeVersion;
    hasRequiredUnicodeVersion = 1;
    unicodeVersion = '15.1.0';
    return unicodeVersion;
  }

  var dynamicModules;

  function getDynamicModules() {
  	return dynamicModules || (dynamicModules = {
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Alphabetic.js": requireAlphabetic,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Any.js": requireAny,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/ASCII_Hex_Digit.js": requireASCII_Hex_Digit,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/ASCII.js": requireASCII,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js": requireAssigned,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Control.js": requireBidi_Control,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Mirrored.js": requireBidi_Mirrored,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Case_Ignorable.js": requireCase_Ignorable,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Cased.js": requireCased,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casefolded.js": requireChanges_When_Casefolded,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casemapped.js": requireChanges_When_Casemapped,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Lowercased.js": requireChanges_When_Lowercased,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js": requireChanges_When_NFKC_Casefolded,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Titlecased.js": requireChanges_When_Titlecased,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Uppercased.js": requireChanges_When_Uppercased,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Dash.js": requireDash,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Default_Ignorable_Code_Point.js": requireDefault_Ignorable_Code_Point,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Deprecated.js": requireDeprecated,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Diacritic.js": requireDiacritic,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Component.js": requireEmoji_Component,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier_Base.js": requireEmoji_Modifier_Base,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier.js": requireEmoji_Modifier,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Presentation.js": requireEmoji_Presentation,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Emoji.js": requireEmoji,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Extended_Pictographic.js": requireExtended_Pictographic,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Extender.js": requireExtender,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js": requireGrapheme_Base,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Extend.js": requireGrapheme_Extend,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Hex_Digit.js": requireHex_Digit,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/ID_Continue.js": requireID_Continue,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/ID_Start.js": requireID_Start,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Ideographic.js": requireIdeographic,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Binary_Operator.js": requireIDS_Binary_Operator,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Trinary_Operator.js": requireIDS_Trinary_Operator,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Join_Control.js": requireJoin_Control,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Logical_Order_Exception.js": requireLogical_Order_Exception,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Lowercase.js": requireLowercase,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Math.js": require_Math,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Noncharacter_Code_Point.js": requireNoncharacter_Code_Point,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_Syntax.js": requirePattern_Syntax,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_White_Space.js": requirePattern_White_Space,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Quotation_Mark.js": requireQuotation_Mark,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Radical.js": requireRadical,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Regional_Indicator.js": requireRegional_Indicator,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Sentence_Terminal.js": requireSentence_Terminal,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Soft_Dotted.js": requireSoft_Dotted,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Terminal_Punctuation.js": requireTerminal_Punctuation,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Unified_Ideograph.js": requireUnified_Ideograph,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Uppercase.js": requireUppercase,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/Variation_Selector.js": requireVariation_Selector,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/White_Space.js": requireWhite_Space,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/XID_Continue.js": requireXID_Continue,
  		"/node_modules/regenerate-unicode-properties/Binary_Property/XID_Start.js": requireXID_Start,
  		"/node_modules/regenerate-unicode-properties/General_Category/Cased_Letter.js": requireCased_Letter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Close_Punctuation.js": requireClose_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Connector_Punctuation.js": requireConnector_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Control.js": requireControl,
  		"/node_modules/regenerate-unicode-properties/General_Category/Currency_Symbol.js": requireCurrency_Symbol,
  		"/node_modules/regenerate-unicode-properties/General_Category/Dash_Punctuation.js": requireDash_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Decimal_Number.js": requireDecimal_Number,
  		"/node_modules/regenerate-unicode-properties/General_Category/Enclosing_Mark.js": requireEnclosing_Mark,
  		"/node_modules/regenerate-unicode-properties/General_Category/Final_Punctuation.js": requireFinal_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Format.js": requireFormat,
  		"/node_modules/regenerate-unicode-properties/General_Category/Initial_Punctuation.js": requireInitial_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Letter_Number.js": requireLetter_Number,
  		"/node_modules/regenerate-unicode-properties/General_Category/Letter.js": requireLetter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Line_Separator.js": requireLine_Separator,
  		"/node_modules/regenerate-unicode-properties/General_Category/Lowercase_Letter.js": requireLowercase_Letter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Mark.js": requireMark,
  		"/node_modules/regenerate-unicode-properties/General_Category/Math_Symbol.js": requireMath_Symbol,
  		"/node_modules/regenerate-unicode-properties/General_Category/Modifier_Letter.js": requireModifier_Letter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Modifier_Symbol.js": requireModifier_Symbol,
  		"/node_modules/regenerate-unicode-properties/General_Category/Nonspacing_Mark.js": requireNonspacing_Mark,
  		"/node_modules/regenerate-unicode-properties/General_Category/Number.js": require_Number,
  		"/node_modules/regenerate-unicode-properties/General_Category/Open_Punctuation.js": requireOpen_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Other_Letter.js": requireOther_Letter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Other_Number.js": requireOther_Number,
  		"/node_modules/regenerate-unicode-properties/General_Category/Other_Punctuation.js": requireOther_Punctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js": requireOther_Symbol,
  		"/node_modules/regenerate-unicode-properties/General_Category/Other.js": requireOther,
  		"/node_modules/regenerate-unicode-properties/General_Category/Paragraph_Separator.js": requireParagraph_Separator,
  		"/node_modules/regenerate-unicode-properties/General_Category/Private_Use.js": requirePrivate_Use,
  		"/node_modules/regenerate-unicode-properties/General_Category/Punctuation.js": requirePunctuation,
  		"/node_modules/regenerate-unicode-properties/General_Category/Separator.js": requireSeparator,
  		"/node_modules/regenerate-unicode-properties/General_Category/Space_Separator.js": requireSpace_Separator,
  		"/node_modules/regenerate-unicode-properties/General_Category/Spacing_Mark.js": requireSpacing_Mark,
  		"/node_modules/regenerate-unicode-properties/General_Category/Surrogate.js": requireSurrogate,
  		"/node_modules/regenerate-unicode-properties/General_Category/Symbol.js": require_Symbol,
  		"/node_modules/regenerate-unicode-properties/General_Category/Titlecase_Letter.js": requireTitlecase_Letter,
  		"/node_modules/regenerate-unicode-properties/General_Category/Unassigned.js": requireUnassigned,
  		"/node_modules/regenerate-unicode-properties/General_Category/Uppercase_Letter.js": requireUppercase_Letter,
  		"/node_modules/regenerate-unicode-properties/index.js": requireRegenerateUnicodeProperties,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/Basic_Emoji.js": requireBasic_Emoji,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/Emoji_Keycap_Sequence.js": requireEmoji_Keycap_Sequence,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Flag_Sequence.js": requireRGI_Emoji_Flag_Sequence,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Modifier_Sequence.js": requireRGI_Emoji_Modifier_Sequence,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Tag_Sequence.js": requireRGI_Emoji_Tag_Sequence,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_ZWJ_Sequence.js": requireRGI_Emoji_ZWJ_Sequence,
  		"/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji.js": requireRGI_Emoji,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Adlam.js": requireAdlam$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Ahom.js": requireAhom$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Anatolian_Hieroglyphs.js": requireAnatolian_Hieroglyphs$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Arabic.js": requireArabic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Armenian.js": requireArmenian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Avestan.js": requireAvestan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Balinese.js": requireBalinese$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Bamum.js": requireBamum$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Bassa_Vah.js": requireBassa_Vah$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Batak.js": requireBatak$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Bengali.js": requireBengali$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Bhaiksuki.js": requireBhaiksuki$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Bopomofo.js": requireBopomofo$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Brahmi.js": requireBrahmi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Braille.js": requireBraille$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Buginese.js": requireBuginese$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Buhid.js": requireBuhid$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Canadian_Aboriginal.js": requireCanadian_Aboriginal$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Carian.js": requireCarian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Caucasian_Albanian.js": requireCaucasian_Albanian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Chakma.js": requireChakma$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cham.js": requireCham$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cherokee.js": requireCherokee$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Chorasmian.js": requireChorasmian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Common.js": requireCommon$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Coptic.js": requireCoptic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cuneiform.js": requireCuneiform$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cypriot.js": requireCypriot$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cypro_Minoan.js": requireCypro_Minoan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Cyrillic.js": requireCyrillic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Deseret.js": requireDeseret$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Devanagari.js": requireDevanagari$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Dives_Akuru.js": requireDives_Akuru$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Dogra.js": requireDogra$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Duployan.js": requireDuployan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Egyptian_Hieroglyphs.js": requireEgyptian_Hieroglyphs$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Elbasan.js": requireElbasan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Elymaic.js": requireElymaic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Ethiopic.js": requireEthiopic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Georgian.js": requireGeorgian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Glagolitic.js": requireGlagolitic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Gothic.js": requireGothic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Grantha.js": requireGrantha$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Greek.js": requireGreek$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Gujarati.js": requireGujarati$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Gunjala_Gondi.js": requireGunjala_Gondi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Gurmukhi.js": requireGurmukhi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Han.js": requireHan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hangul.js": requireHangul$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hanifi_Rohingya.js": requireHanifi_Rohingya$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hanunoo.js": requireHanunoo$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hatran.js": requireHatran$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hebrew.js": requireHebrew$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Hiragana.js": requireHiragana$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Imperial_Aramaic.js": requireImperial_Aramaic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Inherited.js": requireInherited$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Pahlavi.js": requireInscriptional_Pahlavi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Parthian.js": requireInscriptional_Parthian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Javanese.js": requireJavanese$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Kaithi.js": requireKaithi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Kannada.js": requireKannada$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Katakana.js": requireKatakana$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Kawi.js": requireKawi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Kayah_Li.js": requireKayah_Li$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Kharoshthi.js": requireKharoshthi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Khitan_Small_Script.js": requireKhitan_Small_Script$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Khmer.js": requireKhmer$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Khojki.js": requireKhojki$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Khudawadi.js": requireKhudawadi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Lao.js": requireLao$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Latin.js": requireLatin$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Lepcha.js": requireLepcha$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Limbu.js": requireLimbu$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_A.js": requireLinear_A$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_B.js": requireLinear_B$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Lisu.js": requireLisu$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Lycian.js": requireLycian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Lydian.js": requireLydian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Mahajani.js": requireMahajani$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Makasar.js": requireMakasar$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Malayalam.js": requireMalayalam$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Mandaic.js": requireMandaic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Manichaean.js": requireManichaean$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Marchen.js": requireMarchen$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Masaram_Gondi.js": requireMasaram_Gondi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Medefaidrin.js": requireMedefaidrin$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Meetei_Mayek.js": requireMeetei_Mayek$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Mende_Kikakui.js": requireMende_Kikakui$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Cursive.js": requireMeroitic_Cursive$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Hieroglyphs.js": requireMeroitic_Hieroglyphs$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Miao.js": requireMiao$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Modi.js": requireModi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Mongolian.js": requireMongolian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Mro.js": requireMro$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Multani.js": requireMultani$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Myanmar.js": requireMyanmar$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nabataean.js": requireNabataean$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nag_Mundari.js": requireNag_Mundari$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nandinagari.js": requireNandinagari$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/New_Tai_Lue.js": requireNew_Tai_Lue$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Newa.js": requireNewa$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nko.js": requireNko$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nushu.js": requireNushu$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Nyiakeng_Puachue_Hmong.js": requireNyiakeng_Puachue_Hmong$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Ogham.js": requireOgham$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Ol_Chiki.js": requireOl_Chiki$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Hungarian.js": requireOld_Hungarian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Italic.js": requireOld_Italic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_North_Arabian.js": requireOld_North_Arabian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Permic.js": requireOld_Permic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Persian.js": requireOld_Persian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Sogdian.js": requireOld_Sogdian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_South_Arabian.js": requireOld_South_Arabian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Turkic.js": requireOld_Turkic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Uyghur.js": requireOld_Uyghur$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Oriya.js": requireOriya$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Osage.js": requireOsage$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Osmanya.js": requireOsmanya$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Pahawh_Hmong.js": requirePahawh_Hmong$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Palmyrene.js": requirePalmyrene$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Pau_Cin_Hau.js": requirePau_Cin_Hau$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Phags_Pa.js": requirePhags_Pa$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Phoenician.js": requirePhoenician$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Psalter_Pahlavi.js": requirePsalter_Pahlavi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Rejang.js": requireRejang$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Runic.js": requireRunic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Samaritan.js": requireSamaritan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Saurashtra.js": requireSaurashtra$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Sharada.js": requireSharada$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Shavian.js": requireShavian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Siddham.js": requireSiddham$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/SignWriting.js": requireSignWriting$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Sinhala.js": requireSinhala$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Sogdian.js": requireSogdian$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Sora_Sompeng.js": requireSora_Sompeng$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Soyombo.js": requireSoyombo$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Sundanese.js": requireSundanese$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Syloti_Nagri.js": requireSyloti_Nagri$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Syriac.js": requireSyriac$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tagalog.js": requireTagalog$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tagbanwa.js": requireTagbanwa$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Le.js": requireTai_Le$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Tham.js": requireTai_Tham$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Viet.js": requireTai_Viet$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Takri.js": requireTakri$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tamil.js": requireTamil$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tangsa.js": requireTangsa$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tangut.js": requireTangut$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Telugu.js": requireTelugu$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Thaana.js": requireThaana$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Thai.js": requireThai$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tibetan.js": requireTibetan$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tifinagh.js": requireTifinagh$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Tirhuta.js": requireTirhuta$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Toto.js": requireToto$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Ugaritic.js": requireUgaritic$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Vai.js": requireVai$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Vithkuqi.js": requireVithkuqi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Wancho.js": requireWancho$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Warang_Citi.js": requireWarang_Citi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Yezidi.js": requireYezidi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Yi.js": requireYi$1,
  		"/node_modules/regenerate-unicode-properties/Script_Extensions/Zanabazar_Square.js": requireZanabazar_Square$1,
  		"/node_modules/regenerate-unicode-properties/Script/Adlam.js": requireAdlam,
  		"/node_modules/regenerate-unicode-properties/Script/Ahom.js": requireAhom,
  		"/node_modules/regenerate-unicode-properties/Script/Anatolian_Hieroglyphs.js": requireAnatolian_Hieroglyphs,
  		"/node_modules/regenerate-unicode-properties/Script/Arabic.js": requireArabic,
  		"/node_modules/regenerate-unicode-properties/Script/Armenian.js": requireArmenian,
  		"/node_modules/regenerate-unicode-properties/Script/Avestan.js": requireAvestan,
  		"/node_modules/regenerate-unicode-properties/Script/Balinese.js": requireBalinese,
  		"/node_modules/regenerate-unicode-properties/Script/Bamum.js": requireBamum,
  		"/node_modules/regenerate-unicode-properties/Script/Bassa_Vah.js": requireBassa_Vah,
  		"/node_modules/regenerate-unicode-properties/Script/Batak.js": requireBatak,
  		"/node_modules/regenerate-unicode-properties/Script/Bengali.js": requireBengali,
  		"/node_modules/regenerate-unicode-properties/Script/Bhaiksuki.js": requireBhaiksuki,
  		"/node_modules/regenerate-unicode-properties/Script/Bopomofo.js": requireBopomofo,
  		"/node_modules/regenerate-unicode-properties/Script/Brahmi.js": requireBrahmi,
  		"/node_modules/regenerate-unicode-properties/Script/Braille.js": requireBraille,
  		"/node_modules/regenerate-unicode-properties/Script/Buginese.js": requireBuginese,
  		"/node_modules/regenerate-unicode-properties/Script/Buhid.js": requireBuhid,
  		"/node_modules/regenerate-unicode-properties/Script/Canadian_Aboriginal.js": requireCanadian_Aboriginal,
  		"/node_modules/regenerate-unicode-properties/Script/Carian.js": requireCarian,
  		"/node_modules/regenerate-unicode-properties/Script/Caucasian_Albanian.js": requireCaucasian_Albanian,
  		"/node_modules/regenerate-unicode-properties/Script/Chakma.js": requireChakma,
  		"/node_modules/regenerate-unicode-properties/Script/Cham.js": requireCham,
  		"/node_modules/regenerate-unicode-properties/Script/Cherokee.js": requireCherokee,
  		"/node_modules/regenerate-unicode-properties/Script/Chorasmian.js": requireChorasmian,
  		"/node_modules/regenerate-unicode-properties/Script/Common.js": requireCommon,
  		"/node_modules/regenerate-unicode-properties/Script/Coptic.js": requireCoptic,
  		"/node_modules/regenerate-unicode-properties/Script/Cuneiform.js": requireCuneiform,
  		"/node_modules/regenerate-unicode-properties/Script/Cypriot.js": requireCypriot,
  		"/node_modules/regenerate-unicode-properties/Script/Cypro_Minoan.js": requireCypro_Minoan,
  		"/node_modules/regenerate-unicode-properties/Script/Cyrillic.js": requireCyrillic,
  		"/node_modules/regenerate-unicode-properties/Script/Deseret.js": requireDeseret,
  		"/node_modules/regenerate-unicode-properties/Script/Devanagari.js": requireDevanagari,
  		"/node_modules/regenerate-unicode-properties/Script/Dives_Akuru.js": requireDives_Akuru,
  		"/node_modules/regenerate-unicode-properties/Script/Dogra.js": requireDogra,
  		"/node_modules/regenerate-unicode-properties/Script/Duployan.js": requireDuployan,
  		"/node_modules/regenerate-unicode-properties/Script/Egyptian_Hieroglyphs.js": requireEgyptian_Hieroglyphs,
  		"/node_modules/regenerate-unicode-properties/Script/Elbasan.js": requireElbasan,
  		"/node_modules/regenerate-unicode-properties/Script/Elymaic.js": requireElymaic,
  		"/node_modules/regenerate-unicode-properties/Script/Ethiopic.js": requireEthiopic,
  		"/node_modules/regenerate-unicode-properties/Script/Georgian.js": requireGeorgian,
  		"/node_modules/regenerate-unicode-properties/Script/Glagolitic.js": requireGlagolitic,
  		"/node_modules/regenerate-unicode-properties/Script/Gothic.js": requireGothic,
  		"/node_modules/regenerate-unicode-properties/Script/Grantha.js": requireGrantha,
  		"/node_modules/regenerate-unicode-properties/Script/Greek.js": requireGreek,
  		"/node_modules/regenerate-unicode-properties/Script/Gujarati.js": requireGujarati,
  		"/node_modules/regenerate-unicode-properties/Script/Gunjala_Gondi.js": requireGunjala_Gondi,
  		"/node_modules/regenerate-unicode-properties/Script/Gurmukhi.js": requireGurmukhi,
  		"/node_modules/regenerate-unicode-properties/Script/Han.js": requireHan,
  		"/node_modules/regenerate-unicode-properties/Script/Hangul.js": requireHangul,
  		"/node_modules/regenerate-unicode-properties/Script/Hanifi_Rohingya.js": requireHanifi_Rohingya,
  		"/node_modules/regenerate-unicode-properties/Script/Hanunoo.js": requireHanunoo,
  		"/node_modules/regenerate-unicode-properties/Script/Hatran.js": requireHatran,
  		"/node_modules/regenerate-unicode-properties/Script/Hebrew.js": requireHebrew,
  		"/node_modules/regenerate-unicode-properties/Script/Hiragana.js": requireHiragana,
  		"/node_modules/regenerate-unicode-properties/Script/Imperial_Aramaic.js": requireImperial_Aramaic,
  		"/node_modules/regenerate-unicode-properties/Script/Inherited.js": requireInherited,
  		"/node_modules/regenerate-unicode-properties/Script/Inscriptional_Pahlavi.js": requireInscriptional_Pahlavi,
  		"/node_modules/regenerate-unicode-properties/Script/Inscriptional_Parthian.js": requireInscriptional_Parthian,
  		"/node_modules/regenerate-unicode-properties/Script/Javanese.js": requireJavanese,
  		"/node_modules/regenerate-unicode-properties/Script/Kaithi.js": requireKaithi,
  		"/node_modules/regenerate-unicode-properties/Script/Kannada.js": requireKannada,
  		"/node_modules/regenerate-unicode-properties/Script/Katakana.js": requireKatakana,
  		"/node_modules/regenerate-unicode-properties/Script/Kawi.js": requireKawi,
  		"/node_modules/regenerate-unicode-properties/Script/Kayah_Li.js": requireKayah_Li,
  		"/node_modules/regenerate-unicode-properties/Script/Kharoshthi.js": requireKharoshthi,
  		"/node_modules/regenerate-unicode-properties/Script/Khitan_Small_Script.js": requireKhitan_Small_Script,
  		"/node_modules/regenerate-unicode-properties/Script/Khmer.js": requireKhmer,
  		"/node_modules/regenerate-unicode-properties/Script/Khojki.js": requireKhojki,
  		"/node_modules/regenerate-unicode-properties/Script/Khudawadi.js": requireKhudawadi,
  		"/node_modules/regenerate-unicode-properties/Script/Lao.js": requireLao,
  		"/node_modules/regenerate-unicode-properties/Script/Latin.js": requireLatin,
  		"/node_modules/regenerate-unicode-properties/Script/Lepcha.js": requireLepcha,
  		"/node_modules/regenerate-unicode-properties/Script/Limbu.js": requireLimbu,
  		"/node_modules/regenerate-unicode-properties/Script/Linear_A.js": requireLinear_A,
  		"/node_modules/regenerate-unicode-properties/Script/Linear_B.js": requireLinear_B,
  		"/node_modules/regenerate-unicode-properties/Script/Lisu.js": requireLisu,
  		"/node_modules/regenerate-unicode-properties/Script/Lycian.js": requireLycian,
  		"/node_modules/regenerate-unicode-properties/Script/Lydian.js": requireLydian,
  		"/node_modules/regenerate-unicode-properties/Script/Mahajani.js": requireMahajani,
  		"/node_modules/regenerate-unicode-properties/Script/Makasar.js": requireMakasar,
  		"/node_modules/regenerate-unicode-properties/Script/Malayalam.js": requireMalayalam,
  		"/node_modules/regenerate-unicode-properties/Script/Mandaic.js": requireMandaic,
  		"/node_modules/regenerate-unicode-properties/Script/Manichaean.js": requireManichaean,
  		"/node_modules/regenerate-unicode-properties/Script/Marchen.js": requireMarchen,
  		"/node_modules/regenerate-unicode-properties/Script/Masaram_Gondi.js": requireMasaram_Gondi,
  		"/node_modules/regenerate-unicode-properties/Script/Medefaidrin.js": requireMedefaidrin,
  		"/node_modules/regenerate-unicode-properties/Script/Meetei_Mayek.js": requireMeetei_Mayek,
  		"/node_modules/regenerate-unicode-properties/Script/Mende_Kikakui.js": requireMende_Kikakui,
  		"/node_modules/regenerate-unicode-properties/Script/Meroitic_Cursive.js": requireMeroitic_Cursive,
  		"/node_modules/regenerate-unicode-properties/Script/Meroitic_Hieroglyphs.js": requireMeroitic_Hieroglyphs,
  		"/node_modules/regenerate-unicode-properties/Script/Miao.js": requireMiao,
  		"/node_modules/regenerate-unicode-properties/Script/Modi.js": requireModi,
  		"/node_modules/regenerate-unicode-properties/Script/Mongolian.js": requireMongolian,
  		"/node_modules/regenerate-unicode-properties/Script/Mro.js": requireMro,
  		"/node_modules/regenerate-unicode-properties/Script/Multani.js": requireMultani,
  		"/node_modules/regenerate-unicode-properties/Script/Myanmar.js": requireMyanmar,
  		"/node_modules/regenerate-unicode-properties/Script/Nabataean.js": requireNabataean,
  		"/node_modules/regenerate-unicode-properties/Script/Nag_Mundari.js": requireNag_Mundari,
  		"/node_modules/regenerate-unicode-properties/Script/Nandinagari.js": requireNandinagari,
  		"/node_modules/regenerate-unicode-properties/Script/New_Tai_Lue.js": requireNew_Tai_Lue,
  		"/node_modules/regenerate-unicode-properties/Script/Newa.js": requireNewa,
  		"/node_modules/regenerate-unicode-properties/Script/Nko.js": requireNko,
  		"/node_modules/regenerate-unicode-properties/Script/Nushu.js": requireNushu,
  		"/node_modules/regenerate-unicode-properties/Script/Nyiakeng_Puachue_Hmong.js": requireNyiakeng_Puachue_Hmong,
  		"/node_modules/regenerate-unicode-properties/Script/Ogham.js": requireOgham,
  		"/node_modules/regenerate-unicode-properties/Script/Ol_Chiki.js": requireOl_Chiki,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Hungarian.js": requireOld_Hungarian,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Italic.js": requireOld_Italic,
  		"/node_modules/regenerate-unicode-properties/Script/Old_North_Arabian.js": requireOld_North_Arabian,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Permic.js": requireOld_Permic,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Persian.js": requireOld_Persian,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Sogdian.js": requireOld_Sogdian,
  		"/node_modules/regenerate-unicode-properties/Script/Old_South_Arabian.js": requireOld_South_Arabian,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Turkic.js": requireOld_Turkic,
  		"/node_modules/regenerate-unicode-properties/Script/Old_Uyghur.js": requireOld_Uyghur,
  		"/node_modules/regenerate-unicode-properties/Script/Oriya.js": requireOriya,
  		"/node_modules/regenerate-unicode-properties/Script/Osage.js": requireOsage,
  		"/node_modules/regenerate-unicode-properties/Script/Osmanya.js": requireOsmanya,
  		"/node_modules/regenerate-unicode-properties/Script/Pahawh_Hmong.js": requirePahawh_Hmong,
  		"/node_modules/regenerate-unicode-properties/Script/Palmyrene.js": requirePalmyrene,
  		"/node_modules/regenerate-unicode-properties/Script/Pau_Cin_Hau.js": requirePau_Cin_Hau,
  		"/node_modules/regenerate-unicode-properties/Script/Phags_Pa.js": requirePhags_Pa,
  		"/node_modules/regenerate-unicode-properties/Script/Phoenician.js": requirePhoenician,
  		"/node_modules/regenerate-unicode-properties/Script/Psalter_Pahlavi.js": requirePsalter_Pahlavi,
  		"/node_modules/regenerate-unicode-properties/Script/Rejang.js": requireRejang,
  		"/node_modules/regenerate-unicode-properties/Script/Runic.js": requireRunic,
  		"/node_modules/regenerate-unicode-properties/Script/Samaritan.js": requireSamaritan,
  		"/node_modules/regenerate-unicode-properties/Script/Saurashtra.js": requireSaurashtra,
  		"/node_modules/regenerate-unicode-properties/Script/Sharada.js": requireSharada,
  		"/node_modules/regenerate-unicode-properties/Script/Shavian.js": requireShavian,
  		"/node_modules/regenerate-unicode-properties/Script/Siddham.js": requireSiddham,
  		"/node_modules/regenerate-unicode-properties/Script/SignWriting.js": requireSignWriting,
  		"/node_modules/regenerate-unicode-properties/Script/Sinhala.js": requireSinhala,
  		"/node_modules/regenerate-unicode-properties/Script/Sogdian.js": requireSogdian,
  		"/node_modules/regenerate-unicode-properties/Script/Sora_Sompeng.js": requireSora_Sompeng,
  		"/node_modules/regenerate-unicode-properties/Script/Soyombo.js": requireSoyombo,
  		"/node_modules/regenerate-unicode-properties/Script/Sundanese.js": requireSundanese,
  		"/node_modules/regenerate-unicode-properties/Script/Syloti_Nagri.js": requireSyloti_Nagri,
  		"/node_modules/regenerate-unicode-properties/Script/Syriac.js": requireSyriac,
  		"/node_modules/regenerate-unicode-properties/Script/Tagalog.js": requireTagalog,
  		"/node_modules/regenerate-unicode-properties/Script/Tagbanwa.js": requireTagbanwa,
  		"/node_modules/regenerate-unicode-properties/Script/Tai_Le.js": requireTai_Le,
  		"/node_modules/regenerate-unicode-properties/Script/Tai_Tham.js": requireTai_Tham,
  		"/node_modules/regenerate-unicode-properties/Script/Tai_Viet.js": requireTai_Viet,
  		"/node_modules/regenerate-unicode-properties/Script/Takri.js": requireTakri,
  		"/node_modules/regenerate-unicode-properties/Script/Tamil.js": requireTamil,
  		"/node_modules/regenerate-unicode-properties/Script/Tangsa.js": requireTangsa,
  		"/node_modules/regenerate-unicode-properties/Script/Tangut.js": requireTangut,
  		"/node_modules/regenerate-unicode-properties/Script/Telugu.js": requireTelugu,
  		"/node_modules/regenerate-unicode-properties/Script/Thaana.js": requireThaana,
  		"/node_modules/regenerate-unicode-properties/Script/Thai.js": requireThai,
  		"/node_modules/regenerate-unicode-properties/Script/Tibetan.js": requireTibetan,
  		"/node_modules/regenerate-unicode-properties/Script/Tifinagh.js": requireTifinagh,
  		"/node_modules/regenerate-unicode-properties/Script/Tirhuta.js": requireTirhuta,
  		"/node_modules/regenerate-unicode-properties/Script/Toto.js": requireToto,
  		"/node_modules/regenerate-unicode-properties/Script/Ugaritic.js": requireUgaritic,
  		"/node_modules/regenerate-unicode-properties/Script/Vai.js": requireVai,
  		"/node_modules/regenerate-unicode-properties/Script/Vithkuqi.js": requireVithkuqi,
  		"/node_modules/regenerate-unicode-properties/Script/Wancho.js": requireWancho,
  		"/node_modules/regenerate-unicode-properties/Script/Warang_Citi.js": requireWarang_Citi,
  		"/node_modules/regenerate-unicode-properties/Script/Yezidi.js": requireYezidi,
  		"/node_modules/regenerate-unicode-properties/Script/Yi.js": requireYi,
  		"/node_modules/regenerate-unicode-properties/Script/Zanabazar_Square.js": requireZanabazar_Square,
  		"/node_modules/regenerate-unicode-properties/unicode-version.js": requireUnicodeVersion
  	});
  }

  function createCommonjsRequire(originalModuleDir) {
  	function handleRequire(path) {
  		var resolvedPath = commonjsResolve(path, originalModuleDir);
  		if (resolvedPath !== null) {
  			return getDynamicModules()[resolvedPath]();
  		}
  		throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
  	}
  	handleRequire.resolve = function (path) {
  		var resolvedPath = commonjsResolve(path, originalModuleDir);
  		if (resolvedPath !== null) {
  			return resolvedPath;
  		}
  		return require.resolve(path);
  	};
  	return handleRequire;
  }

  function commonjsResolve (path, originalModuleDir) {
  	var shouldTryNodeModules = isPossibleNodeModulesPath(path);
  	path = normalize(path);
  	var relPath;
  	if (path[0] === '/') {
  		originalModuleDir = '';
  	}
  	var modules = getDynamicModules();
  	var checkedExtensions = ['', '.js', '.json'];
  	while (true) {
  		if (!shouldTryNodeModules) {
  			relPath = normalize(originalModuleDir + '/' + path);
  		} else {
  			relPath = normalize(originalModuleDir + '/node_modules/' + path);
  		}

  		if (relPath.endsWith('/..')) {
  			break; // Travelled too far up, avoid infinite loop
  		}

  		for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) {
  			var resolvedPath = relPath + checkedExtensions[extensionIndex];
  			if (modules[resolvedPath]) {
  				return resolvedPath;
  			}
  		}
  		if (!shouldTryNodeModules) break;
  		var nextDir = normalize(originalModuleDir + '/..');
  		if (nextDir === originalModuleDir) break;
  		originalModuleDir = nextDir;
  	}
  	return null;
  }

  function isPossibleNodeModulesPath (modulePath) {
  	var c0 = modulePath[0];
  	if (c0 === '/' || c0 === '\\') return false;
  	var c1 = modulePath[1], c2 = modulePath[2];
  	if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\')) ||
  		(c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\'))) return false;
  	if (c1 === ':' && (c2 === '/' || c2 === '\\')) return false;
  	return true;
  }

  function normalize (path) {
  	path = path.replace(/\\/g, '/');
  	var parts = path.split('/');
  	var slashed = parts[0] === '';
  	for (var i = 1; i < parts.length; i++) {
  		if (parts[i] === '.' || parts[i] === '') {
  			parts.splice(i--, 1);
  		}
  	}
  	for (var i = 1; i < parts.length; i++) {
  		if (parts[i] !== '..') continue;
  		if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {
  			parts.splice(--i, 2);
  			i--;
  		}
  	}
  	path = parts.join('/');
  	if (slashed && path[0] !== '/') path = '/' + path;
  	else if (path.length === 0) path = '.';
  	return path;
  }

  var regjsgen = {exports: {}};

  regjsgen.exports;
  (function (module, exports) {
    (function () {
      var objectTypes = {
        'function': true,
        'object': true
      };
      var root = objectTypes[typeof window] && window || this;
      var freeExports = exports && !exports.nodeType && exports;
      var hasFreeModule = module && !module.nodeType;
      var freeGlobal = freeExports && hasFreeModule && typeof commonjsGlobal == 'object' && commonjsGlobal;
      if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
        root = freeGlobal;
      }
      var hasOwnProperty = Object.prototype.hasOwnProperty;
      function fromCodePoint() {
        var codePoint = Number(arguments[0]);
        if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || Math.floor(codePoint) != codePoint) {
          throw RangeError('Invalid code point: ' + codePoint);
        }
        if (codePoint <= 0xFFFF) {
          return String.fromCharCode(codePoint);
        } else {
          codePoint -= 0x10000;
          var highSurrogate = (codePoint >> 10) + 0xD800;
          var lowSurrogate = codePoint % 0x400 + 0xDC00;
          return String.fromCharCode(highSurrogate, lowSurrogate);
        }
      }
      var assertTypeRegexMap = {};
      function assertType(type, expected) {
        if (expected.indexOf('|') == -1) {
          if (type == expected) {
            return;
          }
          throw Error('Invalid node type: ' + type + '; expected type: ' + expected);
        }
        expected = hasOwnProperty.call(assertTypeRegexMap, expected) ? assertTypeRegexMap[expected] : assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$');
        if (expected.test(type)) {
          return;
        }
        throw Error('Invalid node type: ' + type + '; expected types: ' + expected);
      }
      function generate(node) {
        var type = node.type;
        if (hasOwnProperty.call(generators, type)) {
          return generators[type](node);
        }
        throw Error('Invalid node type: ' + type);
      }
      function generateSequence(generator, terms, separator) {
        var i = -1,
          length = terms.length,
          result = '',
          term;
        while (++i < length) {
          term = terms[i];
          if (separator && i > 0) result += separator;
          if (i + 1 < length && terms[i].type == 'value' && terms[i].kind == 'null' && terms[i + 1].type == 'value' && terms[i + 1].kind == 'symbol' && terms[i + 1].codePoint >= 48 && terms[i + 1].codePoint <= 57) {
            result += '\\000';
            continue;
          }
          result += generator(term);
        }
        return result;
      }
      function generateAlternative(node) {
        assertType(node.type, 'alternative');
        return generateSequence(generateTerm, node.body);
      }
      function generateAnchor(node) {
        assertType(node.type, 'anchor');
        switch (node.kind) {
          case 'start':
            return '^';
          case 'end':
            return '$';
          case 'boundary':
            return '\\b';
          case 'not-boundary':
            return '\\B';
          default:
            throw Error('Invalid assertion');
        }
      }
      var atomType = 'anchor|characterClass|characterClassEscape|dot|group|reference|unicodePropertyEscape|value';
      function generateAtom(node) {
        assertType(node.type, atomType);
        return generate(node);
      }
      function generateCharacterClass(node) {
        assertType(node.type, 'characterClass');
        var kind = node.kind;
        var separator = kind === 'intersection' ? '&&' : kind === 'subtraction' ? '--' : '';
        return '[' + (node.negative ? '^' : '') + generateSequence(generateClassAtom, node.body, separator) + ']';
      }
      function generateCharacterClassEscape(node) {
        assertType(node.type, 'characterClassEscape');
        return '\\' + node.value;
      }
      function generateCharacterClassRange(node) {
        assertType(node.type, 'characterClassRange');
        var min = node.min,
          max = node.max;
        if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {
          throw Error('Invalid character class range');
        }
        return generateClassAtom(min) + '-' + generateClassAtom(max);
      }
      function generateClassAtom(node) {
        assertType(node.type, 'anchor|characterClass|characterClassEscape|characterClassRange|dot|value|unicodePropertyEscape|classStrings');
        return generate(node);
      }
      function generateClassStrings(node) {
        assertType(node.type, 'classStrings');
        return '\\q{' + generateSequence(generateClassString, node.strings, '|') + '}';
      }
      function generateClassString(node) {
        assertType(node.type, 'classString');
        return generateSequence(generate, node.characters);
      }
      function generateDisjunction(node) {
        assertType(node.type, 'disjunction');
        return generateSequence(generate, node.body, '|');
      }
      function generateDot(node) {
        assertType(node.type, 'dot');
        return '.';
      }
      function generateGroup(node) {
        assertType(node.type, 'group');
        var result = '';
        switch (node.behavior) {
          case 'normal':
            if (node.name) {
              result += '?<' + generateIdentifier(node.name) + '>';
            }
            break;
          case 'ignore':
            if (node.modifierFlags) {
              result += '?';
              if (node.modifierFlags.enabling) result += node.modifierFlags.enabling;
              if (node.modifierFlags.disabling) result += "-" + node.modifierFlags.disabling;
              result += ':';
            } else {
              result += '?:';
            }
            break;
          case 'lookahead':
            result += '?=';
            break;
          case 'negativeLookahead':
            result += '?!';
            break;
          case 'lookbehind':
            result += '?<=';
            break;
          case 'negativeLookbehind':
            result += '?<!';
            break;
          default:
            throw Error('Invalid behaviour: ' + node.behaviour);
        }
        result += generateSequence(generate, node.body);
        return '(' + result + ')';
      }
      function generateIdentifier(node) {
        assertType(node.type, 'identifier');
        return node.value;
      }
      function generateQuantifier(node) {
        assertType(node.type, 'quantifier');
        var quantifier = '',
          min = node.min,
          max = node.max;
        if (max == null) {
          if (min == 0) {
            quantifier = '*';
          } else if (min == 1) {
            quantifier = '+';
          } else {
            quantifier = '{' + min + ',}';
          }
        } else if (min == max) {
          quantifier = '{' + min + '}';
        } else if (min == 0 && max == 1) {
          quantifier = '?';
        } else {
          quantifier = '{' + min + ',' + max + '}';
        }
        if (!node.greedy) {
          quantifier += '?';
        }
        return generateAtom(node.body[0]) + quantifier;
      }
      function generateReference(node) {
        assertType(node.type, 'reference');
        if (node.matchIndex) {
          return '\\' + node.matchIndex;
        }
        if (node.name) {
          return '\\k<' + generateIdentifier(node.name) + '>';
        }
        throw new Error('Unknown reference type');
      }
      function generateTerm(node) {
        assertType(node.type, atomType + '|empty|quantifier');
        return generate(node);
      }
      function generateUnicodePropertyEscape(node) {
        assertType(node.type, 'unicodePropertyEscape');
        return '\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';
      }
      function generateValue(node) {
        assertType(node.type, 'value');
        var kind = node.kind,
          codePoint = node.codePoint;
        if (typeof codePoint != 'number') {
          throw new Error('Invalid code point: ' + codePoint);
        }
        switch (kind) {
          case 'controlLetter':
            return '\\c' + fromCodePoint(codePoint + 64);
          case 'hexadecimalEscape':
            return '\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);
          case 'identifier':
            return '\\' + fromCodePoint(codePoint);
          case 'null':
            return '\\' + codePoint;
          case 'octal':
            return '\\' + ('000' + codePoint.toString(8)).slice(-3);
          case 'singleEscape':
            switch (codePoint) {
              case 0x0008:
                return '\\b';
              case 0x0009:
                return '\\t';
              case 0x000A:
                return '\\n';
              case 0x000B:
                return '\\v';
              case 0x000C:
                return '\\f';
              case 0x000D:
                return '\\r';
              case 0x002D:
                return '\\-';
              default:
                throw Error('Invalid code point: ' + codePoint);
            }
          case 'symbol':
            return fromCodePoint(codePoint);
          case 'unicodeEscape':
            return "\\u" + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);
          case 'unicodeCodePointEscape':
            return "\\u{" + codePoint.toString(16).toUpperCase() + '}';
          default:
            throw Error('Unsupported node kind: ' + kind);
        }
      }
      var generators = {
        'alternative': generateAlternative,
        'anchor': generateAnchor,
        'characterClass': generateCharacterClass,
        'characterClassEscape': generateCharacterClassEscape,
        'characterClassRange': generateCharacterClassRange,
        'classStrings': generateClassStrings,
        'disjunction': generateDisjunction,
        'dot': generateDot,
        'group': generateGroup,
        'quantifier': generateQuantifier,
        'reference': generateReference,
        'unicodePropertyEscape': generateUnicodePropertyEscape,
        'value': generateValue
      };
      var regjsgen = {
        'generate': generate
      };
      if (freeExports && hasFreeModule) {
        freeExports.generate = generate;
      } else {
        root.regjsgen = regjsgen;
      }
    }).call(commonjsGlobal);
  })(regjsgen, regjsgen.exports);
  var regjsgenExports = regjsgen.exports;

  var parser = {exports: {}};

  (function (module) {

    (function () {
      var fromCodePoint = String.fromCodePoint || function () {
        var stringFromCharCode = String.fromCharCode;
        var floor = Math.floor;
        return function fromCodePoint() {
          var MAX_SIZE = 0x4000;
          var codeUnits = [];
          var highSurrogate;
          var lowSurrogate;
          var index = -1;
          var length = arguments.length;
          if (!length) {
            return '';
          }
          var result = '';
          while (++index < length) {
            var codePoint = Number(arguments[index]);
            if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || floor(codePoint) != codePoint) {
              throw RangeError('Invalid code point: ' + codePoint);
            }
            if (codePoint <= 0xFFFF) {
              codeUnits.push(codePoint);
            } else {
              codePoint -= 0x10000;
              highSurrogate = (codePoint >> 10) + 0xD800;
              lowSurrogate = codePoint % 0x400 + 0xDC00;
              codeUnits.push(highSurrogate, lowSurrogate);
            }
            if (index + 1 == length || codeUnits.length > MAX_SIZE) {
              result += stringFromCharCode.apply(null, codeUnits);
              codeUnits.length = 0;
            }
          }
          return result;
        };
      }();
      function parse(str, flags, features) {
        if (!features) {
          features = {};
        }
        function addRaw(node) {
          node.raw = str.substring(node.range[0], node.range[1]);
          return node;
        }
        function updateRawStart(node, start) {
          node.range[0] = start;
          return addRaw(node);
        }
        function createAnchor(kind, rawLength) {
          return addRaw({
            type: 'anchor',
            kind: kind,
            range: [pos - rawLength, pos]
          });
        }
        function createValue(kind, codePoint, from, to) {
          return addRaw({
            type: 'value',
            kind: kind,
            codePoint: codePoint,
            range: [from, to]
          });
        }
        function createEscaped(kind, codePoint, value, fromOffset) {
          fromOffset = fromOffset || 0;
          return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);
        }
        function createCharacter(matches) {
          var _char = matches[0];
          var first = _char.charCodeAt(0);
          if (isUnicodeMode) {
            var second;
            if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {
              second = lookahead().charCodeAt(0);
              if (second >= 0xDC00 && second <= 0xDFFF) {
                pos++;
                return createValue('symbol', (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000, pos - 2, pos);
              }
            }
          }
          return createValue('symbol', first, pos - 1, pos);
        }
        function createDisjunction(alternatives, from, to) {
          return addRaw({
            type: 'disjunction',
            body: alternatives,
            range: [from, to]
          });
        }
        function createDot() {
          return addRaw({
            type: 'dot',
            range: [pos - 1, pos]
          });
        }
        function createCharacterClassEscape(value) {
          return addRaw({
            type: 'characterClassEscape',
            value: value,
            range: [pos - 2, pos]
          });
        }
        function createReference(matchIndex) {
          return addRaw({
            type: 'reference',
            matchIndex: parseInt(matchIndex, 10),
            range: [pos - 1 - matchIndex.length, pos]
          });
        }
        function createNamedReference(name) {
          return addRaw({
            type: 'reference',
            name: name,
            range: [name.range[0] - 3, pos]
          });
        }
        function createGroup(behavior, disjunction, from, to) {
          return addRaw({
            type: 'group',
            behavior: behavior,
            body: disjunction,
            range: [from, to]
          });
        }
        function createQuantifier(min, max, from, to, symbol) {
          if (to == null) {
            from = pos - 1;
            to = pos;
          }
          return addRaw({
            type: 'quantifier',
            min: min,
            max: max,
            greedy: true,
            body: null,
            symbol: symbol,
            range: [from, to]
          });
        }
        function createAlternative(terms, from, to) {
          return addRaw({
            type: 'alternative',
            body: terms,
            range: [from, to]
          });
        }
        function createCharacterClass(contents, negative, from, to) {
          return addRaw({
            type: 'characterClass',
            kind: contents.kind,
            body: contents.body,
            negative: negative,
            range: [from, to]
          });
        }
        function createClassRange(min, max, from, to) {
          if (min.codePoint > max.codePoint) {
            bail('invalid range in character class', min.raw + '-' + max.raw, from, to);
          }
          return addRaw({
            type: 'characterClassRange',
            min: min,
            max: max,
            range: [from, to]
          });
        }
        function createClassStrings(strings, from, to) {
          return addRaw({
            type: 'classStrings',
            strings: strings,
            range: [from, to]
          });
        }
        function createClassString(characters, from, to) {
          return addRaw({
            type: 'classString',
            characters: characters,
            range: [from, to]
          });
        }
        function flattenBody(body) {
          if (body.type === 'alternative') {
            return body.body;
          } else {
            return [body];
          }
        }
        function incr(amount) {
          amount = amount || 1;
          var res = str.substring(pos, pos + amount);
          pos += amount || 1;
          return res;
        }
        function skip(value) {
          if (!match(value)) {
            bail('character', value);
          }
        }
        function match(value) {
          if (str.indexOf(value, pos) === pos) {
            return incr(value.length);
          }
        }
        function lookahead() {
          return str[pos];
        }
        function current(value) {
          return str.indexOf(value, pos) === pos;
        }
        function next(value) {
          return str[pos + 1] === value;
        }
        function matchReg(regExp) {
          var subStr = str.substring(pos);
          var res = subStr.match(regExp);
          if (res) {
            res.range = [];
            res.range[0] = pos;
            incr(res[0].length);
            res.range[1] = pos;
          }
          return res;
        }
        function parseDisjunction() {
          var res = [],
            from = pos;
          res.push(parseAlternative());
          while (match('|')) {
            res.push(parseAlternative());
          }
          if (res.length === 1) {
            return res[0];
          }
          return createDisjunction(res, from, pos);
        }
        function parseAlternative() {
          var res = [],
            from = pos;
          var term;
          while (term = parseTerm()) {
            res.push(term);
          }
          if (res.length === 1) {
            return res[0];
          }
          return createAlternative(res, from, pos);
        }
        function parseTerm() {
          if (pos >= str.length || current('|') || current(')')) {
            return null;
          }
          var anchor = parseAnchor();
          if (anchor) {
            return anchor;
          }
          var atom = parseAtomAndExtendedAtom();
          var quantifier;
          if (!atom) {
            var pos_backup = pos;
            quantifier = parseQuantifier() || false;
            if (quantifier) {
              pos = pos_backup;
              bail('Expected atom');
            }
            var res;
            if (!isUnicodeMode && (res = matchReg(/^{/))) {
              atom = createCharacter(res);
            } else {
              bail('Expected atom');
            }
          }
          quantifier = parseQuantifier() || false;
          if (quantifier) {
            quantifier.body = flattenBody(atom);
            updateRawStart(quantifier, atom.range[0]);
            return quantifier;
          }
          return atom;
        }
        function parseGroup(matchA, typeA, matchB, typeB) {
          var type = null,
            from = pos;
          if (match(matchA)) {
            type = typeA;
          } else if (match(matchB)) {
            type = typeB;
          } else {
            return false;
          }
          return finishGroup(type, from);
        }
        function finishGroup(type, from) {
          var body = parseDisjunction();
          if (!body) {
            bail('Expected disjunction');
          }
          skip(')');
          var group = createGroup(type, flattenBody(body), from, pos);
          if (type == 'normal') {
            if (firstIteration) {
              closedCaptureCounter++;
            }
          }
          return group;
        }
        function parseAnchor() {
          if (match('^')) {
            return createAnchor('start', 1);
          } else if (match('$')) {
            return createAnchor('end', 1);
          } else if (match('\\b')) {
            return createAnchor('boundary', 2);
          } else if (match('\\B')) {
            return createAnchor('not-boundary', 2);
          } else {
            return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');
          }
        }
        function parseQuantifier() {
          var res,
            from = pos;
          var quantifier;
          var min, max;
          if (match('*')) {
            quantifier = createQuantifier(0, undefined, undefined, undefined, '*');
          } else if (match('+')) {
            quantifier = createQuantifier(1, undefined, undefined, undefined, "+");
          } else if (match('?')) {
            quantifier = createQuantifier(0, 1, undefined, undefined, "?");
          } else if (res = matchReg(/^\{([0-9]+)\}/)) {
            min = parseInt(res[1], 10);
            quantifier = createQuantifier(min, min, res.range[0], res.range[1]);
          } else if (res = matchReg(/^\{([0-9]+),\}/)) {
            min = parseInt(res[1], 10);
            quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);
          } else if (res = matchReg(/^\{([0-9]+),([0-9]+)\}/)) {
            min = parseInt(res[1], 10);
            max = parseInt(res[2], 10);
            if (min > max) {
              bail('numbers out of order in {} quantifier', '', from, pos);
            }
            quantifier = createQuantifier(min, max, res.range[0], res.range[1]);
          }
          if (min && !Number.isSafeInteger(min) || max && !Number.isSafeInteger(max)) {
            bail("iterations outside JS safe integer range in quantifier", "", from, pos);
          }
          if (quantifier) {
            if (match('?')) {
              quantifier.greedy = false;
              quantifier.range[1] += 1;
            }
          }
          return quantifier;
        }
        function parseAtomAndExtendedAtom() {
          var res;
          if (res = matchReg(/^[^^$\\.*+?()[\]{}|]/)) {
            return createCharacter(res);
          } else if (!isUnicodeMode && (res = matchReg(/^(?:]|})/))) {
            return createCharacter(res);
          } else if (match('.')) {
            return createDot();
          } else if (match('\\')) {
            res = parseAtomEscape();
            if (!res) {
              if (!isUnicodeMode && lookahead() == 'c') {
                return createValue('symbol', 92, pos - 1, pos);
              }
              bail('atomEscape');
            }
            return res;
          } else if (res = parseCharacterClass()) {
            return res;
          } else if (features.lookbehind && (res = parseGroup('(?<=', 'lookbehind', '(?<!', 'negativeLookbehind'))) {
            return res;
          } else if (features.namedGroups && match("(?<")) {
            var name = parseIdentifier();
            skip(">");
            var group = finishGroup("normal", name.range[0] - 3);
            group.name = name;
            return group;
          } else if (features.modifiers && str.indexOf("(?") == pos && str[pos + 2] != ":") {
            return parseModifiersGroup();
          } else {
            return parseGroup('(?:', 'ignore', '(', 'normal');
          }
        }
        function parseModifiersGroup() {
          function hasDupChar(str) {
            var i = 0;
            while (i < str.length) {
              if (str.indexOf(str[i], i + 1) != -1) {
                return true;
              }
              i++;
            }
            return false;
          }
          var from = pos;
          incr(2);
          var enablingFlags = matchReg(/^[sim]+/);
          var disablingFlags;
          if (match("-")) {
            disablingFlags = matchReg(/^[sim]+/);
            if (!disablingFlags) {
              bail('Invalid flags for modifiers group');
            }
          } else if (!enablingFlags) {
            bail('Invalid flags for modifiers group');
          }
          enablingFlags = enablingFlags ? enablingFlags[0] : "";
          disablingFlags = disablingFlags ? disablingFlags[0] : "";
          var flags = enablingFlags + disablingFlags;
          if (flags.length > 3 || hasDupChar(flags)) {
            bail('flags cannot be duplicated for modifiers group');
          }
          skip(":");
          var modifiersGroup = finishGroup("ignore", from);
          modifiersGroup.modifierFlags = {
            enabling: enablingFlags,
            disabling: disablingFlags
          };
          return modifiersGroup;
        }
        function parseUnicodeSurrogatePairEscape(firstEscape) {
          if (isUnicodeMode) {
            var first, second;
            if (firstEscape.kind == 'unicodeEscape' && (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF && current('\\') && next('u')) {
              var prevPos = pos;
              pos++;
              var secondEscape = parseClassEscape();
              if (secondEscape.kind == 'unicodeEscape' && (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {
                firstEscape.range[1] = secondEscape.range[1];
                firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
                firstEscape.type = 'value';
                firstEscape.kind = 'unicodeCodePointEscape';
                addRaw(firstEscape);
              } else {
                pos = prevPos;
              }
            }
          }
          return firstEscape;
        }
        function parseClassEscape() {
          return parseAtomEscape(true);
        }
        function parseAtomEscape(insideCharacterClass) {
          var res,
            from = pos;
          res = parseDecimalEscape(insideCharacterClass) || parseNamedReference();
          if (res) {
            return res;
          }
          if (insideCharacterClass) {
            if (match('b')) {
              return createEscaped('singleEscape', 0x0008, '\\b');
            } else if (match('B')) {
              bail('\\B not possible inside of CharacterClass', '', from);
            } else if (!isUnicodeMode && (res = matchReg(/^c([0-9])/))) {
              return createEscaped('controlLetter', res[1] + 16, res[1], 2);
            } else if (!isUnicodeMode && (res = matchReg(/^c_/))) {
              return createEscaped('controlLetter', 31, '_', 2);
            }
            if (isUnicodeMode && match('-')) {
              return createEscaped('singleEscape', 0x002d, '\\-');
            }
          }
          res = parseCharacterClassEscape() || parseCharacterEscape();
          return res;
        }
        function parseDecimalEscape(insideCharacterClass) {
          var res,
            match,
            from = pos;
          if (res = matchReg(/^(?!0)\d+/)) {
            match = res[0];
            var refIdx = parseInt(res[0], 10);
            if (refIdx <= closedCaptureCounter && !insideCharacterClass) {
              return createReference(res[0]);
            } else {
              backrefDenied.push(refIdx);
              if (firstIteration) {
                shouldReparse = true;
              } else {
                bailOctalEscapeIfUnicode(from, pos);
              }
              incr(-res[0].length);
              if (res = matchReg(/^[0-7]{1,3}/)) {
                return createEscaped('octal', parseInt(res[0], 8), res[0], 1);
              } else {
                res = createCharacter(matchReg(/^[89]/));
                return updateRawStart(res, res.range[0] - 1);
              }
            }
          } else if (res = matchReg(/^[0-7]{1,3}/)) {
            match = res[0];
            if (match !== '0') {
              bailOctalEscapeIfUnicode(from, pos);
            }
            if (/^0{1,3}$/.test(match)) {
              return createEscaped('null', 0x0000, '0', match.length);
            } else {
              return createEscaped('octal', parseInt(match, 8), match, 1);
            }
          }
          return false;
        }
        function bailOctalEscapeIfUnicode(from, pos) {
          if (isUnicodeMode) {
            bail("Invalid decimal escape in unicode mode", null, from, pos);
          }
        }
        function parseCharacterClassEscape() {
          var res;
          if (res = matchReg(/^[dDsSwW]/)) {
            return createCharacterClassEscape(res[0]);
          } else if (features.unicodePropertyEscape && isUnicodeMode && (res = matchReg(/^([pP])\{([^\}]+)\}/))) {
            return addRaw({
              type: 'unicodePropertyEscape',
              negative: res[1] === 'P',
              value: res[2],
              range: [res.range[0] - 1, res.range[1]],
              raw: res[0]
            });
          } else if (features.unicodeSet && hasUnicodeSetFlag && match('q{')) {
            return parseClassStrings();
          }
          return false;
        }
        function parseNamedReference() {
          if (features.namedGroups && matchReg(/^k<(?=.*?>)/)) {
            var name = parseIdentifier();
            skip('>');
            return createNamedReference(name);
          }
        }
        function parseRegExpUnicodeEscapeSequence() {
          var res;
          if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {
            return parseUnicodeSurrogatePairEscape(createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2));
          } else if (isUnicodeMode && (res = matchReg(/^u\{([0-9a-fA-F]+)\}/))) {
            return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);
          }
        }
        function parseCharacterEscape() {
          var res;
          var from = pos;
          if (res = matchReg(/^[fnrtv]/)) {
            var codePoint = 0;
            switch (res[0]) {
              case 't':
                codePoint = 0x009;
                break;
              case 'n':
                codePoint = 0x00A;
                break;
              case 'v':
                codePoint = 0x00B;
                break;
              case 'f':
                codePoint = 0x00C;
                break;
              case 'r':
                codePoint = 0x00D;
                break;
            }
            return createEscaped('singleEscape', codePoint, '\\' + res[0]);
          } else if (res = matchReg(/^c([a-zA-Z])/)) {
            return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);
          } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {
            return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);
          } else if (res = parseRegExpUnicodeEscapeSequence()) {
            if (!res || res.codePoint > 0x10FFFF) {
              bail('Invalid escape sequence', null, from, pos);
            }
            return res;
          } else {
            return parseIdentityEscape();
          }
        }
        function parseIdentifierAtom(check) {
          var ch = lookahead();
          var from = pos;
          if (ch === '\\') {
            incr();
            var esc = parseRegExpUnicodeEscapeSequence();
            if (!esc || !check(esc.codePoint)) {
              bail('Invalid escape sequence', null, from, pos);
            }
            return fromCodePoint(esc.codePoint);
          }
          var code = ch.charCodeAt(0);
          if (code >= 0xD800 && code <= 0xDBFF) {
            ch += str[pos + 1];
            var second = ch.charCodeAt(1);
            if (second >= 0xDC00 && second <= 0xDFFF) {
              code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
            }
          }
          if (!check(code)) return;
          incr();
          if (code > 0xFFFF) incr();
          return ch;
        }
        function parseIdentifier() {
          var start = pos;
          var res = parseIdentifierAtom(isIdentifierStart);
          if (!res) {
            bail('Invalid identifier');
          }
          var ch;
          while (ch = parseIdentifierAtom(isIdentifierPart)) {
            res += ch;
          }
          return addRaw({
            type: 'identifier',
            value: res,
            range: [start, pos]
          });
        }
        function isIdentifierStart(ch) {
          var NonAsciiIdentifierStart = /[\$A-Z_a-z\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\u08A0-\u08B4\u08B6-\u08BD\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\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\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\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\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-\u170C\u170E-\u1711\u1720-\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-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\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-\u2C2E\u2C30-\u2C5E\u2C60-\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-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\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-\uAB65\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]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
          return ch === 36 || ch === 95 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 0x80 && NonAsciiIdentifierStart.test(fromCodePoint(ch));
        }
        function isIdentifierPart(ch) {
          var NonAsciiIdentifierPartOnly = /[0-9_\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\u08D3-\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\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\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\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\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-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\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\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\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]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDD30-\uDD39\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC66-\uDC6F\uDC7F-\uDC82\uDCB0-\uDCBA\uDCF0-\uDCF9\uDD00-\uDD02\uDD27-\uDD34\uDD36-\uDD3F\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDD0-\uDDD9\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC50-\uDC59\uDC5E\uDCB0-\uDCC3\uDCD0-\uDCD9\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDE50-\uDE59\uDEAB-\uDEB7\uDEC0-\uDEC9\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC2C-\uDC3A\uDCE0-\uDCE9\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC50-\uDC59\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD50-\uDD59\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDDA0-\uDDA9\uDEF3-\uDEF6]|\uD81A[\uDE60-\uDE69\uDEF0-\uDEF4\uDF30-\uDF36\uDF50-\uDF59]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A\uDD50-\uDD59]|\uDB40[\uDD00-\uDDEF]/;
          return isIdentifierStart(ch) || ch >= 48 && ch <= 57 || ch >= 0x80 && NonAsciiIdentifierPartOnly.test(fromCodePoint(ch));
        }
        function parseIdentityEscape() {
          var tmp;
          var l = lookahead();
          if (isUnicodeMode && /[\^\$\.\*\+\?\(\)\\\[\]\{\}\|\/]/.test(l) || !isUnicodeMode && l !== "c") {
            if (l === "k" && features.lookbehind) {
              return null;
            }
            tmp = incr();
            return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);
          }
          return null;
        }
        function parseCharacterClass() {
          var res,
            from = pos;
          if (res = matchReg(/^\[\^/)) {
            res = parseClassRanges();
            skip(']');
            return createCharacterClass(res, true, from, pos);
          } else if (match('[')) {
            res = parseClassRanges();
            skip(']');
            return createCharacterClass(res, false, from, pos);
          }
          return null;
        }
        function parseClassRanges() {
          var res;
          if (current(']')) {
            return {
              kind: 'union',
              body: []
            };
          } else if (hasUnicodeSetFlag) {
            return parseClassContents();
          } else {
            res = parseNonemptyClassRanges();
            if (!res) {
              bail('nonEmptyClassRanges');
            }
            return {
              kind: 'union',
              body: res
            };
          }
        }
        function parseHelperClassRanges(atom) {
          var from, to, res, atomTo, dash;
          if (current('-') && !next(']')) {
            from = atom.range[0];
            dash = createCharacter(match('-'));
            atomTo = parseClassAtom();
            if (!atomTo) {
              bail('classAtom');
            }
            to = pos;
            var classRanges = parseClassRanges();
            if (!classRanges) {
              bail('classRanges');
            }
            if (!('codePoint' in atom) || !('codePoint' in atomTo)) {
              if (!isUnicodeMode) {
                res = [atom, dash, atomTo];
              } else {
                bail('invalid character class');
              }
            } else {
              res = [createClassRange(atom, atomTo, from, to)];
            }
            if (classRanges.type === 'empty') {
              return res;
            }
            return res.concat(classRanges.body);
          }
          res = parseNonemptyClassRangesNoDash();
          if (!res) {
            bail('nonEmptyClassRangesNoDash');
          }
          return [atom].concat(res);
        }
        function parseNonemptyClassRanges() {
          var atom = parseClassAtom();
          if (!atom) {
            bail('classAtom');
          }
          if (current(']')) {
            return [atom];
          }
          return parseHelperClassRanges(atom);
        }
        function parseNonemptyClassRangesNoDash() {
          var res = parseClassAtom();
          if (!res) {
            bail('classAtom');
          }
          if (current(']')) {
            return res;
          }
          return parseHelperClassRanges(res);
        }
        function parseClassAtom() {
          if (match('-')) {
            return createCharacter('-');
          } else {
            return parseClassAtomNoDash();
          }
        }
        function parseClassAtomNoDash() {
          var res;
          if (res = matchReg(/^[^\\\]-]/)) {
            return createCharacter(res[0]);
          } else if (match('\\')) {
            res = parseClassEscape();
            if (!res) {
              bail('classEscape');
            }
            return parseUnicodeSurrogatePairEscape(res);
          }
        }
        function parseClassContents() {
          var body = [];
          var kind;
          var operand = parseClassOperand(true);
          body.push(operand);
          if (operand.type === 'classRange') {
            kind = 'union';
          } else if (current('&')) {
            kind = 'intersection';
          } else if (current('-')) {
            kind = 'subtraction';
          } else {
            kind = 'union';
          }
          while (!current(']')) {
            if (kind === 'intersection') {
              skip('&');
              skip('&');
              if (current('&')) {
                bail('&& cannot be followed by &. Wrap it in brackets: &&[&].');
              }
            } else if (kind === 'subtraction') {
              skip('-');
              skip('-');
            }
            operand = parseClassOperand(kind === 'union');
            body.push(operand);
          }
          return {
            kind: kind,
            body: body
          };
        }
        function parseClassOperand(allowRanges) {
          var from = pos;
          var start, res;
          if (match('\\')) {
            if (res = parseClassEscape()) {
              start = res;
            } else if (res = parseClassCharacterEscapedHelper()) {
              return res;
            } else {
              bail('Invalid escape', '\\' + lookahead(), from);
            }
          } else if (res = parseClassCharacterUnescapedHelper()) {
            start = res;
          } else if (res = parseCharacterClass()) {
            return res;
          } else {
            bail('Invalid character', lookahead());
          }
          if (allowRanges && current('-') && !next('-')) {
            skip('-');
            if (res = parseClassCharacter()) {
              return createClassRange(start, res, from, pos);
            }
            bail('Invalid range end', lookahead());
          }
          return start;
        }
        function parseClassCharacter() {
          if (match('\\')) {
            var res,
              from = pos;
            if (res = parseClassCharacterEscapedHelper()) {
              return res;
            } else {
              bail('Invalid escape', '\\' + lookahead(), from);
            }
          }
          return parseClassCharacterUnescapedHelper();
        }
        function parseClassCharacterUnescapedHelper() {
          var res;
          if (res = matchReg(/^[^()[\]{}/\-\\|]/)) {
            return createCharacter(res);
          }
        }
        function parseClassCharacterEscapedHelper() {
          var res;
          if (match('b')) {
            return createEscaped('singleEscape', 0x0008, '\\b');
          } else if (match('B')) {
            bail('\\B not possible inside of ClassContents', '', pos - 2);
          } else if (res = matchReg(/^[&\-!#%,:;<=>@_`~]/)) {
            return createEscaped('identifier', res[0].codePointAt(0), res[0]);
          } else if (res = parseCharacterEscape()) {
            return res;
          } else {
            return null;
          }
        }
        function parseClassStrings() {
          var from = pos - 3;
          var res = [];
          do {
            res.push(parseClassString());
          } while (match('|'));
          skip('}');
          return createClassStrings(res, from, pos);
        }
        function parseClassString() {
          var res = [],
            from = pos;
          var _char2;
          while (_char2 = parseClassCharacter()) {
            res.push(_char2);
          }
          return createClassString(res, from, pos);
        }
        function bail(message, details, from, to) {
          from = from == null ? pos : from;
          to = to == null ? from : to;
          var contextStart = Math.max(0, from - 10);
          var contextEnd = Math.min(to + 10, str.length);
          var context = '    ' + str.substring(contextStart, contextEnd);
          var pointer = '    ' + new Array(from - contextStart + 1).join(' ') + '^';
          throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\n' + context + '\n' + pointer);
        }
        var backrefDenied = [];
        var closedCaptureCounter = 0;
        var firstIteration = true;
        var shouldReparse = false;
        var hasUnicodeFlag = (flags || "").indexOf("u") !== -1;
        var hasUnicodeSetFlag = (flags || "").indexOf("v") !== -1;
        var isUnicodeMode = hasUnicodeFlag || hasUnicodeSetFlag;
        var pos = 0;
        if (hasUnicodeSetFlag && !features.unicodeSet) {
          throw new Error('The "v" flag is only supported when the .unicodeSet option is enabled.');
        }
        if (hasUnicodeFlag && hasUnicodeSetFlag) {
          throw new Error('The "u" and "v" flags are mutually exclusive.');
        }
        str = String(str);
        if (str === '') {
          str = '(?:)';
        }
        var result = parseDisjunction();
        if (result.range[1] !== str.length) {
          bail('Could not parse entire input - got stuck', '', result.range[1]);
        }
        shouldReparse = shouldReparse || backrefDenied.some(function (ref) {
          return ref <= closedCaptureCounter;
        });
        if (shouldReparse) {
          pos = 0;
          firstIteration = false;
          return parseDisjunction();
        }
        return result;
      }
      var regjsparser = {
        parse: parse
      };
      if (module.exports) {
        module.exports = regjsparser;
      } else {
        window.regjsparser = regjsparser;
      }
    })();
  })(parser);
  var parserExports = parser.exports;

  var unicodeCanonicalPropertyNamesEcmascript = new Set(['General_Category', 'Script', 'Script_Extensions', 'Alphabetic', 'Any', 'ASCII', 'ASCII_Hex_Digit', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'ID_Continue', 'ID_Start', 'Ideographic', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']);

  var unicodePropertyAliasesEcmascript = new Map([['scx', 'Script_Extensions'], ['sc', 'Script'], ['gc', 'General_Category'], ['AHex', 'ASCII_Hex_Digit'], ['Alpha', 'Alphabetic'], ['Bidi_C', 'Bidi_Control'], ['Bidi_M', 'Bidi_Mirrored'], ['Cased', 'Cased'], ['CI', 'Case_Ignorable'], ['CWCF', 'Changes_When_Casefolded'], ['CWCM', 'Changes_When_Casemapped'], ['CWKCF', 'Changes_When_NFKC_Casefolded'], ['CWL', 'Changes_When_Lowercased'], ['CWT', 'Changes_When_Titlecased'], ['CWU', 'Changes_When_Uppercased'], ['Dash', 'Dash'], ['Dep', 'Deprecated'], ['DI', 'Default_Ignorable_Code_Point'], ['Dia', 'Diacritic'], ['EBase', 'Emoji_Modifier_Base'], ['EComp', 'Emoji_Component'], ['EMod', 'Emoji_Modifier'], ['Emoji', 'Emoji'], ['EPres', 'Emoji_Presentation'], ['Ext', 'Extender'], ['ExtPict', 'Extended_Pictographic'], ['Gr_Base', 'Grapheme_Base'], ['Gr_Ext', 'Grapheme_Extend'], ['Hex', 'Hex_Digit'], ['IDC', 'ID_Continue'], ['Ideo', 'Ideographic'], ['IDS', 'ID_Start'], ['IDSB', 'IDS_Binary_Operator'], ['IDST', 'IDS_Trinary_Operator'], ['Join_C', 'Join_Control'], ['LOE', 'Logical_Order_Exception'], ['Lower', 'Lowercase'], ['Math', 'Math'], ['NChar', 'Noncharacter_Code_Point'], ['Pat_Syn', 'Pattern_Syntax'], ['Pat_WS', 'Pattern_White_Space'], ['QMark', 'Quotation_Mark'], ['Radical', 'Radical'], ['RI', 'Regional_Indicator'], ['SD', 'Soft_Dotted'], ['STerm', 'Sentence_Terminal'], ['Term', 'Terminal_Punctuation'], ['UIdeo', 'Unified_Ideograph'], ['Upper', 'Uppercase'], ['VS', 'Variation_Selector'], ['WSpace', 'White_Space'], ['space', 'White_Space'], ['XIDC', 'XID_Continue'], ['XIDS', 'XID_Start']]);

  var canonicalProperties = unicodeCanonicalPropertyNamesEcmascript;
  var propertyAliases = unicodePropertyAliasesEcmascript;
  var matchProperty = function matchProperty(property) {
    if (canonicalProperties.has(property)) {
      return property;
    }
    if (propertyAliases.has(property)) {
      return propertyAliases.get(property);
    }
    throw new Error("Unknown property: " + property);
  };
  var unicodeMatchPropertyEcmascript = matchProperty;

  var mappings = new Map([['General_Category', new Map([['C', 'Other'], ['Cc', 'Control'], ['cntrl', 'Control'], ['Cf', 'Format'], ['Cn', 'Unassigned'], ['Co', 'Private_Use'], ['Cs', 'Surrogate'], ['L', 'Letter'], ['LC', 'Cased_Letter'], ['Ll', 'Lowercase_Letter'], ['Lm', 'Modifier_Letter'], ['Lo', 'Other_Letter'], ['Lt', 'Titlecase_Letter'], ['Lu', 'Uppercase_Letter'], ['M', 'Mark'], ['Combining_Mark', 'Mark'], ['Mc', 'Spacing_Mark'], ['Me', 'Enclosing_Mark'], ['Mn', 'Nonspacing_Mark'], ['N', 'Number'], ['Nd', 'Decimal_Number'], ['digit', 'Decimal_Number'], ['Nl', 'Letter_Number'], ['No', 'Other_Number'], ['P', 'Punctuation'], ['punct', 'Punctuation'], ['Pc', 'Connector_Punctuation'], ['Pd', 'Dash_Punctuation'], ['Pe', 'Close_Punctuation'], ['Pf', 'Final_Punctuation'], ['Pi', 'Initial_Punctuation'], ['Po', 'Other_Punctuation'], ['Ps', 'Open_Punctuation'], ['S', 'Symbol'], ['Sc', 'Currency_Symbol'], ['Sk', 'Modifier_Symbol'], ['Sm', 'Math_Symbol'], ['So', 'Other_Symbol'], ['Z', 'Separator'], ['Zl', 'Line_Separator'], ['Zp', 'Paragraph_Separator'], ['Zs', 'Space_Separator'], ['Other', 'Other'], ['Control', 'Control'], ['Format', 'Format'], ['Unassigned', 'Unassigned'], ['Private_Use', 'Private_Use'], ['Surrogate', 'Surrogate'], ['Letter', 'Letter'], ['Cased_Letter', 'Cased_Letter'], ['Lowercase_Letter', 'Lowercase_Letter'], ['Modifier_Letter', 'Modifier_Letter'], ['Other_Letter', 'Other_Letter'], ['Titlecase_Letter', 'Titlecase_Letter'], ['Uppercase_Letter', 'Uppercase_Letter'], ['Mark', 'Mark'], ['Spacing_Mark', 'Spacing_Mark'], ['Enclosing_Mark', 'Enclosing_Mark'], ['Nonspacing_Mark', 'Nonspacing_Mark'], ['Number', 'Number'], ['Decimal_Number', 'Decimal_Number'], ['Letter_Number', 'Letter_Number'], ['Other_Number', 'Other_Number'], ['Punctuation', 'Punctuation'], ['Connector_Punctuation', 'Connector_Punctuation'], ['Dash_Punctuation', 'Dash_Punctuation'], ['Close_Punctuation', 'Close_Punctuation'], ['Final_Punctuation', 'Final_Punctuation'], ['Initial_Punctuation', 'Initial_Punctuation'], ['Other_Punctuation', 'Other_Punctuation'], ['Open_Punctuation', 'Open_Punctuation'], ['Symbol', 'Symbol'], ['Currency_Symbol', 'Currency_Symbol'], ['Modifier_Symbol', 'Modifier_Symbol'], ['Math_Symbol', 'Math_Symbol'], ['Other_Symbol', 'Other_Symbol'], ['Separator', 'Separator'], ['Line_Separator', 'Line_Separator'], ['Paragraph_Separator', 'Paragraph_Separator'], ['Space_Separator', 'Space_Separator']])], ['Script', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])], ['Script_Extensions', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])]]);

  var propertyToValueAliases = mappings;
  var matchPropertyValue = function matchPropertyValue(property, value) {
    var aliasToValue = propertyToValueAliases.get(property);
    if (!aliasToValue) {
      throw new Error("Unknown property `" + property + "`.");
    }
    var canonicalValue = aliasToValue.get(value);
    if (canonicalValue) {
      return canonicalValue;
    }
    throw new Error("Unknown value `" + value + "` for property `" + property + "`.");
  };
  var unicodeMatchPropertyValueEcmascript = matchPropertyValue;

  var iuMappings$1 = new Map([[0x4B, 0x212A], [0x53, 0x17F], [0x6B, 0x212A], [0x73, 0x17F], [0xB5, 0x39C], [0xC5, 0x212B], [0xDF, 0x1E9E], [0xE5, 0x212B], [0x17F, 0x53], [0x1C4, 0x1C5], [0x1C5, 0x1C4], [0x1C7, 0x1C8], [0x1C8, 0x1C7], [0x1CA, 0x1CB], [0x1CB, 0x1CA], [0x1F1, 0x1F2], [0x1F2, 0x1F1], [0x345, 0x1FBE], [0x392, 0x3D0], [0x395, 0x3F5], [0x398, 0x3F4], [0x399, 0x1FBE], [0x39A, 0x3F0], [0x39C, 0xB5], [0x3A0, 0x3D6], [0x3A1, 0x3F1], [0x3A3, 0x3C2], [0x3A6, 0x3D5], [0x3A9, 0x2126], [0x3B8, 0x3F4], [0x3C2, 0x3A3], [0x3C9, 0x2126], [0x3D0, 0x392], [0x3D1, 0x3F4], [0x3D5, 0x3A6], [0x3D6, 0x3A0], [0x3F0, 0x39A], [0x3F1, 0x3A1], [0x3F4, [0x398, 0x3D1, 0x3B8]], [0x3F5, 0x395], [0x412, 0x1C80], [0x414, 0x1C81], [0x41E, 0x1C82], [0x421, 0x1C83], [0x422, 0x1C85], [0x42A, 0x1C86], [0x462, 0x1C87], [0x1C80, 0x412], [0x1C81, 0x414], [0x1C82, 0x41E], [0x1C83, 0x421], [0x1C84, 0x1C85], [0x1C85, [0x422, 0x1C84]], [0x1C86, 0x42A], [0x1C87, 0x462], [0x1C88, 0xA64A], [0x1E60, 0x1E9B], [0x1E9B, 0x1E60], [0x1E9E, 0xDF], [0x1F80, 0x1F88], [0x1F81, 0x1F89], [0x1F82, 0x1F8A], [0x1F83, 0x1F8B], [0x1F84, 0x1F8C], [0x1F85, 0x1F8D], [0x1F86, 0x1F8E], [0x1F87, 0x1F8F], [0x1F88, 0x1F80], [0x1F89, 0x1F81], [0x1F8A, 0x1F82], [0x1F8B, 0x1F83], [0x1F8C, 0x1F84], [0x1F8D, 0x1F85], [0x1F8E, 0x1F86], [0x1F8F, 0x1F87], [0x1F90, 0x1F98], [0x1F91, 0x1F99], [0x1F92, 0x1F9A], [0x1F93, 0x1F9B], [0x1F94, 0x1F9C], [0x1F95, 0x1F9D], [0x1F96, 0x1F9E], [0x1F97, 0x1F9F], [0x1F98, 0x1F90], [0x1F99, 0x1F91], [0x1F9A, 0x1F92], [0x1F9B, 0x1F93], [0x1F9C, 0x1F94], [0x1F9D, 0x1F95], [0x1F9E, 0x1F96], [0x1F9F, 0x1F97], [0x1FA0, 0x1FA8], [0x1FA1, 0x1FA9], [0x1FA2, 0x1FAA], [0x1FA3, 0x1FAB], [0x1FA4, 0x1FAC], [0x1FA5, 0x1FAD], [0x1FA6, 0x1FAE], [0x1FA7, 0x1FAF], [0x1FA8, 0x1FA0], [0x1FA9, 0x1FA1], [0x1FAA, 0x1FA2], [0x1FAB, 0x1FA3], [0x1FAC, 0x1FA4], [0x1FAD, 0x1FA5], [0x1FAE, 0x1FA6], [0x1FAF, 0x1FA7], [0x1FB3, 0x1FBC], [0x1FBC, 0x1FB3], [0x1FBE, [0x345, 0x399]], [0x1FC3, 0x1FCC], [0x1FCC, 0x1FC3], [0x1FF3, 0x1FFC], [0x1FFC, 0x1FF3], [0x2126, [0x3A9, 0x3C9]], [0x212A, 0x4B], [0x212B, [0xC5, 0xE5]], [0xA64A, 0x1C88], [0x10400, 0x10428], [0x10401, 0x10429], [0x10402, 0x1042A], [0x10403, 0x1042B], [0x10404, 0x1042C], [0x10405, 0x1042D], [0x10406, 0x1042E], [0x10407, 0x1042F], [0x10408, 0x10430], [0x10409, 0x10431], [0x1040A, 0x10432], [0x1040B, 0x10433], [0x1040C, 0x10434], [0x1040D, 0x10435], [0x1040E, 0x10436], [0x1040F, 0x10437], [0x10410, 0x10438], [0x10411, 0x10439], [0x10412, 0x1043A], [0x10413, 0x1043B], [0x10414, 0x1043C], [0x10415, 0x1043D], [0x10416, 0x1043E], [0x10417, 0x1043F], [0x10418, 0x10440], [0x10419, 0x10441], [0x1041A, 0x10442], [0x1041B, 0x10443], [0x1041C, 0x10444], [0x1041D, 0x10445], [0x1041E, 0x10446], [0x1041F, 0x10447], [0x10420, 0x10448], [0x10421, 0x10449], [0x10422, 0x1044A], [0x10423, 0x1044B], [0x10424, 0x1044C], [0x10425, 0x1044D], [0x10426, 0x1044E], [0x10427, 0x1044F], [0x10428, 0x10400], [0x10429, 0x10401], [0x1042A, 0x10402], [0x1042B, 0x10403], [0x1042C, 0x10404], [0x1042D, 0x10405], [0x1042E, 0x10406], [0x1042F, 0x10407], [0x10430, 0x10408], [0x10431, 0x10409], [0x10432, 0x1040A], [0x10433, 0x1040B], [0x10434, 0x1040C], [0x10435, 0x1040D], [0x10436, 0x1040E], [0x10437, 0x1040F], [0x10438, 0x10410], [0x10439, 0x10411], [0x1043A, 0x10412], [0x1043B, 0x10413], [0x1043C, 0x10414], [0x1043D, 0x10415], [0x1043E, 0x10416], [0x1043F, 0x10417], [0x10440, 0x10418], [0x10441, 0x10419], [0x10442, 0x1041A], [0x10443, 0x1041B], [0x10444, 0x1041C], [0x10445, 0x1041D], [0x10446, 0x1041E], [0x10447, 0x1041F], [0x10448, 0x10420], [0x10449, 0x10421], [0x1044A, 0x10422], [0x1044B, 0x10423], [0x1044C, 0x10424], [0x1044D, 0x10425], [0x1044E, 0x10426], [0x1044F, 0x10427], [0x104B0, 0x104D8], [0x104B1, 0x104D9], [0x104B2, 0x104DA], [0x104B3, 0x104DB], [0x104B4, 0x104DC], [0x104B5, 0x104DD], [0x104B6, 0x104DE], [0x104B7, 0x104DF], [0x104B8, 0x104E0], [0x104B9, 0x104E1], [0x104BA, 0x104E2], [0x104BB, 0x104E3], [0x104BC, 0x104E4], [0x104BD, 0x104E5], [0x104BE, 0x104E6], [0x104BF, 0x104E7], [0x104C0, 0x104E8], [0x104C1, 0x104E9], [0x104C2, 0x104EA], [0x104C3, 0x104EB], [0x104C4, 0x104EC], [0x104C5, 0x104ED], [0x104C6, 0x104EE], [0x104C7, 0x104EF], [0x104C8, 0x104F0], [0x104C9, 0x104F1], [0x104CA, 0x104F2], [0x104CB, 0x104F3], [0x104CC, 0x104F4], [0x104CD, 0x104F5], [0x104CE, 0x104F6], [0x104CF, 0x104F7], [0x104D0, 0x104F8], [0x104D1, 0x104F9], [0x104D2, 0x104FA], [0x104D3, 0x104FB], [0x104D8, 0x104B0], [0x104D9, 0x104B1], [0x104DA, 0x104B2], [0x104DB, 0x104B3], [0x104DC, 0x104B4], [0x104DD, 0x104B5], [0x104DE, 0x104B6], [0x104DF, 0x104B7], [0x104E0, 0x104B8], [0x104E1, 0x104B9], [0x104E2, 0x104BA], [0x104E3, 0x104BB], [0x104E4, 0x104BC], [0x104E5, 0x104BD], [0x104E6, 0x104BE], [0x104E7, 0x104BF], [0x104E8, 0x104C0], [0x104E9, 0x104C1], [0x104EA, 0x104C2], [0x104EB, 0x104C3], [0x104EC, 0x104C4], [0x104ED, 0x104C5], [0x104EE, 0x104C6], [0x104EF, 0x104C7], [0x104F0, 0x104C8], [0x104F1, 0x104C9], [0x104F2, 0x104CA], [0x104F3, 0x104CB], [0x104F4, 0x104CC], [0x104F5, 0x104CD], [0x104F6, 0x104CE], [0x104F7, 0x104CF], [0x104F8, 0x104D0], [0x104F9, 0x104D1], [0x104FA, 0x104D2], [0x104FB, 0x104D3], [0x10570, 0x10597], [0x10571, 0x10598], [0x10572, 0x10599], [0x10573, 0x1059A], [0x10574, 0x1059B], [0x10575, 0x1059C], [0x10576, 0x1059D], [0x10577, 0x1059E], [0x10578, 0x1059F], [0x10579, 0x105A0], [0x1057A, 0x105A1], [0x1057C, 0x105A3], [0x1057D, 0x105A4], [0x1057E, 0x105A5], [0x1057F, 0x105A6], [0x10580, 0x105A7], [0x10581, 0x105A8], [0x10582, 0x105A9], [0x10583, 0x105AA], [0x10584, 0x105AB], [0x10585, 0x105AC], [0x10586, 0x105AD], [0x10587, 0x105AE], [0x10588, 0x105AF], [0x10589, 0x105B0], [0x1058A, 0x105B1], [0x1058C, 0x105B3], [0x1058D, 0x105B4], [0x1058E, 0x105B5], [0x1058F, 0x105B6], [0x10590, 0x105B7], [0x10591, 0x105B8], [0x10592, 0x105B9], [0x10594, 0x105BB], [0x10595, 0x105BC], [0x10597, 0x10570], [0x10598, 0x10571], [0x10599, 0x10572], [0x1059A, 0x10573], [0x1059B, 0x10574], [0x1059C, 0x10575], [0x1059D, 0x10576], [0x1059E, 0x10577], [0x1059F, 0x10578], [0x105A0, 0x10579], [0x105A1, 0x1057A], [0x105A3, 0x1057C], [0x105A4, 0x1057D], [0x105A5, 0x1057E], [0x105A6, 0x1057F], [0x105A7, 0x10580], [0x105A8, 0x10581], [0x105A9, 0x10582], [0x105AA, 0x10583], [0x105AB, 0x10584], [0x105AC, 0x10585], [0x105AD, 0x10586], [0x105AE, 0x10587], [0x105AF, 0x10588], [0x105B0, 0x10589], [0x105B1, 0x1058A], [0x105B3, 0x1058C], [0x105B4, 0x1058D], [0x105B5, 0x1058E], [0x105B6, 0x1058F], [0x105B7, 0x10590], [0x105B8, 0x10591], [0x105B9, 0x10592], [0x105BB, 0x10594], [0x105BC, 0x10595], [0x10C80, 0x10CC0], [0x10C81, 0x10CC1], [0x10C82, 0x10CC2], [0x10C83, 0x10CC3], [0x10C84, 0x10CC4], [0x10C85, 0x10CC5], [0x10C86, 0x10CC6], [0x10C87, 0x10CC7], [0x10C88, 0x10CC8], [0x10C89, 0x10CC9], [0x10C8A, 0x10CCA], [0x10C8B, 0x10CCB], [0x10C8C, 0x10CCC], [0x10C8D, 0x10CCD], [0x10C8E, 0x10CCE], [0x10C8F, 0x10CCF], [0x10C90, 0x10CD0], [0x10C91, 0x10CD1], [0x10C92, 0x10CD2], [0x10C93, 0x10CD3], [0x10C94, 0x10CD4], [0x10C95, 0x10CD5], [0x10C96, 0x10CD6], [0x10C97, 0x10CD7], [0x10C98, 0x10CD8], [0x10C99, 0x10CD9], [0x10C9A, 0x10CDA], [0x10C9B, 0x10CDB], [0x10C9C, 0x10CDC], [0x10C9D, 0x10CDD], [0x10C9E, 0x10CDE], [0x10C9F, 0x10CDF], [0x10CA0, 0x10CE0], [0x10CA1, 0x10CE1], [0x10CA2, 0x10CE2], [0x10CA3, 0x10CE3], [0x10CA4, 0x10CE4], [0x10CA5, 0x10CE5], [0x10CA6, 0x10CE6], [0x10CA7, 0x10CE7], [0x10CA8, 0x10CE8], [0x10CA9, 0x10CE9], [0x10CAA, 0x10CEA], [0x10CAB, 0x10CEB], [0x10CAC, 0x10CEC], [0x10CAD, 0x10CED], [0x10CAE, 0x10CEE], [0x10CAF, 0x10CEF], [0x10CB0, 0x10CF0], [0x10CB1, 0x10CF1], [0x10CB2, 0x10CF2], [0x10CC0, 0x10C80], [0x10CC1, 0x10C81], [0x10CC2, 0x10C82], [0x10CC3, 0x10C83], [0x10CC4, 0x10C84], [0x10CC5, 0x10C85], [0x10CC6, 0x10C86], [0x10CC7, 0x10C87], [0x10CC8, 0x10C88], [0x10CC9, 0x10C89], [0x10CCA, 0x10C8A], [0x10CCB, 0x10C8B], [0x10CCC, 0x10C8C], [0x10CCD, 0x10C8D], [0x10CCE, 0x10C8E], [0x10CCF, 0x10C8F], [0x10CD0, 0x10C90], [0x10CD1, 0x10C91], [0x10CD2, 0x10C92], [0x10CD3, 0x10C93], [0x10CD4, 0x10C94], [0x10CD5, 0x10C95], [0x10CD6, 0x10C96], [0x10CD7, 0x10C97], [0x10CD8, 0x10C98], [0x10CD9, 0x10C99], [0x10CDA, 0x10C9A], [0x10CDB, 0x10C9B], [0x10CDC, 0x10C9C], [0x10CDD, 0x10C9D], [0x10CDE, 0x10C9E], [0x10CDF, 0x10C9F], [0x10CE0, 0x10CA0], [0x10CE1, 0x10CA1], [0x10CE2, 0x10CA2], [0x10CE3, 0x10CA3], [0x10CE4, 0x10CA4], [0x10CE5, 0x10CA5], [0x10CE6, 0x10CA6], [0x10CE7, 0x10CA7], [0x10CE8, 0x10CA8], [0x10CE9, 0x10CA9], [0x10CEA, 0x10CAA], [0x10CEB, 0x10CAB], [0x10CEC, 0x10CAC], [0x10CED, 0x10CAD], [0x10CEE, 0x10CAE], [0x10CEF, 0x10CAF], [0x10CF0, 0x10CB0], [0x10CF1, 0x10CB1], [0x10CF2, 0x10CB2], [0x118A0, 0x118C0], [0x118A1, 0x118C1], [0x118A2, 0x118C2], [0x118A3, 0x118C3], [0x118A4, 0x118C4], [0x118A5, 0x118C5], [0x118A6, 0x118C6], [0x118A7, 0x118C7], [0x118A8, 0x118C8], [0x118A9, 0x118C9], [0x118AA, 0x118CA], [0x118AB, 0x118CB], [0x118AC, 0x118CC], [0x118AD, 0x118CD], [0x118AE, 0x118CE], [0x118AF, 0x118CF], [0x118B0, 0x118D0], [0x118B1, 0x118D1], [0x118B2, 0x118D2], [0x118B3, 0x118D3], [0x118B4, 0x118D4], [0x118B5, 0x118D5], [0x118B6, 0x118D6], [0x118B7, 0x118D7], [0x118B8, 0x118D8], [0x118B9, 0x118D9], [0x118BA, 0x118DA], [0x118BB, 0x118DB], [0x118BC, 0x118DC], [0x118BD, 0x118DD], [0x118BE, 0x118DE], [0x118BF, 0x118DF], [0x118C0, 0x118A0], [0x118C1, 0x118A1], [0x118C2, 0x118A2], [0x118C3, 0x118A3], [0x118C4, 0x118A4], [0x118C5, 0x118A5], [0x118C6, 0x118A6], [0x118C7, 0x118A7], [0x118C8, 0x118A8], [0x118C9, 0x118A9], [0x118CA, 0x118AA], [0x118CB, 0x118AB], [0x118CC, 0x118AC], [0x118CD, 0x118AD], [0x118CE, 0x118AE], [0x118CF, 0x118AF], [0x118D0, 0x118B0], [0x118D1, 0x118B1], [0x118D2, 0x118B2], [0x118D3, 0x118B3], [0x118D4, 0x118B4], [0x118D5, 0x118B5], [0x118D6, 0x118B6], [0x118D7, 0x118B7], [0x118D8, 0x118B8], [0x118D9, 0x118B9], [0x118DA, 0x118BA], [0x118DB, 0x118BB], [0x118DC, 0x118BC], [0x118DD, 0x118BD], [0x118DE, 0x118BE], [0x118DF, 0x118BF], [0x16E40, 0x16E60], [0x16E41, 0x16E61], [0x16E42, 0x16E62], [0x16E43, 0x16E63], [0x16E44, 0x16E64], [0x16E45, 0x16E65], [0x16E46, 0x16E66], [0x16E47, 0x16E67], [0x16E48, 0x16E68], [0x16E49, 0x16E69], [0x16E4A, 0x16E6A], [0x16E4B, 0x16E6B], [0x16E4C, 0x16E6C], [0x16E4D, 0x16E6D], [0x16E4E, 0x16E6E], [0x16E4F, 0x16E6F], [0x16E50, 0x16E70], [0x16E51, 0x16E71], [0x16E52, 0x16E72], [0x16E53, 0x16E73], [0x16E54, 0x16E74], [0x16E55, 0x16E75], [0x16E56, 0x16E76], [0x16E57, 0x16E77], [0x16E58, 0x16E78], [0x16E59, 0x16E79], [0x16E5A, 0x16E7A], [0x16E5B, 0x16E7B], [0x16E5C, 0x16E7C], [0x16E5D, 0x16E7D], [0x16E5E, 0x16E7E], [0x16E5F, 0x16E7F], [0x16E60, 0x16E40], [0x16E61, 0x16E41], [0x16E62, 0x16E42], [0x16E63, 0x16E43], [0x16E64, 0x16E44], [0x16E65, 0x16E45], [0x16E66, 0x16E46], [0x16E67, 0x16E47], [0x16E68, 0x16E48], [0x16E69, 0x16E49], [0x16E6A, 0x16E4A], [0x16E6B, 0x16E4B], [0x16E6C, 0x16E4C], [0x16E6D, 0x16E4D], [0x16E6E, 0x16E4E], [0x16E6F, 0x16E4F], [0x16E70, 0x16E50], [0x16E71, 0x16E51], [0x16E72, 0x16E52], [0x16E73, 0x16E53], [0x16E74, 0x16E54], [0x16E75, 0x16E55], [0x16E76, 0x16E56], [0x16E77, 0x16E57], [0x16E78, 0x16E58], [0x16E79, 0x16E59], [0x16E7A, 0x16E5A], [0x16E7B, 0x16E5B], [0x16E7C, 0x16E5C], [0x16E7D, 0x16E5D], [0x16E7E, 0x16E5E], [0x16E7F, 0x16E5F], [0x1E900, 0x1E922], [0x1E901, 0x1E923], [0x1E902, 0x1E924], [0x1E903, 0x1E925], [0x1E904, 0x1E926], [0x1E905, 0x1E927], [0x1E906, 0x1E928], [0x1E907, 0x1E929], [0x1E908, 0x1E92A], [0x1E909, 0x1E92B], [0x1E90A, 0x1E92C], [0x1E90B, 0x1E92D], [0x1E90C, 0x1E92E], [0x1E90D, 0x1E92F], [0x1E90E, 0x1E930], [0x1E90F, 0x1E931], [0x1E910, 0x1E932], [0x1E911, 0x1E933], [0x1E912, 0x1E934], [0x1E913, 0x1E935], [0x1E914, 0x1E936], [0x1E915, 0x1E937], [0x1E916, 0x1E938], [0x1E917, 0x1E939], [0x1E918, 0x1E93A], [0x1E919, 0x1E93B], [0x1E91A, 0x1E93C], [0x1E91B, 0x1E93D], [0x1E91C, 0x1E93E], [0x1E91D, 0x1E93F], [0x1E91E, 0x1E940], [0x1E91F, 0x1E941], [0x1E920, 0x1E942], [0x1E921, 0x1E943], [0x1E922, 0x1E900], [0x1E923, 0x1E901], [0x1E924, 0x1E902], [0x1E925, 0x1E903], [0x1E926, 0x1E904], [0x1E927, 0x1E905], [0x1E928, 0x1E906], [0x1E929, 0x1E907], [0x1E92A, 0x1E908], [0x1E92B, 0x1E909], [0x1E92C, 0x1E90A], [0x1E92D, 0x1E90B], [0x1E92E, 0x1E90C], [0x1E92F, 0x1E90D], [0x1E930, 0x1E90E], [0x1E931, 0x1E90F], [0x1E932, 0x1E910], [0x1E933, 0x1E911], [0x1E934, 0x1E912], [0x1E935, 0x1E913], [0x1E936, 0x1E914], [0x1E937, 0x1E915], [0x1E938, 0x1E916], [0x1E939, 0x1E917], [0x1E93A, 0x1E918], [0x1E93B, 0x1E919], [0x1E93C, 0x1E91A], [0x1E93D, 0x1E91B], [0x1E93E, 0x1E91C], [0x1E93F, 0x1E91D], [0x1E940, 0x1E91E], [0x1E941, 0x1E91F], [0x1E942, 0x1E920], [0x1E943, 0x1E921]]);

  var characterClassEscapeSets = {};

  var regenerate$1 = regenerateExports;
  characterClassEscapeSets.REGULAR = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0xFFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0xFFFF)], ['w', regenerate$1(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0xFFFF)]]);
  characterClassEscapeSets.UNICODE = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate$1(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x10FFFF)]]);
  characterClassEscapeSets.UNICODE_IGNORE_CASE = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate$1(0x5F, 0x17F, 0x212A).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x17E).addRange(0x180, 0x2129).addRange(0x212B, 0x10FFFF)]]);

  var generate = regjsgenExports.generate;
  var parse = parserExports.parse;
  var regenerate = regenerateExports;
  var unicodeMatchProperty = unicodeMatchPropertyEcmascript;
  var unicodeMatchPropertyValue = unicodeMatchPropertyValueEcmascript;
  var iuMappings = iuMappings$1;
  var ESCAPE_SETS = characterClassEscapeSets;
  function flatMap$1(array, callback) {
    var result = [];
    array.forEach(function (item) {
      var res = callback(item);
      if (Array.isArray(res)) {
        result.push.apply(result, res);
      } else {
        result.push(res);
      }
    });
    return result;
  }
  var SPECIAL_CHARS = /([\\^$.*+?()[\]{}|])/g;
  var UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);
  var ASTRAL_SET = regenerate().addRange(0x10000, 0x10FFFF);
  var NEWLINE_SET = regenerate().add(0x000A, 0x000D, 0x2028, 0x2029);
  var DOT_SET_UNICODE = UNICODE_SET.clone().remove(NEWLINE_SET);
  var getCharacterClassEscapeSet = function getCharacterClassEscapeSet(character, unicode, ignoreCase) {
    if (unicode) {
      if (ignoreCase) {
        return ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);
      }
      return ESCAPE_SETS.UNICODE.get(character);
    }
    return ESCAPE_SETS.REGULAR.get(character);
  };
  var getUnicodeDotSet = function getUnicodeDotSet(dotAll) {
    return dotAll ? UNICODE_SET : DOT_SET_UNICODE;
  };
  var getUnicodePropertyValueSet = function getUnicodePropertyValueSet(property, value) {
    var path = value ? property + "/" + value : "Binary_Property/" + property;
    try {
      return createCommonjsRequire("/node_modules/regexpu-core")("regenerate-unicode-properties/" + path + ".js");
    } catch (exception) {
      throw new Error("Failed to recognize value `" + value + "` for property " + ("`" + property + "`."));
    }
  };
  var handleLoneUnicodePropertyNameOrValue = function handleLoneUnicodePropertyNameOrValue(value) {
    try {
      var _property = 'General_Category';
      var category = unicodeMatchPropertyValue(_property, value);
      return getUnicodePropertyValueSet(_property, category);
    } catch (exception) {}
    try {
      return getUnicodePropertyValueSet('Property_of_Strings', value);
    } catch (exception) {}
    var property = unicodeMatchProperty(value);
    return getUnicodePropertyValueSet(property);
  };
  var getUnicodePropertyEscapeSet = function getUnicodePropertyEscapeSet(value, isNegative) {
    var parts = value.split('=');
    var firstPart = parts[0];
    var set;
    if (parts.length == 1) {
      set = handleLoneUnicodePropertyNameOrValue(firstPart);
    } else {
      var property = unicodeMatchProperty(firstPart);
      var _value = unicodeMatchPropertyValue(property, parts[1]);
      set = getUnicodePropertyValueSet(property, _value);
    }
    if (isNegative) {
      if (set.strings) {
        throw new Error('Cannot negate Unicode property of strings');
      }
      return {
        characters: UNICODE_SET.clone().remove(set.characters),
        strings: new Set()
      };
    }
    return {
      characters: set.characters.clone(),
      strings: set.strings ? new Set(set.strings.map(function (str) {
        return str.replace(SPECIAL_CHARS, '\\$1');
      })) : new Set()
    };
  };
  var getUnicodePropertyEscapeCharacterClassData = function getUnicodePropertyEscapeCharacterClassData(property, isNegative) {
    var set = getUnicodePropertyEscapeSet(property, isNegative);
    var data = getCharacterClassEmptyData();
    data.singleChars = set.characters;
    if (set.strings.size > 0) {
      data.longStrings = set.strings;
      data.maybeIncludesStrings = true;
    }
    return data;
  };
  function configNeedCaseFoldAscii() {
    return !!config.modifiersData.i;
  }
  function configNeedCaseFoldUnicode() {
    if (config.modifiersData.i === false) return false;
    if (!config.transform.unicodeFlag) return false;
    return Boolean(config.modifiersData.i || config.flags.ignoreCase);
  }
  regenerate.prototype.iuAddRange = function (min, max) {
    var $this = this;
    do {
      var folded = caseFold(min, configNeedCaseFoldAscii(), configNeedCaseFoldUnicode());
      if (folded) {
        $this.add(folded);
      }
    } while (++min <= max);
    return $this;
  };
  regenerate.prototype.iuRemoveRange = function (min, max) {
    var $this = this;
    do {
      var folded = caseFold(min, configNeedCaseFoldAscii(), configNeedCaseFoldUnicode());
      if (folded) {
        $this.remove(folded);
      }
    } while (++min <= max);
    return $this;
  };
  var update = function update(item, pattern) {
    var tree = parse(pattern, config.useUnicodeFlag ? 'u' : '', {
      lookbehind: true,
      namedGroups: true,
      unicodePropertyEscape: true,
      unicodeSet: true,
      modifiers: true
    });
    switch (tree.type) {
      case 'characterClass':
      case 'group':
      case 'value':
        break;
      default:
        tree = wrap(tree, pattern);
    }
    Object.assign(item, tree);
  };
  var wrap = function wrap(tree, pattern) {
    return {
      'type': 'group',
      'behavior': 'ignore',
      'body': [tree],
      'raw': "(?:" + pattern + ")"
    };
  };
  var caseFold = function caseFold(codePoint, includeAscii, includeUnicode) {
    var folded = (includeUnicode ? iuMappings.get(codePoint) : undefined) || [];
    if (typeof folded === 'number') folded = [folded];
    if (includeAscii) {
      if (codePoint >= 0x41 && codePoint <= 0x5A) {
        folded.push(codePoint + 0x20);
      } else if (codePoint >= 0x61 && codePoint <= 0x7A) {
        folded.push(codePoint - 0x20);
      }
    }
    return folded.length == 0 ? false : folded;
  };
  var buildHandler = function buildHandler(action) {
    switch (action) {
      case 'union':
        return {
          single: function single(data, cp) {
            data.singleChars.add(cp);
          },
          regSet: function regSet(data, set2) {
            data.singleChars.add(set2);
          },
          range: function range(data, start, end) {
            data.singleChars.addRange(start, end);
          },
          iuRange: function iuRange(data, start, end) {
            data.singleChars.iuAddRange(start, end);
          },
          nested: function nested(data, nestedData) {
            data.singleChars.add(nestedData.singleChars);
            for (var _iterator = _createForOfIteratorHelperLoose(nestedData.longStrings), _step; !(_step = _iterator()).done;) {
              var str = _step.value;
              data.longStrings.add(str);
            }
            if (nestedData.maybeIncludesStrings) data.maybeIncludesStrings = true;
          }
        };
      case 'union-negative':
        {
          var regSet = function regSet(data, set2) {
            data.singleChars = UNICODE_SET.clone().remove(set2).add(data.singleChars);
          };
          return {
            single: function single(data, cp) {
              var unicode = UNICODE_SET.clone();
              data.singleChars = data.singleChars.contains(cp) ? unicode : unicode.remove(cp);
            },
            regSet: regSet,
            range: function range(data, start, end) {
              data.singleChars = UNICODE_SET.clone().removeRange(start, end).add(data.singleChars);
            },
            iuRange: function iuRange(data, start, end) {
              data.singleChars = UNICODE_SET.clone().iuRemoveRange(start, end).add(data.singleChars);
            },
            nested: function nested(data, nestedData) {
              regSet(data, nestedData.singleChars);
              if (nestedData.maybeIncludesStrings) throw new Error('ASSERTION ERROR');
            }
          };
        }
      case 'intersection':
        {
          var _regSet = function _regSet(data, set2) {
            if (data.first) data.singleChars = set2;else data.singleChars.intersection(set2);
          };
          return {
            single: function single(data, cp) {
              data.singleChars = data.first || data.singleChars.contains(cp) ? regenerate(cp) : regenerate();
              data.longStrings.clear();
              data.maybeIncludesStrings = false;
            },
            regSet: function regSet(data, set) {
              _regSet(data, set);
              data.longStrings.clear();
              data.maybeIncludesStrings = false;
            },
            range: function range(data, start, end) {
              if (data.first) data.singleChars.addRange(start, end);else data.singleChars.intersection(regenerate().addRange(start, end));
              data.longStrings.clear();
              data.maybeIncludesStrings = false;
            },
            iuRange: function iuRange(data, start, end) {
              if (data.first) data.singleChars.iuAddRange(start, end);else data.singleChars.intersection(regenerate().iuAddRange(start, end));
              data.longStrings.clear();
              data.maybeIncludesStrings = false;
            },
            nested: function nested(data, nestedData) {
              _regSet(data, nestedData.singleChars);
              if (data.first) {
                data.longStrings = nestedData.longStrings;
                data.maybeIncludesStrings = nestedData.maybeIncludesStrings;
              } else {
                for (var _iterator2 = _createForOfIteratorHelperLoose(data.longStrings), _step2; !(_step2 = _iterator2()).done;) {
                  var str = _step2.value;
                  if (!nestedData.longStrings.has(str)) data.longStrings["delete"](str);
                }
                if (!nestedData.maybeIncludesStrings) data.maybeIncludesStrings = false;
              }
            }
          };
        }
      case 'subtraction':
        {
          var _regSet2 = function _regSet2(data, set2) {
            if (data.first) data.singleChars.add(set2);else data.singleChars.remove(set2);
          };
          return {
            single: function single(data, cp) {
              if (data.first) data.singleChars.add(cp);else data.singleChars.remove(cp);
            },
            regSet: _regSet2,
            range: function range(data, start, end) {
              if (data.first) data.singleChars.addRange(start, end);else data.singleChars.removeRange(start, end);
            },
            iuRange: function iuRange(data, start, end) {
              if (data.first) data.singleChars.iuAddRange(start, end);else data.singleChars.iuRemoveRange(start, end);
            },
            nested: function nested(data, nestedData) {
              _regSet2(data, nestedData.singleChars);
              if (data.first) {
                data.longStrings = nestedData.longStrings;
                data.maybeIncludesStrings = nestedData.maybeIncludesStrings;
              } else {
                for (var _iterator3 = _createForOfIteratorHelperLoose(data.longStrings), _step3; !(_step3 = _iterator3()).done;) {
                  var str = _step3.value;
                  if (nestedData.longStrings.has(str)) data.longStrings["delete"](str);
                }
              }
            }
          };
        }
      default:
        throw new Error("Unknown set action: " + characterClassItem.kind);
    }
  };
  var getCharacterClassEmptyData = function getCharacterClassEmptyData() {
    return {
      transformed: config.transform.unicodeFlag,
      singleChars: regenerate(),
      longStrings: new Set(),
      hasEmptyString: false,
      first: true,
      maybeIncludesStrings: false
    };
  };
  var maybeFold = function maybeFold(codePoint) {
    var caseFoldAscii = configNeedCaseFoldAscii();
    var caseFoldUnicode = configNeedCaseFoldUnicode();
    if (caseFoldAscii || caseFoldUnicode) {
      var folded = caseFold(codePoint, caseFoldAscii, caseFoldUnicode);
      if (folded) {
        return [codePoint, folded];
      }
    }
    return [codePoint];
  };
  var computeClassStrings = function computeClassStrings(classStrings, regenerateOptions) {
    var data = getCharacterClassEmptyData();
    var caseFoldAscii = configNeedCaseFoldAscii();
    var caseFoldUnicode = configNeedCaseFoldUnicode();
    for (var _iterator4 = _createForOfIteratorHelperLoose(classStrings.strings), _step4; !(_step4 = _iterator4()).done;) {
      var string = _step4.value;
      if (string.characters.length === 1) {
        maybeFold(string.characters[0].codePoint).forEach(function (cp) {
          data.singleChars.add(cp);
        });
      } else {
        var stringifiedString = void 0;
        if (caseFoldUnicode || caseFoldAscii) {
          stringifiedString = '';
          for (var _iterator5 = _createForOfIteratorHelperLoose(string.characters), _step5; !(_step5 = _iterator5()).done;) {
            var ch = _step5.value;
            var set = regenerate(ch.codePoint);
            var folded = maybeFold(ch.codePoint);
            if (folded) set.add(folded);
            stringifiedString += set.toString(regenerateOptions);
          }
        } else {
          stringifiedString = string.characters.map(function (ch) {
            return generate(ch);
          }).join('');
        }
        data.longStrings.add(stringifiedString);
        data.maybeIncludesStrings = true;
      }
    }
    return data;
  };
  var _computeCharacterClass = function computeCharacterClass(characterClassItem, regenerateOptions) {
    var data = getCharacterClassEmptyData();
    var handlePositive;
    var handleNegative;
    switch (characterClassItem.kind) {
      case 'union':
        handlePositive = buildHandler('union');
        handleNegative = buildHandler('union-negative');
        break;
      case 'intersection':
        handlePositive = buildHandler('intersection');
        handleNegative = buildHandler('subtraction');
        break;
      case 'subtraction':
        handlePositive = buildHandler('subtraction');
        handleNegative = buildHandler('intersection');
        break;
      default:
        throw new Error("Unknown character class kind: " + characterClassItem.kind);
    }
    var caseFoldAscii = configNeedCaseFoldAscii();
    var caseFoldUnicode = configNeedCaseFoldUnicode();
    for (var _iterator6 = _createForOfIteratorHelperLoose(characterClassItem.body), _step6; !(_step6 = _iterator6()).done;) {
      var item = _step6.value;
      switch (item.type) {
        case 'value':
          maybeFold(item.codePoint).forEach(function (cp) {
            handlePositive.single(data, cp);
          });
          break;
        case 'characterClassRange':
          var min = item.min.codePoint;
          var max = item.max.codePoint;
          handlePositive.range(data, min, max);
          if (caseFoldAscii || caseFoldUnicode) {
            handlePositive.iuRange(data, min, max);
            data.transformed = true;
          }
          break;
        case 'characterClassEscape':
          handlePositive.regSet(data, getCharacterClassEscapeSet(item.value, config.flags.unicode, config.flags.ignoreCase));
          break;
        case 'unicodePropertyEscape':
          var nestedData = getUnicodePropertyEscapeCharacterClassData(item.value, item.negative);
          handlePositive.nested(data, nestedData);
          data.transformed = data.transformed || config.transform.unicodePropertyEscapes || config.transform.unicodeSetsFlag && nestedData.maybeIncludesStrings;
          break;
        case 'characterClass':
          var handler = item.negative ? handleNegative : handlePositive;
          var res = _computeCharacterClass(item, regenerateOptions);
          handler.nested(data, res);
          data.transformed = true;
          break;
        case 'classStrings':
          handlePositive.nested(data, computeClassStrings(item, regenerateOptions));
          data.transformed = true;
          break;
        default:
          throw new Error("Unknown term type: " + item.type);
      }
      data.first = false;
    }
    if (characterClassItem.negative && data.maybeIncludesStrings) {
      throw new SyntaxError('Cannot negate set containing strings');
    }
    return data;
  };
  var processCharacterClass = function processCharacterClass(characterClassItem, regenerateOptions, computed) {
    if (computed === void 0) {
      computed = _computeCharacterClass(characterClassItem, regenerateOptions);
    }
    var negative = characterClassItem.negative;
    var _computed = computed,
      singleChars = _computed.singleChars,
      transformed = _computed.transformed,
      longStrings = _computed.longStrings;
    if (transformed) {
      var setStr = singleChars.toString(regenerateOptions);
      if (negative) {
        if (config.useUnicodeFlag) {
          update(characterClassItem, "[^" + (setStr[0] === '[' ? setStr.slice(1, -1) : setStr) + "]");
        } else {
          if (config.flags.unicode) {
            if (config.flags.ignoreCase) {
              var astralCharsSet = singleChars.clone().intersection(ASTRAL_SET);
              var surrogateOrBMPSetStr = singleChars.clone().remove(astralCharsSet).addRange(0xd800, 0xdfff).toString({
                bmpOnly: true
              });
              var astralNegativeSetStr = ASTRAL_SET.clone().remove(astralCharsSet).toString(regenerateOptions);
              update(characterClassItem, "(?!" + surrogateOrBMPSetStr + ")[\\s\\S]|" + astralNegativeSetStr);
            } else {
              update(characterClassItem, UNICODE_SET.clone().remove(singleChars).toString(regenerateOptions));
            }
          } else {
            update(characterClassItem, "(?!" + setStr + ")[\\s\\S]");
          }
        }
      } else {
        var hasEmptyString = longStrings.has('');
        var pieces = Array.from(longStrings).sort(function (a, b) {
          return b.length - a.length;
        });
        if (setStr !== '[]' || longStrings.size === 0) {
          pieces.splice(pieces.length - (hasEmptyString ? 1 : 0), 0, setStr);
        }
        update(characterClassItem, pieces.join('|'));
      }
    }
    return characterClassItem;
  };
  var assertNoUnmatchedReferences = function assertNoUnmatchedReferences(groups) {
    var unmatchedReferencesNames = Object.keys(groups.unmatchedReferences);
    if (unmatchedReferencesNames.length > 0) {
      throw new Error("Unknown group names: " + unmatchedReferencesNames);
    }
  };
  var processModifiers = function processModifiers(item, regenerateOptions, groups) {
    var enabling = item.modifierFlags.enabling;
    var disabling = item.modifierFlags.disabling;
    delete item.modifierFlags;
    item.behavior = 'ignore';
    var oldData = Object.assign({}, config.modifiersData);
    enabling.split('').forEach(function (flag) {
      config.modifiersData[flag] = true;
    });
    disabling.split('').forEach(function (flag) {
      config.modifiersData[flag] = false;
    });
    item.body = item.body.map(function (term) {
      return _processTerm(term, regenerateOptions, groups);
    });
    config.modifiersData = oldData;
    return item;
  };
  var _processTerm = function processTerm(item, regenerateOptions, groups) {
    switch (item.type) {
      case 'dot':
        if (config.transform.unicodeFlag) {
          update(item, getUnicodeDotSet(config.flags.dotAll || config.modifiersData.s).toString(regenerateOptions));
        } else if (config.transform.dotAllFlag || config.modifiersData.s) {
          update(item, '[\\s\\S]');
        }
        break;
      case 'characterClass':
        item = processCharacterClass(item, regenerateOptions);
        break;
      case 'unicodePropertyEscape':
        var data = getUnicodePropertyEscapeCharacterClassData(item.value, item.negative);
        if (data.maybeIncludesStrings) {
          if (!config.flags.unicodeSets) {
            throw new Error('Properties of strings are only supported when using the unicodeSets (v) flag.');
          }
          if (config.transform.unicodeSetsFlag) {
            data.transformed = true;
            item = processCharacterClass(item, regenerateOptions, data);
          }
        } else if (config.transform.unicodePropertyEscapes) {
          update(item, data.singleChars.toString(regenerateOptions));
        }
        break;
      case 'characterClassEscape':
        if (config.transform.unicodeFlag) {
          update(item, getCharacterClassEscapeSet(item.value, true, config.flags.ignoreCase).toString(regenerateOptions));
        }
        break;
      case 'group':
        if (item.behavior == 'normal') {
          groups.lastIndex++;
        }
        if (item.name) {
          var name = item.name.value;
          if (groups.namesConflicts[name]) {
            throw new Error("Group '" + name + "' has already been defined in this context.");
          }
          groups.namesConflicts[name] = true;
          if (config.transform.namedGroups) {
            delete item.name;
          }
          var index = groups.lastIndex;
          if (!groups.names[name]) {
            groups.names[name] = [];
          }
          groups.names[name].push(index);
          if (groups.onNamedGroup) {
            groups.onNamedGroup.call(null, name, index);
          }
          if (groups.unmatchedReferences[name]) {
            delete groups.unmatchedReferences[name];
          }
        }
        if (item.modifierFlags && config.transform.modifiers) {
          return processModifiers(item, regenerateOptions, groups);
        }
      case 'quantifier':
        item.body = item.body.map(function (term) {
          return _processTerm(term, regenerateOptions, groups);
        });
        break;
      case 'disjunction':
        var outerNamesConflicts = groups.namesConflicts;
        item.body = item.body.map(function (term) {
          groups.namesConflicts = Object.create(outerNamesConflicts);
          return _processTerm(term, regenerateOptions, groups);
        });
        break;
      case 'alternative':
        item.body = flatMap$1(item.body, function (term) {
          var res = _processTerm(term, regenerateOptions, groups);
          return res.type === 'alternative' ? res.body : res;
        });
        break;
      case 'value':
        var codePoint = item.codePoint;
        var set = regenerate(codePoint);
        var folded = maybeFold(codePoint);
        set.add(folded);
        update(item, set.toString(regenerateOptions));
        break;
      case 'reference':
        if (item.name) {
          var _name = item.name.value;
          var indexes = groups.names[_name];
          if (!indexes) {
            groups.unmatchedReferences[_name] = true;
          }
          if (config.transform.namedGroups) {
            if (indexes) {
              var body = indexes.map(function (index) {
                return {
                  'type': 'reference',
                  'matchIndex': index,
                  'raw': '\\' + index
                };
              });
              if (body.length === 1) {
                return body[0];
              }
              return {
                'type': 'alternative',
                'body': body,
                'raw': body.map(function (term) {
                  return term.raw;
                }).join('')
              };
            }
            return {
              'type': 'group',
              'behavior': 'ignore',
              'body': [],
              'raw': '(?:)'
            };
          }
        }
        break;
      case 'anchor':
        if (config.modifiersData.m) {
          if (item.kind == 'start') {
            update(item, "(?:^|(?<=" + NEWLINE_SET.toString() + "))");
          } else if (item.kind == 'end') {
            update(item, "(?:$|(?=" + NEWLINE_SET.toString() + "))");
          }
        }
      case 'empty':
        break;
      default:
        throw new Error("Unknown term type: " + item.type);
    }
    return item;
  };
  var config = {
    'flags': {
      'ignoreCase': false,
      'unicode': false,
      'unicodeSets': false,
      'dotAll': false,
      'multiline': false
    },
    'transform': {
      'dotAllFlag': false,
      'unicodeFlag': false,
      'unicodeSetsFlag': false,
      'unicodePropertyEscapes': false,
      'namedGroups': false,
      'modifiers': false
    },
    'modifiersData': {
      'i': undefined,
      's': undefined,
      'm': undefined
    },
    get useUnicodeFlag() {
      return (this.flags.unicode || this.flags.unicodeSets) && !this.transform.unicodeFlag;
    }
  };
  var validateOptions = function validateOptions(options) {
    if (!options) return;
    for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) {
      var key = _Object$keys[_i];
      var value = options[key];
      switch (key) {
        case 'dotAllFlag':
        case 'unicodeFlag':
        case 'unicodePropertyEscapes':
        case 'namedGroups':
          if (value != null && value !== false && value !== 'transform') {
            throw new Error("." + key + " must be false (default) or 'transform'.");
          }
          break;
        case 'modifiers':
        case 'unicodeSetsFlag':
          if (value != null && value !== false && value !== 'parse' && value !== 'transform') {
            throw new Error("." + key + " must be false (default), 'parse' or 'transform'.");
          }
          break;
        case 'onNamedGroup':
        case 'onNewFlags':
          if (value != null && typeof value !== 'function') {
            throw new Error("." + key + " must be a function.");
          }
          break;
        default:
          throw new Error("." + key + " is not a valid regexpu-core option.");
      }
    }
  };
  var hasFlag = function hasFlag(flags, flag) {
    return flags ? flags.includes(flag) : false;
  };
  var transform$2 = function transform(options, name) {
    return options ? options[name] === 'transform' : false;
  };
  var rewritePattern = function rewritePattern(pattern, flags, options) {
    validateOptions(options);
    config.flags.unicode = hasFlag(flags, 'u');
    config.flags.unicodeSets = hasFlag(flags, 'v');
    config.flags.ignoreCase = hasFlag(flags, 'i');
    config.flags.dotAll = hasFlag(flags, 's');
    config.flags.multiline = hasFlag(flags, 'm');
    config.transform.dotAllFlag = config.flags.dotAll && transform$2(options, 'dotAllFlag');
    config.transform.unicodeFlag = (config.flags.unicode || config.flags.unicodeSets) && transform$2(options, 'unicodeFlag');
    config.transform.unicodeSetsFlag = config.flags.unicodeSets && transform$2(options, 'unicodeSetsFlag');
    config.transform.unicodePropertyEscapes = config.flags.unicode && (transform$2(options, 'unicodeFlag') || transform$2(options, 'unicodePropertyEscapes'));
    config.transform.namedGroups = transform$2(options, 'namedGroups');
    config.transform.modifiers = transform$2(options, 'modifiers');
    config.modifiersData.i = undefined;
    config.modifiersData.s = undefined;
    config.modifiersData.m = undefined;
    var regjsparserFeatures = {
      'unicodeSet': Boolean(options && options.unicodeSetsFlag),
      'modifiers': Boolean(options && options.modifiers),
      'unicodePropertyEscape': true,
      'namedGroups': true,
      'lookbehind': true
    };
    var regenerateOptions = {
      'hasUnicodeFlag': config.useUnicodeFlag,
      'bmpOnly': !config.flags.unicode
    };
    var groups = {
      'onNamedGroup': options && options.onNamedGroup,
      'lastIndex': 0,
      'names': Object.create(null),
      'namesConflicts': Object.create(null),
      'unmatchedReferences': Object.create(null)
    };
    var tree = parse(pattern, flags, regjsparserFeatures);
    if (config.transform.modifiers) {
      if (/\(\?[a-z]*-[a-z]+:/.test(pattern)) {
        var allDisabledModifiers = Object.create(null);
        var itemStack = [tree];
        var node;
        while (node = itemStack.pop(), node != undefined) {
          if (Array.isArray(node)) {
            Array.prototype.push.apply(itemStack, node);
          } else if (typeof node == 'object' && node != null) {
            for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {
              var key = _Object$keys2[_i2];
              var value = node[key];
              if (key == 'modifierFlags') {
                if (value.disabling.length > 0) {
                  value.disabling.split('').forEach(function (flag) {
                    allDisabledModifiers[flag] = true;
                  });
                }
              } else if (typeof value == 'object' && value != null) {
                itemStack.push(value);
              }
            }
          }
        }
        for (var _i3 = 0, _Object$keys3 = Object.keys(allDisabledModifiers); _i3 < _Object$keys3.length; _i3++) {
          var flag = _Object$keys3[_i3];
          config.modifiersData[flag] = true;
        }
      }
    }
    _processTerm(tree, regenerateOptions, groups);
    assertNoUnmatchedReferences(groups);
    var onNewFlags = options && options.onNewFlags;
    if (onNewFlags) {
      var newFlags = flags.split('').filter(function (flag) {
        return !config.modifiersData[flag];
      }).join('');
      if (config.transform.unicodeSetsFlag) {
        newFlags = newFlags.replace('v', 'u');
      }
      if (config.transform.unicodeFlag) {
        newFlags = newFlags.replace('u', '');
      }
      if (config.transform.dotAllFlag === 'transform') {
        newFlags = newFlags.replace('s', '');
      }
      onNewFlags(newFlags);
    }
    return generate(tree);
  };
  var rewritePattern_1 = rewritePattern;

  function bool$3(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$6 = bool$3(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  var FEATURES = Object.freeze({
    unicodeFlag: 1 << 0,
    dotAllFlag: 1 << 1,
    unicodePropertyEscape: 1 << 2,
    namedCaptureGroups: 1 << 3,
    unicodeSetsFlag_syntax: 1 << 4,
    unicodeSetsFlag: 1 << 5,
    duplicateNamedCaptureGroups: 1 << 6,
    modifiers: 1 << 7
  });
  var featuresKey = "@babel/plugin-regexp-features/featuresKey";
  var runtimeKey = "@babel/plugin-regexp-features/runtimeKey";
  function enableFeature(features, feature) {
    return features | feature;
  }
  function hasFeature(features, feature) {
    return !!(features & feature);
  }

  function generateRegexpuOptions(pattern, toTransform) {
    var feat = function feat(name, ok) {
      if (ok === void 0) {
        ok = "transform";
      }
      return hasFeature(toTransform, FEATURES[name]) ? ok : false;
    };
    var featDuplicateNamedGroups = function featDuplicateNamedGroups() {
      if (!feat("duplicateNamedCaptureGroups")) return false;
      var regex = /\(\?<([^>]+)>/g;
      var seen = new Set();
      for (var match; match = regex.exec(pattern); seen.add(match[1])) {
        if (seen.has(match[1])) return "transform";
      }
      return false;
    };
    return {
      unicodeFlag: feat("unicodeFlag"),
      unicodeSetsFlag: feat("unicodeSetsFlag") || "parse",
      dotAllFlag: feat("dotAllFlag"),
      unicodePropertyEscapes: feat("unicodePropertyEscape"),
      namedGroups: feat("namedCaptureGroups") || featDuplicateNamedGroups(),
      onNamedGroup: function onNamedGroup() {},
      modifiers: feat("modifiers")
    };
  }
  function canSkipRegexpu(node, options) {
    var flags = node.flags,
      pattern = node.pattern;
    if (flags.includes("v")) {
      if (options.unicodeSetsFlag === "transform") return false;
    }
    if (flags.includes("u")) {
      if (options.unicodeFlag === "transform") return false;
      if (options.unicodePropertyEscapes === "transform" && /\\p\{/i.test(pattern)) {
        return false;
      }
    }
    if (flags.includes("s")) {
      if (options.dotAllFlag === "transform") return false;
    }
    if (options.namedGroups === "transform" && /\(\?<(?![=!])/.test(pattern)) {
      return false;
    }
    if (options.modifiers === "transform" && /\(\?[\w-]+:/.test(pattern)) {
      return false;
    }
    return true;
  }
  function transformFlags(regexpuOptions, flags) {
    if (regexpuOptions.unicodeSetsFlag === "transform") {
      flags = flags.replace("v", "u");
    }
    if (regexpuOptions.unicodeFlag === "transform") {
      flags = flags.replace("u", "");
    }
    if (regexpuOptions.dotAllFlag === "transform") {
      flags = flags.replace("s", "");
    }
    return flags;
  }

  var versionKey = "@babel/plugin-regexp-features/version";
  function createRegExpFeaturePlugin(_ref) {
    var name = _ref.name,
      feature = _ref.feature,
      _ref$options = _ref.options,
      options = _ref$options === void 0 ? {} : _ref$options,
      _ref$manipulateOption = _ref.manipulateOptions,
      manipulateOptions = _ref$manipulateOption === void 0 ? function () {} : _ref$manipulateOption;
    return {
      name: name,
      manipulateOptions: manipulateOptions,
      pre: function pre() {
        var _file$get;
        var file = this.file;
        var features = (_file$get = file.get(featuresKey)) != null ? _file$get : 0;
        var newFeatures = enableFeature(features, FEATURES[feature]);
        var useUnicodeFlag = options.useUnicodeFlag,
          runtime = options.runtime;
        if (useUnicodeFlag === false) {
          newFeatures = enableFeature(newFeatures, FEATURES.unicodeFlag);
        }
        if (newFeatures !== features) {
          file.set(featuresKey, newFeatures);
        }
        if (runtime !== undefined) {
          if (file.has(runtimeKey) && file.get(runtimeKey) !== runtime && hasFeature(newFeatures, FEATURES.duplicateNamedCaptureGroups)) {
            throw new Error("The 'runtime' option must be the same for " + "'@babel/plugin-transform-named-capturing-groups-regex' and " + "'@babel/plugin-transform-duplicate-named-capturing-groups-regex'.");
          }
          if (feature === "namedCaptureGroups") {
            if (!runtime || !file.has(runtimeKey)) file.set(runtimeKey, runtime);
          } else {
            file.set(runtimeKey, runtime);
          }
        }
        {
          if (typeof file.get(versionKey) === "number") {
            file.set(versionKey, "7.25.2");
            return;
          }
        }
        if (!file.get(versionKey) || semver$6.lt(file.get(versionKey), "7.25.2")) {
          file.set(versionKey, "7.25.2");
        }
      },
      visitor: {
        RegExpLiteral: function RegExpLiteral(path) {
          var _file$get2, _newFlags;
          var node = path.node;
          var file = this.file;
          var features = file.get(featuresKey);
          var runtime = (_file$get2 = file.get(runtimeKey)) != null ? _file$get2 : true;
          var regexpuOptions = generateRegexpuOptions(node.pattern, features);
          if (canSkipRegexpu(node, regexpuOptions)) {
            return;
          }
          var namedCaptureGroups = {
            __proto__: null
          };
          if (regexpuOptions.namedGroups === "transform") {
            regexpuOptions.onNamedGroup = function (name, index) {
              var prev = namedCaptureGroups[name];
              if (typeof prev === "number") {
                namedCaptureGroups[name] = [prev, index];
              } else if (Array.isArray(prev)) {
                prev.push(index);
              } else {
                namedCaptureGroups[name] = index;
              }
            };
          }
          var newFlags;
          if (regexpuOptions.modifiers === "transform") {
            regexpuOptions.onNewFlags = function (flags) {
              newFlags = flags;
            };
          }
          node.pattern = rewritePattern_1(node.pattern, node.flags, regexpuOptions);
          if (regexpuOptions.namedGroups === "transform" && Object.keys(namedCaptureGroups).length > 0 && runtime && !isRegExpTest(path)) {
            var call = callExpression$c(this.addHelper("wrapRegExp"), [node, valueToNode(namedCaptureGroups)]);
            annotateAsPure(call);
            path.replaceWith(call);
          }
          node.flags = transformFlags(regexpuOptions, (_newFlags = newFlags) != null ? _newFlags : node.flags);
        }
      }
    };
  }
  function isRegExpTest(path) {
    return path.parentPath.isMemberExpression({
      object: path.node,
      computed: false
    }) && path.parentPath.get("property").isIdentifier({
      name: "test"
    });
  }

  var _transformDuplicateNamedCapturingGroupsRegex = declare(function (api, options) {
    api.assertVersion("*");
    var runtime = options.runtime;
    if (runtime !== undefined && typeof runtime !== "boolean") {
      throw new Error("The 'runtime' option must be boolean");
    }
    return createRegExpFeaturePlugin({
      name: "transform-duplicate-named-capturing-groups-regex",
      feature: "duplicateNamedCaptureGroups",
      options: {
        runtime: runtime
      }
    });
  });

  var SUPPORTED_MODULES = ["commonjs", "amd", "systemjs"];
  var MODULES_NOT_FOUND = "@babel/plugin-transform-dynamic-import depends on a modules\ntransform plugin. Supported plugins are:\n - @babel/plugin-transform-modules-commonjs ^7.4.0\n - @babel/plugin-transform-modules-amd ^7.4.0\n - @babel/plugin-transform-modules-systemjs ^7.4.0\n\nIf you are using Webpack or Rollup and thus don't want\nBabel to transpile your imports and exports, you can use\nthe @babel/plugin-syntax-dynamic-import plugin and let your\nbundler handle dynamic imports.\n";
  var _transformDynamicImport = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-dynamic-import",
      inherits: undefined,
      pre: function pre() {
        this.file.set("@babel/plugin-proposal-dynamic-import", "7.24.7");
      },
      visitor: {
        Program: function Program() {
          var modules = this.file.get("@babel/plugin-transform-modules-*");
          if (!SUPPORTED_MODULES.includes(modules)) {
            throw new Error(MODULES_NOT_FOUND);
          }
        }
      }
    };
  });

  var proposalExportDefaultFrom = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "proposal-export-default-from",
      inherits: syntaxExportDefaultFrom,
      visitor: {
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var node = path.node;
          var specifiers = node.specifiers,
            source = node.source;
          if (!isExportDefaultSpecifier$1(specifiers[0])) return;
          var _specifiers$shift = specifiers.shift(),
            exported = _specifiers$shift.exported;
          if (specifiers.every(function (s) {
            return isExportSpecifier(s);
          })) {
            specifiers.unshift(exportSpecifier$2(identifier$e("default"), exported));
            return;
          }
          path.insertBefore(exportNamedDeclaration$2(null, [exportSpecifier$2(identifier$e("default"), exported)], cloneNode$g(source)));
        }
      }
    };
  });

  var _transformExportNamespaceFrom = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-export-namespace-from",
      inherits: undefined,
      visitor: {
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var _exported$name;
          var node = path.node,
            scope = path.scope;
          var specifiers = node.specifiers;
          var index = isExportDefaultSpecifier$1(specifiers[0]) ? 1 : 0;
          if (!isExportNamespaceSpecifier$1(specifiers[index])) return;
          var nodes = [];
          if (index === 1) {
            nodes.push(exportNamedDeclaration$2(null, [specifiers.shift()], node.source));
          }
          var specifier = specifiers.shift();
          var exported = specifier.exported;
          var uid = scope.generateUidIdentifier((_exported$name = exported.name) != null ? _exported$name : exported.value);
          nodes.push(importDeclaration$1([importNamespaceSpecifier$1(uid)], cloneNode$g(node.source)), exportNamedDeclaration$2(null, [exportSpecifier$2(cloneNode$g(uid), exported)]));
          if (node.specifiers.length >= 1) {
            nodes.push(node);
          }
          var _path$replaceWithMult = path.replaceWithMultiple(nodes),
            _path$replaceWithMult2 = _slicedToArray(_path$replaceWithMult, 1),
            importDeclaration = _path$replaceWithMult2[0];
          path.scope.registerDeclaration(importDeclaration);
        }
      }
    };
  });

  var proposalFunctionBind = declare(function (api) {
    api.assertVersion("*");
    function getTempId(scope) {
      var id = scope.path.getData("functionBind");
      if (id) return cloneNode$g(id);
      id = scope.generateDeclaredUidIdentifier("context");
      return scope.path.setData("functionBind", id);
    }
    function getObject(bind) {
      if (isExpression$4(bind.object)) {
        return bind.object;
      }
      return bind.callee.object;
    }
    function getStaticContext(bind, scope) {
      var object = getObject(bind);
      return scope.isStatic(object) && (isSuper$3(object) ? thisExpression$4() : object);
    }
    function inferBindContext(bind, scope) {
      var staticContext = getStaticContext(bind, scope);
      if (staticContext) return cloneNode$g(staticContext);
      var tempId = getTempId(scope);
      if (bind.object) {
        bind.callee = sequenceExpression$8([assignmentExpression$b("=", tempId, bind.object), bind.callee]);
      } else if (isMemberExpression$8(bind.callee)) {
        bind.callee.object = assignmentExpression$b("=", tempId, bind.callee.object);
      }
      return cloneNode$g(tempId);
    }
    return {
      name: "proposal-function-bind",
      inherits: syntaxFunctionBind,
      visitor: {
        CallExpression: function CallExpression(_ref) {
          var node = _ref.node,
            scope = _ref.scope;
          var bind = node.callee;
          if (!isBindExpression(bind)) return;
          var context = inferBindContext(bind, scope);
          node.callee = memberExpression$a(bind.callee, identifier$e("call"));
          node.arguments.unshift(context);
        },
        BindExpression: function BindExpression(path) {
          var node = path.node,
            scope = path.scope;
          var context = inferBindContext(node, scope);
          path.replaceWith(callExpression$c(memberExpression$a(node.callee, identifier$e("bind")), [context]));
        }
      }
    };
  });

  var proposalFunctionSent = declare(function (api) {
    api.assertVersion("*");
    var isFunctionSent = function isFunctionSent(node) {
      return isIdentifier$f(node.meta, {
        name: "function"
      }) && isIdentifier$f(node.property, {
        name: "sent"
      });
    };
    var hasBeenReplaced = function hasBeenReplaced(node, sentId) {
      return isAssignmentExpression$2(node) && isIdentifier$f(node.left, {
        name: sentId
      });
    };
    var yieldVisitor = {
      Function: function Function(path) {
        path.skip();
      },
      YieldExpression: function YieldExpression(path) {
        if (!hasBeenReplaced(path.parent, this.sentId)) {
          path.replaceWith(assignmentExpression$b("=", identifier$e(this.sentId), path.node));
        }
      },
      MetaProperty: function MetaProperty(path) {
        if (isFunctionSent(path.node)) {
          path.replaceWith(identifier$e(this.sentId));
        }
      }
    };
    return {
      name: "proposal-function-sent",
      inherits: syntaxFunctionSent,
      visitor: {
        MetaProperty: function MetaProperty(path, state) {
          if (!isFunctionSent(path.node)) return;
          var fnPath = path.getFunctionParent();
          if (!fnPath.node.generator) {
            throw new Error("Parent generator function not found");
          }
          var sentId = path.scope.generateUid("function.sent");
          fnPath.traverse(yieldVisitor, {
            sentId: sentId
          });
          fnPath.node.body.body.unshift(variableDeclaration$6("let", [variableDeclarator$6(identifier$e(sentId), yieldExpression$2())]));
          wrapFunction(fnPath, state.addHelper("skipFirstGeneratorNext"));
        }
      }
    };
  });

  var _transformJsonStrings = declare(function (api) {
    api.assertVersion("*");
    var regex = /(\\*)([\u2028\u2029])/g;
    function replace(match, escapes, separator) {
      var isEscaped = escapes.length % 2 === 1;
      if (isEscaped) return match;
      return escapes + "\\u" + separator.charCodeAt(0).toString(16);
    }
    return {
      name: "transform-json-strings",
      inherits: undefined,
      visitor: {
        "DirectiveLiteral|StringLiteral": function DirectiveLiteralStringLiteral(_ref) {
          var node = _ref.node;
          var extra = node.extra;
          if (!(extra != null && extra.raw)) return;
          extra.raw = extra.raw.replace(regex, replace);
        }
      }
    };
  });

  var _transformLogicalAssignmentOperators = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-logical-assignment-operators",
      inherits: undefined,
      visitor: {
        AssignmentExpression: function AssignmentExpression(path) {
          var node = path.node,
            scope = path.scope;
          var operator = node.operator,
            left = node.left,
            right = node.right;
          var operatorTrunc = operator.slice(0, -1);
          if (!LOGICAL_OPERATORS$3.includes(operatorTrunc)) {
            return;
          }
          var lhs = cloneNode$g(left);
          if (isMemberExpression$8(left)) {
            var object = left.object,
              property = left.property,
              computed = left.computed;
            var memo = scope.maybeGenerateMemoised(object);
            if (memo) {
              left.object = memo;
              lhs.object = assignmentExpression$b("=", cloneNode$g(memo), object);
            }
            if (computed) {
              var _memo = scope.maybeGenerateMemoised(property);
              if (_memo) {
                left.property = _memo;
                lhs.property = assignmentExpression$b("=", cloneNode$g(_memo), property);
              }
            }
          }
          path.replaceWith(logicalExpression$3(operatorTrunc, lhs, assignmentExpression$b("=", left, right)));
        }
      }
    };
  });

  var _templateObject$p;
  var _transformNullishCoalescingOperator = declare(function (api, _ref) {
    var _api$assumption;
    var _ref$loose = _ref.loose,
      loose = _ref$loose === void 0 ? false : _ref$loose;
    api.assertVersion("*");
    var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
    return {
      name: "transform-nullish-coalescing-operator",
      inherits: undefined,
      visitor: {
        LogicalExpression: function LogicalExpression(path) {
          var node = path.node,
            scope = path.scope;
          if (node.operator !== "??") {
            return;
          }
          var ref;
          var assignment;
          if (scope.isStatic(node.left)) {
            ref = node.left;
            assignment = cloneNode$g(node.left);
          } else if (scope.path.isPattern()) {
            path.replaceWith(template$1.statement.ast(_templateObject$p || (_templateObject$p = _taggedTemplateLiteralLoose(["(() => ", ")()"])), path.node));
            return;
          } else {
            ref = scope.generateUidIdentifierBasedOnNode(node.left);
            scope.push({
              id: cloneNode$g(ref)
            });
            assignment = assignmentExpression$b("=", ref, node.left);
          }
          path.replaceWith(conditionalExpression$5(noDocumentAll ? binaryExpression$5("!=", assignment, nullLiteral$2()) : logicalExpression$3("&&", binaryExpression$5("!==", assignment, nullLiteral$2()), binaryExpression$5("!==", cloneNode$g(ref), scope.buildUndefinedNode())), cloneNode$g(ref), node.right));
        }
      }
    };
  });

  function remover(_ref) {
    var _extra$raw;
    var node = _ref.node;
    var extra = node.extra;
    if (extra != null && (_extra$raw = extra.raw) != null && _extra$raw.includes("_")) {
      extra.raw = extra.raw.replace(/_/g, "");
    }
  }
  var _transformNumericSeparator = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-numeric-separator",
      inherits: undefined,
      visitor: {
        NumericLiteral: remover,
        BigIntLiteral: remover
      }
    };
  });

  function shouldStoreRHSInTemporaryVariable(node) {
    if (!node) return false;
    if (node.type === "ArrayPattern") {
      var nonNullElements = node.elements.filter(function (element) {
        return element !== null;
      });
      if (nonNullElements.length > 1) return true;else return shouldStoreRHSInTemporaryVariable(nonNullElements[0]);
    } else if (node.type === "ObjectPattern") {
      var properties = node.properties;
      if (properties.length > 1) return true;else if (properties.length === 0) return false;else {
        var firstProperty = properties[0];
        if (firstProperty.type === "ObjectProperty") {
          return shouldStoreRHSInTemporaryVariable(firstProperty.value);
        } else {
          return shouldStoreRHSInTemporaryVariable(firstProperty);
        }
      }
    } else if (node.type === "AssignmentPattern") {
      return shouldStoreRHSInTemporaryVariable(node.left);
    } else if (node.type === "RestElement") {
      if (node.argument.type === "Identifier") return true;
      return shouldStoreRHSInTemporaryVariable(node.argument);
    } else {
      return false;
    }
  }

  var compatData = {
    "Object.assign": {
      chrome: "49",
      opera: "36",
      edge: "13",
      firefox: "36",
      safari: "10",
      node: "6",
      deno: "1",
      ios: "10",
      samsung: "5",
      opera_mobile: "36",
      electron: "0.37"
    }
  };

  var isAssignmentPattern = isAssignmentPattern$4,
    isObjectProperty = isObjectProperty$3;
  {
    var node = identifier$e("a");
    var property = objectProperty$1(identifier$e("key"), node);
    var pattern = objectPattern$1([property]);
    var ZERO_REFS = isReferenced$2(node, property, pattern) ? 1 : 0;
  }
  var _transformObjectRestSpread = declare(function (api, opts) {
    var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
    api.assertVersion("*");
    var targets = api.targets();
    var supportsObjectAssign = !isRequired("Object.assign", targets, {
      compatData: compatData
    });
    var _opts$useBuiltIns = opts.useBuiltIns,
      useBuiltIns = _opts$useBuiltIns === void 0 ? supportsObjectAssign : _opts$useBuiltIns,
      _opts$loose = opts.loose,
      loose = _opts$loose === void 0 ? false : _opts$loose;
    if (typeof loose !== "boolean") {
      throw new Error(".loose must be a boolean, or undefined");
    }
    var ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : loose;
    var objectRestNoSymbols = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : loose;
    var pureGetters = (_api$assumption3 = api.assumption("pureGetters")) != null ? _api$assumption3 : loose;
    var setSpreadProperties = (_api$assumption4 = api.assumption("setSpreadProperties")) != null ? _api$assumption4 : loose;
    function getExtendsHelper(file) {
      return useBuiltIns ? memberExpression$a(identifier$e("Object"), identifier$e("assign")) : file.addHelper("extends");
    }
    function hasRestElement(path) {
      var foundRestElement = false;
      visitRestElements(path, function (restElement) {
        foundRestElement = true;
        restElement.stop();
      });
      return foundRestElement;
    }
    function hasObjectPatternRestElement(path) {
      var foundRestElement = false;
      visitRestElements(path, function (restElement) {
        if (restElement.parentPath.isObjectPattern()) {
          foundRestElement = true;
          restElement.stop();
        }
      });
      return foundRestElement;
    }
    function visitRestElements(path, visitor) {
      path.traverse({
        Expression: function Expression(path) {
          var parent = path.parent,
            key = path.key;
          if (isAssignmentPattern(parent) && key === "right" || isObjectProperty(parent) && parent.computed && key === "key") {
            path.skip();
          }
        },
        RestElement: visitor
      });
    }
    function hasSpread(node) {
      for (var _iterator = _createForOfIteratorHelperLoose(node.properties), _step; !(_step = _iterator()).done;) {
        var prop = _step.value;
        if (isSpreadElement$1(prop)) {
          return true;
        }
      }
      return false;
    }
    function extractNormalizedKeys(node) {
      var props = node.properties;
      var keys = [];
      var allPrimitives = true;
      var hasTemplateLiteral = false;
      for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
        var prop = _step2.value;
        var key = prop.key;
        if (isIdentifier$f(key) && !prop.computed) {
          keys.push(stringLiteral$6(key.name));
        } else if (isTemplateLiteral$1(key)) {
          keys.push(cloneNode$g(key));
          hasTemplateLiteral = true;
        } else if (isLiteral$5(key)) {
          keys.push(stringLiteral$6(String(key.value)));
        } else {
          keys.push(cloneNode$g(key));
          if (isMemberExpression$8(key, {
            computed: false
          }) && isIdentifier$f(key.object, {
            name: "Symbol"
          }) || isCallExpression$8(key) && matchesPattern$2(key.callee, "Symbol.for")) ; else {
            allPrimitives = false;
          }
        }
      }
      return {
        keys: keys,
        allPrimitives: allPrimitives,
        hasTemplateLiteral: hasTemplateLiteral
      };
    }
    function replaceImpureComputedKeys(properties, scope) {
      var impureComputedPropertyDeclarators = [];
      for (var _iterator3 = _createForOfIteratorHelperLoose(properties), _step3; !(_step3 = _iterator3()).done;) {
        var propPath = _step3.value;
        var key = propPath.get("key");
        if (propPath.node.computed && !key.isPure()) {
          var name = scope.generateUidBasedOnNode(key.node);
          var declarator = variableDeclarator$6(identifier$e(name), key.node);
          impureComputedPropertyDeclarators.push(declarator);
          key.replaceWith(identifier$e(name));
        }
      }
      return impureComputedPropertyDeclarators;
    }
    function removeUnusedExcludedKeys(path) {
      var bindings = path.getOuterBindingIdentifierPaths();
      Object.keys(bindings).forEach(function (bindingName) {
        var bindingParentPath = bindings[bindingName].parentPath;
        if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) {
          return;
        }
        bindingParentPath.remove();
      });
    }
    function createObjectRest(path, file, objRef) {
      var props = path.get("properties");
      var last = props[props.length - 1];
      assertRestElement(last.node);
      var restElement = cloneNode$g(last.node);
      last.remove();
      var impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope);
      var _extractNormalizedKey = extractNormalizedKeys(path.node),
        keys = _extractNormalizedKey.keys,
        allPrimitives = _extractNormalizedKey.allPrimitives,
        hasTemplateLiteral = _extractNormalizedKey.hasTemplateLiteral;
      if (keys.length === 0) {
        return [impureComputedPropertyDeclarators, restElement.argument, callExpression$c(getExtendsHelper(file), [objectExpression$3([]), sequenceExpression$8([callExpression$c(file.addHelper("objectDestructuringEmpty"), [cloneNode$g(objRef)]), cloneNode$g(objRef)])])];
      }
      var keyExpression;
      if (!allPrimitives) {
        keyExpression = callExpression$c(memberExpression$a(arrayExpression$1(keys), identifier$e("map")), [file.addHelper("toPropertyKey")]);
      } else {
        keyExpression = arrayExpression$1(keys);
        if (!hasTemplateLiteral && !isProgram$1(path.scope.block)) {
          var program = path.findParent(function (path) {
            return path.isProgram();
          });
          var id = path.scope.generateUidIdentifier("excluded");
          program.scope.push({
            id: id,
            init: keyExpression,
            kind: "const"
          });
          keyExpression = cloneNode$g(id);
        }
      }
      return [impureComputedPropertyDeclarators, restElement.argument, callExpression$c(file.addHelper("objectWithoutProperties" + (objectRestNoSymbols ? "Loose" : "")), [cloneNode$g(objRef), keyExpression])];
    }
    function replaceRestElement(parentPath, paramPath, container) {
      if (paramPath.isAssignmentPattern()) {
        replaceRestElement(parentPath, paramPath.get("left"), container);
        return;
      }
      if (paramPath.isArrayPattern() && hasRestElement(paramPath)) {
        var elements = paramPath.get("elements");
        for (var i = 0; i < elements.length; i++) {
          replaceRestElement(parentPath, elements[i], container);
        }
      }
      if (paramPath.isObjectPattern() && hasRestElement(paramPath)) {
        var uid = parentPath.scope.generateUidIdentifier("ref");
        var declar = variableDeclaration$6("let", [variableDeclarator$6(paramPath.node, uid)]);
        if (container) {
          container.push(declar);
        } else {
          parentPath.ensureBlock();
          parentPath.get("body").unshiftContainer("body", declar);
        }
        paramPath.replaceWith(cloneNode$g(uid));
      }
    }
    return {
      name: "transform-object-rest-spread",
      inherits: undefined,
      visitor: {
        Function: function Function(path) {
          var params = path.get("params");
          var paramsWithRestElement = new Set();
          var idsInRestParams = new Set();
          for (var _i = 0; _i < params.length; ++_i) {
            var param = params[_i];
            if (hasRestElement(param)) {
              paramsWithRestElement.add(_i);
              for (var _i2 = 0, _Object$keys = Object.keys(param.getBindingIdentifiers()); _i2 < _Object$keys.length; _i2++) {
                var name = _Object$keys[_i2];
                idsInRestParams.add(name);
              }
            }
          }
          var idInRest = false;
          var IdentifierHandler = function IdentifierHandler(path, functionScope) {
            var name = path.node.name;
            if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) {
              idInRest = true;
              path.stop();
            }
          };
          var i;
          for (i = 0; i < params.length && !idInRest; ++i) {
            var _param = params[i];
            if (!paramsWithRestElement.has(i)) {
              if (_param.isReferencedIdentifier() || _param.isBindingIdentifier()) {
                IdentifierHandler(_param, path.scope);
              } else {
                _param.traverse({
                  "Scope|TypeAnnotation|TSTypeAnnotation": function ScopeTypeAnnotationTSTypeAnnotation(path) {
                    return path.skip();
                  },
                  "ReferencedIdentifier|BindingIdentifier": IdentifierHandler
                }, path.scope);
              }
            }
          }
          if (!idInRest) {
            for (var _i3 = 0; _i3 < params.length; ++_i3) {
              var _param2 = params[_i3];
              if (paramsWithRestElement.has(_i3)) {
                replaceRestElement(path, _param2);
              }
            }
          } else {
            var shouldTransformParam = function shouldTransformParam(idx) {
              return idx >= i - 1 || paramsWithRestElement.has(idx);
            };
            convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement);
          }
        },
        VariableDeclarator: function (_VariableDeclarator) {
          function VariableDeclarator(_x, _x2) {
            return _VariableDeclarator.apply(this, arguments);
          }
          VariableDeclarator.toString = function () {
            return _VariableDeclarator.toString();
          };
          return VariableDeclarator;
        }(function (path, file) {
          if (!path.get("id").isObjectPattern()) {
            return;
          }
          var insertionPath = path;
          var originalPath = path;
          visitRestElements(path.get("id"), function (path) {
            if (!path.parentPath.isObjectPattern()) {
              return;
            }
            if (shouldStoreRHSInTemporaryVariable(originalPath.node.id) && !isIdentifier$f(originalPath.node.init)) {
              var initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref");
              originalPath.insertBefore(variableDeclarator$6(initRef, originalPath.node.init));
              originalPath.replaceWith(variableDeclarator$6(originalPath.node.id, cloneNode$g(initRef)));
              return;
            }
            var ref = originalPath.node.init;
            var refPropertyPath = [];
            var kind;
            path.findParent(function (path) {
              if (path.isObjectProperty()) {
                refPropertyPath.unshift(path);
              } else if (path.isVariableDeclarator()) {
                kind = path.parentPath.node.kind;
                return true;
              }
            });
            var impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope);
            refPropertyPath.forEach(function (prop) {
              var node = prop.node;
              ref = memberExpression$a(ref, cloneNode$g(node.key), node.computed || isLiteral$5(node.key));
            });
            var objectPatternPath = path.findParent(function (path) {
              return path.isObjectPattern();
            });
            var _createObjectRest = createObjectRest(objectPatternPath, file, ref),
              _createObjectRest2 = _slicedToArray(_createObjectRest, 3),
              impureComputedPropertyDeclarators = _createObjectRest2[0],
              argument = _createObjectRest2[1],
              callExpression = _createObjectRest2[2];
            if (pureGetters) {
              removeUnusedExcludedKeys(objectPatternPath);
            }
            assertIdentifier(argument);
            insertionPath.insertBefore(impureComputedPropertyDeclarators);
            insertionPath.insertBefore(impureObjRefComputedDeclarators);
            insertionPath = insertionPath.insertAfter(variableDeclarator$6(argument, callExpression))[0];
            path.scope.registerBinding(kind, insertionPath);
            if (objectPatternPath.node.properties.length === 0) {
              objectPatternPath.findParent(function (path) {
                return path.isObjectProperty() || path.isVariableDeclarator();
              }).remove();
            }
          });
        }),
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var declaration = path.get("declaration");
          if (!declaration.isVariableDeclaration()) return;
          var hasRest = declaration.get("declarations").some(function (path) {
            return hasObjectPatternRestElement(path.get("id"));
          });
          if (!hasRest) return;
          var specifiers = [];
          for (var _i4 = 0, _Object$keys2 = Object.keys(path.getOuterBindingIdentifiers(true)); _i4 < _Object$keys2.length; _i4++) {
            var name = _Object$keys2[_i4];
            specifiers.push(exportSpecifier$2(identifier$e(name), identifier$e(name)));
          }
          path.replaceWith(declaration.node);
          path.insertAfter(exportNamedDeclaration$2(null, specifiers));
        },
        CatchClause: function CatchClause(path) {
          var paramPath = path.get("param");
          replaceRestElement(path, paramPath);
        },
        AssignmentExpression: function AssignmentExpression(path, file) {
          var leftPath = path.get("left");
          if (leftPath.isObjectPattern() && hasRestElement(leftPath)) {
            var nodes = [];
            var refName = path.scope.generateUidBasedOnNode(path.node.right, "ref");
            nodes.push(variableDeclaration$6("var", [variableDeclarator$6(identifier$e(refName), path.node.right)]));
            var _createObjectRest3 = createObjectRest(leftPath, file, identifier$e(refName)),
              _createObjectRest4 = _slicedToArray(_createObjectRest3, 3),
              impureComputedPropertyDeclarators = _createObjectRest4[0],
              argument = _createObjectRest4[1],
              callExpression = _createObjectRest4[2];
            if (impureComputedPropertyDeclarators.length > 0) {
              nodes.push(variableDeclaration$6("var", impureComputedPropertyDeclarators));
            }
            var nodeWithoutSpread = cloneNode$g(path.node);
            nodeWithoutSpread.right = identifier$e(refName);
            nodes.push(expressionStatement$7(nodeWithoutSpread));
            nodes.push(expressionStatement$7(assignmentExpression$b("=", argument, callExpression)));
            nodes.push(expressionStatement$7(identifier$e(refName)));
            path.replaceWithMultiple(nodes);
          }
        },
        ForXStatement: function ForXStatement(path) {
          var node = path.node,
            scope = path.scope;
          var leftPath = path.get("left");
          var left = node.left;
          if (!hasObjectPatternRestElement(leftPath)) {
            return;
          }
          if (!isVariableDeclaration$3(left)) {
            var temp = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration$6("var", [variableDeclarator$6(temp)]);
            path.ensureBlock();
            var body = path.node.body;
            if (body.body.length === 0 && path.isCompletionRecord()) {
              body.body.unshift(expressionStatement$7(scope.buildUndefinedNode()));
            }
            body.body.unshift(expressionStatement$7(assignmentExpression$b("=", left, cloneNode$g(temp))));
          } else {
            var _pattern = left.declarations[0].id;
            var key = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration$6(left.kind, [variableDeclarator$6(key, null)]);
            path.ensureBlock();
            var _body = node.body;
            _body.body.unshift(variableDeclaration$6(node.left.kind, [variableDeclarator$6(_pattern, cloneNode$g(key))]));
          }
        },
        ArrayPattern: function ArrayPattern(path) {
          var objectPatterns = [];
          visitRestElements(path, function (path) {
            if (!path.parentPath.isObjectPattern()) {
              return;
            }
            var objectPattern = path.parentPath;
            var uid = path.scope.generateUidIdentifier("ref");
            objectPatterns.push(variableDeclarator$6(objectPattern.node, uid));
            objectPattern.replaceWith(cloneNode$g(uid));
            path.skip();
          });
          if (objectPatterns.length > 0) {
            var statementPath = path.getStatementParent();
            var statementNode = statementPath.node;
            var kind = statementNode.type === "VariableDeclaration" ? statementNode.kind : "var";
            statementPath.insertAfter(variableDeclaration$6(kind, objectPatterns));
          }
        },
        ObjectExpression: function ObjectExpression(path, file) {
          if (!hasSpread(path.node)) return;
          var helper;
          if (setSpreadProperties) {
            helper = getExtendsHelper(file);
          } else {
            {
              try {
                helper = file.addHelper("objectSpread2");
              } catch (_unused) {
                this.file.declarations["objectSpread2"] = null;
                helper = file.addHelper("objectSpread");
              }
            }
          }
          var exp = null;
          var props = [];
          function make() {
            var hadProps = props.length > 0;
            var obj = objectExpression$3(props);
            props = [];
            if (!exp) {
              exp = callExpression$c(helper, [obj]);
              return;
            }
            if (pureGetters) {
              if (hadProps) {
                exp.arguments.push(obj);
              }
              return;
            }
            exp = callExpression$c(cloneNode$g(helper), [exp].concat(_toConsumableArray(hadProps ? [objectExpression$3([]), obj] : [])));
          }
          for (var _iterator4 = _createForOfIteratorHelperLoose(path.node.properties), _step4; !(_step4 = _iterator4()).done;) {
            var prop = _step4.value;
            if (isSpreadElement$1(prop)) {
              make();
              exp.arguments.push(prop.argument);
            } else {
              props.push(prop);
            }
          }
          if (props.length) make();
          path.replaceWith(exp);
        }
      }
    };
  });

  var _transformOptionalCatchBinding = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-optional-catch-binding",
      inherits: undefined,
      visitor: {
        CatchClause: function CatchClause(path) {
          if (!path.node.param) {
            var uid = path.scope.generateUidIdentifier("unused");
            var paramPath = path.get("param");
            paramPath.replaceWith(uid);
          }
        }
      }
    };
  });

  function willPathCastToBoolean(path) {
    var maybeWrapped = findOutermostTransparentParent(path);
    var node = maybeWrapped.node,
      parentPath = maybeWrapped.parentPath;
    if (parentPath.isLogicalExpression()) {
      var _parentPath$node = parentPath.node,
        operator = _parentPath$node.operator,
        right = _parentPath$node.right;
      if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
        return willPathCastToBoolean(parentPath);
      }
    }
    if (parentPath.isSequenceExpression()) {
      var expressions = parentPath.node.expressions;
      if (expressions[expressions.length - 1] === node) {
        return willPathCastToBoolean(parentPath);
      } else {
        return true;
      }
    }
    return parentPath.isConditional({
      test: node
    }) || parentPath.isUnaryExpression({
      operator: "!"
    }) || parentPath.isLoop({
      test: node
    });
  }
  function findOutermostTransparentParent(path) {
    var maybeWrapped = path;
    path.findParent(function (p) {
      if (!isTransparentExprWrapper(p.node)) return true;
      maybeWrapped = p;
    });
    return maybeWrapped;
  }

  var _templateObject$o;
  var last = function last(arr) {
    return arr[arr.length - 1];
  };
  function isSimpleMemberExpression(expression) {
    expression = skipTransparentExprWrapperNodes(expression);
    return isIdentifier$f(expression) || isSuper$3(expression) || isMemberExpression$8(expression) && !expression.computed && isSimpleMemberExpression(expression.object);
  }
  function needsMemoize(path) {
    var optionalPath = path;
    var scope = path.scope;
    while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
      var _optionalPath = optionalPath,
        node = _optionalPath.node;
      var childPath = skipTransparentExprWrappers(optionalPath.isOptionalMemberExpression() ? optionalPath.get("object") : optionalPath.get("callee"));
      if (node.optional) {
        return !scope.isStatic(childPath.node);
      }
      optionalPath = childPath;
    }
  }
  var NULLISH_CHECK = template$1.expression("%%check%% === null || %%ref%% === void 0");
  var NULLISH_CHECK_NO_DDA = template$1.expression("%%check%% == null");
  var NULLISH_CHECK_NEG = template$1.expression("%%check%% !== null && %%ref%% !== void 0");
  var NULLISH_CHECK_NO_DDA_NEG = template$1.expression("%%check%% != null");
  function transformOptionalChain(path, _ref, replacementPath, ifNullish, wrapLast) {
    var pureGetters = _ref.pureGetters,
      noDocumentAll = _ref.noDocumentAll;
    var scope = path.scope;
    if (scope.path.isPattern() && needsMemoize(path)) {
      replacementPath.replaceWith(template$1.expression.ast(_templateObject$o || (_templateObject$o = _taggedTemplateLiteralLoose(["(() => ", ")()"])), replacementPath.node));
      return;
    }
    var optionals = [];
    var optionalPath = path;
    while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
      var _optionalPath2 = optionalPath,
        node = _optionalPath2.node;
      if (node.optional) {
        optionals.push(node);
      }
      if (optionalPath.isOptionalMemberExpression()) {
        optionalPath.node.type = "MemberExpression";
        optionalPath = skipTransparentExprWrappers(optionalPath.get("object"));
      } else if (optionalPath.isOptionalCallExpression()) {
        optionalPath.node.type = "CallExpression";
        optionalPath = skipTransparentExprWrappers(optionalPath.get("callee"));
      }
    }
    if (optionals.length === 0) {
      return;
    }
    var checks = [];
    var tmpVar;
    for (var i = optionals.length - 1; i >= 0; i--) {
      var _node = optionals[i];
      var isCall = isCallExpression$8(_node);
      var chainWithTypes = isCall ? _node.callee : _node.object;
      var chain = skipTransparentExprWrapperNodes(chainWithTypes);
      var ref = void 0;
      var _check = void 0;
      if (isCall && isIdentifier$f(chain, {
        name: "eval"
      })) {
        _check = ref = chain;
        _node.callee = sequenceExpression$8([numericLiteral$6(0), ref]);
      } else if (pureGetters && isCall && isSimpleMemberExpression(chain)) {
        _check = ref = _node.callee;
      } else if (scope.isStatic(chain)) {
        _check = ref = chainWithTypes;
      } else {
        if (!tmpVar || isCall) {
          tmpVar = scope.generateUidIdentifierBasedOnNode(chain);
          scope.push({
            id: cloneNode$g(tmpVar)
          });
        }
        ref = tmpVar;
        _check = assignmentExpression$b("=", cloneNode$g(tmpVar), chainWithTypes);
        if (isCall) {
          _node.callee = ref;
        } else {
          _node.object = ref;
        }
      }
      if (isCall && isMemberExpression$8(chain)) {
        if (pureGetters && isSimpleMemberExpression(chain)) {
          _node.callee = chainWithTypes;
        } else {
          var object = chain.object;
          var context = void 0;
          if (isSuper$3(object)) {
            context = thisExpression$4();
          } else {
            var memoized = scope.maybeGenerateMemoised(object);
            if (memoized) {
              context = memoized;
              chain.object = assignmentExpression$b("=", memoized, object);
            } else {
              context = object;
            }
          }
          _node.arguments.unshift(cloneNode$g(context));
          _node.callee = memberExpression$a(_node.callee, identifier$e("call"));
        }
      }
      var data = {
        check: cloneNode$g(_check),
        ref: cloneNode$g(ref)
      };
      Object.defineProperty(data, "ref", {
        enumerable: false
      });
      checks.push(data);
    }
    var result = replacementPath.node;
    if (wrapLast) result = wrapLast(result);
    var ifNullishBoolean = isBooleanLiteral(ifNullish);
    var ifNullishFalse = ifNullishBoolean && ifNullish.value === false;
    var ifNullishVoid = !ifNullishBoolean && isUnaryExpression$1(ifNullish, {
      operator: "void"
    });
    var isEvaluationValueIgnored = isExpressionStatement$2(replacementPath.parent) && !replacementPath.isCompletionRecord() || isSequenceExpression$1(replacementPath.parent) && last(replacementPath.parent.expressions) !== replacementPath.node;
    var tpl = ifNullishFalse ? noDocumentAll ? NULLISH_CHECK_NO_DDA_NEG : NULLISH_CHECK_NEG : noDocumentAll ? NULLISH_CHECK_NO_DDA : NULLISH_CHECK;
    var logicalOp = ifNullishFalse ? "&&" : "||";
    var check = checks.map(tpl).reduce(function (expr, check) {
      return logicalExpression$3(logicalOp, expr, check);
    });
    replacementPath.replaceWith(ifNullishBoolean || ifNullishVoid && isEvaluationValueIgnored ? logicalExpression$3(logicalOp, check, result) : conditionalExpression$5(check, ifNullish, result));
  }
  function transform$1(path, assumptions) {
    var scope = path.scope;
    var maybeWrapped = findOutermostTransparentParent(path);
    var parentPath = maybeWrapped.parentPath;
    if (parentPath.isUnaryExpression({
      operator: "delete"
    })) {
      transformOptionalChain(path, assumptions, parentPath, booleanLiteral$2(true));
    } else {
      var wrapLast;
      if (parentPath.isCallExpression({
        callee: maybeWrapped.node
      }) && path.isOptionalMemberExpression()) {
        wrapLast = function wrapLast(replacement) {
          var _baseRef;
          var object = skipTransparentExprWrapperNodes(replacement.object);
          var baseRef;
          if (!assumptions.pureGetters || !isSimpleMemberExpression(object)) {
            baseRef = scope.maybeGenerateMemoised(object);
            if (baseRef) {
              replacement.object = assignmentExpression$b("=", baseRef, object);
            }
          }
          return callExpression$c(memberExpression$a(replacement, identifier$e("bind")), [cloneNode$g((_baseRef = baseRef) != null ? _baseRef : object)]);
        };
      }
      transformOptionalChain(path, assumptions, path, willPathCastToBoolean(maybeWrapped) ? booleanLiteral$2(false) : scope.buildUndefinedNode(), wrapLast);
    }
  }

  var _transformOptionalChaining = declare(function (api, options) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var _options$loose = options.loose,
      loose = _options$loose === void 0 ? false : _options$loose;
    var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
    var pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : loose;
    return {
      name: "transform-optional-chaining",
      inherits: undefined,
      visitor: {
        "OptionalCallExpression|OptionalMemberExpression": function OptionalCallExpressionOptionalMemberExpression(path) {
          transform$1(path, {
            noDocumentAll: noDocumentAll,
            pureGetters: pureGetters
          });
        }
      }
    };
  });

  var proposalOptionalChainingAssign = declare(function (api) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var assumptions = {
      noDocumentAll: (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : false,
      pureGetters: (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false
    };
    var t = api.types;
    return {
      name: "transform-optional-chaining-assign",
      inherits: syntaxOptionalChainingAssign,
      visitor: {
        AssignmentExpression: function AssignmentExpression(path, state) {
          var _lhs$node$extra;
          var lhs = path.get("left");
          if (!lhs.isExpression()) return;
          var isParenthesized = ((_lhs$node$extra = lhs.node.extra) == null ? void 0 : _lhs$node$extra.parenthesized) || t.isParenthesizedExpression(lhs.node);
          lhs = skipTransparentExprWrappers(lhs);
          if (!lhs.isOptionalMemberExpression()) return;
          var ifNullish = path.scope.buildUndefinedNode();
          if (isParenthesized) {
            ifNullish = t.callExpression(state.addHelper("nullishReceiverError"), []);
            if (path.node.operator === "=") {
              ifNullish = t.sequenceExpression([t.cloneNode(path.node.right), ifNullish]);
            }
          }
          transformOptionalChain(lhs, assumptions, path, ifNullish);
        }
      }
    };
  });

  function isConciseArrowExpression(node) {
    return isArrowFunctionExpression(node) && isExpression$4(node.body) && !node.async;
  }
  var buildOptimizedSequenceExpression = function buildOptimizedSequenceExpression(_ref) {
    var call = _ref.call,
      path = _ref.path,
      placeholder = _ref.placeholder;
    var calledExpression = call.callee;
    var pipelineLeft = path.node.left;
    var assign = assignmentExpression$b("=", cloneNode$g(placeholder), pipelineLeft);
    var expressionIsArrow = isConciseArrowExpression(calledExpression);
    if (expressionIsArrow) {
      var param;
      var optimizeArrow = true;
      var params = calledExpression.params;
      if (params.length === 1 && isIdentifier$f(params[0])) {
        param = params[0];
      } else if (params.length > 0) {
        optimizeArrow = false;
      }
      if (optimizeArrow && !param) {
        return sequenceExpression$8([pipelineLeft, calledExpression.body]);
      } else if (param) {
        path.scope.push({
          id: cloneNode$g(placeholder)
        });
        path.get("right").scope.rename(param.name, placeholder.name);
        return sequenceExpression$8([assign, calledExpression.body]);
      }
    } else if (isIdentifier$f(calledExpression, {
      name: "eval"
    })) {
      var evalSequence = sequenceExpression$8([numericLiteral$6(0), calledExpression]);
      call.callee = evalSequence;
    }
    path.scope.push({
      id: cloneNode$g(placeholder)
    });
    return sequenceExpression$8([assign, call]);
  };

  var minimalVisitor = {
    BinaryExpression: function (_BinaryExpression) {
      function BinaryExpression(_x) {
        return _BinaryExpression.apply(this, arguments);
      }
      BinaryExpression.toString = function () {
        return _BinaryExpression.toString();
      };
      return BinaryExpression;
    }(function (path) {
      var scope = path.scope,
        node = path.node;
      var operator = node.operator,
        left = node.left,
        right = node.right;
      if (operator !== "|>") return;
      var placeholder = scope.generateUidIdentifierBasedOnNode(left);
      var call = callExpression$c(right, [cloneNode$g(placeholder)]);
      path.replaceWith(buildOptimizedSequenceExpression({
        placeholder: placeholder,
        call: call,
        path: path
      }));
    })
  };

  var topicReferenceVisitor = {
    exit: function exit(path, state) {
      if (path.isTopicReference()) {
        state.topicReferences.push(path);
      } else {
        if (state.topicReferences.length === 0 && !state.sideEffectsBeforeFirstTopicReference && !path.isPure()) {
          state.sideEffectsBeforeFirstTopicReference = true;
        }
      }
    },
    "ClassBody|Function": function ClassBodyFunction(_, state) {
      if (state.topicReferences.length === 0) {
        state.sideEffectsBeforeFirstTopicReference = true;
      }
    }
  };
  var visitor = {
    BinaryExpression: {
      exit: function exit(path) {
        var scope = path.scope,
          node = path.node;
        if (node.operator !== "|>") {
          return;
        }
        var pipeBodyPath = path.get("right");
        if (pipeBodyPath.node.type === "TopicReference") {
          path.replaceWith(node.left);
          return;
        }
        var visitorState = {
          topicReferences: [],
          sideEffectsBeforeFirstTopicReference: pipeBodyPath.isFunction()
        };
        pipeBodyPath.traverse(topicReferenceVisitor, visitorState);
        if (visitorState.topicReferences.length === 1 && (!visitorState.sideEffectsBeforeFirstTopicReference || path.scope.isPure(node.left, true))) {
          visitorState.topicReferences[0].replaceWith(node.left);
          path.replaceWith(node.right);
          return;
        }
        var topicVariable = scope.generateUidIdentifierBasedOnNode(node);
        scope.push({
          id: topicVariable
        });
        visitorState.topicReferences.forEach(function (path) {
          return path.replaceWith(cloneNode$g(topicVariable));
        });
        path.replaceWith(sequenceExpression$8([assignmentExpression$b("=", cloneNode$g(topicVariable), node.left), node.right]));
      }
    }
  };

  var fsharpVisitor = {
    BinaryExpression: function (_BinaryExpression) {
      function BinaryExpression(_x) {
        return _BinaryExpression.apply(this, arguments);
      }
      BinaryExpression.toString = function () {
        return _BinaryExpression.toString();
      };
      return BinaryExpression;
    }(function (path) {
      var scope = path.scope,
        node = path.node;
      var operator = node.operator,
        left = node.left,
        right = node.right;
      if (operator !== "|>") return;
      var placeholder = scope.generateUidIdentifierBasedOnNode(left);
      var call = right.type === "AwaitExpression" ? awaitExpression$1(cloneNode$g(placeholder)) : callExpression$c(right, [cloneNode$g(placeholder)]);
      var sequence = buildOptimizedSequenceExpression({
        placeholder: placeholder,
        call: call,
        path: path
      });
      path.replaceWith(sequence);
    })
  };

  var updateTopicReferenceVisitor = {
    PipelinePrimaryTopicReference: function PipelinePrimaryTopicReference(path) {
      path.replaceWith(cloneNode$g(this.topicId));
    },
    PipelineTopicExpression: function PipelineTopicExpression(path) {
      path.skip();
    }
  };
  var smartVisitor = {
    BinaryExpression: function BinaryExpression(path) {
      var scope = path.scope;
      var node = path.node;
      var operator = node.operator,
        left = node.left,
        right = node.right;
      if (operator !== "|>") return;
      var placeholder = scope.generateUidIdentifierBasedOnNode(left);
      scope.push({
        id: placeholder
      });
      var call;
      if (isPipelineTopicExpression(right)) {
        path.get("right").traverse(updateTopicReferenceVisitor, {
          topicId: placeholder
        });
        call = right.expression;
      } else {
        var callee = right.callee;
        if (isIdentifier$f(callee, {
          name: "eval"
        })) {
          callee = sequenceExpression$8([numericLiteral$6(0), callee]);
        }
        call = callExpression$c(callee, [cloneNode$g(placeholder)]);
      }
      path.replaceWith(sequenceExpression$8([assignmentExpression$b("=", cloneNode$g(placeholder), left), call]));
    }
  };

  var visitorsPerProposal = {
    minimal: minimalVisitor,
    hack: visitor,
    fsharp: fsharpVisitor,
    smart: smartVisitor
  };
  var proposalPipelineOperator = declare(function (api, options) {
    api.assertVersion("*");
    var proposal = options.proposal;
    if (proposal === "smart") {
      console.warn("The smart-mix pipe operator is deprecated. Use \"proposal\": \"hack\" instead.");
    }
    return {
      name: "proposal-pipeline-operator",
      inherits: syntaxPipelineOperator,
      visitor: visitorsPerProposal[options.proposal]
    };
  });

  var _transformPrivateMethods = declare(function (api, options) {
    api.assertVersion("*");
    return createClassFeaturePlugin({
      name: "transform-private-methods",
      api: api,
      feature: FEATURES$1.privateMethods,
      loose: options.loose,
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          parserOpts.plugins.push("classPrivateMethods");
        }
      }
    });
  });

  var _templateObject$n, _templateObject2$d, _templateObject3$9, _templateObject4$4, _templateObject5$2, _templateObject6$1;
  var _transformPrivatePropertyInObject = declare(function (api, opt) {
    api.assertVersion("*");
    var t = api.types,
      template = api.template;
    var loose = opt.loose;
    var classWeakSets = new WeakMap();
    var fieldsWeakSets = new WeakMap();
    function unshadow(name, targetScope, scope) {
      while (scope !== targetScope) {
        if (scope.hasOwnBinding(name)) scope.rename(name);
        scope = scope.parent;
      }
    }
    function injectToFieldInit(fieldPath, expr, before) {
      if (before === void 0) {
        before = false;
      }
      if (fieldPath.node.value) {
        var value = fieldPath.get("value");
        if (before) {
          value.insertBefore(expr);
        } else {
          value.insertAfter(expr);
        }
      } else {
        fieldPath.set("value", t.unaryExpression("void", expr));
      }
    }
    function injectInitialization$1(classPath, init) {
      var firstFieldPath;
      var constructorPath;
      for (var _iterator = _createForOfIteratorHelperLoose(classPath.get("body.body")), _step; !(_step = _iterator()).done;) {
        var el = _step.value;
        if ((el.isClassProperty() || el.isClassPrivateProperty()) && !el.node["static"]) {
          firstFieldPath = el;
          break;
        }
        if (!constructorPath && el.isClassMethod({
          kind: "constructor"
        })) {
          constructorPath = el;
        }
      }
      if (firstFieldPath) {
        injectToFieldInit(firstFieldPath, init, true);
      } else {
        injectInitialization(classPath, constructorPath, [t.expressionStatement(init)]);
      }
    }
    function getWeakSetId(weakSets, outerClass, reference, name, inject) {
      if (name === void 0) {
        name = "";
      }
      var id = weakSets.get(reference.node);
      if (!id) {
        id = outerClass.scope.generateUidIdentifier((name || "") + " brandCheck");
        weakSets.set(reference.node, id);
        inject(reference, template.expression.ast(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["", ".add(this)"])), t.cloneNode(id)));
        var newExpr = t.newExpression(t.identifier("WeakSet"), []);
        annotateAsPure(newExpr);
        outerClass.insertBefore(template.ast(_templateObject2$d || (_templateObject2$d = _taggedTemplateLiteralLoose(["var ", " = ", ""])), id, newExpr));
      }
      return t.cloneNode(id);
    }
    return {
      name: "transform-private-property-in-object",
      inherits: undefined,
      pre: function pre() {
        enableFeature$1(this.file, FEATURES$1.privateIn, loose);
      },
      visitor: {
        BinaryExpression: function BinaryExpression(path, state) {
          var node = path.node;
          var file = state.file;
          if (node.operator !== "in") return;
          if (!t.isPrivateName(node.left)) return;
          var name = node.left.id.name;
          var privateElement;
          var outerClass = path.findParent(function (path) {
            if (!path.isClass()) return false;
            privateElement = path.get("body.body").find(function (_ref) {
              var node = _ref.node;
              return t.isPrivate(node) && node.key.id.name === name;
            });
            return !!privateElement;
          });
          if (outerClass.parentPath.scope.path.isPattern()) {
            outerClass.replaceWith(template.ast(_templateObject3$9 || (_templateObject3$9 = _taggedTemplateLiteralLoose(["(() => ", ")()"])), outerClass.node));
            return;
          }
          if (privateElement.node.type === "ClassPrivateMethod") {
            if (privateElement.node["static"]) {
              if (outerClass.node.id) {
                unshadow(outerClass.node.id.name, outerClass.scope, path.scope);
              } else {
                outerClass.set("id", path.scope.generateUidIdentifier("class"));
              }
              path.replaceWith(template.expression.ast(_templateObject4$4 || (_templateObject4$4 = _taggedTemplateLiteralLoose(["\n                ", " === ", "\n              "])), t.cloneNode(outerClass.node.id), buildCheckInRHS(node.right, file)));
            } else {
              var _outerClass$node$id;
              var id = getWeakSetId(classWeakSets, outerClass, outerClass, (_outerClass$node$id = outerClass.node.id) == null ? void 0 : _outerClass$node$id.name, injectInitialization$1);
              path.replaceWith(template.expression.ast(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), id, buildCheckInRHS(node.right, file)));
            }
          } else {
            var _id = getWeakSetId(fieldsWeakSets, outerClass, privateElement, privateElement.node.key.id.name, injectToFieldInit);
            path.replaceWith(template.expression.ast(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), _id, buildCheckInRHS(node.right, file)));
          }
        }
      }
    };
  });

  var v$2 = new OptionValidator("@babel/plugin-proposal-record-and-tuple");
  var proposalRecordAndTuple = declare(function (api, options) {
    api.assertVersion("*");
    var polyfillModuleName = v$2.validateStringOption("polyfillModuleName", options.polyfillModuleName, "@bloomberg/record-tuple-polyfill");
    var shouldImportPolyfill = v$2.validateBooleanOption("importPolyfill", options.importPolyfill, !!options.polyfillModuleName);
    var importCaches = new WeakMap();
    function getOr(map, key, getDefault) {
      var value = map.get(key);
      if (!value) map.set(key, value = getDefault());
      return value;
    }
    function getBuiltIn(name, programPath) {
      if (!shouldImportPolyfill) return identifier$e(name);
      if (!programPath) {
        throw new Error("Internal error: unable to find the Program node.");
      }
      var cacheKey = name + ":" + isModule(programPath);
      var cache = getOr(importCaches, programPath.node, function () {
        return new Map();
      });
      var localBindingName = getOr(cache, cacheKey, function () {
        return addNamed(programPath, name, polyfillModuleName, {
          importedInterop: "uncompiled"
        }).name;
      });
      return identifier$e(localBindingName);
    }
    return {
      name: "proposal-record-and-tuple",
      inherits: syntaxRecordAndTuple,
      visitor: {
        Program: function Program(path, state) {
          state.programPath = path;
        },
        RecordExpression: function RecordExpression(path, state) {
          var record = getBuiltIn("Record", state.programPath);
          var object = objectExpression$3(path.node.properties);
          var wrapped = callExpression$c(record, [object]);
          path.replaceWith(wrapped);
        },
        TupleExpression: function TupleExpression(path, state) {
          var tuple = getBuiltIn("Tuple", state.programPath);
          var wrapped = callExpression$c(tuple, path.node.elements);
          path.replaceWith(wrapped);
        }
      }
    };
  });

  var proposalRegexpModifiers = declare(function (api) {
    api.assertVersion("*");
    return createRegExpFeaturePlugin({
      name: "proposal-regexp-modifiers",
      feature: "modifiers"
    });
  });

  var syntaxThrowExpressions = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-throw-expressions",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        parserOpts.plugins.push("throwExpressions");
      }
    };
  });

  var proposalThrowExpressions = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "proposal-throw-expressions",
      inherits: syntaxThrowExpressions,
      visitor: {
        UnaryExpression: function UnaryExpression(path) {
          var _path$node = path.node,
            operator = _path$node.operator,
            argument = _path$node.argument;
          if (operator !== "throw") return;
          var arrow = functionExpression$2(null, [identifier$e("e")], blockStatement$6([throwStatement(identifier$e("e"))]));
          path.replaceWith(callExpression$c(arrow, [argument]));
        }
      }
    };
  });

  var _transformUnicodePropertyRegex = declare(function (api, options) {
    api.assertVersion("*");
    var _options$useUnicodeFl = options.useUnicodeFlag,
      useUnicodeFlag = _options$useUnicodeFl === void 0 ? true : _options$useUnicodeFl;
    if (typeof useUnicodeFlag !== "boolean") {
      throw new Error(".useUnicodeFlag must be a boolean, or undefined");
    }
    return createRegExpFeaturePlugin({
      name: "transform-unicode-property-regex",
      feature: "unicodePropertyEscape",
      options: {
        useUnicodeFlag: useUnicodeFlag
      }
    });
  });

  var _transformUnicodeSetsRegex = declare(function (api) {
    api.assertVersion("*");
    return createRegExpFeaturePlugin({
      name: "transform-unicode-sets-regex",
      feature: "unicodeSetsFlag",
      manipulateOptions: function manipulateOptions(opts, parserOpts) {
        {
          parserOpts.plugins.push("regexpUnicodeSets");
        }
      }
    });
  });

  var _transformAsyncToGenerator = declare(function (api, options) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var method = options.method,
      module = options.module;
    var noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : true;
    var ignoreFunctionLength = (_api$assumption2 = api.assumption("ignoreFunctionLength")) != null ? _api$assumption2 : false;
    if (method && module) {
      return {
        name: "transform-async-to-generator",
        visitor: {
          Function: function Function(path, state) {
            if (!path.node.async || path.node.generator) return;
            var wrapAsync = state.methodWrapper;
            if (wrapAsync) {
              wrapAsync = cloneNode$g(wrapAsync);
            } else {
              wrapAsync = state.methodWrapper = addNamed(path, method, module);
            }
            remapAsyncToGenerator(path, {
              wrapAsync: wrapAsync
            }, noNewArrows, ignoreFunctionLength);
          }
        }
      };
    }
    return {
      name: "transform-async-to-generator",
      visitor: {
        Function: function Function(path, state) {
          if (!path.node.async || path.node.generator) return;
          remapAsyncToGenerator(path, {
            wrapAsync: state.addHelper("asyncToGenerator")
          }, noNewArrows, ignoreFunctionLength);
        }
      }
    };
  });

  var _transformArrowFunctions = declare(function (api, options) {
    var _api$assumption;
    api.assertVersion("*");
    var noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : !options.spec;
    return {
      name: "transform-arrow-functions",
      visitor: {
        ArrowFunctionExpression: function ArrowFunctionExpression(path) {
          if (!path.isArrowFunctionExpression()) return;
          {
            path.arrowFunctionToExpression({
              allowInsertArrow: false,
              noNewArrows: noNewArrows,
              specCompliant: !noNewArrows
            });
          }
        }
      }
    };
  });

  var _transformBlockScopedFunctions = declare(function (api) {
    api.assertVersion("*");
    function transformStatementList(paths) {
      for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
        var path = _step.value;
        if (!path.isFunctionDeclaration()) continue;
        var func = path.node;
        var declar = variableDeclaration$6("let", [variableDeclarator$6(func.id, toExpression$1(func))]);
        declar._blockHoist = 2;
        func.id = null;
        path.replaceWith(declar);
      }
    }
    return {
      name: "transform-block-scoped-functions",
      visitor: {
        BlockStatement: function BlockStatement(path) {
          var node = path.node,
            parent = path.parent;
          if (isFunction$5(parent, {
            body: node
          }) || isExportDeclaration$2(parent)) {
            return;
          }
          transformStatementList(path.get("body"));
        },
        SwitchCase: function SwitchCase(path) {
          transformStatementList(path.get("consequent"));
        }
      }
    };
  });

  var _templateObject$m, _templateObject2$c, _templateObject3$8, _templateObject4$3;
  var collectLoopBodyBindingsVisitor = {
    "Expression|Declaration|Loop": function ExpressionDeclarationLoop(path) {
      path.skip();
    },
    Scope: function Scope(path, state) {
      if (path.isFunctionParent()) path.skip();
      var bindings = path.scope.bindings;
      for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
        var name = _Object$keys[_i];
        var binding = bindings[name];
        if (binding.kind === "let" || binding.kind === "const" || binding.kind === "hoisted") {
          state.blockScoped.push(binding);
        }
      }
    }
  };
  function getLoopBodyBindings(loopPath) {
    var state = {
      blockScoped: []
    };
    loopPath.traverse(collectLoopBodyBindingsVisitor, state);
    return state.blockScoped;
  }
  function getUsageInBody(binding, loopPath) {
    var seen = new WeakSet();
    var capturedInClosure = false;
    var constantViolations = filterMap(binding.constantViolations, function (path) {
      var _relativeLoopLocation = relativeLoopLocation(path, loopPath),
        inBody = _relativeLoopLocation.inBody,
        inClosure = _relativeLoopLocation.inClosure;
      if (!inBody) return null;
      capturedInClosure || (capturedInClosure = inClosure);
      var id = path.isUpdateExpression() ? path.get("argument") : path.isAssignmentExpression() ? path.get("left") : null;
      if (id) seen.add(id.node);
      return id;
    });
    var references = filterMap(binding.referencePaths, function (path) {
      if (seen.has(path.node)) return null;
      var _relativeLoopLocation2 = relativeLoopLocation(path, loopPath),
        inBody = _relativeLoopLocation2.inBody,
        inClosure = _relativeLoopLocation2.inClosure;
      if (!inBody) return null;
      capturedInClosure || (capturedInClosure = inClosure);
      return path;
    });
    return {
      capturedInClosure: capturedInClosure,
      hasConstantViolations: constantViolations.length > 0,
      usages: references.concat(constantViolations)
    };
  }
  function relativeLoopLocation(path, loopPath) {
    var bodyPath = loopPath.get("body");
    var inClosure = false;
    for (var currPath = path; currPath; currPath = currPath.parentPath) {
      if (currPath.isFunction() || currPath.isClass() || currPath.isMethod()) {
        inClosure = true;
      }
      if (currPath === bodyPath) {
        return {
          inBody: true,
          inClosure: inClosure
        };
      } else if (currPath === loopPath) {
        return {
          inBody: false,
          inClosure: inClosure
        };
      }
    }
    throw new Error("Internal Babel error: path is not in loop. Please report this as a bug.");
  }
  var collectCompletionsAndVarsVisitor = {
    Function: function Function(path) {
      path.skip();
    },
    LabeledStatement: {
      enter: function enter(_ref, state) {
        var node = _ref.node;
        state.labelsStack.push(node.label.name);
      },
      exit: function exit(_ref2, state) {
        var node = _ref2.node;
        var popped = state.labelsStack.pop();
        if (popped !== node.label.name) {
          throw new Error("Assertion failure. Please report this bug to Babel.");
        }
      }
    },
    Loop: {
      enter: function enter(_, state) {
        state.labellessContinueTargets++;
        state.labellessBreakTargets++;
      },
      exit: function exit(_, state) {
        state.labellessContinueTargets--;
        state.labellessBreakTargets--;
      }
    },
    SwitchStatement: {
      enter: function enter(_, state) {
        state.labellessBreakTargets++;
      },
      exit: function exit(_, state) {
        state.labellessBreakTargets--;
      }
    },
    "BreakStatement|ContinueStatement": function BreakStatementContinueStatement(path, state) {
      var label = path.node.label;
      if (label) {
        if (state.labelsStack.includes(label.name)) return;
      } else if (path.isBreakStatement() ? state.labellessBreakTargets > 0 : state.labellessContinueTargets > 0) {
        return;
      }
      state.breaksContinues.push(path);
    },
    ReturnStatement: function ReturnStatement(path, state) {
      state.returns.push(path);
    },
    VariableDeclaration: function VariableDeclaration(path, state) {
      if (path.parent === state.loopNode && isVarInLoopHead(path)) return;
      if (path.node.kind === "var") state.vars.push(path);
    }
  };
  function wrapLoopBody(loopPath, captured, updatedBindingsUsages) {
    var loopNode = loopPath.node;
    var state = {
      breaksContinues: [],
      returns: [],
      labelsStack: [],
      labellessBreakTargets: 0,
      labellessContinueTargets: 0,
      vars: [],
      loopNode: loopNode
    };
    loopPath.traverse(collectCompletionsAndVarsVisitor, state);
    var callArgs = [];
    var closureParams = [];
    var updater = [];
    for (var _iterator = _createForOfIteratorHelperLoose(updatedBindingsUsages), _step; !(_step = _iterator()).done;) {
      var _step$value = _slicedToArray(_step.value, 2),
        _name2 = _step$value[0],
        updatedUsage = _step$value[1];
      callArgs.push(identifier$e(_name2));
      var innerName = loopPath.scope.generateUid(_name2);
      closureParams.push(identifier$e(innerName));
      updater.push(assignmentExpression$b("=", identifier$e(_name2), identifier$e(innerName)));
      for (var _iterator7 = _createForOfIteratorHelperLoose(updatedUsage), _step7; !(_step7 = _iterator7()).done;) {
        var _path3 = _step7.value;
        _path3.replaceWith(identifier$e(innerName));
      }
    }
    for (var _iterator2 = _createForOfIteratorHelperLoose(captured), _step2; !(_step2 = _iterator2()).done;) {
      var _name3 = _step2.value;
      if (updatedBindingsUsages.has(_name3)) continue;
      callArgs.push(identifier$e(_name3));
      closureParams.push(identifier$e(_name3));
    }
    var id = loopPath.scope.generateUid("loop");
    var fn = functionExpression$2(null, closureParams, toBlock(loopNode.body));
    var call = callExpression$c(identifier$e(id), callArgs);
    var fnParent = loopPath.findParent(function (p) {
      return p.isFunction();
    });
    if (fnParent) {
      var _ref3 = fnParent.node,
        async = _ref3.async,
        generator = _ref3.generator;
      fn.async = async;
      fn.generator = generator;
      if (generator) call = yieldExpression$2(call, true);else if (async) call = awaitExpression$1(call);
    }
    var updaterNode = updater.length > 0 ? expressionStatement$7(sequenceExpression$8(updater)) : null;
    if (updaterNode) fn.body.body.push(updaterNode);
    var _ref4 = loopPath.insertBefore(variableDeclaration$6("var", [variableDeclarator$6(identifier$e(id), fn)])),
      _ref5 = _slicedToArray(_ref4, 1),
      varPath = _ref5[0];
    var bodyStmts = [];
    var varNames = [];
    for (var _iterator3 = _createForOfIteratorHelperLoose(state.vars), _step3; !(_step3 = _iterator3()).done;) {
      var _varPath = _step3.value;
      var assign = [];
      for (var _iterator8 = _createForOfIteratorHelperLoose(_varPath.node.declarations), _step8; !(_step8 = _iterator8()).done;) {
        var decl = _step8.value;
        varNames.push.apply(varNames, _toConsumableArray(Object.keys(getBindingIdentifiers$4(decl.id))));
        if (decl.init) {
          assign.push(assignmentExpression$b("=", decl.id, decl.init));
        } else if (isForXStatement$1(_varPath.parent, {
          left: _varPath.node
        })) {
          assign.push(decl.id);
        }
      }
      if (assign.length > 0) {
        var replacement = assign.length === 1 ? assign[0] : sequenceExpression$8(assign);
        _varPath.replaceWith(replacement);
      } else {
        _varPath.remove();
      }
    }
    if (varNames.length) {
      varPath.pushContainer("declarations", varNames.map(function (name) {
        return variableDeclarator$6(identifier$e(name));
      }));
    }
    var labelNum = state.breaksContinues.length;
    var returnNum = state.returns.length;
    if (labelNum + returnNum === 0) {
      bodyStmts.push(expressionStatement$7(call));
    } else if (labelNum === 1 && returnNum === 0) {
      for (var _iterator4 = _createForOfIteratorHelperLoose(state.breaksContinues), _step4; !(_step4 = _iterator4()).done;) {
        var path = _step4.value;
        var node = path.node;
        var type = node.type,
          label = node.label;
        var name = type === "BreakStatement" ? "break" : "continue";
        if (label) name += " " + label.name;
        path.replaceWith(addComment$2(returnStatement$3(numericLiteral$6(1)), "trailing", " " + name, true));
        if (updaterNode) path.insertBefore(cloneNode$g(updaterNode));
        bodyStmts.push(template$1.statement.ast(_templateObject$m || (_templateObject$m = _taggedTemplateLiteralLoose(["\n        if (", ") ", "\n      "])), call, node));
      }
    } else {
      var completionId = loopPath.scope.generateUid("ret");
      if (varPath.isVariableDeclaration()) {
        varPath.pushContainer("declarations", [variableDeclarator$6(identifier$e(completionId))]);
        bodyStmts.push(expressionStatement$7(assignmentExpression$b("=", identifier$e(completionId), call)));
      } else {
        bodyStmts.push(variableDeclaration$6("var", [variableDeclarator$6(identifier$e(completionId), call)]));
      }
      var injected = [];
      for (var _iterator5 = _createForOfIteratorHelperLoose(state.breaksContinues), _step5; !(_step5 = _iterator5()).done;) {
        var _path2 = _step5.value;
        var _node = _path2.node;
        var _type = _node.type,
          _label = _node.label;
        var _name = _type === "BreakStatement" ? "break" : "continue";
        if (_label) _name += " " + _label.name;
        var i = injected.indexOf(_name);
        var hasInjected = i !== -1;
        if (!hasInjected) {
          injected.push(_name);
          i = injected.length - 1;
        }
        _path2.replaceWith(addComment$2(returnStatement$3(numericLiteral$6(i)), "trailing", " " + _name, true));
        if (updaterNode) _path2.insertBefore(cloneNode$g(updaterNode));
        if (hasInjected) continue;
        bodyStmts.push(template$1.statement.ast(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n        if (", " === ", ") ", "\n      "])), identifier$e(completionId), numericLiteral$6(i), _node));
      }
      if (returnNum) {
        for (var _iterator6 = _createForOfIteratorHelperLoose(state.returns), _step6; !(_step6 = _iterator6()).done;) {
          var _path = _step6.value;
          var arg = _path.node.argument || _path.scope.buildUndefinedNode();
          _path.replaceWith(template$1.statement.ast(_templateObject3$8 || (_templateObject3$8 = _taggedTemplateLiteralLoose(["\n          return { v: ", " };\n        "])), arg));
        }
        bodyStmts.push(template$1.statement.ast(_templateObject2$c || (_templateObject2$c = _taggedTemplateLiteralLoose(["\n          if (", ") return ", ".v;\n        "])), identifier$e(completionId), identifier$e(completionId)));
      }
    }
    loopNode.body = blockStatement$6(bodyStmts);
    return varPath;
  }
  function isVarInLoopHead(path) {
    if (isForStatement$2(path.parent)) return path.key === "init";
    if (isForXStatement$1(path.parent)) return path.key === "left";
    return false;
  }
  function filterMap(list, fn) {
    var result = [];
    for (var _iterator9 = _createForOfIteratorHelperLoose(list), _step9; !(_step9 = _iterator9()).done;) {
      var item = _step9.value;
      var mapped = fn(item);
      if (mapped) result.push(mapped);
    }
    return result;
  }

  function validateUsage(path, state, tdzEnabled) {
    var dynamicTDZNames = [];
    for (var _i = 0, _Object$keys = Object.keys(path.getBindingIdentifiers()); _i < _Object$keys.length; _i++) {
      var name = _Object$keys[_i];
      var binding = path.scope.getBinding(name);
      if (!binding) continue;
      if (tdzEnabled) {
        if (injectTDZChecks(binding, state)) dynamicTDZNames.push(name);
      }
      if (path.node.kind === "const") {
        disallowConstantViolations(name, binding, state);
      }
    }
    return dynamicTDZNames;
  }
  function disallowConstantViolations(name, binding, state) {
    for (var _iterator = _createForOfIteratorHelperLoose(binding.constantViolations), _step; !(_step = _iterator()).done;) {
      var violation = _step.value;
      var readOnlyError = state.addHelper("readOnlyError");
      var throwNode = callExpression$c(readOnlyError, [stringLiteral$6(name)]);
      if (violation.isAssignmentExpression()) {
        var _violation$node = violation.node,
          operator = _violation$node.operator,
          left = _violation$node.left,
          right = _violation$node.right;
        if (operator === "=") {
          var exprs = [right];
          exprs.push(throwNode);
          violation.replaceWith(sequenceExpression$8(exprs));
        } else if (["&&=", "||=", "??="].includes(operator)) {
          violation.replaceWith(logicalExpression$3(operator.slice(0, -1), left, sequenceExpression$8([right, throwNode])));
        } else {
          violation.replaceWith(sequenceExpression$8([binaryExpression$5(operator.slice(0, -1), left, right), throwNode]));
        }
      } else if (violation.isUpdateExpression()) {
        violation.replaceWith(sequenceExpression$8([unaryExpression$5("+", violation.get("argument").node), throwNode]));
      } else if (violation.isForXStatement()) {
        violation.ensureBlock();
        violation.get("left").replaceWith(variableDeclaration$6("var", [variableDeclarator$6(violation.scope.generateUidIdentifier(name))]));
        violation.node.body.body.unshift(expressionStatement$7(throwNode));
      }
    }
  }
  function getTDZStatus(refPath, bindingPath) {
    var executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
    if (executionStatus === "before") {
      return "outside";
    } else if (executionStatus === "after") {
      return "inside";
    } else {
      return "maybe";
    }
  }
  var skipTDZChecks = new WeakSet();
  function buildTDZAssert(status, node, state) {
    if (status === "maybe") {
      var clone = cloneNode$g(node);
      skipTDZChecks.add(clone);
      return callExpression$c(state.addHelper("temporalRef"), [clone, stringLiteral$6(node.name)]);
    } else {
      return callExpression$c(state.addHelper("tdz"), [stringLiteral$6(node.name)]);
    }
  }
  function getTDZReplacement(path, state, id) {
    var _path$scope$getBindin;
    if (id === void 0) {
      id = path.node;
    }
    if (skipTDZChecks.has(id)) return;
    skipTDZChecks.add(id);
    var bindingPath = (_path$scope$getBindin = path.scope.getBinding(id.name)) == null ? void 0 : _path$scope$getBindin.path;
    if (!bindingPath || bindingPath.isFunctionDeclaration()) return;
    var status = getTDZStatus(path, bindingPath);
    if (status === "outside") return;
    if (status === "maybe") {
      bindingPath.parent._tdzThis = true;
    }
    return {
      status: status,
      node: buildTDZAssert(status, id, state)
    };
  }
  function injectTDZChecks(binding, state) {
    var allUsages = new Set(binding.referencePaths);
    binding.constantViolations.forEach(allUsages.add, allUsages);
    var dynamicTdz = false;
    for (var _iterator2 = _createForOfIteratorHelperLoose(binding.constantViolations), _step2; !(_step2 = _iterator2()).done;) {
      var _path2 = _step2.value;
      var node = _path2.node;
      if (skipTDZChecks.has(node)) continue;
      skipTDZChecks.add(node);
      if (_path2.isUpdateExpression()) {
        var arg = _path2.get("argument");
        var _replacement = getTDZReplacement(_path2, state, arg.node);
        if (!_replacement) continue;
        if (_replacement.status === "maybe") {
          dynamicTdz = true;
          _path2.insertBefore(_replacement.node);
        } else {
          _path2.replaceWith(_replacement.node);
        }
      } else if (_path2.isAssignmentExpression()) {
        var nodes = [];
        var ids = _path2.getBindingIdentifiers();
        for (var _i3 = 0, _Object$keys2 = Object.keys(ids); _i3 < _Object$keys2.length; _i3++) {
          var name = _Object$keys2[_i3];
          var _replacement2 = getTDZReplacement(_path2, state, ids[name]);
          if (_replacement2) {
            nodes.push(expressionStatement$7(_replacement2.node));
            if (_replacement2.status === "inside") break;
            if (_replacement2.status === "maybe") dynamicTdz = true;
          }
        }
        if (nodes.length > 0) _path2.insertBefore(nodes);
      }
    }
    for (var _i2 = 0, _arr = binding.referencePaths; _i2 < _arr.length; _i2++) {
      var _path = _arr[_i2];
      if (_path.parentPath.isUpdateExpression()) continue;
      if (_path.parentPath.isFor({
        left: _path.node
      })) continue;
      var replacement = getTDZReplacement(_path, state);
      if (!replacement) continue;
      if (replacement.status === "maybe") dynamicTdz = true;
      _path.replaceWith(replacement.node);
    }
    return dynamicTdz;
  }

  var annexB33FunctionsVisitor = {
    VariableDeclaration: function VariableDeclaration(path) {
      if (isStrict(path)) return;
      if (path.node.kind !== "var") return;
      var varScope = path.scope.getFunctionParent() || path.scope.getProgramParent();
      varScope.path.traverse(functionsToVarVisitor, {
        names: Object.keys(path.getBindingIdentifiers())
      });
    },
    BlockStatement: function BlockStatement(path) {
      if (isStrict(path)) return;
      if (isFunction$5(path.parent, {
        body: path.node
      })) return;
      transformStatementList(path.get("body"));
    },
    SwitchCase: function SwitchCase(path) {
      if (isStrict(path)) return;
      transformStatementList(path.get("consequent"));
    }
  };
  function transformStatementList(paths) {
    outer: for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
      var path = _step.value;
      if (!path.isFunctionDeclaration()) continue;
      if (path.node.async || path.node.generator) return;
      var scope = path.parentPath.scope;
      if (isVarScope(scope)) return;
      var name = path.node.id.name;
      var currScope = scope;
      do {
        if (currScope.parent.hasOwnBinding(name)) continue outer;
        currScope = currScope.parent;
      } while (!isVarScope(currScope));
      maybeTransformBlockScopedFunction(path);
    }
  }
  function maybeTransformBlockScopedFunction(path) {
    var node = path.node,
      scope = path.parentPath.scope;
    var id = node.id;
    scope.removeOwnBinding(id.name);
    node.id = null;
    var varNode = variableDeclaration$6("var", [variableDeclarator$6(id, toExpression$1(node))]);
    varNode._blockHoist = 2;
    var _path$replaceWith = path.replaceWith(varNode),
      _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
      varPath = _path$replaceWith2[0];
    scope.registerDeclaration(varPath);
  }
  var functionsToVarVisitor = {
    Scope: function Scope(path, _ref) {
      var names = _ref.names;
      for (var _iterator2 = _createForOfIteratorHelperLoose(names), _step2; !(_step2 = _iterator2()).done;) {
        var name = _step2.value;
        var binding = path.scope.getOwnBinding(name);
        if (binding && binding.kind === "hoisted") {
          maybeTransformBlockScopedFunction(binding.path);
        }
      }
    },
    "Expression|Declaration": function ExpressionDeclaration(path) {
      path.skip();
    }
  };
  function isVarScope(scope) {
    return scope.path.isFunctionParent() || scope.path.isProgram();
  }
  function isStrict(path) {
    return !!path.find(function (_ref2) {
      var _node$directives;
      var node = _ref2.node;
      if (isProgram$1(node)) {
        if (node.sourceType === "module") return true;
      } else if (isClass$1(node)) {
        return true;
      } else if (!isBlockStatement$3(node)) {
        return false;
      }
      return (_node$directives = node.directives) == null ? void 0 : _node$directives.some(function (directive) {
        return directive.value.value === "use strict";
      });
    });
  }

  var _transformBlockScoping = declare(function (api, opts) {
    api.assertVersion("*");
    var _opts$throwIfClosureR = opts.throwIfClosureRequired,
      throwIfClosureRequired = _opts$throwIfClosureR === void 0 ? false : _opts$throwIfClosureR,
      _opts$tdz = opts.tdz,
      tdzEnabled = _opts$tdz === void 0 ? false : _opts$tdz;
    if (typeof throwIfClosureRequired !== "boolean") {
      throw new Error(".throwIfClosureRequired must be a boolean, or undefined");
    }
    if (typeof tdzEnabled !== "boolean") {
      throw new Error(".tdz must be a boolean, or undefined");
    }
    return {
      name: "transform-block-scoping",
      visitor: traverse.visitors.merge([annexB33FunctionsVisitor, {
        Loop: function Loop(path, state) {
          var isForStatement = path.isForStatement();
          var headPath = isForStatement ? path.get("init") : path.isForXStatement() ? path.get("left") : null;
          var needsBodyWrap = false;
          var markNeedsBodyWrap = function markNeedsBodyWrap() {
            if (throwIfClosureRequired) {
              throw path.buildCodeFrameError("Compiling let/const in this block would add a closure " + "(throwIfClosureRequired).");
            }
            needsBodyWrap = true;
          };
          var body = path.get("body");
          var bodyScope;
          if (body.isBlockStatement()) {
            bodyScope = body.scope;
          }
          var bindings = getLoopBodyBindings(path);
          for (var _iterator = _createForOfIteratorHelperLoose(bindings), _step; !(_step = _iterator()).done;) {
            var _binding = _step.value;
            var _getUsageInBody2 = getUsageInBody(_binding, path),
              _capturedInClosure = _getUsageInBody2.capturedInClosure;
            if (_capturedInClosure) markNeedsBodyWrap();
          }
          var captured = [];
          var updatedBindingsUsages = new Map();
          if (headPath && isBlockScoped(headPath.node)) {
            var names = Object.keys(headPath.getBindingIdentifiers());
            var headScope = headPath.scope;
            for (var _i = 0, _names = names; _i < _names.length; _i++) {
              var _bodyScope;
              var name = _names[_i];
              if ((_bodyScope = bodyScope) != null && _bodyScope.hasOwnBinding(name)) continue;
              var binding = headScope.getOwnBinding(name);
              if (!binding) {
                headScope.crawl();
                binding = headScope.getOwnBinding(name);
              }
              var _getUsageInBody = getUsageInBody(binding, path),
                usages = _getUsageInBody.usages,
                capturedInClosure = _getUsageInBody.capturedInClosure,
                hasConstantViolations = _getUsageInBody.hasConstantViolations;
              if (headScope.parent.hasBinding(name) || headScope.parent.hasGlobal(name)) {
                var newName = headScope.generateUid(name);
                headScope.rename(name, newName);
                name = newName;
              }
              if (capturedInClosure) {
                markNeedsBodyWrap();
                captured.push(name);
              }
              if (isForStatement && hasConstantViolations) {
                updatedBindingsUsages.set(name, usages);
              }
            }
          }
          if (needsBodyWrap) {
            var varPath = wrapLoopBody(path, captured, updatedBindingsUsages);
            if (headPath != null && headPath.isVariableDeclaration()) {
              transformBlockScopedVariable(headPath, state, tdzEnabled);
            }
            varPath.get("declarations.0.init").unwrapFunctionEnvironment();
          }
        },
        VariableDeclaration: function VariableDeclaration(path, state) {
          transformBlockScopedVariable(path, state, tdzEnabled);
        },
        ClassDeclaration: function ClassDeclaration(path) {
          var id = path.node.id;
          if (!id) return;
          var scope = path.parentPath.scope;
          if (!isVarScope(scope) && scope.parent.hasBinding(id.name, {
            noUids: true
          })) {
            path.scope.rename(id.name);
          }
        }
      }])
    };
  });
  var conflictingFunctionsVisitor = {
    Scope: function Scope(path, _ref) {
      var names = _ref.names;
      for (var _iterator2 = _createForOfIteratorHelperLoose(names), _step2; !(_step2 = _iterator2()).done;) {
        var name = _step2.value;
        var binding = path.scope.getOwnBinding(name);
        if (binding && binding.kind === "hoisted") {
          path.scope.rename(name);
        }
      }
    },
    "Expression|Declaration": function ExpressionDeclaration(path) {
      path.skip();
    }
  };
  function transformBlockScopedVariable(path, state, tdzEnabled) {
    if (!isBlockScoped(path.node)) return;
    var dynamicTDZNames = validateUsage(path, state, tdzEnabled);
    path.node.kind = "var";
    var bindingNames = Object.keys(path.getBindingIdentifiers());
    for (var _i2 = 0, _bindingNames = bindingNames; _i2 < _bindingNames.length; _i2++) {
      var name = _bindingNames[_i2];
      var binding = path.scope.getOwnBinding(name);
      if (!binding) continue;
      binding.kind = "var";
    }
    if (isInLoop(path) && !isVarInLoopHead(path) || dynamicTDZNames.length > 0) {
      for (var _iterator3 = _createForOfIteratorHelperLoose(path.node.declarations), _step3; !(_step3 = _iterator3()).done;) {
        var _decl$init;
        var decl = _step3.value;
        (_decl$init = decl.init) != null ? _decl$init : decl.init = path.scope.buildUndefinedNode();
      }
    }
    var blockScope = path.scope;
    var varScope = blockScope.getFunctionParent() || blockScope.getProgramParent();
    if (varScope !== blockScope) {
      for (var _iterator4 = _createForOfIteratorHelperLoose(bindingNames), _step4; !(_step4 = _iterator4()).done;) {
        var _name = _step4.value;
        var newName = _name;
        if (blockScope.parent.hasBinding(_name, {
          noUids: true
        }) || blockScope.parent.hasGlobal(_name)) {
          newName = blockScope.generateUid(_name);
          blockScope.rename(_name, newName);
        }
        blockScope.moveBindingTo(newName, varScope);
      }
    }
    blockScope.path.traverse(conflictingFunctionsVisitor, {
      names: bindingNames
    });
    for (var _iterator5 = _createForOfIteratorHelperLoose(dynamicTDZNames), _step5; !(_step5 = _iterator5()).done;) {
      var _name2 = _step5.value;
      path.scope.push({
        id: identifier$e(_name2),
        init: state.addHelper("temporalUndefined")
      });
    }
  }
  function isLetOrConst(kind) {
    return kind === "let" || kind === "const";
  }
  function isInLoop(path) {
    if (!path.parentPath) return false;
    if (path.parentPath.isLoop()) return true;
    if (path.parentPath.isFunctionParent()) return false;
    return isInLoop(path.parentPath);
  }
  function isBlockScoped(node) {
    if (!isVariableDeclaration$3(node)) return false;
    if (node[BLOCK_SCOPED_SYMBOL]) {
      return true;
    }
    if (!isLetOrConst(node.kind) && node.kind !== "using") {
      return false;
    }
    return true;
  }

  function bool$2(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var globals = bool$2(browser$1$1.env["BABEL_8_BREAKING"]) ? requireGlobalsBABEL_8_BREAKINGFalse() : requireGlobalsBABEL_8_BREAKINGFalse();

  var _templateObject$l;
  var helper$1 = template$1.statement(_templateObject$l || (_templateObject$l = _taggedTemplateLiteralLoose(["\n  function CALL_SUPER(\n    _this,\n    derived,\n    args,\n  ) {\n    function isNativeReflectConstruct() {\n      if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\n      // core-js@3\n      if (Reflect.construct.sham) return false;\n\n      // Proxy can't be polyfilled. Every browser implemented\n      // proxies before or at the same time as Reflect.construct,\n      // so if they support Proxy they also support Reflect.construct.\n      if (typeof Proxy === \"function\") return true;\n\n      // Since Reflect.construct can't be properly polyfilled, some\n      // implementations (e.g. core-js@2) don't set the correct internal slots.\n      // Those polyfills don't allow us to subclass built-ins, so we need to\n      // use our fallback implementation.\n      try {\n        // If the internal slots aren't set, this throws an error similar to\n        //   TypeError: this is not a Boolean object.\n        return !Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}),);\n      } catch (e) {\n        return false;\n      }\n    }\n\n    // Super\n    derived = GET_PROTOTYPE_OF(derived);\n    return POSSIBLE_CONSTRUCTOR_RETURN(\n      _this,\n      isNativeReflectConstruct()\n        ? // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n          Reflect.construct(\n            derived,\n            args || [],\n            GET_PROTOTYPE_OF(_this).constructor,\n          )\n        : derived.apply(_this, args),\n    );\n  }\n"])));
  var helperIDs = new WeakMap();
  function addCallSuperHelper(file) {
    if (helperIDs.has(file)) {
      return (cloneNode$g || clone)(helperIDs.get(file));
    }
    try {
      return file.addHelper("callSuper");
    } catch (_unused) {}
    var id = file.scope.generateUidIdentifier("callSuper");
    helperIDs.set(file, id);
    var fn = helper$1({
      CALL_SUPER: id,
      GET_PROTOTYPE_OF: file.addHelper("getPrototypeOf"),
      POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper("possibleConstructorReturn")
    });
    file.path.unshiftContainer("body", [fn]);
    file.scope.registerDeclaration(file.path.get("body.0"));
    return cloneNode$g(id);
  }

  var _templateObject$k;
  function buildConstructor(classRef, constructorBody, node) {
    var func = functionDeclaration(cloneNode$g(classRef), [], constructorBody);
    inherits$3(func, node);
    return func;
  }
  function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) {
    var classState = {
      parent: undefined,
      scope: undefined,
      node: undefined,
      path: undefined,
      file: undefined,
      classId: undefined,
      classRef: undefined,
      superName: null,
      superReturns: [],
      isDerived: false,
      extendsNative: false,
      construct: undefined,
      constructorBody: undefined,
      userConstructor: undefined,
      userConstructorPath: undefined,
      hasConstructor: false,
      body: [],
      superThises: [],
      pushedInherits: false,
      pushedCreateClass: false,
      protoAlias: null,
      isLoose: false,
      dynamicKeys: new Map(),
      methods: {
        instance: {
          hasComputed: false,
          list: [],
          map: new Map()
        },
        "static": {
          hasComputed: false,
          list: [],
          map: new Map()
        }
      }
    };
    var setState = function setState(newState) {
      Object.assign(classState, newState);
    };
    var findThisesVisitor = environmentVisitor({
      ThisExpression: function ThisExpression(path) {
        classState.superThises.push(path);
      }
    });
    function createClassHelper(args) {
      return callExpression$c(classState.file.addHelper("createClass"), args);
    }
    function maybeCreateConstructor() {
      var classBodyPath = classState.path.get("body");
      for (var _iterator = _createForOfIteratorHelperLoose(classBodyPath.get("body")), _step; !(_step = _iterator()).done;) {
        var _path = _step.value;
        if (_path.isClassMethod({
          kind: "constructor"
        })) return;
      }
      var params, body;
      if (classState.isDerived) {
        var constructor = template$1.expression.ast(_templateObject$k || (_templateObject$k = _taggedTemplateLiteralLoose(["\n        (function () {\n          super(...arguments);\n        })\n      "])));
        params = constructor.params;
        body = constructor.body;
      } else {
        params = [];
        body = blockStatement$6([]);
      }
      classBodyPath.unshiftContainer("body", classMethod("constructor", identifier$e("constructor"), params, body));
    }
    function buildBody() {
      maybeCreateConstructor();
      pushBody();
      verifyConstructor();
      if (classState.userConstructor) {
        var _constructorBody$body;
        var constructorBody = classState.constructorBody,
          userConstructor = classState.userConstructor,
          construct = classState.construct;
        (_constructorBody$body = constructorBody.body).push.apply(_constructorBody$body, _toConsumableArray(userConstructor.body.body));
        inherits$3(construct, userConstructor);
        inherits$3(constructorBody, userConstructor.body);
      }
      pushDescriptors();
    }
    function pushBody() {
      var classBodyPaths = classState.path.get("body.body");
      var _loop = function _loop() {
        var path = _step2.value;
        var node = path.node;
        if (path.isClassProperty() || path.isClassPrivateProperty()) {
          throw path.buildCodeFrameError("Missing class properties transform.");
        }
        if (node.decorators) {
          throw path.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");
        }
        if (isClassMethod(node)) {
          var isConstructor = node.kind === "constructor";
          var replaceSupers = new ReplaceSupers({
            methodPath: path,
            objectRef: classState.classRef,
            superRef: classState.superName,
            constantSuper: assumptions.constantSuper,
            file: classState.file,
            refToPreserve: classState.classRef
          });
          replaceSupers.replace();
          var superReturns = [];
          path.traverse(environmentVisitor({
            ReturnStatement: function ReturnStatement(path) {
              if (!path.getFunctionParent().isArrowFunctionExpression()) {
                superReturns.push(path);
              }
            }
          }));
          if (isConstructor) {
            pushConstructor(superReturns, node, path);
          } else {
            path.ensureFunctionName(supportUnicodeId);
            var wrapped;
            if (node !== path.node) {
              wrapped = path.node;
              path.replaceWith(node);
            }
            pushMethod(node, wrapped);
          }
        }
      };
      for (var _iterator2 = _createForOfIteratorHelperLoose(classBodyPaths), _step2; !(_step2 = _iterator2()).done;) {
        _loop();
      }
    }
    function pushDescriptors() {
      pushInheritsToBody();
      var body = classState.body;
      var props = {
        instance: null,
        "static": null
      };
      for (var _iterator3 = _createForOfIteratorHelperLoose(["static", "instance"]), _step3; !(_step3 = _iterator3()).done;) {
        var placement = _step3.value;
        if (classState.methods[placement].list.length) {
          props[placement] = classState.methods[placement].list.map(function (desc) {
            var obj = objectExpression$3([objectProperty$1(identifier$e("key"), desc.key)]);
            for (var _iterator4 = _createForOfIteratorHelperLoose(["get", "set", "value"]), _step4; !(_step4 = _iterator4()).done;) {
              var kind = _step4.value;
              if (desc[kind] != null) {
                obj.properties.push(objectProperty$1(identifier$e(kind), desc[kind]));
              }
            }
            return obj;
          });
        }
      }
      if (props.instance || props["static"]) {
        var args = [cloneNode$g(classState.classRef), props.instance ? arrayExpression$1(props.instance) : nullLiteral$2(), props["static"] ? arrayExpression$1(props["static"]) : nullLiteral$2()];
        var lastNonNullIndex = 0;
        for (var i = 0; i < args.length; i++) {
          if (!isNullLiteral$1(args[i])) lastNonNullIndex = i;
        }
        args = args.slice(0, lastNonNullIndex + 1);
        body.push(returnStatement$3(createClassHelper(args)));
        classState.pushedCreateClass = true;
      }
    }
    function wrapSuperCall(bareSuper, superRef, thisRef, body) {
      var bareSuperNode = bareSuper.node;
      var call;
      if (assumptions.superIsCallableConstructor) {
        bareSuperNode.arguments.unshift(thisExpression$4());
        if (bareSuperNode.arguments.length === 2 && isSpreadElement$1(bareSuperNode.arguments[1]) && isIdentifier$f(bareSuperNode.arguments[1].argument, {
          name: "arguments"
        })) {
          bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;
          bareSuperNode.callee = memberExpression$a(cloneNode$g(superRef), identifier$e("apply"));
        } else {
          bareSuperNode.callee = memberExpression$a(cloneNode$g(superRef), identifier$e("call"));
        }
        call = logicalExpression$3("||", bareSuperNode, thisExpression$4());
      } else {
        var _bareSuperNode$argume;
        var args = [thisExpression$4(), cloneNode$g(classState.classRef)];
        if ((_bareSuperNode$argume = bareSuperNode.arguments) != null && _bareSuperNode$argume.length) {
          var bareSuperNodeArguments = bareSuperNode.arguments;
          if (bareSuperNodeArguments.length === 1 && isSpreadElement$1(bareSuperNodeArguments[0]) && isIdentifier$f(bareSuperNodeArguments[0].argument, {
            name: "arguments"
          })) {
            args.push(bareSuperNodeArguments[0].argument);
          } else {
            args.push(arrayExpression$1(bareSuperNodeArguments));
          }
        }
        call = callExpression$c(addCallSuperHelper(classState.file), args);
      }
      if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
        if (classState.superThises.length) {
          call = assignmentExpression$b("=", thisRef(), call);
        }
        bareSuper.parentPath.replaceWith(returnStatement$3(call));
      } else {
        bareSuper.replaceWith(assignmentExpression$b("=", thisRef(), call));
      }
    }
    function verifyConstructor() {
      if (!classState.isDerived) return;
      var path = classState.userConstructorPath;
      var body = path.get("body");
      var constructorBody = path.get("body");
      var maxGuaranteedSuperBeforeIndex = constructorBody.node.body.length;
      path.traverse(findThisesVisitor);
      var _thisRef = function thisRef() {
        var ref = path.scope.generateDeclaredUidIdentifier("this");
        maxGuaranteedSuperBeforeIndex++;
        _thisRef = function thisRef() {
          return cloneNode$g(ref);
        };
        return ref;
      };
      var buildAssertThisInitialized = function buildAssertThisInitialized() {
        return callExpression$c(classState.file.addHelper("assertThisInitialized"), [_thisRef()]);
      };
      var bareSupers = [];
      path.traverse(environmentVisitor({
        Super: function Super(path) {
          var node = path.node,
            parentPath = path.parentPath;
          if (parentPath.isCallExpression({
            callee: node
          })) {
            bareSupers.unshift(parentPath);
          }
        }
      }));
      var _loop2 = function _loop2() {
        var bareSuper = _bareSupers[_i];
        wrapSuperCall(bareSuper, classState.superName, _thisRef, body);
        if (maxGuaranteedSuperBeforeIndex >= 0) {
          var lastParentPath;
          bareSuper.find(function (parentPath) {
            if (parentPath === constructorBody) {
              maxGuaranteedSuperBeforeIndex = Math.min(maxGuaranteedSuperBeforeIndex, lastParentPath.key);
              return true;
            }
            if (parentPath.isLoop() || parentPath.isConditional() || parentPath.isArrowFunctionExpression()) {
              maxGuaranteedSuperBeforeIndex = -1;
              return true;
            }
            lastParentPath = parentPath;
          });
        }
      };
      for (var _i = 0, _bareSupers = bareSupers; _i < _bareSupers.length; _i++) {
        _loop2();
      }
      var guaranteedCalls = new Set();
      var _loop3 = function _loop3() {
        var thisPath = _step5.value;
        var node = thisPath.node,
          parentPath = thisPath.parentPath;
        if (parentPath.isMemberExpression({
          object: node
        })) {
          thisPath.replaceWith(_thisRef());
          return 1;
        }
        var thisIndex;
        thisPath.find(function (parentPath) {
          if (parentPath.parentPath === constructorBody) {
            thisIndex = parentPath.key;
            return true;
          }
        });
        var exprPath = thisPath.parentPath.isSequenceExpression() ? thisPath.parentPath : thisPath;
        if (exprPath.listKey === "arguments" && (exprPath.parentPath.isCallExpression() || exprPath.parentPath.isOptionalCallExpression())) {
          exprPath = exprPath.parentPath;
        } else {
          exprPath = null;
        }
        if (maxGuaranteedSuperBeforeIndex !== -1 && thisIndex > maxGuaranteedSuperBeforeIndex || guaranteedCalls.has(exprPath)) {
          thisPath.replaceWith(_thisRef());
        } else {
          if (exprPath) {
            guaranteedCalls.add(exprPath);
          }
          thisPath.replaceWith(buildAssertThisInitialized());
        }
      };
      for (var _iterator5 = _createForOfIteratorHelperLoose(classState.superThises), _step5; !(_step5 = _iterator5()).done;) {
        if (_loop3()) continue;
      }
      var wrapReturn;
      if (classState.isLoose) {
        wrapReturn = function wrapReturn(returnArg) {
          var thisExpr = buildAssertThisInitialized();
          return returnArg ? logicalExpression$3("||", returnArg, thisExpr) : thisExpr;
        };
      } else {
        wrapReturn = function wrapReturn(returnArg) {
          var returnParams = [_thisRef()];
          if (returnArg != null) {
            returnParams.push(returnArg);
          }
          return callExpression$c(classState.file.addHelper("possibleConstructorReturn"), returnParams);
        };
      }
      var bodyPaths = body.get("body");
      var guaranteedSuperBeforeFinish = maxGuaranteedSuperBeforeIndex !== -1 && maxGuaranteedSuperBeforeIndex < bodyPaths.length;
      if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {
        body.pushContainer("body", returnStatement$3(guaranteedSuperBeforeFinish ? _thisRef() : buildAssertThisInitialized()));
      }
      for (var _iterator6 = _createForOfIteratorHelperLoose(classState.superReturns), _step6; !(_step6 = _iterator6()).done;) {
        var returnPath = _step6.value;
        returnPath.get("argument").replaceWith(wrapReturn(returnPath.node.argument));
      }
    }
    function pushMethod(node, wrapped) {
      if (node.kind === "method") {
        if (processMethod(node)) return;
      }
      var placement = node["static"] ? "static" : "instance";
      var methods = classState.methods[placement];
      var descKey = node.kind === "method" ? "value" : node.kind;
      var key = isNumericLiteral(node.key) || isBigIntLiteral(node.key) ? stringLiteral$6(String(node.key.value)) : toComputedKey$2(node);
      methods.hasComputed = !isStringLiteral$5(key);
      var fn = wrapped != null ? wrapped : toExpression$1(node);
      var descriptor;
      if (!methods.hasComputed && methods.map.has(key.value)) {
        descriptor = methods.map.get(key.value);
        descriptor[descKey] = fn;
        if (descKey === "value") {
          descriptor.get = null;
          descriptor.set = null;
        } else {
          descriptor.value = null;
        }
      } else {
        var _descriptor;
        descriptor = (_descriptor = {
          key: key
        }, _descriptor[descKey] = fn, _descriptor);
        methods.list.push(descriptor);
        if (!methods.hasComputed) {
          methods.map.set(key.value, descriptor);
        }
      }
    }
    function processMethod(node) {
      if (assumptions.setClassMethods && !node.decorators) {
        var classRef = classState.classRef;
        if (!node["static"]) {
          insertProtoAliasOnce();
          classRef = classState.protoAlias;
        }
        var methodName = memberExpression$a(cloneNode$g(classRef), node.key, node.computed || isLiteral$5(node.key));
        var func = functionExpression$2(node.id, node.params, node.body, node.generator, node.async);
        inherits$3(func, node);
        var expr = expressionStatement$7(assignmentExpression$b("=", methodName, func));
        inheritsComments$1(expr, node);
        classState.body.push(expr);
        return true;
      }
      return false;
    }
    function insertProtoAliasOnce() {
      if (classState.protoAlias === null) {
        setState({
          protoAlias: classState.scope.generateUidIdentifier("proto")
        });
        var classProto = memberExpression$a(classState.classRef, identifier$e("prototype"));
        var protoDeclaration = variableDeclaration$6("var", [variableDeclarator$6(classState.protoAlias, classProto)]);
        classState.body.push(protoDeclaration);
      }
    }
    function pushConstructor(superReturns, method, path) {
      setState({
        userConstructorPath: path,
        userConstructor: method,
        hasConstructor: true,
        superReturns: superReturns
      });
      var construct = classState.construct;
      inheritsComments$1(construct, method);
      construct.params = method.params;
      inherits$3(construct.body, method.body);
      construct.body.directives = method.body.directives;
      if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) {
        pushDescriptors();
      }
      pushInheritsToBody();
    }
    function pushInheritsToBody() {
      if (!classState.isDerived || classState.pushedInherits) return;
      classState.pushedInherits = true;
      classState.body.unshift(expressionStatement$7(callExpression$c(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [cloneNode$g(classState.classRef), cloneNode$g(classState.superName)])));
    }
    function extractDynamicKeys() {
      var dynamicKeys = classState.dynamicKeys,
        node = classState.node,
        scope = classState.scope;
      for (var _iterator7 = _createForOfIteratorHelperLoose(node.body.body), _step7; !(_step7 = _iterator7()).done;) {
        var elem = _step7.value;
        if (!isClassMethod(elem) || !elem.computed) continue;
        if (scope.isPure(elem.key, true)) continue;
        var id = scope.generateUidIdentifierBasedOnNode(elem.key);
        dynamicKeys.set(id.name, elem.key);
        elem.key = id;
      }
    }
    function setupClosureParamsArgs() {
      var superName = classState.superName,
        dynamicKeys = classState.dynamicKeys;
      var closureParams = [];
      var closureArgs = [];
      if (classState.isDerived) {
        var arg = cloneNode$g(superName);
        if (classState.extendsNative) {
          arg = callExpression$c(classState.file.addHelper("wrapNativeSuper"), [arg]);
          annotateAsPure(arg);
        }
        var param = classState.scope.generateUidIdentifierBasedOnNode(superName);
        closureParams.push(param);
        closureArgs.push(arg);
        setState({
          superName: cloneNode$g(param)
        });
      }
      for (var _iterator8 = _createForOfIteratorHelperLoose(dynamicKeys), _step8; !(_step8 = _iterator8()).done;) {
        var _step8$value = _slicedToArray(_step8.value, 2),
          name = _step8$value[0],
          value = _step8$value[1];
        closureParams.push(identifier$e(name));
        closureArgs.push(value);
      }
      return {
        closureParams: closureParams,
        closureArgs: closureArgs
      };
    }
    function classTransformer(path, file, builtinClasses, isLoose) {
      setState({
        parent: path.parent,
        scope: path.scope,
        node: path.node,
        path: path,
        file: file,
        isLoose: isLoose
      });
      setState({
        classId: classState.node.id,
        classRef: classState.node.id ? identifier$e(classState.node.id.name) : classState.scope.generateUidIdentifier("class"),
        superName: classState.node.superClass,
        isDerived: !!classState.node.superClass,
        constructorBody: blockStatement$6([])
      });
      setState({
        extendsNative: isIdentifier$f(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true)
      });
      var classRef = classState.classRef,
        node = classState.node,
        constructorBody = classState.constructorBody;
      setState({
        construct: buildConstructor(classRef, constructorBody, node)
      });
      extractDynamicKeys();
      var body = classState.body;
      var _setupClosureParamsAr = setupClosureParamsArgs(),
        closureParams = _setupClosureParamsAr.closureParams,
        closureArgs = _setupClosureParamsAr.closureArgs;
      buildBody();
      if (!assumptions.noClassCalls) {
        constructorBody.body.unshift(expressionStatement$7(callExpression$c(classState.file.addHelper("classCallCheck"), [thisExpression$4(), cloneNode$g(classState.classRef)])));
      }
      var isStrict = path.isInStrictMode();
      var constructorOnly = body.length === 0;
      if (constructorOnly && !isStrict) {
        for (var _iterator9 = _createForOfIteratorHelperLoose(classState.construct.params), _step9; !(_step9 = _iterator9()).done;) {
          var param = _step9.value;
          if (!isIdentifier$f(param)) {
            constructorOnly = false;
            break;
          }
        }
      }
      var directives = constructorOnly ? classState.construct.body.directives : [];
      if (!isStrict) {
        directives.push(directive(directiveLiteral("use strict")));
      }
      if (constructorOnly) {
        var expr = toExpression$1(classState.construct);
        return classState.isLoose ? expr : createClassHelper([expr]);
      }
      if (!classState.pushedCreateClass) {
        body.push(returnStatement$3(classState.isLoose ? cloneNode$g(classState.classRef) : createClassHelper([cloneNode$g(classState.classRef)])));
      }
      body.unshift(classState.construct);
      var container = arrowFunctionExpression$4(closureParams, blockStatement$6(body, directives));
      return callExpression$c(container, closureArgs);
    }
    return classTransformer(path, file, builtinClasses, isLoose);
  }

  var getBuiltinClasses = function getBuiltinClasses(category) {
    return Object.keys(globals[category]).filter(function (name) {
      return /^[A-Z]/.test(name);
    });
  };
  var builtinClasses = new Set([].concat(_toConsumableArray(getBuiltinClasses("builtin")), _toConsumableArray(getBuiltinClasses("browser"))));
  var _transformClasses = declare(function (api, options) {
    var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
    api.assertVersion("*");
    var _options$loose = options.loose,
      loose = _options$loose === void 0 ? false : _options$loose;
    var setClassMethods = (_api$assumption = api.assumption("setClassMethods")) != null ? _api$assumption : loose;
    var constantSuper = (_api$assumption2 = api.assumption("constantSuper")) != null ? _api$assumption2 : loose;
    var superIsCallableConstructor = (_api$assumption3 = api.assumption("superIsCallableConstructor")) != null ? _api$assumption3 : loose;
    var noClassCalls = (_api$assumption4 = api.assumption("noClassCalls")) != null ? _api$assumption4 : loose;
    var supportUnicodeId = !isRequired("transform-unicode-escapes", api.targets());
    var VISITED = new WeakSet();
    return {
      name: "transform-classes",
      visitor: {
        ExportDefaultDeclaration: function ExportDefaultDeclaration(path) {
          if (!path.get("declaration").isClassDeclaration()) return;
          path.splitExportDeclaration();
        },
        ClassDeclaration: function ClassDeclaration(path) {
          var node = path.node;
          var ref = node.id || path.scope.generateUidIdentifier("class");
          path.replaceWith(variableDeclaration$6("let", [variableDeclarator$6(ref, toExpression$1(node))]));
        },
        ClassExpression: function ClassExpression(path, state) {
          var node = path.node;
          if (VISITED.has(node)) return;
          var replacement = path.ensureFunctionName(supportUnicodeId);
          if (replacement && replacement.node !== node) return;
          VISITED.add(node);
          var _path$replaceWith = path.replaceWith(transformClass(path, state.file, builtinClasses, loose, {
              setClassMethods: setClassMethods,
              constantSuper: constantSuper,
              superIsCallableConstructor: superIsCallableConstructor,
              noClassCalls: noClassCalls
            }, supportUnicodeId)),
            _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
            replacedPath = _path$replaceWith2[0];
          if (replacedPath.isCallExpression()) {
            annotateAsPure(replacedPath);
            var callee = replacedPath.get("callee");
            if (callee.isArrowFunctionExpression()) {
              callee.arrowFunctionToExpression();
            }
          }
        }
      }
    };
  });

  var _templateObject$j;
  {
    var DefineAccessorHelper = template$1.expression.ast(_templateObject$j || (_templateObject$j = _taggedTemplateLiteralLoose(["\n    function (type, obj, key, fn) {\n      var desc = { configurable: true, enumerable: true };\n      desc[type] = fn;\n      return Object.defineProperty(obj, key, desc);\n    }\n  "])));
    DefineAccessorHelper._compact = true;
  }
  var _transformComputedProperties = declare(function (api, options) {
    var _api$assumption;
    api.assertVersion("*");
    var setComputedProperties = (_api$assumption = api.assumption("setComputedProperties")) != null ? _api$assumption : options.loose;
    var pushComputedProps = setComputedProperties ? pushComputedPropsLoose : pushComputedPropsSpec;
    function buildDefineAccessor(state, obj, prop) {
      var type = prop.kind;
      var key = !prop.computed && isIdentifier$f(prop.key) ? stringLiteral$6(prop.key.name) : prop.key;
      var fn = getValue(prop);
      {
        var helper;
        if (state.availableHelper("defineAccessor")) {
          helper = state.addHelper("defineAccessor");
        } else {
          var file = state.file;
          helper = file.get("fallbackDefineAccessorHelper");
          if (!helper) {
            var id = file.scope.generateUidIdentifier("defineAccessor");
            file.scope.push({
              id: id,
              init: DefineAccessorHelper
            });
            file.set("fallbackDefineAccessorHelper", helper = id);
          }
          helper = cloneNode$g(helper);
        }
        return callExpression$c(helper, [stringLiteral$6(type), obj, key, fn]);
      }
    }
    function getValue(prop) {
      if (isObjectProperty$3(prop)) {
        return prop.value;
      } else if (isObjectMethod(prop)) {
        return functionExpression$2(null, prop.params, prop.body, prop.generator, prop.async);
      }
    }
    function pushAssign(objId, prop, body) {
      body.push(expressionStatement$7(assignmentExpression$b("=", memberExpression$a(cloneNode$g(objId), prop.key, prop.computed || isLiteral$5(prop.key)), getValue(prop))));
    }
    function pushComputedPropsLoose(info) {
      var computedProps = info.computedProps,
        state = info.state,
        initPropExpression = info.initPropExpression,
        objId = info.objId,
        body = info.body;
      for (var _iterator = _createForOfIteratorHelperLoose(computedProps), _step; !(_step = _iterator()).done;) {
        var prop = _step.value;
        if (isObjectMethod(prop) && (prop.kind === "get" || prop.kind === "set")) {
          if (computedProps.length === 1) {
            return buildDefineAccessor(state, initPropExpression, prop);
          } else {
            body.push(expressionStatement$7(buildDefineAccessor(state, cloneNode$g(objId), prop)));
          }
        } else {
          pushAssign(cloneNode$g(objId), prop, body);
        }
      }
    }
    function pushComputedPropsSpec(info) {
      var objId = info.objId,
        body = info.body,
        computedProps = info.computedProps,
        state = info.state;
      var CHUNK_LENGTH_CAP = 10;
      var currentChunk = null;
      var computedPropsChunks = [];
      for (var _iterator2 = _createForOfIteratorHelperLoose(computedProps), _step2; !(_step2 = _iterator2()).done;) {
        var _prop = _step2.value;
        if (!currentChunk || currentChunk.length === CHUNK_LENGTH_CAP) {
          currentChunk = [];
          computedPropsChunks.push(currentChunk);
        }
        currentChunk.push(_prop);
      }
      for (var _i = 0, _computedPropsChunks = computedPropsChunks; _i < _computedPropsChunks.length; _i++) {
        var chunk = _computedPropsChunks[_i];
        var single = computedPropsChunks.length === 1;
        var node = single ? info.initPropExpression : cloneNode$g(objId);
        for (var _iterator3 = _createForOfIteratorHelperLoose(chunk), _step3; !(_step3 = _iterator3()).done;) {
          var prop = _step3.value;
          if (isObjectMethod(prop) && (prop.kind === "get" || prop.kind === "set")) {
            node = buildDefineAccessor(info.state, node, prop);
          } else {
            node = callExpression$c(state.addHelper("defineProperty"), [node, toComputedKey$2(prop), getValue(prop)]);
          }
        }
        if (single) return node;
        body.push(expressionStatement$7(node));
      }
    }
    return {
      name: "transform-computed-properties",
      visitor: {
        ObjectExpression: {
          exit: function exit(path, state) {
            var node = path.node,
              parent = path.parent,
              scope = path.scope;
            var hasComputed = false;
            for (var _iterator4 = _createForOfIteratorHelperLoose(node.properties), _step4; !(_step4 = _iterator4()).done;) {
              var prop = _step4.value;
              hasComputed = prop.computed === true;
              if (hasComputed) break;
            }
            if (!hasComputed) return;
            var initProps = [];
            var computedProps = [];
            var foundComputed = false;
            for (var _iterator5 = _createForOfIteratorHelperLoose(node.properties), _step5; !(_step5 = _iterator5()).done;) {
              var _prop2 = _step5.value;
              if (isSpreadElement$1(_prop2)) {
                continue;
              }
              if (_prop2.computed) {
                foundComputed = true;
              }
              if (foundComputed) {
                computedProps.push(_prop2);
              } else {
                initProps.push(_prop2);
              }
            }
            var objId = scope.generateUidIdentifierBasedOnNode(parent);
            var initPropExpression = objectExpression$3(initProps);
            var body = [];
            body.push(variableDeclaration$6("var", [variableDeclarator$6(objId, initPropExpression)]));
            var single = pushComputedProps({
              scope: scope,
              objId: objId,
              body: body,
              computedProps: computedProps,
              initPropExpression: initPropExpression,
              state: state
            });
            if (single) {
              path.replaceWith(single);
            } else {
              if (setComputedProperties) {
                body.push(expressionStatement$7(cloneNode$g(objId)));
              }
              path.replaceWithMultiple(body);
            }
          }
        }
      }
    };
  });

  var _transformDotallRegex = declare(function (api) {
    api.assertVersion("*");
    return createRegExpFeaturePlugin({
      name: "transform-dotall-regex",
      feature: "dotAllFlag"
    });
  });

  function getName(key) {
    if (isIdentifier$f(key)) {
      return key.name;
    }
    return key.value.toString();
  }
  var _transformDuplicateKeys = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-duplicate-keys",
      visitor: {
        ObjectExpression: function ObjectExpression(path) {
          var node = path.node;
          var plainProps = node.properties.filter(function (prop) {
            return !isSpreadElement$1(prop) && !prop.computed;
          });
          var alreadySeenData = Object.create(null);
          var alreadySeenGetters = Object.create(null);
          var alreadySeenSetters = Object.create(null);
          for (var _iterator = _createForOfIteratorHelperLoose(plainProps), _step; !(_step = _iterator()).done;) {
            var prop = _step.value;
            var name = getName(prop.key);
            var isDuplicate = false;
            switch (prop.kind) {
              case "get":
                if (alreadySeenData[name] || alreadySeenGetters[name]) {
                  isDuplicate = true;
                }
                alreadySeenGetters[name] = true;
                break;
              case "set":
                if (alreadySeenData[name] || alreadySeenSetters[name]) {
                  isDuplicate = true;
                }
                alreadySeenSetters[name] = true;
                break;
              default:
                if (alreadySeenData[name] || alreadySeenGetters[name] || alreadySeenSetters[name]) {
                  isDuplicate = true;
                }
                alreadySeenData[name] = true;
            }
            if (isDuplicate) {
              prop.computed = true;
              prop.key = stringLiteral$6(name);
            }
          }
        }
      }
    };
  });

  var assignmentExpression$1 = assignmentExpression$b,
    cloneNode = cloneNode$g,
    isIdentifier$1 = isIdentifier$f,
    isLiteral = isLiteral$5,
    isMemberExpression = isMemberExpression$8,
    isPrivateName = isPrivateName$3,
    isPureish = isPureish$2,
    isSuper = isSuper$3,
    memberExpression$1 = memberExpression$a,
    toComputedKey = toComputedKey$2;
  function getObjRef(node, nodes, scope) {
    var ref;
    if (isIdentifier$1(node)) {
      if (scope.hasBinding(node.name)) {
        return node;
      } else {
        ref = node;
      }
    } else if (isMemberExpression(node)) {
      ref = node.object;
      if (isSuper(ref) || isIdentifier$1(ref) && scope.hasBinding(ref.name)) {
        return ref;
      }
    } else {
      throw new Error("We can't explode this node type " + node["type"]);
    }
    var temp = scope.generateUidIdentifierBasedOnNode(ref);
    scope.push({
      id: temp
    });
    nodes.push(assignmentExpression$1("=", cloneNode(temp), cloneNode(ref)));
    return temp;
  }
  function getPropRef(node, nodes, scope) {
    var prop = node.property;
    if (isPrivateName(prop)) {
      throw new Error("We can't generate property ref for private name, please install `@babel/plugin-transform-class-properties`");
    }
    var key = toComputedKey(node, prop);
    if (isLiteral(key) && isPureish(key)) return key;
    var temp = scope.generateUidIdentifierBasedOnNode(prop);
    scope.push({
      id: temp
    });
    nodes.push(assignmentExpression$1("=", cloneNode(temp), cloneNode(prop)));
    return temp;
  }
  function explode(node, nodes, scope) {
    var obj = getObjRef(node, nodes, scope);
    var ref, uid;
    if (isIdentifier$1(node)) {
      ref = cloneNode(node);
      uid = obj;
    } else {
      var prop = getPropRef(node, nodes, scope);
      var computed = node.computed || isLiteral(prop);
      uid = memberExpression$1(cloneNode(obj), cloneNode(prop), computed);
      ref = memberExpression$1(cloneNode(obj), cloneNode(prop), computed);
    }
    return {
      uid: uid,
      ref: ref
    };
  }

  var assignmentExpression = assignmentExpression$b,
    sequenceExpression = sequenceExpression$8;
  function build (opts) {
    var build = opts.build,
      operator = opts.operator;
    var visitor = {
      AssignmentExpression: function AssignmentExpression(path) {
        var node = path.node,
          scope = path.scope;
        if (node.operator !== operator + "=") return;
        var nodes = [];
        var exploded = explode(node.left, nodes, scope);
        nodes.push(assignmentExpression("=", exploded.ref, build(exploded.uid, node.right)));
        path.replaceWith(sequenceExpression(nodes));
      },
      BinaryExpression: function BinaryExpression(path) {
        var node = path.node;
        if (node.operator === operator) {
          path.replaceWith(build(node.left, node.right));
        }
      }
    };
    return visitor;
  }

  var transformExponentialOperator = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-exponentiation-operator",
      visitor: build({
        operator: "**",
        build: function build(left, right) {
          return callExpression$c(memberExpression$a(identifier$e("Math"), identifier$e("pow")), [left, right]);
        }
      })
    };
  });

  var transformFlowComments = declare(function (api) {
    api.assertVersion("*");
    function commentFromString(comment) {
      return typeof comment === "string" ? {
        type: "CommentBlock",
        value: comment
      } : comment;
    }
    function attachComment(_ref) {
      var _toPath;
      var ofPath = _ref.ofPath,
        toPath = _ref.toPath,
        _ref$where = _ref.where,
        where = _ref$where === void 0 ? "trailing" : _ref$where,
        _ref$optional = _ref.optional,
        optional = _ref$optional === void 0 ? false : _ref$optional,
        _ref$comments = _ref.comments,
        comments = _ref$comments === void 0 ? generateComment(ofPath, optional) : _ref$comments,
        _ref$keepType = _ref.keepType,
        keepType = _ref$keepType === void 0 ? false : _ref$keepType;
      if (!((_toPath = toPath) != null && _toPath.node)) {
        toPath = ofPath.getPrevSibling();
        where = "trailing";
      }
      if (!toPath.node) {
        toPath = ofPath.getNextSibling();
        where = "leading";
      }
      if (!toPath.node) {
        toPath = ofPath.parentPath;
        where = "inner";
      }
      if (!Array.isArray(comments)) {
        comments = [comments];
      }
      var newComments = comments.map(commentFromString);
      if (!keepType && ofPath != null && ofPath.node) {
        var node = ofPath.node;
        var parent = ofPath.parentPath;
        var prev = ofPath.getPrevSibling();
        var next = ofPath.getNextSibling();
        var isSingleChild = !(prev.node || next.node);
        var leading = node.leadingComments;
        var trailing = node.trailingComments;
        if (isSingleChild && leading) {
          parent.addComments("inner", leading);
        }
        toPath.addComments(where, newComments);
        ofPath.remove();
        if (isSingleChild && trailing) {
          parent.addComments("inner", trailing);
        }
      } else {
        toPath.addComments(where, newComments);
      }
    }
    function wrapInFlowComment(path) {
      attachComment({
        ofPath: path,
        comments: generateComment(path, path.parent.optional)
      });
    }
    function generateComment(path, optional) {
      var comment = path.getSource().replace(/\*-\//g, "*-ESCAPED/").replace(/\*\//g, "*-/");
      if (optional) comment = "?" + comment;
      if (comment[0] !== ":") comment = ":: " + comment;
      return comment;
    }
    function isTypeImport(importKind) {
      return importKind === "type" || importKind === "typeof";
    }
    return {
      name: "transform-flow-comments",
      inherits: syntaxFlow,
      visitor: {
        TypeCastExpression: function TypeCastExpression(path) {
          var node = path.node;
          attachComment({
            ofPath: path.get("typeAnnotation"),
            toPath: path.get("expression"),
            keepType: true
          });
          path.replaceWith(parenthesizedExpression(node.expression));
        },
        Identifier: function Identifier(path) {
          if (path.parentPath.isFlow()) return;
          var node = path.node;
          if (node.typeAnnotation) {
            attachComment({
              ofPath: path.get("typeAnnotation"),
              toPath: path,
              optional: node.optional || node.typeAnnotation.optional
            });
            if (node.optional) {
              node.optional = false;
            }
          } else if (node.optional) {
            attachComment({
              toPath: path,
              comments: ":: ?"
            });
            node.optional = false;
          }
        },
        AssignmentPattern: {
          exit: function exit(_ref2) {
            var node = _ref2.node;
            var left = node.left;
            if (left.optional) {
              left.optional = false;
            }
          }
        },
        Function: function Function(path) {
          if (path.isDeclareFunction()) return;
          var node = path.node;
          if (node.typeParameters) {
            attachComment({
              ofPath: path.get("typeParameters"),
              toPath: path.get("id"),
              optional: node.typeParameters.optional
            });
          }
          if (node.returnType) {
            attachComment({
              ofPath: path.get("returnType"),
              toPath: path.get("body"),
              where: "leading",
              optional: node.returnType.typeAnnotation.optional
            });
          }
        },
        ClassProperty: function ClassProperty(path) {
          var node = path.node;
          if (!node.value) {
            wrapInFlowComment(path);
          } else if (node.typeAnnotation) {
            attachComment({
              ofPath: path.get("typeAnnotation"),
              toPath: path.get("key"),
              optional: node.typeAnnotation.optional
            });
          }
        },
        ExportNamedDeclaration: function ExportNamedDeclaration(path) {
          var node = path.node;
          if (node.exportKind !== "type" && !isFlow$1(node.declaration)) {
            return;
          }
          wrapInFlowComment(path);
        },
        ImportDeclaration: function ImportDeclaration(path) {
          var node = path.node;
          if (isTypeImport(node.importKind)) {
            wrapInFlowComment(path);
            return;
          }
          var typeSpecifiers = node.specifiers.filter(function (specifier) {
            return specifier.type === "ImportSpecifier" && isTypeImport(specifier.importKind);
          });
          var nonTypeSpecifiers = node.specifiers.filter(function (specifier) {
            return specifier.type !== "ImportSpecifier" || !isTypeImport(specifier.importKind);
          });
          node.specifiers = nonTypeSpecifiers;
          if (typeSpecifiers.length > 0) {
            var typeImportNode = cloneNode$g(node);
            typeImportNode.specifiers = typeSpecifiers;
            var comment = ":: " + generate$1(typeImportNode).code;
            if (nonTypeSpecifiers.length > 0) {
              attachComment({
                toPath: path,
                comments: comment
              });
            } else {
              attachComment({
                ofPath: path,
                comments: comment
              });
            }
          }
        },
        ObjectPattern: function ObjectPattern(path) {
          var node = path.node;
          if (node.typeAnnotation) {
            attachComment({
              ofPath: path.get("typeAnnotation"),
              toPath: path,
              optional: node.optional || node.typeAnnotation.optional
            });
          }
        },
        Flow: function (_Flow) {
          function Flow(_x) {
            return _Flow.apply(this, arguments);
          }
          Flow.toString = function () {
            return _Flow.toString();
          };
          return Flow;
        }(function (path) {
          wrapInFlowComment(path);
        }),
        Class: function Class(path) {
          var node = path.node;
          var comments = [];
          if (node.typeParameters) {
            var typeParameters = path.get("typeParameters");
            comments.push(generateComment(typeParameters, node.typeParameters.optional));
            var trailingComments = node.typeParameters.trailingComments;
            if (trailingComments) {
              var _comments;
              (_comments = comments).push.apply(_comments, _toConsumableArray(trailingComments));
            }
            typeParameters.remove();
          }
          if (node.superClass) {
            if (comments.length > 0) {
              attachComment({
                toPath: path.get("id"),
                comments: comments
              });
              comments = [];
            }
            if (node.superTypeParameters) {
              var superTypeParameters = path.get("superTypeParameters");
              comments.push(generateComment(superTypeParameters, superTypeParameters.node.optional));
              superTypeParameters.remove();
            }
          }
          if (node["implements"]) {
            var impls = path.get("implements");
            var comment = "implements " + impls.map(function (impl) {
              return generateComment(impl).replace(/^:: /, "");
            }).join(", ");
            delete node["implements"];
            if (comments.length === 1) {
              comments[0] += " " + comment;
            } else {
              comments.push(":: " + comment);
            }
          }
          if (comments.length > 0) {
            attachComment({
              toPath: path.get("body"),
              where: "leading",
              comments: comments
            });
          }
        }
      }
    };
  });

  var transformFlowStripTypes = declare(function (api, opts) {
    api.assertVersion("*");
    var FLOW_DIRECTIVE = /@flow(?:\s+(?:strict(?:-local)?|weak))?|@noflow/;
    var skipStrip = false;
    var _opts$requireDirectiv = opts.requireDirective,
      requireDirective = _opts$requireDirectiv === void 0 ? false : _opts$requireDirectiv;
    {
      var _opts$allowDeclareFie = opts.allowDeclareFields,
        allowDeclareFields = _opts$allowDeclareFie === void 0 ? false : _opts$allowDeclareFie;
    }
    return {
      name: "transform-flow-strip-types",
      inherits: syntaxFlow,
      visitor: {
        Program: function Program(path, _ref) {
          var comments = _ref.file.ast.comments;
          skipStrip = false;
          var directiveFound = false;
          if (comments) {
            for (var _iterator = _createForOfIteratorHelperLoose(comments), _step; !(_step = _iterator()).done;) {
              var comment = _step.value;
              if (FLOW_DIRECTIVE.test(comment.value)) {
                directiveFound = true;
                comment.value = comment.value.replace(FLOW_DIRECTIVE, "");
                if (!comment.value.replace(/\*/g, "").trim()) {
                  comment.ignore = true;
                }
              }
            }
          }
          if (!directiveFound && requireDirective) {
            skipStrip = true;
          }
        },
        ImportDeclaration: function ImportDeclaration(path) {
          if (skipStrip) return;
          if (!path.node.specifiers.length) return;
          var typeCount = 0;
          path.node.specifiers.forEach(function (_ref2) {
            var importKind = _ref2.importKind;
            if (importKind === "type" || importKind === "typeof") {
              typeCount++;
            }
          });
          if (typeCount === path.node.specifiers.length) {
            path.remove();
          }
        },
        Flow: function Flow(path) {
          if (skipStrip) {
            throw path.buildCodeFrameError("A @flow directive is required when using Flow annotations with " + "the `requireDirective` option.");
          }
          path.remove();
        },
        ClassPrivateProperty: function ClassPrivateProperty(path) {
          if (skipStrip) return;
          path.node.typeAnnotation = null;
        },
        Class: function Class(path) {
          if (skipStrip) return;
          path.node["implements"] = null;
          path.get("body.body").forEach(function (child) {
            if (child.isClassProperty()) {
              var node = child.node;
              {
                if (!allowDeclareFields && node.declare) {
                  throw child.buildCodeFrameError("The 'declare' modifier is only allowed when the " + "'allowDeclareFields' option of " + "@babel/plugin-transform-flow-strip-types or " + "@babel/preset-flow is enabled.");
                }
              }
              if (node.declare) {
                child.remove();
              } else {
                {
                  if (!allowDeclareFields && !node.value && !node.decorators) {
                    child.remove();
                    return;
                  }
                }
                node.variance = null;
                node.typeAnnotation = null;
              }
            }
          });
        },
        AssignmentPattern: function AssignmentPattern(_ref3) {
          var node = _ref3.node;
          if (skipStrip) return;
          if (node.left.optional) {
            node.left.optional = false;
          }
        },
        Function: function Function(_ref4) {
          var node = _ref4.node;
          if (skipStrip) return;
          if (node.params.length > 0 && node.params[0].type === "Identifier" && node.params[0].name === "this") {
            node.params.shift();
          }
          for (var i = 0; i < node.params.length; i++) {
            var param = node.params[i];
            if (param.type === "AssignmentPattern") {
              param = param.left;
            }
            if (param.optional) {
              param.optional = false;
            }
          }
          if (!isMethod$1(node)) {
            node.predicate = null;
          }
        },
        TypeCastExpression: function TypeCastExpression(path) {
          if (skipStrip) return;
          var node = path.node;
          do {
            node = node.expression;
          } while (isTypeCastExpression$1(node));
          path.replaceWith(node);
        },
        CallExpression: function CallExpression(_ref5) {
          var node = _ref5.node;
          if (skipStrip) return;
          node.typeArguments = null;
        },
        OptionalCallExpression: function OptionalCallExpression(_ref6) {
          var node = _ref6.node;
          if (skipStrip) return;
          node.typeArguments = null;
        },
        NewExpression: function NewExpression(_ref7) {
          var node = _ref7.node;
          if (skipStrip) return;
          node.typeArguments = null;
        }
      }
    };
  });

  function transformWithoutHelper(loose, path, state) {
    var _block$body;
    var pushComputedProps = loose ? pushComputedPropsLoose : pushComputedPropsSpec;
    var node = path.node;
    var build = pushComputedProps(path, state);
    var declar = build.declar;
    var loop = build.loop;
    var block = loop.body;
    path.ensureBlock();
    if (declar) {
      block.body.push(declar);
    }
    (_block$body = block.body).push.apply(_block$body, _toConsumableArray(node.body.body));
    inherits$3(loop, node);
    inherits$3(loop.body, node.body);
    if (build.replaceParent) {
      path.parentPath.replaceWithMultiple(build.node);
      path.remove();
    } else {
      path.replaceWithMultiple(build.node);
    }
  }
  var buildForOfLoose = template$1.statement("\n  for (var LOOP_OBJECT = OBJECT,\n          IS_ARRAY = Array.isArray(LOOP_OBJECT),\n          INDEX = 0,\n          LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n    INTERMEDIATE;\n    if (IS_ARRAY) {\n      if (INDEX >= LOOP_OBJECT.length) break;\n      ID = LOOP_OBJECT[INDEX++];\n    } else {\n      INDEX = LOOP_OBJECT.next();\n      if (INDEX.done) break;\n      ID = INDEX.value;\n    }\n  }\n");
  var buildForOf = template$1.statements("\n  var ITERATOR_COMPLETION = true;\n  var ITERATOR_HAD_ERROR_KEY = false;\n  var ITERATOR_ERROR_KEY = undefined;\n  try {\n    for (\n      var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n      !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n      ITERATOR_COMPLETION = true\n    ) {}\n  } catch (err) {\n    ITERATOR_HAD_ERROR_KEY = true;\n    ITERATOR_ERROR_KEY = err;\n  } finally {\n    try {\n      if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n        ITERATOR_KEY.return();\n      }\n    } finally {\n      if (ITERATOR_HAD_ERROR_KEY) {\n        throw ITERATOR_ERROR_KEY;\n      }\n    }\n  }\n");
  function pushComputedPropsLoose(path, state) {
    var node = path.node,
      scope = path.scope,
      parent = path.parent;
    var left = node.left;
    var declar, id, intermediate;
    if (isIdentifier$f(left) || isPattern(left) || isMemberExpression$8(left)) {
      id = left;
      intermediate = null;
    } else if (isVariableDeclaration$3(left)) {
      id = scope.generateUidIdentifier("ref");
      declar = variableDeclaration$6(left.kind, [variableDeclarator$6(left.declarations[0].id, identifier$e(id.name))]);
      intermediate = variableDeclaration$6("var", [variableDeclarator$6(identifier$e(id.name))]);
    } else {
      throw state.buildCodeFrameError(left, "Unknown node type " + left.type + " in ForStatement");
    }
    var iteratorKey = scope.generateUidIdentifier("iterator");
    var isArrayKey = scope.generateUidIdentifier("isArray");
    var loop = buildForOfLoose({
      LOOP_OBJECT: iteratorKey,
      IS_ARRAY: isArrayKey,
      OBJECT: node.right,
      INDEX: scope.generateUidIdentifier("i"),
      ID: id,
      INTERMEDIATE: intermediate
    });
    var isLabeledParent = isLabeledStatement(parent);
    var labeled;
    if (isLabeledParent) {
      labeled = labeledStatement(parent.label, loop);
    }
    return {
      replaceParent: isLabeledParent,
      declar: declar,
      node: labeled || loop,
      loop: loop
    };
  }
  function pushComputedPropsSpec(path, state) {
    var node = path.node,
      scope = path.scope,
      parent = path.parent;
    var left = node.left;
    var declar;
    var stepKey = scope.generateUid("step");
    var stepValue = memberExpression$a(identifier$e(stepKey), identifier$e("value"));
    if (isIdentifier$f(left) || isPattern(left) || isMemberExpression$8(left)) {
      declar = expressionStatement$7(assignmentExpression$b("=", left, stepValue));
    } else if (isVariableDeclaration$3(left)) {
      declar = variableDeclaration$6(left.kind, [variableDeclarator$6(left.declarations[0].id, stepValue)]);
    } else {
      throw state.buildCodeFrameError(left, "Unknown node type " + left.type + " in ForStatement");
    }
    var template = buildForOf({
      ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
      ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"),
      ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
      ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
      STEP_KEY: identifier$e(stepKey),
      OBJECT: node.right
    });
    var isLabeledParent = isLabeledStatement(parent);
    var tryBody = template[3].block.body;
    var loop = tryBody[0];
    if (isLabeledParent) {
      tryBody[0] = labeledStatement(parent.label, loop);
    }
    return {
      replaceParent: isLabeledParent,
      declar: declar,
      loop: loop,
      node: template
    };
  }

  var _templateObject$i, _templateObject2$b, _templateObject3$7;
  function buildLoopBody(path, declar, newBody) {
    var block;
    var bodyPath = path.get("body");
    var body = newBody != null ? newBody : bodyPath.node;
    if (isBlockStatement$3(body) && Object.keys(path.getBindingIdentifiers()).some(function (id) {
      return bodyPath.scope.hasOwnBinding(id);
    })) {
      block = blockStatement$6([declar, body]);
    } else {
      block = toBlock(body);
      block.body.unshift(declar);
    }
    return block;
  }
  var _transformForOf = declare(function (api, options) {
    var _options$assumeArray, _options$allowArrayLi, _api$assumption;
    api.assertVersion("*");
    {
      var assumeArray = options.assumeArray,
        allowArrayLike = options.allowArrayLike,
        loose = options.loose;
      if (loose === true && assumeArray === true) {
        throw new Error("The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of");
      }
      if (assumeArray === true && allowArrayLike === true) {
        throw new Error("The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of");
      }
      {
        if (allowArrayLike && /^7\.\d\./.test(api.version)) {
          throw new Error("The allowArrayLike is only supported when using @babel/core@^7.10.0");
        }
      }
    }
    var iterableIsArray = (_options$assumeArray = options.assumeArray) != null ? _options$assumeArray : !options.loose && api.assumption("iterableIsArray");
    var arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
    var skipIteratorClosing = (_api$assumption = api.assumption("skipForOfIteratorClosing")) != null ? _api$assumption : options.loose;
    if (iterableIsArray && arrayLikeIsIterable) {
      throw new Error("The \"iterableIsArray\" and \"arrayLikeIsIterable\" assumptions are not compatible.");
    }
    if (iterableIsArray) {
      return {
        name: "transform-for-of",
        visitor: {
          ForOfStatement: function ForOfStatement(path) {
            var scope = path.scope;
            var _path$node = path.node,
              left = _path$node.left,
              isAwait = _path$node["await"];
            if (isAwait) {
              return;
            }
            var right = skipTransparentExprWrapperNodes(path.node.right);
            var i = scope.generateUidIdentifier("i");
            var array = scope.maybeGenerateMemoised(right, true);
            if (!array && isIdentifier$f(right) && path.get("body").scope.hasOwnBinding(right.name)) {
              array = scope.generateUidIdentifier("arr");
            }
            var inits = [variableDeclarator$6(i, numericLiteral$6(0))];
            if (array) {
              inits.push(variableDeclarator$6(array, right));
            } else {
              array = right;
            }
            var item = memberExpression$a(cloneNode$g(array), cloneNode$g(i), true);
            var assignment;
            if (isVariableDeclaration$3(left)) {
              assignment = left;
              assignment.declarations[0].init = item;
            } else {
              assignment = expressionStatement$7(assignmentExpression$b("=", left, item));
            }
            path.replaceWith(forStatement(variableDeclaration$6("let", inits), binaryExpression$5("<", cloneNode$g(i), memberExpression$a(cloneNode$g(array), identifier$e("length"))), updateExpression$1("++", cloneNode$g(i)), buildLoopBody(path, assignment)));
          }
        }
      };
    }
    var buildForOfArray = template$1(_templateObject$i || (_templateObject$i = _taggedTemplateLiteralLoose(["\n    for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;\n  "])));
    var buildForOfNoIteratorClosing = template$1.statements(_templateObject2$b || (_templateObject2$b = _taggedTemplateLiteralLoose(["\n    for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n        !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;\n  "])));
    var buildForOf = template$1.statements(_templateObject3$7 || (_templateObject3$7 = _taggedTemplateLiteralLoose(["\n    var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n    try {\n      for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;\n    } catch (err) {\n      ITERATOR_HELPER.e(err);\n    } finally {\n      ITERATOR_HELPER.f();\n    }\n  "])));
    var builder = skipIteratorClosing ? {
      build: buildForOfNoIteratorClosing,
      helper: "createForOfIteratorHelperLoose",
      getContainer: function getContainer(nodes) {
        return nodes;
      }
    } : {
      build: buildForOf,
      helper: "createForOfIteratorHelper",
      getContainer: function getContainer(nodes) {
        return nodes[1].block.body;
      }
    };
    function _ForOfStatementArray(path) {
      var node = path.node,
        scope = path.scope;
      var right = scope.generateUidIdentifierBasedOnNode(node.right, "arr");
      var iterationKey = scope.generateUidIdentifier("i");
      var loop = buildForOfArray({
        BODY: node.body,
        KEY: iterationKey,
        NAME: right,
        ARR: node.right
      });
      inherits$3(loop, node);
      var iterationValue = memberExpression$a(cloneNode$g(right), cloneNode$g(iterationKey), true);
      var declar;
      var left = node.left;
      if (isVariableDeclaration$3(left)) {
        left.declarations[0].init = iterationValue;
        declar = left;
      } else {
        declar = expressionStatement$7(assignmentExpression$b("=", left, iterationValue));
      }
      loop.body = buildLoopBody(path, declar, loop.body);
      return loop;
    }
    return {
      name: "transform-for-of",
      visitor: {
        ForOfStatement: function ForOfStatement(path, state) {
          var right = path.get("right");
          if (right.isArrayExpression() || right.isGenericType("Array") || isArrayTypeAnnotation$2(right.getTypeAnnotation())) {
            path.replaceWith(_ForOfStatementArray(path));
            return;
          }
          {
            if (!state.availableHelper(builder.helper)) {
              transformWithoutHelper(skipIteratorClosing, path, state);
              return;
            }
          }
          var node = path.node,
            parent = path.parent,
            scope = path.scope;
          var left = node.left;
          var declar;
          var stepKey = scope.generateUid("step");
          var stepValue = memberExpression$a(identifier$e(stepKey), identifier$e("value"));
          if (isVariableDeclaration$3(left)) {
            declar = variableDeclaration$6(left.kind, [variableDeclarator$6(left.declarations[0].id, stepValue)]);
          } else {
            declar = expressionStatement$7(assignmentExpression$b("=", left, stepValue));
          }
          var nodes = builder.build({
            CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),
            ITERATOR_HELPER: scope.generateUidIdentifier("iterator"),
            ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable ? booleanLiteral$2(true) : null,
            STEP_KEY: identifier$e(stepKey),
            OBJECT: node.right,
            BODY: buildLoopBody(path, declar)
          });
          var container = builder.getContainer(nodes);
          inherits$3(container[0], node);
          inherits$3(container[0].body, node.body);
          if (isLabeledStatement(parent)) {
            container[0] = labeledStatement(parent.label, container[0]);
            path.parentPath.replaceWithMultiple(nodes);
            path.skip();
          } else {
            path.replaceWithMultiple(nodes);
          }
        }
      }
    };
  });

  var _transformFunctionName = declare(function (api) {
    api.assertVersion("*");
    var supportUnicodeId = !isRequired("transform-unicode-escapes", api.targets());
    return {
      name: "transform-function-name",
      visitor: {
        FunctionExpression: {
          exit: function exit(path) {
            if (path.key !== "value" && !path.parentPath.isObjectProperty()) {
              path.ensureFunctionName(supportUnicodeId);
            }
          }
        },
        ObjectProperty: function ObjectProperty(path) {
          var value = path.get("value");
          if (value.isFunction()) {
            value.ensureFunctionName(supportUnicodeId);
          }
        }
      }
    };
  });

  var transformInstanceof = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-instanceof",
      visitor: {
        BinaryExpression: function BinaryExpression(path) {
          var node = path.node;
          if (node.operator === "instanceof") {
            var helper = this.addHelper("instanceof");
            var isUnderHelper = path.findParent(function (path) {
              return path.isVariableDeclarator() && path.node.id === helper || path.isFunctionDeclaration() && path.node.id && path.node.id.name === helper.name;
            });
            if (isUnderHelper) {
              return;
            } else {
              path.replaceWith(callExpression$c(helper, [node.left, node.right]));
            }
          }
        }
      }
    };
  });

  var transformJscript = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-jscript",
      visitor: {
        FunctionExpression: {
          exit: function exit(path) {
            var node = path.node;
            if (!node.id) return;
            path.replaceWith(callExpression$c(functionExpression$2(null, [], blockStatement$6([toStatement(node), returnStatement$3(cloneNode$g(node.id))])), []));
          }
        }
      }
    };
  });

  var _transformLiterals = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-literals",
      visitor: {
        NumericLiteral: function NumericLiteral(_ref) {
          var node = _ref.node;
          if (node.extra && /^0[ob]/i.test(node.extra.raw)) {
            node.extra = undefined;
          }
        },
        StringLiteral: function StringLiteral(_ref2) {
          var node = _ref2.node;
          if (node.extra && /\\u/i.test(node.extra.raw)) {
            node.extra = undefined;
          }
        }
      }
    };
  });

  var _transformMemberExpressionLiterals = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-member-expression-literals",
      visitor: {
        MemberExpression: {
          exit: function exit(_ref) {
            var node = _ref.node;
            var prop = node.property;
            if (!node.computed && isIdentifier$f(prop) && !isValidES3Identifier(prop.name)) {
              node.property = stringLiteral$6(prop.name);
              node.computed = true;
            }
          }
        }
      }
    };
  });

  var _templateObject$h;
  var buildWrapper$1 = template$1.statement("\n  define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {\n  })\n");
  var buildAnonymousWrapper = template$1.statement("\n  define([\"require\"], function(REQUIRE) {\n  })\n");
  function injectWrapper(path, wrapper) {
    var _path$node = path.node,
      body = _path$node.body,
      directives = _path$node.directives;
    path.node.directives = [];
    path.node.body = [];
    var amdFactoryCall = path.pushContainer("body", wrapper)[0].get("expression");
    var amdFactoryCallArgs = amdFactoryCall.get("arguments");
    var amdFactory = amdFactoryCallArgs[amdFactoryCallArgs.length - 1].get("body");
    amdFactory.pushContainer("directives", directives);
    amdFactory.pushContainer("body", body);
  }
  var _transformModulesAmd = declare(function (api, options) {
    var _api$assumption, _api$assumption2, _visitor;
    api.assertVersion("*");
    var allowTopLevelThis = options.allowTopLevelThis,
      strict = options.strict,
      strictMode = options.strictMode,
      importInterop = options.importInterop,
      noInterop = options.noInterop;
    var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
    var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
    return {
      name: "transform-modules-amd",
      pre: function pre() {
        this.file.set("@babel/plugin-transform-modules-*", "amd");
      },
      visitor: (_visitor = {}, _visitor["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")] = function (path, state) {
        if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
        if (path.isCallExpression() && !path.get("callee").isImport()) return;
        var requireId = state.requireId,
          resolveId = state.resolveId,
          rejectId = state.rejectId;
        if (!requireId) {
          requireId = path.scope.generateUidIdentifier("require");
          state.requireId = requireId;
        }
        if (!resolveId || !rejectId) {
          resolveId = path.scope.generateUidIdentifier("resolve");
          rejectId = path.scope.generateUidIdentifier("reject");
          state.resolveId = resolveId;
          state.rejectId = rejectId;
        }
        var result = identifier$e("imported");
        if (!noInterop) {
          result = wrapInterop(this.file.path, result, "namespace");
        }
        path.replaceWith(buildDynamicImport(path.node, false, false, function (specifier) {
          return template$1.expression.ast(_templateObject$h || (_templateObject$h = _taggedTemplateLiteralLoose(["\n              new Promise((", ", ", ") =>\n                ", "(\n                  [", "],\n                  imported => ", "(", "),\n                  ", "\n                )\n              )\n            "])), resolveId, rejectId, requireId, specifier, cloneNode$g(resolveId), result, cloneNode$g(rejectId));
        }));
      }, _visitor.Program = {
        exit: function exit(path, _ref) {
          var requireId = _ref.requireId;
          if (!isModule(path)) {
            if (requireId) {
              injectWrapper(path, buildAnonymousWrapper({
                REQUIRE: cloneNode$g(requireId)
              }));
            }
            return;
          }
          var amdArgs = [];
          var importNames = [];
          if (requireId) {
            amdArgs.push(stringLiteral$6("require"));
            importNames.push(cloneNode$g(requireId));
          }
          var moduleName = getModuleName$1(this.file.opts, options);
          if (moduleName) moduleName = stringLiteral$6(moduleName);
          var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
              enumerableModuleMeta: enumerableModuleMeta,
              constantReexports: constantReexports,
              strict: strict,
              strictMode: strictMode,
              allowTopLevelThis: allowTopLevelThis,
              importInterop: importInterop,
              noInterop: noInterop,
              filename: this.file.opts.filename
            }),
            meta = _rewriteModuleStateme.meta,
            headers = _rewriteModuleStateme.headers;
          if (hasExports(meta)) {
            amdArgs.push(stringLiteral$6("exports"));
            importNames.push(identifier$e(meta.exportName));
          }
          for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
            var _step$value = _slicedToArray(_step.value, 2),
              source = _step$value[0],
              metadata = _step$value[1];
            amdArgs.push(stringLiteral$6(source));
            importNames.push(identifier$e(metadata.name));
            if (!isSideEffectImport(metadata)) {
              var interop = wrapInterop(path, identifier$e(metadata.name), metadata.interop);
              if (interop) {
                var header = expressionStatement$7(assignmentExpression$b("=", identifier$e(metadata.name), interop));
                header.loc = metadata.loc;
                headers.push(header);
              }
            }
            headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports)));
          }
          ensureStatementsHoisted(headers);
          path.unshiftContainer("body", headers);
          injectWrapper(path, buildWrapper$1({
            MODULE_NAME: moduleName,
            AMD_ARGUMENTS: arrayExpression$1(amdArgs),
            IMPORT_NAMES: importNames
          }));
        }
      }, _visitor)
    };
  });

  var _templateObject$g;
  var requireNoInterop = function requireNoInterop(source) {
    return template$1.expression.ast(_templateObject$g || (_templateObject$g = _taggedTemplateLiteralLoose(["require(", ")"])), source);
  };
  var requireInterop = function requireInterop(source, file) {
    return callExpression$c(file.addHelper("interopRequireWildcard"), [requireNoInterop(source)]);
  };
  function transformDynamicImport(path, noInterop, file) {
    var buildRequire = noInterop ? requireNoInterop : requireInterop;
    path.replaceWith(buildDynamicImport(path.node, true, false, function (specifier) {
      return buildRequire(specifier, file);
    }));
  }

  var _templateObject$f;
  var lazyImportsHook = function lazyImportsHook(lazy) {
    return {
      name: "@babel/plugin-transform-modules-commonjs" + "/lazy",
      version: "7.24.8",
      getWrapperPayload: function getWrapperPayload(source, metadata) {
        if (isSideEffectImport(metadata) || metadata.reexportAll) {
          return null;
        }
        if (lazy === true) {
          return source.includes(".") ? null : "lazy/function";
        }
        if (Array.isArray(lazy)) {
          return !lazy.includes(source) ? null : "lazy/function";
        }
        if (typeof lazy === "function") {
          return lazy(source) ? "lazy/function" : null;
        }
      },
      buildRequireWrapper: function buildRequireWrapper(name, init, payload, referenced) {
        if (payload === "lazy/function") {
          if (!referenced) return false;
          return template$1.statement.ast(_templateObject$f || (_templateObject$f = _taggedTemplateLiteralLoose(["\n        function ", "() {\n          const data = ", ";\n          ", " = function(){ return data; };\n          return data;\n        }\n      "])), name, init, name);
        }
      },
      wrapReference: function wrapReference(ref, payload) {
        if (payload === "lazy/function") return callExpression$c(ref, []);
      }
    };
  };

  var commonJSHooksKey = "@babel/plugin-transform-modules-commonjs/customWrapperPlugin";
  function defineCommonJSHook(file, hook) {
    var hooks = file.get(commonJSHooksKey);
    if (!hooks) file.set(commonJSHooksKey, hooks = []);
    hooks.push(hook);
  }
  function findMap(arr, cb) {
    if (arr) {
      for (var _iterator = _createForOfIteratorHelperLoose(arr), _step; !(_step = _iterator()).done;) {
        var el = _step.value;
        var res = cb(el);
        if (res != null) return res;
      }
    }
  }
  function makeInvokers(file) {
    var hooks = file.get(commonJSHooksKey);
    return {
      getWrapperPayload: function getWrapperPayload() {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        return findMap(hooks, function (hook) {
          return hook.getWrapperPayload == null ? void 0 : hook.getWrapperPayload.apply(hook, args);
        });
      },
      wrapReference: function wrapReference() {
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        return findMap(hooks, function (hook) {
          return hook.wrapReference == null ? void 0 : hook.wrapReference.apply(hook, args);
        });
      },
      buildRequireWrapper: function buildRequireWrapper() {
        for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
          args[_key3] = arguments[_key3];
        }
        return findMap(hooks, function (hook) {
          return hook.buildRequireWrapper == null ? void 0 : hook.buildRequireWrapper.apply(hook, args);
        });
      }
    };
  }

  var _templateObject$e, _templateObject2$a;
  var transformModulesCommonJS = declare(function (api, options) {
    var _api$assumption, _api$assumption2, _api$assumption3, _visitor;
    api.assertVersion("*");
    var _options$strictNamesp = options.strictNamespace,
      strictNamespace = _options$strictNamesp === void 0 ? false : _options$strictNamesp,
      _options$mjsStrictNam = options.mjsStrictNamespace,
      mjsStrictNamespace = _options$mjsStrictNam === void 0 ? strictNamespace : _options$mjsStrictNam,
      allowTopLevelThis = options.allowTopLevelThis,
      strict = options.strict,
      strictMode = options.strictMode,
      noInterop = options.noInterop,
      importInterop = options.importInterop,
      _options$lazy = options.lazy,
      lazy = _options$lazy === void 0 ? false : _options$lazy,
      _options$allowCommonJ = options.allowCommonJSExports,
      allowCommonJSExports = _options$allowCommonJ === void 0 ? true : _options$allowCommonJ,
      _options$loose = options.loose,
      loose = _options$loose === void 0 ? false : _options$loose;
    var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : loose;
    var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : loose;
    var noIncompleteNsImportDetection = (_api$assumption3 = api.assumption("noIncompleteNsImportDetection")) != null ? _api$assumption3 : false;
    if (typeof lazy !== "boolean" && typeof lazy !== "function" && (!Array.isArray(lazy) || !lazy.every(function (item) {
      return typeof item === "string";
    }))) {
      throw new Error(".lazy must be a boolean, array of strings, or a function");
    }
    if (typeof strictNamespace !== "boolean") {
      throw new Error(".strictNamespace must be a boolean, or undefined");
    }
    if (typeof mjsStrictNamespace !== "boolean") {
      throw new Error(".mjsStrictNamespace must be a boolean, or undefined");
    }
    var getAssertion = function getAssertion(localName) {
      return template$1.expression.ast(_templateObject$e || (_templateObject$e = _taggedTemplateLiteralLoose(["\n    (function(){\n      throw new Error(\n        \"The CommonJS '\" + \"", "\" + \"' variable is not available in ES6 modules.\" +\n        \"Consider setting setting sourceType:script or sourceType:unambiguous in your \" +\n        \"Babel config for this file.\");\n    })()\n  "])), localName);
    };
    var moduleExportsVisitor = {
      ReferencedIdentifier: function ReferencedIdentifier(path) {
        var localName = path.node.name;
        if (localName !== "module" && localName !== "exports") return;
        var localBinding = path.scope.getBinding(localName);
        var rootBinding = this.scope.getBinding(localName);
        if (rootBinding !== localBinding || path.parentPath.isObjectProperty({
          value: path.node
        }) && path.parentPath.parentPath.isObjectPattern() || path.parentPath.isAssignmentExpression({
          left: path.node
        }) || path.isAssignmentExpression({
          left: path.node
        })) {
          return;
        }
        path.replaceWith(getAssertion(localName));
      },
      UpdateExpression: function UpdateExpression(path) {
        var arg = path.get("argument");
        if (!arg.isIdentifier()) return;
        var localName = arg.node.name;
        if (localName !== "module" && localName !== "exports") return;
        var localBinding = path.scope.getBinding(localName);
        var rootBinding = this.scope.getBinding(localName);
        if (rootBinding !== localBinding) return;
        path.replaceWith(assignmentExpression$b(path.node.operator[0] + "=", arg.node, getAssertion(localName)));
      },
      AssignmentExpression: function AssignmentExpression(path) {
        var _this = this;
        var left = path.get("left");
        if (left.isIdentifier()) {
          var localName = left.node.name;
          if (localName !== "module" && localName !== "exports") return;
          var localBinding = path.scope.getBinding(localName);
          var rootBinding = this.scope.getBinding(localName);
          if (rootBinding !== localBinding) return;
          var right = path.get("right");
          right.replaceWith(sequenceExpression$8([right.node, getAssertion(localName)]));
        } else if (left.isPattern()) {
          var ids = left.getOuterBindingIdentifiers();
          var _localName = Object.keys(ids).find(function (localName) {
            if (localName !== "module" && localName !== "exports") return false;
            return _this.scope.getBinding(localName) === path.scope.getBinding(localName);
          });
          if (_localName) {
            var _right = path.get("right");
            _right.replaceWith(sequenceExpression$8([_right.node, getAssertion(_localName)]));
          }
        }
      }
    };
    return {
      name: "transform-modules-commonjs",
      pre: function pre() {
        this.file.set("@babel/plugin-transform-modules-*", "commonjs");
        if (lazy) defineCommonJSHook(this.file, lazyImportsHook(lazy));
      },
      visitor: (_visitor = {}, _visitor["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")] = function (path) {
        if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
        if (path.isCallExpression() && !isImport(path.node.callee)) return;
        var scope = path.scope;
        do {
          scope.rename("require");
        } while (scope = scope.parent);
        transformDynamicImport(path, noInterop, this.file);
      }, _visitor.Program = {
        exit: function exit(path, state) {
          if (!isModule(path)) return;
          path.scope.rename("exports");
          path.scope.rename("module");
          path.scope.rename("require");
          path.scope.rename("__filename");
          path.scope.rename("__dirname");
          if (!allowCommonJSExports) {
            {
              simplifyAccess(path, new Set(["module", "exports"]), false);
            }
            path.traverse(moduleExportsVisitor, {
              scope: path.scope
            });
          }
          var moduleName = getModuleName$1(this.file.opts, options);
          if (moduleName) moduleName = stringLiteral$6(moduleName);
          var hooks = makeInvokers(this.file);
          var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
              exportName: "exports",
              constantReexports: constantReexports,
              enumerableModuleMeta: enumerableModuleMeta,
              strict: strict,
              strictMode: strictMode,
              allowTopLevelThis: allowTopLevelThis,
              noInterop: noInterop,
              importInterop: importInterop,
              wrapReference: hooks.wrapReference,
              getWrapperPayload: hooks.getWrapperPayload,
              esNamespaceOnly: typeof state.filename === "string" && /\.mjs$/.test(state.filename) ? mjsStrictNamespace : strictNamespace,
              noIncompleteNsImportDetection: noIncompleteNsImportDetection,
              filename: this.file.opts.filename
            }),
            meta = _rewriteModuleStateme.meta,
            headers = _rewriteModuleStateme.headers;
          for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
            var _step$value = _slicedToArray(_step.value, 2),
              source = _step$value[0],
              metadata = _step$value[1];
            var loadExpr = callExpression$c(identifier$e("require"), [stringLiteral$6(source)]);
            var header = void 0;
            if (isSideEffectImport(metadata)) {
              if (lazy && metadata.wrap === "function") {
                throw new Error("Assertion failure");
              }
              header = expressionStatement$7(loadExpr);
            } else {
              var _header;
              var init = wrapInterop(path, loadExpr, metadata.interop) || loadExpr;
              if (metadata.wrap) {
                var res = hooks.buildRequireWrapper(metadata.name, init, metadata.wrap, metadata.referenced);
                if (res === false) continue;else header = res;
              }
              (_header = header) != null ? _header : header = template$1.statement.ast(_templateObject2$a || (_templateObject2$a = _taggedTemplateLiteralLoose(["\n                var ", " = ", ";\n              "])), metadata.name, init);
            }
            header.loc = metadata.loc;
            headers.push(header);
            headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports, hooks.wrapReference)));
          }
          ensureStatementsHoisted(headers);
          path.unshiftContainer("body", headers);
          path.get("body").forEach(function (path) {
            if (!headers.includes(path.node)) return;
            if (path.isVariableDeclaration()) {
              path.scope.registerDeclaration(path);
            }
          });
        }
      }, _visitor)
    };
  });

  var buildTemplate = template$1.statement("\n  SYSTEM_REGISTER(MODULE_NAME, SOURCES, function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n    \"use strict\";\n    BEFORE_BODY;\n    return {\n      setters: SETTERS,\n      execute: EXECUTE,\n    };\n  });\n");
  var buildExportAll = template$1.statement("\n  for (var KEY in TARGET) {\n    if (KEY !== \"default\" && KEY !== \"__esModule\") EXPORT_OBJ[KEY] = TARGET[KEY];\n  }\n");
  var MISSING_PLUGIN_WARNING = "WARNING: Dynamic import() transformation must be enabled using the\n         @babel/plugin-transform-dynamic-import plugin. Babel 8 will\n         no longer transform import() without using that plugin.\n";
  var MISSING_PLUGIN_ERROR = "ERROR: Dynamic import() transformation must be enabled using the\n       @babel/plugin-transform-dynamic-import plugin. Babel 8\n       no longer transforms import() without using that plugin.\n";
  function getExportSpecifierName(node, stringSpecifiers) {
    if (node.type === "Identifier") {
      return node.name;
    } else if (node.type === "StringLiteral") {
      var stringValue = node.value;
      if (!isIdentifierName(stringValue)) {
        stringSpecifiers.add(stringValue);
      }
      return stringValue;
    } else {
      throw new Error("Expected export specifier to be either Identifier or StringLiteral, got " + node.type);
    }
  }
  function constructExportCall(path, exportIdent, exportNames, exportValues, exportStarTarget, stringSpecifiers) {
    var statements = [];
    if (!exportStarTarget) {
      if (exportNames.length === 1) {
        statements.push(expressionStatement$7(callExpression$c(exportIdent, [stringLiteral$6(exportNames[0]), exportValues[0]])));
      } else {
        var objectProperties = [];
        for (var i = 0; i < exportNames.length; i++) {
          var exportName = exportNames[i];
          var exportValue = exportValues[i];
          objectProperties.push(objectProperty$1(stringSpecifiers.has(exportName) ? stringLiteral$6(exportName) : identifier$e(exportName), exportValue));
        }
        statements.push(expressionStatement$7(callExpression$c(exportIdent, [objectExpression$3(objectProperties)])));
      }
    } else {
      var exportObj = path.scope.generateUid("exportObj");
      statements.push(variableDeclaration$6("var", [variableDeclarator$6(identifier$e(exportObj), objectExpression$3([]))]));
      statements.push(buildExportAll({
        KEY: path.scope.generateUidIdentifier("key"),
        EXPORT_OBJ: identifier$e(exportObj),
        TARGET: exportStarTarget
      }));
      for (var _i = 0; _i < exportNames.length; _i++) {
        var _exportName = exportNames[_i];
        var _exportValue = exportValues[_i];
        statements.push(expressionStatement$7(assignmentExpression$b("=", memberExpression$a(identifier$e(exportObj), identifier$e(_exportName)), _exportValue)));
      }
      statements.push(expressionStatement$7(callExpression$c(exportIdent, [identifier$e(exportObj)])));
    }
    return statements;
  }
  var _transformModulesSystemjs = declare(function (api, options) {
    var _visitor;
    api.assertVersion("*");
    var _options$systemGlobal = options.systemGlobal,
      systemGlobal = _options$systemGlobal === void 0 ? "System" : _options$systemGlobal,
      _options$allowTopLeve = options.allowTopLevelThis,
      allowTopLevelThis = _options$allowTopLeve === void 0 ? false : _options$allowTopLeve;
    var reassignmentVisited = new WeakSet();
    var reassignmentVisitor = {
      "AssignmentExpression|UpdateExpression": function AssignmentExpressionUpdateExpression(path) {
        if (reassignmentVisited.has(path.node)) return;
        reassignmentVisited.add(path.node);
        var arg = path.isAssignmentExpression() ? path.get("left") : path.get("argument");
        if (arg.isObjectPattern() || arg.isArrayPattern()) {
          var exprs = [path.node];
          for (var _i2 = 0, _Object$keys = Object.keys(arg.getBindingIdentifiers()); _i2 < _Object$keys.length; _i2++) {
            var _name = _Object$keys[_i2];
            if (this.scope.getBinding(_name) !== path.scope.getBinding(_name)) {
              return;
            }
            var _exportedNames = this.exports[_name];
            if (!_exportedNames) continue;
            for (var _iterator = _createForOfIteratorHelperLoose(_exportedNames), _step; !(_step = _iterator()).done;) {
              var exportedName = _step.value;
              exprs.push(this.buildCall(exportedName, identifier$e(_name)).expression);
            }
          }
          path.replaceWith(sequenceExpression$8(exprs));
          return;
        }
        if (!arg.isIdentifier()) return;
        var name = arg.node.name;
        if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
        var exportedNames = this.exports[name];
        if (!exportedNames) return;
        var node = path.node;
        var isPostUpdateExpression = isUpdateExpression$1(node, {
          prefix: false
        });
        if (isPostUpdateExpression) {
          node = binaryExpression$5(node.operator[0], unaryExpression$5("+", cloneNode$g(node.argument)), numericLiteral$6(1));
        }
        for (var _iterator2 = _createForOfIteratorHelperLoose(exportedNames), _step2; !(_step2 = _iterator2()).done;) {
          var _exportedName = _step2.value;
          node = this.buildCall(_exportedName, node).expression;
        }
        if (isPostUpdateExpression) {
          node = sequenceExpression$8([node, path.node]);
        }
        path.replaceWith(node);
      }
    };
    return {
      name: "transform-modules-systemjs",
      pre: function pre() {
        this.file.set("@babel/plugin-transform-modules-*", "systemjs");
      },
      visitor: (_visitor = {}, _visitor["CallExpression" + (api.types.importExpression ? "|ImportExpression" : "")] = function (path, state) {
        if (path.isCallExpression() && !isImport(path.node.callee)) return;
        if (path.isCallExpression()) {
          if (!this.file.has("@babel/plugin-proposal-dynamic-import")) {
            {
              console.warn(MISSING_PLUGIN_WARNING);
            }
          }
        } else {
          if (!this.file.has("@babel/plugin-proposal-dynamic-import")) {
            throw new Error(MISSING_PLUGIN_ERROR);
          }
        }
        path.replaceWith(buildDynamicImport(path.node, false, true, function (specifier) {
          return callExpression$c(memberExpression$a(identifier$e(state.contextIdent), identifier$e("import")), [specifier]);
        }));
      }, _visitor.MetaProperty = function MetaProperty(path, state) {
        if (path.node.meta.name === "import" && path.node.property.name === "meta") {
          path.replaceWith(memberExpression$a(identifier$e(state.contextIdent), identifier$e("meta")));
        }
      }, _visitor.ReferencedIdentifier = function ReferencedIdentifier(path, state) {
        if (path.node.name === "__moduleName" && !path.scope.hasBinding("__moduleName")) {
          path.replaceWith(memberExpression$a(identifier$e(state.contextIdent), identifier$e("id")));
        }
      }, _visitor.Program = {
        enter: function enter(path, state) {
          state.contextIdent = path.scope.generateUid("context");
          state.stringSpecifiers = new Set();
          if (!allowTopLevelThis) {
            rewriteThis(path);
          }
        },
        exit: function exit(path, state) {
          var scope = path.scope;
          var exportIdent = scope.generateUid("export");
          var contextIdent = state.contextIdent,
            stringSpecifiers = state.stringSpecifiers;
          var exportMap = Object.create(null);
          var modules = [];
          var beforeBody = [];
          var setters = [];
          var sources = [];
          var variableIds = [];
          var removedPaths = [];
          function addExportName(key, val) {
            exportMap[key] = exportMap[key] || [];
            exportMap[key].push(val);
          }
          function pushModule(source, key, specifiers) {
            var module;
            modules.forEach(function (m) {
              if (m.key === source) {
                module = m;
              }
            });
            if (!module) {
              modules.push(module = {
                key: source,
                imports: [],
                exports: []
              });
            }
            module[key] = module[key].concat(specifiers);
          }
          function buildExportCall(name, val) {
            return expressionStatement$7(callExpression$c(identifier$e(exportIdent), [stringLiteral$6(name), val]));
          }
          var exportNames = [];
          var exportValues = [];
          var body = path.get("body");
          for (var _iterator3 = _createForOfIteratorHelperLoose(body), _step3; !(_step3 = _iterator3()).done;) {
            var _path2 = _step3.value;
            if (_path2.isFunctionDeclaration()) {
              beforeBody.push(_path2.node);
              removedPaths.push(_path2);
            } else if (_path2.isClassDeclaration()) {
              variableIds.push(cloneNode$g(_path2.node.id));
              _path2.replaceWith(expressionStatement$7(assignmentExpression$b("=", cloneNode$g(_path2.node.id), toExpression$1(_path2.node))));
            } else if (_path2.isVariableDeclaration()) {
              _path2.node.kind = "var";
            } else if (_path2.isImportDeclaration()) {
              var source = _path2.node.source.value;
              pushModule(source, "imports", _path2.node.specifiers);
              for (var _i4 = 0, _Object$keys2 = Object.keys(_path2.getBindingIdentifiers()); _i4 < _Object$keys2.length; _i4++) {
                var name = _Object$keys2[_i4];
                scope.removeBinding(name);
                variableIds.push(identifier$e(name));
              }
              _path2.remove();
            } else if (_path2.isExportAllDeclaration()) {
              pushModule(_path2.node.source.value, "exports", _path2.node);
              _path2.remove();
            } else if (_path2.isExportDefaultDeclaration()) {
              var declar = _path2.node.declaration;
              if (isClassDeclaration$2(declar)) {
                var id = declar.id;
                if (id) {
                  exportNames.push("default");
                  exportValues.push(scope.buildUndefinedNode());
                  variableIds.push(cloneNode$g(id));
                  addExportName(id.name, "default");
                  _path2.replaceWith(expressionStatement$7(assignmentExpression$b("=", cloneNode$g(id), toExpression$1(declar))));
                } else {
                  exportNames.push("default");
                  exportValues.push(toExpression$1(declar));
                  removedPaths.push(_path2);
                }
              } else if (isFunctionDeclaration$2(declar)) {
                var _id = declar.id;
                if (_id) {
                  beforeBody.push(declar);
                  exportNames.push("default");
                  exportValues.push(cloneNode$g(_id));
                  addExportName(_id.name, "default");
                } else {
                  exportNames.push("default");
                  exportValues.push(toExpression$1(declar));
                }
                removedPaths.push(_path2);
              } else {
                _path2.replaceWith(buildExportCall("default", declar));
              }
            } else if (_path2.isExportNamedDeclaration()) {
              var _declar = _path2.node.declaration;
              if (_declar) {
                _path2.replaceWith(_declar);
                if (isFunction$5(_declar)) {
                  var _name2 = _declar.id.name;
                  addExportName(_name2, _name2);
                  beforeBody.push(_declar);
                  exportNames.push(_name2);
                  exportValues.push(cloneNode$g(_declar.id));
                  removedPaths.push(_path2);
                } else if (isClass$1(_declar)) {
                  var _name3 = _declar.id.name;
                  exportNames.push(_name3);
                  exportValues.push(scope.buildUndefinedNode());
                  variableIds.push(cloneNode$g(_declar.id));
                  _path2.replaceWith(expressionStatement$7(assignmentExpression$b("=", cloneNode$g(_declar.id), toExpression$1(_declar))));
                  addExportName(_name3, _name3);
                } else {
                  if (isVariableDeclaration$3(_declar)) {
                    _declar.kind = "var";
                  }
                  for (var _i5 = 0, _Object$keys3 = Object.keys(getBindingIdentifiers$4(_declar)); _i5 < _Object$keys3.length; _i5++) {
                    var _name4 = _Object$keys3[_i5];
                    addExportName(_name4, _name4);
                  }
                }
              } else {
                var specifiers = _path2.node.specifiers;
                if (specifiers != null && specifiers.length) {
                  if (_path2.node.source) {
                    pushModule(_path2.node.source.value, "exports", specifiers);
                    _path2.remove();
                  } else {
                    var nodes = [];
                    for (var _iterator7 = _createForOfIteratorHelperLoose(specifiers), _step7; !(_step7 = _iterator7()).done;) {
                      var specifier = _step7.value;
                      var local = specifier.local,
                        exported = specifier.exported;
                      var binding = scope.getBinding(local.name);
                      var exportedName = getExportSpecifierName(exported, stringSpecifiers);
                      if (binding && isFunctionDeclaration$2(binding.path.node)) {
                        exportNames.push(exportedName);
                        exportValues.push(cloneNode$g(local));
                      } else if (!binding) {
                        nodes.push(buildExportCall(exportedName, local));
                      }
                      addExportName(local.name, exportedName);
                    }
                    _path2.replaceWithMultiple(nodes);
                  }
                } else {
                  _path2.remove();
                }
              }
            }
          }
          modules.forEach(function (specifiers) {
            var setterBody = [];
            var target = scope.generateUid(specifiers.key);
            for (var _iterator4 = _createForOfIteratorHelperLoose(specifiers.imports), _step4; !(_step4 = _iterator4()).done;) {
              var specifier = _step4.value;
              if (isImportNamespaceSpecifier$1(specifier)) {
                setterBody.push(expressionStatement$7(assignmentExpression$b("=", specifier.local, identifier$e(target))));
              } else if (isImportDefaultSpecifier$1(specifier)) {
                specifier = importSpecifier$2(specifier.local, identifier$e("default"));
              }
              if (isImportSpecifier$1(specifier)) {
                var _specifier = specifier,
                  imported = _specifier.imported;
                setterBody.push(expressionStatement$7(assignmentExpression$b("=", specifier.local, memberExpression$a(identifier$e(target), specifier.imported, imported.type === "StringLiteral"))));
              }
            }
            if (specifiers.exports.length) {
              var _exportNames = [];
              var _exportValues = [];
              var hasExportStar = false;
              for (var _iterator5 = _createForOfIteratorHelperLoose(specifiers.exports), _step5; !(_step5 = _iterator5()).done;) {
                var node = _step5.value;
                if (isExportAllDeclaration$1(node)) {
                  hasExportStar = true;
                } else if (isExportSpecifier(node)) {
                  var exportedName = getExportSpecifierName(node.exported, stringSpecifiers);
                  _exportNames.push(exportedName);
                  _exportValues.push(memberExpression$a(identifier$e(target), node.local, isStringLiteral$5(node.local)));
                } else ;
              }
              setterBody.push.apply(setterBody, _toConsumableArray(constructExportCall(path, identifier$e(exportIdent), _exportNames, _exportValues, hasExportStar ? identifier$e(target) : null, stringSpecifiers)));
            }
            sources.push(stringLiteral$6(specifiers.key));
            setters.push(functionExpression$2(null, [identifier$e(target)], blockStatement$6(setterBody)));
          });
          var moduleName = getModuleName$1(this.file.opts, options);
          if (moduleName) moduleName = stringLiteral$6(moduleName);
          path.scope.hoistVariables(function (id, hasInit) {
            variableIds.push(id);
            if (!hasInit && id.name in exportMap) {
              for (var _iterator6 = _createForOfIteratorHelperLoose(exportMap[id.name]), _step6; !(_step6 = _iterator6()).done;) {
                var exported = _step6.value;
                exportNames.push(exported);
                exportValues.push(buildUndefinedNode$2());
              }
            }
          });
          if (variableIds.length) {
            beforeBody.unshift(variableDeclaration$6("var", variableIds.map(function (id) {
              return variableDeclarator$6(id);
            })));
          }
          if (exportNames.length) {
            beforeBody.push.apply(beforeBody, _toConsumableArray(constructExportCall(path, identifier$e(exportIdent), exportNames, exportValues, null, stringSpecifiers)));
          }
          path.traverse(reassignmentVisitor, {
            exports: exportMap,
            buildCall: buildExportCall,
            scope: scope
          });
          for (var _i3 = 0, _removedPaths = removedPaths; _i3 < _removedPaths.length; _i3++) {
            var _path = _removedPaths[_i3];
            _path.remove();
          }
          var hasTLA = false;
          path.traverse({
            AwaitExpression: function AwaitExpression(path) {
              hasTLA = true;
              path.stop();
            },
            Function: function Function(path) {
              path.skip();
            },
            noScope: true
          });
          path.node.body = [buildTemplate({
            SYSTEM_REGISTER: memberExpression$a(identifier$e(systemGlobal), identifier$e("register")),
            BEFORE_BODY: beforeBody,
            MODULE_NAME: moduleName,
            SETTERS: arrayExpression$1(setters),
            EXECUTE: functionExpression$2(null, [], blockStatement$6(path.node.body), false, hasTLA),
            SOURCES: arrayExpression$1(sources),
            EXPORT_IDENTIFIER: identifier$e(exportIdent),
            CONTEXT_IDENTIFIER: identifier$e(contextIdent)
          })];
          path.requeue(path.get("body.0"));
        }
      }, _visitor)
    };
  });

  var buildPrerequisiteAssignment = template$1("\n  GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}\n");
  var buildWrapper = template$1("\n  (function (global, factory) {\n    if (typeof define === \"function\" && define.amd) {\n      define(MODULE_NAME, AMD_ARGUMENTS, factory);\n    } else if (typeof exports !== \"undefined\") {\n      factory(COMMONJS_ARGUMENTS);\n    } else {\n      var mod = { exports: {} };\n      factory(BROWSER_ARGUMENTS);\n\n      GLOBAL_TO_ASSIGN;\n    }\n  })(\n    typeof globalThis !== \"undefined\" ? globalThis\n      : typeof self !== \"undefined\" ? self\n      : this,\n    function(IMPORT_NAMES) {\n  })\n");
  var _transformModulesUmd = declare(function (api, options) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var globals = options.globals,
      exactGlobals = options.exactGlobals,
      allowTopLevelThis = options.allowTopLevelThis,
      strict = options.strict,
      strictMode = options.strictMode,
      noInterop = options.noInterop,
      importInterop = options.importInterop;
    var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
    var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
    function buildBrowserInit(browserGlobals, exactGlobals, filename, moduleName) {
      var moduleNameOrBasename = moduleName ? moduleName.value : basename(filename, extname(filename));
      var globalToAssign = memberExpression$a(identifier$e("global"), identifier$e(toIdentifier$1(moduleNameOrBasename)));
      var initAssignments = [];
      if (exactGlobals) {
        var globalName = browserGlobals[moduleNameOrBasename];
        if (globalName) {
          initAssignments = [];
          var members = globalName.split(".");
          globalToAssign = members.slice(1).reduce(function (accum, curr) {
            initAssignments.push(buildPrerequisiteAssignment({
              GLOBAL_REFERENCE: cloneNode$g(accum)
            }));
            return memberExpression$a(accum, identifier$e(curr));
          }, memberExpression$a(identifier$e("global"), identifier$e(members[0])));
        }
      }
      initAssignments.push(expressionStatement$7(assignmentExpression$b("=", globalToAssign, memberExpression$a(identifier$e("mod"), identifier$e("exports")))));
      return initAssignments;
    }
    function buildBrowserArg(browserGlobals, exactGlobals, source) {
      var memberExpression;
      if (exactGlobals) {
        var globalRef = browserGlobals[source];
        if (globalRef) {
          memberExpression = globalRef.split(".").reduce(function (accum, curr) {
            return memberExpression$a(accum, identifier$e(curr));
          }, identifier$e("global"));
        } else {
          memberExpression = memberExpression$a(identifier$e("global"), identifier$e(toIdentifier$1(source)));
        }
      } else {
        var requireName = basename(source, extname(source));
        var globalName = browserGlobals[requireName] || requireName;
        memberExpression = memberExpression$a(identifier$e("global"), identifier$e(toIdentifier$1(globalName)));
      }
      return memberExpression;
    }
    return {
      name: "transform-modules-umd",
      visitor: {
        Program: {
          exit: function exit(path) {
            if (!isModule(path)) return;
            var browserGlobals = globals || {};
            var moduleName = getModuleName$1(this.file.opts, options);
            var moduleNameLiteral;
            if (moduleName) moduleNameLiteral = stringLiteral$6(moduleName);
            var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
                constantReexports: constantReexports,
                enumerableModuleMeta: enumerableModuleMeta,
                strict: strict,
                strictMode: strictMode,
                allowTopLevelThis: allowTopLevelThis,
                noInterop: noInterop,
                importInterop: importInterop,
                filename: this.file.opts.filename
              }),
              meta = _rewriteModuleStateme.meta,
              headers = _rewriteModuleStateme.headers;
            var amdArgs = [];
            var commonjsArgs = [];
            var browserArgs = [];
            var importNames = [];
            if (hasExports(meta)) {
              amdArgs.push(stringLiteral$6("exports"));
              commonjsArgs.push(identifier$e("exports"));
              browserArgs.push(memberExpression$a(identifier$e("mod"), identifier$e("exports")));
              importNames.push(identifier$e(meta.exportName));
            }
            for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
              var _step$value = _slicedToArray(_step.value, 2),
                source = _step$value[0],
                metadata = _step$value[1];
              amdArgs.push(stringLiteral$6(source));
              commonjsArgs.push(callExpression$c(identifier$e("require"), [stringLiteral$6(source)]));
              browserArgs.push(buildBrowserArg(browserGlobals, exactGlobals, source));
              importNames.push(identifier$e(metadata.name));
              if (!isSideEffectImport(metadata)) {
                var interop = wrapInterop(path, identifier$e(metadata.name), metadata.interop);
                if (interop) {
                  var header = expressionStatement$7(assignmentExpression$b("=", identifier$e(metadata.name), interop));
                  header.loc = meta.loc;
                  headers.push(header);
                }
              }
              headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports)));
            }
            ensureStatementsHoisted(headers);
            path.unshiftContainer("body", headers);
            var _path$node = path.node,
              body = _path$node.body,
              directives = _path$node.directives;
            path.node.directives = [];
            path.node.body = [];
            var umdWrapper = path.pushContainer("body", [buildWrapper({
              MODULE_NAME: moduleNameLiteral,
              AMD_ARGUMENTS: arrayExpression$1(amdArgs),
              COMMONJS_ARGUMENTS: commonjsArgs,
              BROWSER_ARGUMENTS: browserArgs,
              IMPORT_NAMES: importNames,
              GLOBAL_TO_ASSIGN: buildBrowserInit(browserGlobals, exactGlobals, this.filename || "unknown", moduleNameLiteral)
            })])[0];
            var umdFactory = umdWrapper.get("expression.arguments")[1].get("body");
            umdFactory.pushContainer("directives", directives);
            umdFactory.pushContainer("body", body);
          }
        }
      }
    };
  });

  var _transformNamedCapturingGroupsRegex = declare(function (api, options) {
    var runtime = options.runtime;
    if (runtime !== undefined && typeof runtime !== "boolean") {
      throw new Error("The 'runtime' option must be boolean");
    }
    return createRegExpFeaturePlugin({
      name: "transform-named-capturing-groups-regex",
      feature: "namedCaptureGroups",
      options: {
        runtime: runtime
      }
    });
  });

  var _transformNewTarget = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-new-target",
      visitor: {
        MetaProperty: function MetaProperty(path) {
          var meta = path.get("meta");
          var property = path.get("property");
          var scope = path.scope;
          if (meta.isIdentifier({
            name: "new"
          }) && property.isIdentifier({
            name: "target"
          })) {
            var func = path.findParent(function (path) {
              if (path.isClass()) return true;
              if (path.isFunction() && !path.isArrowFunctionExpression()) {
                if (path.isClassMethod({
                  kind: "constructor"
                })) {
                  return false;
                }
                return true;
              }
              return false;
            });
            if (!func) {
              throw path.buildCodeFrameError("new.target must be under a (non-arrow) function or a class.");
            }
            var node = func.node;
            if (isMethod$1(node)) {
              path.replaceWith(scope.buildUndefinedNode());
              return;
            }
            var constructor = memberExpression$a(thisExpression$4(), identifier$e("constructor"));
            if (func.isClass()) {
              path.replaceWith(constructor);
              return;
            }
            if (!node.id) {
              node.id = scope.generateUidIdentifier("target");
            } else {
              var _scope = path.scope;
              var name = node.id.name;
              while (_scope !== func.parentPath.scope) {
                if (_scope.hasOwnBinding(name) && !_scope.bindingIdentifierEquals(name, node.id)) {
                  _scope.rename(name);
                }
                _scope = _scope.parent;
              }
            }
            path.replaceWith(conditionalExpression$5(binaryExpression$5("instanceof", thisExpression$4(), cloneNode$g(node.id)), constructor, scope.buildUndefinedNode()));
          }
        }
      }
    };
  });

  var transformObjectAssign = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-object-assign",
      visitor: {
        CallExpression: function CallExpression(path, file) {
          if (path.get("callee").matchesPattern("Object.assign")) {
            path.node.callee = file.addHelper("extends");
          }
        }
      }
    };
  });

  function replacePropertySuper(path, getObjectRef, file) {
    var replaceSupers = new ReplaceSupers({
      getObjectRef: getObjectRef,
      methodPath: path,
      file: file
    });
    replaceSupers.replace();
  }
  var _transformObjectSuper = declare(function (api) {
    api.assertVersion("*");
    var newLets = new Set();
    return {
      name: "transform-object-super",
      visitor: {
        Loop: {
          exit: function exit(path) {
            newLets.forEach(function (v) {
              if (v.scopePath === path) {
                path.scope.push({
                  id: v.id,
                  kind: "let"
                });
                path.scope.crawl();
                path.requeue();
                newLets["delete"](v);
              }
            });
          }
        },
        ObjectExpression: function ObjectExpression(path, state) {
          var objectRef;
          var getObjectRef = function getObjectRef() {
            return objectRef = objectRef || path.scope.generateUidIdentifier("obj");
          };
          path.get("properties").forEach(function (propPath) {
            if (!propPath.isMethod()) return;
            replacePropertySuper(propPath, getObjectRef, state.file);
          });
          if (objectRef) {
            var scopePath = path.findParent(function (p) {
              return p.isFunction() || p.isProgram() || p.isLoop();
            });
            var useLet = scopePath.isLoop();
            if (useLet) {
              newLets.add({
                scopePath: scopePath,
                id: cloneNode$g(objectRef)
              });
            } else {
              path.scope.push({
                id: cloneNode$g(objectRef),
                kind: "var"
              });
            }
            path.replaceWith(assignmentExpression$b("=", cloneNode$g(objectRef), path.node));
          }
        }
      }
    };
  });

  var transformObjectSetPrototypeOfToAssign = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-object-set-prototype-of-to-assign",
      visitor: {
        CallExpression: function CallExpression(path, file) {
          if (path.get("callee").matchesPattern("Object.setPrototypeOf")) {
            path.node.callee = file.addHelper("defaults");
          }
        }
      }
    };
  });

  var _transformPropertyLiterals = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-property-literals",
      visitor: {
        ObjectProperty: {
          exit: function exit(_ref) {
            var node = _ref.node;
            var key = node.key;
            if (!node.computed && isIdentifier$f(key) && !isValidES3Identifier(key.name)) {
              node.key = stringLiteral$6(key.name);
            }
          }
        }
      }
    };
  });

  function pushAccessor(mutatorMap, node) {
    var _mutatorMap$alias;
    var alias = toKeyAlias(node);
    var map = (_mutatorMap$alias = mutatorMap[alias]) != null ? _mutatorMap$alias : mutatorMap[alias] = {
      _inherits: [],
      _key: node.key
    };
    map._inherits.push(node);
    var value = functionExpression$2(null, node.params, node.body, node.generator, node.async);
    value.returnType = node.returnType;
    inheritsComments$1(value, node);
    map[node.kind] = value;
    return map;
  }
  function toDefineObject(mutatorMap) {
    var objExpr = objectExpression$3([]);
    Object.keys(mutatorMap).forEach(function (mutatorMapKey) {
      var map = mutatorMap[mutatorMapKey];
      map.configurable = booleanLiteral$2(true);
      map.enumerable = booleanLiteral$2(true);
      var mapNode = objectExpression$3([]);
      var propNode = objectProperty$1(map._key, mapNode, map._computed);
      Object.keys(map).forEach(function (key) {
        var node = map[key];
        if (key[0] === "_") return;
        var prop = objectProperty$1(identifier$e(key), node);
        inheritsComments$1(prop, node);
        removeComments$1(node);
        mapNode.properties.push(prop);
      });
      objExpr.properties.push(propNode);
    });
    return objExpr;
  }

  var transformPropertyMutators = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-property-mutators",
      visitor: {
        ObjectExpression: function ObjectExpression(path) {
          var node = path.node;
          var mutatorMap;
          var newProperties = node.properties.filter(function (prop) {
            if (isObjectMethod(prop) && !prop.computed && (prop.kind === "get" || prop.kind === "set")) {
              var _mutatorMap;
              pushAccessor((_mutatorMap = mutatorMap) != null ? _mutatorMap : mutatorMap = {}, prop);
              return false;
            }
            return true;
          });
          if (mutatorMap === undefined) {
            return;
          }
          node.properties = newProperties;
          path.replaceWith(callExpression$c(memberExpression$a(identifier$e("Object"), identifier$e("defineProperties")), [node, toDefineObject(mutatorMap)]));
        }
      }
    };
  });

  var transformProtoToAssign = declare(function (api) {
    api.assertVersion("*");
    function isProtoKey(node) {
      return !isSpreadElement$1(node) && isStringLiteral$5(toComputedKey$2(node, node.key), {
        value: "__proto__"
      });
    }
    function isProtoAssignmentExpression(node) {
      var left = node;
      return isMemberExpression$8(left) && isStringLiteral$5(toComputedKey$2(left, left.property), {
        value: "__proto__"
      });
    }
    function buildDefaultsCallExpression(expr, ref, file) {
      return expressionStatement$7(callExpression$c(file.addHelper("defaults"), [ref, expr.right]));
    }
    return {
      name: "transform-proto-to-assign",
      visitor: {
        AssignmentExpression: function AssignmentExpression(path, _ref) {
          var file = _ref.file;
          if (!isProtoAssignmentExpression(path.node.left)) return;
          var nodes = [];
          var left = path.node.left.object;
          var temp = path.scope.maybeGenerateMemoised(left);
          if (temp) {
            nodes.push(expressionStatement$7(assignmentExpression$b("=", temp, left)));
          }
          nodes.push(buildDefaultsCallExpression(path.node, cloneNode$g(temp || left), file));
          if (temp) nodes.push(cloneNode$g(temp));
          path.replaceWithMultiple(nodes);
        },
        ExpressionStatement: function ExpressionStatement(path, _ref2) {
          var file = _ref2.file;
          var expr = path.node.expression;
          if (!isAssignmentExpression$2(expr, {
            operator: "="
          })) return;
          if (isProtoAssignmentExpression(expr.left)) {
            path.replaceWith(buildDefaultsCallExpression(expr, expr.left.object, file));
          }
        },
        ObjectExpression: function ObjectExpression(path, _ref3) {
          var file = _ref3.file;
          var proto;
          var node = path.node;
          var properties = node.properties;
          for (var i = 0; i < properties.length; i++) {
            var prop = properties[i];
            if (isProtoKey(prop)) {
              proto = prop.value;
              properties.splice(i, 1);
              break;
            }
          }
          if (proto) {
            var args = [objectExpression$3([]), proto];
            if (node.properties.length) args.push(node);
            path.replaceWith(callExpression$c(file.addHelper("extends"), args));
          }
        }
      }
    };
  });

  var _templateObject$d;
  var transformReactConstantElements = declare(function (api, options) {
    api.assertVersion("*");
    var allowMutablePropsOnTags = options.allowMutablePropsOnTags;
    if (allowMutablePropsOnTags != null && !Array.isArray(allowMutablePropsOnTags)) {
      throw new Error(".allowMutablePropsOnTags must be an array, null, or undefined.");
    }
    var HOISTED = new WeakMap();
    function declares(node, scope) {
      if (isJSXIdentifier$3(node, {
        name: "this"
      }) || isJSXIdentifier$3(node, {
        name: "arguments"
      }) || isJSXIdentifier$3(node, {
        name: "super"
      }) || isJSXIdentifier$3(node, {
        name: "new"
      })) {
        var path = scope.path;
        return path.isFunctionParent() && !path.isArrowFunctionExpression();
      }
      return scope.hasOwnBinding(node.name);
    }
    function isHoistingScope(_ref) {
      var path = _ref.path;
      return path.isFunctionParent() || path.isLoop() || path.isProgram();
    }
    function getHoistingScope(scope) {
      while (!isHoistingScope(scope)) scope = scope.parent;
      return scope;
    }
    var targetScopeVisitor = {
      ReferencedIdentifier: function ReferencedIdentifier(path, state) {
        var node = path.node;
        var scope = path.scope;
        while (scope !== state.jsxScope) {
          if (declares(node, scope)) return;
          scope = scope.parent;
        }
        while (scope) {
          if (scope === state.targetScope) return;
          if (declares(node, scope)) break;
          scope = scope.parent;
        }
        state.targetScope = getHoistingScope(scope);
      }
    };
    var immutabilityVisitor = {
      enter: function enter(path, state) {
        var _expressionResult$deo;
        var stop = function stop() {
          state.isImmutable = false;
          path.stop();
        };
        var skip = function skip() {
          path.skip();
        };
        if (path.isJSXClosingElement()) {
          skip();
          return;
        }
        if (path.isJSXIdentifier({
          name: "ref"
        }) && path.parentPath.isJSXAttribute({
          name: path.node
        })) {
          stop();
          return;
        }
        if (path.isJSXIdentifier() || path.isJSXMemberExpression() || path.isJSXNamespacedName() || path.isImmutable()) {
          return;
        }
        if (path.isIdentifier()) {
          var binding = path.scope.getBinding(path.node.name);
          if (binding != null && binding.constant) return;
        }
        var mutablePropsAllowed = state.mutablePropsAllowed;
        if (mutablePropsAllowed && path.isFunction()) {
          path.traverse(targetScopeVisitor, state);
          skip();
          return;
        }
        if (!path.isPure()) {
          stop();
          return;
        }
        var expressionResult = path.evaluate();
        if (expressionResult.confident) {
          var value = expressionResult.value;
          if (mutablePropsAllowed || value === null || typeof value !== "object" && typeof value !== "function") {
            skip();
            return;
          }
        } else if ((_expressionResult$deo = expressionResult.deopt) != null && _expressionResult$deo.isIdentifier()) {
          return;
        }
        stop();
      }
    };
    var hoistingVisitor = Object.assign({}, immutabilityVisitor, targetScopeVisitor);
    return {
      name: "transform-react-constant-elements",
      visitor: {
        "JSXElement|JSXFragment": function JSXElementJSXFragment(path) {
          var _jsxScope;
          if (HOISTED.has(path.node)) return;
          var mutablePropsAllowed = false;
          var name;
          if (path.isJSXElement()) {
            name = path.node.openingElement.name;
            if (allowMutablePropsOnTags != null) {
              var lastSegment = name;
              while (isJSXMemberExpression$2(lastSegment)) {
                lastSegment = lastSegment.property;
              }
              var elementName = lastSegment.name;
              mutablePropsAllowed = allowMutablePropsOnTags.includes(elementName);
            }
          } else {
            name = path.node;
          }
          var jsxScope;
          var current = path;
          while (!jsxScope && current.parentPath.isJSX()) {
            current = current.parentPath;
            jsxScope = HOISTED.get(current.node);
          }
          (_jsxScope = jsxScope) != null ? _jsxScope : jsxScope = path.scope;
          HOISTED.set(path.node, jsxScope);
          var visitorState = {
            isImmutable: true,
            mutablePropsAllowed: mutablePropsAllowed,
            jsxScope: jsxScope,
            targetScope: path.scope.getProgramParent()
          };
          path.traverse(hoistingVisitor, visitorState);
          if (!visitorState.isImmutable) return;
          var targetScope = visitorState.targetScope;
          for (var currentScope = jsxScope;;) {
            if (targetScope === currentScope) return;
            if (isHoistingScope(currentScope)) break;
            currentScope = currentScope.parent;
            if (!currentScope) {
              throw new Error("Internal @babel/plugin-transform-react-constant-elements error: " + "targetScope must be an ancestor of jsxScope. " + "This is a Babel bug, please report it.");
            }
          }
          var id = path.scope.generateUidBasedOnNode(name);
          targetScope.push({
            id: identifier$e(id)
          });
          HOISTED.set(path.node, targetScope);
          var replacement = template$1.expression.ast(_templateObject$d || (_templateObject$d = _taggedTemplateLiteralLoose(["\n          ", " || (", " = ", ")\n        "])), identifier$e(id), identifier$e(id), path.node);
          if (path.parentPath.isJSXElement() || path.parentPath.isJSXAttribute() || path.parentPath.isJSXFragment()) {
            replacement = jsxExpressionContainer$1(replacement);
          }
          path.replaceWith(replacement);
        }
      }
    };
  });

  var transformReactDisplayName = declare(function (api) {
    api.assertVersion("*");
    function addDisplayName(id, call) {
      var props = call.arguments[0].properties;
      var safe = true;
      for (var i = 0; i < props.length; i++) {
        var prop = props[i];
        if (isSpreadElement$1(prop)) {
          continue;
        }
        var key = toComputedKey$2(prop);
        if (isStringLiteral$5(key, {
          value: "displayName"
        })) {
          safe = false;
          break;
        }
      }
      if (safe) {
        props.unshift(objectProperty$1(identifier$e("displayName"), stringLiteral$6(id)));
      }
    }
    var isCreateClassCallExpression = buildMatchMemberExpression$1("React.createClass");
    var isCreateClassAddon = function isCreateClassAddon(callee) {
      return isIdentifier$f(callee, {
        name: "createReactClass"
      });
    };
    function isCreateClass(node) {
      if (!node || !isCallExpression$8(node)) return false;
      if (!isCreateClassCallExpression(node.callee) && !isCreateClassAddon(node.callee)) {
        return false;
      }
      var args = node.arguments;
      if (args.length !== 1) return false;
      var first = args[0];
      if (!isObjectExpression$3(first)) return false;
      return true;
    }
    return {
      name: "transform-react-display-name",
      visitor: {
        ExportDefaultDeclaration: function ExportDefaultDeclaration(_ref, state) {
          var node = _ref.node;
          if (isCreateClass(node.declaration)) {
            var filename = state.filename || "unknown";
            var displayName = path$1.basename(filename, path$1.extname(filename));
            if (displayName === "index") {
              displayName = path$1.basename(path$1.dirname(filename));
            }
            addDisplayName(displayName, node.declaration);
          }
        },
        CallExpression: function CallExpression(path) {
          var node = path.node;
          if (!isCreateClass(node)) return;
          var id;
          path.find(function (path) {
            if (path.isAssignmentExpression()) {
              id = path.node.left;
            } else if (path.isObjectProperty()) {
              id = path.node.key;
            } else if (path.isVariableDeclarator()) {
              id = path.node.id;
            } else if (path.isStatement()) {
              return true;
            }
            if (id) return true;
          });
          if (!id) return;
          if (isMemberExpression$8(id)) {
            id = id.property;
          }
          if (isIdentifier$f(id)) {
            addDisplayName(id.name, node);
          }
        }
      }
    };
  });

  var booleanLiteral = booleanLiteral$2,
    callExpression = callExpression$c,
    identifier = identifier$e,
    inherits = inherits$3,
    isIdentifier = isIdentifier$f,
    isJSXExpressionContainer = isJSXExpressionContainer$1,
    isJSXIdentifier = isJSXIdentifier$3,
    isJSXMemberExpression = isJSXMemberExpression$2,
    isJSXNamespacedName = isJSXNamespacedName$1,
    isJSXSpreadAttribute = isJSXSpreadAttribute$1,
    isObjectExpression = isObjectExpression$3,
    isReferenced = isReferenced$2,
    isStringLiteral = isStringLiteral$5,
    isValidIdentifier = isValidIdentifier$1,
    memberExpression = memberExpression$a,
    nullLiteral = nullLiteral$2,
    objectExpression = objectExpression$3,
    objectProperty = objectProperty$1,
    react = react$3,
    spreadElement = spreadElement$2,
    stringLiteral = stringLiteral$6,
    thisExpression = thisExpression$4;
  function helper (opts) {
    var visitor = {};
    visitor.JSXNamespacedName = function (path) {
      if (opts.throwIfNamespace) {
        throw path.buildCodeFrameError("Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.");
      }
    };
    visitor.JSXSpreadChild = function (path) {
      throw path.buildCodeFrameError("Spread children are not supported in React.");
    };
    visitor.JSXElement = {
      exit: function exit(path, state) {
        var callExpr = buildElementCall(path, state);
        if (callExpr) {
          path.replaceWith(inherits(callExpr, path.node));
        }
      }
    };
    visitor.JSXFragment = {
      exit: function exit(path, state) {
        if (opts.compat) {
          throw path.buildCodeFrameError("Fragment tags are only supported in React 16 and up.");
        }
        var callExpr = buildFragmentCall(path, state);
        if (callExpr) {
          path.replaceWith(inherits(callExpr, path.node));
        }
      }
    };
    return visitor;
    function convertJSXIdentifier(node, parent) {
      if (isJSXIdentifier(node)) {
        if (node.name === "this" && isReferenced(node, parent)) {
          return thisExpression();
        } else if (isValidIdentifier(node.name, false)) {
          node.type = "Identifier";
          return node;
        } else {
          return stringLiteral(node.name);
        }
      } else if (isJSXMemberExpression(node)) {
        return memberExpression(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
      } else if (isJSXNamespacedName(node)) {
        return stringLiteral(node.namespace.name + ":" + node.name.name);
      }
      return node;
    }
    function convertAttributeValue(node) {
      if (isJSXExpressionContainer(node)) {
        return node.expression;
      } else {
        return node;
      }
    }
    function convertAttribute(node) {
      if (isJSXSpreadAttribute(node)) {
        return spreadElement(node.argument);
      }
      var value = convertAttributeValue(node.value || booleanLiteral(true));
      if (isStringLiteral(value) && !isJSXExpressionContainer(node.value)) {
        var _value$extra;
        value.value = value.value.replace(/\n\s+/g, " ");
        (_value$extra = value.extra) == null || delete _value$extra.raw;
      }
      if (isJSXNamespacedName(node.name)) {
        node.name = stringLiteral(node.name.namespace.name + ":" + node.name.name.name);
      } else if (isValidIdentifier(node.name.name, false)) {
        node.name.type = "Identifier";
      } else {
        node.name = stringLiteral(node.name.name);
      }
      return inherits(objectProperty(node.name, value), node);
    }
    function buildElementCall(path, pass) {
      if (opts.filter && !opts.filter(path.node, pass)) return;
      var openingPath = path.get("openingElement");
      path.node.children = react.buildChildren(path.node);
      var tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node);
      var args = [];
      var tagName;
      if (isIdentifier(tagExpr)) {
        tagName = tagExpr.name;
      } else if (isStringLiteral(tagExpr)) {
        tagName = tagExpr.value;
      }
      var state = {
        tagExpr: tagExpr,
        tagName: tagName,
        args: args,
        pure: false
      };
      if (opts.pre) {
        opts.pre(state, pass);
      }
      var attribs = openingPath.node.attributes;
      var convertedAttributes;
      if (attribs.length) {
        {
          convertedAttributes = buildOpeningElementAttributes(attribs, pass);
        }
      } else {
        convertedAttributes = nullLiteral();
      }
      args.push.apply(args, [convertedAttributes].concat(_toConsumableArray(path.node.children)));
      if (opts.post) {
        opts.post(state, pass);
      }
      var call = state.call || callExpression(state.callee, args);
      if (state.pure) annotateAsPure(call);
      return call;
    }
    function pushProps(_props, objs) {
      if (!_props.length) return _props;
      objs.push(objectExpression(_props));
      return [];
    }
    function buildOpeningElementAttributes(attribs, pass) {
      var _props = [];
      var objs = [];
      var _pass$opts$useSpread = pass.opts.useSpread,
        useSpread = _pass$opts$useSpread === void 0 ? false : _pass$opts$useSpread;
      if (typeof useSpread !== "boolean") {
        throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useSpread (defaults to false)");
      }
      var useBuiltIns = pass.opts.useBuiltIns || false;
      if (typeof useBuiltIns !== "boolean") {
        throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)");
      }
      if (useSpread && useBuiltIns) {
        throw new Error("transform-react-jsx currently only accepts useBuiltIns or useSpread " + "but not both");
      }
      if (useSpread) {
        var props = attribs.map(convertAttribute);
        return objectExpression(props);
      }
      while (attribs.length) {
        var prop = attribs.shift();
        if (isJSXSpreadAttribute(prop)) {
          _props = pushProps(_props, objs);
          objs.push(prop.argument);
        } else {
          _props.push(convertAttribute(prop));
        }
      }
      pushProps(_props, objs);
      var convertedAttribs;
      if (objs.length === 1) {
        convertedAttribs = objs[0];
      } else {
        if (!isObjectExpression(objs[0])) {
          objs.unshift(objectExpression([]));
        }
        var helper = useBuiltIns ? memberExpression(identifier("Object"), identifier("assign")) : pass.addHelper("extends");
        convertedAttribs = callExpression(helper, objs);
      }
      return convertedAttribs;
    }
    function buildFragmentCall(path, pass) {
      if (opts.filter && !opts.filter(path.node, pass)) return;
      path.node.children = react.buildChildren(path.node);
      var args = [];
      var tagName = null;
      var tagExpr = pass.get("jsxFragIdentifier")();
      var state = {
        tagExpr: tagExpr,
        tagName: tagName,
        args: args,
        pure: false
      };
      if (opts.pre) {
        opts.pre(state, pass);
      }
      args.push.apply(args, [nullLiteral()].concat(_toConsumableArray(path.node.children)));
      if (opts.post) {
        opts.post(state, pass);
      }
      pass.set("usedFragment", true);
      var call = state.call || callExpression(state.callee, args);
      if (state.pure) annotateAsPure(call);
      return call;
    }
  }

  var transformReactInlineElements = declare(function (api) {
    api.assertVersion("*");
    function hasRefOrSpread(attrs) {
      for (var i = 0; i < attrs.length; i++) {
        var attr = attrs[i];
        if (isJSXSpreadAttribute$1(attr)) return true;
        if (isJSXAttributeOfName(attr, "ref")) return true;
      }
      return false;
    }
    function isJSXAttributeOfName(attr, name) {
      return isJSXAttribute(attr) && isJSXIdentifier$3(attr.name, {
        name: name
      });
    }
    var visitor = helper({
      filter: function filter(node) {
        return node.type === "JSXElement" && !hasRefOrSpread(node.openingElement.attributes);
      },
      pre: function pre(state) {
        var tagName = state.tagName;
        var args = state.args;
        if (react$3.isCompatTag(tagName)) {
          args.push(stringLiteral$6(tagName));
        } else {
          args.push(state.tagExpr);
        }
      },
      post: function post(state, pass) {
        state.callee = pass.addHelper("jsx");
        var props = state.args[1];
        var hasKey = false;
        if (isObjectExpression$3(props)) {
          var keyIndex = props.properties.findIndex(function (prop) {
            return isIdentifier$f(prop.key, {
              name: "key"
            });
          });
          if (keyIndex > -1) {
            state.args.splice(2, 0, props.properties[keyIndex].value);
            props.properties.splice(keyIndex, 1);
            hasKey = true;
          }
        } else if (isNullLiteral$1(props)) {
          state.args.splice(1, 1, objectExpression$3([]));
        }
        if (!hasKey && state.args.length > 2) {
          state.args.splice(2, 0, unaryExpression$5("void", numericLiteral$6(0)));
        }
        state.pure = true;
      }
    });
    return {
      name: "transform-react-inline-elements",
      visitor: visitor
    };
  });

  var _templateObject$c;
  var DEFAULT = {
    importSource: "react",
    runtime: "automatic",
    pragma: "React.createElement",
    pragmaFrag: "React.Fragment"
  };
  var JSX_SOURCE_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxImportSource\s+(\S+)\s*$/m;
  var JSX_RUNTIME_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxRuntime\s+(\S+)\s*$/m;
  var JSX_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsx\s+(\S+)\s*$/m;
  var JSX_FRAG_ANNOTATION_REGEX = /^\s*(?:\*\s*)?@jsxFrag\s+(\S+)\s*$/m;
  var get = function get(pass, name) {
    return pass.get("@babel/plugin-react-jsx/" + name);
  };
  var set = function set(pass, name, v) {
    return pass.set("@babel/plugin-react-jsx/" + name, v);
  };
  function hasProto(node) {
    return node.properties.some(function (value) {
      return isObjectProperty$3(value, {
        computed: false,
        shorthand: false
      }) && (isIdentifier$f(value.key, {
        name: "__proto__"
      }) || isStringLiteral$5(value.key, {
        value: "__proto__"
      }));
    });
  }
  function createPlugin(_ref) {
    var name = _ref.name,
      development = _ref.development;
    return declare(function (_, options) {
      var PURE_ANNOTATION = options.pure,
        _options$throwIfNames = options.throwIfNamespace,
        throwIfNamespace = _options$throwIfNames === void 0 ? true : _options$throwIfNames,
        filter = options.filter,
        _options$runtime = options.runtime,
        RUNTIME_DEFAULT = _options$runtime === void 0 ? development ? "automatic" : "classic" : _options$runtime,
        _options$importSource = options.importSource,
        IMPORT_SOURCE_DEFAULT = _options$importSource === void 0 ? DEFAULT.importSource : _options$importSource,
        _options$pragma = options.pragma,
        PRAGMA_DEFAULT = _options$pragma === void 0 ? DEFAULT.pragma : _options$pragma,
        _options$pragmaFrag = options.pragmaFrag,
        PRAGMA_FRAG_DEFAULT = _options$pragmaFrag === void 0 ? DEFAULT.pragmaFrag : _options$pragmaFrag;
      {
        var _options$useSpread = options.useSpread,
          useSpread = _options$useSpread === void 0 ? false : _options$useSpread,
          _options$useBuiltIns = options.useBuiltIns,
          useBuiltIns = _options$useBuiltIns === void 0 ? false : _options$useBuiltIns;
        if (RUNTIME_DEFAULT === "classic") {
          if (typeof useSpread !== "boolean") {
            throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useSpread (defaults to false)");
          }
          if (typeof useBuiltIns !== "boolean") {
            throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)");
          }
          if (useSpread && useBuiltIns) {
            throw new Error("transform-react-jsx currently only accepts useBuiltIns or useSpread " + "but not both");
          }
        }
      }
      var injectMetaPropertiesVisitor = {
        JSXOpeningElement: function JSXOpeningElement(path, state) {
          var attributes = [];
          if (isThisAllowed(path.scope)) {
            attributes.push(jsxAttribute(jsxIdentifier$1("__self"), jsxExpressionContainer$1(thisExpression$4())));
          }
          attributes.push(jsxAttribute(jsxIdentifier$1("__source"), jsxExpressionContainer$1(makeSource(path, state))));
          path.pushContainer("attributes", attributes);
        }
      };
      return {
        name: name,
        inherits: syntaxJsx,
        visitor: {
          JSXNamespacedName: function JSXNamespacedName(path) {
            if (throwIfNamespace) {
              throw path.buildCodeFrameError("Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.");
            }
          },
          JSXSpreadChild: function JSXSpreadChild(path) {
            throw path.buildCodeFrameError("Spread children are not supported in React.");
          },
          Program: {
            enter: function enter(path, state) {
              var file = state.file;
              var runtime = RUNTIME_DEFAULT;
              var source = IMPORT_SOURCE_DEFAULT;
              var pragma = PRAGMA_DEFAULT;
              var pragmaFrag = PRAGMA_FRAG_DEFAULT;
              var sourceSet = !!options.importSource;
              var pragmaSet = !!options.pragma;
              var pragmaFragSet = !!options.pragmaFrag;
              if (file.ast.comments) {
                for (var _iterator = _createForOfIteratorHelperLoose(file.ast.comments), _step; !(_step = _iterator()).done;) {
                  var comment = _step.value;
                  var sourceMatches = JSX_SOURCE_ANNOTATION_REGEX.exec(comment.value);
                  if (sourceMatches) {
                    source = sourceMatches[1];
                    sourceSet = true;
                  }
                  var runtimeMatches = JSX_RUNTIME_ANNOTATION_REGEX.exec(comment.value);
                  if (runtimeMatches) {
                    runtime = runtimeMatches[1];
                  }
                  var jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value);
                  if (jsxMatches) {
                    pragma = jsxMatches[1];
                    pragmaSet = true;
                  }
                  var jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(comment.value);
                  if (jsxFragMatches) {
                    pragmaFrag = jsxFragMatches[1];
                    pragmaFragSet = true;
                  }
                }
              }
              set(state, "runtime", runtime);
              if (runtime === "classic") {
                if (sourceSet) {
                  throw path.buildCodeFrameError("importSource cannot be set when runtime is classic.");
                }
                var createElement = toMemberExpression(pragma);
                var fragment = toMemberExpression(pragmaFrag);
                set(state, "id/createElement", function () {
                  return cloneNode$g(createElement);
                });
                set(state, "id/fragment", function () {
                  return cloneNode$g(fragment);
                });
                set(state, "defaultPure", pragma === DEFAULT.pragma);
              } else if (runtime === "automatic") {
                if (pragmaSet || pragmaFragSet) {
                  throw path.buildCodeFrameError("pragma and pragmaFrag cannot be set when runtime is automatic.");
                }
                var define = function define(name, id) {
                  return set(state, name, createImportLazily(state, path, id, source));
                };
                define("id/jsx", development ? "jsxDEV" : "jsx");
                define("id/jsxs", development ? "jsxDEV" : "jsxs");
                define("id/createElement", "createElement");
                define("id/fragment", "Fragment");
                set(state, "defaultPure", source === DEFAULT.importSource);
              } else {
                throw path.buildCodeFrameError("Runtime must be either \"classic\" or \"automatic\".");
              }
              if (development) {
                path.traverse(injectMetaPropertiesVisitor, state);
              }
            }
          },
          JSXFragment: {
            exit: function exit(path, file) {
              var callExpr;
              if (get(file, "runtime") === "classic") {
                callExpr = buildCreateElementFragmentCall(path, file);
              } else {
                callExpr = buildJSXFragmentCall(path, file);
              }
              path.replaceWith(inherits$3(callExpr, path.node));
            }
          },
          JSXElement: {
            exit: function exit(path, file) {
              var callExpr;
              if (get(file, "runtime") === "classic" || shouldUseCreateElement(path)) {
                callExpr = buildCreateElementCall(path, file);
              } else {
                callExpr = buildJSXElementCall(path, file);
              }
              path.replaceWith(inherits$3(callExpr, path.node));
            }
          },
          JSXAttribute: function JSXAttribute(path) {
            if (isJSXElement(path.node.value)) {
              path.node.value = jsxExpressionContainer$1(path.node.value);
            }
          }
        }
      };
      function isDerivedClass(classPath) {
        return classPath.node.superClass !== null;
      }
      function isThisAllowed(scope) {
        do {
          var _scope = scope,
            path = _scope.path;
          if (path.isFunctionParent() && !path.isArrowFunctionExpression()) {
            if (!path.isMethod()) {
              return true;
            }
            if (path.node.kind !== "constructor") {
              return true;
            }
            return !isDerivedClass(path.parentPath.parentPath);
          }
          if (path.isTSModuleBlock()) {
            return false;
          }
        } while (scope = scope.parent);
        return true;
      }
      function call(pass, name, args) {
        var node = callExpression$c(get(pass, "id/" + name)(), args);
        if (PURE_ANNOTATION != null ? PURE_ANNOTATION : get(pass, "defaultPure")) annotateAsPure(node);
        return node;
      }
      function shouldUseCreateElement(path) {
        var openingPath = path.get("openingElement");
        var attributes = openingPath.node.attributes;
        var seenPropsSpread = false;
        for (var i = 0; i < attributes.length; i++) {
          var attr = attributes[i];
          if (seenPropsSpread && isJSXAttribute(attr) && attr.name.name === "key") {
            return true;
          } else if (isJSXSpreadAttribute$1(attr)) {
            seenPropsSpread = true;
          }
        }
        return false;
      }
      function convertJSXIdentifier(node, parent) {
        if (isJSXIdentifier$3(node)) {
          if (node.name === "this" && isReferenced$2(node, parent)) {
            return thisExpression$4();
          } else if (isValidIdentifier$1(node.name, false)) {
            node.type = "Identifier";
            return node;
          } else {
            return stringLiteral$6(node.name);
          }
        } else if (isJSXMemberExpression$2(node)) {
          return memberExpression$a(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
        } else if (isJSXNamespacedName$1(node)) {
          return stringLiteral$6(node.namespace.name + ":" + node.name.name);
        }
        return node;
      }
      function convertAttributeValue(node) {
        if (isJSXExpressionContainer$1(node)) {
          return node.expression;
        } else {
          return node;
        }
      }
      function accumulateAttribute(array, attribute) {
        if (isJSXSpreadAttribute$1(attribute.node)) {
          var arg = attribute.node.argument;
          if (isObjectExpression$3(arg) && !hasProto(arg)) {
            array.push.apply(array, _toConsumableArray(arg.properties));
          } else {
            array.push(spreadElement$2(arg));
          }
          return array;
        }
        var value = convertAttributeValue(attribute.node.name.name !== "key" ? attribute.node.value || booleanLiteral$2(true) : attribute.node.value);
        if (attribute.node.name.name === "key" && value === null) {
          throw attribute.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
        }
        if (isStringLiteral$5(value) && !isJSXExpressionContainer$1(attribute.node.value)) {
          var _value$extra;
          value.value = value.value.replace(/\n\s+/g, " ");
          (_value$extra = value.extra) == null || delete _value$extra.raw;
        }
        if (isJSXNamespacedName$1(attribute.node.name)) {
          attribute.node.name = stringLiteral$6(attribute.node.name.namespace.name + ":" + attribute.node.name.name.name);
        } else if (isValidIdentifier$1(attribute.node.name.name, false)) {
          attribute.node.name.type = "Identifier";
        } else {
          attribute.node.name = stringLiteral$6(attribute.node.name.name);
        }
        array.push(inherits$3(objectProperty$1(attribute.node.name, value), attribute.node));
        return array;
      }
      function buildChildrenProperty(children) {
        var childrenNode;
        if (children.length === 1) {
          childrenNode = children[0];
        } else if (children.length > 1) {
          childrenNode = arrayExpression$1(children);
        } else {
          return undefined;
        }
        return objectProperty$1(identifier$e("children"), childrenNode);
      }
      function buildJSXElementCall(path, file) {
        var openingPath = path.get("openingElement");
        var args = [getTag(openingPath)];
        var attribsArray = [];
        var extracted = Object.create(null);
        for (var _iterator2 = _createForOfIteratorHelperLoose(openingPath.get("attributes")), _step2; !(_step2 = _iterator2()).done;) {
          var attr = _step2.value;
          if (attr.isJSXAttribute() && isJSXIdentifier$3(attr.node.name)) {
            var _name = attr.node.name.name;
            switch (_name) {
              case "__source":
              case "__self":
                if (extracted[_name]) throw sourceSelfError(path, _name);
              case "key":
                {
                  var keyValue = convertAttributeValue(attr.node.value);
                  if (keyValue === null) {
                    throw attr.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
                  }
                  extracted[_name] = keyValue;
                  break;
                }
              default:
                attribsArray.push(attr);
            }
          } else {
            attribsArray.push(attr);
          }
        }
        var children = react$3.buildChildren(path.node);
        var attribs;
        if (attribsArray.length || children.length) {
          attribs = buildJSXOpeningElementAttributes(attribsArray, children);
        } else {
          attribs = objectExpression$3([]);
        }
        args.push(attribs);
        if (development) {
          var _extracted$key;
          args.push((_extracted$key = extracted.key) != null ? _extracted$key : path.scope.buildUndefinedNode(), booleanLiteral$2(children.length > 1));
          if (extracted.__source) {
            args.push(extracted.__source);
            if (extracted.__self) args.push(extracted.__self);
          } else if (extracted.__self) {
            args.push(path.scope.buildUndefinedNode(), extracted.__self);
          }
        } else if (extracted.key !== undefined) {
          args.push(extracted.key);
        }
        return call(file, children.length > 1 ? "jsxs" : "jsx", args);
      }
      function buildJSXOpeningElementAttributes(attribs, children) {
        var props = attribs.reduce(accumulateAttribute, []);
        if ((children == null ? void 0 : children.length) > 0) {
          props.push(buildChildrenProperty(children));
        }
        return objectExpression$3(props);
      }
      function buildJSXFragmentCall(path, file) {
        var args = [get(file, "id/fragment")()];
        var children = react$3.buildChildren(path.node);
        args.push(objectExpression$3(children.length > 0 ? [buildChildrenProperty(children)] : []));
        if (development) {
          args.push(path.scope.buildUndefinedNode(), booleanLiteral$2(children.length > 1));
        }
        return call(file, children.length > 1 ? "jsxs" : "jsx", args);
      }
      function buildCreateElementFragmentCall(path, file) {
        if (filter && !filter(path.node, file)) return;
        return call(file, "createElement", [get(file, "id/fragment")(), nullLiteral$2()].concat(_toConsumableArray(react$3.buildChildren(path.node))));
      }
      function buildCreateElementCall(path, file) {
        var openingPath = path.get("openingElement");
        return call(file, "createElement", [getTag(openingPath), buildCreateElementOpeningElementAttributes(file, path, openingPath.get("attributes"))].concat(_toConsumableArray(react$3.buildChildren(path.node))));
      }
      function getTag(openingPath) {
        var tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node);
        var tagName;
        if (isIdentifier$f(tagExpr)) {
          tagName = tagExpr.name;
        } else if (isStringLiteral$5(tagExpr)) {
          tagName = tagExpr.value;
        }
        if (react$3.isCompatTag(tagName)) {
          return stringLiteral$6(tagName);
        } else {
          return tagExpr;
        }
      }
      function buildCreateElementOpeningElementAttributes(file, path, attribs) {
        var runtime = get(file, "runtime");
        {
          if (runtime !== "automatic") {
            var objs = [];
            var _props = attribs.reduce(accumulateAttribute, []);
            if (!useSpread) {
              var start = 0;
              _props.forEach(function (prop, i) {
                if (isSpreadElement$1(prop)) {
                  if (i > start) {
                    objs.push(objectExpression$3(_props.slice(start, i)));
                  }
                  objs.push(prop.argument);
                  start = i + 1;
                }
              });
              if (_props.length > start) {
                objs.push(objectExpression$3(_props.slice(start)));
              }
            } else if (_props.length) {
              objs.push(objectExpression$3(_props));
            }
            if (!objs.length) {
              return nullLiteral$2();
            }
            if (objs.length === 1) {
              if (!(isSpreadElement$1(_props[0]) && isObjectExpression$3(_props[0].argument))) {
                return objs[0];
              }
            }
            if (!isObjectExpression$3(objs[0])) {
              objs.unshift(objectExpression$3([]));
            }
            var helper = useBuiltIns ? memberExpression$a(identifier$e("Object"), identifier$e("assign")) : file.addHelper("extends");
            return callExpression$c(helper, objs);
          }
        }
        var props = [];
        var found = Object.create(null);
        for (var _iterator3 = _createForOfIteratorHelperLoose(attribs), _step3; !(_step3 = _iterator3()).done;) {
          var attr = _step3.value;
          var node = attr.node;
          var _name2 = isJSXAttribute(node) && isJSXIdentifier$3(node.name) && node.name.name;
          if (runtime === "automatic" && (_name2 === "__source" || _name2 === "__self")) {
            if (found[_name2]) throw sourceSelfError(path, _name2);
            found[_name2] = true;
          }
          accumulateAttribute(props, attr);
        }
        return props.length === 1 && isSpreadElement$1(props[0]) && !isObjectExpression$3(props[0].argument) ? props[0].argument : props.length > 0 ? objectExpression$3(props) : nullLiteral$2();
      }
    });
    function getSource(source, importName) {
      switch (importName) {
        case "Fragment":
          return source + "/" + (development ? "jsx-dev-runtime" : "jsx-runtime");
        case "jsxDEV":
          return source + "/jsx-dev-runtime";
        case "jsx":
        case "jsxs":
          return source + "/jsx-runtime";
        case "createElement":
          return source;
      }
    }
    function createImportLazily(pass, path, importName, source) {
      return function () {
        var actualSource = getSource(source, importName);
        if (isModule(path)) {
          var reference = get(pass, "imports/" + importName);
          if (reference) return cloneNode$g(reference);
          reference = addNamed(path, importName, actualSource, {
            importedInterop: "uncompiled",
            importPosition: "after"
          });
          set(pass, "imports/" + importName, reference);
          return reference;
        } else {
          var _reference = get(pass, "requires/" + actualSource);
          if (_reference) {
            _reference = cloneNode$g(_reference);
          } else {
            _reference = addNamespace(path, actualSource, {
              importedInterop: "uncompiled"
            });
            set(pass, "requires/" + actualSource, _reference);
          }
          return memberExpression$a(_reference, identifier$e(importName));
        }
      };
    }
  }
  function toMemberExpression(id) {
    return id.split(".").map(function (name) {
      return identifier$e(name);
    }).reduce(function (object, property) {
      return memberExpression$a(object, property);
    });
  }
  function makeSource(path, state) {
    var location = path.node.loc;
    if (!location) {
      return path.scope.buildUndefinedNode();
    }
    if (!state.fileNameIdentifier) {
      var _state$filename = state.filename,
        filename = _state$filename === void 0 ? "" : _state$filename;
      var fileNameIdentifier = path.scope.generateUidIdentifier("_jsxFileName");
      path.scope.getProgramParent().push({
        id: fileNameIdentifier,
        init: stringLiteral$6(filename)
      });
      state.fileNameIdentifier = fileNameIdentifier;
    }
    return makeTrace(cloneNode$g(state.fileNameIdentifier), location.start.line, location.start.column);
  }
  function makeTrace(fileNameIdentifier, lineNumber, column0Based) {
    var fileLineLiteral = lineNumber != null ? numericLiteral$6(lineNumber) : nullLiteral$2();
    var fileColumnLiteral = column0Based != null ? numericLiteral$6(column0Based + 1) : nullLiteral$2();
    return template$1.expression.ast(_templateObject$c || (_templateObject$c = _taggedTemplateLiteralLoose(["{\n    fileName: ", ",\n    lineNumber: ", ",\n    columnNumber: ", ",\n  }"])), fileNameIdentifier, fileLineLiteral, fileColumnLiteral);
  }
  function sourceSelfError(path, name) {
    var pluginName = "transform-react-jsx-" + name.slice(2);
    return path.buildCodeFrameError("Duplicate " + name + " prop found. You are most likely using the deprecated " + pluginName + " Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config.");
  }

  var transformReactJSX = createPlugin({
    name: "transform-react-jsx",
    development: false
  });

  var transformReactJsxCompat = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-react-jsx-compat",
      manipulateOptions: function manipulateOptions(_, parserOpts) {
        parserOpts.plugins.push("jsx");
      },
      visitor: helper({
        pre: function pre(state) {
          state.callee = state.tagExpr;
        },
        post: function post(state) {
          if (react$3.isCompatTag(state.tagName)) {
            state.call = callExpression$c(memberExpression$a(memberExpression$a(identifier$e("React"), identifier$e("DOM")), state.tagExpr, isLiteral$5(state.tagExpr)), state.args);
          }
        },
        compat: true
      })
    };
  });

  var plugin = createPlugin({
    name: "transform-react-jsx/development",
    development: true
  });

  var TRACE_ID$1 = "__self";
  function getThisFunctionParent(path) {
    var scope = path.scope;
    do {
      var _scope = scope,
        _path = _scope.path;
      if (_path.isFunctionParent() && !_path.isArrowFunctionExpression()) {
        return _path;
      }
    } while (scope = scope.parent);
    return null;
  }
  function isDerivedClass(classPath) {
    return classPath.node.superClass !== null;
  }
  function isThisAllowed(path) {
    var parentMethodOrFunction = getThisFunctionParent(path);
    if (parentMethodOrFunction === null) {
      return true;
    }
    if (!parentMethodOrFunction.isMethod()) {
      return true;
    }
    if (parentMethodOrFunction.node.kind !== "constructor") {
      return true;
    }
    return !isDerivedClass(parentMethodOrFunction.parentPath.parentPath);
  }
  var transformReactJsxSelf = declare(function (api) {
    api.assertVersion("*");
    var visitor = {
      JSXOpeningElement: function JSXOpeningElement(path) {
        if (!isThisAllowed(path)) {
          return;
        }
        var node = path.node;
        var id = jsxIdentifier$1(TRACE_ID$1);
        var trace = thisExpression$4();
        node.attributes.push(jsxAttribute(id, jsxExpressionContainer$1(trace)));
      }
    };
    return {
      name: "transform-react-jsx-self",
      visitor: {
        Program: function Program(path) {
          path.traverse(visitor);
        }
      }
    };
  });

  var _templateObject$b;
  var TRACE_ID = "__source";
  var FILE_NAME_VAR = "_jsxFileName";
  var createNodeFromNullish = function createNodeFromNullish(val, fn) {
    return val == null ? nullLiteral$2() : fn(val);
  };
  var transformReactJsxSource = declare(function (api) {
    api.assertVersion("*");
    function makeTrace(fileNameIdentifier, _ref) {
      var line = _ref.line,
        column = _ref.column;
      var fileLineLiteral = createNodeFromNullish(line, numericLiteral$6);
      var fileColumnLiteral = createNodeFromNullish(column, function (c) {
        return numericLiteral$6(c + 1);
      });
      return template$1.expression.ast(_templateObject$b || (_templateObject$b = _taggedTemplateLiteralLoose(["{\n      fileName: ", ",\n      lineNumber: ", ",\n      columnNumber: ", ",\n    }"])), fileNameIdentifier, fileLineLiteral, fileColumnLiteral);
    }
    var isSourceAttr = function isSourceAttr(attr) {
      return isJSXAttribute(attr) && attr.name.name === TRACE_ID;
    };
    return {
      name: "transform-react-jsx-source",
      visitor: {
        JSXOpeningElement: function JSXOpeningElement(path, state) {
          var node = path.node;
          if (!node.loc || path.node.attributes.some(isSourceAttr)) {
            return;
          }
          if (!state.fileNameIdentifier) {
            var fileNameId = path.scope.generateUidIdentifier(FILE_NAME_VAR);
            state.fileNameIdentifier = fileNameId;
            path.scope.getProgramParent().push({
              id: fileNameId,
              init: stringLiteral$6(state.filename || "")
            });
          }
          node.attributes.push(jsxAttribute(jsxIdentifier$1(TRACE_ID), jsxExpressionContainer$1(makeTrace(cloneNode$g(state.fileNameIdentifier), node.loc.start))));
        }
      }
    };
  });

  var lib$7 = {};

  var visit = {};

  var interopRequireDefault = {exports: {}};

  (function (module) {
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
  })(interopRequireDefault);
  var interopRequireDefaultExports = interopRequireDefault.exports;

  var require$$1$2 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_assert);

  var hoist$1 = {};

  var util$1 = {};

  var hasRequiredUtil;
  function requireUtil() {
    if (hasRequiredUtil) return util$1;
    hasRequiredUtil = 1;
    util$1.__esModule = true;
    util$1.getTypes = getTypes;
    util$1.isReference = isReference;
    util$1.replaceWithOrRemove = replaceWithOrRemove;
    util$1.runtimeProperty = runtimeProperty;
    util$1.wrapWithTypes = wrapWithTypes;
    var currentTypes = null;
    function wrapWithTypes(types, fn) {
      return function () {
        var oldTypes = currentTypes;
        currentTypes = types;
        try {
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          return fn.apply(this, args);
        } finally {
          currentTypes = oldTypes;
        }
      };
    }
    function getTypes() {
      return currentTypes;
    }
    function runtimeProperty(name) {
      var t = getTypes();
      return t.memberExpression(t.identifier("regeneratorRuntime"), t.identifier(name), false);
    }
    function isReference(path) {
      return path.isReferenced() || path.parentPath.isAssignmentExpression({
        left: path.node
      });
    }
    function replaceWithOrRemove(path, replacement) {
      if (replacement) {
        path.replaceWith(replacement);
      } else {
        path.remove();
      }
    }
    return util$1;
  }

  var hasRequiredHoist;
  function requireHoist() {
    if (hasRequiredHoist) return hoist$1;
    hasRequiredHoist = 1;
    var util = _interopRequireWildcard(requireUtil());
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var hasOwn = Object.prototype.hasOwnProperty;
    hoist$1.hoist = function (funPath) {
      var t = util.getTypes();
      t.assertFunction(funPath.node);
      var vars = {};
      function varDeclToExpr(_ref, includeIdentifiers) {
        var vdec = _ref.node,
          scope = _ref.scope;
        t.assertVariableDeclaration(vdec);
        var exprs = [];
        vdec.declarations.forEach(function (dec) {
          vars[dec.id.name] = t.identifier(dec.id.name);
          scope.removeBinding(dec.id.name);
          if (dec.init) {
            exprs.push(t.assignmentExpression("=", dec.id, dec.init));
          } else if (includeIdentifiers) {
            exprs.push(dec.id);
          }
        });
        if (exprs.length === 0) return null;
        if (exprs.length === 1) return exprs[0];
        return t.sequenceExpression(exprs);
      }
      funPath.get("body").traverse({
        VariableDeclaration: {
          exit: function exit(path) {
            var expr = varDeclToExpr(path, false);
            if (expr === null) {
              path.remove();
            } else {
              util.replaceWithOrRemove(path, t.expressionStatement(expr));
            }
            path.skip();
          }
        },
        ForStatement: function ForStatement(path) {
          var init = path.get("init");
          if (init.isVariableDeclaration()) {
            util.replaceWithOrRemove(init, varDeclToExpr(init, false));
          }
        },
        ForXStatement: function ForXStatement(path) {
          var left = path.get("left");
          if (left.isVariableDeclaration()) {
            util.replaceWithOrRemove(left, varDeclToExpr(left, true));
          }
        },
        FunctionDeclaration: function FunctionDeclaration(path) {
          var node = path.node;
          vars[node.id.name] = node.id;
          var assignment = t.expressionStatement(t.assignmentExpression("=", t.clone(node.id), t.functionExpression(path.scope.generateUidIdentifierBasedOnNode(node), node.params, node.body, node.generator, node.expression)));
          if (path.parentPath.isBlockStatement()) {
            path.parentPath.unshiftContainer("body", assignment);
            path.remove();
          } else {
            util.replaceWithOrRemove(path, assignment);
          }
          path.scope.removeBinding(node.id.name);
          path.skip();
        },
        FunctionExpression: function FunctionExpression(path) {
          path.skip();
        },
        ArrowFunctionExpression: function ArrowFunctionExpression(path) {
          path.skip();
        }
      });
      var paramNames = {};
      funPath.get("params").forEach(function (paramPath) {
        var param = paramPath.node;
        if (t.isIdentifier(param)) {
          paramNames[param.name] = param;
        }
      });
      var declarations = [];
      Object.keys(vars).forEach(function (name) {
        if (!hasOwn.call(paramNames, name)) {
          declarations.push(t.variableDeclarator(vars[name], null));
        }
      });
      if (declarations.length === 0) {
        return null;
      }
      return t.variableDeclaration("var", declarations);
    };
    return hoist$1;
  }

  var emit = {};

  var leap = {};

  var require$$3 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_util$1);

  var hasRequiredLeap;
  function requireLeap() {
    if (hasRequiredLeap) return leap;
    hasRequiredLeap = 1;
    var _interopRequireDefault = interopRequireDefaultExports;
    var _assert = _interopRequireDefault(require$$1$2);
    var _emit = requireEmit();
    var _util = require$$3;
    var _util2 = requireUtil();
    function Entry() {
      _assert["default"].ok(this instanceof Entry);
    }
    function FunctionEntry(returnLoc) {
      Entry.call(this);
      (0, _util2.getTypes)().assertLiteral(returnLoc);
      this.returnLoc = returnLoc;
    }
    (0, _util.inherits)(FunctionEntry, Entry);
    leap.FunctionEntry = FunctionEntry;
    function LoopEntry(breakLoc, continueLoc, label) {
      Entry.call(this);
      var t = (0, _util2.getTypes)();
      t.assertLiteral(breakLoc);
      t.assertLiteral(continueLoc);
      if (label) {
        t.assertIdentifier(label);
      } else {
        label = null;
      }
      this.breakLoc = breakLoc;
      this.continueLoc = continueLoc;
      this.label = label;
    }
    (0, _util.inherits)(LoopEntry, Entry);
    leap.LoopEntry = LoopEntry;
    function SwitchEntry(breakLoc) {
      Entry.call(this);
      (0, _util2.getTypes)().assertLiteral(breakLoc);
      this.breakLoc = breakLoc;
    }
    (0, _util.inherits)(SwitchEntry, Entry);
    leap.SwitchEntry = SwitchEntry;
    function TryEntry(firstLoc, catchEntry, finallyEntry) {
      Entry.call(this);
      var t = (0, _util2.getTypes)();
      t.assertLiteral(firstLoc);
      if (catchEntry) {
        _assert["default"].ok(catchEntry instanceof CatchEntry);
      } else {
        catchEntry = null;
      }
      if (finallyEntry) {
        _assert["default"].ok(finallyEntry instanceof FinallyEntry);
      } else {
        finallyEntry = null;
      }
      _assert["default"].ok(catchEntry || finallyEntry);
      this.firstLoc = firstLoc;
      this.catchEntry = catchEntry;
      this.finallyEntry = finallyEntry;
    }
    (0, _util.inherits)(TryEntry, Entry);
    leap.TryEntry = TryEntry;
    function CatchEntry(firstLoc, paramId) {
      Entry.call(this);
      var t = (0, _util2.getTypes)();
      t.assertLiteral(firstLoc);
      t.assertIdentifier(paramId);
      this.firstLoc = firstLoc;
      this.paramId = paramId;
    }
    (0, _util.inherits)(CatchEntry, Entry);
    leap.CatchEntry = CatchEntry;
    function FinallyEntry(firstLoc, afterLoc) {
      Entry.call(this);
      var t = (0, _util2.getTypes)();
      t.assertLiteral(firstLoc);
      t.assertLiteral(afterLoc);
      this.firstLoc = firstLoc;
      this.afterLoc = afterLoc;
    }
    (0, _util.inherits)(FinallyEntry, Entry);
    leap.FinallyEntry = FinallyEntry;
    function LabeledEntry(breakLoc, label) {
      Entry.call(this);
      var t = (0, _util2.getTypes)();
      t.assertLiteral(breakLoc);
      t.assertIdentifier(label);
      this.breakLoc = breakLoc;
      this.label = label;
    }
    (0, _util.inherits)(LabeledEntry, Entry);
    leap.LabeledEntry = LabeledEntry;
    function LeapManager(emitter) {
      _assert["default"].ok(this instanceof LeapManager);
      _assert["default"].ok(emitter instanceof _emit.Emitter);
      this.emitter = emitter;
      this.entryStack = [new FunctionEntry(emitter.finalLoc)];
    }
    var LMp = LeapManager.prototype;
    leap.LeapManager = LeapManager;
    LMp.withEntry = function (entry, callback) {
      _assert["default"].ok(entry instanceof Entry);
      this.entryStack.push(entry);
      try {
        callback.call(this.emitter);
      } finally {
        var popped = this.entryStack.pop();
        _assert["default"].strictEqual(popped, entry);
      }
    };
    LMp._findLeapLocation = function (property, label) {
      for (var i = this.entryStack.length - 1; i >= 0; --i) {
        var entry = this.entryStack[i];
        var loc = entry[property];
        if (loc) {
          if (label) {
            if (entry.label && entry.label.name === label.name) {
              return loc;
            }
          } else if (entry instanceof LabeledEntry) ; else {
            return loc;
          }
        }
      }
      return null;
    };
    LMp.getBreakLoc = function (label) {
      return this._findLeapLocation("breakLoc", label);
    };
    LMp.getContinueLoc = function (label) {
      return this._findLeapLocation("continueLoc", label);
    };
    return leap;
  }

  var meta = {};

  var hasRequiredMeta;
  function requireMeta() {
    if (hasRequiredMeta) return meta;
    hasRequiredMeta = 1;
    var _interopRequireDefault = interopRequireDefaultExports;
    var _assert = _interopRequireDefault(require$$1$2);
    var _util = requireUtil();
    var mMap = new WeakMap();
    function m(node) {
      if (!mMap.has(node)) {
        mMap.set(node, {});
      }
      return mMap.get(node);
    }
    var hasOwn = Object.prototype.hasOwnProperty;
    function makePredicate(propertyName, knownTypes) {
      function onlyChildren(node) {
        var t = (0, _util.getTypes)();
        t.assertNode(node);
        var result = false;
        function check(child) {
          if (result) ; else if (Array.isArray(child)) {
            child.some(check);
          } else if (t.isNode(child)) {
            _assert["default"].strictEqual(result, false);
            result = predicate(child);
          }
          return result;
        }
        var keys = t.VISITOR_KEYS[node.type];
        if (keys) {
          for (var i = 0; i < keys.length; i++) {
            var key = keys[i];
            var child = node[key];
            check(child);
          }
        }
        return result;
      }
      function predicate(node) {
        (0, _util.getTypes)().assertNode(node);
        var meta = m(node);
        if (hasOwn.call(meta, propertyName)) return meta[propertyName];
        if (hasOwn.call(opaqueTypes, node.type)) return meta[propertyName] = false;
        if (hasOwn.call(knownTypes, node.type)) return meta[propertyName] = true;
        return meta[propertyName] = onlyChildren(node);
      }
      predicate.onlyChildren = onlyChildren;
      return predicate;
    }
    var opaqueTypes = {
      FunctionExpression: true,
      ArrowFunctionExpression: true
    };
    var sideEffectTypes = {
      CallExpression: true,
      ForInStatement: true,
      UnaryExpression: true,
      BinaryExpression: true,
      AssignmentExpression: true,
      UpdateExpression: true,
      NewExpression: true
    };
    var leapTypes = {
      YieldExpression: true,
      BreakStatement: true,
      ContinueStatement: true,
      ReturnStatement: true,
      ThrowStatement: true
    };
    for (var type in leapTypes) {
      if (hasOwn.call(leapTypes, type)) {
        sideEffectTypes[type] = leapTypes[type];
      }
    }
    meta.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes);
    meta.containsLeap = makePredicate("containsLeap", leapTypes);
    return meta;
  }

  var hasRequiredEmit;
  function requireEmit() {
    if (hasRequiredEmit) return emit;
    hasRequiredEmit = 1;
    var _interopRequireDefault = interopRequireDefaultExports;
    var _assert = _interopRequireDefault(require$$1$2);
    var leap = _interopRequireWildcard(requireLeap());
    var meta = _interopRequireWildcard(requireMeta());
    var util = _interopRequireWildcard(requireUtil());
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var hasOwn = Object.prototype.hasOwnProperty;
    function Emitter(contextId) {
      _assert["default"].ok(this instanceof Emitter);
      util.getTypes().assertIdentifier(contextId);
      this.nextTempId = 0;
      this.contextId = contextId;
      this.listing = [];
      this.marked = [true];
      this.insertedLocs = new Set();
      this.finalLoc = this.loc();
      this.tryEntries = [];
      this.leapManager = new leap.LeapManager(this);
    }
    var Ep = Emitter.prototype;
    emit.Emitter = Emitter;
    var PENDING_LOCATION = Number.MAX_VALUE;
    Ep.loc = function () {
      var l = util.getTypes().numericLiteral(PENDING_LOCATION);
      this.insertedLocs.add(l);
      return l;
    };
    Ep.getInsertedLocs = function () {
      return this.insertedLocs;
    };
    Ep.getContextId = function () {
      return util.getTypes().clone(this.contextId);
    };
    Ep.mark = function (loc) {
      util.getTypes().assertLiteral(loc);
      var index = this.listing.length;
      if (loc.value === PENDING_LOCATION) {
        loc.value = index;
      } else {
        _assert["default"].strictEqual(loc.value, index);
      }
      this.marked[index] = true;
      return loc;
    };
    Ep.emit = function (node) {
      var t = util.getTypes();
      if (t.isExpression(node)) {
        node = t.expressionStatement(node);
      }
      t.assertStatement(node);
      this.listing.push(node);
    };
    Ep.emitAssign = function (lhs, rhs) {
      this.emit(this.assign(lhs, rhs));
      return lhs;
    };
    Ep.assign = function (lhs, rhs) {
      var t = util.getTypes();
      return t.expressionStatement(t.assignmentExpression("=", t.cloneDeep(lhs), rhs));
    };
    Ep.contextProperty = function (name, computed) {
      var t = util.getTypes();
      return t.memberExpression(this.getContextId(), computed ? t.stringLiteral(name) : t.identifier(name), !!computed);
    };
    Ep.stop = function (rval) {
      if (rval) {
        this.setReturnValue(rval);
      }
      this.jump(this.finalLoc);
    };
    Ep.setReturnValue = function (valuePath) {
      util.getTypes().assertExpression(valuePath.value);
      this.emitAssign(this.contextProperty("rval"), this.explodeExpression(valuePath));
    };
    Ep.clearPendingException = function (tryLoc, assignee) {
      var t = util.getTypes();
      t.assertLiteral(tryLoc);
      var catchCall = t.callExpression(this.contextProperty("catch", true), [t.clone(tryLoc)]);
      if (assignee) {
        this.emitAssign(assignee, catchCall);
      } else {
        this.emit(catchCall);
      }
    };
    Ep.jump = function (toLoc) {
      this.emitAssign(this.contextProperty("next"), toLoc);
      this.emit(util.getTypes().breakStatement());
    };
    Ep.jumpIf = function (test, toLoc) {
      var t = util.getTypes();
      t.assertExpression(test);
      t.assertLiteral(toLoc);
      this.emit(t.ifStatement(test, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
    };
    Ep.jumpIfNot = function (test, toLoc) {
      var t = util.getTypes();
      t.assertExpression(test);
      t.assertLiteral(toLoc);
      var negatedTest;
      if (t.isUnaryExpression(test) && test.operator === "!") {
        negatedTest = test.argument;
      } else {
        negatedTest = t.unaryExpression("!", test);
      }
      this.emit(t.ifStatement(negatedTest, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
    };
    Ep.makeTempVar = function () {
      return this.contextProperty("t" + this.nextTempId++);
    };
    Ep.getContextFunction = function (id) {
      var t = util.getTypes();
      return t.functionExpression(id || null, [this.getContextId()], t.blockStatement([this.getDispatchLoop()]), false, false);
    };
    Ep.getDispatchLoop = function () {
      var self = this;
      var t = util.getTypes();
      var cases = [];
      var current;
      var alreadyEnded = false;
      self.listing.forEach(function (stmt, i) {
        if (self.marked.hasOwnProperty(i)) {
          cases.push(t.switchCase(t.numericLiteral(i), current = []));
          alreadyEnded = false;
        }
        if (!alreadyEnded) {
          current.push(stmt);
          if (t.isCompletionStatement(stmt)) alreadyEnded = true;
        }
      });
      this.finalLoc.value = this.listing.length;
      cases.push(t.switchCase(this.finalLoc, []), t.switchCase(t.stringLiteral("end"), [t.returnStatement(t.callExpression(this.contextProperty("stop"), []))]));
      return t.whileStatement(t.numericLiteral(1), t.switchStatement(t.assignmentExpression("=", this.contextProperty("prev"), this.contextProperty("next")), cases));
    };
    Ep.getTryLocsList = function () {
      if (this.tryEntries.length === 0) {
        return null;
      }
      var t = util.getTypes();
      var lastLocValue = 0;
      return t.arrayExpression(this.tryEntries.map(function (tryEntry) {
        var thisLocValue = tryEntry.firstLoc.value;
        _assert["default"].ok(thisLocValue >= lastLocValue, "try entries out of order");
        lastLocValue = thisLocValue;
        var ce = tryEntry.catchEntry;
        var fe = tryEntry.finallyEntry;
        var locs = [tryEntry.firstLoc, ce ? ce.firstLoc : null];
        if (fe) {
          locs[2] = fe.firstLoc;
          locs[3] = fe.afterLoc;
        }
        return t.arrayExpression(locs.map(function (loc) {
          return loc && t.clone(loc);
        }));
      }));
    };
    Ep.explode = function (path, ignoreResult) {
      var t = util.getTypes();
      var node = path.node;
      var self = this;
      t.assertNode(node);
      if (t.isDeclaration(node)) throw getDeclError(node);
      if (t.isStatement(node)) return self.explodeStatement(path);
      if (t.isExpression(node)) return self.explodeExpression(path, ignoreResult);
      switch (node.type) {
        case "Program":
          return path.get("body").map(self.explodeStatement, self);
        case "VariableDeclarator":
          throw getDeclError(node);
        case "Property":
        case "SwitchCase":
        case "CatchClause":
          throw new Error(node.type + " nodes should be handled by their parents");
        default:
          throw new Error("unknown Node of type " + JSON.stringify(node.type));
      }
    };
    function getDeclError(node) {
      return new Error("all declarations should have been transformed into " + "assignments before the Exploder began its work: " + JSON.stringify(node));
    }
    Ep.explodeStatement = function (path, labelId) {
      var t = util.getTypes();
      var stmt = path.node;
      var self = this;
      var before, after, head;
      t.assertStatement(stmt);
      if (labelId) {
        t.assertIdentifier(labelId);
      } else {
        labelId = null;
      }
      if (t.isBlockStatement(stmt)) {
        path.get("body").forEach(function (path) {
          self.explodeStatement(path);
        });
        return;
      }
      if (!meta.containsLeap(stmt)) {
        self.emit(stmt);
        return;
      }
      switch (stmt.type) {
        case "ExpressionStatement":
          self.explodeExpression(path.get("expression"), true);
          break;
        case "LabeledStatement":
          after = this.loc();
          self.leapManager.withEntry(new leap.LabeledEntry(after, stmt.label), function () {
            self.explodeStatement(path.get("body"), stmt.label);
          });
          self.mark(after);
          break;
        case "WhileStatement":
          before = this.loc();
          after = this.loc();
          self.mark(before);
          self.jumpIfNot(self.explodeExpression(path.get("test")), after);
          self.leapManager.withEntry(new leap.LoopEntry(after, before, labelId), function () {
            self.explodeStatement(path.get("body"));
          });
          self.jump(before);
          self.mark(after);
          break;
        case "DoWhileStatement":
          var first = this.loc();
          var test = this.loc();
          after = this.loc();
          self.mark(first);
          self.leapManager.withEntry(new leap.LoopEntry(after, test, labelId), function () {
            self.explode(path.get("body"));
          });
          self.mark(test);
          self.jumpIf(self.explodeExpression(path.get("test")), first);
          self.mark(after);
          break;
        case "ForStatement":
          head = this.loc();
          var update = this.loc();
          after = this.loc();
          if (stmt.init) {
            self.explode(path.get("init"), true);
          }
          self.mark(head);
          if (stmt.test) {
            self.jumpIfNot(self.explodeExpression(path.get("test")), after);
          }
          self.leapManager.withEntry(new leap.LoopEntry(after, update, labelId), function () {
            self.explodeStatement(path.get("body"));
          });
          self.mark(update);
          if (stmt.update) {
            self.explode(path.get("update"), true);
          }
          self.jump(head);
          self.mark(after);
          break;
        case "TypeCastExpression":
          return self.explodeExpression(path.get("expression"));
        case "ForInStatement":
          head = this.loc();
          after = this.loc();
          var keyIterNextFn = self.makeTempVar();
          self.emitAssign(keyIterNextFn, t.callExpression(util.runtimeProperty("keys"), [self.explodeExpression(path.get("right"))]));
          self.mark(head);
          var keyInfoTmpVar = self.makeTempVar();
          self.jumpIf(t.memberExpression(t.assignmentExpression("=", keyInfoTmpVar, t.callExpression(t.cloneDeep(keyIterNextFn), [])), t.identifier("done"), false), after);
          self.emitAssign(stmt.left, t.memberExpression(t.cloneDeep(keyInfoTmpVar), t.identifier("value"), false));
          self.leapManager.withEntry(new leap.LoopEntry(after, head, labelId), function () {
            self.explodeStatement(path.get("body"));
          });
          self.jump(head);
          self.mark(after);
          break;
        case "BreakStatement":
          self.emitAbruptCompletion({
            type: "break",
            target: self.leapManager.getBreakLoc(stmt.label)
          });
          break;
        case "ContinueStatement":
          self.emitAbruptCompletion({
            type: "continue",
            target: self.leapManager.getContinueLoc(stmt.label)
          });
          break;
        case "SwitchStatement":
          var disc = self.emitAssign(self.makeTempVar(), self.explodeExpression(path.get("discriminant")));
          after = this.loc();
          var defaultLoc = this.loc();
          var condition = defaultLoc;
          var caseLocs = [];
          var cases = stmt.cases || [];
          for (var i = cases.length - 1; i >= 0; --i) {
            var c = cases[i];
            t.assertSwitchCase(c);
            if (c.test) {
              condition = t.conditionalExpression(t.binaryExpression("===", t.cloneDeep(disc), c.test), caseLocs[i] = this.loc(), condition);
            } else {
              caseLocs[i] = defaultLoc;
            }
          }
          var discriminant = path.get("discriminant");
          util.replaceWithOrRemove(discriminant, condition);
          self.jump(self.explodeExpression(discriminant));
          self.leapManager.withEntry(new leap.SwitchEntry(after), function () {
            path.get("cases").forEach(function (casePath) {
              var i = casePath.key;
              self.mark(caseLocs[i]);
              casePath.get("consequent").forEach(function (path) {
                self.explodeStatement(path);
              });
            });
          });
          self.mark(after);
          if (defaultLoc.value === PENDING_LOCATION) {
            self.mark(defaultLoc);
            _assert["default"].strictEqual(after.value, defaultLoc.value);
          }
          break;
        case "IfStatement":
          var elseLoc = stmt.alternate && this.loc();
          after = this.loc();
          self.jumpIfNot(self.explodeExpression(path.get("test")), elseLoc || after);
          self.explodeStatement(path.get("consequent"));
          if (elseLoc) {
            self.jump(after);
            self.mark(elseLoc);
            self.explodeStatement(path.get("alternate"));
          }
          self.mark(after);
          break;
        case "ReturnStatement":
          self.emitAbruptCompletion({
            type: "return",
            value: self.explodeExpression(path.get("argument"))
          });
          break;
        case "WithStatement":
          throw new Error("WithStatement not supported in generator functions.");
        case "TryStatement":
          after = this.loc();
          var handler = stmt.handler;
          var catchLoc = handler && this.loc();
          var catchEntry = catchLoc && new leap.CatchEntry(catchLoc, handler.param);
          var finallyLoc = stmt.finalizer && this.loc();
          var finallyEntry = finallyLoc && new leap.FinallyEntry(finallyLoc, after);
          var tryEntry = new leap.TryEntry(self.getUnmarkedCurrentLoc(), catchEntry, finallyEntry);
          self.tryEntries.push(tryEntry);
          self.updateContextPrevLoc(tryEntry.firstLoc);
          self.leapManager.withEntry(tryEntry, function () {
            self.explodeStatement(path.get("block"));
            if (catchLoc) {
              if (finallyLoc) {
                self.jump(finallyLoc);
              } else {
                self.jump(after);
              }
              self.updateContextPrevLoc(self.mark(catchLoc));
              var bodyPath = path.get("handler.body");
              var safeParam = self.makeTempVar();
              self.clearPendingException(tryEntry.firstLoc, safeParam);
              bodyPath.traverse(catchParamVisitor, {
                getSafeParam: function getSafeParam() {
                  return t.cloneDeep(safeParam);
                },
                catchParamName: handler.param.name
              });
              self.leapManager.withEntry(catchEntry, function () {
                self.explodeStatement(bodyPath);
              });
            }
            if (finallyLoc) {
              self.updateContextPrevLoc(self.mark(finallyLoc));
              self.leapManager.withEntry(finallyEntry, function () {
                self.explodeStatement(path.get("finalizer"));
              });
              self.emit(t.returnStatement(t.callExpression(self.contextProperty("finish"), [finallyEntry.firstLoc])));
            }
          });
          self.mark(after);
          break;
        case "ThrowStatement":
          self.emit(t.throwStatement(self.explodeExpression(path.get("argument"))));
          break;
        case "ClassDeclaration":
          self.emit(self.explodeClass(path));
          break;
        default:
          throw new Error("unknown Statement of type " + JSON.stringify(stmt.type));
      }
    };
    var catchParamVisitor = {
      Identifier: function Identifier(path, state) {
        if (path.node.name === state.catchParamName && util.isReference(path)) {
          util.replaceWithOrRemove(path, state.getSafeParam());
        }
      },
      Scope: function Scope(path, state) {
        if (path.scope.hasOwnBinding(state.catchParamName)) {
          path.skip();
        }
      }
    };
    Ep.emitAbruptCompletion = function (record) {
      if (!isValidCompletion(record)) {
        _assert["default"].ok(false, "invalid completion record: " + JSON.stringify(record));
      }
      _assert["default"].notStrictEqual(record.type, "normal", "normal completions are not abrupt");
      var t = util.getTypes();
      var abruptArgs = [t.stringLiteral(record.type)];
      if (record.type === "break" || record.type === "continue") {
        t.assertLiteral(record.target);
        abruptArgs[1] = this.insertedLocs.has(record.target) ? record.target : t.cloneDeep(record.target);
      } else if (record.type === "return" || record.type === "throw") {
        if (record.value) {
          t.assertExpression(record.value);
          abruptArgs[1] = this.insertedLocs.has(record.value) ? record.value : t.cloneDeep(record.value);
        }
      }
      this.emit(t.returnStatement(t.callExpression(this.contextProperty("abrupt"), abruptArgs)));
    };
    function isValidCompletion(record) {
      var type = record.type;
      if (type === "normal") {
        return !hasOwn.call(record, "target");
      }
      if (type === "break" || type === "continue") {
        return !hasOwn.call(record, "value") && util.getTypes().isLiteral(record.target);
      }
      if (type === "return" || type === "throw") {
        return hasOwn.call(record, "value") && !hasOwn.call(record, "target");
      }
      return false;
    }
    Ep.getUnmarkedCurrentLoc = function () {
      return util.getTypes().numericLiteral(this.listing.length);
    };
    Ep.updateContextPrevLoc = function (loc) {
      var t = util.getTypes();
      if (loc) {
        t.assertLiteral(loc);
        if (loc.value === PENDING_LOCATION) {
          loc.value = this.listing.length;
        } else {
          _assert["default"].strictEqual(loc.value, this.listing.length);
        }
      } else {
        loc = this.getUnmarkedCurrentLoc();
      }
      this.emitAssign(this.contextProperty("prev"), loc);
    };
    Ep.explodeViaTempVar = function (tempVar, childPath, hasLeapingChildren, ignoreChildResult) {
      _assert["default"].ok(!ignoreChildResult || !tempVar, "Ignoring the result of a child expression but forcing it to " + "be assigned to a temporary variable?");
      var t = util.getTypes();
      var result = this.explodeExpression(childPath, ignoreChildResult);
      if (ignoreChildResult) ; else if (tempVar || hasLeapingChildren && !t.isLiteral(result)) {
        result = this.emitAssign(tempVar || this.makeTempVar(), result);
      }
      return result;
    };
    Ep.explodeExpression = function (path, ignoreResult) {
      var t = util.getTypes();
      var expr = path.node;
      if (expr) {
        t.assertExpression(expr);
      } else {
        return expr;
      }
      var self = this;
      var result;
      var after;
      function finish(expr) {
        t.assertExpression(expr);
        if (ignoreResult) {
          self.emit(expr);
        }
        return expr;
      }
      if (!meta.containsLeap(expr)) {
        return finish(expr);
      }
      var hasLeapingChildren = meta.containsLeap.onlyChildren(expr);
      switch (expr.type) {
        case "MemberExpression":
          return finish(t.memberExpression(self.explodeExpression(path.get("object")), expr.computed ? self.explodeViaTempVar(null, path.get("property"), hasLeapingChildren) : expr.property, expr.computed));
        case "CallExpression":
          var calleePath = path.get("callee");
          var argsPath = path.get("arguments");
          var newCallee;
          var newArgs;
          var hasLeapingArgs = argsPath.some(function (argPath) {
            return meta.containsLeap(argPath.node);
          });
          var injectFirstArg = null;
          if (t.isMemberExpression(calleePath.node)) {
            if (hasLeapingArgs) {
              var newObject = self.explodeViaTempVar(self.makeTempVar(), calleePath.get("object"), hasLeapingChildren);
              var newProperty = calleePath.node.computed ? self.explodeViaTempVar(null, calleePath.get("property"), hasLeapingChildren) : calleePath.node.property;
              injectFirstArg = newObject;
              newCallee = t.memberExpression(t.memberExpression(t.cloneDeep(newObject), newProperty, calleePath.node.computed), t.identifier("call"), false);
            } else {
              newCallee = self.explodeExpression(calleePath);
            }
          } else {
            newCallee = self.explodeViaTempVar(null, calleePath, hasLeapingChildren);
            if (t.isMemberExpression(newCallee)) {
              newCallee = t.sequenceExpression([t.numericLiteral(0), t.cloneDeep(newCallee)]);
            }
          }
          if (hasLeapingArgs) {
            newArgs = argsPath.map(function (argPath) {
              return self.explodeViaTempVar(null, argPath, hasLeapingChildren);
            });
            if (injectFirstArg) newArgs.unshift(injectFirstArg);
            newArgs = newArgs.map(function (arg) {
              return t.cloneDeep(arg);
            });
          } else {
            newArgs = path.node.arguments;
          }
          return finish(t.callExpression(newCallee, newArgs));
        case "NewExpression":
          return finish(t.newExpression(self.explodeViaTempVar(null, path.get("callee"), hasLeapingChildren), path.get("arguments").map(function (argPath) {
            return self.explodeViaTempVar(null, argPath, hasLeapingChildren);
          })));
        case "ObjectExpression":
          return finish(t.objectExpression(path.get("properties").map(function (propPath) {
            if (propPath.isObjectProperty()) {
              return t.objectProperty(propPath.node.key, self.explodeViaTempVar(null, propPath.get("value"), hasLeapingChildren), propPath.node.computed);
            } else {
              return propPath.node;
            }
          })));
        case "ArrayExpression":
          return finish(t.arrayExpression(path.get("elements").map(function (elemPath) {
            if (!elemPath.node) {
              return null;
            }
            if (elemPath.isSpreadElement()) {
              return t.spreadElement(self.explodeViaTempVar(null, elemPath.get("argument"), hasLeapingChildren));
            } else {
              return self.explodeViaTempVar(null, elemPath, hasLeapingChildren);
            }
          })));
        case "SequenceExpression":
          var lastIndex = expr.expressions.length - 1;
          path.get("expressions").forEach(function (exprPath) {
            if (exprPath.key === lastIndex) {
              result = self.explodeExpression(exprPath, ignoreResult);
            } else {
              self.explodeExpression(exprPath, true);
            }
          });
          return result;
        case "LogicalExpression":
          after = this.loc();
          if (!ignoreResult) {
            result = self.makeTempVar();
          }
          var left = self.explodeViaTempVar(result, path.get("left"), hasLeapingChildren);
          if (expr.operator === "&&") {
            self.jumpIfNot(left, after);
          } else {
            _assert["default"].strictEqual(expr.operator, "||");
            self.jumpIf(left, after);
          }
          self.explodeViaTempVar(result, path.get("right"), hasLeapingChildren, ignoreResult);
          self.mark(after);
          return result;
        case "ConditionalExpression":
          var elseLoc = this.loc();
          after = this.loc();
          var test = self.explodeExpression(path.get("test"));
          self.jumpIfNot(test, elseLoc);
          if (!ignoreResult) {
            result = self.makeTempVar();
          }
          self.explodeViaTempVar(result, path.get("consequent"), hasLeapingChildren, ignoreResult);
          self.jump(after);
          self.mark(elseLoc);
          self.explodeViaTempVar(result, path.get("alternate"), hasLeapingChildren, ignoreResult);
          self.mark(after);
          return result;
        case "UnaryExpression":
          return finish(t.unaryExpression(expr.operator, self.explodeExpression(path.get("argument")), !!expr.prefix));
        case "BinaryExpression":
          return finish(t.binaryExpression(expr.operator, self.explodeViaTempVar(null, path.get("left"), hasLeapingChildren), self.explodeViaTempVar(null, path.get("right"), hasLeapingChildren)));
        case "AssignmentExpression":
          if (expr.operator === "=") {
            return finish(t.assignmentExpression(expr.operator, self.explodeExpression(path.get("left")), self.explodeExpression(path.get("right"))));
          }
          var lhs = self.explodeExpression(path.get("left"));
          var temp = self.emitAssign(self.makeTempVar(), lhs);
          return finish(t.assignmentExpression("=", t.cloneDeep(lhs), t.assignmentExpression(expr.operator, t.cloneDeep(temp), self.explodeExpression(path.get("right")))));
        case "UpdateExpression":
          return finish(t.updateExpression(expr.operator, self.explodeExpression(path.get("argument")), expr.prefix));
        case "YieldExpression":
          after = this.loc();
          var arg = expr.argument && self.explodeExpression(path.get("argument"));
          if (arg && expr.delegate) {
            var _result = self.makeTempVar();
            var _ret = t.returnStatement(t.callExpression(self.contextProperty("delegateYield"), [arg, t.stringLiteral(_result.property.name), after]));
            _ret.loc = expr.loc;
            self.emit(_ret);
            self.mark(after);
            return _result;
          }
          self.emitAssign(self.contextProperty("next"), after);
          var ret = t.returnStatement(t.cloneDeep(arg) || null);
          ret.loc = expr.loc;
          self.emit(ret);
          self.mark(after);
          return self.contextProperty("sent");
        case "ClassExpression":
          return finish(self.explodeClass(path));
        default:
          throw new Error("unknown Expression of type " + JSON.stringify(expr.type));
      }
    };
    Ep.explodeClass = function (path) {
      var explodingChildren = [];
      if (path.node.superClass) {
        explodingChildren.push(path.get("superClass"));
      }
      path.get("body.body").forEach(function (member) {
        if (member.node.computed) {
          explodingChildren.push(member.get("key"));
        }
      });
      var hasLeapingChildren = explodingChildren.some(function (child) {
        return meta.containsLeap(child);
      });
      for (var i = 0; i < explodingChildren.length; i++) {
        var child = explodingChildren[i];
        var isLast = i === explodingChildren.length - 1;
        if (isLast) {
          child.replaceWith(this.explodeExpression(child));
        } else {
          child.replaceWith(this.explodeViaTempVar(null, child, hasLeapingChildren));
        }
      }
      return path.node;
    };
    return emit;
  }

  var replaceShorthandObjectMethod = {};

  var hasRequiredReplaceShorthandObjectMethod;
  function requireReplaceShorthandObjectMethod() {
    if (hasRequiredReplaceShorthandObjectMethod) return replaceShorthandObjectMethod;
    hasRequiredReplaceShorthandObjectMethod = 1;
    (function (exports) {

      exports.__esModule = true;
      exports["default"] = replaceShorthandObjectMethod;
      var util = _interopRequireWildcard(requireUtil());
      function _getRequireWildcardCache(nodeInterop) {
        if (typeof WeakMap !== "function") return null;
        var cacheBabelInterop = new WeakMap();
        var cacheNodeInterop = new WeakMap();
        return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
          return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
        })(nodeInterop);
      }
      function _interopRequireWildcard(obj, nodeInterop) {
        if (obj && obj.__esModule) {
          return obj;
        }
        if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
          return {
            "default": obj
          };
        }
        var cache = _getRequireWildcardCache(nodeInterop);
        if (cache && cache.has(obj)) {
          return cache.get(obj);
        }
        var newObj = {};
        var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
        for (var key in obj) {
          if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
            if (desc && (desc.get || desc.set)) {
              Object.defineProperty(newObj, key, desc);
            } else {
              newObj[key] = obj[key];
            }
          }
        }
        newObj["default"] = obj;
        if (cache) {
          cache.set(obj, newObj);
        }
        return newObj;
      }
      function replaceShorthandObjectMethod(path) {
        var t = util.getTypes();
        if (!path.node || !t.isFunction(path.node)) {
          throw new Error("replaceShorthandObjectMethod can only be called on Function AST node paths.");
        }
        if (!t.isObjectMethod(path.node)) {
          return path;
        }
        if (!path.node.generator) {
          return path;
        }
        var parameters = path.node.params.map(function (param) {
          return t.cloneDeep(param);
        });
        var functionExpression = t.functionExpression(null, parameters, t.cloneDeep(path.node.body), path.node.generator, path.node.async);
        util.replaceWithOrRemove(path, t.objectProperty(t.cloneDeep(path.node.key), functionExpression, path.node.computed, false));
        return path.get("value");
      }
    })(replaceShorthandObjectMethod);
    return replaceShorthandObjectMethod;
  }

  var _interopRequireDefault = interopRequireDefaultExports;
  var _assert = _interopRequireDefault(require$$1$2);
  var _hoist = requireHoist();
  var _emit = requireEmit();
  var _replaceShorthandObjectMethod = _interopRequireDefault(requireReplaceShorthandObjectMethod());
  var util = _interopRequireWildcard(requireUtil());
  function _getRequireWildcardCache(nodeInterop) {
    if (typeof WeakMap !== "function") return null;
    var cacheBabelInterop = new WeakMap();
    var cacheNodeInterop = new WeakMap();
    return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
      return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
    })(nodeInterop);
  }
  function _interopRequireWildcard(obj, nodeInterop) {
    if (obj && obj.__esModule) {
      return obj;
    }
    if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
      return {
        "default": obj
      };
    }
    var cache = _getRequireWildcardCache(nodeInterop);
    if (cache && cache.has(obj)) {
      return cache.get(obj);
    }
    var newObj = {};
    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
    for (var key in obj) {
      if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
        var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
        if (desc && (desc.get || desc.set)) {
          Object.defineProperty(newObj, key, desc);
        } else {
          newObj[key] = obj[key];
        }
      }
    }
    newObj["default"] = obj;
    if (cache) {
      cache.set(obj, newObj);
    }
    return newObj;
  }
  visit.getVisitor = function (_ref) {
    var t = _ref.types;
    return {
      Method: function Method(path, state) {
        var node = path.node;
        if (!shouldRegenerate(node, state)) return;
        var container = t.functionExpression(null, [], t.cloneNode(node.body, false), node.generator, node.async);
        path.get("body").set("body", [t.returnStatement(t.callExpression(container, []))]);
        node.async = false;
        node.generator = false;
        path.get("body.body.0.argument.callee").unwrapFunctionEnvironment();
      },
      Function: {
        exit: util.wrapWithTypes(t, function (path, state) {
          var node = path.node;
          if (!shouldRegenerate(node, state)) return;
          path = (0, _replaceShorthandObjectMethod["default"])(path);
          node = path.node;
          var contextId = path.scope.generateUidIdentifier("context");
          var argsId = path.scope.generateUidIdentifier("args");
          path.ensureBlock();
          var bodyBlockPath = path.get("body");
          if (node.async) {
            bodyBlockPath.traverse(awaitVisitor);
          }
          bodyBlockPath.traverse(functionSentVisitor, {
            context: contextId
          });
          var outerBody = [];
          var innerBody = [];
          bodyBlockPath.get("body").forEach(function (childPath) {
            var node = childPath.node;
            if (t.isExpressionStatement(node) && t.isStringLiteral(node.expression)) {
              outerBody.push(node);
            } else if (node && node._blockHoist != null) {
              outerBody.push(node);
            } else {
              innerBody.push(node);
            }
          });
          if (outerBody.length > 0) {
            bodyBlockPath.node.body = innerBody;
          }
          var outerFnExpr = getOuterFnExpr(path);
          t.assertIdentifier(node.id);
          var innerFnId = t.identifier(node.id.name + "$");
          var vars = (0, _hoist.hoist)(path);
          var context = {
            usesThis: false,
            usesArguments: false,
            getArgsId: function getArgsId() {
              return t.clone(argsId);
            }
          };
          path.traverse(argumentsThisVisitor, context);
          if (context.usesArguments) {
            vars = vars || t.variableDeclaration("var", []);
            vars.declarations.push(t.variableDeclarator(t.clone(argsId), t.identifier("arguments")));
          }
          var emitter = new _emit.Emitter(contextId);
          emitter.explode(path.get("body"));
          if (vars && vars.declarations.length > 0) {
            outerBody.push(vars);
          }
          var wrapArgs = [emitter.getContextFunction(innerFnId)];
          var tryLocsList = emitter.getTryLocsList();
          if (node.generator) {
            wrapArgs.push(outerFnExpr);
          } else if (context.usesThis || tryLocsList || node.async) {
            wrapArgs.push(t.nullLiteral());
          }
          if (context.usesThis) {
            wrapArgs.push(t.thisExpression());
          } else if (tryLocsList || node.async) {
            wrapArgs.push(t.nullLiteral());
          }
          if (tryLocsList) {
            wrapArgs.push(tryLocsList);
          } else if (node.async) {
            wrapArgs.push(t.nullLiteral());
          }
          if (node.async) {
            var currentScope = path.scope;
            do {
              if (currentScope.hasOwnBinding("Promise")) currentScope.rename("Promise");
            } while (currentScope = currentScope.parent);
            wrapArgs.push(t.identifier("Promise"));
          }
          var wrapCall = t.callExpression(util.runtimeProperty(node.async ? "async" : "wrap"), wrapArgs);
          outerBody.push(t.returnStatement(wrapCall));
          node.body = t.blockStatement(outerBody);
          path.get("body.body").forEach(function (p) {
            return p.scope.registerDeclaration(p);
          });
          var oldDirectives = bodyBlockPath.node.directives;
          if (oldDirectives) {
            node.body.directives = oldDirectives;
          }
          var wasGeneratorFunction = node.generator;
          if (wasGeneratorFunction) {
            node.generator = false;
          }
          if (node.async) {
            node.async = false;
          }
          if (wasGeneratorFunction && t.isExpression(node)) {
            util.replaceWithOrRemove(path, t.callExpression(util.runtimeProperty("mark"), [node]));
            path.addComment("leading", "#__PURE__");
          }
          var insertedLocs = emitter.getInsertedLocs();
          path.traverse({
            NumericLiteral: function NumericLiteral(path) {
              if (!insertedLocs.has(path.node)) {
                return;
              }
              path.replaceWith(t.numericLiteral(path.node.value));
            }
          });
          path.requeue();
        })
      }
    };
  };
  function shouldRegenerate(node, state) {
    if (node.generator) {
      if (node.async) {
        return state.opts.asyncGenerators !== false;
      } else {
        return state.opts.generators !== false;
      }
    } else if (node.async) {
      return state.opts.async !== false;
    } else {
      return false;
    }
  }
  function getOuterFnExpr(funPath) {
    var t = util.getTypes();
    var node = funPath.node;
    t.assertFunction(node);
    if (!node.id) {
      node.id = funPath.scope.parent.generateUidIdentifier("callee");
    }
    if (node.generator && t.isFunctionDeclaration(node)) {
      return getMarkedFunctionId(funPath);
    }
    return t.clone(node.id);
  }
  var markInfo = new WeakMap();
  function getMarkInfo(node) {
    if (!markInfo.has(node)) {
      markInfo.set(node, {});
    }
    return markInfo.get(node);
  }
  function getMarkedFunctionId(funPath) {
    var t = util.getTypes();
    var node = funPath.node;
    t.assertIdentifier(node.id);
    var blockPath = funPath.findParent(function (path) {
      return path.isProgram() || path.isBlockStatement();
    });
    if (!blockPath) {
      return node.id;
    }
    var block = blockPath.node;
    _assert["default"].ok(Array.isArray(block.body));
    var info = getMarkInfo(block);
    if (!info.decl) {
      info.decl = t.variableDeclaration("var", []);
      blockPath.unshiftContainer("body", info.decl);
      info.declPath = blockPath.get("body.0");
    }
    _assert["default"].strictEqual(info.declPath.node, info.decl);
    var markedId = blockPath.scope.generateUidIdentifier("marked");
    var markCallExp = t.callExpression(util.runtimeProperty("mark"), [t.clone(node.id)]);
    var index = info.decl.declarations.push(t.variableDeclarator(markedId, markCallExp)) - 1;
    var markCallExpPath = info.declPath.get("declarations." + index + ".init");
    _assert["default"].strictEqual(markCallExpPath.node, markCallExp);
    markCallExpPath.addComment("leading", "#__PURE__");
    return t.clone(markedId);
  }
  var argumentsThisVisitor = {
    "FunctionExpression|FunctionDeclaration|Method": function FunctionExpressionFunctionDeclarationMethod(path) {
      path.skip();
    },
    Identifier: function Identifier(path, state) {
      if (path.node.name === "arguments" && util.isReference(path)) {
        util.replaceWithOrRemove(path, state.getArgsId());
        state.usesArguments = true;
      }
    },
    ThisExpression: function ThisExpression(path, state) {
      state.usesThis = true;
    }
  };
  var functionSentVisitor = {
    MetaProperty: function MetaProperty(path) {
      var node = path.node;
      if (node.meta.name === "function" && node.property.name === "sent") {
        var t = util.getTypes();
        util.replaceWithOrRemove(path, t.memberExpression(t.clone(this.context), t.identifier("_sent")));
      }
    }
  };
  var awaitVisitor = {
    Function: function Function(path) {
      path.skip();
    },
    AwaitExpression: function AwaitExpression(path) {
      var t = util.getTypes();
      var argument = path.node.argument;
      util.replaceWithOrRemove(path, t.yieldExpression(t.callExpression(util.runtimeProperty("awrap"), [argument]), false));
    }
  };

  (function (exports) {

    exports.__esModule = true;
    exports["default"] = _default;
    var _visit = visit;
    function _default(context) {
      var plugin = {
        visitor: (0, _visit.getVisitor)(context)
      };
      var version = context && context.version;
      if (version && parseInt(version, 10) >= 7) {
        plugin.name = "regenerator-transform";
      }
      return plugin;
    }
  })(lib$7);

  var _transformRegenerator = declare(function (_ref) {
    var t = _ref.types,
      assertVersion = _ref.assertVersion;
    assertVersion("*");
    return {
      name: "transform-regenerator",
      inherits: lib$7["default"],
      visitor: {
        CallExpression: function CallExpression(path) {
          {
            var _this$availableHelper;
            if (!((_this$availableHelper = this.availableHelper) != null && _this$availableHelper.call(this, "regeneratorRuntime"))) {
              return;
            }
          }
          var callee = path.get("callee");
          if (!callee.isMemberExpression()) return;
          var obj = callee.get("object");
          if (obj.isIdentifier({
            name: "regeneratorRuntime"
          })) {
            var helper = this.addHelper("regeneratorRuntime");
            {
              if (t.isArrowFunctionExpression(helper)) {
                obj.replaceWith(helper.body);
                return;
              }
            }
            obj.replaceWith(t.callExpression(helper, []));
          }
        }
      }
    };
  });

  var _transformReservedWords = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-reserved-words",
      visitor: {
        "BindingIdentifier|ReferencedIdentifier": function BindingIdentifierReferencedIdentifier(path) {
          if (!isValidES3Identifier(path.node.name)) {
            path.scope.rename(path.node.name);
          }
        }
      }
    };
  });

  function bool$1(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$5 = bool$1(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  function hasMinVersion(minVersion, runtimeVersion) {
    if (!runtimeVersion) return true;
    if (semver$5.valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
    return !semver$5.intersects("<" + minVersion, runtimeVersion) && !semver$5.intersects(">=8.0.0", runtimeVersion);
  }

  function getRuntimePath (moduleName, dirname, absoluteRuntime) {
    if (absoluteRuntime === false) return moduleName;
    resolveFSPath();
  }
  function resolveFSPath() {
    throw new Error("The 'absoluteRuntime' option is not supported when using @babel/standalone.");
  }

  var babel7 = {};

  var lib$6 = {};

  var require$$0$5 = {
  	"es6.array.copy-within": {
  	chrome: "45",
  	opera: "32",
  	edge: "12",
  	firefox: "32",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.31"
  },
  	"es6.array.every": {
  	chrome: "5",
  	opera: "10.10",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.fill": {
  	chrome: "45",
  	opera: "32",
  	edge: "12",
  	firefox: "31",
  	safari: "7.1",
  	node: "4",
  	deno: "1",
  	ios: "8",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.31"
  },
  	"es6.array.filter": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.array.find": {
  	chrome: "45",
  	opera: "32",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "4",
  	deno: "1",
  	ios: "8",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.31"
  },
  	"es6.array.find-index": {
  	chrome: "45",
  	opera: "32",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "4",
  	deno: "1",
  	ios: "8",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.31"
  },
  	"es7.array.flat-map": {
  	chrome: "69",
  	opera: "56",
  	edge: "79",
  	firefox: "62",
  	safari: "12",
  	node: "11",
  	deno: "1",
  	ios: "12",
  	samsung: "10",
  	rhino: "1.7.15",
  	opera_mobile: "48",
  	electron: "4.0"
  },
  	"es6.array.for-each": {
  	chrome: "5",
  	opera: "10.10",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.from": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "36",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es7.array.includes": {
  	chrome: "47",
  	opera: "34",
  	edge: "14",
  	firefox: "102",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "34",
  	electron: "0.36"
  },
  	"es6.array.index-of": {
  	chrome: "5",
  	opera: "10.10",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.is-array": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "4",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.iterator": {
  	chrome: "66",
  	opera: "53",
  	edge: "12",
  	firefox: "60",
  	safari: "9",
  	node: "10",
  	deno: "1",
  	ios: "9",
  	samsung: "9",
  	rhino: "1.7.13",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"es6.array.last-index-of": {
  	chrome: "5",
  	opera: "10.10",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.map": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.array.of": {
  	chrome: "45",
  	opera: "32",
  	edge: "12",
  	firefox: "25",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.31"
  },
  	"es6.array.reduce": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "3",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.reduce-right": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "3",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.slice": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.array.some": {
  	chrome: "5",
  	opera: "10.10",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.array.sort": {
  	chrome: "63",
  	opera: "50",
  	edge: "12",
  	firefox: "5",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ie: "9",
  	ios: "12",
  	samsung: "8",
  	rhino: "1.7.13",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es6.array.species": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.date.now": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "2",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.date.to-iso-string": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "3.5",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.date.to-json": {
  	chrome: "5",
  	opera: "12.10",
  	edge: "12",
  	firefox: "4",
  	safari: "10",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "10",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12.1",
  	electron: "0.20"
  },
  	"es6.date.to-primitive": {
  	chrome: "47",
  	opera: "34",
  	edge: "15",
  	firefox: "44",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "34",
  	electron: "0.36"
  },
  	"es6.date.to-string": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "2",
  	safari: "3.1",
  	node: "0.4",
  	deno: "1",
  	ie: "10",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.function.bind": {
  	chrome: "7",
  	opera: "12",
  	edge: "12",
  	firefox: "4",
  	safari: "5.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"es6.function.has-instance": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "50",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.function.name": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "14",
  	firefox: "2",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es6.map": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.math.acosh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.asinh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.atanh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.cbrt": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.clz32": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "31",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.cosh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.expm1": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.fround": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "26",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.hypot": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "27",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.imul": {
  	chrome: "30",
  	opera: "17",
  	edge: "12",
  	firefox: "23",
  	safari: "7",
  	node: "0.12",
  	deno: "1",
  	android: "4.4",
  	ios: "7",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "18",
  	electron: "0.20"
  },
  	"es6.math.log1p": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.log10": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.log2": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.sign": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.sinh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.tanh": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.math.trunc": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "25",
  	safari: "7.1",
  	node: "0.12",
  	deno: "1",
  	ios: "8",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.number.constructor": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "36",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.number.epsilon": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "25",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.14",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.is-finite": {
  	chrome: "19",
  	opera: "15",
  	edge: "12",
  	firefox: "16",
  	safari: "9",
  	node: "0.8",
  	deno: "1",
  	android: "4.1",
  	ios: "9",
  	samsung: "1.5",
  	rhino: "1.7.13",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.number.is-integer": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "16",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.is-nan": {
  	chrome: "19",
  	opera: "15",
  	edge: "12",
  	firefox: "15",
  	safari: "9",
  	node: "0.8",
  	deno: "1",
  	android: "4.1",
  	ios: "9",
  	samsung: "1.5",
  	rhino: "1.7.13",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.number.is-safe-integer": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "32",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.max-safe-integer": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "31",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.min-safe-integer": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "31",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.parse-float": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "25",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.14",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.number.parse-int": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "25",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.14",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es6.object.assign": {
  	chrome: "49",
  	opera: "36",
  	edge: "13",
  	firefox: "36",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.object.create": {
  	chrome: "5",
  	opera: "12",
  	edge: "12",
  	firefox: "4",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"es7.object.define-getter": {
  	chrome: "62",
  	opera: "49",
  	edge: "16",
  	firefox: "48",
  	safari: "9",
  	node: "8.10",
  	deno: "1",
  	ios: "9",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es7.object.define-setter": {
  	chrome: "62",
  	opera: "49",
  	edge: "16",
  	firefox: "48",
  	safari: "9",
  	node: "8.10",
  	deno: "1",
  	ios: "9",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es6.object.define-property": {
  	chrome: "5",
  	opera: "12",
  	edge: "12",
  	firefox: "4",
  	safari: "5.1",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"es6.object.define-properties": {
  	chrome: "5",
  	opera: "12",
  	edge: "12",
  	firefox: "4",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"es7.object.entries": {
  	chrome: "54",
  	opera: "41",
  	edge: "14",
  	firefox: "47",
  	safari: "10.1",
  	node: "7",
  	deno: "1",
  	ios: "10.3",
  	samsung: "6",
  	rhino: "1.7.14",
  	opera_mobile: "41",
  	electron: "1.4"
  },
  	"es6.object.freeze": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.get-own-property-descriptor": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es7.object.get-own-property-descriptors": {
  	chrome: "54",
  	opera: "41",
  	edge: "15",
  	firefox: "50",
  	safari: "10.1",
  	node: "7",
  	deno: "1",
  	ios: "10.3",
  	samsung: "6",
  	opera_mobile: "41",
  	electron: "1.4"
  },
  	"es6.object.get-own-property-names": {
  	chrome: "40",
  	opera: "27",
  	edge: "12",
  	firefox: "33",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "27",
  	electron: "0.21"
  },
  	"es6.object.get-prototype-of": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es7.object.lookup-getter": {
  	chrome: "62",
  	opera: "49",
  	edge: "79",
  	firefox: "36",
  	safari: "9",
  	node: "8.10",
  	deno: "1",
  	ios: "9",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es7.object.lookup-setter": {
  	chrome: "62",
  	opera: "49",
  	edge: "79",
  	firefox: "36",
  	safari: "9",
  	node: "8.10",
  	deno: "1",
  	ios: "9",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es6.object.prevent-extensions": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.to-string": {
  	chrome: "57",
  	opera: "44",
  	edge: "15",
  	firefox: "51",
  	safari: "10",
  	node: "8",
  	deno: "1",
  	ios: "10",
  	samsung: "7",
  	opera_mobile: "43",
  	electron: "1.7"
  },
  	"es6.object.is": {
  	chrome: "19",
  	opera: "15",
  	edge: "12",
  	firefox: "22",
  	safari: "9",
  	node: "0.8",
  	deno: "1",
  	android: "4.1",
  	ios: "9",
  	samsung: "1.5",
  	rhino: "1.7.13",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.object.is-frozen": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.is-sealed": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.is-extensible": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.keys": {
  	chrome: "40",
  	opera: "27",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "27",
  	electron: "0.21"
  },
  	"es6.object.seal": {
  	chrome: "44",
  	opera: "31",
  	edge: "12",
  	firefox: "35",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "4",
  	rhino: "1.7.13",
  	opera_mobile: "32",
  	electron: "0.30"
  },
  	"es6.object.set-prototype-of": {
  	chrome: "34",
  	opera: "21",
  	edge: "12",
  	firefox: "31",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ie: "11",
  	ios: "9",
  	samsung: "2",
  	rhino: "1.7.13",
  	opera_mobile: "21",
  	electron: "0.20"
  },
  	"es7.object.values": {
  	chrome: "54",
  	opera: "41",
  	edge: "14",
  	firefox: "47",
  	safari: "10.1",
  	node: "7",
  	deno: "1",
  	ios: "10.3",
  	samsung: "6",
  	rhino: "1.7.14",
  	opera_mobile: "41",
  	electron: "1.4"
  },
  	"es6.promise": {
  	chrome: "51",
  	opera: "38",
  	edge: "14",
  	firefox: "45",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es7.promise.finally": {
  	chrome: "63",
  	opera: "50",
  	edge: "18",
  	firefox: "58",
  	safari: "11.1",
  	node: "10",
  	deno: "1",
  	ios: "11.3",
  	samsung: "8",
  	rhino: "1.7.15",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es6.reflect.apply": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.construct": {
  	chrome: "49",
  	opera: "36",
  	edge: "13",
  	firefox: "49",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.define-property": {
  	chrome: "49",
  	opera: "36",
  	edge: "13",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.delete-property": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.get": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.get-own-property-descriptor": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.get-prototype-of": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.has": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.is-extensible": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.own-keys": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.prevent-extensions": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.set": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.reflect.set-prototype-of": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "42",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.regexp.constructor": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "40",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.regexp.flags": {
  	chrome: "49",
  	opera: "36",
  	edge: "79",
  	firefox: "37",
  	safari: "9",
  	node: "6",
  	deno: "1",
  	ios: "9",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"es6.regexp.match": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "49",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.regexp.replace": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "49",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.regexp.split": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "49",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.regexp.search": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "49",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.regexp.to-string": {
  	chrome: "50",
  	opera: "37",
  	edge: "79",
  	firefox: "39",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "37",
  	electron: "1.1"
  },
  	"es6.set": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.symbol": {
  	chrome: "51",
  	opera: "38",
  	edge: "79",
  	firefox: "51",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es7.symbol.async-iterator": {
  	chrome: "63",
  	opera: "50",
  	edge: "79",
  	firefox: "57",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "8",
  	opera_mobile: "46",
  	electron: "3.0"
  },
  	"es6.string.anchor": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.big": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.blink": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.bold": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.code-point-at": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "29",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.ends-with": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "29",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.fixed": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.fontcolor": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.fontsize": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.from-code-point": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "29",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.includes": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "40",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.italics": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.iterator": {
  	chrome: "38",
  	opera: "25",
  	edge: "12",
  	firefox: "36",
  	safari: "9",
  	node: "0.12",
  	deno: "1",
  	ios: "9",
  	samsung: "3",
  	rhino: "1.7.13",
  	opera_mobile: "25",
  	electron: "0.20"
  },
  	"es6.string.link": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es7.string.pad-start": {
  	chrome: "57",
  	opera: "44",
  	edge: "15",
  	firefox: "48",
  	safari: "10",
  	node: "8",
  	deno: "1",
  	ios: "10",
  	samsung: "7",
  	rhino: "1.7.13",
  	opera_mobile: "43",
  	electron: "1.7"
  },
  	"es7.string.pad-end": {
  	chrome: "57",
  	opera: "44",
  	edge: "15",
  	firefox: "48",
  	safari: "10",
  	node: "8",
  	deno: "1",
  	ios: "10",
  	samsung: "7",
  	rhino: "1.7.13",
  	opera_mobile: "43",
  	electron: "1.7"
  },
  	"es6.string.raw": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "34",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.14",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.repeat": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "24",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.small": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.starts-with": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "29",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	rhino: "1.7.13",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"es6.string.strike": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.sub": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.sup": {
  	chrome: "5",
  	opera: "15",
  	edge: "12",
  	firefox: "17",
  	safari: "6",
  	node: "0.4",
  	deno: "1",
  	android: "4",
  	ios: "7",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.14",
  	opera_mobile: "14",
  	electron: "0.20"
  },
  	"es6.string.trim": {
  	chrome: "5",
  	opera: "10.50",
  	edge: "12",
  	firefox: "3.5",
  	safari: "4",
  	node: "0.4",
  	deno: "1",
  	ie: "9",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "10.1",
  	electron: "0.20"
  },
  	"es7.string.trim-left": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "61",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "9",
  	rhino: "1.7.13",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"es7.string.trim-right": {
  	chrome: "66",
  	opera: "53",
  	edge: "79",
  	firefox: "61",
  	safari: "12",
  	node: "10",
  	deno: "1",
  	ios: "12",
  	samsung: "9",
  	rhino: "1.7.13",
  	opera_mobile: "47",
  	electron: "3.0"
  },
  	"es6.typed.array-buffer": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.data-view": {
  	chrome: "5",
  	opera: "12",
  	edge: "12",
  	firefox: "15",
  	safari: "5.1",
  	node: "0.4",
  	deno: "1",
  	ie: "10",
  	android: "4",
  	ios: "6",
  	phantom: "1.9",
  	samsung: "1",
  	rhino: "1.7.13",
  	opera_mobile: "12",
  	electron: "0.20"
  },
  	"es6.typed.int8-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.uint8-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.uint8-clamped-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.int16-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.uint16-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.int32-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.uint32-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.float32-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.typed.float64-array": {
  	chrome: "51",
  	opera: "38",
  	edge: "13",
  	firefox: "48",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.weak-map": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "9",
  	node: "6.5",
  	deno: "1",
  	ios: "9",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"es6.weak-set": {
  	chrome: "51",
  	opera: "38",
  	edge: "15",
  	firefox: "53",
  	safari: "9",
  	node: "6.5",
  	deno: "1",
  	ios: "9",
  	samsung: "5",
  	rhino: "1.7.15",
  	opera_mobile: "41",
  	electron: "1.2"
  }
  };

  var corejs2BuiltIns;
  var hasRequiredCorejs2BuiltIns;
  function requireCorejs2BuiltIns() {
    if (hasRequiredCorejs2BuiltIns) return corejs2BuiltIns;
    hasRequiredCorejs2BuiltIns = 1;
    corejs2BuiltIns = require$$0$5;
    return corejs2BuiltIns;
  }

  var builtInDefinitions$2 = {};

  var hasRequiredBuiltInDefinitions$2;
  function requireBuiltInDefinitions$2() {
    if (hasRequiredBuiltInDefinitions$2) return builtInDefinitions$2;
    hasRequiredBuiltInDefinitions$2 = 1;
    builtInDefinitions$2.__esModule = true;
    builtInDefinitions$2.StaticProperties = builtInDefinitions$2.InstanceProperties = builtInDefinitions$2.CommonIterators = builtInDefinitions$2.BuiltIns = void 0;
    var _corejs2BuiltIns = _interopRequireDefault(requireCorejs2BuiltIns());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var define = function define(name, pure, global, meta) {
      if (global === void 0) {
        global = [];
      }
      return {
        name: name,
        pure: pure,
        global: global,
        meta: meta
      };
    };
    var pureAndGlobal = function pureAndGlobal(pure, global, minRuntimeVersion) {
      if (minRuntimeVersion === void 0) {
        minRuntimeVersion = null;
      }
      return define(global[0], pure, global, {
        minRuntimeVersion: minRuntimeVersion
      });
    };
    var globalOnly = function globalOnly(global) {
      return define(global[0], null, global);
    };
    var pureOnly = function pureOnly(pure, name) {
      return define(name, pure, []);
    };
    var ArrayNatureIterators = ["es6.object.to-string", "es6.array.iterator", "web.dom.iterable"];
    var CommonIterators = ["es6.string.iterator"].concat(ArrayNatureIterators);
    builtInDefinitions$2.CommonIterators = CommonIterators;
    var PromiseDependencies = ["es6.object.to-string", "es6.promise"];
    var BuiltIns = {
      DataView: globalOnly(["es6.typed.data-view"]),
      Float32Array: globalOnly(["es6.typed.float32-array"]),
      Float64Array: globalOnly(["es6.typed.float64-array"]),
      Int8Array: globalOnly(["es6.typed.int8-array"]),
      Int16Array: globalOnly(["es6.typed.int16-array"]),
      Int32Array: globalOnly(["es6.typed.int32-array"]),
      Map: pureAndGlobal("map", ["es6.map"].concat(_toConsumableArray(CommonIterators))),
      Number: globalOnly(["es6.number.constructor"]),
      Promise: pureAndGlobal("promise", PromiseDependencies),
      RegExp: globalOnly(["es6.regexp.constructor"]),
      Set: pureAndGlobal("set", ["es6.set"].concat(_toConsumableArray(CommonIterators))),
      Symbol: pureAndGlobal("symbol/index", ["es6.symbol"]),
      Uint8Array: globalOnly(["es6.typed.uint8-array"]),
      Uint8ClampedArray: globalOnly(["es6.typed.uint8-clamped-array"]),
      Uint16Array: globalOnly(["es6.typed.uint16-array"]),
      Uint32Array: globalOnly(["es6.typed.uint32-array"]),
      WeakMap: pureAndGlobal("weak-map", ["es6.weak-map"].concat(_toConsumableArray(CommonIterators))),
      WeakSet: pureAndGlobal("weak-set", ["es6.weak-set"].concat(_toConsumableArray(CommonIterators))),
      setImmediate: pureOnly("set-immediate", "web.immediate"),
      clearImmediate: pureOnly("clear-immediate", "web.immediate"),
      parseFloat: pureOnly("parse-float", "es6.parse-float"),
      parseInt: pureOnly("parse-int", "es6.parse-int")
    };
    builtInDefinitions$2.BuiltIns = BuiltIns;
    var InstanceProperties = {
      __defineGetter__: globalOnly(["es7.object.define-getter"]),
      __defineSetter__: globalOnly(["es7.object.define-setter"]),
      __lookupGetter__: globalOnly(["es7.object.lookup-getter"]),
      __lookupSetter__: globalOnly(["es7.object.lookup-setter"]),
      anchor: globalOnly(["es6.string.anchor"]),
      big: globalOnly(["es6.string.big"]),
      bind: globalOnly(["es6.function.bind"]),
      blink: globalOnly(["es6.string.blink"]),
      bold: globalOnly(["es6.string.bold"]),
      codePointAt: globalOnly(["es6.string.code-point-at"]),
      copyWithin: globalOnly(["es6.array.copy-within"]),
      endsWith: globalOnly(["es6.string.ends-with"]),
      entries: globalOnly(ArrayNatureIterators),
      every: globalOnly(["es6.array.every"]),
      fill: globalOnly(["es6.array.fill"]),
      filter: globalOnly(["es6.array.filter"]),
      "finally": globalOnly(["es7.promise.finally"].concat(PromiseDependencies)),
      find: globalOnly(["es6.array.find"]),
      findIndex: globalOnly(["es6.array.find-index"]),
      fixed: globalOnly(["es6.string.fixed"]),
      flags: globalOnly(["es6.regexp.flags"]),
      flatMap: globalOnly(["es7.array.flat-map"]),
      fontcolor: globalOnly(["es6.string.fontcolor"]),
      fontsize: globalOnly(["es6.string.fontsize"]),
      forEach: globalOnly(["es6.array.for-each"]),
      includes: globalOnly(["es6.string.includes", "es7.array.includes"]),
      indexOf: globalOnly(["es6.array.index-of"]),
      italics: globalOnly(["es6.string.italics"]),
      keys: globalOnly(ArrayNatureIterators),
      lastIndexOf: globalOnly(["es6.array.last-index-of"]),
      link: globalOnly(["es6.string.link"]),
      map: globalOnly(["es6.array.map"]),
      match: globalOnly(["es6.regexp.match"]),
      name: globalOnly(["es6.function.name"]),
      padStart: globalOnly(["es7.string.pad-start"]),
      padEnd: globalOnly(["es7.string.pad-end"]),
      reduce: globalOnly(["es6.array.reduce"]),
      reduceRight: globalOnly(["es6.array.reduce-right"]),
      repeat: globalOnly(["es6.string.repeat"]),
      replace: globalOnly(["es6.regexp.replace"]),
      search: globalOnly(["es6.regexp.search"]),
      small: globalOnly(["es6.string.small"]),
      some: globalOnly(["es6.array.some"]),
      sort: globalOnly(["es6.array.sort"]),
      split: globalOnly(["es6.regexp.split"]),
      startsWith: globalOnly(["es6.string.starts-with"]),
      strike: globalOnly(["es6.string.strike"]),
      sub: globalOnly(["es6.string.sub"]),
      sup: globalOnly(["es6.string.sup"]),
      toISOString: globalOnly(["es6.date.to-iso-string"]),
      toJSON: globalOnly(["es6.date.to-json"]),
      toString: globalOnly(["es6.object.to-string", "es6.date.to-string", "es6.regexp.to-string"]),
      trim: globalOnly(["es6.string.trim"]),
      trimEnd: globalOnly(["es7.string.trim-right"]),
      trimLeft: globalOnly(["es7.string.trim-left"]),
      trimRight: globalOnly(["es7.string.trim-right"]),
      trimStart: globalOnly(["es7.string.trim-left"]),
      values: globalOnly(ArrayNatureIterators)
    };
    builtInDefinitions$2.InstanceProperties = InstanceProperties;
    if ("es6.array.slice" in _corejs2BuiltIns["default"]) {
      InstanceProperties.slice = globalOnly(["es6.array.slice"]);
    }
    var StaticProperties = {
      Array: {
        from: pureAndGlobal("array/from", ["es6.symbol", "es6.array.from"].concat(_toConsumableArray(CommonIterators))),
        isArray: pureAndGlobal("array/is-array", ["es6.array.is-array"]),
        of: pureAndGlobal("array/of", ["es6.array.of"])
      },
      Date: {
        now: pureAndGlobal("date/now", ["es6.date.now"])
      },
      JSON: {
        stringify: pureOnly("json/stringify", "es6.symbol")
      },
      Math: {
        acosh: pureAndGlobal("math/acosh", ["es6.math.acosh"], "7.0.1"),
        asinh: pureAndGlobal("math/asinh", ["es6.math.asinh"], "7.0.1"),
        atanh: pureAndGlobal("math/atanh", ["es6.math.atanh"], "7.0.1"),
        cbrt: pureAndGlobal("math/cbrt", ["es6.math.cbrt"], "7.0.1"),
        clz32: pureAndGlobal("math/clz32", ["es6.math.clz32"], "7.0.1"),
        cosh: pureAndGlobal("math/cosh", ["es6.math.cosh"], "7.0.1"),
        expm1: pureAndGlobal("math/expm1", ["es6.math.expm1"], "7.0.1"),
        fround: pureAndGlobal("math/fround", ["es6.math.fround"], "7.0.1"),
        hypot: pureAndGlobal("math/hypot", ["es6.math.hypot"], "7.0.1"),
        imul: pureAndGlobal("math/imul", ["es6.math.imul"], "7.0.1"),
        log1p: pureAndGlobal("math/log1p", ["es6.math.log1p"], "7.0.1"),
        log10: pureAndGlobal("math/log10", ["es6.math.log10"], "7.0.1"),
        log2: pureAndGlobal("math/log2", ["es6.math.log2"], "7.0.1"),
        sign: pureAndGlobal("math/sign", ["es6.math.sign"], "7.0.1"),
        sinh: pureAndGlobal("math/sinh", ["es6.math.sinh"], "7.0.1"),
        tanh: pureAndGlobal("math/tanh", ["es6.math.tanh"], "7.0.1"),
        trunc: pureAndGlobal("math/trunc", ["es6.math.trunc"], "7.0.1")
      },
      Number: {
        EPSILON: pureAndGlobal("number/epsilon", ["es6.number.epsilon"]),
        MIN_SAFE_INTEGER: pureAndGlobal("number/min-safe-integer", ["es6.number.min-safe-integer"]),
        MAX_SAFE_INTEGER: pureAndGlobal("number/max-safe-integer", ["es6.number.max-safe-integer"]),
        isFinite: pureAndGlobal("number/is-finite", ["es6.number.is-finite"]),
        isInteger: pureAndGlobal("number/is-integer", ["es6.number.is-integer"]),
        isSafeInteger: pureAndGlobal("number/is-safe-integer", ["es6.number.is-safe-integer"]),
        isNaN: pureAndGlobal("number/is-nan", ["es6.number.is-nan"]),
        parseFloat: pureAndGlobal("number/parse-float", ["es6.number.parse-float"]),
        parseInt: pureAndGlobal("number/parse-int", ["es6.number.parse-int"])
      },
      Object: {
        assign: pureAndGlobal("object/assign", ["es6.object.assign"]),
        create: pureAndGlobal("object/create", ["es6.object.create"]),
        defineProperties: pureAndGlobal("object/define-properties", ["es6.object.define-properties"]),
        defineProperty: pureAndGlobal("object/define-property", ["es6.object.define-property"]),
        entries: pureAndGlobal("object/entries", ["es7.object.entries"]),
        freeze: pureAndGlobal("object/freeze", ["es6.object.freeze"]),
        getOwnPropertyDescriptor: pureAndGlobal("object/get-own-property-descriptor", ["es6.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: pureAndGlobal("object/get-own-property-descriptors", ["es7.object.get-own-property-descriptors"]),
        getOwnPropertyNames: pureAndGlobal("object/get-own-property-names", ["es6.object.get-own-property-names"]),
        getOwnPropertySymbols: pureAndGlobal("object/get-own-property-symbols", ["es6.symbol"]),
        getPrototypeOf: pureAndGlobal("object/get-prototype-of", ["es6.object.get-prototype-of"]),
        is: pureAndGlobal("object/is", ["es6.object.is"]),
        isExtensible: pureAndGlobal("object/is-extensible", ["es6.object.is-extensible"]),
        isFrozen: pureAndGlobal("object/is-frozen", ["es6.object.is-frozen"]),
        isSealed: pureAndGlobal("object/is-sealed", ["es6.object.is-sealed"]),
        keys: pureAndGlobal("object/keys", ["es6.object.keys"]),
        preventExtensions: pureAndGlobal("object/prevent-extensions", ["es6.object.prevent-extensions"]),
        seal: pureAndGlobal("object/seal", ["es6.object.seal"]),
        setPrototypeOf: pureAndGlobal("object/set-prototype-of", ["es6.object.set-prototype-of"]),
        values: pureAndGlobal("object/values", ["es7.object.values"])
      },
      Promise: {
        all: globalOnly(CommonIterators),
        race: globalOnly(CommonIterators)
      },
      Reflect: {
        apply: pureAndGlobal("reflect/apply", ["es6.reflect.apply"]),
        construct: pureAndGlobal("reflect/construct", ["es6.reflect.construct"]),
        defineProperty: pureAndGlobal("reflect/define-property", ["es6.reflect.define-property"]),
        deleteProperty: pureAndGlobal("reflect/delete-property", ["es6.reflect.delete-property"]),
        get: pureAndGlobal("reflect/get", ["es6.reflect.get"]),
        getOwnPropertyDescriptor: pureAndGlobal("reflect/get-own-property-descriptor", ["es6.reflect.get-own-property-descriptor"]),
        getPrototypeOf: pureAndGlobal("reflect/get-prototype-of", ["es6.reflect.get-prototype-of"]),
        has: pureAndGlobal("reflect/has", ["es6.reflect.has"]),
        isExtensible: pureAndGlobal("reflect/is-extensible", ["es6.reflect.is-extensible"]),
        ownKeys: pureAndGlobal("reflect/own-keys", ["es6.reflect.own-keys"]),
        preventExtensions: pureAndGlobal("reflect/prevent-extensions", ["es6.reflect.prevent-extensions"]),
        set: pureAndGlobal("reflect/set", ["es6.reflect.set"]),
        setPrototypeOf: pureAndGlobal("reflect/set-prototype-of", ["es6.reflect.set-prototype-of"])
      },
      String: {
        at: pureOnly("string/at", "es7.string.at"),
        fromCodePoint: pureAndGlobal("string/from-code-point", ["es6.string.from-code-point"]),
        raw: pureAndGlobal("string/raw", ["es6.string.raw"])
      },
      Symbol: {
        asyncIterator: globalOnly(["es6.symbol", "es7.symbol.async-iterator"]),
        "for": pureOnly("symbol/for", "es6.symbol"),
        hasInstance: pureOnly("symbol/has-instance", "es6.symbol"),
        isConcatSpreadable: pureOnly("symbol/is-concat-spreadable", "es6.symbol"),
        iterator: define("es6.symbol", "symbol/iterator", CommonIterators),
        keyFor: pureOnly("symbol/key-for", "es6.symbol"),
        match: pureAndGlobal("symbol/match", ["es6.regexp.match"]),
        replace: pureOnly("symbol/replace", "es6.symbol"),
        search: pureOnly("symbol/search", "es6.symbol"),
        species: pureOnly("symbol/species", "es6.symbol"),
        split: pureOnly("symbol/split", "es6.symbol"),
        toPrimitive: pureOnly("symbol/to-primitive", "es6.symbol"),
        toStringTag: pureOnly("symbol/to-string-tag", "es6.symbol"),
        unscopables: pureOnly("symbol/unscopables", "es6.symbol")
      }
    };
    builtInDefinitions$2.StaticProperties = StaticProperties;
    return builtInDefinitions$2;
  }

  var addPlatformSpecificPolyfills$1 = {};

  var hasRequiredAddPlatformSpecificPolyfills$1;
  function requireAddPlatformSpecificPolyfills$1() {
    if (hasRequiredAddPlatformSpecificPolyfills$1) return addPlatformSpecificPolyfills$1;
    hasRequiredAddPlatformSpecificPolyfills$1 = 1;
    addPlatformSpecificPolyfills$1.__esModule = true;
    addPlatformSpecificPolyfills$1["default"] = _default;
    function _extends() {
      _extends = Object.assign ? Object.assign.bind() : function (target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      return _extends.apply(this, arguments);
    }
    var webPolyfills = {
      "web.timers": {},
      "web.immediate": {},
      "web.dom.iterable": {}
    };
    var purePolyfills = {
      "es6.parse-float": {},
      "es6.parse-int": {},
      "es7.string.at": {}
    };
    function _default(targets, method, polyfills) {
      var targetNames = Object.keys(targets);
      var isAnyTarget = !targetNames.length;
      var isWebTarget = targetNames.some(function (name) {
        return name !== "node";
      });
      return _extends({}, polyfills, method === "usage-pure" ? purePolyfills : null, isAnyTarget || isWebTarget ? webPolyfills : null);
    }
    return addPlatformSpecificPolyfills$1;
  }

  var helpers$2 = {};

  var semver$4 = {exports: {}};

  var hasRequiredSemver$1;
  function requireSemver$1() {
    if (hasRequiredSemver$1) return semver$4.exports;
    hasRequiredSemver$1 = 1;
    (function (module, exports) {
      exports = module.exports = SemVer;
      var debug;
      if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
        debug = function debug() {
          var args = Array.prototype.slice.call(arguments, 0);
          args.unshift('SEMVER');
          console.log.apply(console, args);
        };
      } else {
        debug = function debug() {};
      }
      exports.SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
      var re = exports.re = [];
      var safeRe = exports.safeRe = [];
      var src = exports.src = [];
      var t = exports.tokens = {};
      var R = 0;
      function tok(n) {
        t[n] = R++;
      }
      var LETTERDASHNUMBER = '[a-zA-Z0-9-]';
      var safeRegexReplacements = [['\\s', 1], ['\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];
      function makeSafeRe(value) {
        for (var i = 0; i < safeRegexReplacements.length; i++) {
          var token = safeRegexReplacements[i][0];
          var max = safeRegexReplacements[i][1];
          value = value.split(token + '*').join(token + '{0,' + max + '}').split(token + '+').join(token + '{1,' + max + '}');
        }
        return value;
      }
      tok('NUMERICIDENTIFIER');
      src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
      tok('NUMERICIDENTIFIERLOOSE');
      src[t.NUMERICIDENTIFIERLOOSE] = '\\d+';
      tok('NONNUMERICIDENTIFIER');
      src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*';
      tok('MAINVERSION');
      src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
      tok('MAINVERSIONLOOSE');
      src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
      tok('PRERELEASEIDENTIFIER');
      src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASEIDENTIFIERLOOSE');
      src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASE');
      src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
      tok('PRERELEASELOOSE');
      src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
      tok('BUILDIDENTIFIER');
      src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+';
      tok('BUILD');
      src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
      tok('FULL');
      tok('FULLPLAIN');
      src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
      src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
      tok('LOOSEPLAIN');
      src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
      tok('LOOSE');
      src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
      tok('GTLT');
      src[t.GTLT] = '((?:<|>)?=?)';
      tok('XRANGEIDENTIFIERLOOSE');
      src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
      tok('XRANGEIDENTIFIER');
      src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
      tok('XRANGEPLAIN');
      src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGEPLAINLOOSE');
      src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGE');
      src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
      tok('XRANGELOOSE');
      src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COERCE');
      src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
      tok('COERCERTL');
      re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
      safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g');
      tok('LONETILDE');
      src[t.LONETILDE] = '(?:~>?)';
      tok('TILDETRIM');
      src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
      re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
      safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g');
      var tildeTrimReplace = '$1~';
      tok('TILDE');
      src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
      tok('TILDELOOSE');
      src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('LONECARET');
      src[t.LONECARET] = '(?:\\^)';
      tok('CARETTRIM');
      src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
      re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
      safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g');
      var caretTrimReplace = '$1^';
      tok('CARET');
      src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
      tok('CARETLOOSE');
      src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COMPARATORLOOSE');
      src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
      tok('COMPARATOR');
      src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
      tok('COMPARATORTRIM');
      src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
      re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
      safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g');
      var comparatorTrimReplace = '$1$2$3';
      tok('HYPHENRANGE');
      src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
      tok('HYPHENRANGELOOSE');
      src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
      tok('STAR');
      src[t.STAR] = '(<|>)?=?\\s*\\*';
      for (var i = 0; i < R; i++) {
        debug(i, src[i]);
        if (!re[i]) {
          re[i] = new RegExp(src[i]);
          safeRe[i] = new RegExp(makeSafeRe(src[i]));
        }
      }
      exports.parse = parse;
      function parse(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      }
      exports.valid = valid;
      function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      }
      exports.clean = clean;
      function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      }
      exports.SemVer = SemVer;
      function SemVer(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          if (version.loose === options.loose) {
            return version;
          } else {
            version = version.version;
          }
        } else if (typeof version !== 'string') {
          throw new TypeError('Invalid Version: ' + version);
        }
        if (version.length > MAX_LENGTH) {
          throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
        }
        if (!(this instanceof SemVer)) {
          return new SemVer(version, options);
        }
        debug('SemVer', version, options);
        this.options = options;
        this.loose = !!options.loose;
        var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]);
        if (!m) {
          throw new TypeError('Invalid Version: ' + version);
        }
        this.raw = version;
        this.major = +m[1];
        this.minor = +m[2];
        this.patch = +m[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError('Invalid major version');
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError('Invalid minor version');
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError('Invalid patch version');
        }
        if (!m[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m[4].split('.').map(function (id) {
            if (/^[0-9]+$/.test(id)) {
              var num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m[5] ? m[5].split('.') : [];
        this.format();
      }
      SemVer.prototype.format = function () {
        this.version = this.major + '.' + this.minor + '.' + this.patch;
        if (this.prerelease.length) {
          this.version += '-' + this.prerelease.join('.');
        }
        return this.version;
      };
      SemVer.prototype.toString = function () {
        return this.version;
      };
      SemVer.prototype.compare = function (other) {
        debug('SemVer.compare', this.version, this.options, other);
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return this.compareMain(other) || this.comparePre(other);
      };
      SemVer.prototype.compareMain = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      };
      SemVer.prototype.comparePre = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        var i = 0;
        do {
          var a = this.prerelease[i];
          var b = other.prerelease[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.compareBuild = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        var i = 0;
        do {
          var a = this.build[i];
          var b = other.build[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.inc = function (release, identifier) {
        switch (release) {
          case 'premajor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc('pre', identifier);
            break;
          case 'preminor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc('pre', identifier);
            break;
          case 'prepatch':
            this.prerelease.length = 0;
            this.inc('patch', identifier);
            this.inc('pre', identifier);
            break;
          case 'prerelease':
            if (this.prerelease.length === 0) {
              this.inc('patch', identifier);
            }
            this.inc('pre', identifier);
            break;
          case 'major':
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'minor':
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'patch':
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          case 'pre':
            if (this.prerelease.length === 0) {
              this.prerelease = [0];
            } else {
              var i = this.prerelease.length;
              while (--i >= 0) {
                if (typeof this.prerelease[i] === 'number') {
                  this.prerelease[i]++;
                  i = -2;
                }
              }
              if (i === -1) {
                this.prerelease.push(0);
              }
            }
            if (identifier) {
              if (this.prerelease[0] === identifier) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = [identifier, 0];
                }
              } else {
                this.prerelease = [identifier, 0];
              }
            }
            break;
          default:
            throw new Error('invalid increment argument: ' + release);
        }
        this.format();
        this.raw = this.version;
        return this;
      };
      exports.inc = inc;
      function inc(version, release, loose, identifier) {
        if (typeof loose === 'string') {
          identifier = loose;
          loose = undefined;
        }
        try {
          return new SemVer(version, loose).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      }
      exports.diff = diff;
      function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var prefix = '';
          if (v1.prerelease.length || v2.prerelease.length) {
            prefix = 'pre';
            var defaultResult = 'prerelease';
          }
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      }
      exports.compareIdentifiers = compareIdentifiers;
      var numeric = /^[0-9]+$/;
      function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      }
      exports.rcompareIdentifiers = rcompareIdentifiers;
      function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      }
      exports.major = major;
      function major(a, loose) {
        return new SemVer(a, loose).major;
      }
      exports.minor = minor;
      function minor(a, loose) {
        return new SemVer(a, loose).minor;
      }
      exports.patch = patch;
      function patch(a, loose) {
        return new SemVer(a, loose).patch;
      }
      exports.compare = compare;
      function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      }
      exports.compareLoose = compareLoose;
      function compareLoose(a, b) {
        return compare(a, b, true);
      }
      exports.compareBuild = compareBuild;
      function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      }
      exports.rcompare = rcompare;
      function rcompare(a, b, loose) {
        return compare(b, a, loose);
      }
      exports.sort = sort;
      function sort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(a, b, loose);
        });
      }
      exports.rsort = rsort;
      function rsort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(b, a, loose);
        });
      }
      exports.gt = gt;
      function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      }
      exports.lt = lt;
      function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      }
      exports.eq = eq;
      function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      }
      exports.neq = neq;
      function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      }
      exports.gte = gte;
      function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      }
      exports.lte = lte;
      function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      }
      exports.cmp = cmp;
      function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError('Invalid operator: ' + op);
        }
      }
      exports.Comparator = Comparator;
      function Comparator(comp, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (comp instanceof Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        if (!(this instanceof Comparator)) {
          return new Comparator(comp, options);
        }
        comp = comp.trim().split(/\s+/).join(' ');
        debug('comparator', comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = '';
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug('comp', this);
      }
      var ANY = {};
      Comparator.prototype.parse = function (comp) {
        var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var m = comp.match(r);
        if (!m) {
          throw new TypeError('Invalid comparator: ' + comp);
        }
        this.operator = m[1] !== undefined ? m[1] : '';
        if (this.operator === '=') {
          this.operator = '';
        }
        if (!m[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m[2], this.options.loose);
        }
      };
      Comparator.prototype.toString = function () {
        return this.value;
      };
      Comparator.prototype.test = function (version) {
        debug('Comparator.test', version, this.options.loose);
        if (this.semver === ANY || version === ANY) {
          return true;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version, this.operator, this.semver, this.options);
      };
      Comparator.prototype.intersects = function (comp, options) {
        if (!(comp instanceof Comparator)) {
          throw new TypeError('a Comparator is required');
        }
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        var rangeTmp;
        if (this.operator === '') {
          if (this.value === '') {
            return true;
          }
          rangeTmp = new Range(comp.value, options);
          return satisfies(this.value, rangeTmp, options);
        } else if (comp.operator === '') {
          if (comp.value === '') {
            return true;
          }
          rangeTmp = new Range(this.value, options);
          return satisfies(comp.semver, rangeTmp, options);
        }
        var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
        var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
        var sameSemVer = this.semver.version === comp.semver.version;
        var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
        var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
        var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
        return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
      };
      exports.Range = Range;
      function Range(range, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (range instanceof Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          return new Range(range.value, options);
        }
        if (!(this instanceof Range)) {
          return new Range(range, options);
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range.trim().split(/\s+/).join(' ');
        this.set = this.raw.split('||').map(function (range) {
          return this.parseRange(range.trim());
        }, this).filter(function (c) {
          return c.length;
        });
        if (!this.set.length) {
          throw new TypeError('Invalid SemVer Range: ' + this.raw);
        }
        this.format();
      }
      Range.prototype.format = function () {
        this.range = this.set.map(function (comps) {
          return comps.join(' ').trim();
        }).join('||').trim();
        return this.range;
      };
      Range.prototype.toString = function () {
        return this.range;
      };
      Range.prototype.parseRange = function (range) {
        var loose = this.options.loose;
        var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE];
        range = range.replace(hr, hyphenReplace);
        debug('hyphen replace', range);
        range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace);
        debug('comparator trim', range, safeRe[t.COMPARATORTRIM]);
        range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace);
        range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace);
        range = range.split(/\s+/).join(' ');
        var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var set = range.split(' ').map(function (comp) {
          return parseComparator(comp, this.options);
        }, this).join(' ').split(/\s+/);
        if (this.options.loose) {
          set = set.filter(function (comp) {
            return !!comp.match(compRe);
          });
        }
        set = set.map(function (comp) {
          return new Comparator(comp, this.options);
        }, this);
        return set;
      };
      Range.prototype.intersects = function (range, options) {
        if (!(range instanceof Range)) {
          throw new TypeError('a Range is required');
        }
        return this.set.some(function (thisComparators) {
          return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
            return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
              return rangeComparators.every(function (rangeComparator) {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      };
      function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      }
      exports.toComparators = toComparators;
      function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      }
      function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      }
      function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      }
      function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      }
      function replaceTilde(comp, options) {
        var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
          } else {
            ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
          }
          debug('tilde return', ret);
          return ret;
        });
      }
      function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      }
      function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            if (M === '0') {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
            }
          }
          debug('caret return', ret);
          return ret;
        });
      }
      function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      }
      function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            ret = gtlt + M + '.' + m + '.' + p + pr;
          } else if (xm) {
            ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
          } else if (xp) {
            ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
          }
          debug('xRange return', ret);
          return ret;
        });
      }
      function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(safeRe[t.STAR], '');
      }
      function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
        if (isX(fM)) {
          from = '';
        } else if (isX(fm)) {
          from = '>=' + fM + '.0.0';
        } else if (isX(fp)) {
          from = '>=' + fM + '.' + fm + '.0';
        } else {
          from = '>=' + from;
        }
        if (isX(tM)) {
          to = '';
        } else if (isX(tm)) {
          to = '<' + (+tM + 1) + '.0.0';
        } else if (isX(tp)) {
          to = '<' + tM + '.' + (+tm + 1) + '.0';
        } else if (tpr) {
          to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
        } else {
          to = '<=' + to;
        }
        return (from + ' ' + to).trim();
      }
      Range.prototype.test = function (version) {
        if (!version) {
          return false;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        for (var i = 0; i < this.set.length; i++) {
          if (testSet(this.set[i], version, this.options)) {
            return true;
          }
        }
        return false;
      };
      function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (i = 0; i < set.length; i++) {
            debug(set[i].semver);
            if (set[i].semver === ANY) {
              continue;
            }
            if (set[i].semver.prerelease.length > 0) {
              var allowed = set[i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      }
      exports.satisfies = satisfies;
      function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      }
      exports.maxSatisfying = maxSatisfying;
      function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      }
      exports.minSatisfying = minSatisfying;
      function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      }
      exports.minVersion = minVersion;
      function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!minver || gt(minver, compver)) {
                  minver = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error('Unexpected operation: ' + comparator.operator);
            }
          });
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      }
      exports.validRange = validRange;
      function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      }
      exports.ltr = ltr;
      function ltr(version, range, options) {
        return outside(version, range, '<', options);
      }
      exports.gtr = gtr;
      function gtr(version, range, options) {
        return outside(version, range, '>', options);
      }
      exports.outside = outside;
      function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return false;
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return false;
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return false;
          }
        }
        return true;
      }
      exports.prerelease = prerelease;
      function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      }
      exports.intersects = intersects;
      function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      }
      exports.coerce = coerce;
      function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(safeRe[t.COERCE]);
        } else {
          var next;
          while ((next = safeRe[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          safeRe[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) {
          return null;
        }
        return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
      }
    })(semver$4, semver$4.exports);
    return semver$4.exports;
  }

  var hasRequiredHelpers$1;
  function requireHelpers$1() {
    if (hasRequiredHelpers$1) return helpers$2;
    hasRequiredHelpers$1 = 1;
    helpers$2.__esModule = true;
    helpers$2.hasMinVersion = hasMinVersion;
    var _semver = _interopRequireDefault(requireSemver$1());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function hasMinVersion(minVersion, runtimeVersion) {
      if (!runtimeVersion || !minVersion) return true;
      runtimeVersion = String(runtimeVersion);
      if (_semver["default"].valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
      return !_semver["default"].intersects("<" + minVersion, runtimeVersion) && !_semver["default"].intersects(">=8.0.0", runtimeVersion);
    }
    return helpers$2;
  }

  var lib$5 = {};

  var require$$0$4 = /*@__PURE__*/getAugmentedNamespace(pluginUtilsShim);

  var require$$1$1 = /*@__PURE__*/getAugmentedNamespace(src);

  var utils$3 = {};

  var require$$5 = /*@__PURE__*/getAugmentedNamespace(_babel);

  var _templateObject$a, _templateObject2$9, _templateObject3$6;
  var hasRequiredUtils$3;
  function requireUtils$3() {
    if (hasRequiredUtils$3) return utils$3;
    hasRequiredUtils$3 = 1;
    utils$3.__esModule = true;
    utils$3.createUtilsGetter = createUtilsGetter;
    utils$3.getImportSource = getImportSource;
    utils$3.getRequireSource = getRequireSource;
    utils$3.has = has;
    utils$3.intersection = intersection;
    utils$3.resolveKey = resolveKey;
    utils$3.resolveSource = resolveSource;
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types,
      template = _ref.template;
    function intersection(a, b) {
      var result = new Set();
      a.forEach(function (v) {
        return b.has(v) && result.add(v);
      });
      return result;
    }
    function has(object, key) {
      return Object.prototype.hasOwnProperty.call(object, key);
    }
    function getType(target) {
      return Object.prototype.toString.call(target).slice(8, -1);
    }
    function resolveId(path) {
      if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, true)) {
        return path.node.name;
      }
      if (path.isPure()) {
        var _path$evaluate = path.evaluate(),
          deopt = _path$evaluate.deopt;
        if (deopt && deopt.isIdentifier()) {
          return deopt.node.name;
        }
      }
    }
    function resolveKey(path, computed) {
      if (computed === void 0) {
        computed = false;
      }
      var scope = path.scope;
      if (path.isStringLiteral()) return path.node.value;
      var isIdentifier = path.isIdentifier();
      if (isIdentifier && !(computed || path.parent.computed)) {
        return path.node.name;
      }
      if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
        name: "Symbol"
      }) && !scope.hasBinding("Symbol", true)) {
        var sym = resolveKey(path.get("property"), path.node.computed);
        if (sym) return "Symbol." + sym;
      }
      if (isIdentifier ? scope.hasBinding(path.node.name, true) : path.isPure()) {
        var _path$evaluate2 = path.evaluate(),
          value = _path$evaluate2.value;
        if (typeof value === "string") return value;
      }
    }
    function resolveSource(obj) {
      if (obj.isMemberExpression() && obj.get("property").isIdentifier({
        name: "prototype"
      })) {
        var _id = resolveId(obj.get("object"));
        if (_id) {
          return {
            id: _id,
            placement: "prototype"
          };
        }
        return {
          id: null,
          placement: null
        };
      }
      var id = resolveId(obj);
      if (id) {
        return {
          id: id,
          placement: "static"
        };
      }
      if (obj.isRegExpLiteral()) {
        return {
          id: "RegExp",
          placement: "prototype"
        };
      } else if (obj.isFunction()) {
        return {
          id: "Function",
          placement: "prototype"
        };
      } else if (obj.isPure()) {
        var _obj$evaluate = obj.evaluate(),
          value = _obj$evaluate.value;
        if (value !== undefined) {
          return {
            id: getType(value),
            placement: "prototype"
          };
        }
      }
      return {
        id: null,
        placement: null
      };
    }
    function getImportSource(_ref2) {
      var node = _ref2.node;
      if (node.specifiers.length === 0) return node.source.value;
    }
    function getRequireSource(_ref3) {
      var node = _ref3.node;
      if (!t.isExpressionStatement(node)) return;
      var expression = node.expression;
      if (t.isCallExpression(expression) && t.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t.isStringLiteral(expression.arguments[0])) {
        return expression.arguments[0].value;
      }
    }
    function hoist(node) {
      node._blockHoist = 3;
      return node;
    }
    function createUtilsGetter(cache) {
      return function (path) {
        var prog = path.findParent(function (p) {
          return p.isProgram();
        });
        return {
          injectGlobalImport: function injectGlobalImport(url, moduleName) {
            cache.storeAnonymous(prog, url, moduleName, function (isScript, source) {
              return isScript ? template.statement.ast(_templateObject$a || (_templateObject$a = _taggedTemplateLiteralLoose(["require(", ")"])), source) : t.importDeclaration([], source);
            });
          },
          injectNamedImport: function injectNamedImport(url, name, hint, moduleName) {
            if (hint === void 0) {
              hint = name;
            }
            return cache.storeNamed(prog, url, name, moduleName, function (isScript, source, name) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteralLoose(["\n                  var ", " = require(", ").", "\n                "])), id, source, name)) : t.importDeclaration([t.importSpecifier(id, name)], source),
                name: id.name
              };
            });
          },
          injectDefaultImport: function injectDefaultImport(url, hint, moduleName) {
            if (hint === void 0) {
              hint = url;
            }
            return cache.storeNamed(prog, url, "default", moduleName, function (isScript, source) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteralLoose(["var ", " = require(", ")"])), id, source)) : t.importDeclaration([t.importDefaultSpecifier(id)], source),
                name: id.name
              };
            });
          }
        };
      };
    }
    return utils$3;
  }

  var importsInjector$1 = {};

  var hasRequiredImportsInjector$1;
  function requireImportsInjector$1() {
    if (hasRequiredImportsInjector$1) return importsInjector$1;
    hasRequiredImportsInjector$1 = 1;
    importsInjector$1.__esModule = true;
    importsInjector$1["default"] = void 0;
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var ImportsCachedInjector = function () {
      function ImportsCachedInjector(resolver, getPreferredIndex) {
        this._imports = new WeakMap();
        this._anonymousImports = new WeakMap();
        this._lastImports = new WeakMap();
        this._resolver = resolver;
        this._getPreferredIndex = getPreferredIndex;
      }
      var _proto = ImportsCachedInjector.prototype;
      _proto.storeAnonymous = function storeAnonymous(programPath, url, moduleName, getVal) {
        var key = this._normalizeKey(programPath, url);
        var imports = this._ensure(this._anonymousImports, programPath, Set);
        if (imports.has(key)) return;
        var node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
        imports.add(key);
        this._injectImport(programPath, node, moduleName);
      };
      _proto.storeNamed = function storeNamed(programPath, url, name, moduleName, getVal) {
        var key = this._normalizeKey(programPath, url, name);
        var imports = this._ensure(this._imports, programPath, Map);
        if (!imports.has(key)) {
          var _getVal = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name)),
            node = _getVal.node,
            id = _getVal.name;
          imports.set(key, id);
          this._injectImport(programPath, node, moduleName);
        }
        return t.identifier(imports.get(key));
      };
      _proto._injectImport = function _injectImport(programPath, node, moduleName) {
        var _this$_lastImports$ge;
        var newIndex = this._getPreferredIndex(moduleName);
        var lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
        var isPathStillValid = function isPathStillValid(path) {
          return path.node && path.parent === programPath.node && path.container === programPath.node.body;
        };
        var last;
        if (newIndex === Infinity) {
          if (lastImports.length > 0) {
            last = lastImports[lastImports.length - 1].path;
            if (!isPathStillValid(last)) last = undefined;
          }
        } else {
          for (var _iterator = _createForOfIteratorHelperLoose(lastImports.entries()), _step; !(_step = _iterator()).done;) {
            var _step$value = _slicedToArray(_step.value, 2),
              i = _step$value[0],
              data = _step$value[1];
            var path = data.path,
              index = data.index;
            if (isPathStillValid(path)) {
              if (newIndex < index) {
                var _path$insertBefore = path.insertBefore(node),
                  _path$insertBefore2 = _slicedToArray(_path$insertBefore, 1),
                  newPath = _path$insertBefore2[0];
                lastImports.splice(i, 0, {
                  path: newPath,
                  index: newIndex
                });
                return;
              }
              last = path;
            }
          }
        }
        if (last) {
          var _last$insertAfter = last.insertAfter(node),
            _last$insertAfter2 = _slicedToArray(_last$insertAfter, 1),
            _newPath = _last$insertAfter2[0];
          lastImports.push({
            path: _newPath,
            index: newIndex
          });
        } else {
          var _programPath$unshiftC = programPath.unshiftContainer("body", node),
            _programPath$unshiftC2 = _slicedToArray(_programPath$unshiftC, 1),
            _newPath2 = _programPath$unshiftC2[0];
          this._lastImports.set(programPath, [{
            path: _newPath2,
            index: newIndex
          }]);
        }
      };
      _proto._ensure = function _ensure(map, programPath, Collection) {
        var collection = map.get(programPath);
        if (!collection) {
          collection = new Collection();
          map.set(programPath, collection);
        }
        return collection;
      };
      _proto._normalizeKey = function _normalizeKey(programPath, url, name) {
        if (name === void 0) {
          name = "";
        }
        var sourceType = programPath.node.sourceType;
        return (name && sourceType) + "::" + url + "::" + name;
      };
      return _createClass(ImportsCachedInjector);
    }();
    importsInjector$1["default"] = ImportsCachedInjector;
    return importsInjector$1;
  }

  var debugUtils$1 = {};

  var hasRequiredDebugUtils$1;
  function requireDebugUtils$1() {
    if (hasRequiredDebugUtils$1) return debugUtils$1;
    hasRequiredDebugUtils$1 = 1;
    debugUtils$1.__esModule = true;
    debugUtils$1.presetEnvSilentDebugHeader = void 0;
    debugUtils$1.stringifyTargets = stringifyTargets;
    debugUtils$1.stringifyTargetsMultiline = stringifyTargetsMultiline;
    var _helperCompilationTargets = require$$1$1;
    var presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
    debugUtils$1.presetEnvSilentDebugHeader = presetEnvSilentDebugHeader;
    function stringifyTargetsMultiline(targets) {
      return JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2);
    }
    function stringifyTargets(targets) {
      return JSON.stringify(targets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
    }
    return debugUtils$1;
  }

  var normalizeOptions$5 = {};

  var hasRequiredNormalizeOptions$1;
  function requireNormalizeOptions$1() {
    if (hasRequiredNormalizeOptions$1) return normalizeOptions$5;
    hasRequiredNormalizeOptions$1 = 1;
    normalizeOptions$5.__esModule = true;
    normalizeOptions$5.applyMissingDependenciesDefaults = applyMissingDependenciesDefaults;
    normalizeOptions$5.validateIncludeExclude = validateIncludeExclude;
    var _utils = requireUtils$3();
    function patternToRegExp(pattern) {
      if (pattern instanceof RegExp) return pattern;
      try {
        return new RegExp("^" + pattern + "$");
      } catch (_unused) {
        return null;
      }
    }
    function buildUnusedError(label, unused) {
      if (!unused.length) return "";
      return "  - The following \"" + label + "\" patterns didn't match any polyfill:\n" + unused.map(function (original) {
        return "    " + String(original) + "\n";
      }).join("");
    }
    function buldDuplicatesError(duplicates) {
      if (!duplicates.size) return "";
      return "  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\n" + Array.from(duplicates, function (name) {
        return "    " + name + "\n";
      }).join("");
    }
    function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
      var current;
      var filter = function filter(pattern) {
        var regexp = patternToRegExp(pattern);
        if (!regexp) return false;
        var matched = false;
        for (var _iterator = _createForOfIteratorHelperLoose(polyfills.keys()), _step; !(_step = _iterator()).done;) {
          var polyfill = _step.value;
          if (regexp.test(polyfill)) {
            matched = true;
            current.add(polyfill);
          }
        }
        return !matched;
      };
      var include = current = new Set();
      var unusedInclude = Array.from(includePatterns).filter(filter);
      var exclude = current = new Set();
      var unusedExclude = Array.from(excludePatterns).filter(filter);
      var duplicates = (0, _utils.intersection)(include, exclude);
      if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
        throw new Error("Error while validating the \"" + provider + "\" provider options:\n" + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
      }
      return {
        include: include,
        exclude: exclude
      };
    }
    function applyMissingDependenciesDefaults(options, babelApi) {
      var _options$missingDepen = options.missingDependencies,
        missingDependencies = _options$missingDepen === void 0 ? {} : _options$missingDepen;
      if (missingDependencies === false) return false;
      var caller = babelApi.caller(function (caller) {
        return caller == null ? void 0 : caller.name;
      });
      var _missingDependencies$ = missingDependencies.log,
        log = _missingDependencies$ === void 0 ? "deferred" : _missingDependencies$,
        _missingDependencies$2 = missingDependencies.inject,
        inject = _missingDependencies$2 === void 0 ? caller === "rollup-plugin-babel" ? "throw" : "import" : _missingDependencies$2,
        _missingDependencies$3 = missingDependencies.all,
        all = _missingDependencies$3 === void 0 ? false : _missingDependencies$3;
      return {
        log: log,
        inject: inject,
        all: all
      };
    }
    return normalizeOptions$5;
  }

  var visitors$1 = {};

  var usage$2 = {};

  var hasRequiredUsage$1;
  function requireUsage$1() {
    if (hasRequiredUsage$1) return usage$2;
    hasRequiredUsage$1 = 1;
    usage$2.__esModule = true;
    usage$2["default"] = void 0;
    var _utils = requireUtils$3();
    function isRemoved(path) {
      if (path.removed) return true;
      if (!path.parentPath) return false;
      if (path.listKey) {
        var _path$parentPath$node;
        if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
      } else {
        if (path.parentPath.node[path.key] !== path.node) return true;
      }
      return isRemoved(path.parentPath);
    }
    var _default = function _default(callProvider) {
      function property(object, key, placement, path) {
        return callProvider({
          kind: "property",
          object: object,
          key: key,
          placement: placement
        }, path);
      }
      function handleReferencedIdentifier(path) {
        var name = path.node.name,
          scope = path.scope;
        if (scope.getBindingIdentifier(name)) return;
        callProvider({
          kind: "global",
          name: name
        }, path);
      }
      function analyzeMemberExpression(path) {
        var key = (0, _utils.resolveKey)(path.get("property"), path.node.computed);
        return {
          key: key,
          handleAsMemberExpression: !!key && key !== "prototype"
        };
      }
      return {
        ReferencedIdentifier: function ReferencedIdentifier(path) {
          var parentPath = path.parentPath;
          if (parentPath.isMemberExpression({
            object: path.node
          }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
            return;
          }
          handleReferencedIdentifier(path);
        },
        MemberExpression: function MemberExpression(path) {
          var _analyzeMemberExpress = analyzeMemberExpression(path),
            key = _analyzeMemberExpress.key,
            handleAsMemberExpression = _analyzeMemberExpress.handleAsMemberExpression;
          if (!handleAsMemberExpression) return;
          var object = path.get("object");
          var objectIsGlobalIdentifier = object.isIdentifier();
          if (objectIsGlobalIdentifier) {
            var binding = object.scope.getBinding(object.node.name);
            if (binding) {
              if (binding.path.isImportNamespaceSpecifier()) return;
              objectIsGlobalIdentifier = false;
            }
          }
          var source = (0, _utils.resolveSource)(object);
          var skipObject = property(source.id, key, source.placement, path);
          skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
          if (!skipObject) handleReferencedIdentifier(object);
        },
        ObjectPattern: function ObjectPattern(path) {
          var parentPath = path.parentPath,
            parent = path.parent;
          var obj;
          if (parentPath.isVariableDeclarator()) {
            obj = parentPath.get("init");
          } else if (parentPath.isAssignmentExpression()) {
            obj = parentPath.get("right");
          } else if (parentPath.isFunction()) {
            var grand = parentPath.parentPath;
            if (grand.isCallExpression() || grand.isNewExpression()) {
              if (grand.node.callee === parent) {
                obj = grand.get("arguments")[path.key];
              }
            }
          }
          var id = null;
          var placement = null;
          if (obj) {
            var _ref = (0, _utils.resolveSource)(obj);
            id = _ref.id;
            placement = _ref.placement;
          }
          for (var _iterator = _createForOfIteratorHelperLoose(path.get("properties")), _step; !(_step = _iterator()).done;) {
            var prop = _step.value;
            if (prop.isObjectProperty()) {
              var key = (0, _utils.resolveKey)(prop.get("key"));
              if (key) property(id, key, placement, prop);
            }
          }
        },
        BinaryExpression: function BinaryExpression(path) {
          if (path.node.operator !== "in") return;
          var source = (0, _utils.resolveSource)(path.get("right"));
          var key = (0, _utils.resolveKey)(path.get("left"), true);
          if (!key) return;
          callProvider({
            kind: "in",
            object: source.id,
            key: key,
            placement: source.placement
          }, path);
        }
      };
    };
    usage$2["default"] = _default;
    return usage$2;
  }

  var entry$2 = {};

  var hasRequiredEntry$1;
  function requireEntry$1() {
    if (hasRequiredEntry$1) return entry$2;
    hasRequiredEntry$1 = 1;
    entry$2.__esModule = true;
    entry$2["default"] = void 0;
    var _utils = requireUtils$3();
    var _default = function _default(callProvider) {
      return {
        ImportDeclaration: function ImportDeclaration(path) {
          var source = (0, _utils.getImportSource)(path);
          if (!source) return;
          callProvider({
            kind: "import",
            source: source
          }, path);
        },
        Program: function Program(path) {
          path.get("body").forEach(function (bodyPath) {
            var source = (0, _utils.getRequireSource)(bodyPath);
            if (!source) return;
            callProvider({
              kind: "import",
              source: source
            }, bodyPath);
          });
        }
      };
    };
    entry$2["default"] = _default;
    return entry$2;
  }

  var hasRequiredVisitors$1;
  function requireVisitors$1() {
    if (hasRequiredVisitors$1) return visitors$1;
    hasRequiredVisitors$1 = 1;
    visitors$1.__esModule = true;
    visitors$1.usage = visitors$1.entry = void 0;
    var _usage = _interopRequireDefault(requireUsage$1());
    visitors$1.usage = _usage["default"];
    var _entry = _interopRequireDefault(requireEntry$1());
    visitors$1.entry = _entry["default"];
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    return visitors$1;
  }

  var dependencies$1 = {};

  var hasRequiredDependencies$1;
  function requireDependencies$1() {
    if (hasRequiredDependencies$1) return dependencies$1;
    hasRequiredDependencies$1 = 1;
    dependencies$1.__esModule = true;
    dependencies$1.has = has;
    dependencies$1.laterLogMissing = laterLogMissing;
    dependencies$1.logMissing = logMissing;
    dependencies$1.resolve = resolve;
    function resolve(dirname, moduleName, absoluteImports) {
      if (absoluteImports === false) return moduleName;
      throw new Error("\"absoluteImports\" is not supported in bundles prepared for the browser.");
    }
    function has(basedir, name) {
      return true;
    }
    function logMissing(missingDeps) {}
    function laterLogMissing(missingDeps) {}
    return dependencies$1;
  }

  var metaResolver$1 = {};

  var hasRequiredMetaResolver$1;
  function requireMetaResolver$1() {
    if (hasRequiredMetaResolver$1) return metaResolver$1;
    hasRequiredMetaResolver$1 = 1;
    metaResolver$1.__esModule = true;
    metaResolver$1["default"] = createMetaResolver;
    var _utils = requireUtils$3();
    var PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
    function createMetaResolver(polyfills) {
      var staticP = polyfills["static"],
        instanceP = polyfills.instance,
        globalP = polyfills.global;
      return function (meta) {
        if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) {
          return {
            kind: "global",
            desc: globalP[meta.name],
            name: meta.name
          };
        }
        if (meta.kind === "property" || meta.kind === "in") {
          var placement = meta.placement,
            object = meta.object,
            key = meta.key;
          if (object && placement === "static") {
            if (globalP && PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) {
              return {
                kind: "global",
                desc: globalP[key],
                name: key
              };
            }
            if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) {
              return {
                kind: "static",
                desc: staticP[object][key],
                name: object + "$" + key
              };
            }
          }
          if (instanceP && (0, _utils.has)(instanceP, key)) {
            return {
              kind: "instance",
              desc: instanceP[key],
              name: "" + key
            };
          }
        }
      };
    }
    return metaResolver$1;
  }

  var hasRequiredLib$6;
  function requireLib$6() {
    if (hasRequiredLib$6) return lib$5;
    hasRequiredLib$6 = 1;
    lib$5.__esModule = true;
    lib$5["default"] = definePolyfillProvider;
    var _helperPluginUtils = require$$0$4;
    var _helperCompilationTargets = _interopRequireWildcard(require$$1$1);
    var _utils = requireUtils$3();
    var _importsInjector = _interopRequireDefault(requireImportsInjector$1());
    var _debugUtils = requireDebugUtils$1();
    var _normalizeOptions = requireNormalizeOptions$1();
    var v = _interopRequireWildcard(requireVisitors$1());
    var deps = _interopRequireWildcard(requireDependencies$1());
    var _metaResolver = _interopRequireDefault(requireMetaResolver$1());
    var _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    function _objectWithoutPropertiesLoose(source, excluded) {
      if (source == null) return {};
      var target = {};
      var sourceKeys = Object.keys(source);
      var key, i;
      for (i = 0; i < sourceKeys.length; i++) {
        key = sourceKeys[i];
        if (excluded.indexOf(key) >= 0) continue;
        target[key] = source[key];
      }
      return target;
    }
    var getTargets = _helperCompilationTargets["default"]["default"] || _helperCompilationTargets["default"];
    function resolveOptions(options, babelApi) {
      var method = options.method,
        targetsOption = options.targets,
        ignoreBrowserslistConfig = options.ignoreBrowserslistConfig,
        configPath = options.configPath,
        debug = options.debug,
        shouldInjectPolyfill = options.shouldInjectPolyfill,
        absoluteImports = options.absoluteImports,
        providerOptions = _objectWithoutPropertiesLoose(options, _excluded);
      if (isEmpty(options)) {
        throw new Error("This plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md");
      }
      var methodName;
      if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
        throw new Error(".method must be a string");
      } else {
        throw new Error(".method must be one of \"entry-global\", \"usage-global\"" + (" or \"usage-pure\" (received " + JSON.stringify(method) + ")"));
      }
      if (typeof shouldInjectPolyfill === "function") {
        if (options.include || options.exclude) {
          throw new Error(".include and .exclude are not supported when using the" + " .shouldInjectPolyfill function.");
        }
      } else if (shouldInjectPolyfill != null) {
        throw new Error(".shouldInjectPolyfill must be a function, or undefined" + (" (received " + JSON.stringify(shouldInjectPolyfill) + ")"));
      }
      if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
        throw new Error(".absoluteImports must be a boolean, a string, or undefined" + (" (received " + JSON.stringify(absoluteImports) + ")"));
      }
      var targets;
      if (targetsOption || configPath || ignoreBrowserslistConfig) {
        var targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
          browsers: targetsOption
        } : targetsOption;
        targets = getTargets(targetsObj, {
          ignoreBrowserslistConfig: ignoreBrowserslistConfig,
          configPath: configPath
        });
      } else {
        targets = babelApi.targets();
      }
      return {
        method: method,
        methodName: methodName,
        targets: targets,
        absoluteImports: absoluteImports != null ? absoluteImports : false,
        shouldInjectPolyfill: shouldInjectPolyfill,
        debug: !!debug,
        providerOptions: providerOptions
      };
    }
    function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
      var _resolveOptions = resolveOptions(options, babelApi),
        method = _resolveOptions.method,
        methodName = _resolveOptions.methodName,
        targets = _resolveOptions.targets,
        _debug = _resolveOptions.debug,
        _shouldInjectPolyfill = _resolveOptions.shouldInjectPolyfill,
        providerOptions = _resolveOptions.providerOptions,
        absoluteImports = _resolveOptions.absoluteImports;
      var include, exclude;
      var polyfillsSupport;
      var polyfillsNames;
      var filterPolyfills;
      var getUtils = (0, _utils.createUtilsGetter)(new _importsInjector["default"](function (moduleName) {
        return deps.resolve(dirname, moduleName, absoluteImports);
      }, function (name) {
        var _polyfillsNames$get, _polyfillsNames;
        return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
      }));
      var depsCache = new Map();
      var api = {
        babel: babelApi,
        getUtils: getUtils,
        method: options.method,
        targets: targets,
        createMetaResolver: _metaResolver["default"],
        shouldInjectPolyfill: function shouldInjectPolyfill(name) {
          if (polyfillsNames === undefined) {
            throw new Error("Internal error in the " + factory.name + " provider: " + "shouldInjectPolyfill() can't be called during initialization.");
          }
          if (!polyfillsNames.has(name)) {
            console.warn("Internal error in the " + providerName + " provider: " + ("unknown polyfill \"" + name + "\"."));
          }
          if (filterPolyfills && !filterPolyfills(name)) return false;
          var shouldInject = (0, _helperCompilationTargets.isRequired)(name, targets, {
            compatData: polyfillsSupport,
            includes: include,
            excludes: exclude
          });
          if (_shouldInjectPolyfill) {
            shouldInject = _shouldInjectPolyfill(name, shouldInject);
            if (typeof shouldInject !== "boolean") {
              throw new Error(".shouldInjectPolyfill must return a boolean.");
            }
          }
          return shouldInject;
        },
        debug: function debug(name) {
          var _debugLog, _debugLog$polyfillsSu;
          debugLog().found = true;
          if (!_debug || !name) return;
          if (debugLog().polyfills.has(providerName)) return;
          debugLog().polyfills.add(name);
          (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
        },
        assertDependency: function assertDependency(name, version) {
          if (version === void 0) {
            version = "*";
          }
          if (missingDependencies === false) return;
          if (absoluteImports) {
            return;
          }
          var dep = version === "*" ? name : name + "@^" + version;
          var found = missingDependencies.all ? false : mapGetOr(depsCache, name + " :: " + dirname, function () {
            return deps.has(dirname, name);
          });
          if (!found) {
            debugLog().missingDeps.add(dep);
          }
        }
      };
      var provider = factory(api, providerOptions, dirname);
      var providerName = provider.name || factory.name;
      if (typeof provider[methodName] !== "function") {
        throw new Error("The \"" + providerName + "\" provider doesn't support the \"" + method + "\" polyfilling method.");
      }
      if (Array.isArray(provider.polyfills)) {
        polyfillsNames = new Map(provider.polyfills.map(function (name, index) {
          return [name, index];
        }));
        filterPolyfills = provider.filterPolyfills;
      } else if (provider.polyfills) {
        polyfillsNames = new Map(Object.keys(provider.polyfills).map(function (name, index) {
          return [name, index];
        }));
        polyfillsSupport = provider.polyfills;
        filterPolyfills = provider.filterPolyfills;
      } else {
        polyfillsNames = new Map();
      }
      var _ref2 = (0, _normalizeOptions.validateIncludeExclude)(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []);
      include = _ref2.include;
      exclude = _ref2.exclude;
      var callProvider;
      if (methodName === "usageGlobal") {
        callProvider = function callProvider(payload, path) {
          var _ref;
          var utils = getUtils(path);
          return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
        };
      } else {
        callProvider = function callProvider(payload, path) {
          var utils = getUtils(path);
          provider[methodName](payload, utils, path);
          return false;
        };
      }
      return {
        debug: _debug,
        method: method,
        targets: targets,
        provider: provider,
        providerName: providerName,
        callProvider: callProvider
      };
    }
    function definePolyfillProvider(factory) {
      return (0, _helperPluginUtils.declare)(function (babelApi, options, dirname) {
        babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
        var traverse = babelApi.traverse;
        var debugLog;
        var missingDependencies = (0, _normalizeOptions.applyMissingDependenciesDefaults)(options, babelApi);
        var _instantiateProvider = instantiateProvider(factory, options, missingDependencies, dirname, function () {
            return debugLog;
          }, babelApi),
          debug = _instantiateProvider.debug,
          method = _instantiateProvider.method,
          targets = _instantiateProvider.targets,
          provider = _instantiateProvider.provider,
          providerName = _instantiateProvider.providerName,
          callProvider = _instantiateProvider.callProvider;
        var createVisitor = method === "entry-global" ? v.entry : v.usage;
        var visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
        if (debug && debug !== _debugUtils.presetEnvSilentDebugHeader) {
          console.log(providerName + ": `DEBUG` option");
          console.log("\nUsing targets: " + (0, _debugUtils.stringifyTargetsMultiline)(targets));
          console.log("\nUsing polyfills with `" + method + "` method:");
        }
        var runtimeName = provider.runtimeName;
        return {
          name: "inject-polyfills",
          visitor: visitor,
          pre: function pre(file) {
            var _provider$pre;
            if (runtimeName) {
              if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
                console.warn("Two different polyfill providers" + (" (" + file.get("runtimeHelpersModuleProvider")) + (" and " + providerName + ") are trying to define two") + " conflicting @babel/runtime alternatives:" + (" " + file.get("runtimeHelpersModuleName") + " and " + runtimeName + ".") + " The second one will be ignored.");
              } else {
                file.set("runtimeHelpersModuleName", runtimeName);
                file.set("runtimeHelpersModuleProvider", providerName);
              }
            }
            debugLog = {
              polyfills: new Set(),
              polyfillsSupport: undefined,
              found: false,
              providers: new Set(),
              missingDeps: new Set()
            };
            (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
          },
          post: function post() {
            var _provider$post;
            (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
            if (missingDependencies !== false) {
              if (missingDependencies.log === "per-file") {
                deps.logMissing(debugLog.missingDeps);
              } else {
                deps.laterLogMissing(debugLog.missingDeps);
              }
            }
            if (!debug) return;
            if (this.filename) console.log("\n[" + this.filename + "]");
            if (debugLog.polyfills.size === 0) {
              console.log(method === "entry-global" ? debugLog.found ? "Based on your targets, the " + providerName + " polyfill did not add any polyfill." : "The entry point for the " + providerName + " polyfill has not been found." : "Based on your code and targets, the " + providerName + " polyfill did not add any polyfill.");
              return;
            }
            if (method === "entry-global") {
              console.log("The " + providerName + " polyfill entry has been replaced with " + "the following polyfills:");
            } else {
              console.log("The " + providerName + " polyfill added the following polyfills:");
            }
            for (var _iterator = _createForOfIteratorHelperLoose(debugLog.polyfills), _step; !(_step = _iterator()).done;) {
              var name = _step.value;
              var _debugLog$polyfillsSu2;
              if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
                var filteredTargets = (0, _helperCompilationTargets.getInclusionReasons)(name, targets, debugLog.polyfillsSupport);
                var formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
                console.log("  " + name + " " + formattedTargets);
              } else {
                console.log("  " + name);
              }
            }
          }
        };
      });
    }
    function mapGetOr(map, key, getDefault) {
      var val = map.get(key);
      if (val === undefined) {
        val = getDefault();
        map.set(key, val);
      }
      return val;
    }
    function isEmpty(obj) {
      return Object.keys(obj).length === 0;
    }
    return lib$5;
  }

  var hasRequiredLib$5;
  function requireLib$5() {
    if (hasRequiredLib$5) return lib$6;
    hasRequiredLib$5 = 1;
    lib$6.__esModule = true;
    lib$6["default"] = void 0;
    var _corejs2BuiltIns = _interopRequireDefault(requireCorejs2BuiltIns());
    var _builtInDefinitions = requireBuiltInDefinitions$2();
    var _addPlatformSpecificPolyfills = _interopRequireDefault(requireAddPlatformSpecificPolyfills$1());
    var _helpers = requireHelpers$1();
    var _helperDefinePolyfillProvider = _interopRequireDefault(requireLib$6());
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var BABEL_RUNTIME = "@babel/runtime-corejs2";
    var presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var has = Function.call.bind(Object.hasOwnProperty);
    var _default = (0, _helperDefinePolyfillProvider["default"])(function (api, _ref2) {
      var _ref2$presetEnvCompat = _ref2[presetEnvCompat],
        _ref2$presetEnvCompat2 = _ref2$presetEnvCompat === void 0 ? {} : _ref2$presetEnvCompat,
        _ref2$presetEnvCompat3 = _ref2$presetEnvCompat2.entryInjectRegenerator,
        entryInjectRegenerator = _ref2$presetEnvCompat3 === void 0 ? false : _ref2$presetEnvCompat3,
        _ref2$presetEnvCompat4 = _ref2$presetEnvCompat2.noRuntimeName,
        noRuntimeName = _ref2$presetEnvCompat4 === void 0 ? false : _ref2$presetEnvCompat4,
        _ref2$runtimeCompat = _ref2[runtimeCompat],
        _ref2$runtimeCompat2 = _ref2$runtimeCompat === void 0 ? {} : _ref2$runtimeCompat,
        _ref2$runtimeCompat2$ = _ref2$runtimeCompat2.useBabelRuntime,
        useBabelRuntime = _ref2$runtimeCompat2$ === void 0 ? false : _ref2$runtimeCompat2$,
        _ref2$runtimeCompat2$2 = _ref2$runtimeCompat2.runtimeVersion,
        runtimeVersion = _ref2$runtimeCompat2$2 === void 0 ? "" : _ref2$runtimeCompat2$2,
        _ref2$runtimeCompat2$3 = _ref2$runtimeCompat2.ext,
        ext = _ref2$runtimeCompat2$3 === void 0 ? ".js" : _ref2$runtimeCompat2$3;
      var resolve = api.createMetaResolver({
        global: _builtInDefinitions.BuiltIns,
        "static": _builtInDefinitions.StaticProperties,
        instance: _builtInDefinitions.InstanceProperties
      });
      var debug = api.debug,
        shouldInjectPolyfill = api.shouldInjectPolyfill,
        method = api.method;
      var polyfills = (0, _addPlatformSpecificPolyfills["default"])(api.targets, method, _corejs2BuiltIns["default"]);
      var coreJSBase = useBabelRuntime ? BABEL_RUNTIME + "/core-js" : method === "usage-pure" ? "core-js/library/fn" : "core-js/modules";
      function inject(name, utils) {
        if (typeof name === "string") {
          if (has(polyfills, name) && shouldInjectPolyfill(name)) {
            debug(name);
            utils.injectGlobalImport(coreJSBase + "/" + name + ".js");
          }
          return;
        }
        name.forEach(function (name) {
          return inject(name, utils);
        });
      }
      function maybeInjectPure(desc, hint, utils) {
        var pure = desc.pure,
          meta = desc.meta,
          name = desc.name;
        if (!pure || !shouldInjectPolyfill(name)) return;
        if (runtimeVersion && meta && meta.minRuntimeVersion && !(0, _helpers.hasMinVersion)(meta && meta.minRuntimeVersion, runtimeVersion)) {
          return;
        }
        if (useBabelRuntime && pure === "symbol/index") pure = "symbol";
        return utils.injectDefaultImport(coreJSBase + "/" + pure + ext, hint);
      }
      return {
        name: "corejs2",
        runtimeName: noRuntimeName ? null : BABEL_RUNTIME,
        polyfills: polyfills,
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind === "import" && meta.source === "core-js") {
            debug(null);
            inject(Object.keys(polyfills), utils);
            if (entryInjectRegenerator) {
              utils.injectGlobalImport("regenerator-runtime/runtime.js");
            }
            path.remove();
          }
        },
        usageGlobal: function usageGlobal(meta, utils) {
          var resolved = resolve(meta);
          if (!resolved) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low);
            });
          }
          inject(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSBase + "/is-iterable" + ext, "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (meta.key === "Symbol.iterator" && shouldInjectPolyfill("es6.symbol") && path.parentPath.isCallExpression({
              callee: path.node
            }) && path.parentPath.node.arguments.length === 0) {
              path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSBase + "/get-iterator" + ext, "getIterator"), [path.node.object]));
              path.skip();
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          var id = maybeInjectPure(resolved.desc, resolved.name, utils);
          if (id) path.replaceWith(id);
        },
        visitor: method === "usage-global" && {
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              inject("web.dom.iterable", api.getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            _builtInDefinitions.CommonIterators.forEach(function (name) {
              return inject(name, api.getUtils(path));
            });
          }
        }
      };
    });
    lib$6["default"] = _default;
    return lib$6;
  }

  var babelPluginPolyfillCorejs2$1;
  var hasRequiredBabelPluginPolyfillCorejs2$1;
  function requireBabelPluginPolyfillCorejs2$1() {
    if (hasRequiredBabelPluginPolyfillCorejs2$1) return babelPluginPolyfillCorejs2$1;
    hasRequiredBabelPluginPolyfillCorejs2$1 = 1;
    function bool(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    babelPluginPolyfillCorejs2$1 = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? null : requireLib$5();
    return babelPluginPolyfillCorejs2$1;
  }

  var lib$4 = {};

  var require$$0$3 = {
  	"es.symbol": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.description": {
  	android: "70",
  	bun: "0.1.1",
  	chrome: "70",
  	"chrome-android": "70",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "63",
  	"firefox-android": "63",
  	ios: "12.2",
  	node: "11.0",
  	oculus: "6.0",
  	opera: "57",
  	"opera-android": "49",
  	opera_mobile: "49",
  	quest: "6.0",
  	safari: "12.1",
  	samsung: "10.0"
  },
  	"es.symbol.async-iterator": {
  	android: "63",
  	bun: "0.1.1",
  	chrome: "63",
  	"chrome-android": "63",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "12.0",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "50",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	safari: "12.0",
  	samsung: "8.0"
  },
  	"es.symbol.has-instance": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.1",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.is-concat-spreadable": {
  	android: "48",
  	bun: "0.1.1",
  	chrome: "48",
  	"chrome-android": "48",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "35",
  	"opera-android": "35",
  	opera_mobile: "35",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.iterator": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "36",
  	"firefox-android": "36",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.symbol.match": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.1",
  	firefox: "40",
  	"firefox-android": "40",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.match-all": {
  	android: "73",
  	bun: "0.1.1",
  	chrome: "73",
  	"chrome-android": "73",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "67",
  	"firefox-android": "67",
  	hermes: "0.6",
  	ios: "13.0",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "60",
  	"opera-android": "52",
  	opera_mobile: "52",
  	quest: "6.0",
  	"react-native": "0.69",
  	safari: "13",
  	samsung: "11.0"
  },
  	"es.symbol.replace": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.1",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.search": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.1",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.species": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "41",
  	"firefox-android": "41",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.split": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.1",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.to-primitive": {
  	android: "47",
  	bun: "0.1.1",
  	chrome: "47",
  	"chrome-android": "47",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.36",
  	firefox: "44",
  	"firefox-android": "44",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "34",
  	"opera-android": "34",
  	opera_mobile: "34",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.to-string-tag": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.symbol.unscopables": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.error.cause": {
  	android: "94",
  	bun: "0.1.1",
  	chrome: "94",
  	"chrome-android": "94",
  	deno: "1.14",
  	edge: "94",
  	electron: "15.0",
  	firefox: "91",
  	"firefox-android": "91",
  	hermes: "0.8",
  	ios: "15.0",
  	node: "16.11",
  	oculus: "18.0",
  	opera: "80",
  	"opera-android": "66",
  	opera_mobile: "66",
  	quest: "18.0",
  	"react-native": "0.69",
  	safari: "15.0",
  	samsung: "17.0"
  },
  	"es.error.to-string": {
  	android: "4.4.3",
  	bun: "0.1.1",
  	chrome: "33",
  	"chrome-android": "33",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "11",
  	"firefox-android": "11",
  	hermes: "0.1",
  	ie: "9",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "20",
  	"opera-android": "20",
  	opera_mobile: "20",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "8.0",
  	samsung: "2.0"
  },
  	"es.aggregate-error": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.2",
  	edge: "85",
  	electron: "10.0",
  	firefox: "79",
  	"firefox-android": "79",
  	ios: "14.0",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	"react-native": "0.72",
  	safari: "14.0",
  	samsung: "14.0"
  },
  	"es.aggregate-error.cause": {
  	android: "94",
  	bun: "0.1.1",
  	chrome: "94",
  	"chrome-android": "94",
  	deno: "1.14",
  	edge: "94",
  	electron: "15.0",
  	firefox: "91",
  	"firefox-android": "91",
  	ios: "15.0",
  	node: "16.11",
  	oculus: "18.0",
  	opera: "80",
  	"opera-android": "66",
  	opera_mobile: "66",
  	quest: "18.0",
  	"react-native": "0.72",
  	safari: "15.0",
  	samsung: "17.0"
  },
  	"es.array.at": {
  	android: "92",
  	bun: "0.1.1",
  	chrome: "92",
  	"chrome-android": "92",
  	deno: "1.12",
  	edge: "92",
  	electron: "14.0",
  	firefox: "90",
  	"firefox-android": "90",
  	ios: "15.4",
  	node: "16.6",
  	oculus: "17.0",
  	opera: "78",
  	"opera-android": "65",
  	opera_mobile: "65",
  	quest: "17.0",
  	"react-native": "0.71",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "16.0"
  },
  	"es.array.concat": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.copy-within": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.31",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "9.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.every": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.array.fill": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.31",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "9.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.filter": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.find": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "9.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.find-index": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "9.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.find-last": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"es.array.find-last-index": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"es.array.flat": {
  	android: "69",
  	bun: "0.1.1",
  	chrome: "69",
  	"chrome-android": "69",
  	deno: "1.0",
  	edge: "79",
  	electron: "4.0",
  	firefox: "62",
  	"firefox-android": "62",
  	hermes: "0.4",
  	ios: "12.0",
  	node: "11.0",
  	oculus: "6.0",
  	opera: "56",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "12.0",
  	samsung: "10.0"
  },
  	"es.array.flat-map": {
  	android: "69",
  	bun: "0.1.1",
  	chrome: "69",
  	"chrome-android": "69",
  	deno: "1.0",
  	edge: "79",
  	electron: "4.0",
  	firefox: "62",
  	"firefox-android": "62",
  	hermes: "0.4",
  	ios: "12.0",
  	node: "11.0",
  	oculus: "6.0",
  	opera: "56",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "12.0",
  	samsung: "10.0"
  },
  	"es.array.for-each": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.array.from": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "53",
  	"firefox-android": "53",
  	ios: "9.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.73",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.includes": {
  	android: "53",
  	bun: "0.1.1",
  	chrome: "53",
  	"chrome-android": "53",
  	deno: "1.0",
  	edge: "14",
  	electron: "1.4",
  	firefox: "102",
  	"firefox-android": "102",
  	ios: "10.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "40",
  	"opera-android": "40",
  	opera_mobile: "40",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "6.0"
  },
  	"es.array.index-of": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "12",
  	electron: "1.2",
  	firefox: "47",
  	"firefox-android": "47",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "5.0"
  },
  	"es.array.is-array": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "3.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "4.0",
  	samsung: "1.0"
  },
  	"es.array.iterator": {
  	android: "66",
  	bun: "0.1.1",
  	chrome: "66",
  	"chrome-android": "66",
  	deno: "1.0",
  	edge: "15",
  	electron: "3.0",
  	firefox: "60",
  	"firefox-android": "60",
  	ios: "10.0",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "53",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	safari: "10.0",
  	samsung: "9.0"
  },
  	"es.array.join": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.array.last-index-of": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "12",
  	electron: "1.2",
  	firefox: "47",
  	"firefox-android": "47",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "5.0"
  },
  	"es.array.map": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "50",
  	"firefox-android": "50",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.of": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.array.push": {
  	android: "122",
  	bun: "0.1.1",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.41.3",
  	edge: "122",
  	electron: "29.0",
  	firefox: "55",
  	"firefox-android": "55",
  	hermes: "0.2",
  	ios: "16.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	"react-native": "0.69",
  	safari: "16.0",
  	samsung: "26.0"
  },
  	"es.array.reduce": {
  	android: "83",
  	bun: "0.1.1",
  	chrome: "83",
  	"chrome-android": "83",
  	deno: "1.0",
  	edge: "12",
  	electron: "9.0",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "6.0",
  	oculus: "10.0",
  	opera: "69",
  	"opera-android": "59",
  	opera_mobile: "59",
  	quest: "10.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "13.0"
  },
  	"es.array.reduce-right": {
  	android: "83",
  	bun: "0.1.1",
  	chrome: "83",
  	"chrome-android": "83",
  	deno: "1.0",
  	edge: "12",
  	electron: "9.0",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "6.0",
  	oculus: "10.0",
  	opera: "69",
  	"opera-android": "59",
  	opera_mobile: "59",
  	quest: "10.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "13.0"
  },
  	"es.array.reverse": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "5.5",
  	ios: "12.2",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "12.0.2",
  	samsung: "1.0"
  },
  	"es.array.slice": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.some": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.array.sort": {
  	android: "70",
  	bun: "0.1.1",
  	chrome: "70",
  	"chrome-android": "70",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.10",
  	ios: "12.0",
  	node: "11.0",
  	oculus: "6.0",
  	opera: "57",
  	"opera-android": "49",
  	opera_mobile: "49",
  	quest: "6.0",
  	"react-native": "0.69",
  	safari: "12.0",
  	samsung: "10.0"
  },
  	"es.array.species": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "48",
  	"firefox-android": "48",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.splice": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "49",
  	"firefox-android": "49",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.array.to-reversed": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.array.to-sorted": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.array.to-spliced": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.array.unscopables.flat": {
  	android: "73",
  	bun: "0.1.1",
  	chrome: "73",
  	"chrome-android": "73",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "67",
  	"firefox-android": "67",
  	ios: "13.0",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "60",
  	"opera-android": "52",
  	opera_mobile: "52",
  	quest: "6.0",
  	safari: "13",
  	samsung: "11.0"
  },
  	"es.array.unscopables.flat-map": {
  	android: "73",
  	bun: "0.1.1",
  	chrome: "73",
  	"chrome-android": "73",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "67",
  	"firefox-android": "67",
  	ios: "13.0",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "60",
  	"opera-android": "52",
  	opera_mobile: "52",
  	quest: "6.0",
  	safari: "13",
  	samsung: "11.0"
  },
  	"es.array.unshift": {
  	android: "71",
  	bun: "0.1.1",
  	chrome: "71",
  	"chrome-android": "71",
  	deno: "1.0",
  	edge: "12",
  	electron: "5.0",
  	firefox: "23",
  	"firefox-android": "23",
  	hermes: "0.1",
  	ie: "9",
  	ios: "16.0",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "58",
  	"opera-android": "50",
  	opera_mobile: "50",
  	quest: "6.0",
  	"react-native": "0.69",
  	safari: "16.0",
  	samsung: "10.0"
  },
  	"es.array.with": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.array-buffer.constructor": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "28",
  	"chrome-android": "28",
  	deno: "1.0",
  	edge: "14",
  	electron: "0.20",
  	firefox: "44",
  	"firefox-android": "44",
  	hermes: "0.1",
  	ios: "12.0",
  	node: "0.11.1",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "12.0",
  	samsung: "1.5"
  },
  	"es.array-buffer.is-view": {
  	android: "4.4.3",
  	bun: "0.1.1",
  	chrome: "32",
  	"chrome-android": "32",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "29",
  	"firefox-android": "29",
  	hermes: "0.1",
  	ie: "11",
  	ios: "8.0",
  	node: "0.11.9",
  	oculus: "3.0",
  	opera: "19",
  	"opera-android": "19",
  	opera_mobile: "19",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "7.1",
  	samsung: "2.0"
  },
  	"es.array-buffer.slice": {
  	android: "4.4.3",
  	bun: "0.1.1",
  	chrome: "31",
  	"chrome-android": "31",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "46",
  	"firefox-android": "46",
  	hermes: "0.1",
  	ie: "11",
  	ios: "12.2",
  	node: "0.11.8",
  	oculus: "3.0",
  	opera: "18",
  	"opera-android": "18",
  	opera_mobile: "18",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "12.1",
  	samsung: "2.0"
  },
  	"es.data-view": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "15",
  	"firefox-android": "15",
  	hermes: "0.1",
  	ie: "10",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.array-buffer.detached": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"es.array-buffer.transfer": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"es.array-buffer.transfer-to-fixed-length": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"es.date.get-year": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "3",
  	"opera-android": "3",
  	opera_mobile: "3",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.date.now": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "3.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "4.0",
  	samsung: "1.0"
  },
  	"es.date.set-year": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "3",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "3",
  	"opera-android": "3",
  	opera_mobile: "3",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.date.to-gmt-string": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "3",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "3",
  	"opera-android": "3",
  	opera_mobile: "3",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.date.to-iso-string": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "7",
  	"firefox-android": "7",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.date.to-json": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "10.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "1.5"
  },
  	"es.date.to-primitive": {
  	android: "47",
  	bun: "0.1.1",
  	chrome: "47",
  	"chrome-android": "47",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.36",
  	firefox: "44",
  	"firefox-android": "44",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "34",
  	"opera-android": "34",
  	opera_mobile: "34",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.date.to-string": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.escape": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "3",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "3",
  	"opera-android": "3",
  	opera_mobile: "3",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.function.bind": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "7",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "5.0",
  	node: "0.1.101",
  	oculus: "3.0",
  	opera: "12",
  	"opera-android": "12",
  	opera_mobile: "12",
  	phantom: "2.0",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "5.1",
  	samsung: "1.0"
  },
  	"es.function.has-instance": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "50",
  	"firefox-android": "50",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.function.name": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ios: "3.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "4.0",
  	samsung: "1.0"
  },
  	"es.global-this": {
  	android: "71",
  	bun: "0.1.1",
  	chrome: "71",
  	"chrome-android": "71",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "65",
  	"firefox-android": "65",
  	hermes: "0.2",
  	ios: "12.2",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "58",
  	"opera-android": "50",
  	opera_mobile: "50",
  	quest: "6.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "12.1",
  	samsung: "10.0"
  },
  	"es.json.stringify": {
  	android: "72",
  	bun: "0.1.1",
  	chrome: "72",
  	"chrome-android": "72",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "64",
  	"firefox-android": "64",
  	ios: "12.2",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "59",
  	"opera-android": "51",
  	opera_mobile: "51",
  	quest: "6.0",
  	"react-native": "0.72",
  	safari: "12.1",
  	samsung: "11.0"
  },
  	"es.json.to-string-tag": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.1",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.map": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "53",
  	"firefox-android": "53",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.73",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.map.group-by": {
  	android: "117",
  	bun: "1.1.2",
  	chrome: "117",
  	"chrome-android": "117",
  	deno: "1.37",
  	edge: "117",
  	electron: "27.0",
  	firefox: "119",
  	"firefox-android": "119",
  	node: "21.0",
  	oculus: "30.0",
  	opera: "103",
  	"opera-android": "78",
  	opera_mobile: "78",
  	quest: "30.0",
  	samsung: "24.0"
  },
  	"es.math.acosh": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.4",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "7.1",
  	samsung: "6.0"
  },
  	"es.math.asinh": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.atanh": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.cbrt": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.clz32": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "31",
  	"firefox-android": "31",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.0"
  },
  	"es.math.cosh": {
  	android: "39",
  	bun: "0.1.1",
  	chrome: "39",
  	"chrome-android": "39",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "26",
  	"opera-android": "26",
  	opera_mobile: "26",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.4"
  },
  	"es.math.expm1": {
  	android: "39",
  	bun: "0.1.1",
  	chrome: "39",
  	"chrome-android": "39",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "46",
  	"firefox-android": "46",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "26",
  	"opera-android": "26",
  	opera_mobile: "26",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.4"
  },
  	"es.math.fround": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "26",
  	"firefox-android": "26",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.hypot": {
  	android: "78",
  	bun: "0.1.1",
  	chrome: "78",
  	"chrome-android": "78",
  	deno: "1.0",
  	edge: "12",
  	electron: "7.0",
  	firefox: "27",
  	"firefox-android": "27",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "12.16",
  	oculus: "8.0",
  	opera: "65",
  	"opera-android": "56",
  	opera_mobile: "56",
  	quest: "8.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "12.0"
  },
  	"es.math.imul": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "28",
  	"chrome-android": "28",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "20",
  	"firefox-android": "20",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.1",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "1.5"
  },
  	"es.math.log10": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.log1p": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.log2": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.sign": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.0"
  },
  	"es.math.sinh": {
  	android: "39",
  	bun: "0.1.1",
  	chrome: "39",
  	"chrome-android": "39",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "26",
  	"opera-android": "26",
  	opera_mobile: "26",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.4"
  },
  	"es.math.tanh": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.math.to-string-tag": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.1",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.math.trunc": {
  	android: "38",
  	bun: "0.1.1",
  	chrome: "38",
  	"chrome-android": "38",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "25",
  	"opera-android": "25",
  	opera_mobile: "25",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.number.constructor": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "46",
  	"firefox-android": "46",
  	hermes: "0.5",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.number.epsilon": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "25",
  	"firefox-android": "25",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.number.is-finite": {
  	android: "4.1",
  	bun: "0.1.1",
  	chrome: "19",
  	"chrome-android": "25",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "16",
  	"firefox-android": "16",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.7.3",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "1.5"
  },
  	"es.number.is-integer": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "16",
  	"firefox-android": "16",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.number.is-nan": {
  	android: "4.1",
  	bun: "0.1.1",
  	chrome: "19",
  	"chrome-android": "25",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "15",
  	"firefox-android": "15",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.7.3",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "1.5"
  },
  	"es.number.is-safe-integer": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "32",
  	"firefox-android": "32",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.number.max-safe-integer": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "31",
  	"firefox-android": "31",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.number.min-safe-integer": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "31",
  	"firefox-android": "31",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.number.parse-float": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "35",
  	"chrome-android": "35",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.20",
  	firefox: "39",
  	"firefox-android": "39",
  	hermes: "0.1",
  	ios: "11.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "22",
  	"opera-android": "22",
  	opera_mobile: "22",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "11.0",
  	samsung: "3.0"
  },
  	"es.number.parse-int": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "35",
  	"chrome-android": "35",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.20",
  	firefox: "39",
  	"firefox-android": "39",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "22",
  	"opera-android": "22",
  	opera_mobile: "22",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "9.0",
  	samsung: "3.0"
  },
  	"es.number.to-exponential": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "18",
  	electron: "1.2",
  	firefox: "87",
  	"firefox-android": "87",
  	hermes: "0.1",
  	ios: "11.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "11",
  	samsung: "5.0"
  },
  	"es.number.to-fixed": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.number.to-precision": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "8",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.object.assign": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.37",
  	firefox: "36",
  	"firefox-android": "36",
  	hermes: "0.4",
  	ios: "9.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "9.0",
  	samsung: "5.0"
  },
  	"es.object.create": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "3.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "12",
  	"opera-android": "12",
  	opera_mobile: "12",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "4.0",
  	samsung: "1.0"
  },
  	"es.object.define-getter": {
  	android: "62",
  	bun: "0.1.1",
  	chrome: "62",
  	"chrome-android": "62",
  	deno: "1.0",
  	edge: "16",
  	electron: "3.0",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "8.10",
  	oculus: "5.0",
  	opera: "49",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "8.0"
  },
  	"es.object.define-properties": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "37",
  	"chrome-android": "37",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "5.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "12",
  	"opera-android": "12",
  	opera_mobile: "12",
  	phantom: "2.0",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "5.1",
  	samsung: "3.0"
  },
  	"es.object.define-property": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "37",
  	"chrome-android": "37",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "4",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "5.0",
  	node: "0.11.15",
  	oculus: "3.0",
  	opera: "12",
  	"opera-android": "12",
  	opera_mobile: "12",
  	phantom: "2.0",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "5.1",
  	samsung: "3.0"
  },
  	"es.object.define-setter": {
  	android: "62",
  	bun: "0.1.1",
  	chrome: "62",
  	"chrome-android": "62",
  	deno: "1.0",
  	edge: "16",
  	electron: "3.0",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "8.10",
  	oculus: "5.0",
  	opera: "49",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "8.0"
  },
  	"es.object.entries": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "14",
  	electron: "1.4",
  	firefox: "47",
  	"firefox-android": "47",
  	hermes: "0.1",
  	ios: "10.3",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "10.1",
  	samsung: "6.0"
  },
  	"es.object.freeze": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.from-entries": {
  	android: "73",
  	bun: "0.1.1",
  	chrome: "73",
  	"chrome-android": "73",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "63",
  	"firefox-android": "63",
  	hermes: "0.4",
  	ios: "12.2",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "60",
  	"opera-android": "52",
  	opera_mobile: "52",
  	quest: "6.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "12.1",
  	samsung: "11.0"
  },
  	"es.object.get-own-property-descriptor": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.get-own-property-descriptors": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "50",
  	"firefox-android": "50",
  	hermes: "0.6",
  	ios: "10.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "6.0"
  },
  	"es.object.get-own-property-names": {
  	android: "40",
  	bun: "0.1.1",
  	chrome: "40",
  	"chrome-android": "40",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "34",
  	"firefox-android": "34",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "27",
  	"opera-android": "27",
  	opera_mobile: "27",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.object.get-prototype-of": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.group-by": {
  	android: "117",
  	bun: "1.1.2",
  	chrome: "117",
  	"chrome-android": "117",
  	deno: "1.37",
  	edge: "117",
  	electron: "27.0",
  	firefox: "119",
  	"firefox-android": "119",
  	node: "21.0",
  	oculus: "30.0",
  	opera: "103",
  	"opera-android": "78",
  	opera_mobile: "78",
  	quest: "30.0",
  	samsung: "24.0"
  },
  	"es.object.has-own": {
  	android: "93",
  	bun: "0.1.1",
  	chrome: "93",
  	"chrome-android": "93",
  	deno: "1.13",
  	edge: "93",
  	electron: "14.0",
  	firefox: "92",
  	"firefox-android": "92",
  	hermes: "0.10",
  	ios: "15.4",
  	node: "16.9",
  	oculus: "17.0",
  	opera: "79",
  	"opera-android": "66",
  	opera_mobile: "66",
  	quest: "17.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "17.0"
  },
  	"es.object.is": {
  	android: "4.1",
  	bun: "0.1.1",
  	chrome: "19",
  	"chrome-android": "25",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "22",
  	"firefox-android": "22",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "0.7.3",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "1.5"
  },
  	"es.object.is-extensible": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.is-frozen": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.is-sealed": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.keys": {
  	android: "40",
  	bun: "0.1.1",
  	chrome: "40",
  	"chrome-android": "40",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "27",
  	"opera-android": "27",
  	opera_mobile: "27",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.object.lookup-getter": {
  	android: "62",
  	bun: "0.1.1",
  	chrome: "62",
  	"chrome-android": "62",
  	deno: "1.0",
  	edge: "16",
  	electron: "3.0",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "8.10",
  	oculus: "5.0",
  	opera: "49",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "8.0"
  },
  	"es.object.lookup-setter": {
  	android: "62",
  	bun: "0.1.1",
  	chrome: "62",
  	"chrome-android": "62",
  	deno: "1.0",
  	edge: "16",
  	electron: "3.0",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "8.10",
  	oculus: "5.0",
  	opera: "49",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "8.0"
  },
  	"es.object.prevent-extensions": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.proto": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "11",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.object.seal": {
  	android: "44",
  	bun: "0.1.1",
  	chrome: "44",
  	"chrome-android": "44",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.30",
  	firefox: "35",
  	"firefox-android": "35",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "3.0",
  	oculus: "3.0",
  	opera: "31",
  	"opera-android": "31",
  	opera_mobile: "31",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "4.0"
  },
  	"es.object.set-prototype-of": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "31",
  	"firefox-android": "31",
  	hermes: "0.1",
  	ie: "11",
  	ios: "9.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "21",
  	"opera-android": "21",
  	opera_mobile: "21",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "2.0"
  },
  	"es.object.to-string": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.object.values": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "14",
  	electron: "1.4",
  	firefox: "47",
  	"firefox-android": "47",
  	hermes: "0.1",
  	ios: "10.3",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "10.1",
  	samsung: "6.0"
  },
  	"es.parse-float": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "35",
  	"chrome-android": "35",
  	deno: "1.0",
  	edge: "74",
  	electron: "0.20",
  	firefox: "8",
  	"firefox-android": "8",
  	hermes: "0.1",
  	ie: "8",
  	ios: "8.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "22",
  	"opera-android": "22",
  	opera_mobile: "22",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.parse-int": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "35",
  	"chrome-android": "35",
  	deno: "1.0",
  	edge: "74",
  	electron: "0.20",
  	firefox: "21",
  	"firefox-android": "21",
  	hermes: "0.1",
  	ie: "9",
  	ios: "8.0",
  	node: "0.11.13",
  	oculus: "3.0",
  	opera: "22",
  	"opera-android": "22",
  	opera_mobile: "22",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "7.1",
  	samsung: "3.0"
  },
  	"es.promise": {
  	android: "67",
  	bun: "0.1.1",
  	chrome: "67",
  	"chrome-android": "67",
  	deno: "1.24",
  	edge: "79",
  	electron: "4.0",
  	firefox: "69",
  	"firefox-android": "69",
  	ios: "11.0",
  	node: "10.4",
  	oculus: "6.0",
  	opera: "54",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	rhino: "1.7.14",
  	safari: "11.0",
  	samsung: "9.0"
  },
  	"es.promise.all-settled": {
  	android: "76",
  	bun: "0.1.1",
  	chrome: "76",
  	"chrome-android": "76",
  	deno: "1.24",
  	edge: "79",
  	electron: "6.0",
  	firefox: "71",
  	"firefox-android": "71",
  	ios: "13.0",
  	node: "12.9",
  	oculus: "7.0",
  	opera: "63",
  	"opera-android": "54",
  	opera_mobile: "54",
  	quest: "7.0",
  	rhino: "1.7.15",
  	safari: "13",
  	samsung: "12.0"
  },
  	"es.promise.any": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.24",
  	edge: "85",
  	electron: "10.0",
  	firefox: "79",
  	"firefox-android": "79",
  	ios: "14.0",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	safari: "14.0",
  	samsung: "14.0"
  },
  	"es.promise.finally": {
  	android: "67",
  	bun: "0.1.1",
  	chrome: "67",
  	"chrome-android": "67",
  	deno: "1.24",
  	edge: "79",
  	electron: "4.0",
  	firefox: "69",
  	"firefox-android": "69",
  	ios: "13.2.3",
  	node: "10.4",
  	oculus: "6.0",
  	opera: "54",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	rhino: "1.7.14",
  	safari: "13.0.3",
  	samsung: "9.0"
  },
  	"es.promise.with-resolvers": {
  	android: "119",
  	bun: "0.7.1",
  	chrome: "119",
  	"chrome-android": "119",
  	deno: "1.38",
  	edge: "119",
  	electron: "28.0",
  	firefox: "121",
  	"firefox-android": "121",
  	ios: "17.4",
  	node: "22.0",
  	oculus: "31.0",
  	opera: "105",
  	"opera-android": "79",
  	opera_mobile: "79",
  	quest: "31.0",
  	safari: "17.4",
  	samsung: "25.0"
  },
  	"es.reflect.apply": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.construct": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "15",
  	electron: "0.37",
  	firefox: "44",
  	"firefox-android": "44",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.define-property": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.delete-property": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.get": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.get-own-property-descriptor": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.get-prototype-of": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.has": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.is-extensible": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.own-keys": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.prevent-extensions": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.set": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.set-prototype-of": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.37",
  	firefox: "42",
  	"firefox-android": "42",
  	hermes: "0.7",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.reflect.to-string-tag": {
  	android: "86",
  	bun: "0.1.1",
  	chrome: "86",
  	"chrome-android": "86",
  	deno: "1.3",
  	edge: "86",
  	electron: "11.0",
  	firefox: "82",
  	"firefox-android": "82",
  	hermes: "0.7",
  	ios: "14.0",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "72",
  	"opera-android": "61",
  	opera_mobile: "61",
  	quest: "12.0",
  	"react-native": "0.69",
  	safari: "14.0",
  	samsung: "14.0"
  },
  	"es.regexp.constructor": {
  	android: "64",
  	bun: "0.1.1",
  	chrome: "64",
  	"chrome-android": "64",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "78",
  	"firefox-android": "78",
  	ios: "11.3",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "51",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	safari: "11.1",
  	samsung: "9.0"
  },
  	"es.regexp.dot-all": {
  	android: "62",
  	bun: "0.1.1",
  	chrome: "62",
  	"chrome-android": "62",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "78",
  	"firefox-android": "78",
  	hermes: "0.4",
  	ios: "11.3",
  	node: "8.10",
  	oculus: "5.0",
  	opera: "49",
  	"opera-android": "46",
  	opera_mobile: "46",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "11.1",
  	samsung: "8.0"
  },
  	"es.regexp.exec": {
  	android: "64",
  	bun: "0.1.1",
  	chrome: "64",
  	"chrome-android": "64",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "78",
  	"firefox-android": "78",
  	ios: "11.3",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "51",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	"react-native": "0.71",
  	safari: "11.1",
  	samsung: "9.0"
  },
  	"es.regexp.flags": {
  	android: "111",
  	bun: "0.1.1",
  	chrome: "111",
  	"chrome-android": "111",
  	deno: "1.32",
  	edge: "111",
  	electron: "24.0",
  	firefox: "78",
  	"firefox-android": "78",
  	hermes: "0.4",
  	ios: "11.3",
  	node: "20.0",
  	oculus: "27.0",
  	opera: "97",
  	"opera-android": "75",
  	opera_mobile: "75",
  	quest: "27.0",
  	"react-native": "0.69",
  	safari: "11.1",
  	samsung: "22.0"
  },
  	"es.regexp.sticky": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.37",
  	firefox: "3",
  	"firefox-android": "4",
  	hermes: "0.3",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.regexp.test": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "46",
  	"firefox-android": "46",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.regexp.to-string": {
  	android: "50",
  	bun: "0.1.1",
  	chrome: "50",
  	"chrome-android": "50",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.1",
  	firefox: "46",
  	"firefox-android": "46",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "37",
  	"opera-android": "37",
  	opera_mobile: "37",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.set": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "53",
  	"firefox-android": "53",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.73",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.set.difference.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.intersection.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.is-disjoint-from.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.is-subset-of.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.is-superset-of.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.symmetric-difference.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.set.union.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"es.string.at-alternative": {
  	android: "92",
  	bun: "0.1.1",
  	chrome: "92",
  	"chrome-android": "92",
  	deno: "1.12",
  	edge: "92",
  	electron: "14.0",
  	firefox: "90",
  	"firefox-android": "90",
  	ios: "15.4",
  	node: "16.6",
  	oculus: "17.0",
  	opera: "78",
  	"opera-android": "65",
  	opera_mobile: "65",
  	quest: "17.0",
  	"react-native": "0.71",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "16.0"
  },
  	"es.string.code-point-at": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "29",
  	"firefox-android": "29",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.string.ends-with": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "40",
  	"firefox-android": "40",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.string.from-code-point": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "29",
  	"firefox-android": "29",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.string.includes": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "40",
  	"firefox-android": "40",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.string.is-well-formed": {
  	android: "111",
  	bun: "0.4.0",
  	chrome: "111",
  	"chrome-android": "111",
  	deno: "1.32",
  	edge: "111",
  	electron: "24.0",
  	firefox: "119",
  	"firefox-android": "119",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "27.0",
  	opera: "97",
  	"opera-android": "75",
  	opera_mobile: "75",
  	quest: "27.0",
  	safari: "16.4",
  	samsung: "22.0"
  },
  	"es.string.iterator": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "36",
  	"firefox-android": "36",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.string.match": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.string.match-all": {
  	android: "80",
  	bun: "0.1.1",
  	chrome: "80",
  	"chrome-android": "80",
  	deno: "1.0",
  	edge: "80",
  	electron: "8.0",
  	firefox: "73",
  	"firefox-android": "73",
  	hermes: "0.6",
  	ios: "13.4",
  	node: "14.0",
  	oculus: "9.0",
  	opera: "67",
  	"opera-android": "57",
  	opera_mobile: "57",
  	quest: "9.0",
  	"react-native": "0.69",
  	safari: "13.1",
  	samsung: "13.0"
  },
  	"es.string.pad-end": {
  	android: "57",
  	bun: "0.1.1",
  	chrome: "57",
  	"chrome-android": "57",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.7",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "11.0",
  	node: "8.0",
  	oculus: "3.0",
  	opera: "44",
  	"opera-android": "43",
  	opera_mobile: "43",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "11.0",
  	samsung: "7.0"
  },
  	"es.string.pad-start": {
  	android: "57",
  	bun: "0.1.1",
  	chrome: "57",
  	"chrome-android": "57",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.7",
  	firefox: "48",
  	"firefox-android": "48",
  	hermes: "0.1",
  	ios: "11.0",
  	node: "8.0",
  	oculus: "3.0",
  	opera: "44",
  	"opera-android": "43",
  	opera_mobile: "43",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "11.0",
  	samsung: "7.0"
  },
  	"es.string.raw": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "34",
  	"firefox-android": "34",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.string.repeat": {
  	android: "41",
  	bun: "0.1.1",
  	chrome: "41",
  	"chrome-android": "41",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.21",
  	firefox: "24",
  	"firefox-android": "24",
  	hermes: "0.1",
  	ios: "9.0",
  	node: "1.0",
  	oculus: "3.0",
  	opera: "28",
  	"opera-android": "28",
  	opera_mobile: "28",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "9.0",
  	samsung: "3.4"
  },
  	"es.string.replace": {
  	android: "64",
  	bun: "0.1.1",
  	chrome: "64",
  	"chrome-android": "64",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "78",
  	"firefox-android": "78",
  	ios: "14.0",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "51",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	"react-native": "0.71",
  	safari: "14.0",
  	samsung: "9.0"
  },
  	"es.string.replace-all": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.2",
  	edge: "85",
  	electron: "10.0",
  	firefox: "77",
  	"firefox-android": "77",
  	hermes: "0.7",
  	ios: "13.4",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "13.1",
  	samsung: "14.0"
  },
  	"es.string.search": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "49",
  	"firefox-android": "49",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.string.split": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.4",
  	firefox: "49",
  	"firefox-android": "49",
  	ios: "10.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "10.0",
  	samsung: "6.0"
  },
  	"es.string.starts-with": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "40",
  	"firefox-android": "40",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.string.substr": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "9",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "4",
  	"opera-android": "4",
  	opera_mobile: "4",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.string.to-well-formed": {
  	android: "111",
  	bun: "0.5.7",
  	chrome: "111",
  	"chrome-android": "111",
  	deno: "1.32",
  	edge: "111",
  	electron: "24.0",
  	firefox: "119",
  	"firefox-android": "119",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "27.0",
  	opera: "97",
  	"opera-android": "75",
  	opera_mobile: "75",
  	quest: "27.0",
  	safari: "16.4",
  	samsung: "22.0"
  },
  	"es.string.trim": {
  	android: "59",
  	bun: "0.1.1",
  	chrome: "59",
  	"chrome-android": "59",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.8",
  	firefox: "52",
  	"firefox-android": "52",
  	hermes: "0.1",
  	ios: "12.2",
  	node: "8.3",
  	oculus: "4.0",
  	opera: "46",
  	"opera-android": "43",
  	opera_mobile: "43",
  	quest: "4.0",
  	"react-native": "0.69",
  	safari: "12.1",
  	samsung: "7.0"
  },
  	"es.string.trim-end": {
  	android: "66",
  	bun: "0.1.1",
  	chrome: "66",
  	"chrome-android": "66",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "61",
  	"firefox-android": "61",
  	hermes: "0.3",
  	ios: "12.2",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "53",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	"react-native": "0.69",
  	safari: "12.1",
  	samsung: "9.0"
  },
  	"es.string.trim-start": {
  	android: "66",
  	bun: "0.1.1",
  	chrome: "66",
  	"chrome-android": "66",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "61",
  	"firefox-android": "61",
  	hermes: "0.3",
  	ios: "12.0",
  	node: "10.0",
  	oculus: "5.0",
  	opera: "53",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	"react-native": "0.69",
  	safari: "12.0",
  	samsung: "9.0"
  },
  	"es.string.anchor": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "17",
  	"firefox-android": "17",
  	ios: "6.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	phantom: "2.0",
  	quest: "3.0",
  	rhino: "1.7.14",
  	safari: "6.0",
  	samsung: "1.0"
  },
  	"es.string.big": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.blink": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.bold": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.fixed": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.fontcolor": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "17",
  	"firefox-android": "17",
  	ios: "6.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	phantom: "2.0",
  	quest: "3.0",
  	rhino: "1.7.14",
  	safari: "6.0",
  	samsung: "1.0"
  },
  	"es.string.fontsize": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "17",
  	"firefox-android": "17",
  	ios: "6.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	phantom: "2.0",
  	quest: "3.0",
  	rhino: "1.7.14",
  	safari: "6.0",
  	samsung: "1.0"
  },
  	"es.string.italics": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.link": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "17",
  	"firefox-android": "17",
  	ios: "6.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	phantom: "2.0",
  	quest: "3.0",
  	rhino: "1.7.14",
  	safari: "6.0",
  	samsung: "1.0"
  },
  	"es.string.small": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.strike": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.sub": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.string.sup": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "5",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "2",
  	"firefox-android": "4",
  	ios: "2.0",
  	node: "0.1.27",
  	oculus: "3.0",
  	opera: "10.50",
  	"opera-android": "10.50",
  	opera_mobile: "10.50",
  	phantom: "1.9",
  	quest: "3.0",
  	rhino: "1.7.13",
  	safari: "3.1",
  	samsung: "1.0"
  },
  	"es.typed-array.float32-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.float64-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.int8-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.int16-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.int32-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.uint8-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.uint8-clamped-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.uint16-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.uint32-array": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.at": {
  	android: "92",
  	bun: "0.1.1",
  	chrome: "92",
  	"chrome-android": "92",
  	deno: "1.12",
  	edge: "92",
  	electron: "14.0",
  	firefox: "90",
  	"firefox-android": "90",
  	ios: "15.4",
  	node: "16.6",
  	oculus: "17.0",
  	opera: "78",
  	"opera-android": "65",
  	opera_mobile: "65",
  	quest: "17.0",
  	"react-native": "0.71",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "16.0"
  },
  	"es.typed-array.copy-within": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "34",
  	"firefox-android": "34",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.every": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.fill": {
  	android: "58",
  	bun: "0.1.1",
  	chrome: "58",
  	"chrome-android": "58",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.7",
  	firefox: "55",
  	"firefox-android": "55",
  	hermes: "0.1",
  	ios: "14.5",
  	node: "8.0",
  	oculus: "4.0",
  	opera: "45",
  	"opera-android": "43",
  	opera_mobile: "43",
  	quest: "4.0",
  	"react-native": "0.69",
  	safari: "14.1",
  	samsung: "7.0"
  },
  	"es.typed-array.filter": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "38",
  	"firefox-android": "38",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.find": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.find-index": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.find-last": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"es.typed-array.find-last-index": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"es.typed-array.for-each": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "38",
  	"firefox-android": "38",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.from": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.includes": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.0",
  	edge: "14",
  	electron: "0.37",
  	firefox: "43",
  	"firefox-android": "43",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.index-of": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.iterator": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.join": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.last-index-of": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.map": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "38",
  	"firefox-android": "38",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.of": {
  	android: "54",
  	bun: "0.1.1",
  	chrome: "54",
  	"chrome-android": "54",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.4",
  	firefox: "55",
  	"firefox-android": "55",
  	ios: "14.0",
  	node: "7.0",
  	oculus: "3.0",
  	opera: "41",
  	"opera-android": "41",
  	opera_mobile: "41",
  	quest: "3.0",
  	safari: "14.0",
  	samsung: "6.0"
  },
  	"es.typed-array.reduce": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.reduce-right": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.reverse": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.set": {
  	android: "95",
  	bun: "0.1.1",
  	chrome: "95",
  	"chrome-android": "95",
  	deno: "1.15",
  	edge: "95",
  	electron: "16.0",
  	firefox: "54",
  	"firefox-android": "54",
  	hermes: "0.1",
  	ios: "14.5",
  	node: "17.0",
  	oculus: "18.0",
  	opera: "81",
  	"opera-android": "67",
  	opera_mobile: "67",
  	quest: "18.0",
  	"react-native": "0.69",
  	safari: "14.1",
  	samsung: "17.0"
  },
  	"es.typed-array.slice": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "38",
  	"firefox-android": "38",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.some": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.31",
  	firefox: "37",
  	"firefox-android": "37",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.sort": {
  	android: "74",
  	bun: "0.1.1",
  	chrome: "74",
  	"chrome-android": "74",
  	deno: "1.0",
  	edge: "79",
  	electron: "6.0",
  	firefox: "67",
  	"firefox-android": "67",
  	hermes: "0.10",
  	ios: "14.5",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "61",
  	"opera-android": "53",
  	opera_mobile: "53",
  	quest: "6.0",
  	"react-native": "0.69",
  	safari: "14.1",
  	samsung: "11.0"
  },
  	"es.typed-array.subarray": {
  	android: "4.4",
  	bun: "0.1.1",
  	chrome: "26",
  	"chrome-android": "26",
  	deno: "1.0",
  	edge: "13",
  	electron: "0.20",
  	firefox: "15",
  	"firefox-android": "15",
  	hermes: "0.1",
  	ios: "8.0",
  	node: "0.11.0",
  	oculus: "3.0",
  	opera: "15",
  	"opera-android": "15",
  	opera_mobile: "15",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "7.1",
  	samsung: "1.5"
  },
  	"es.typed-array.to-locale-string": {
  	android: "45",
  	bun: "0.1.1",
  	chrome: "45",
  	"chrome-android": "45",
  	deno: "1.0",
  	edge: "79",
  	electron: "0.31",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "4.0",
  	oculus: "3.0",
  	opera: "32",
  	"opera-android": "32",
  	opera_mobile: "32",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.to-reversed": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.typed-array.to-sorted": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"es.typed-array.to-string": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "13",
  	electron: "1.2",
  	firefox: "51",
  	"firefox-android": "51",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.69",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.typed-array.with": {
  	android: "110",
  	bun: "0.1.9",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.4",
  	samsung: "21.0"
  },
  	"es.unescape": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "3",
  	ios: "1.0",
  	node: "0.0.3",
  	oculus: "3.0",
  	opera: "3",
  	"opera-android": "3",
  	opera_mobile: "3",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1",
  	samsung: "1.0"
  },
  	"es.weak-map": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "79",
  	electron: "1.2",
  	firefox: "53",
  	"firefox-android": "53",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.73",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"es.weak-set": {
  	android: "51",
  	bun: "0.1.1",
  	chrome: "51",
  	"chrome-android": "51",
  	deno: "1.0",
  	edge: "15",
  	electron: "1.2",
  	firefox: "53",
  	"firefox-android": "53",
  	ios: "10.0",
  	node: "6.5",
  	oculus: "3.0",
  	opera: "38",
  	"opera-android": "38",
  	opera_mobile: "38",
  	quest: "3.0",
  	"react-native": "0.73",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "5.0"
  },
  	"esnext.aggregate-error": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.2",
  	edge: "85",
  	electron: "10.0",
  	firefox: "79",
  	"firefox-android": "79",
  	ios: "14.0",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	"react-native": "0.72",
  	safari: "14.0",
  	samsung: "14.0"
  },
  	"esnext.suppressed-error.constructor": {
  },
  	"esnext.array.from-async": {
  	android: "121",
  	bun: "1.1.2",
  	chrome: "121",
  	"chrome-android": "121",
  	deno: "1.38",
  	edge: "121",
  	electron: "29.0",
  	firefox: "115",
  	"firefox-android": "115",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "107",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "25.0"
  },
  	"esnext.array.at": {
  	android: "92",
  	bun: "0.1.1",
  	chrome: "92",
  	"chrome-android": "92",
  	deno: "1.12",
  	edge: "92",
  	electron: "14.0",
  	firefox: "90",
  	"firefox-android": "90",
  	ios: "15.4",
  	node: "16.6",
  	oculus: "17.0",
  	opera: "78",
  	"opera-android": "65",
  	opera_mobile: "65",
  	quest: "17.0",
  	"react-native": "0.71",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "16.0"
  },
  	"esnext.array.filter-out": {
  },
  	"esnext.array.filter-reject": {
  },
  	"esnext.array.find-last": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"esnext.array.find-last-index": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"esnext.array.group": {
  },
  	"esnext.array.group-by": {
  },
  	"esnext.array.group-by-to-map": {
  },
  	"esnext.array.group-to-map": {
  },
  	"esnext.array.is-template-object": {
  },
  	"esnext.array.last-index": {
  },
  	"esnext.array.last-item": {
  },
  	"esnext.array.to-reversed": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.array.to-sorted": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.array.to-spliced": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.array.unique-by": {
  },
  	"esnext.array.with": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	"react-native": "0.74",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.array-buffer.detached": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"esnext.array-buffer.transfer": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"esnext.array-buffer.transfer-to-fixed-length": {
  	android: "114",
  	bun: "1.0.19",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	firefox: "122",
  	"firefox-android": "122",
  	ios: "17.4",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.4",
  	samsung: "23.0"
  },
  	"esnext.async-disposable-stack.constructor": {
  },
  	"esnext.async-iterator.constructor": {
  },
  	"esnext.async-iterator.as-indexed-pairs": {
  },
  	"esnext.async-iterator.async-dispose": {
  },
  	"esnext.async-iterator.drop": {
  },
  	"esnext.async-iterator.every": {
  },
  	"esnext.async-iterator.filter": {
  },
  	"esnext.async-iterator.find": {
  },
  	"esnext.async-iterator.flat-map": {
  },
  	"esnext.async-iterator.for-each": {
  },
  	"esnext.async-iterator.from": {
  },
  	"esnext.async-iterator.indexed": {
  },
  	"esnext.async-iterator.map": {
  },
  	"esnext.async-iterator.reduce": {
  },
  	"esnext.async-iterator.some": {
  },
  	"esnext.async-iterator.take": {
  },
  	"esnext.async-iterator.to-array": {
  },
  	"esnext.bigint.range": {
  },
  	"esnext.composite-key": {
  },
  	"esnext.composite-symbol": {
  },
  	"esnext.data-view.get-float16": {
  	deno: "1.43"
  },
  	"esnext.data-view.get-uint8-clamped": {
  },
  	"esnext.data-view.set-float16": {
  	deno: "1.43"
  },
  	"esnext.data-view.set-uint8-clamped": {
  },
  	"esnext.disposable-stack.constructor": {
  },
  	"esnext.function.demethodize": {
  },
  	"esnext.function.is-callable": {
  },
  	"esnext.function.is-constructor": {
  },
  	"esnext.function.metadata": {
  },
  	"esnext.function.un-this": {
  },
  	"esnext.global-this": {
  	android: "71",
  	bun: "0.1.1",
  	chrome: "71",
  	"chrome-android": "71",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "65",
  	"firefox-android": "65",
  	hermes: "0.2",
  	ios: "12.2",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "58",
  	"opera-android": "50",
  	opera_mobile: "50",
  	quest: "6.0",
  	"react-native": "0.69",
  	rhino: "1.7.14",
  	safari: "12.1",
  	samsung: "10.0"
  },
  	"esnext.iterator.constructor": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.as-indexed-pairs": {
  },
  	"esnext.iterator.dispose": {
  },
  	"esnext.iterator.drop": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.every": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.filter": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.find": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.flat-map": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.for-each": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.from": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.indexed": {
  },
  	"esnext.iterator.map": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.range": {
  },
  	"esnext.iterator.reduce": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.some": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.take": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.to-array": {
  	android: "122",
  	chrome: "122",
  	"chrome-android": "122",
  	deno: "1.37",
  	edge: "122",
  	electron: "29.0",
  	node: "22.0",
  	oculus: "32.0",
  	opera: "108",
  	"opera-android": "81",
  	opera_mobile: "81",
  	quest: "32.0",
  	samsung: "26.0"
  },
  	"esnext.iterator.to-async": {
  },
  	"esnext.json.is-raw-json": {
  	android: "114",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	samsung: "23.0"
  },
  	"esnext.json.parse": {
  	android: "114",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	samsung: "23.0"
  },
  	"esnext.json.raw-json": {
  	android: "114",
  	chrome: "114",
  	"chrome-android": "114",
  	deno: "1.33",
  	edge: "114",
  	electron: "25.0",
  	node: "21.0",
  	oculus: "28.0",
  	opera: "100",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	samsung: "23.0"
  },
  	"esnext.map.delete-all": {
  },
  	"esnext.map.emplace": {
  },
  	"esnext.map.every": {
  },
  	"esnext.map.filter": {
  },
  	"esnext.map.find": {
  },
  	"esnext.map.find-key": {
  },
  	"esnext.map.from": {
  },
  	"esnext.map.group-by": {
  	android: "117",
  	bun: "1.1.2",
  	chrome: "117",
  	"chrome-android": "117",
  	deno: "1.37",
  	edge: "117",
  	electron: "27.0",
  	firefox: "119",
  	"firefox-android": "119",
  	node: "21.0",
  	oculus: "30.0",
  	opera: "103",
  	"opera-android": "78",
  	opera_mobile: "78",
  	quest: "30.0",
  	samsung: "24.0"
  },
  	"esnext.map.includes": {
  },
  	"esnext.map.key-by": {
  },
  	"esnext.map.key-of": {
  },
  	"esnext.map.map-keys": {
  },
  	"esnext.map.map-values": {
  },
  	"esnext.map.merge": {
  },
  	"esnext.map.of": {
  },
  	"esnext.map.reduce": {
  },
  	"esnext.map.some": {
  },
  	"esnext.map.update": {
  },
  	"esnext.map.update-or-insert": {
  },
  	"esnext.map.upsert": {
  },
  	"esnext.math.clamp": {
  },
  	"esnext.math.deg-per-rad": {
  },
  	"esnext.math.degrees": {
  },
  	"esnext.math.fscale": {
  },
  	"esnext.math.f16round": {
  	deno: "1.43"
  },
  	"esnext.math.iaddh": {
  },
  	"esnext.math.imulh": {
  },
  	"esnext.math.isubh": {
  },
  	"esnext.math.rad-per-deg": {
  },
  	"esnext.math.radians": {
  },
  	"esnext.math.scale": {
  },
  	"esnext.math.seeded-prng": {
  },
  	"esnext.math.signbit": {
  },
  	"esnext.math.sum-precise": {
  },
  	"esnext.math.umulh": {
  },
  	"esnext.number.from-string": {
  },
  	"esnext.number.range": {
  },
  	"esnext.object.has-own": {
  	android: "93",
  	bun: "0.1.1",
  	chrome: "93",
  	"chrome-android": "93",
  	deno: "1.13",
  	edge: "93",
  	electron: "14.0",
  	firefox: "92",
  	"firefox-android": "92",
  	hermes: "0.10",
  	ios: "15.4",
  	node: "16.9",
  	oculus: "17.0",
  	opera: "79",
  	"opera-android": "66",
  	opera_mobile: "66",
  	quest: "17.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "17.0"
  },
  	"esnext.object.iterate-entries": {
  },
  	"esnext.object.iterate-keys": {
  },
  	"esnext.object.iterate-values": {
  },
  	"esnext.object.group-by": {
  	android: "117",
  	bun: "1.1.2",
  	chrome: "117",
  	"chrome-android": "117",
  	deno: "1.37",
  	edge: "117",
  	electron: "27.0",
  	firefox: "119",
  	"firefox-android": "119",
  	node: "21.0",
  	oculus: "30.0",
  	opera: "103",
  	"opera-android": "78",
  	opera_mobile: "78",
  	quest: "30.0",
  	samsung: "24.0"
  },
  	"esnext.observable": {
  },
  	"esnext.promise.all-settled": {
  	android: "76",
  	bun: "0.1.1",
  	chrome: "76",
  	"chrome-android": "76",
  	deno: "1.24",
  	edge: "79",
  	electron: "6.0",
  	firefox: "71",
  	"firefox-android": "71",
  	ios: "13.0",
  	node: "12.9",
  	oculus: "7.0",
  	opera: "63",
  	"opera-android": "54",
  	opera_mobile: "54",
  	quest: "7.0",
  	rhino: "1.7.15",
  	safari: "13",
  	samsung: "12.0"
  },
  	"esnext.promise.any": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.24",
  	edge: "85",
  	electron: "10.0",
  	firefox: "79",
  	"firefox-android": "79",
  	ios: "14.0",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	safari: "14.0",
  	samsung: "14.0"
  },
  	"esnext.promise.try": {
  },
  	"esnext.promise.with-resolvers": {
  	android: "119",
  	bun: "0.7.1",
  	chrome: "119",
  	"chrome-android": "119",
  	deno: "1.38",
  	edge: "119",
  	electron: "28.0",
  	firefox: "121",
  	"firefox-android": "121",
  	ios: "17.4",
  	node: "22.0",
  	oculus: "31.0",
  	opera: "105",
  	"opera-android": "79",
  	opera_mobile: "79",
  	quest: "31.0",
  	safari: "17.4",
  	samsung: "25.0"
  },
  	"esnext.reflect.define-metadata": {
  },
  	"esnext.reflect.delete-metadata": {
  },
  	"esnext.reflect.get-metadata": {
  },
  	"esnext.reflect.get-metadata-keys": {
  },
  	"esnext.reflect.get-own-metadata": {
  },
  	"esnext.reflect.get-own-metadata-keys": {
  },
  	"esnext.reflect.has-metadata": {
  },
  	"esnext.reflect.has-own-metadata": {
  },
  	"esnext.reflect.metadata": {
  },
  	"esnext.regexp.escape": {
  },
  	"esnext.set.add-all": {
  },
  	"esnext.set.delete-all": {
  },
  	"esnext.set.difference.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.difference": {
  },
  	"esnext.set.every": {
  },
  	"esnext.set.filter": {
  },
  	"esnext.set.find": {
  },
  	"esnext.set.from": {
  },
  	"esnext.set.intersection.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.intersection": {
  },
  	"esnext.set.is-disjoint-from.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.is-disjoint-from": {
  },
  	"esnext.set.is-subset-of.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.is-subset-of": {
  },
  	"esnext.set.is-superset-of.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.is-superset-of": {
  },
  	"esnext.set.join": {
  },
  	"esnext.set.map": {
  },
  	"esnext.set.of": {
  },
  	"esnext.set.reduce": {
  },
  	"esnext.set.some": {
  },
  	"esnext.set.symmetric-difference.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.symmetric-difference": {
  },
  	"esnext.set.union.v2": {
  	android: "123",
  	bun: "1.1.1",
  	chrome: "123",
  	"chrome-android": "123",
  	deno: "1.41.3",
  	edge: "123",
  	electron: "30.0",
  	firefox: "127",
  	"firefox-android": "127",
  	node: "22.0",
  	oculus: "33.0",
  	opera: "109",
  	"opera-android": "82",
  	opera_mobile: "82",
  	quest: "33.0"
  },
  	"esnext.set.union": {
  },
  	"esnext.string.at": {
  },
  	"esnext.string.cooked": {
  },
  	"esnext.string.code-points": {
  },
  	"esnext.string.dedent": {
  },
  	"esnext.string.is-well-formed": {
  	android: "111",
  	bun: "0.4.0",
  	chrome: "111",
  	"chrome-android": "111",
  	deno: "1.32",
  	edge: "111",
  	electron: "24.0",
  	firefox: "119",
  	"firefox-android": "119",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "27.0",
  	opera: "97",
  	"opera-android": "75",
  	opera_mobile: "75",
  	quest: "27.0",
  	safari: "16.4",
  	samsung: "22.0"
  },
  	"esnext.string.match-all": {
  	android: "80",
  	bun: "0.1.1",
  	chrome: "80",
  	"chrome-android": "80",
  	deno: "1.0",
  	edge: "80",
  	electron: "8.0",
  	firefox: "73",
  	"firefox-android": "73",
  	hermes: "0.6",
  	ios: "13.4",
  	node: "14.0",
  	oculus: "9.0",
  	opera: "67",
  	"opera-android": "57",
  	opera_mobile: "57",
  	quest: "9.0",
  	"react-native": "0.69",
  	safari: "13.1",
  	samsung: "13.0"
  },
  	"esnext.string.replace-all": {
  	android: "85",
  	bun: "0.1.1",
  	chrome: "85",
  	"chrome-android": "85",
  	deno: "1.2",
  	edge: "85",
  	electron: "10.0",
  	firefox: "77",
  	"firefox-android": "77",
  	hermes: "0.7",
  	ios: "13.4",
  	node: "15.0",
  	oculus: "12.0",
  	opera: "71",
  	"opera-android": "60",
  	opera_mobile: "60",
  	quest: "12.0",
  	"react-native": "0.69",
  	rhino: "1.7.15",
  	safari: "13.1",
  	samsung: "14.0"
  },
  	"esnext.string.to-well-formed": {
  	android: "111",
  	bun: "0.5.7",
  	chrome: "111",
  	"chrome-android": "111",
  	deno: "1.32",
  	edge: "111",
  	electron: "24.0",
  	firefox: "119",
  	"firefox-android": "119",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "27.0",
  	opera: "97",
  	"opera-android": "75",
  	opera_mobile: "75",
  	quest: "27.0",
  	safari: "16.4",
  	samsung: "22.0"
  },
  	"esnext.symbol.async-dispose": {
  	bun: "1.0.23",
  	deno: "1.38",
  	node: "20.5.0"
  },
  	"esnext.symbol.custom-matcher": {
  },
  	"esnext.symbol.dispose": {
  	android: "125",
  	bun: "1.0.23",
  	chrome: "125",
  	"chrome-android": "125",
  	deno: "1.38",
  	edge: "125",
  	electron: "31.0",
  	node: "20.5.0",
  	opera: "111"
  },
  	"esnext.symbol.is-registered-symbol": {
  },
  	"esnext.symbol.is-registered": {
  },
  	"esnext.symbol.is-well-known-symbol": {
  },
  	"esnext.symbol.is-well-known": {
  },
  	"esnext.symbol.matcher": {
  },
  	"esnext.symbol.metadata": {
  	deno: "1.40.4"
  },
  	"esnext.symbol.metadata-key": {
  },
  	"esnext.symbol.observable": {
  },
  	"esnext.symbol.pattern-match": {
  },
  	"esnext.symbol.replace-all": {
  },
  	"esnext.typed-array.from-async": {
  },
  	"esnext.typed-array.at": {
  	android: "92",
  	bun: "0.1.1",
  	chrome: "92",
  	"chrome-android": "92",
  	deno: "1.12",
  	edge: "92",
  	electron: "14.0",
  	firefox: "90",
  	"firefox-android": "90",
  	ios: "15.4",
  	node: "16.6",
  	oculus: "17.0",
  	opera: "78",
  	"opera-android": "65",
  	opera_mobile: "65",
  	quest: "17.0",
  	"react-native": "0.71",
  	rhino: "1.7.15",
  	safari: "15.4",
  	samsung: "16.0"
  },
  	"esnext.typed-array.filter-out": {
  },
  	"esnext.typed-array.filter-reject": {
  },
  	"esnext.typed-array.find-last": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"esnext.typed-array.find-last-index": {
  	android: "97",
  	bun: "0.1.1",
  	chrome: "97",
  	"chrome-android": "97",
  	deno: "1.16",
  	edge: "97",
  	electron: "17.0",
  	firefox: "104",
  	"firefox-android": "104",
  	hermes: "0.11",
  	ios: "15.4",
  	node: "18.0",
  	oculus: "20.0",
  	opera: "83",
  	"opera-android": "68",
  	opera_mobile: "68",
  	quest: "20.0",
  	"react-native": "0.69",
  	safari: "15.4",
  	samsung: "18.0"
  },
  	"esnext.typed-array.group-by": {
  },
  	"esnext.typed-array.to-reversed": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.typed-array.to-sorted": {
  	android: "110",
  	bun: "0.1.1",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.0",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.0",
  	samsung: "21.0"
  },
  	"esnext.typed-array.to-spliced": {
  },
  	"esnext.typed-array.unique-by": {
  },
  	"esnext.typed-array.with": {
  	android: "110",
  	bun: "0.1.9",
  	chrome: "110",
  	"chrome-android": "110",
  	deno: "1.27",
  	edge: "110",
  	electron: "23.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "16.4",
  	node: "20.0",
  	oculus: "26.0",
  	opera: "96",
  	"opera-android": "74",
  	opera_mobile: "74",
  	quest: "26.0",
  	safari: "16.4",
  	samsung: "21.0"
  },
  	"esnext.uint8-array.from-base64": {
  },
  	"esnext.uint8-array.from-hex": {
  },
  	"esnext.uint8-array.to-base64": {
  },
  	"esnext.uint8-array.to-hex": {
  },
  	"esnext.weak-map.delete-all": {
  },
  	"esnext.weak-map.from": {
  },
  	"esnext.weak-map.of": {
  },
  	"esnext.weak-map.emplace": {
  },
  	"esnext.weak-map.upsert": {
  },
  	"esnext.weak-set.add-all": {
  },
  	"esnext.weak-set.delete-all": {
  },
  	"esnext.weak-set.from": {
  },
  	"esnext.weak-set.of": {
  },
  	"web.atob": {
  	android: "37",
  	bun: "0.1.1",
  	chrome: "34",
  	"chrome-android": "34",
  	deno: "1.0",
  	edge: "16",
  	electron: "0.20",
  	firefox: "27",
  	"firefox-android": "27",
  	ios: "10.3",
  	node: "18.0",
  	oculus: "3.0",
  	opera: "10.5",
  	"opera-android": "10.5",
  	opera_mobile: "10.5",
  	quest: "3.0",
  	"react-native": "0.74",
  	safari: "10.1",
  	samsung: "2.0"
  },
  	"web.btoa": {
  	android: "3.0",
  	bun: "0.1.1",
  	chrome: "4",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "16",
  	electron: "0.20",
  	firefox: "27",
  	"firefox-android": "27",
  	ios: "1.0",
  	node: "17.5",
  	oculus: "3.0",
  	opera: "10.5",
  	"opera-android": "10.5",
  	opera_mobile: "10.5",
  	phantom: "1.9",
  	quest: "3.0",
  	safari: "3.0",
  	samsung: "1.0"
  },
  	"web.dom-collections.for-each": {
  	android: "58",
  	bun: "0.1.1",
  	chrome: "58",
  	"chrome-android": "58",
  	deno: "1.0",
  	edge: "16",
  	electron: "1.7",
  	firefox: "50",
  	"firefox-android": "50",
  	hermes: "0.1",
  	ios: "10.0",
  	node: "0.0.1",
  	oculus: "4.0",
  	opera: "45",
  	"opera-android": "43",
  	opera_mobile: "43",
  	quest: "4.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "10.0",
  	samsung: "7.0"
  },
  	"web.dom-collections.iterator": {
  	android: "66",
  	bun: "0.1.1",
  	chrome: "66",
  	"chrome-android": "66",
  	deno: "1.0",
  	edge: "79",
  	electron: "3.0",
  	firefox: "60",
  	"firefox-android": "60",
  	hermes: "0.1",
  	ios: "13.4",
  	node: "0.0.1",
  	oculus: "5.0",
  	opera: "53",
  	"opera-android": "47",
  	opera_mobile: "47",
  	quest: "5.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "13.1",
  	samsung: "9.0"
  },
  	"web.dom-exception.constructor": {
  	android: "46",
  	bun: "0.1.1",
  	chrome: "46",
  	"chrome-android": "46",
  	deno: "1.7",
  	edge: "79",
  	electron: "0.36",
  	firefox: "37",
  	"firefox-android": "37",
  	ios: "11.3",
  	node: "17.0",
  	oculus: "3.0",
  	opera: "33",
  	"opera-android": "33",
  	opera_mobile: "33",
  	quest: "3.0",
  	safari: "11.1",
  	samsung: "5.0"
  },
  	"web.dom-exception.stack": {
  	deno: "1.15",
  	firefox: "37",
  	"firefox-android": "37",
  	node: "17.0"
  },
  	"web.dom-exception.to-string-tag": {
  	android: "49",
  	bun: "0.1.1",
  	chrome: "49",
  	"chrome-android": "49",
  	deno: "1.7",
  	edge: "79",
  	electron: "0.37",
  	firefox: "51",
  	"firefox-android": "51",
  	ios: "11.3",
  	node: "17.0",
  	oculus: "3.0",
  	opera: "36",
  	"opera-android": "36",
  	opera_mobile: "36",
  	quest: "3.0",
  	safari: "11.1",
  	samsung: "5.0"
  },
  	"web.immediate": {
  	bun: "0.4.0",
  	ie: "10",
  	node: "0.9.1"
  },
  	"web.queue-microtask": {
  	android: "71",
  	chrome: "71",
  	"chrome-android": "71",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "69",
  	"firefox-android": "69",
  	ios: "12.2",
  	node: "12.0",
  	oculus: "6.0",
  	opera: "58",
  	"opera-android": "50",
  	opera_mobile: "50",
  	quest: "6.0",
  	safari: "12.1",
  	samsung: "10.0"
  },
  	"web.self": {
  	android: "86",
  	bun: "1.0.22",
  	chrome: "86",
  	"chrome-android": "86",
  	deno: "1.29.3",
  	edge: "86",
  	electron: "11.0",
  	firefox: "31",
  	"firefox-android": "31",
  	ios: "10.0",
  	oculus: "12.0",
  	opera: "72",
  	"opera-android": "61",
  	opera_mobile: "61",
  	quest: "12.0",
  	safari: "10",
  	samsung: "14.0"
  },
  	"web.structured-clone": {
  },
  	"web.timers": {
  	android: "1.5",
  	bun: "0.4.0",
  	chrome: "1",
  	"chrome-android": "18",
  	deno: "1.0",
  	edge: "12",
  	electron: "0.20",
  	firefox: "1",
  	"firefox-android": "4",
  	hermes: "0.1",
  	ie: "10",
  	ios: "1.0",
  	node: "0.0.1",
  	oculus: "3.0",
  	opera: "7",
  	"opera-android": "7",
  	opera_mobile: "7",
  	phantom: "1.9",
  	quest: "3.0",
  	"react-native": "0.69",
  	rhino: "1.7.13",
  	safari: "1.0",
  	samsung: "1.0"
  },
  	"web.url": {
  	android: "67",
  	bun: "0.1.1",
  	chrome: "67",
  	"chrome-android": "67",
  	deno: "1.0",
  	edge: "79",
  	electron: "4.0",
  	firefox: "57",
  	"firefox-android": "57",
  	ios: "14.0",
  	node: "10.0",
  	oculus: "6.0",
  	opera: "54",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	safari: "14.0",
  	samsung: "9.0"
  },
  	"web.url.can-parse": {
  	android: "120",
  	bun: "1.1.0",
  	chrome: "120",
  	"chrome-android": "120",
  	deno: "1.33.2",
  	edge: "120",
  	electron: "28.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "17.0",
  	node: "20.1",
  	oculus: "31.0",
  	opera: "106",
  	"opera-android": "80",
  	opera_mobile: "80",
  	quest: "31.0",
  	safari: "17.0",
  	samsung: "25.0"
  },
  	"web.url.parse": {
  	android: "126",
  	bun: "1.1.4",
  	chrome: "126",
  	"chrome-android": "126",
  	deno: "1.43",
  	edge: "126",
  	electron: "31.0",
  	firefox: "126",
  	"firefox-android": "126",
  	node: "22.0",
  	opera: "112"
  },
  	"web.url.to-json": {
  	android: "71",
  	bun: "0.1.1",
  	chrome: "71",
  	"chrome-android": "71",
  	deno: "1.0",
  	edge: "79",
  	electron: "5.0",
  	firefox: "57",
  	"firefox-android": "57",
  	ios: "14.0",
  	node: "10.0",
  	oculus: "6.0",
  	opera: "58",
  	"opera-android": "50",
  	opera_mobile: "50",
  	quest: "6.0",
  	safari: "14.0",
  	samsung: "10.0"
  },
  	"web.url-search-params": {
  	android: "67",
  	bun: "0.1.1",
  	chrome: "67",
  	"chrome-android": "67",
  	deno: "1.0",
  	edge: "79",
  	electron: "4.0",
  	firefox: "57",
  	"firefox-android": "57",
  	ios: "14.0",
  	node: "10.0",
  	oculus: "6.0",
  	opera: "54",
  	"opera-android": "48",
  	opera_mobile: "48",
  	quest: "6.0",
  	safari: "14.0",
  	samsung: "9.0"
  },
  	"web.url-search-params.delete": {
  	android: "118",
  	bun: "1.0.31",
  	chrome: "118",
  	"chrome-android": "118",
  	deno: "1.35",
  	edge: "118",
  	electron: "27.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "17.0",
  	node: "20.2",
  	oculus: "30.0",
  	opera: "104",
  	"opera-android": "79",
  	opera_mobile: "79",
  	quest: "30.0",
  	safari: "17.0",
  	samsung: "25.0"
  },
  	"web.url-search-params.has": {
  	android: "118",
  	bun: "1.0.31",
  	chrome: "118",
  	"chrome-android": "118",
  	deno: "1.35",
  	edge: "118",
  	electron: "27.0",
  	firefox: "115",
  	"firefox-android": "115",
  	ios: "17.0",
  	node: "20.2",
  	oculus: "30.0",
  	opera: "104",
  	"opera-android": "79",
  	opera_mobile: "79",
  	quest: "30.0",
  	safari: "17.0",
  	samsung: "25.0"
  },
  	"web.url-search-params.size": {
  	android: "113",
  	bun: "1.0.2",
  	chrome: "113",
  	"chrome-android": "113",
  	deno: "1.32",
  	edge: "113",
  	electron: "25.0",
  	firefox: "112",
  	"firefox-android": "112",
  	ios: "17.0",
  	node: "19.8",
  	oculus: "28.0",
  	opera: "99",
  	"opera-android": "76",
  	opera_mobile: "76",
  	quest: "28.0",
  	safari: "17.0",
  	samsung: "23.0"
  }
  };

  var data$1;
  var hasRequiredData;
  function requireData() {
    if (hasRequiredData) return data$1;
    hasRequiredData = 1;
    data$1 = require$$0$3;
    return data$1;
  }

  var shippedProposals = {};

  var hasRequiredShippedProposals;
  function requireShippedProposals() {
    if (hasRequiredShippedProposals) return shippedProposals;
    hasRequiredShippedProposals = 1;
    shippedProposals.__esModule = true;
    shippedProposals["default"] = void 0;
    var _default = new Set(["esnext.suppressed-error.constructor", "esnext.array.from-async", "esnext.array.group", "esnext.array.group-to-map", "esnext.data-view.get-float16", "esnext.data-view.set-float16", "esnext.iterator.constructor", "esnext.iterator.drop", "esnext.iterator.every", "esnext.iterator.filter", "esnext.iterator.find", "esnext.iterator.flat-map", "esnext.iterator.for-each", "esnext.iterator.from", "esnext.iterator.map", "esnext.iterator.reduce", "esnext.iterator.some", "esnext.iterator.take", "esnext.iterator.to-array", "esnext.json.is-raw-json", "esnext.json.parse", "esnext.json.raw-json", "esnext.math.f16round", "esnext.promise.try", "esnext.symbol.async-dispose", "esnext.symbol.dispose", "esnext.symbol.metadata"]);
    shippedProposals["default"] = _default;
    return shippedProposals;
  }

  var has$2 = Object.hasOwn || Function.call.bind({}.hasOwnProperty);
  function semver$3(input) {
    if (input instanceof semver$3) return input;
    if (!(this instanceof semver$3)) return new semver$3(input);
    var match = /(\d+)(?:\.(\d+))?(?:\.(\d+))?/.exec(input);
    if (!match) throw new TypeError("Invalid version: " + input);
    var _match = _slicedToArray(match, 4),
      $major = _match[1],
      $minor = _match[2],
      $patch = _match[3];
    this.major = +$major;
    this.minor = $minor ? +$minor : 0;
    this.patch = $patch ? +$patch : 0;
  }
  semver$3.prototype.toString = function () {
    return this.major + "." + this.minor + "." + this.patch;
  };
  function compare$1($a, operator, $b) {
    var a = semver$3($a);
    var b = semver$3($b);
    for (var _i = 0, _arr = ['major', 'minor', 'patch']; _i < _arr.length; _i++) {
      var component = _arr[_i];
      if (a[component] < b[component]) return operator === '<' || operator === '<=' || operator === '!=';
      if (a[component] > b[component]) return operator === '>' || operator === '>=' || operator === '!=';
    }
    return operator === '==' || operator === '<=' || operator === '>=';
  }
  function filterOutStabilizedProposals(modules) {
    var modulesSet = new Set(modules);
    for (var _iterator = _createForOfIteratorHelperLoose(modulesSet), _step; !(_step = _iterator()).done;) {
      var $module = _step.value;
      if ($module.startsWith('esnext.') && modulesSet.has($module.replace(/^esnext\./, 'es.'))) {
        modulesSet["delete"]($module);
      }
    }
    return _toConsumableArray(modulesSet);
  }
  function intersection$2(list, order) {
    var set = list instanceof Set ? list : new Set(list);
    return order.filter(function (name) {
      return set.has(name);
    });
  }
  function sortObjectByKey(object, fn) {
    return Object.keys(object).sort(fn).reduce(function (memo, key) {
      memo[key] = object[key];
      return memo;
    }, {});
  }
  var helpers$1 = {
    compare: compare$1,
    filterOutStabilizedProposals: filterOutStabilizedProposals,
    has: has$2,
    intersection: intersection$2,
    semver: semver$3,
    sortObjectByKey: sortObjectByKey
  };

  var require$$1 = {
  	"3.0": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.date.now",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.finally",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.to-string",
  	"es.set",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-string",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.global-this",
  	"esnext.map.delete-all",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.code-points",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.symbol.dispose",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.timers",
  	"web.url",
  	"web.url.to-json",
  	"web.url-search-params"
  ],
  	"3.1": [
  	"es.string.match-all",
  	"es.symbol.match-all",
  	"esnext.symbol.replace-all"
  ],
  	"3.2": [
  	"es.promise.all-settled",
  	"esnext.array.is-template-object",
  	"esnext.map.update-or-insert",
  	"esnext.symbol.async-dispose"
  ],
  	"3.3": [
  	"es.global-this",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.map.upsert",
  	"esnext.weak-map.upsert"
  ],
  	"3.4": [
  	"es.json.stringify"
  ],
  	"3.5": [
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values"
  ],
  	"3.6": [
  	"es.regexp.sticky",
  	"es.regexp.test"
  ],
  	"3.7": [
  	"es.aggregate-error",
  	"es.promise.any",
  	"es.reflect.to-string-tag",
  	"es.string.replace-all",
  	"esnext.map.emplace",
  	"esnext.weak-map.emplace"
  ],
  	"3.8": [
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.unique-by",
  	"esnext.bigint.range",
  	"esnext.number.range",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out"
  ],
  	"3.9": [
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.unique-by"
  ],
  	"3.11": [
  	"esnext.object.has-own"
  ],
  	"3.12": [
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata"
  ],
  	"3.15": [
  	"es.date.get-year",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.escape",
  	"es.regexp.dot-all",
  	"es.string.substr",
  	"es.unescape"
  ],
  	"3.16": [
  	"esnext.array.filter-reject",
  	"esnext.array.group-by",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.group-by"
  ],
  	"3.17": [
  	"es.array.at",
  	"es.object.has-own",
  	"es.string.at-alternative",
  	"es.typed-array.at"
  ],
  	"3.18": [
  	"esnext.array.from-async",
  	"esnext.typed-array.from-async"
  ],
  	"3.20": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error.cause",
  	"es.number.to-exponential",
  	"esnext.array.group-by-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.un-this",
  	"esnext.iterator.to-async",
  	"esnext.string.cooked",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.structured-clone"
  ],
  	"3.21": [
  	"web.atob",
  	"web.btoa"
  ],
  	"3.23": [
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.push",
  	"es.array.unshift",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-to-map",
  	"esnext.symbol.metadata-key"
  ],
  	"3.24": [
  	"esnext.async-iterator.indexed",
  	"esnext.iterator.indexed"
  ],
  	"3.25": [
  	"es.object.proto"
  ],
  	"3.26": [
  	"esnext.string.is-well-formed",
  	"esnext.string.to-well-formed",
  	"web.self"
  ],
  	"3.27": [
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"esnext.string.dedent"
  ],
  	"3.28": [
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.with",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.function.demethodize",
  	"esnext.iterator.range",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known"
  ],
  	"3.29": [
  	"web.url-search-params.size"
  ],
  	"3.30": [
  	"web.url.can-parse"
  ],
  	"3.31": [
  	"es.string.is-well-formed",
  	"es.string.to-well-formed",
  	"esnext.function.metadata",
  	"esnext.object.group-by",
  	"esnext.promise.with-resolvers",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-well-known-symbol",
  	"web.url-search-params.delete",
  	"web.url-search-params.has"
  ],
  	"3.32": [
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.math.f16round"
  ],
  	"3.33": [
  	"esnext.regexp.escape"
  ],
  	"3.34": [
  	"es.map.group-by",
  	"es.object.group-by",
  	"es.promise.with-resolvers",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"3.36": [
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length"
  ],
  	"3.37": [
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"esnext.math.sum-precise",
  	"esnext.symbol.custom-matcher",
  	"web.url.parse"
  ]
  };

  var require$$2 = [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ];

  var compare = helpers$1.compare,
    intersection$1 = helpers$1.intersection,
    semver$2 = helpers$1.semver;
  var modulesByVersions = require$$1;
  var modules = require$$2;
  var getModulesListForTargetVersion$2 = function getModulesListForTargetVersion(raw) {
    var corejs = semver$2(raw);
    if (corejs.major !== 3) {
      throw new RangeError('This version of `core-js-compat` works only with `core-js@3`.');
    }
    var result = [];
    for (var _i = 0, _Object$keys = Object.keys(modulesByVersions); _i < _Object$keys.length; _i++) {
      var version = _Object$keys[_i];
      if (compare(version, '<=', corejs)) {
        result.push.apply(result, _toConsumableArray(modulesByVersions[version]));
      }
    }
    return intersection$1(result, modules);
  };

  var getModulesListForTargetVersion$1;
  var hasRequiredGetModulesListForTargetVersion;
  function requireGetModulesListForTargetVersion() {
    if (hasRequiredGetModulesListForTargetVersion) return getModulesListForTargetVersion$1;
    hasRequiredGetModulesListForTargetVersion = 1;
    getModulesListForTargetVersion$1 = getModulesListForTargetVersion$2;
    return getModulesListForTargetVersion$1;
  }

  var builtInDefinitions$1 = {};

  var hasRequiredBuiltInDefinitions$1;
  function requireBuiltInDefinitions$1() {
    var _InstanceProperties;
    if (hasRequiredBuiltInDefinitions$1) return builtInDefinitions$1;
    hasRequiredBuiltInDefinitions$1 = 1;
    builtInDefinitions$1.__esModule = true;
    builtInDefinitions$1.StaticProperties = builtInDefinitions$1.PromiseDependenciesWithIterators = builtInDefinitions$1.PromiseDependencies = builtInDefinitions$1.InstanceProperties = builtInDefinitions$1.DecoratorMetadataDependencies = builtInDefinitions$1.CommonIterators = builtInDefinitions$1.BuiltIns = void 0;
    var _data = _interopRequireDefault(requireData());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function _extends() {
      _extends = Object.assign ? Object.assign.bind() : function (target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      return _extends.apply(this, arguments);
    }
    var polyfillsOrder = {};
    Object.keys(_data["default"]).forEach(function (name, index) {
      polyfillsOrder[name] = index;
    });
    var define = function define(pure, global, name, exclude) {
      if (name === void 0) {
        name = global[0];
      }
      return {
        name: name,
        pure: pure,
        global: global.sort(function (a, b) {
          return polyfillsOrder[a] - polyfillsOrder[b];
        }),
        exclude: exclude
      };
    };
    var typed = function typed() {
      for (var _len = arguments.length, modules = new Array(_len), _key = 0; _key < _len; _key++) {
        modules[_key] = arguments[_key];
      }
      return define(null, [].concat(modules, TypedArrayDependencies));
    };
    var ArrayNatureIterators = ["es.array.iterator", "web.dom-collections.iterator"];
    var CommonIterators = ["es.string.iterator"].concat(ArrayNatureIterators);
    builtInDefinitions$1.CommonIterators = CommonIterators;
    var ArrayNatureIteratorsWithTag = ["es.object.to-string"].concat(ArrayNatureIterators);
    var CommonIteratorsWithTag = ["es.object.to-string"].concat(_toConsumableArray(CommonIterators));
    var ErrorDependencies = ["es.error.cause", "es.error.to-string"];
    var SuppressedErrorDependencies = ["esnext.suppressed-error.constructor"].concat(ErrorDependencies);
    var ArrayBufferDependencies = ["es.array-buffer.constructor", "es.array-buffer.slice", "es.data-view", "es.array-buffer.detached", "es.array-buffer.transfer", "es.array-buffer.transfer-to-fixed-length", "es.object.to-string"];
    var TypedArrayDependencies = ["es.typed-array.at", "es.typed-array.copy-within", "es.typed-array.every", "es.typed-array.fill", "es.typed-array.filter", "es.typed-array.find", "es.typed-array.find-index", "es.typed-array.find-last", "es.typed-array.find-last-index", "es.typed-array.for-each", "es.typed-array.includes", "es.typed-array.index-of", "es.typed-array.iterator", "es.typed-array.join", "es.typed-array.last-index-of", "es.typed-array.map", "es.typed-array.reduce", "es.typed-array.reduce-right", "es.typed-array.reverse", "es.typed-array.set", "es.typed-array.slice", "es.typed-array.some", "es.typed-array.sort", "es.typed-array.subarray", "es.typed-array.to-locale-string", "es.typed-array.to-reversed", "es.typed-array.to-sorted", "es.typed-array.to-string", "es.typed-array.with", "es.object.to-string", "es.array.iterator", "esnext.typed-array.filter-reject", "esnext.typed-array.group-by", "esnext.typed-array.to-spliced", "esnext.typed-array.unique-by"].concat(ArrayBufferDependencies);
    var PromiseDependencies = ["es.promise", "es.object.to-string"];
    builtInDefinitions$1.PromiseDependencies = PromiseDependencies;
    var PromiseDependenciesWithIterators = [].concat(PromiseDependencies, _toConsumableArray(CommonIterators));
    builtInDefinitions$1.PromiseDependenciesWithIterators = PromiseDependenciesWithIterators;
    var SymbolDependencies = ["es.symbol", "es.symbol.description", "es.object.to-string"];
    var MapDependencies = ["es.map", "esnext.map.delete-all", "esnext.map.emplace", "esnext.map.every", "esnext.map.filter", "esnext.map.find", "esnext.map.find-key", "esnext.map.includes", "esnext.map.key-of", "esnext.map.map-keys", "esnext.map.map-values", "esnext.map.merge", "esnext.map.reduce", "esnext.map.some", "esnext.map.update"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var SetDependencies = ["es.set", "es.set.difference.v2", "es.set.intersection.v2", "es.set.is-disjoint-from.v2", "es.set.is-subset-of.v2", "es.set.is-superset-of.v2", "es.set.symmetric-difference.v2", "es.set.union.v2", "esnext.set.add-all", "esnext.set.delete-all", "esnext.set.difference", "esnext.set.every", "esnext.set.filter", "esnext.set.find", "esnext.set.intersection", "esnext.set.is-disjoint-from", "esnext.set.is-subset-of", "esnext.set.is-superset-of", "esnext.set.join", "esnext.set.map", "esnext.set.reduce", "esnext.set.some", "esnext.set.symmetric-difference", "esnext.set.union"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var WeakMapDependencies = ["es.weak-map", "esnext.weak-map.delete-all", "esnext.weak-map.emplace"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var WeakSetDependencies = ["es.weak-set", "esnext.weak-set.add-all", "esnext.weak-set.delete-all"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var DOMExceptionDependencies = ["web.dom-exception.constructor", "web.dom-exception.stack", "web.dom-exception.to-string-tag", "es.error.to-string"];
    var URLSearchParamsDependencies = ["web.url-search-params", "web.url-search-params.delete", "web.url-search-params.has", "web.url-search-params.size"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var AsyncIteratorDependencies = ["esnext.async-iterator.constructor"].concat(PromiseDependencies);
    var AsyncIteratorProblemMethods = ["esnext.async-iterator.every", "esnext.async-iterator.filter", "esnext.async-iterator.find", "esnext.async-iterator.flat-map", "esnext.async-iterator.for-each", "esnext.async-iterator.map", "esnext.async-iterator.reduce", "esnext.async-iterator.some"];
    var IteratorDependencies = ["esnext.iterator.constructor", "es.object.to-string"];
    var DecoratorMetadataDependencies = ["esnext.symbol.metadata", "esnext.function.metadata"];
    builtInDefinitions$1.DecoratorMetadataDependencies = DecoratorMetadataDependencies;
    var TypedArrayStaticMethods = function TypedArrayStaticMethods(base) {
      return {
        from: define(null, ["es.typed-array.from", base].concat(TypedArrayDependencies)),
        fromAsync: define(null, ["esnext.typed-array.from-async", base].concat(_toConsumableArray(PromiseDependenciesWithIterators), TypedArrayDependencies)),
        of: define(null, ["es.typed-array.of", base].concat(TypedArrayDependencies))
      };
    };
    var DataViewDependencies = ["es.data-view"].concat(ArrayBufferDependencies);
    var BuiltIns = {
      AsyncDisposableStack: define("async-disposable-stack/index", ["esnext.async-disposable-stack.constructor", "es.object.to-string", "esnext.async-iterator.async-dispose", "esnext.iterator.dispose"].concat(PromiseDependencies, _toConsumableArray(SuppressedErrorDependencies))),
      AsyncIterator: define("async-iterator/index", AsyncIteratorDependencies),
      AggregateError: define("aggregate-error", ["es.aggregate-error"].concat(ErrorDependencies, _toConsumableArray(CommonIteratorsWithTag), ["es.aggregate-error.cause"])),
      ArrayBuffer: define(null, ArrayBufferDependencies),
      DataView: define(null, DataViewDependencies),
      Date: define(null, ["es.date.to-string"]),
      DOMException: define("dom-exception/index", DOMExceptionDependencies),
      DisposableStack: define("disposable-stack/index", ["esnext.disposable-stack.constructor", "es.object.to-string", "esnext.iterator.dispose"].concat(_toConsumableArray(SuppressedErrorDependencies))),
      Error: define(null, ErrorDependencies),
      EvalError: define(null, ErrorDependencies),
      Float32Array: typed("es.typed-array.float32-array"),
      Float64Array: typed("es.typed-array.float64-array"),
      Int8Array: typed("es.typed-array.int8-array"),
      Int16Array: typed("es.typed-array.int16-array"),
      Int32Array: typed("es.typed-array.int32-array"),
      Iterator: define("iterator/index", IteratorDependencies),
      Uint8Array: typed("es.typed-array.uint8-array", "esnext.uint8-array.set-from-base64", "esnext.uint8-array.set-from-hex", "esnext.uint8-array.to-base64", "esnext.uint8-array.to-hex"),
      Uint8ClampedArray: typed("es.typed-array.uint8-clamped-array"),
      Uint16Array: typed("es.typed-array.uint16-array"),
      Uint32Array: typed("es.typed-array.uint32-array"),
      Map: define("map/index", MapDependencies),
      Number: define(null, ["es.number.constructor"]),
      Observable: define("observable/index", ["esnext.observable", "esnext.symbol.observable", "es.object.to-string"].concat(_toConsumableArray(CommonIteratorsWithTag))),
      Promise: define("promise/index", PromiseDependencies),
      RangeError: define(null, ErrorDependencies),
      ReferenceError: define(null, ErrorDependencies),
      Reflect: define(null, ["es.reflect.to-string-tag", "es.object.to-string"]),
      RegExp: define(null, ["es.regexp.constructor", "es.regexp.dot-all", "es.regexp.exec", "es.regexp.sticky", "es.regexp.to-string"]),
      Set: define("set/index", SetDependencies),
      SuppressedError: define("suppressed-error", SuppressedErrorDependencies),
      Symbol: define("symbol/index", SymbolDependencies),
      SyntaxError: define(null, ErrorDependencies),
      TypeError: define(null, ErrorDependencies),
      URIError: define(null, ErrorDependencies),
      URL: define("url/index", ["web.url", "web.url.to-json"].concat(_toConsumableArray(URLSearchParamsDependencies))),
      URLSearchParams: define("url-search-params/index", URLSearchParamsDependencies),
      WeakMap: define("weak-map/index", WeakMapDependencies),
      WeakSet: define("weak-set/index", WeakSetDependencies),
      atob: define("atob", ["web.atob"].concat(DOMExceptionDependencies)),
      btoa: define("btoa", ["web.btoa"].concat(DOMExceptionDependencies)),
      clearImmediate: define("clear-immediate", ["web.immediate"]),
      compositeKey: define("composite-key", ["esnext.composite-key"]),
      compositeSymbol: define("composite-symbol", ["esnext.composite-symbol"]),
      escape: define("escape", ["es.escape"]),
      fetch: define(null, PromiseDependencies),
      globalThis: define("global-this", ["es.global-this"]),
      parseFloat: define("parse-float", ["es.parse-float"]),
      parseInt: define("parse-int", ["es.parse-int"]),
      queueMicrotask: define("queue-microtask", ["web.queue-microtask"]),
      self: define("self", ["web.self"]),
      setImmediate: define("set-immediate", ["web.immediate"]),
      setInterval: define("set-interval", ["web.timers"]),
      setTimeout: define("set-timeout", ["web.timers"]),
      structuredClone: define("structured-clone", ["web.structured-clone"].concat(DOMExceptionDependencies, ["es.array.iterator", "es.object.keys", "es.object.to-string", "es.map", "es.set"])),
      unescape: define("unescape", ["es.unescape"])
    };
    builtInDefinitions$1.BuiltIns = BuiltIns;
    var StaticProperties = {
      AsyncIterator: {
        from: define("async-iterator/from", ["esnext.async-iterator.from"].concat(_toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods, _toConsumableArray(CommonIterators)))
      },
      Array: {
        from: define("array/from", ["es.array.from", "es.string.iterator"]),
        fromAsync: define("array/from-async", ["esnext.array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        isArray: define("array/is-array", ["es.array.is-array"]),
        isTemplateObject: define("array/is-template-object", ["esnext.array.is-template-object"]),
        of: define("array/of", ["es.array.of"])
      },
      ArrayBuffer: {
        isView: define(null, ["es.array-buffer.is-view"])
      },
      BigInt: {
        range: define("bigint/range", ["esnext.bigint.range", "es.object.to-string"])
      },
      Date: {
        now: define("date/now", ["es.date.now"])
      },
      Function: {
        isCallable: define("function/is-callable", ["esnext.function.is-callable"]),
        isConstructor: define("function/is-constructor", ["esnext.function.is-constructor"])
      },
      Iterator: {
        from: define("iterator/from", ["esnext.iterator.from"].concat(IteratorDependencies, _toConsumableArray(CommonIterators))),
        range: define("iterator/range", ["esnext.iterator.range", "es.object.to-string"])
      },
      JSON: {
        isRawJSON: define("json/is-raw-json", ["esnext.json.is-raw-json"]),
        parse: define("json/parse", ["esnext.json.parse", "es.object.keys"]),
        rawJSON: define("json/raw-json", ["esnext.json.raw-json", "es.object.create", "es.object.freeze"]),
        stringify: define("json/stringify", ["es.json.stringify", "es.date.to-json"], "es.symbol")
      },
      Math: {
        DEG_PER_RAD: define("math/deg-per-rad", ["esnext.math.deg-per-rad"]),
        RAD_PER_DEG: define("math/rad-per-deg", ["esnext.math.rad-per-deg"]),
        acosh: define("math/acosh", ["es.math.acosh"]),
        asinh: define("math/asinh", ["es.math.asinh"]),
        atanh: define("math/atanh", ["es.math.atanh"]),
        cbrt: define("math/cbrt", ["es.math.cbrt"]),
        clamp: define("math/clamp", ["esnext.math.clamp"]),
        clz32: define("math/clz32", ["es.math.clz32"]),
        cosh: define("math/cosh", ["es.math.cosh"]),
        degrees: define("math/degrees", ["esnext.math.degrees"]),
        expm1: define("math/expm1", ["es.math.expm1"]),
        fround: define("math/fround", ["es.math.fround"]),
        f16round: define("math/f16round", ["esnext.math.f16round"]),
        fscale: define("math/fscale", ["esnext.math.fscale"]),
        hypot: define("math/hypot", ["es.math.hypot"]),
        iaddh: define("math/iaddh", ["esnext.math.iaddh"]),
        imul: define("math/imul", ["es.math.imul"]),
        imulh: define("math/imulh", ["esnext.math.imulh"]),
        isubh: define("math/isubh", ["esnext.math.isubh"]),
        log10: define("math/log10", ["es.math.log10"]),
        log1p: define("math/log1p", ["es.math.log1p"]),
        log2: define("math/log2", ["es.math.log2"]),
        radians: define("math/radians", ["esnext.math.radians"]),
        scale: define("math/scale", ["esnext.math.scale"]),
        seededPRNG: define("math/seeded-prng", ["esnext.math.seeded-prng"]),
        sign: define("math/sign", ["es.math.sign"]),
        signbit: define("math/signbit", ["esnext.math.signbit"]),
        sinh: define("math/sinh", ["es.math.sinh"]),
        sumPrecise: define("math/sum-precise", ["esnext.math.sum-precise", "es.array.iterator"]),
        tanh: define("math/tanh", ["es.math.tanh"]),
        trunc: define("math/trunc", ["es.math.trunc"]),
        umulh: define("math/umulh", ["esnext.math.umulh"])
      },
      Map: {
        from: define("map/from", ["esnext.map.from"].concat(_toConsumableArray(MapDependencies))),
        groupBy: define("map/group-by", ["es.map.group-by"].concat(_toConsumableArray(MapDependencies))),
        keyBy: define("map/key-by", ["esnext.map.key-by"].concat(_toConsumableArray(MapDependencies))),
        of: define("map/of", ["esnext.map.of"].concat(_toConsumableArray(MapDependencies)))
      },
      Number: {
        EPSILON: define("number/epsilon", ["es.number.epsilon"]),
        MAX_SAFE_INTEGER: define("number/max-safe-integer", ["es.number.max-safe-integer"]),
        MIN_SAFE_INTEGER: define("number/min-safe-integer", ["es.number.min-safe-integer"]),
        fromString: define("number/from-string", ["esnext.number.from-string"]),
        isFinite: define("number/is-finite", ["es.number.is-finite"]),
        isInteger: define("number/is-integer", ["es.number.is-integer"]),
        isNaN: define("number/is-nan", ["es.number.is-nan"]),
        isSafeInteger: define("number/is-safe-integer", ["es.number.is-safe-integer"]),
        parseFloat: define("number/parse-float", ["es.number.parse-float"]),
        parseInt: define("number/parse-int", ["es.number.parse-int"]),
        range: define("number/range", ["esnext.number.range", "es.object.to-string"])
      },
      Object: {
        assign: define("object/assign", ["es.object.assign"]),
        create: define("object/create", ["es.object.create"]),
        defineProperties: define("object/define-properties", ["es.object.define-properties"]),
        defineProperty: define("object/define-property", ["es.object.define-property"]),
        entries: define("object/entries", ["es.object.entries"]),
        freeze: define("object/freeze", ["es.object.freeze"]),
        fromEntries: define("object/from-entries", ["es.object.from-entries", "es.array.iterator"]),
        getOwnPropertyDescriptor: define("object/get-own-property-descriptor", ["es.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: define("object/get-own-property-descriptors", ["es.object.get-own-property-descriptors"]),
        getOwnPropertyNames: define("object/get-own-property-names", ["es.object.get-own-property-names"]),
        getOwnPropertySymbols: define("object/get-own-property-symbols", ["es.symbol"]),
        getPrototypeOf: define("object/get-prototype-of", ["es.object.get-prototype-of"]),
        groupBy: define("object/group-by", ["es.object.group-by", "es.object.create"]),
        hasOwn: define("object/has-own", ["es.object.has-own"]),
        is: define("object/is", ["es.object.is"]),
        isExtensible: define("object/is-extensible", ["es.object.is-extensible"]),
        isFrozen: define("object/is-frozen", ["es.object.is-frozen"]),
        isSealed: define("object/is-sealed", ["es.object.is-sealed"]),
        keys: define("object/keys", ["es.object.keys"]),
        preventExtensions: define("object/prevent-extensions", ["es.object.prevent-extensions"]),
        seal: define("object/seal", ["es.object.seal"]),
        setPrototypeOf: define("object/set-prototype-of", ["es.object.set-prototype-of"]),
        values: define("object/values", ["es.object.values"])
      },
      Promise: {
        all: define(null, PromiseDependenciesWithIterators),
        allSettled: define("promise/all-settled", ["es.promise.all-settled"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        any: define("promise/any", ["es.promise.any", "es.aggregate-error"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        race: define(null, PromiseDependenciesWithIterators),
        "try": define("promise/try", ["esnext.promise.try"].concat(PromiseDependencies)),
        withResolvers: define("promise/with-resolvers", ["es.promise.with-resolvers"].concat(PromiseDependencies))
      },
      Reflect: {
        apply: define("reflect/apply", ["es.reflect.apply"]),
        construct: define("reflect/construct", ["es.reflect.construct"]),
        defineMetadata: define("reflect/define-metadata", ["esnext.reflect.define-metadata"]),
        defineProperty: define("reflect/define-property", ["es.reflect.define-property"]),
        deleteMetadata: define("reflect/delete-metadata", ["esnext.reflect.delete-metadata"]),
        deleteProperty: define("reflect/delete-property", ["es.reflect.delete-property"]),
        get: define("reflect/get", ["es.reflect.get"]),
        getMetadata: define("reflect/get-metadata", ["esnext.reflect.get-metadata"]),
        getMetadataKeys: define("reflect/get-metadata-keys", ["esnext.reflect.get-metadata-keys"]),
        getOwnMetadata: define("reflect/get-own-metadata", ["esnext.reflect.get-own-metadata"]),
        getOwnMetadataKeys: define("reflect/get-own-metadata-keys", ["esnext.reflect.get-own-metadata-keys"]),
        getOwnPropertyDescriptor: define("reflect/get-own-property-descriptor", ["es.reflect.get-own-property-descriptor"]),
        getPrototypeOf: define("reflect/get-prototype-of", ["es.reflect.get-prototype-of"]),
        has: define("reflect/has", ["es.reflect.has"]),
        hasMetadata: define("reflect/has-metadata", ["esnext.reflect.has-metadata"]),
        hasOwnMetadata: define("reflect/has-own-metadata", ["esnext.reflect.has-own-metadata"]),
        isExtensible: define("reflect/is-extensible", ["es.reflect.is-extensible"]),
        metadata: define("reflect/metadata", ["esnext.reflect.metadata"]),
        ownKeys: define("reflect/own-keys", ["es.reflect.own-keys"]),
        preventExtensions: define("reflect/prevent-extensions", ["es.reflect.prevent-extensions"]),
        set: define("reflect/set", ["es.reflect.set"]),
        setPrototypeOf: define("reflect/set-prototype-of", ["es.reflect.set-prototype-of"])
      },
      RegExp: {
        escape: define("regexp/escape", ["esnext.regexp.escape"])
      },
      Set: {
        from: define("set/from", ["esnext.set.from"].concat(_toConsumableArray(SetDependencies))),
        of: define("set/of", ["esnext.set.of"].concat(_toConsumableArray(SetDependencies)))
      },
      String: {
        cooked: define("string/cooked", ["esnext.string.cooked"]),
        dedent: define("string/dedent", ["esnext.string.dedent", "es.string.from-code-point", "es.weak-map"]),
        fromCodePoint: define("string/from-code-point", ["es.string.from-code-point"]),
        raw: define("string/raw", ["es.string.raw"])
      },
      Symbol: {
        asyncDispose: define("symbol/async-dispose", ["esnext.symbol.async-dispose", "esnext.async-iterator.async-dispose"]),
        asyncIterator: define("symbol/async-iterator", ["es.symbol.async-iterator"]),
        customMatcher: define("symbol/custom-matcher", ["esnext.symbol.custom-matcher"]),
        dispose: define("symbol/dispose", ["esnext.symbol.dispose", "esnext.iterator.dispose"]),
        "for": define("symbol/for", [], "es.symbol"),
        hasInstance: define("symbol/has-instance", ["es.symbol.has-instance", "es.function.has-instance"]),
        isConcatSpreadable: define("symbol/is-concat-spreadable", ["es.symbol.is-concat-spreadable", "es.array.concat"]),
        isRegistered: define("symbol/is-registered", ["esnext.symbol.is-registered", "es.symbol"]),
        isRegisteredSymbol: define("symbol/is-registered-symbol", ["esnext.symbol.is-registered-symbol", "es.symbol"]),
        isWellKnown: define("symbol/is-well-known", ["esnext.symbol.is-well-known", "es.symbol"]),
        isWellKnownSymbol: define("symbol/is-well-known-symbol", ["esnext.symbol.is-well-known-symbol", "es.symbol"]),
        iterator: define("symbol/iterator", ["es.symbol.iterator"].concat(_toConsumableArray(CommonIteratorsWithTag))),
        keyFor: define("symbol/key-for", [], "es.symbol"),
        match: define("symbol/match", ["es.symbol.match", "es.string.match"]),
        matcher: define("symbol/matcher", ["esnext.symbol.matcher"]),
        matchAll: define("symbol/match-all", ["es.symbol.match-all", "es.string.match-all"]),
        metadata: define("symbol/metadata", DecoratorMetadataDependencies),
        metadataKey: define("symbol/metadata-key", ["esnext.symbol.metadata-key"]),
        observable: define("symbol/observable", ["esnext.symbol.observable"]),
        patternMatch: define("symbol/pattern-match", ["esnext.symbol.pattern-match"]),
        replace: define("symbol/replace", ["es.symbol.replace", "es.string.replace"]),
        search: define("symbol/search", ["es.symbol.search", "es.string.search"]),
        species: define("symbol/species", ["es.symbol.species", "es.array.species"]),
        split: define("symbol/split", ["es.symbol.split", "es.string.split"]),
        toPrimitive: define("symbol/to-primitive", ["es.symbol.to-primitive", "es.date.to-primitive"]),
        toStringTag: define("symbol/to-string-tag", ["es.symbol.to-string-tag", "es.object.to-string", "es.math.to-string-tag", "es.json.to-string-tag"]),
        unscopables: define("symbol/unscopables", ["es.symbol.unscopables"])
      },
      URL: {
        canParse: define("url/can-parse", ["web.url.can-parse", "web.url"]),
        parse: define("url/parse", ["web.url.parse", "web.url"])
      },
      WeakMap: {
        from: define("weak-map/from", ["esnext.weak-map.from"].concat(_toConsumableArray(WeakMapDependencies))),
        of: define("weak-map/of", ["esnext.weak-map.of"].concat(_toConsumableArray(WeakMapDependencies)))
      },
      WeakSet: {
        from: define("weak-set/from", ["esnext.weak-set.from"].concat(_toConsumableArray(WeakSetDependencies))),
        of: define("weak-set/of", ["esnext.weak-set.of"].concat(_toConsumableArray(WeakSetDependencies)))
      },
      Int8Array: TypedArrayStaticMethods("es.typed-array.int8-array"),
      Uint8Array: _extends({
        fromBase64: define(null, ["esnext.uint8-array.from-base64"].concat(TypedArrayDependencies)),
        fromHex: define(null, ["esnext.uint8-array.from-hex"].concat(TypedArrayDependencies))
      }, TypedArrayStaticMethods("es.typed-array.uint8-array")),
      Uint8ClampedArray: TypedArrayStaticMethods("es.typed-array.uint8-clamped-array"),
      Int16Array: TypedArrayStaticMethods("es.typed-array.int16-array"),
      Uint16Array: TypedArrayStaticMethods("es.typed-array.uint16-array"),
      Int32Array: TypedArrayStaticMethods("es.typed-array.int32-array"),
      Uint32Array: TypedArrayStaticMethods("es.typed-array.uint32-array"),
      Float32Array: TypedArrayStaticMethods("es.typed-array.float32-array"),
      Float64Array: TypedArrayStaticMethods("es.typed-array.float64-array"),
      WebAssembly: {
        CompileError: define(null, ErrorDependencies),
        LinkError: define(null, ErrorDependencies),
        RuntimeError: define(null, ErrorDependencies)
      }
    };
    builtInDefinitions$1.StaticProperties = StaticProperties;
    var InstanceProperties = (_InstanceProperties = {
      asIndexedPairs: define(null, ["esnext.async-iterator.as-indexed-pairs"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.as-indexed-pairs"], IteratorDependencies)),
      at: define("instance/at", ["esnext.string.at", "es.string.at-alternative", "es.array.at"]),
      anchor: define(null, ["es.string.anchor"]),
      big: define(null, ["es.string.big"]),
      bind: define("instance/bind", ["es.function.bind"]),
      blink: define(null, ["es.string.blink"]),
      bold: define(null, ["es.string.bold"]),
      codePointAt: define("instance/code-point-at", ["es.string.code-point-at"]),
      codePoints: define("instance/code-points", ["esnext.string.code-points"]),
      concat: define("instance/concat", ["es.array.concat"], undefined, ["String"]),
      copyWithin: define("instance/copy-within", ["es.array.copy-within"]),
      demethodize: define("instance/demethodize", ["esnext.function.demethodize"]),
      description: define(null, ["es.symbol", "es.symbol.description"]),
      dotAll: define(null, ["es.regexp.dot-all"]),
      drop: define(null, ["esnext.async-iterator.drop"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.drop"], IteratorDependencies)),
      emplace: define("instance/emplace", ["esnext.map.emplace", "esnext.weak-map.emplace"]),
      endsWith: define("instance/ends-with", ["es.string.ends-with"]),
      entries: define("instance/entries", ArrayNatureIteratorsWithTag),
      every: define("instance/every", ["es.array.every", "esnext.async-iterator.every", "esnext.iterator.every"].concat(IteratorDependencies)),
      exec: define(null, ["es.regexp.exec"]),
      fill: define("instance/fill", ["es.array.fill"]),
      filter: define("instance/filter", ["es.array.filter", "esnext.async-iterator.filter", "esnext.iterator.filter"].concat(IteratorDependencies)),
      filterReject: define("instance/filterReject", ["esnext.array.filter-reject"]),
      "finally": define(null, ["es.promise.finally"].concat(PromiseDependencies)),
      find: define("instance/find", ["es.array.find", "esnext.async-iterator.find", "esnext.iterator.find"].concat(IteratorDependencies)),
      findIndex: define("instance/find-index", ["es.array.find-index"]),
      findLast: define("instance/find-last", ["es.array.find-last"]),
      findLastIndex: define("instance/find-last-index", ["es.array.find-last-index"]),
      fixed: define(null, ["es.string.fixed"]),
      flags: define("instance/flags", ["es.regexp.flags"]),
      flatMap: define("instance/flat-map", ["es.array.flat-map", "es.array.unscopables.flat-map", "esnext.async-iterator.flat-map", "esnext.iterator.flat-map"].concat(IteratorDependencies)),
      flat: define("instance/flat", ["es.array.flat", "es.array.unscopables.flat"]),
      getFloat16: define(null, ["esnext.data-view.get-float16"].concat(_toConsumableArray(DataViewDependencies))),
      getUint8Clamped: define(null, ["esnext.data-view.get-uint8-clamped"].concat(_toConsumableArray(DataViewDependencies))),
      getYear: define(null, ["es.date.get-year"]),
      group: define("instance/group", ["esnext.array.group"]),
      groupBy: define("instance/group-by", ["esnext.array.group-by"]),
      groupByToMap: define("instance/group-by-to-map", ["esnext.array.group-by-to-map", "es.map", "es.object.to-string"]),
      groupToMap: define("instance/group-to-map", ["esnext.array.group-to-map", "es.map", "es.object.to-string"]),
      fontcolor: define(null, ["es.string.fontcolor"]),
      fontsize: define(null, ["es.string.fontsize"]),
      forEach: define("instance/for-each", ["es.array.for-each", "esnext.async-iterator.for-each", "esnext.iterator.for-each"].concat(IteratorDependencies, ["web.dom-collections.for-each"])),
      includes: define("instance/includes", ["es.array.includes", "es.string.includes"]),
      indexed: define(null, ["esnext.async-iterator.indexed"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.indexed"], IteratorDependencies)),
      indexOf: define("instance/index-of", ["es.array.index-of"]),
      isWellFormed: define("instance/is-well-formed", ["es.string.is-well-formed"]),
      italic: define(null, ["es.string.italics"]),
      join: define(null, ["es.array.join"]),
      keys: define("instance/keys", ArrayNatureIteratorsWithTag),
      lastIndex: define(null, ["esnext.array.last-index"]),
      lastIndexOf: define("instance/last-index-of", ["es.array.last-index-of"]),
      lastItem: define(null, ["esnext.array.last-item"]),
      link: define(null, ["es.string.link"]),
      map: define("instance/map", ["es.array.map", "esnext.async-iterator.map", "esnext.iterator.map"]),
      match: define(null, ["es.string.match", "es.regexp.exec"]),
      matchAll: define("instance/match-all", ["es.string.match-all", "es.regexp.exec"]),
      name: define(null, ["es.function.name"]),
      padEnd: define("instance/pad-end", ["es.string.pad-end"]),
      padStart: define("instance/pad-start", ["es.string.pad-start"]),
      push: define("instance/push", ["es.array.push"]),
      reduce: define("instance/reduce", ["es.array.reduce", "esnext.async-iterator.reduce", "esnext.iterator.reduce"].concat(IteratorDependencies)),
      reduceRight: define("instance/reduce-right", ["es.array.reduce-right"]),
      repeat: define("instance/repeat", ["es.string.repeat"]),
      replace: define(null, ["es.string.replace", "es.regexp.exec"]),
      replaceAll: define("instance/replace-all", ["es.string.replace-all", "es.string.replace", "es.regexp.exec"]),
      reverse: define("instance/reverse", ["es.array.reverse"]),
      search: define(null, ["es.string.search", "es.regexp.exec"]),
      setFloat16: define(null, ["esnext.data-view.set-float16"].concat(_toConsumableArray(DataViewDependencies))),
      setUint8Clamped: define(null, ["esnext.data-view.set-uint8-clamped"].concat(_toConsumableArray(DataViewDependencies))),
      setYear: define(null, ["es.date.set-year"]),
      slice: define("instance/slice", ["es.array.slice"]),
      small: define(null, ["es.string.small"]),
      some: define("instance/some", ["es.array.some", "esnext.async-iterator.some", "esnext.iterator.some"].concat(IteratorDependencies)),
      sort: define("instance/sort", ["es.array.sort"]),
      splice: define("instance/splice", ["es.array.splice"]),
      split: define(null, ["es.string.split", "es.regexp.exec"]),
      startsWith: define("instance/starts-with", ["es.string.starts-with"]),
      sticky: define(null, ["es.regexp.sticky"]),
      strike: define(null, ["es.string.strike"]),
      sub: define(null, ["es.string.sub"]),
      substr: define(null, ["es.string.substr"]),
      sup: define(null, ["es.string.sup"]),
      take: define(null, ["esnext.async-iterator.take"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.take"], IteratorDependencies)),
      test: define(null, ["es.regexp.test", "es.regexp.exec"]),
      toArray: define(null, ["esnext.async-iterator.to-array"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.to-array"], IteratorDependencies)),
      toAsync: define(null, ["esnext.iterator.to-async"].concat(IteratorDependencies, _toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods)),
      toExponential: define(null, ["es.number.to-exponential"]),
      toFixed: define(null, ["es.number.to-fixed"]),
      toGMTString: define(null, ["es.date.to-gmt-string"]),
      toISOString: define(null, ["es.date.to-iso-string"]),
      toJSON: define(null, ["es.date.to-json"]),
      toPrecision: define(null, ["es.number.to-precision"]),
      toReversed: define("instance/to-reversed", ["es.array.to-reversed"]),
      toSorted: define("instance/to-sorted", ["es.array.to-sorted", "es.array.sort"]),
      toSpliced: define("instance/to-spliced", ["es.array.to-spliced"]),
      toString: define(null, ["es.object.to-string", "es.error.to-string", "es.date.to-string", "es.regexp.to-string"]),
      toWellFormed: define("instance/to-well-formed", ["es.string.to-well-formed"]),
      trim: define("instance/trim", ["es.string.trim"]),
      trimEnd: define("instance/trim-end", ["es.string.trim-end"]),
      trimLeft: define("instance/trim-left", ["es.string.trim-start"]),
      trimRight: define("instance/trim-right", ["es.string.trim-end"]),
      trimStart: define("instance/trim-start", ["es.string.trim-start"]),
      uniqueBy: define("instance/unique-by", ["esnext.array.unique-by", "es.map"]),
      unshift: define("instance/unshift", ["es.array.unshift"]),
      unThis: define("instance/un-this", ["esnext.function.un-this"]),
      values: define("instance/values", ArrayNatureIteratorsWithTag),
      "with": define("instance/with", ["es.array.with"]),
      __defineGetter__: define(null, ["es.object.define-getter"]),
      __defineSetter__: define(null, ["es.object.define-setter"]),
      __lookupGetter__: define(null, ["es.object.lookup-getter"]),
      __lookupSetter__: define(null, ["es.object.lookup-setter"])
    }, _InstanceProperties["__proto__"] = define(null, ["es.object.proto"]), _InstanceProperties);
    builtInDefinitions$1.InstanceProperties = InstanceProperties;
    return builtInDefinitions$1;
  }

  var babelRuntimeCorejs3Paths = {};

  var hasRequiredBabelRuntimeCorejs3Paths;
  function requireBabelRuntimeCorejs3Paths() {
    if (hasRequiredBabelRuntimeCorejs3Paths) return babelRuntimeCorejs3Paths;
    hasRequiredBabelRuntimeCorejs3Paths = 1;
    babelRuntimeCorejs3Paths.__esModule = true;
    babelRuntimeCorejs3Paths.stable = babelRuntimeCorejs3Paths.proposals = void 0;
    var stable = new Set(["array", "array/from", "array/is-array", "array/of", "clear-immediate", "date/now", "instance/bind", "instance/code-point-at", "instance/concat", "instance/copy-within", "instance/ends-with", "instance/entries", "instance/every", "instance/fill", "instance/filter", "instance/find", "instance/find-index", "instance/flags", "instance/flat", "instance/flat-map", "instance/for-each", "instance/includes", "instance/index-of", "instance/keys", "instance/last-index-of", "instance/map", "instance/pad-end", "instance/pad-start", "instance/reduce", "instance/reduce-right", "instance/repeat", "instance/reverse", "instance/slice", "instance/some", "instance/sort", "instance/splice", "instance/starts-with", "instance/trim", "instance/trim-end", "instance/trim-left", "instance/trim-right", "instance/trim-start", "instance/values", "json/stringify", "map", "math/acosh", "math/asinh", "math/atanh", "math/cbrt", "math/clz32", "math/cosh", "math/expm1", "math/fround", "math/hypot", "math/imul", "math/log10", "math/log1p", "math/log2", "math/sign", "math/sinh", "math/tanh", "math/trunc", "number/epsilon", "number/is-finite", "number/is-integer", "number/is-nan", "number/is-safe-integer", "number/max-safe-integer", "number/min-safe-integer", "number/parse-float", "number/parse-int", "object/assign", "object/create", "object/define-properties", "object/define-property", "object/entries", "object/freeze", "object/from-entries", "object/get-own-property-descriptor", "object/get-own-property-descriptors", "object/get-own-property-names", "object/get-own-property-symbols", "object/get-prototype-of", "object/is", "object/is-extensible", "object/is-frozen", "object/is-sealed", "object/keys", "object/prevent-extensions", "object/seal", "object/set-prototype-of", "object/values", "parse-float", "parse-int", "promise", "queue-microtask", "reflect/apply", "reflect/construct", "reflect/define-property", "reflect/delete-property", "reflect/get", "reflect/get-own-property-descriptor", "reflect/get-prototype-of", "reflect/has", "reflect/is-extensible", "reflect/own-keys", "reflect/prevent-extensions", "reflect/set", "reflect/set-prototype-of", "set", "set-immediate", "set-interval", "set-timeout", "string/from-code-point", "string/raw", "symbol", "symbol/async-iterator", "symbol/for", "symbol/has-instance", "symbol/is-concat-spreadable", "symbol/iterator", "symbol/key-for", "symbol/match", "symbol/replace", "symbol/search", "symbol/species", "symbol/split", "symbol/to-primitive", "symbol/to-string-tag", "symbol/unscopables", "url", "url-search-params", "weak-map", "weak-set"]);
    babelRuntimeCorejs3Paths.stable = stable;
    var proposals = new Set([].concat(_toConsumableArray(stable), ["aggregate-error", "composite-key", "composite-symbol", "global-this", "instance/at", "instance/code-points", "instance/match-all", "instance/replace-all", "math/clamp", "math/degrees", "math/deg-per-rad", "math/fscale", "math/iaddh", "math/imulh", "math/isubh", "math/rad-per-deg", "math/radians", "math/scale", "math/seeded-prng", "math/signbit", "math/umulh", "number/from-string", "observable", "reflect/define-metadata", "reflect/delete-metadata", "reflect/get-metadata", "reflect/get-metadata-keys", "reflect/get-own-metadata", "reflect/get-own-metadata-keys", "reflect/has-metadata", "reflect/has-own-metadata", "reflect/metadata", "symbol/dispose", "symbol/observable", "symbol/pattern-match"]));
    babelRuntimeCorejs3Paths.proposals = proposals;
    return babelRuntimeCorejs3Paths;
  }

  var usageFilters = {};

  var hasRequiredUsageFilters;
  function requireUsageFilters() {
    if (hasRequiredUsageFilters) return usageFilters;
    hasRequiredUsageFilters = 1;
    usageFilters.__esModule = true;
    usageFilters["default"] = canSkipPolyfill;
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    function canSkipPolyfill(desc, path) {
      var node = path.node,
        parent = path.parent;
      switch (desc.name) {
        case "es.string.split":
          {
            if (!t.isCallExpression(parent, {
              callee: node
            })) return false;
            if (parent.arguments.length < 1) return true;
            var splitter = parent.arguments[0];
            return t.isStringLiteral(splitter) || t.isTemplateLiteral(splitter);
          }
      }
    }
    return usageFilters;
  }

  var utils$2 = {};

  var require$$0$2 = {
  	"core-js": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/actual": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.metadata",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.group-by",
  	"esnext.math.f16round",
  	"esnext.object.has-own",
  	"esnext.object.group-by",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.with-resolvers",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose",
  	"esnext.symbol.metadata",
  	"esnext.typed-array.at",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/actual/aggregate-error": [
  ],
  	"core-js/actual/array": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with"
  ],
  	"core-js/actual/array-buffer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/actual/array-buffer/constructor": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/actual/array-buffer/detached": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"esnext.array-buffer.detached"
  ],
  	"core-js/actual/array-buffer/is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/actual/array-buffer/slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/actual/array-buffer/transfer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer",
  	"esnext.array-buffer.transfer"
  ],
  	"core-js/actual/array-buffer/transfer-to-fixed-length": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer-to-fixed-length",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/actual/array/at": [
  	"es.array.at"
  ],
  	"core-js/actual/array/concat": [
  	"es.array.concat"
  ],
  	"core-js/actual/array/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/actual/array/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/every": [
  	"es.array.every"
  ],
  	"core-js/actual/array/fill": [
  	"es.array.fill"
  ],
  	"core-js/actual/array/filter": [
  	"es.array.filter"
  ],
  	"core-js/actual/array/find": [
  	"es.array.find"
  ],
  	"core-js/actual/array/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/actual/array/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/actual/array/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/actual/array/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/actual/array/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/actual/array/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/actual/array/from": [
  	"es.array.from",
  	"es.string.iterator"
  ],
  	"core-js/actual/array/from-async": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async"
  ],
  	"core-js/actual/array/group": [
  	"esnext.array.group"
  ],
  	"core-js/actual/array/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/actual/array/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/actual/array/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/actual/array/includes": [
  	"es.array.includes"
  ],
  	"core-js/actual/array/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/actual/array/is-array": [
  	"es.array.is-array"
  ],
  	"core-js/actual/array/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/join": [
  	"es.array.join"
  ],
  	"core-js/actual/array/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/actual/array/map": [
  	"es.array.map"
  ],
  	"core-js/actual/array/of": [
  	"es.array.of"
  ],
  	"core-js/actual/array/push": [
  	"es.array.push"
  ],
  	"core-js/actual/array/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/actual/array/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/actual/array/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/actual/array/slice": [
  	"es.array.slice"
  ],
  	"core-js/actual/array/some": [
  	"es.array.some"
  ],
  	"core-js/actual/array/sort": [
  	"es.array.sort"
  ],
  	"core-js/actual/array/splice": [
  	"es.array.splice"
  ],
  	"core-js/actual/array/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/actual/array/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/actual/array/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/actual/array/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/actual/array/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/virtual": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with"
  ],
  	"core-js/actual/array/virtual/at": [
  	"es.array.at"
  ],
  	"core-js/actual/array/virtual/concat": [
  	"es.array.concat"
  ],
  	"core-js/actual/array/virtual/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/actual/array/virtual/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/virtual/every": [
  	"es.array.every"
  ],
  	"core-js/actual/array/virtual/fill": [
  	"es.array.fill"
  ],
  	"core-js/actual/array/virtual/filter": [
  	"es.array.filter"
  ],
  	"core-js/actual/array/virtual/find": [
  	"es.array.find"
  ],
  	"core-js/actual/array/virtual/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/actual/array/virtual/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/actual/array/virtual/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/actual/array/virtual/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/actual/array/virtual/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/actual/array/virtual/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/actual/array/virtual/group": [
  	"esnext.array.group"
  ],
  	"core-js/actual/array/virtual/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/actual/array/virtual/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/actual/array/virtual/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/actual/array/virtual/includes": [
  	"es.array.includes"
  ],
  	"core-js/actual/array/virtual/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/actual/array/virtual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/virtual/join": [
  	"es.array.join"
  ],
  	"core-js/actual/array/virtual/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/virtual/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/actual/array/virtual/map": [
  	"es.array.map"
  ],
  	"core-js/actual/array/virtual/push": [
  	"es.array.push"
  ],
  	"core-js/actual/array/virtual/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/actual/array/virtual/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/actual/array/virtual/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/actual/array/virtual/slice": [
  	"es.array.slice"
  ],
  	"core-js/actual/array/virtual/some": [
  	"es.array.some"
  ],
  	"core-js/actual/array/virtual/sort": [
  	"es.array.sort"
  ],
  	"core-js/actual/array/virtual/splice": [
  	"es.array.splice"
  ],
  	"core-js/actual/array/virtual/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/actual/array/virtual/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/actual/array/virtual/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/actual/array/virtual/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/actual/array/virtual/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/actual/array/virtual/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/actual/array/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/actual/async-disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/actual/async-disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/actual/async-iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/async-iterator/async-dispose": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.async-dispose"
  ],
  	"core-js/actual/async-iterator/drop": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop"
  ],
  	"core-js/actual/async-iterator/every": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.every"
  ],
  	"core-js/actual/async-iterator/filter": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.filter"
  ],
  	"core-js/actual/async-iterator/find": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.find"
  ],
  	"core-js/actual/async-iterator/flat-map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.flat-map"
  ],
  	"core-js/actual/async-iterator/for-each": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.for-each"
  ],
  	"core-js/actual/async-iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/async-iterator/map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.map"
  ],
  	"core-js/actual/async-iterator/reduce": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.reduce"
  ],
  	"core-js/actual/async-iterator/some": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.some"
  ],
  	"core-js/actual/async-iterator/take": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.take"
  ],
  	"core-js/actual/async-iterator/to-array": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.to-array"
  ],
  	"core-js/actual/atob": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.atob",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/actual/btoa": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.btoa",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/actual/clear-immediate": [
  	"web.immediate"
  ],
  	"core-js/actual/data-view": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.object.to-string",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16"
  ],
  	"core-js/actual/data-view/get-float16": [
  	"esnext.data-view.get-float16"
  ],
  	"core-js/actual/data-view/set-float16": [
  	"esnext.data-view.set-float16"
  ],
  	"core-js/actual/date": [
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string"
  ],
  	"core-js/actual/date/get-year": [
  	"es.date.get-year"
  ],
  	"core-js/actual/date/now": [
  	"es.date.now"
  ],
  	"core-js/actual/date/set-year": [
  	"es.date.set-year"
  ],
  	"core-js/actual/date/to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/actual/date/to-iso-string": [
  	"es.date.to-iso-string",
  	"es.date.to-json"
  ],
  	"core-js/actual/date/to-json": [
  	"es.date.to-json"
  ],
  	"core-js/actual/date/to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/actual/date/to-string": [
  	"es.date.to-string"
  ],
  	"core-js/actual/disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/actual/disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/actual/dom-collections": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/dom-collections/for-each": [
  	"web.dom-collections.for-each"
  ],
  	"core-js/actual/dom-collections/iterator": [
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/dom-exception": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/actual/dom-exception/constructor": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack"
  ],
  	"core-js/actual/dom-exception/to-string-tag": [
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/actual/error": [
  	"es.error.cause",
  	"es.error.to-string"
  ],
  	"core-js/actual/error/constructor": [
  	"es.error.cause"
  ],
  	"core-js/actual/error/to-string": [
  	"es.error.to-string"
  ],
  	"core-js/actual/escape": [
  	"es.escape"
  ],
  	"core-js/actual/function": [
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"esnext.function.metadata"
  ],
  	"core-js/actual/function/bind": [
  	"es.function.bind"
  ],
  	"core-js/actual/function/has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/actual/function/metadata": [
  	"esnext.function.metadata"
  ],
  	"core-js/actual/function/name": [
  	"es.function.name"
  ],
  	"core-js/actual/function/virtual": [
  	"es.function.bind"
  ],
  	"core-js/actual/function/virtual/bind": [
  	"es.function.bind"
  ],
  	"core-js/actual/get-iterator": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/get-iterator-method": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/global-this": [
  	"es.global-this"
  ],
  	"core-js/actual/instance/at": [
  	"es.array.at",
  	"es.string.at-alternative"
  ],
  	"core-js/actual/instance/bind": [
  	"es.function.bind"
  ],
  	"core-js/actual/instance/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/actual/instance/concat": [
  	"es.array.concat"
  ],
  	"core-js/actual/instance/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/actual/instance/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/actual/instance/entries": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/instance/every": [
  	"es.array.every"
  ],
  	"core-js/actual/instance/fill": [
  	"es.array.fill"
  ],
  	"core-js/actual/instance/filter": [
  	"es.array.filter"
  ],
  	"core-js/actual/instance/find": [
  	"es.array.find"
  ],
  	"core-js/actual/instance/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/actual/instance/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/actual/instance/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/actual/instance/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/actual/instance/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/actual/instance/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/actual/instance/for-each": [
  	"es.array.for-each",
  	"web.dom-collections.for-each"
  ],
  	"core-js/actual/instance/group": [
  	"esnext.array.group"
  ],
  	"core-js/actual/instance/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/actual/instance/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/actual/instance/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/actual/instance/includes": [
  	"es.array.includes",
  	"es.string.includes"
  ],
  	"core-js/actual/instance/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/actual/instance/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/actual/instance/keys": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/instance/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/actual/instance/map": [
  	"es.array.map"
  ],
  	"core-js/actual/instance/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/actual/instance/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/actual/instance/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/actual/instance/push": [
  	"es.array.push"
  ],
  	"core-js/actual/instance/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/actual/instance/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/actual/instance/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/actual/instance/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/actual/instance/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/actual/instance/slice": [
  	"es.array.slice"
  ],
  	"core-js/actual/instance/some": [
  	"es.array.some"
  ],
  	"core-js/actual/instance/sort": [
  	"es.array.sort"
  ],
  	"core-js/actual/instance/splice": [
  	"es.array.splice"
  ],
  	"core-js/actual/instance/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/actual/instance/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/actual/instance/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/actual/instance/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/actual/instance/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/actual/instance/trim": [
  	"es.string.trim"
  ],
  	"core-js/actual/instance/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/instance/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/instance/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/instance/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/instance/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/actual/instance/values": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/instance/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/actual/is-iterable": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/iterator/dispose": [
  	"esnext.iterator.dispose"
  ],
  	"core-js/actual/iterator/drop": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.drop"
  ],
  	"core-js/actual/iterator/every": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.every"
  ],
  	"core-js/actual/iterator/filter": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.filter"
  ],
  	"core-js/actual/iterator/find": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.find"
  ],
  	"core-js/actual/iterator/flat-map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.flat-map"
  ],
  	"core-js/actual/iterator/for-each": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.for-each"
  ],
  	"core-js/actual/iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/iterator/map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.map"
  ],
  	"core-js/actual/iterator/reduce": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.reduce"
  ],
  	"core-js/actual/iterator/some": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.some"
  ],
  	"core-js/actual/iterator/take": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.take"
  ],
  	"core-js/actual/iterator/to-array": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-array"
  ],
  	"core-js/actual/iterator/to-async": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-async"
  ],
  	"core-js/actual/json": [
  	"es.date.to-json",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.object.create",
  	"es.object.freeze",
  	"es.object.keys",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json"
  ],
  	"core-js/actual/json/is-raw-json": [
  	"esnext.json.is-raw-json"
  ],
  	"core-js/actual/json/parse": [
  	"es.object.keys",
  	"esnext.json.parse"
  ],
  	"core-js/actual/json/raw-json": [
  	"es.object.create",
  	"es.object.freeze",
  	"esnext.json.raw-json"
  ],
  	"core-js/actual/json/stringify": [
  	"es.date.to-json",
  	"es.json.stringify"
  ],
  	"core-js/actual/json/to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/actual/map": [
  	"es.array.iterator",
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.map.group-by",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/map/group-by": [
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"esnext.map.group-by"
  ],
  	"core-js/actual/math": [
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"esnext.math.f16round"
  ],
  	"core-js/actual/math/acosh": [
  	"es.math.acosh"
  ],
  	"core-js/actual/math/asinh": [
  	"es.math.asinh"
  ],
  	"core-js/actual/math/atanh": [
  	"es.math.atanh"
  ],
  	"core-js/actual/math/cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/actual/math/clz32": [
  	"es.math.clz32"
  ],
  	"core-js/actual/math/cosh": [
  	"es.math.cosh"
  ],
  	"core-js/actual/math/expm1": [
  	"es.math.expm1"
  ],
  	"core-js/actual/math/f16round": [
  	"esnext.math.f16round"
  ],
  	"core-js/actual/math/fround": [
  	"es.math.fround"
  ],
  	"core-js/actual/math/hypot": [
  	"es.math.hypot"
  ],
  	"core-js/actual/math/imul": [
  	"es.math.imul"
  ],
  	"core-js/actual/math/log10": [
  	"es.math.log10"
  ],
  	"core-js/actual/math/log1p": [
  	"es.math.log1p"
  ],
  	"core-js/actual/math/log2": [
  	"es.math.log2"
  ],
  	"core-js/actual/math/sign": [
  	"es.math.sign"
  ],
  	"core-js/actual/math/sinh": [
  	"es.math.sinh"
  ],
  	"core-js/actual/math/tanh": [
  	"es.math.tanh"
  ],
  	"core-js/actual/math/to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/actual/math/trunc": [
  	"es.math.trunc"
  ],
  	"core-js/actual/number": [
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/actual/number/constructor": [
  	"es.number.constructor"
  ],
  	"core-js/actual/number/epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/actual/number/is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/actual/number/is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/actual/number/is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/actual/number/is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/actual/number/max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/actual/number/min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/actual/number/parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/actual/number/parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/actual/number/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/actual/number/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/actual/number/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/actual/number/virtual": [
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/actual/number/virtual/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/actual/number/virtual/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/actual/number/virtual/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/actual/object": [
  	"es.symbol",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.reflect.to-string-tag",
  	"esnext.object.group-by",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/object/assign": [
  	"es.object.assign"
  ],
  	"core-js/actual/object/create": [
  	"es.object.create"
  ],
  	"core-js/actual/object/define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/actual/object/define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/actual/object/define-property": [
  	"es.object.define-property"
  ],
  	"core-js/actual/object/define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/actual/object/entries": [
  	"es.object.entries"
  ],
  	"core-js/actual/object/freeze": [
  	"es.object.freeze"
  ],
  	"core-js/actual/object/from-entries": [
  	"es.array.iterator",
  	"es.object.from-entries",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/object/get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/actual/object/get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/actual/object/get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/actual/object/get-own-property-symbols": [
  	"es.symbol"
  ],
  	"core-js/actual/object/get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/actual/object/group-by": [
  	"es.object.create",
  	"es.object.group-by",
  	"esnext.object.group-by"
  ],
  	"core-js/actual/object/has-own": [
  	"es.object.has-own"
  ],
  	"core-js/actual/object/is": [
  	"es.object.is"
  ],
  	"core-js/actual/object/is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/actual/object/is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/actual/object/is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/actual/object/keys": [
  	"es.object.keys"
  ],
  	"core-js/actual/object/lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/actual/object/lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/actual/object/prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/actual/object/proto": [
  	"es.object.proto"
  ],
  	"core-js/actual/object/seal": [
  	"es.object.seal"
  ],
  	"core-js/actual/object/set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/actual/object/to-string": [
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/actual/object/values": [
  	"es.object.values"
  ],
  	"core-js/actual/parse-float": [
  	"es.parse-float"
  ],
  	"core-js/actual/parse-int": [
  	"es.parse-int"
  ],
  	"core-js/actual/promise": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.string.iterator",
  	"esnext.promise.with-resolvers",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/promise/all-settled": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/promise/any": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.any",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/promise/finally": [
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.finally"
  ],
  	"core-js/actual/promise/with-resolvers": [
  	"es.promise",
  	"es.promise.with-resolvers",
  	"esnext.promise.with-resolvers"
  ],
  	"core-js/actual/queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/actual/reflect": [
  	"es.object.to-string",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/actual/reflect/apply": [
  	"es.reflect.apply"
  ],
  	"core-js/actual/reflect/construct": [
  	"es.reflect.construct"
  ],
  	"core-js/actual/reflect/define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/actual/reflect/delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/actual/reflect/get": [
  	"es.reflect.get"
  ],
  	"core-js/actual/reflect/get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/actual/reflect/get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/actual/reflect/has": [
  	"es.reflect.has"
  ],
  	"core-js/actual/reflect/is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/actual/reflect/own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/actual/reflect/prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/actual/reflect/set": [
  	"es.reflect.set"
  ],
  	"core-js/actual/reflect/set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/actual/reflect/to-string-tag": [
  	"es.reflect.to-string-tag"
  ],
  	"core-js/actual/regexp": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.string.match",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split"
  ],
  	"core-js/actual/regexp/constructor": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/actual/regexp/dot-all": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec"
  ],
  	"core-js/actual/regexp/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/actual/regexp/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/actual/regexp/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/actual/regexp/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/actual/regexp/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/actual/regexp/sticky": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/actual/regexp/test": [
  	"es.regexp.exec",
  	"es.regexp.test"
  ],
  	"core-js/actual/regexp/to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/actual/self": [
  	"web.self"
  ],
  	"core-js/actual/set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/set-immediate": [
  	"web.immediate"
  ],
  	"core-js/actual/set-interval": [
  	"web.timers"
  ],
  	"core-js/actual/set-timeout": [
  	"web.timers"
  ],
  	"core-js/actual/set/difference": [
  	"es.set",
  	"es.set.difference.v2",
  	"esnext.set.difference.v2"
  ],
  	"core-js/actual/set/intersection": [
  	"es.set",
  	"es.set.intersection.v2",
  	"esnext.set.intersection.v2"
  ],
  	"core-js/actual/set/is-disjoint-from": [
  	"es.set",
  	"es.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from.v2"
  ],
  	"core-js/actual/set/is-subset-of": [
  	"es.set",
  	"es.set.is-subset-of.v2",
  	"esnext.set.is-subset-of.v2"
  ],
  	"core-js/actual/set/is-superset-of": [
  	"es.set",
  	"es.set.is-superset-of.v2",
  	"esnext.set.is-superset-of.v2"
  ],
  	"core-js/actual/set/symmetric-difference": [
  	"es.set",
  	"es.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference.v2"
  ],
  	"core-js/actual/set/union": [
  	"es.set",
  	"es.set.union.v2",
  	"esnext.set.union.v2"
  ],
  	"core-js/actual/string": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"esnext.string.is-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/actual/string/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/actual/string/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/actual/string/big": [
  	"es.string.big"
  ],
  	"core-js/actual/string/blink": [
  	"es.string.blink"
  ],
  	"core-js/actual/string/bold": [
  	"es.string.bold"
  ],
  	"core-js/actual/string/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/actual/string/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/actual/string/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/actual/string/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/actual/string/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/actual/string/from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/actual/string/includes": [
  	"es.string.includes"
  ],
  	"core-js/actual/string/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/actual/string/italics": [
  	"es.string.italics"
  ],
  	"core-js/actual/string/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/actual/string/link": [
  	"es.string.link"
  ],
  	"core-js/actual/string/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/actual/string/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/actual/string/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/actual/string/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/actual/string/raw": [
  	"es.string.raw"
  ],
  	"core-js/actual/string/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/actual/string/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/actual/string/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/actual/string/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/actual/string/small": [
  	"es.string.small"
  ],
  	"core-js/actual/string/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/actual/string/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/actual/string/strike": [
  	"es.string.strike"
  ],
  	"core-js/actual/string/sub": [
  	"es.string.sub"
  ],
  	"core-js/actual/string/substr": [
  	"es.string.substr"
  ],
  	"core-js/actual/string/sup": [
  	"es.string.sup"
  ],
  	"core-js/actual/string/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/actual/string/trim": [
  	"es.string.trim"
  ],
  	"core-js/actual/string/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/string/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/string/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/string/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/string/virtual": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"esnext.string.is-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/actual/string/virtual/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/actual/string/virtual/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/actual/string/virtual/big": [
  	"es.string.big"
  ],
  	"core-js/actual/string/virtual/blink": [
  	"es.string.blink"
  ],
  	"core-js/actual/string/virtual/bold": [
  	"es.string.bold"
  ],
  	"core-js/actual/string/virtual/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/actual/string/virtual/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/actual/string/virtual/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/actual/string/virtual/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/actual/string/virtual/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/actual/string/virtual/includes": [
  	"es.string.includes"
  ],
  	"core-js/actual/string/virtual/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/actual/string/virtual/italics": [
  	"es.string.italics"
  ],
  	"core-js/actual/string/virtual/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/actual/string/virtual/link": [
  	"es.string.link"
  ],
  	"core-js/actual/string/virtual/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/actual/string/virtual/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/actual/string/virtual/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/actual/string/virtual/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/actual/string/virtual/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/actual/string/virtual/small": [
  	"es.string.small"
  ],
  	"core-js/actual/string/virtual/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/actual/string/virtual/strike": [
  	"es.string.strike"
  ],
  	"core-js/actual/string/virtual/sub": [
  	"es.string.sub"
  ],
  	"core-js/actual/string/virtual/substr": [
  	"es.string.substr"
  ],
  	"core-js/actual/string/virtual/sup": [
  	"es.string.sup"
  ],
  	"core-js/actual/string/virtual/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/actual/string/virtual/trim": [
  	"es.string.trim"
  ],
  	"core-js/actual/string/virtual/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/string/virtual/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/string/virtual/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/actual/string/virtual/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/actual/structured-clone": [
  	"es.error.to-string",
  	"es.array.iterator",
  	"es.map",
  	"es.object.keys",
  	"es.object.to-string",
  	"es.set",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.structured-clone"
  ],
  	"core-js/actual/suppressed-error": [
  ],
  	"core-js/actual/symbol": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag",
  	"esnext.function.metadata",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose",
  	"esnext.symbol.metadata",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/symbol/async-dispose": [
  	"esnext.symbol.async-dispose"
  ],
  	"core-js/actual/symbol/async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/actual/symbol/description": [
  	"es.symbol.description"
  ],
  	"core-js/actual/symbol/dispose": [
  	"esnext.symbol.dispose"
  ],
  	"core-js/actual/symbol/for": [
  	"es.symbol"
  ],
  	"core-js/actual/symbol/has-instance": [
  	"es.symbol.has-instance",
  	"es.function.has-instance"
  ],
  	"core-js/actual/symbol/is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable",
  	"es.array.concat"
  ],
  	"core-js/actual/symbol/iterator": [
  	"es.symbol.iterator",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/symbol/key-for": [
  	"es.symbol"
  ],
  	"core-js/actual/symbol/match": [
  	"es.symbol.match",
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/actual/symbol/match-all": [
  	"es.symbol.match-all",
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/actual/symbol/metadata": [
  	"esnext.function.metadata",
  	"esnext.symbol.metadata"
  ],
  	"core-js/actual/symbol/replace": [
  	"es.symbol.replace",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/actual/symbol/search": [
  	"es.symbol.search",
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/actual/symbol/species": [
  	"es.symbol.species"
  ],
  	"core-js/actual/symbol/split": [
  	"es.symbol.split",
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/actual/symbol/to-primitive": [
  	"es.symbol.to-primitive",
  	"es.date.to-primitive"
  ],
  	"core-js/actual/symbol/to-string-tag": [
  	"es.symbol.to-string-tag",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/actual/symbol/unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/actual/typed-array": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/at": [
  	"es.typed-array.at"
  ],
  	"core-js/actual/typed-array/copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/actual/typed-array/entries": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/actual/typed-array/every": [
  	"es.typed-array.every"
  ],
  	"core-js/actual/typed-array/fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/actual/typed-array/filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/actual/typed-array/find": [
  	"es.typed-array.find"
  ],
  	"core-js/actual/typed-array/find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/actual/typed-array/find-last": [
  	"es.typed-array.find-last",
  	"esnext.typed-array.find-last"
  ],
  	"core-js/actual/typed-array/find-last-index": [
  	"es.typed-array.find-last-index",
  	"esnext.typed-array.find-last-index"
  ],
  	"core-js/actual/typed-array/float32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/float64-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float64-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/actual/typed-array/from": [
  	"es.typed-array.from"
  ],
  	"core-js/actual/typed-array/from-base64": [
  	"esnext.uint8-array.from-base64"
  ],
  	"core-js/actual/typed-array/from-hex": [
  	"esnext.uint8-array.from-hex"
  ],
  	"core-js/actual/typed-array/includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/actual/typed-array/index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/actual/typed-array/int16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/int32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/int8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/iterator": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/actual/typed-array/join": [
  	"es.typed-array.join"
  ],
  	"core-js/actual/typed-array/keys": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/actual/typed-array/last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/actual/typed-array/map": [
  	"es.typed-array.map"
  ],
  	"core-js/actual/typed-array/methods": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/of": [
  	"es.typed-array.of"
  ],
  	"core-js/actual/typed-array/reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/actual/typed-array/reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/actual/typed-array/reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/actual/typed-array/set": [
  	"es.typed-array.set"
  ],
  	"core-js/actual/typed-array/slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/actual/typed-array/some": [
  	"es.typed-array.some"
  ],
  	"core-js/actual/typed-array/sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/actual/typed-array/subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/actual/typed-array/to-base64": [
  	"esnext.uint8-array.to-base64"
  ],
  	"core-js/actual/typed-array/to-hex": [
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/actual/typed-array/to-reversed": [
  	"es.typed-array.to-reversed",
  	"esnext.typed-array.to-reversed"
  ],
  	"core-js/actual/typed-array/to-sorted": [
  	"es.typed-array.sort",
  	"es.typed-array.to-sorted",
  	"esnext.typed-array.to-sorted"
  ],
  	"core-js/actual/typed-array/to-spliced": [
  	"esnext.typed-array.to-spliced"
  ],
  	"core-js/actual/typed-array/to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/actual/typed-array/uint16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/uint32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/uint8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/uint8-clamped-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/actual/typed-array/values": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/actual/typed-array/with": [
  	"es.typed-array.with",
  	"esnext.typed-array.with"
  ],
  	"core-js/actual/unescape": [
  	"es.unescape"
  ],
  	"core-js/actual/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/actual/url-search-params": [
  	"web.dom-collections.iterator",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/actual/url/can-parse": [
  	"web.url",
  	"web.url.can-parse"
  ],
  	"core-js/actual/url/parse": [
  	"web.url",
  	"web.url.parse"
  ],
  	"core-js/actual/url/to-json": [
  	"web.url.to-json"
  ],
  	"core-js/actual/weak-map": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-map",
  	"web.dom-collections.iterator"
  ],
  	"core-js/actual/weak-set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-set",
  	"web.dom-collections.iterator"
  ],
  	"core-js/es": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set"
  ],
  	"core-js/es/aggregate-error": [
  ],
  	"core-js/es/array": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/es/array-buffer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string"
  ],
  	"core-js/es/array-buffer/constructor": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string"
  ],
  	"core-js/es/array-buffer/detached": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached"
  ],
  	"core-js/es/array-buffer/is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/es/array-buffer/slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/es/array-buffer/transfer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer"
  ],
  	"core-js/es/array-buffer/transfer-to-fixed-length": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/es/array/at": [
  	"es.array.at"
  ],
  	"core-js/es/array/concat": [
  	"es.array.concat"
  ],
  	"core-js/es/array/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/es/array/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/every": [
  	"es.array.every"
  ],
  	"core-js/es/array/fill": [
  	"es.array.fill"
  ],
  	"core-js/es/array/filter": [
  	"es.array.filter"
  ],
  	"core-js/es/array/find": [
  	"es.array.find"
  ],
  	"core-js/es/array/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/es/array/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/es/array/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/es/array/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/es/array/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/es/array/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/es/array/from": [
  	"es.array.from",
  	"es.string.iterator"
  ],
  	"core-js/es/array/includes": [
  	"es.array.includes"
  ],
  	"core-js/es/array/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/es/array/is-array": [
  	"es.array.is-array"
  ],
  	"core-js/es/array/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/join": [
  	"es.array.join"
  ],
  	"core-js/es/array/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/es/array/map": [
  	"es.array.map"
  ],
  	"core-js/es/array/of": [
  	"es.array.of"
  ],
  	"core-js/es/array/push": [
  	"es.array.push"
  ],
  	"core-js/es/array/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/es/array/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/es/array/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/es/array/slice": [
  	"es.array.slice"
  ],
  	"core-js/es/array/some": [
  	"es.array.some"
  ],
  	"core-js/es/array/sort": [
  	"es.array.sort"
  ],
  	"core-js/es/array/splice": [
  	"es.array.splice"
  ],
  	"core-js/es/array/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/es/array/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/es/array/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/es/array/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/es/array/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual/at": [
  	"es.array.at"
  ],
  	"core-js/es/array/virtual/concat": [
  	"es.array.concat"
  ],
  	"core-js/es/array/virtual/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/es/array/virtual/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual/every": [
  	"es.array.every"
  ],
  	"core-js/es/array/virtual/fill": [
  	"es.array.fill"
  ],
  	"core-js/es/array/virtual/filter": [
  	"es.array.filter"
  ],
  	"core-js/es/array/virtual/find": [
  	"es.array.find"
  ],
  	"core-js/es/array/virtual/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/es/array/virtual/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/es/array/virtual/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/es/array/virtual/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/es/array/virtual/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/es/array/virtual/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/es/array/virtual/includes": [
  	"es.array.includes"
  ],
  	"core-js/es/array/virtual/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/es/array/virtual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual/join": [
  	"es.array.join"
  ],
  	"core-js/es/array/virtual/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/es/array/virtual/map": [
  	"es.array.map"
  ],
  	"core-js/es/array/virtual/push": [
  	"es.array.push"
  ],
  	"core-js/es/array/virtual/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/es/array/virtual/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/es/array/virtual/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/es/array/virtual/slice": [
  	"es.array.slice"
  ],
  	"core-js/es/array/virtual/some": [
  	"es.array.some"
  ],
  	"core-js/es/array/virtual/sort": [
  	"es.array.sort"
  ],
  	"core-js/es/array/virtual/splice": [
  	"es.array.splice"
  ],
  	"core-js/es/array/virtual/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/es/array/virtual/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/es/array/virtual/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/es/array/virtual/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/es/array/virtual/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/array/virtual/with": [
  	"es.array.with"
  ],
  	"core-js/es/array/with": [
  	"es.array.with"
  ],
  	"core-js/es/data-view": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.object.to-string"
  ],
  	"core-js/es/date": [
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string"
  ],
  	"core-js/es/date/get-year": [
  	"es.date.get-year"
  ],
  	"core-js/es/date/now": [
  	"es.date.now"
  ],
  	"core-js/es/date/set-year": [
  	"es.date.set-year"
  ],
  	"core-js/es/date/to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/es/date/to-iso-string": [
  	"es.date.to-iso-string",
  	"es.date.to-json"
  ],
  	"core-js/es/date/to-json": [
  	"es.date.to-json"
  ],
  	"core-js/es/date/to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/es/date/to-string": [
  	"es.date.to-string"
  ],
  	"core-js/es/error": [
  	"es.error.cause",
  	"es.error.to-string"
  ],
  	"core-js/es/error/constructor": [
  	"es.error.cause"
  ],
  	"core-js/es/error/to-string": [
  	"es.error.to-string"
  ],
  	"core-js/es/escape": [
  	"es.escape"
  ],
  	"core-js/es/function": [
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name"
  ],
  	"core-js/es/function/bind": [
  	"es.function.bind"
  ],
  	"core-js/es/function/has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/es/function/name": [
  	"es.function.name"
  ],
  	"core-js/es/function/virtual": [
  	"es.function.bind"
  ],
  	"core-js/es/function/virtual/bind": [
  	"es.function.bind"
  ],
  	"core-js/es/get-iterator": [
  	"es.array.iterator",
  	"es.string.iterator"
  ],
  	"core-js/es/get-iterator-method": [
  	"es.array.iterator",
  	"es.string.iterator"
  ],
  	"core-js/es/global-this": [
  	"es.global-this"
  ],
  	"core-js/es/instance/at": [
  	"es.array.at",
  	"es.string.at-alternative"
  ],
  	"core-js/es/instance/bind": [
  	"es.function.bind"
  ],
  	"core-js/es/instance/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/es/instance/concat": [
  	"es.array.concat"
  ],
  	"core-js/es/instance/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/es/instance/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/es/instance/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/instance/every": [
  	"es.array.every"
  ],
  	"core-js/es/instance/fill": [
  	"es.array.fill"
  ],
  	"core-js/es/instance/filter": [
  	"es.array.filter"
  ],
  	"core-js/es/instance/find": [
  	"es.array.find"
  ],
  	"core-js/es/instance/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/es/instance/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/es/instance/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/es/instance/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/es/instance/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/es/instance/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/es/instance/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/es/instance/includes": [
  	"es.array.includes",
  	"es.string.includes"
  ],
  	"core-js/es/instance/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/es/instance/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/es/instance/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/instance/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/es/instance/map": [
  	"es.array.map"
  ],
  	"core-js/es/instance/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/es/instance/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/es/instance/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/es/instance/push": [
  	"es.array.push"
  ],
  	"core-js/es/instance/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/es/instance/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/es/instance/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/es/instance/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/es/instance/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/es/instance/slice": [
  	"es.array.slice"
  ],
  	"core-js/es/instance/some": [
  	"es.array.some"
  ],
  	"core-js/es/instance/sort": [
  	"es.array.sort"
  ],
  	"core-js/es/instance/splice": [
  	"es.array.splice"
  ],
  	"core-js/es/instance/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/es/instance/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/es/instance/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/es/instance/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/es/instance/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/es/instance/trim": [
  	"es.string.trim"
  ],
  	"core-js/es/instance/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/es/instance/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/es/instance/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/es/instance/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/es/instance/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/es/instance/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/es/instance/with": [
  	"es.array.with"
  ],
  	"core-js/es/is-iterable": [
  	"es.array.iterator",
  	"es.string.iterator"
  ],
  	"core-js/es/json": [
  	"es.date.to-json",
  	"es.json.stringify",
  	"es.json.to-string-tag"
  ],
  	"core-js/es/json/stringify": [
  	"es.date.to-json",
  	"es.json.stringify"
  ],
  	"core-js/es/json/to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/es/map": [
  	"es.array.iterator",
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/es/map/group-by": [
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string"
  ],
  	"core-js/es/math": [
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc"
  ],
  	"core-js/es/math/acosh": [
  	"es.math.acosh"
  ],
  	"core-js/es/math/asinh": [
  	"es.math.asinh"
  ],
  	"core-js/es/math/atanh": [
  	"es.math.atanh"
  ],
  	"core-js/es/math/cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/es/math/clz32": [
  	"es.math.clz32"
  ],
  	"core-js/es/math/cosh": [
  	"es.math.cosh"
  ],
  	"core-js/es/math/expm1": [
  	"es.math.expm1"
  ],
  	"core-js/es/math/fround": [
  	"es.math.fround"
  ],
  	"core-js/es/math/hypot": [
  	"es.math.hypot"
  ],
  	"core-js/es/math/imul": [
  	"es.math.imul"
  ],
  	"core-js/es/math/log10": [
  	"es.math.log10"
  ],
  	"core-js/es/math/log1p": [
  	"es.math.log1p"
  ],
  	"core-js/es/math/log2": [
  	"es.math.log2"
  ],
  	"core-js/es/math/sign": [
  	"es.math.sign"
  ],
  	"core-js/es/math/sinh": [
  	"es.math.sinh"
  ],
  	"core-js/es/math/tanh": [
  	"es.math.tanh"
  ],
  	"core-js/es/math/to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/es/math/trunc": [
  	"es.math.trunc"
  ],
  	"core-js/es/number": [
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/es/number/constructor": [
  	"es.number.constructor"
  ],
  	"core-js/es/number/epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/es/number/is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/es/number/is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/es/number/is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/es/number/is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/es/number/max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/es/number/min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/es/number/parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/es/number/parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/es/number/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/es/number/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/es/number/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/es/number/virtual": [
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/es/number/virtual/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/es/number/virtual/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/es/number/virtual/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/es/object": [
  	"es.symbol",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/object/assign": [
  	"es.object.assign"
  ],
  	"core-js/es/object/create": [
  	"es.object.create"
  ],
  	"core-js/es/object/define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/es/object/define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/es/object/define-property": [
  	"es.object.define-property"
  ],
  	"core-js/es/object/define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/es/object/entries": [
  	"es.object.entries"
  ],
  	"core-js/es/object/freeze": [
  	"es.object.freeze"
  ],
  	"core-js/es/object/from-entries": [
  	"es.array.iterator",
  	"es.object.from-entries"
  ],
  	"core-js/es/object/get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/es/object/get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/es/object/get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/es/object/get-own-property-symbols": [
  	"es.symbol"
  ],
  	"core-js/es/object/get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/es/object/group-by": [
  	"es.object.create",
  	"es.object.group-by"
  ],
  	"core-js/es/object/has-own": [
  	"es.object.has-own"
  ],
  	"core-js/es/object/is": [
  	"es.object.is"
  ],
  	"core-js/es/object/is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/es/object/is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/es/object/is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/es/object/keys": [
  	"es.object.keys"
  ],
  	"core-js/es/object/lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/es/object/lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/es/object/prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/es/object/proto": [
  	"es.object.proto"
  ],
  	"core-js/es/object/seal": [
  	"es.object.seal"
  ],
  	"core-js/es/object/set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/es/object/to-string": [
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/object/values": [
  	"es.object.values"
  ],
  	"core-js/es/parse-float": [
  	"es.parse-float"
  ],
  	"core-js/es/parse-int": [
  	"es.parse-int"
  ],
  	"core-js/es/promise": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.string.iterator"
  ],
  	"core-js/es/promise/all-settled": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.string.iterator"
  ],
  	"core-js/es/promise/any": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.any",
  	"es.string.iterator"
  ],
  	"core-js/es/promise/finally": [
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.finally"
  ],
  	"core-js/es/promise/with-resolvers": [
  	"es.promise",
  	"es.promise.with-resolvers"
  ],
  	"core-js/es/reflect": [
  	"es.object.to-string",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/reflect/apply": [
  	"es.reflect.apply"
  ],
  	"core-js/es/reflect/construct": [
  	"es.reflect.construct"
  ],
  	"core-js/es/reflect/define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/es/reflect/delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/es/reflect/get": [
  	"es.reflect.get"
  ],
  	"core-js/es/reflect/get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/es/reflect/get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/es/reflect/has": [
  	"es.reflect.has"
  ],
  	"core-js/es/reflect/is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/es/reflect/own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/es/reflect/prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/es/reflect/set": [
  	"es.reflect.set"
  ],
  	"core-js/es/reflect/set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/es/reflect/to-string-tag": [
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/regexp": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.string.match",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split"
  ],
  	"core-js/es/regexp/constructor": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/es/regexp/dot-all": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec"
  ],
  	"core-js/es/regexp/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/es/regexp/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/es/regexp/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/es/regexp/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/es/regexp/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/es/regexp/sticky": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/es/regexp/test": [
  	"es.regexp.exec",
  	"es.regexp.test"
  ],
  	"core-js/es/regexp/to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/es/set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.iterator"
  ],
  	"core-js/es/set/difference": [
  	"es.set",
  	"es.set.difference.v2"
  ],
  	"core-js/es/set/intersection": [
  	"es.set",
  	"es.set.intersection.v2"
  ],
  	"core-js/es/set/is-disjoint-from": [
  	"es.set",
  	"es.set.is-disjoint-from.v2"
  ],
  	"core-js/es/set/is-subset-of": [
  	"es.set",
  	"es.set.is-subset-of.v2"
  ],
  	"core-js/es/set/is-superset-of": [
  	"es.set",
  	"es.set.is-superset-of.v2"
  ],
  	"core-js/es/set/symmetric-difference": [
  	"es.set",
  	"es.set.symmetric-difference.v2"
  ],
  	"core-js/es/set/union": [
  	"es.set",
  	"es.set.union.v2"
  ],
  	"core-js/es/string": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup"
  ],
  	"core-js/es/string/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/es/string/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/es/string/big": [
  	"es.string.big"
  ],
  	"core-js/es/string/blink": [
  	"es.string.blink"
  ],
  	"core-js/es/string/bold": [
  	"es.string.bold"
  ],
  	"core-js/es/string/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/es/string/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/es/string/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/es/string/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/es/string/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/es/string/from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/es/string/includes": [
  	"es.string.includes"
  ],
  	"core-js/es/string/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/es/string/italics": [
  	"es.string.italics"
  ],
  	"core-js/es/string/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/es/string/link": [
  	"es.string.link"
  ],
  	"core-js/es/string/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/es/string/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/es/string/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/es/string/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/es/string/raw": [
  	"es.string.raw"
  ],
  	"core-js/es/string/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/es/string/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/es/string/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/es/string/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/es/string/small": [
  	"es.string.small"
  ],
  	"core-js/es/string/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/es/string/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/es/string/strike": [
  	"es.string.strike"
  ],
  	"core-js/es/string/sub": [
  	"es.string.sub"
  ],
  	"core-js/es/string/substr": [
  	"es.string.substr"
  ],
  	"core-js/es/string/sup": [
  	"es.string.sup"
  ],
  	"core-js/es/string/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/es/string/trim": [
  	"es.string.trim"
  ],
  	"core-js/es/string/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/es/string/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/es/string/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/es/string/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/es/string/virtual": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup"
  ],
  	"core-js/es/string/virtual/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/es/string/virtual/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/es/string/virtual/big": [
  	"es.string.big"
  ],
  	"core-js/es/string/virtual/blink": [
  	"es.string.blink"
  ],
  	"core-js/es/string/virtual/bold": [
  	"es.string.bold"
  ],
  	"core-js/es/string/virtual/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/es/string/virtual/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/es/string/virtual/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/es/string/virtual/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/es/string/virtual/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/es/string/virtual/includes": [
  	"es.string.includes"
  ],
  	"core-js/es/string/virtual/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/es/string/virtual/italics": [
  	"es.string.italics"
  ],
  	"core-js/es/string/virtual/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/es/string/virtual/link": [
  	"es.string.link"
  ],
  	"core-js/es/string/virtual/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/es/string/virtual/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/es/string/virtual/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/es/string/virtual/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/es/string/virtual/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/es/string/virtual/small": [
  	"es.string.small"
  ],
  	"core-js/es/string/virtual/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/es/string/virtual/strike": [
  	"es.string.strike"
  ],
  	"core-js/es/string/virtual/sub": [
  	"es.string.sub"
  ],
  	"core-js/es/string/virtual/substr": [
  	"es.string.substr"
  ],
  	"core-js/es/string/virtual/sup": [
  	"es.string.sup"
  ],
  	"core-js/es/string/virtual/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/es/string/virtual/trim": [
  	"es.string.trim"
  ],
  	"core-js/es/string/virtual/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/es/string/virtual/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/es/string/virtual/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/es/string/virtual/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/es/symbol": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/symbol/async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/es/symbol/description": [
  	"es.symbol.description"
  ],
  	"core-js/es/symbol/for": [
  	"es.symbol"
  ],
  	"core-js/es/symbol/has-instance": [
  	"es.symbol.has-instance",
  	"es.function.has-instance"
  ],
  	"core-js/es/symbol/is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable",
  	"es.array.concat"
  ],
  	"core-js/es/symbol/iterator": [
  	"es.symbol.iterator",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/es/symbol/key-for": [
  	"es.symbol"
  ],
  	"core-js/es/symbol/match": [
  	"es.symbol.match",
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/es/symbol/match-all": [
  	"es.symbol.match-all",
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/es/symbol/replace": [
  	"es.symbol.replace",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/es/symbol/search": [
  	"es.symbol.search",
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/es/symbol/species": [
  	"es.symbol.species"
  ],
  	"core-js/es/symbol/split": [
  	"es.symbol.split",
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/es/symbol/to-primitive": [
  	"es.symbol.to-primitive",
  	"es.date.to-primitive"
  ],
  	"core-js/es/symbol/to-string-tag": [
  	"es.symbol.to-string-tag",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/es/symbol/unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/es/typed-array": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/at": [
  	"es.typed-array.at"
  ],
  	"core-js/es/typed-array/copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/es/typed-array/entries": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/es/typed-array/every": [
  	"es.typed-array.every"
  ],
  	"core-js/es/typed-array/fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/es/typed-array/filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/es/typed-array/find": [
  	"es.typed-array.find"
  ],
  	"core-js/es/typed-array/find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/es/typed-array/find-last": [
  	"es.typed-array.find-last"
  ],
  	"core-js/es/typed-array/find-last-index": [
  	"es.typed-array.find-last-index"
  ],
  	"core-js/es/typed-array/float32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/float64-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float64-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/es/typed-array/from": [
  	"es.typed-array.from"
  ],
  	"core-js/es/typed-array/includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/es/typed-array/index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/es/typed-array/int16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/int32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/int8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/iterator": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/es/typed-array/join": [
  	"es.typed-array.join"
  ],
  	"core-js/es/typed-array/keys": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/es/typed-array/last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/es/typed-array/map": [
  	"es.typed-array.map"
  ],
  	"core-js/es/typed-array/methods": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/of": [
  	"es.typed-array.of"
  ],
  	"core-js/es/typed-array/reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/es/typed-array/reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/es/typed-array/reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/es/typed-array/set": [
  	"es.typed-array.set"
  ],
  	"core-js/es/typed-array/slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/es/typed-array/some": [
  	"es.typed-array.some"
  ],
  	"core-js/es/typed-array/sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/es/typed-array/subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/es/typed-array/to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/es/typed-array/to-reversed": [
  	"es.typed-array.to-reversed"
  ],
  	"core-js/es/typed-array/to-sorted": [
  	"es.typed-array.sort",
  	"es.typed-array.to-sorted"
  ],
  	"core-js/es/typed-array/to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/es/typed-array/uint16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/uint32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/uint8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/uint8-clamped-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/es/typed-array/values": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/es/typed-array/with": [
  	"es.typed-array.with"
  ],
  	"core-js/es/unescape": [
  	"es.unescape"
  ],
  	"core-js/es/weak-map": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-map"
  ],
  	"core-js/es/weak-set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-set"
  ],
  	"core-js/features": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/features/aggregate-error": [
  ],
  	"core-js/features/array": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with"
  ],
  	"core-js/features/array-buffer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/features/array-buffer/constructor": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/features/array-buffer/detached": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"esnext.array-buffer.detached"
  ],
  	"core-js/features/array-buffer/is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/features/array-buffer/slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/features/array-buffer/transfer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer",
  	"esnext.array-buffer.transfer"
  ],
  	"core-js/features/array-buffer/transfer-to-fixed-length": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer-to-fixed-length",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/features/array/at": [
  	"es.array.at",
  	"esnext.array.at"
  ],
  	"core-js/features/array/concat": [
  	"es.array.concat"
  ],
  	"core-js/features/array/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/features/array/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/every": [
  	"es.array.every"
  ],
  	"core-js/features/array/fill": [
  	"es.array.fill"
  ],
  	"core-js/features/array/filter": [
  	"es.array.filter"
  ],
  	"core-js/features/array/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/features/array/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/features/array/find": [
  	"es.array.find"
  ],
  	"core-js/features/array/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/features/array/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/features/array/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/features/array/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/features/array/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/features/array/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/features/array/from": [
  	"es.array.from",
  	"es.string.iterator"
  ],
  	"core-js/features/array/from-async": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async"
  ],
  	"core-js/features/array/group": [
  	"esnext.array.group"
  ],
  	"core-js/features/array/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/features/array/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/features/array/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/features/array/includes": [
  	"es.array.includes"
  ],
  	"core-js/features/array/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/features/array/is-array": [
  	"es.array.is-array"
  ],
  	"core-js/features/array/is-template-object": [
  	"esnext.array.is-template-object"
  ],
  	"core-js/features/array/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/join": [
  	"es.array.join"
  ],
  	"core-js/features/array/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/last-index": [
  	"esnext.array.last-index"
  ],
  	"core-js/features/array/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/features/array/last-item": [
  	"esnext.array.last-item"
  ],
  	"core-js/features/array/map": [
  	"es.array.map"
  ],
  	"core-js/features/array/of": [
  	"es.array.of"
  ],
  	"core-js/features/array/push": [
  	"es.array.push"
  ],
  	"core-js/features/array/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/features/array/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/features/array/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/features/array/slice": [
  	"es.array.slice"
  ],
  	"core-js/features/array/some": [
  	"es.array.some"
  ],
  	"core-js/features/array/sort": [
  	"es.array.sort"
  ],
  	"core-js/features/array/splice": [
  	"es.array.splice"
  ],
  	"core-js/features/array/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/features/array/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/features/array/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/features/array/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/features/array/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/features/array/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/virtual": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with"
  ],
  	"core-js/features/array/virtual/at": [
  	"es.array.at",
  	"esnext.array.at"
  ],
  	"core-js/features/array/virtual/concat": [
  	"es.array.concat"
  ],
  	"core-js/features/array/virtual/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/features/array/virtual/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/virtual/every": [
  	"es.array.every"
  ],
  	"core-js/features/array/virtual/fill": [
  	"es.array.fill"
  ],
  	"core-js/features/array/virtual/filter": [
  	"es.array.filter"
  ],
  	"core-js/features/array/virtual/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/features/array/virtual/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/features/array/virtual/find": [
  	"es.array.find"
  ],
  	"core-js/features/array/virtual/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/features/array/virtual/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/features/array/virtual/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/features/array/virtual/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/features/array/virtual/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/features/array/virtual/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/features/array/virtual/group": [
  	"esnext.array.group"
  ],
  	"core-js/features/array/virtual/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/features/array/virtual/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/features/array/virtual/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/features/array/virtual/includes": [
  	"es.array.includes"
  ],
  	"core-js/features/array/virtual/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/features/array/virtual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/virtual/join": [
  	"es.array.join"
  ],
  	"core-js/features/array/virtual/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/virtual/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/features/array/virtual/map": [
  	"es.array.map"
  ],
  	"core-js/features/array/virtual/push": [
  	"es.array.push"
  ],
  	"core-js/features/array/virtual/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/features/array/virtual/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/features/array/virtual/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/features/array/virtual/slice": [
  	"es.array.slice"
  ],
  	"core-js/features/array/virtual/some": [
  	"es.array.some"
  ],
  	"core-js/features/array/virtual/sort": [
  	"es.array.sort"
  ],
  	"core-js/features/array/virtual/splice": [
  	"es.array.splice"
  ],
  	"core-js/features/array/virtual/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/features/array/virtual/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/features/array/virtual/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/features/array/virtual/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/features/array/virtual/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/features/array/virtual/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/features/array/virtual/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/features/array/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/features/async-disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/features/async-disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/features/async-iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/async-iterator/as-indexed-pairs": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs"
  ],
  	"core-js/features/async-iterator/async-dispose": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.async-dispose"
  ],
  	"core-js/features/async-iterator/drop": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop"
  ],
  	"core-js/features/async-iterator/every": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.every"
  ],
  	"core-js/features/async-iterator/filter": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.filter"
  ],
  	"core-js/features/async-iterator/find": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.find"
  ],
  	"core-js/features/async-iterator/flat-map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.flat-map"
  ],
  	"core-js/features/async-iterator/for-each": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.for-each"
  ],
  	"core-js/features/async-iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/async-iterator/indexed": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.indexed"
  ],
  	"core-js/features/async-iterator/map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.map"
  ],
  	"core-js/features/async-iterator/reduce": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.reduce"
  ],
  	"core-js/features/async-iterator/some": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.some"
  ],
  	"core-js/features/async-iterator/take": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.take"
  ],
  	"core-js/features/async-iterator/to-array": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.to-array"
  ],
  	"core-js/features/atob": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.atob",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/features/bigint": [
  	"es.object.to-string",
  	"esnext.bigint.range"
  ],
  	"core-js/features/bigint/range": [
  	"es.object.to-string",
  	"esnext.bigint.range"
  ],
  	"core-js/features/btoa": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.btoa",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/features/clear-immediate": [
  	"web.immediate"
  ],
  	"core-js/features/composite-key": [
  	"esnext.composite-key"
  ],
  	"core-js/features/composite-symbol": [
  	"es.symbol",
  	"esnext.composite-symbol"
  ],
  	"core-js/features/data-view": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.object.to-string",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/features/data-view/get-float16": [
  	"esnext.data-view.get-float16"
  ],
  	"core-js/features/data-view/get-uint8-clamped": [
  	"esnext.data-view.get-uint8-clamped"
  ],
  	"core-js/features/data-view/set-float16": [
  	"esnext.data-view.set-float16"
  ],
  	"core-js/features/data-view/set-uint8-clamped": [
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/features/date": [
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string"
  ],
  	"core-js/features/date/get-year": [
  	"es.date.get-year"
  ],
  	"core-js/features/date/now": [
  	"es.date.now"
  ],
  	"core-js/features/date/set-year": [
  	"es.date.set-year"
  ],
  	"core-js/features/date/to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/features/date/to-iso-string": [
  	"es.date.to-iso-string",
  	"es.date.to-json"
  ],
  	"core-js/features/date/to-json": [
  	"es.date.to-json"
  ],
  	"core-js/features/date/to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/features/date/to-string": [
  	"es.date.to-string"
  ],
  	"core-js/features/disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/features/disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/features/dom-collections": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/dom-collections/for-each": [
  	"web.dom-collections.for-each"
  ],
  	"core-js/features/dom-collections/iterator": [
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/dom-exception": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/features/dom-exception/constructor": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack"
  ],
  	"core-js/features/dom-exception/to-string-tag": [
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/features/error": [
  	"es.error.cause",
  	"es.error.to-string"
  ],
  	"core-js/features/error/constructor": [
  	"es.error.cause"
  ],
  	"core-js/features/error/to-string": [
  	"es.error.to-string"
  ],
  	"core-js/features/escape": [
  	"es.escape"
  ],
  	"core-js/features/function": [
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this"
  ],
  	"core-js/features/function/bind": [
  	"es.function.bind"
  ],
  	"core-js/features/function/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/features/function/has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/features/function/is-callable": [
  	"esnext.function.is-callable"
  ],
  	"core-js/features/function/is-constructor": [
  	"esnext.function.is-constructor"
  ],
  	"core-js/features/function/metadata": [
  	"esnext.function.metadata"
  ],
  	"core-js/features/function/name": [
  	"es.function.name"
  ],
  	"core-js/features/function/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/features/function/virtual": [
  	"es.function.bind",
  	"esnext.function.demethodize",
  	"esnext.function.un-this"
  ],
  	"core-js/features/function/virtual/bind": [
  	"es.function.bind"
  ],
  	"core-js/features/function/virtual/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/features/function/virtual/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/features/get-iterator": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/get-iterator-method": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/global-this": [
  	"es.global-this",
  	"esnext.global-this"
  ],
  	"core-js/features/instance/at": [
  	"es.array.at",
  	"es.string.at-alternative",
  	"esnext.array.at",
  	"esnext.string.at"
  ],
  	"core-js/features/instance/bind": [
  	"es.function.bind"
  ],
  	"core-js/features/instance/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/features/instance/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/features/instance/concat": [
  	"es.array.concat"
  ],
  	"core-js/features/instance/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/features/instance/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/features/instance/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/features/instance/entries": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/instance/every": [
  	"es.array.every"
  ],
  	"core-js/features/instance/fill": [
  	"es.array.fill"
  ],
  	"core-js/features/instance/filter": [
  	"es.array.filter"
  ],
  	"core-js/features/instance/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/features/instance/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/features/instance/find": [
  	"es.array.find"
  ],
  	"core-js/features/instance/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/features/instance/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/features/instance/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/features/instance/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/features/instance/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/features/instance/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/features/instance/for-each": [
  	"es.array.for-each",
  	"web.dom-collections.for-each"
  ],
  	"core-js/features/instance/group": [
  	"esnext.array.group"
  ],
  	"core-js/features/instance/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/features/instance/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/features/instance/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/features/instance/includes": [
  	"es.array.includes",
  	"es.string.includes"
  ],
  	"core-js/features/instance/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/features/instance/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/features/instance/keys": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/instance/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/features/instance/map": [
  	"es.array.map"
  ],
  	"core-js/features/instance/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/features/instance/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/features/instance/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/features/instance/push": [
  	"es.array.push"
  ],
  	"core-js/features/instance/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/features/instance/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/features/instance/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/features/instance/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/features/instance/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/features/instance/slice": [
  	"es.array.slice"
  ],
  	"core-js/features/instance/some": [
  	"es.array.some"
  ],
  	"core-js/features/instance/sort": [
  	"es.array.sort"
  ],
  	"core-js/features/instance/splice": [
  	"es.array.splice"
  ],
  	"core-js/features/instance/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/features/instance/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/features/instance/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/features/instance/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/features/instance/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/features/instance/trim": [
  	"es.string.trim"
  ],
  	"core-js/features/instance/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/features/instance/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/features/instance/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/features/instance/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/features/instance/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/features/instance/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/features/instance/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/features/instance/values": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/instance/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/features/is-iterable": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/iterator/as-indexed-pairs": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs"
  ],
  	"core-js/features/iterator/dispose": [
  	"esnext.iterator.dispose"
  ],
  	"core-js/features/iterator/drop": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.drop"
  ],
  	"core-js/features/iterator/every": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.every"
  ],
  	"core-js/features/iterator/filter": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.filter"
  ],
  	"core-js/features/iterator/find": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.find"
  ],
  	"core-js/features/iterator/flat-map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.flat-map"
  ],
  	"core-js/features/iterator/for-each": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.for-each"
  ],
  	"core-js/features/iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/iterator/indexed": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.indexed"
  ],
  	"core-js/features/iterator/map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.map"
  ],
  	"core-js/features/iterator/range": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.range"
  ],
  	"core-js/features/iterator/reduce": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.reduce"
  ],
  	"core-js/features/iterator/some": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.some"
  ],
  	"core-js/features/iterator/take": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.take"
  ],
  	"core-js/features/iterator/to-array": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-array"
  ],
  	"core-js/features/iterator/to-async": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-async"
  ],
  	"core-js/features/json": [
  	"es.date.to-json",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.object.create",
  	"es.object.freeze",
  	"es.object.keys",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json"
  ],
  	"core-js/features/json/is-raw-json": [
  	"esnext.json.is-raw-json"
  ],
  	"core-js/features/json/parse": [
  	"es.object.keys",
  	"esnext.json.parse"
  ],
  	"core-js/features/json/raw-json": [
  	"es.object.create",
  	"es.object.freeze",
  	"esnext.json.raw-json"
  ],
  	"core-js/features/json/stringify": [
  	"es.date.to-json",
  	"es.json.stringify"
  ],
  	"core-js/features/json/to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/features/map": [
  	"es.array.iterator",
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/map/delete-all": [
  	"es.map",
  	"esnext.map.delete-all"
  ],
  	"core-js/features/map/emplace": [
  	"es.map",
  	"esnext.map.emplace"
  ],
  	"core-js/features/map/every": [
  	"es.map",
  	"esnext.map.every"
  ],
  	"core-js/features/map/filter": [
  	"es.map",
  	"esnext.map.filter"
  ],
  	"core-js/features/map/find": [
  	"es.map",
  	"esnext.map.find"
  ],
  	"core-js/features/map/find-key": [
  	"es.map",
  	"esnext.map.find-key"
  ],
  	"core-js/features/map/from": [
  	"es.array.iterator",
  	"es.map",
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/map/group-by": [
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/features/map/includes": [
  	"es.map",
  	"esnext.map.includes"
  ],
  	"core-js/features/map/key-by": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/features/map/key-of": [
  	"es.map",
  	"esnext.map.key-of"
  ],
  	"core-js/features/map/map-keys": [
  	"es.map",
  	"esnext.map.map-keys"
  ],
  	"core-js/features/map/map-values": [
  	"es.map",
  	"esnext.map.map-values"
  ],
  	"core-js/features/map/merge": [
  	"es.map",
  	"esnext.map.merge"
  ],
  	"core-js/features/map/of": [
  	"es.array.iterator",
  	"es.map",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/features/map/reduce": [
  	"es.map",
  	"esnext.map.reduce"
  ],
  	"core-js/features/map/some": [
  	"es.map",
  	"esnext.map.some"
  ],
  	"core-js/features/map/update": [
  	"es.map",
  	"esnext.map.update"
  ],
  	"core-js/features/map/update-or-insert": [
  	"es.map",
  	"esnext.map.update-or-insert"
  ],
  	"core-js/features/map/upsert": [
  	"es.map",
  	"esnext.map.upsert"
  ],
  	"core-js/features/math": [
  	"es.array.iterator",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh"
  ],
  	"core-js/features/math/acosh": [
  	"es.math.acosh"
  ],
  	"core-js/features/math/asinh": [
  	"es.math.asinh"
  ],
  	"core-js/features/math/atanh": [
  	"es.math.atanh"
  ],
  	"core-js/features/math/cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/features/math/clamp": [
  	"esnext.math.clamp"
  ],
  	"core-js/features/math/clz32": [
  	"es.math.clz32"
  ],
  	"core-js/features/math/cosh": [
  	"es.math.cosh"
  ],
  	"core-js/features/math/deg-per-rad": [
  	"esnext.math.deg-per-rad"
  ],
  	"core-js/features/math/degrees": [
  	"esnext.math.degrees"
  ],
  	"core-js/features/math/expm1": [
  	"es.math.expm1"
  ],
  	"core-js/features/math/f16round": [
  	"esnext.math.f16round"
  ],
  	"core-js/features/math/fround": [
  	"es.math.fround"
  ],
  	"core-js/features/math/fscale": [
  	"esnext.math.fscale"
  ],
  	"core-js/features/math/hypot": [
  	"es.math.hypot"
  ],
  	"core-js/features/math/iaddh": [
  	"esnext.math.iaddh"
  ],
  	"core-js/features/math/imul": [
  	"es.math.imul"
  ],
  	"core-js/features/math/imulh": [
  	"esnext.math.imulh"
  ],
  	"core-js/features/math/isubh": [
  	"esnext.math.isubh"
  ],
  	"core-js/features/math/log10": [
  	"es.math.log10"
  ],
  	"core-js/features/math/log1p": [
  	"es.math.log1p"
  ],
  	"core-js/features/math/log2": [
  	"es.math.log2"
  ],
  	"core-js/features/math/rad-per-deg": [
  	"esnext.math.rad-per-deg"
  ],
  	"core-js/features/math/radians": [
  	"esnext.math.radians"
  ],
  	"core-js/features/math/scale": [
  	"esnext.math.scale"
  ],
  	"core-js/features/math/seeded-prng": [
  	"esnext.math.seeded-prng"
  ],
  	"core-js/features/math/sign": [
  	"es.math.sign"
  ],
  	"core-js/features/math/signbit": [
  	"esnext.math.signbit"
  ],
  	"core-js/features/math/sinh": [
  	"es.math.sinh"
  ],
  	"core-js/features/math/sum-precise": [
  	"es.array.iterator",
  	"esnext.math.sum-precise"
  ],
  	"core-js/features/math/tanh": [
  	"es.math.tanh"
  ],
  	"core-js/features/math/to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/features/math/trunc": [
  	"es.math.trunc"
  ],
  	"core-js/features/math/umulh": [
  	"esnext.math.umulh"
  ],
  	"core-js/features/number": [
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.to-string",
  	"esnext.number.from-string",
  	"esnext.number.range"
  ],
  	"core-js/features/number/constructor": [
  	"es.number.constructor"
  ],
  	"core-js/features/number/epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/features/number/from-string": [
  	"esnext.number.from-string"
  ],
  	"core-js/features/number/is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/features/number/is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/features/number/is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/features/number/is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/features/number/max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/features/number/min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/features/number/parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/features/number/parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/features/number/range": [
  	"es.object.to-string",
  	"esnext.number.range"
  ],
  	"core-js/features/number/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/features/number/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/features/number/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/features/number/virtual": [
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/features/number/virtual/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/features/number/virtual/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/features/number/virtual/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/features/object": [
  	"es.symbol",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.reflect.to-string-tag",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/object/assign": [
  	"es.object.assign"
  ],
  	"core-js/features/object/create": [
  	"es.object.create"
  ],
  	"core-js/features/object/define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/features/object/define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/features/object/define-property": [
  	"es.object.define-property"
  ],
  	"core-js/features/object/define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/features/object/entries": [
  	"es.object.entries"
  ],
  	"core-js/features/object/freeze": [
  	"es.object.freeze"
  ],
  	"core-js/features/object/from-entries": [
  	"es.array.iterator",
  	"es.object.from-entries",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/object/get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/features/object/get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/features/object/get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/features/object/get-own-property-symbols": [
  	"es.symbol"
  ],
  	"core-js/features/object/get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/features/object/group-by": [
  	"es.object.create",
  	"es.object.group-by",
  	"esnext.object.group-by"
  ],
  	"core-js/features/object/has-own": [
  	"es.object.has-own",
  	"esnext.object.has-own"
  ],
  	"core-js/features/object/is": [
  	"es.object.is"
  ],
  	"core-js/features/object/is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/features/object/is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/features/object/is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/features/object/iterate-entries": [
  	"esnext.object.iterate-entries"
  ],
  	"core-js/features/object/iterate-keys": [
  	"esnext.object.iterate-keys"
  ],
  	"core-js/features/object/iterate-values": [
  	"esnext.object.iterate-values"
  ],
  	"core-js/features/object/keys": [
  	"es.object.keys"
  ],
  	"core-js/features/object/lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/features/object/lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/features/object/prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/features/object/proto": [
  	"es.object.proto"
  ],
  	"core-js/features/object/seal": [
  	"es.object.seal"
  ],
  	"core-js/features/object/set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/features/object/to-string": [
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/features/object/values": [
  	"es.object.values"
  ],
  	"core-js/features/observable": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.observable",
  	"esnext.symbol.observable",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/parse-float": [
  	"es.parse-float"
  ],
  	"core-js/features/parse-int": [
  	"es.parse-int"
  ],
  	"core-js/features/promise": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.string.iterator",
  	"esnext.aggregate-error",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/promise/all-settled": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.string.iterator",
  	"esnext.promise.all-settled",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/promise/any": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.any",
  	"es.string.iterator",
  	"esnext.aggregate-error",
  	"esnext.promise.any",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/promise/finally": [
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.finally"
  ],
  	"core-js/features/promise/try": [
  	"es.promise",
  	"esnext.promise.try"
  ],
  	"core-js/features/promise/with-resolvers": [
  	"es.promise",
  	"es.promise.with-resolvers",
  	"esnext.promise.with-resolvers"
  ],
  	"core-js/features/queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/features/reflect": [
  	"es.object.to-string",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata"
  ],
  	"core-js/features/reflect/apply": [
  	"es.reflect.apply"
  ],
  	"core-js/features/reflect/construct": [
  	"es.reflect.construct"
  ],
  	"core-js/features/reflect/define-metadata": [
  	"esnext.reflect.define-metadata"
  ],
  	"core-js/features/reflect/define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/features/reflect/delete-metadata": [
  	"esnext.reflect.delete-metadata"
  ],
  	"core-js/features/reflect/delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/features/reflect/get": [
  	"es.reflect.get"
  ],
  	"core-js/features/reflect/get-metadata": [
  	"esnext.reflect.get-metadata"
  ],
  	"core-js/features/reflect/get-metadata-keys": [
  	"esnext.reflect.get-metadata-keys"
  ],
  	"core-js/features/reflect/get-own-metadata": [
  	"esnext.reflect.get-own-metadata"
  ],
  	"core-js/features/reflect/get-own-metadata-keys": [
  	"esnext.reflect.get-own-metadata-keys"
  ],
  	"core-js/features/reflect/get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/features/reflect/get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/features/reflect/has": [
  	"es.reflect.has"
  ],
  	"core-js/features/reflect/has-metadata": [
  	"esnext.reflect.has-metadata"
  ],
  	"core-js/features/reflect/has-own-metadata": [
  	"esnext.reflect.has-own-metadata"
  ],
  	"core-js/features/reflect/is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/features/reflect/metadata": [
  	"esnext.reflect.metadata"
  ],
  	"core-js/features/reflect/own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/features/reflect/prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/features/reflect/set": [
  	"es.reflect.set"
  ],
  	"core-js/features/reflect/set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/features/reflect/to-string-tag": [
  	"es.reflect.to-string-tag"
  ],
  	"core-js/features/regexp": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.string.match",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split",
  	"esnext.regexp.escape"
  ],
  	"core-js/features/regexp/constructor": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/features/regexp/dot-all": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec"
  ],
  	"core-js/features/regexp/escape": [
  	"esnext.regexp.escape"
  ],
  	"core-js/features/regexp/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/features/regexp/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/features/regexp/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/features/regexp/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/features/regexp/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/features/regexp/sticky": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/features/regexp/test": [
  	"es.regexp.exec",
  	"es.regexp.test"
  ],
  	"core-js/features/regexp/to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/features/self": [
  	"web.self"
  ],
  	"core-js/features/set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set-immediate": [
  	"web.immediate"
  ],
  	"core-js/features/set-interval": [
  	"web.timers"
  ],
  	"core-js/features/set-timeout": [
  	"web.timers"
  ],
  	"core-js/features/set/add-all": [
  	"es.set",
  	"esnext.set.add-all"
  ],
  	"core-js/features/set/delete-all": [
  	"es.set",
  	"esnext.set.delete-all"
  ],
  	"core-js/features/set/difference": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.difference.v2",
  	"es.string.iterator",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/every": [
  	"es.set",
  	"esnext.set.every"
  ],
  	"core-js/features/set/filter": [
  	"es.set",
  	"esnext.set.filter"
  ],
  	"core-js/features/set/find": [
  	"es.set",
  	"esnext.set.find"
  ],
  	"core-js/features/set/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.string.iterator",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/intersection": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.intersection.v2",
  	"es.string.iterator",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/is-disjoint-from": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-disjoint-from.v2",
  	"es.string.iterator",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/is-subset-of": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-subset-of.v2",
  	"es.string.iterator",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/is-superset-of": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-superset-of.v2",
  	"es.string.iterator",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/join": [
  	"es.set",
  	"esnext.set.join"
  ],
  	"core-js/features/set/map": [
  	"es.set",
  	"esnext.set.map"
  ],
  	"core-js/features/set/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2"
  ],
  	"core-js/features/set/reduce": [
  	"es.set",
  	"esnext.set.reduce"
  ],
  	"core-js/features/set/some": [
  	"es.set",
  	"esnext.set.some"
  ],
  	"core-js/features/set/symmetric-difference": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.symmetric-difference.v2",
  	"es.string.iterator",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/set/union": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/string": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.weak-map",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/features/string/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/features/string/at": [
  	"es.string.at-alternative",
  	"esnext.string.at"
  ],
  	"core-js/features/string/big": [
  	"es.string.big"
  ],
  	"core-js/features/string/blink": [
  	"es.string.blink"
  ],
  	"core-js/features/string/bold": [
  	"es.string.bold"
  ],
  	"core-js/features/string/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/features/string/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/features/string/cooked": [
  	"esnext.string.cooked"
  ],
  	"core-js/features/string/dedent": [
  	"es.string.from-code-point",
  	"es.weak-map",
  	"esnext.string.dedent"
  ],
  	"core-js/features/string/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/features/string/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/features/string/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/features/string/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/features/string/from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/features/string/includes": [
  	"es.string.includes"
  ],
  	"core-js/features/string/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/features/string/italics": [
  	"es.string.italics"
  ],
  	"core-js/features/string/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/features/string/link": [
  	"es.string.link"
  ],
  	"core-js/features/string/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/features/string/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/features/string/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/features/string/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/features/string/raw": [
  	"es.string.raw"
  ],
  	"core-js/features/string/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/features/string/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/features/string/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/features/string/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/features/string/small": [
  	"es.string.small"
  ],
  	"core-js/features/string/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/features/string/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/features/string/strike": [
  	"es.string.strike"
  ],
  	"core-js/features/string/sub": [
  	"es.string.sub"
  ],
  	"core-js/features/string/substr": [
  	"es.string.substr"
  ],
  	"core-js/features/string/sup": [
  	"es.string.sup"
  ],
  	"core-js/features/string/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/features/string/trim": [
  	"es.string.trim"
  ],
  	"core-js/features/string/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/features/string/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/features/string/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/features/string/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/features/string/virtual": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"esnext.string.at",
  	"esnext.string.code-points",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/features/string/virtual/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/features/string/virtual/at": [
  	"es.string.at-alternative",
  	"esnext.string.at"
  ],
  	"core-js/features/string/virtual/big": [
  	"es.string.big"
  ],
  	"core-js/features/string/virtual/blink": [
  	"es.string.blink"
  ],
  	"core-js/features/string/virtual/bold": [
  	"es.string.bold"
  ],
  	"core-js/features/string/virtual/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/features/string/virtual/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/features/string/virtual/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/features/string/virtual/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/features/string/virtual/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/features/string/virtual/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/features/string/virtual/includes": [
  	"es.string.includes"
  ],
  	"core-js/features/string/virtual/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/features/string/virtual/italics": [
  	"es.string.italics"
  ],
  	"core-js/features/string/virtual/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/features/string/virtual/link": [
  	"es.string.link"
  ],
  	"core-js/features/string/virtual/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/features/string/virtual/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/features/string/virtual/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/features/string/virtual/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/features/string/virtual/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/features/string/virtual/small": [
  	"es.string.small"
  ],
  	"core-js/features/string/virtual/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/features/string/virtual/strike": [
  	"es.string.strike"
  ],
  	"core-js/features/string/virtual/sub": [
  	"es.string.sub"
  ],
  	"core-js/features/string/virtual/substr": [
  	"es.string.substr"
  ],
  	"core-js/features/string/virtual/sup": [
  	"es.string.sup"
  ],
  	"core-js/features/string/virtual/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/features/string/virtual/trim": [
  	"es.string.trim"
  ],
  	"core-js/features/string/virtual/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/features/string/virtual/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/features/string/virtual/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/features/string/virtual/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/features/structured-clone": [
  	"es.error.to-string",
  	"es.array.iterator",
  	"es.map",
  	"es.object.keys",
  	"es.object.to-string",
  	"es.set",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.structured-clone"
  ],
  	"core-js/features/suppressed-error": [
  ],
  	"core-js/features/symbol": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag",
  	"esnext.function.metadata",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/symbol/async-dispose": [
  	"esnext.symbol.async-dispose"
  ],
  	"core-js/features/symbol/async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/features/symbol/custom-matcher": [
  	"esnext.symbol.custom-matcher"
  ],
  	"core-js/features/symbol/description": [
  	"es.symbol.description"
  ],
  	"core-js/features/symbol/dispose": [
  	"esnext.symbol.dispose"
  ],
  	"core-js/features/symbol/for": [
  	"es.symbol"
  ],
  	"core-js/features/symbol/has-instance": [
  	"es.symbol.has-instance",
  	"es.function.has-instance"
  ],
  	"core-js/features/symbol/is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable",
  	"es.array.concat"
  ],
  	"core-js/features/symbol/is-registered": [
  	"es.symbol",
  	"esnext.symbol.is-registered"
  ],
  	"core-js/features/symbol/is-registered-symbol": [
  	"es.symbol",
  	"esnext.symbol.is-registered-symbol"
  ],
  	"core-js/features/symbol/is-well-known": [
  	"es.symbol",
  	"esnext.symbol.is-well-known"
  ],
  	"core-js/features/symbol/is-well-known-symbol": [
  	"es.symbol",
  	"esnext.symbol.is-well-known-symbol"
  ],
  	"core-js/features/symbol/iterator": [
  	"es.symbol.iterator",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/symbol/key-for": [
  	"es.symbol"
  ],
  	"core-js/features/symbol/match": [
  	"es.symbol.match",
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/features/symbol/match-all": [
  	"es.symbol.match-all",
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/features/symbol/matcher": [
  	"esnext.symbol.matcher"
  ],
  	"core-js/features/symbol/metadata": [
  	"esnext.function.metadata",
  	"esnext.symbol.metadata"
  ],
  	"core-js/features/symbol/metadata-key": [
  	"esnext.symbol.metadata-key"
  ],
  	"core-js/features/symbol/observable": [
  	"esnext.symbol.observable"
  ],
  	"core-js/features/symbol/pattern-match": [
  	"esnext.symbol.pattern-match"
  ],
  	"core-js/features/symbol/replace": [
  	"es.symbol.replace",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/features/symbol/replace-all": [
  	"esnext.symbol.replace-all"
  ],
  	"core-js/features/symbol/search": [
  	"es.symbol.search",
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/features/symbol/species": [
  	"es.symbol.species"
  ],
  	"core-js/features/symbol/split": [
  	"es.symbol.split",
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/features/symbol/to-primitive": [
  	"es.symbol.to-primitive",
  	"es.date.to-primitive"
  ],
  	"core-js/features/symbol/to-string-tag": [
  	"es.symbol.to-string-tag",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/features/symbol/unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/features/typed-array": [
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/at": [
  	"es.typed-array.at",
  	"esnext.typed-array.at"
  ],
  	"core-js/features/typed-array/copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/features/typed-array/entries": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/features/typed-array/every": [
  	"es.typed-array.every"
  ],
  	"core-js/features/typed-array/fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/features/typed-array/filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/features/typed-array/filter-out": [
  	"esnext.typed-array.filter-out"
  ],
  	"core-js/features/typed-array/filter-reject": [
  	"esnext.typed-array.filter-reject"
  ],
  	"core-js/features/typed-array/find": [
  	"es.typed-array.find"
  ],
  	"core-js/features/typed-array/find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/features/typed-array/find-last": [
  	"es.typed-array.find-last",
  	"esnext.typed-array.find-last"
  ],
  	"core-js/features/typed-array/find-last-index": [
  	"es.typed-array.find-last-index",
  	"esnext.typed-array.find-last-index"
  ],
  	"core-js/features/typed-array/float32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/float64-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float64-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/features/typed-array/from": [
  	"es.typed-array.from"
  ],
  	"core-js/features/typed-array/from-async": [
  	"esnext.typed-array.from-async"
  ],
  	"core-js/features/typed-array/from-base64": [
  	"esnext.uint8-array.from-base64"
  ],
  	"core-js/features/typed-array/from-hex": [
  	"esnext.uint8-array.from-hex"
  ],
  	"core-js/features/typed-array/group-by": [
  	"esnext.typed-array.group-by"
  ],
  	"core-js/features/typed-array/includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/features/typed-array/index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/features/typed-array/int16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/int32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/int8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/iterator": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/features/typed-array/join": [
  	"es.typed-array.join"
  ],
  	"core-js/features/typed-array/keys": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/features/typed-array/last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/features/typed-array/map": [
  	"es.typed-array.map"
  ],
  	"core-js/features/typed-array/methods": [
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/of": [
  	"es.typed-array.of"
  ],
  	"core-js/features/typed-array/reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/features/typed-array/reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/features/typed-array/reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/features/typed-array/set": [
  	"es.typed-array.set"
  ],
  	"core-js/features/typed-array/slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/features/typed-array/some": [
  	"es.typed-array.some"
  ],
  	"core-js/features/typed-array/sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/features/typed-array/subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/features/typed-array/to-base64": [
  	"esnext.uint8-array.to-base64"
  ],
  	"core-js/features/typed-array/to-hex": [
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/features/typed-array/to-reversed": [
  	"es.typed-array.to-reversed",
  	"esnext.typed-array.to-reversed"
  ],
  	"core-js/features/typed-array/to-sorted": [
  	"es.typed-array.sort",
  	"es.typed-array.to-sorted",
  	"esnext.typed-array.to-sorted"
  ],
  	"core-js/features/typed-array/to-spliced": [
  	"esnext.typed-array.to-spliced"
  ],
  	"core-js/features/typed-array/to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/features/typed-array/uint16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/uint32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/uint8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/uint8-clamped-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/features/typed-array/unique-by": [
  	"es.map",
  	"esnext.typed-array.unique-by"
  ],
  	"core-js/features/typed-array/values": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/features/typed-array/with": [
  	"es.typed-array.with",
  	"esnext.typed-array.with"
  ],
  	"core-js/features/unescape": [
  	"es.unescape"
  ],
  	"core-js/features/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/features/url-search-params": [
  	"web.dom-collections.iterator",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/features/url/can-parse": [
  	"web.url",
  	"web.url.can-parse"
  ],
  	"core-js/features/url/parse": [
  	"web.url",
  	"web.url.parse"
  ],
  	"core-js/features/url/to-json": [
  	"web.url.to-json"
  ],
  	"core-js/features/weak-map": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/weak-map/delete-all": [
  	"es.weak-map",
  	"esnext.weak-map.delete-all"
  ],
  	"core-js/features/weak-map/emplace": [
  	"es.weak-map",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/features/weak-map/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.emplace",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/weak-map/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/features/weak-map/upsert": [
  	"es.weak-map",
  	"esnext.weak-map.upsert"
  ],
  	"core-js/features/weak-set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/weak-set/add-all": [
  	"es.weak-set",
  	"esnext.weak-set.add-all"
  ],
  	"core-js/features/weak-set/delete-all": [
  	"es.weak-set",
  	"esnext.weak-set.delete-all"
  ],
  	"core-js/features/weak-set/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"web.dom-collections.iterator"
  ],
  	"core-js/features/weak-set/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.of"
  ],
  	"core-js/full": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/full/aggregate-error": [
  ],
  	"core-js/full/array": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with"
  ],
  	"core-js/full/array-buffer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/full/array-buffer/constructor": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/full/array-buffer/detached": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"esnext.array-buffer.detached"
  ],
  	"core-js/full/array-buffer/is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/full/array-buffer/slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/full/array-buffer/transfer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer",
  	"esnext.array-buffer.transfer"
  ],
  	"core-js/full/array-buffer/transfer-to-fixed-length": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer-to-fixed-length",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/full/array/at": [
  	"es.array.at",
  	"esnext.array.at"
  ],
  	"core-js/full/array/concat": [
  	"es.array.concat"
  ],
  	"core-js/full/array/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/full/array/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/every": [
  	"es.array.every"
  ],
  	"core-js/full/array/fill": [
  	"es.array.fill"
  ],
  	"core-js/full/array/filter": [
  	"es.array.filter"
  ],
  	"core-js/full/array/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/full/array/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/full/array/find": [
  	"es.array.find"
  ],
  	"core-js/full/array/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/full/array/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/full/array/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/full/array/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/full/array/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/full/array/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/full/array/from": [
  	"es.array.from",
  	"es.string.iterator"
  ],
  	"core-js/full/array/from-async": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.array.from-async"
  ],
  	"core-js/full/array/group": [
  	"esnext.array.group"
  ],
  	"core-js/full/array/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/full/array/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/full/array/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/full/array/includes": [
  	"es.array.includes"
  ],
  	"core-js/full/array/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/full/array/is-array": [
  	"es.array.is-array"
  ],
  	"core-js/full/array/is-template-object": [
  	"esnext.array.is-template-object"
  ],
  	"core-js/full/array/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/join": [
  	"es.array.join"
  ],
  	"core-js/full/array/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/last-index": [
  	"esnext.array.last-index"
  ],
  	"core-js/full/array/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/full/array/last-item": [
  	"esnext.array.last-item"
  ],
  	"core-js/full/array/map": [
  	"es.array.map"
  ],
  	"core-js/full/array/of": [
  	"es.array.of"
  ],
  	"core-js/full/array/push": [
  	"es.array.push"
  ],
  	"core-js/full/array/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/full/array/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/full/array/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/full/array/slice": [
  	"es.array.slice"
  ],
  	"core-js/full/array/some": [
  	"es.array.some"
  ],
  	"core-js/full/array/sort": [
  	"es.array.sort"
  ],
  	"core-js/full/array/splice": [
  	"es.array.splice"
  ],
  	"core-js/full/array/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/full/array/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/full/array/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/full/array/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/full/array/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/full/array/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/virtual": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with"
  ],
  	"core-js/full/array/virtual/at": [
  	"es.array.at",
  	"esnext.array.at"
  ],
  	"core-js/full/array/virtual/concat": [
  	"es.array.concat"
  ],
  	"core-js/full/array/virtual/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/full/array/virtual/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/virtual/every": [
  	"es.array.every"
  ],
  	"core-js/full/array/virtual/fill": [
  	"es.array.fill"
  ],
  	"core-js/full/array/virtual/filter": [
  	"es.array.filter"
  ],
  	"core-js/full/array/virtual/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/full/array/virtual/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/full/array/virtual/find": [
  	"es.array.find"
  ],
  	"core-js/full/array/virtual/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/full/array/virtual/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/full/array/virtual/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/full/array/virtual/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/full/array/virtual/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/full/array/virtual/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/full/array/virtual/group": [
  	"esnext.array.group"
  ],
  	"core-js/full/array/virtual/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/full/array/virtual/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/full/array/virtual/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/full/array/virtual/includes": [
  	"es.array.includes"
  ],
  	"core-js/full/array/virtual/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/full/array/virtual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/virtual/join": [
  	"es.array.join"
  ],
  	"core-js/full/array/virtual/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/virtual/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/full/array/virtual/map": [
  	"es.array.map"
  ],
  	"core-js/full/array/virtual/push": [
  	"es.array.push"
  ],
  	"core-js/full/array/virtual/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/full/array/virtual/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/full/array/virtual/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/full/array/virtual/slice": [
  	"es.array.slice"
  ],
  	"core-js/full/array/virtual/some": [
  	"es.array.some"
  ],
  	"core-js/full/array/virtual/sort": [
  	"es.array.sort"
  ],
  	"core-js/full/array/virtual/splice": [
  	"es.array.splice"
  ],
  	"core-js/full/array/virtual/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/full/array/virtual/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/full/array/virtual/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/full/array/virtual/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/full/array/virtual/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/full/array/virtual/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/full/array/virtual/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/full/array/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/full/async-disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/full/async-disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"es.promise",
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.iterator.dispose"
  ],
  	"core-js/full/async-iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/async-iterator/as-indexed-pairs": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs"
  ],
  	"core-js/full/async-iterator/async-dispose": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.async-dispose"
  ],
  	"core-js/full/async-iterator/drop": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop"
  ],
  	"core-js/full/async-iterator/every": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.every"
  ],
  	"core-js/full/async-iterator/filter": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.filter"
  ],
  	"core-js/full/async-iterator/find": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.find"
  ],
  	"core-js/full/async-iterator/flat-map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.flat-map"
  ],
  	"core-js/full/async-iterator/for-each": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.for-each"
  ],
  	"core-js/full/async-iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/async-iterator/indexed": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.indexed"
  ],
  	"core-js/full/async-iterator/map": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.map"
  ],
  	"core-js/full/async-iterator/reduce": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.reduce"
  ],
  	"core-js/full/async-iterator/some": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.some"
  ],
  	"core-js/full/async-iterator/take": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.take"
  ],
  	"core-js/full/async-iterator/to-array": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.to-array"
  ],
  	"core-js/full/atob": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.atob",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/full/bigint": [
  	"es.object.to-string",
  	"esnext.bigint.range"
  ],
  	"core-js/full/bigint/range": [
  	"es.object.to-string",
  	"esnext.bigint.range"
  ],
  	"core-js/full/btoa": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.btoa",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/full/clear-immediate": [
  	"web.immediate"
  ],
  	"core-js/full/composite-key": [
  	"esnext.composite-key"
  ],
  	"core-js/full/composite-symbol": [
  	"es.symbol",
  	"esnext.composite-symbol"
  ],
  	"core-js/full/data-view": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.object.to-string",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/full/data-view/get-float16": [
  	"esnext.data-view.get-float16"
  ],
  	"core-js/full/data-view/get-uint8-clamped": [
  	"esnext.data-view.get-uint8-clamped"
  ],
  	"core-js/full/data-view/set-float16": [
  	"esnext.data-view.set-float16"
  ],
  	"core-js/full/data-view/set-uint8-clamped": [
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/full/date": [
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string"
  ],
  	"core-js/full/date/get-year": [
  	"es.date.get-year"
  ],
  	"core-js/full/date/now": [
  	"es.date.now"
  ],
  	"core-js/full/date/set-year": [
  	"es.date.set-year"
  ],
  	"core-js/full/date/to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/full/date/to-iso-string": [
  	"es.date.to-iso-string",
  	"es.date.to-json"
  ],
  	"core-js/full/date/to-json": [
  	"es.date.to-json"
  ],
  	"core-js/full/date/to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/full/date/to-string": [
  	"es.date.to-string"
  ],
  	"core-js/full/disposable-stack": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/full/disposable-stack/constructor": [
  	"es.error.cause",
  	"es.error.to-string",
  	"es.object.to-string",
  	"esnext.suppressed-error.constructor",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose"
  ],
  	"core-js/full/dom-collections": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/dom-collections/for-each": [
  	"web.dom-collections.for-each"
  ],
  	"core-js/full/dom-collections/iterator": [
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/dom-exception": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/full/dom-exception/constructor": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack"
  ],
  	"core-js/full/dom-exception/to-string-tag": [
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/full/error": [
  	"es.error.cause",
  	"es.error.to-string"
  ],
  	"core-js/full/error/constructor": [
  	"es.error.cause"
  ],
  	"core-js/full/error/to-string": [
  	"es.error.to-string"
  ],
  	"core-js/full/escape": [
  	"es.escape"
  ],
  	"core-js/full/function": [
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this"
  ],
  	"core-js/full/function/bind": [
  	"es.function.bind"
  ],
  	"core-js/full/function/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/full/function/has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/full/function/is-callable": [
  	"esnext.function.is-callable"
  ],
  	"core-js/full/function/is-constructor": [
  	"esnext.function.is-constructor"
  ],
  	"core-js/full/function/metadata": [
  	"esnext.function.metadata"
  ],
  	"core-js/full/function/name": [
  	"es.function.name"
  ],
  	"core-js/full/function/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/full/function/virtual": [
  	"es.function.bind",
  	"esnext.function.demethodize",
  	"esnext.function.un-this"
  ],
  	"core-js/full/function/virtual/bind": [
  	"es.function.bind"
  ],
  	"core-js/full/function/virtual/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/full/function/virtual/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/full/get-iterator": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/get-iterator-method": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/global-this": [
  	"es.global-this",
  	"esnext.global-this"
  ],
  	"core-js/full/instance/at": [
  	"es.array.at",
  	"es.string.at-alternative",
  	"esnext.array.at",
  	"esnext.string.at"
  ],
  	"core-js/full/instance/bind": [
  	"es.function.bind"
  ],
  	"core-js/full/instance/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/full/instance/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/full/instance/concat": [
  	"es.array.concat"
  ],
  	"core-js/full/instance/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/full/instance/demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/full/instance/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/full/instance/entries": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/instance/every": [
  	"es.array.every"
  ],
  	"core-js/full/instance/fill": [
  	"es.array.fill"
  ],
  	"core-js/full/instance/filter": [
  	"es.array.filter"
  ],
  	"core-js/full/instance/filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/full/instance/filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/full/instance/find": [
  	"es.array.find"
  ],
  	"core-js/full/instance/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/full/instance/find-last": [
  	"es.array.find-last",
  	"esnext.array.find-last"
  ],
  	"core-js/full/instance/find-last-index": [
  	"es.array.find-last-index",
  	"esnext.array.find-last-index"
  ],
  	"core-js/full/instance/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/full/instance/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/full/instance/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/full/instance/for-each": [
  	"es.array.for-each",
  	"web.dom-collections.for-each"
  ],
  	"core-js/full/instance/group": [
  	"esnext.array.group"
  ],
  	"core-js/full/instance/group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/full/instance/group-by-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/full/instance/group-to-map": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.array.group-to-map"
  ],
  	"core-js/full/instance/includes": [
  	"es.array.includes",
  	"es.string.includes"
  ],
  	"core-js/full/instance/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/full/instance/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/full/instance/keys": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/instance/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/full/instance/map": [
  	"es.array.map"
  ],
  	"core-js/full/instance/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/full/instance/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/full/instance/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/full/instance/push": [
  	"es.array.push"
  ],
  	"core-js/full/instance/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/full/instance/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/full/instance/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/full/instance/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/full/instance/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/full/instance/slice": [
  	"es.array.slice"
  ],
  	"core-js/full/instance/some": [
  	"es.array.some"
  ],
  	"core-js/full/instance/sort": [
  	"es.array.sort"
  ],
  	"core-js/full/instance/splice": [
  	"es.array.splice"
  ],
  	"core-js/full/instance/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/full/instance/to-reversed": [
  	"es.array.to-reversed",
  	"esnext.array.to-reversed"
  ],
  	"core-js/full/instance/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted",
  	"esnext.array.to-sorted"
  ],
  	"core-js/full/instance/to-spliced": [
  	"es.array.to-spliced",
  	"esnext.array.to-spliced"
  ],
  	"core-js/full/instance/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/full/instance/trim": [
  	"es.string.trim"
  ],
  	"core-js/full/instance/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/full/instance/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/full/instance/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/full/instance/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/full/instance/un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/full/instance/unique-by": [
  	"es.map",
  	"esnext.array.unique-by"
  ],
  	"core-js/full/instance/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/full/instance/values": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/instance/with": [
  	"es.array.with",
  	"esnext.array.with"
  ],
  	"core-js/full/is-iterable": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/iterator": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/iterator/as-indexed-pairs": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs"
  ],
  	"core-js/full/iterator/dispose": [
  	"esnext.iterator.dispose"
  ],
  	"core-js/full/iterator/drop": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.drop"
  ],
  	"core-js/full/iterator/every": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.every"
  ],
  	"core-js/full/iterator/filter": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.filter"
  ],
  	"core-js/full/iterator/find": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.find"
  ],
  	"core-js/full/iterator/flat-map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.flat-map"
  ],
  	"core-js/full/iterator/for-each": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.for-each"
  ],
  	"core-js/full/iterator/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/iterator/indexed": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.indexed"
  ],
  	"core-js/full/iterator/map": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.map"
  ],
  	"core-js/full/iterator/range": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.range"
  ],
  	"core-js/full/iterator/reduce": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.reduce"
  ],
  	"core-js/full/iterator/some": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.some"
  ],
  	"core-js/full/iterator/take": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.take"
  ],
  	"core-js/full/iterator/to-array": [
  	"es.object.to-string",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-array"
  ],
  	"core-js/full/iterator/to-async": [
  	"es.object.to-string",
  	"es.promise",
  	"esnext.iterator.constructor",
  	"esnext.iterator.to-async"
  ],
  	"core-js/full/json": [
  	"es.date.to-json",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.object.create",
  	"es.object.freeze",
  	"es.object.keys",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json"
  ],
  	"core-js/full/json/is-raw-json": [
  	"esnext.json.is-raw-json"
  ],
  	"core-js/full/json/parse": [
  	"es.object.keys",
  	"esnext.json.parse"
  ],
  	"core-js/full/json/raw-json": [
  	"es.object.create",
  	"es.object.freeze",
  	"esnext.json.raw-json"
  ],
  	"core-js/full/json/stringify": [
  	"es.date.to-json",
  	"es.json.stringify"
  ],
  	"core-js/full/json/to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/full/map": [
  	"es.array.iterator",
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/map/delete-all": [
  	"es.map",
  	"esnext.map.delete-all"
  ],
  	"core-js/full/map/emplace": [
  	"es.map",
  	"esnext.map.emplace"
  ],
  	"core-js/full/map/every": [
  	"es.map",
  	"esnext.map.every"
  ],
  	"core-js/full/map/filter": [
  	"es.map",
  	"esnext.map.filter"
  ],
  	"core-js/full/map/find": [
  	"es.map",
  	"esnext.map.find"
  ],
  	"core-js/full/map/find-key": [
  	"es.map",
  	"esnext.map.find-key"
  ],
  	"core-js/full/map/from": [
  	"es.array.iterator",
  	"es.map",
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/map/group-by": [
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/full/map/includes": [
  	"es.map",
  	"esnext.map.includes"
  ],
  	"core-js/full/map/key-by": [
  	"es.map",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/full/map/key-of": [
  	"es.map",
  	"esnext.map.key-of"
  ],
  	"core-js/full/map/map-keys": [
  	"es.map",
  	"esnext.map.map-keys"
  ],
  	"core-js/full/map/map-values": [
  	"es.map",
  	"esnext.map.map-values"
  ],
  	"core-js/full/map/merge": [
  	"es.map",
  	"esnext.map.merge"
  ],
  	"core-js/full/map/of": [
  	"es.array.iterator",
  	"es.map",
  	"es.object.to-string",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.includes",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update"
  ],
  	"core-js/full/map/reduce": [
  	"es.map",
  	"esnext.map.reduce"
  ],
  	"core-js/full/map/some": [
  	"es.map",
  	"esnext.map.some"
  ],
  	"core-js/full/map/update": [
  	"es.map",
  	"esnext.map.update"
  ],
  	"core-js/full/map/update-or-insert": [
  	"es.map",
  	"esnext.map.update-or-insert"
  ],
  	"core-js/full/map/upsert": [
  	"es.map",
  	"esnext.map.upsert"
  ],
  	"core-js/full/math": [
  	"es.array.iterator",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh"
  ],
  	"core-js/full/math/acosh": [
  	"es.math.acosh"
  ],
  	"core-js/full/math/asinh": [
  	"es.math.asinh"
  ],
  	"core-js/full/math/atanh": [
  	"es.math.atanh"
  ],
  	"core-js/full/math/cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/full/math/clamp": [
  	"esnext.math.clamp"
  ],
  	"core-js/full/math/clz32": [
  	"es.math.clz32"
  ],
  	"core-js/full/math/cosh": [
  	"es.math.cosh"
  ],
  	"core-js/full/math/deg-per-rad": [
  	"esnext.math.deg-per-rad"
  ],
  	"core-js/full/math/degrees": [
  	"esnext.math.degrees"
  ],
  	"core-js/full/math/expm1": [
  	"es.math.expm1"
  ],
  	"core-js/full/math/f16round": [
  	"esnext.math.f16round"
  ],
  	"core-js/full/math/fround": [
  	"es.math.fround"
  ],
  	"core-js/full/math/fscale": [
  	"esnext.math.fscale"
  ],
  	"core-js/full/math/hypot": [
  	"es.math.hypot"
  ],
  	"core-js/full/math/iaddh": [
  	"esnext.math.iaddh"
  ],
  	"core-js/full/math/imul": [
  	"es.math.imul"
  ],
  	"core-js/full/math/imulh": [
  	"esnext.math.imulh"
  ],
  	"core-js/full/math/isubh": [
  	"esnext.math.isubh"
  ],
  	"core-js/full/math/log10": [
  	"es.math.log10"
  ],
  	"core-js/full/math/log1p": [
  	"es.math.log1p"
  ],
  	"core-js/full/math/log2": [
  	"es.math.log2"
  ],
  	"core-js/full/math/rad-per-deg": [
  	"esnext.math.rad-per-deg"
  ],
  	"core-js/full/math/radians": [
  	"esnext.math.radians"
  ],
  	"core-js/full/math/scale": [
  	"esnext.math.scale"
  ],
  	"core-js/full/math/seeded-prng": [
  	"esnext.math.seeded-prng"
  ],
  	"core-js/full/math/sign": [
  	"es.math.sign"
  ],
  	"core-js/full/math/signbit": [
  	"esnext.math.signbit"
  ],
  	"core-js/full/math/sinh": [
  	"es.math.sinh"
  ],
  	"core-js/full/math/sum-precise": [
  	"es.array.iterator",
  	"esnext.math.sum-precise"
  ],
  	"core-js/full/math/tanh": [
  	"es.math.tanh"
  ],
  	"core-js/full/math/to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/full/math/trunc": [
  	"es.math.trunc"
  ],
  	"core-js/full/math/umulh": [
  	"esnext.math.umulh"
  ],
  	"core-js/full/number": [
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.to-string",
  	"esnext.number.from-string",
  	"esnext.number.range"
  ],
  	"core-js/full/number/constructor": [
  	"es.number.constructor"
  ],
  	"core-js/full/number/epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/full/number/from-string": [
  	"esnext.number.from-string"
  ],
  	"core-js/full/number/is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/full/number/is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/full/number/is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/full/number/is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/full/number/max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/full/number/min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/full/number/parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/full/number/parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/full/number/range": [
  	"es.object.to-string",
  	"esnext.number.range"
  ],
  	"core-js/full/number/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/full/number/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/full/number/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/full/number/virtual": [
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/full/number/virtual/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/full/number/virtual/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/full/number/virtual/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/full/object": [
  	"es.symbol",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.reflect.to-string-tag",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/object/assign": [
  	"es.object.assign"
  ],
  	"core-js/full/object/create": [
  	"es.object.create"
  ],
  	"core-js/full/object/define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/full/object/define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/full/object/define-property": [
  	"es.object.define-property"
  ],
  	"core-js/full/object/define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/full/object/entries": [
  	"es.object.entries"
  ],
  	"core-js/full/object/freeze": [
  	"es.object.freeze"
  ],
  	"core-js/full/object/from-entries": [
  	"es.array.iterator",
  	"es.object.from-entries",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/object/get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/full/object/get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/full/object/get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/full/object/get-own-property-symbols": [
  	"es.symbol"
  ],
  	"core-js/full/object/get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/full/object/group-by": [
  	"es.object.create",
  	"es.object.group-by",
  	"esnext.object.group-by"
  ],
  	"core-js/full/object/has-own": [
  	"es.object.has-own",
  	"esnext.object.has-own"
  ],
  	"core-js/full/object/is": [
  	"es.object.is"
  ],
  	"core-js/full/object/is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/full/object/is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/full/object/is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/full/object/iterate-entries": [
  	"esnext.object.iterate-entries"
  ],
  	"core-js/full/object/iterate-keys": [
  	"esnext.object.iterate-keys"
  ],
  	"core-js/full/object/iterate-values": [
  	"esnext.object.iterate-values"
  ],
  	"core-js/full/object/keys": [
  	"es.object.keys"
  ],
  	"core-js/full/object/lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/full/object/lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/full/object/prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/full/object/proto": [
  	"es.object.proto"
  ],
  	"core-js/full/object/seal": [
  	"es.object.seal"
  ],
  	"core-js/full/object/set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/full/object/to-string": [
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/full/object/values": [
  	"es.object.values"
  ],
  	"core-js/full/observable": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"esnext.observable",
  	"esnext.symbol.observable",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/parse-float": [
  	"es.parse-float"
  ],
  	"core-js/full/parse-int": [
  	"es.parse-int"
  ],
  	"core-js/full/promise": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.string.iterator",
  	"esnext.aggregate-error",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/promise/all-settled": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.string.iterator",
  	"esnext.promise.all-settled",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/promise/any": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.any",
  	"es.string.iterator",
  	"esnext.aggregate-error",
  	"esnext.promise.any",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/promise/finally": [
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.finally"
  ],
  	"core-js/full/promise/try": [
  	"es.promise",
  	"esnext.promise.try"
  ],
  	"core-js/full/promise/with-resolvers": [
  	"es.promise",
  	"es.promise.with-resolvers",
  	"esnext.promise.with-resolvers"
  ],
  	"core-js/full/queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/full/reflect": [
  	"es.object.to-string",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata"
  ],
  	"core-js/full/reflect/apply": [
  	"es.reflect.apply"
  ],
  	"core-js/full/reflect/construct": [
  	"es.reflect.construct"
  ],
  	"core-js/full/reflect/define-metadata": [
  	"esnext.reflect.define-metadata"
  ],
  	"core-js/full/reflect/define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/full/reflect/delete-metadata": [
  	"esnext.reflect.delete-metadata"
  ],
  	"core-js/full/reflect/delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/full/reflect/get": [
  	"es.reflect.get"
  ],
  	"core-js/full/reflect/get-metadata": [
  	"esnext.reflect.get-metadata"
  ],
  	"core-js/full/reflect/get-metadata-keys": [
  	"esnext.reflect.get-metadata-keys"
  ],
  	"core-js/full/reflect/get-own-metadata": [
  	"esnext.reflect.get-own-metadata"
  ],
  	"core-js/full/reflect/get-own-metadata-keys": [
  	"esnext.reflect.get-own-metadata-keys"
  ],
  	"core-js/full/reflect/get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/full/reflect/get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/full/reflect/has": [
  	"es.reflect.has"
  ],
  	"core-js/full/reflect/has-metadata": [
  	"esnext.reflect.has-metadata"
  ],
  	"core-js/full/reflect/has-own-metadata": [
  	"esnext.reflect.has-own-metadata"
  ],
  	"core-js/full/reflect/is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/full/reflect/metadata": [
  	"esnext.reflect.metadata"
  ],
  	"core-js/full/reflect/own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/full/reflect/prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/full/reflect/set": [
  	"es.reflect.set"
  ],
  	"core-js/full/reflect/set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/full/reflect/to-string-tag": [
  	"es.reflect.to-string-tag"
  ],
  	"core-js/full/regexp": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.string.match",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split",
  	"esnext.regexp.escape"
  ],
  	"core-js/full/regexp/constructor": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/full/regexp/dot-all": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec"
  ],
  	"core-js/full/regexp/escape": [
  	"esnext.regexp.escape"
  ],
  	"core-js/full/regexp/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/full/regexp/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/full/regexp/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/full/regexp/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/full/regexp/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/full/regexp/sticky": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/full/regexp/test": [
  	"es.regexp.exec",
  	"es.regexp.test"
  ],
  	"core-js/full/regexp/to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/full/self": [
  	"web.self"
  ],
  	"core-js/full/set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set-immediate": [
  	"web.immediate"
  ],
  	"core-js/full/set-interval": [
  	"web.timers"
  ],
  	"core-js/full/set-timeout": [
  	"web.timers"
  ],
  	"core-js/full/set/add-all": [
  	"es.set",
  	"esnext.set.add-all"
  ],
  	"core-js/full/set/delete-all": [
  	"es.set",
  	"esnext.set.delete-all"
  ],
  	"core-js/full/set/difference": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.difference.v2",
  	"es.string.iterator",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/every": [
  	"es.set",
  	"esnext.set.every"
  ],
  	"core-js/full/set/filter": [
  	"es.set",
  	"esnext.set.filter"
  ],
  	"core-js/full/set/find": [
  	"es.set",
  	"esnext.set.find"
  ],
  	"core-js/full/set/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.string.iterator",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/intersection": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.intersection.v2",
  	"es.string.iterator",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/is-disjoint-from": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-disjoint-from.v2",
  	"es.string.iterator",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/is-subset-of": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-subset-of.v2",
  	"es.string.iterator",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/is-superset-of": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.is-superset-of.v2",
  	"es.string.iterator",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/join": [
  	"es.set",
  	"esnext.set.join"
  ],
  	"core-js/full/set/map": [
  	"es.set",
  	"esnext.set.map"
  ],
  	"core-js/full/set/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2"
  ],
  	"core-js/full/set/reduce": [
  	"es.set",
  	"esnext.set.reduce"
  ],
  	"core-js/full/set/some": [
  	"es.set",
  	"esnext.set.some"
  ],
  	"core-js/full/set/symmetric-difference": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.symmetric-difference.v2",
  	"es.string.iterator",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/set/union": [
  	"es.array.iterator",
  	"es.set",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/string": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.weak-map",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/full/string/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/full/string/at": [
  	"es.string.at-alternative",
  	"esnext.string.at"
  ],
  	"core-js/full/string/big": [
  	"es.string.big"
  ],
  	"core-js/full/string/blink": [
  	"es.string.blink"
  ],
  	"core-js/full/string/bold": [
  	"es.string.bold"
  ],
  	"core-js/full/string/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/full/string/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/full/string/cooked": [
  	"esnext.string.cooked"
  ],
  	"core-js/full/string/dedent": [
  	"es.string.from-code-point",
  	"es.weak-map",
  	"esnext.string.dedent"
  ],
  	"core-js/full/string/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/full/string/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/full/string/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/full/string/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/full/string/from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/full/string/includes": [
  	"es.string.includes"
  ],
  	"core-js/full/string/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/full/string/italics": [
  	"es.string.italics"
  ],
  	"core-js/full/string/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/full/string/link": [
  	"es.string.link"
  ],
  	"core-js/full/string/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/full/string/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/full/string/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/full/string/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/full/string/raw": [
  	"es.string.raw"
  ],
  	"core-js/full/string/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/full/string/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/full/string/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/full/string/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/full/string/small": [
  	"es.string.small"
  ],
  	"core-js/full/string/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/full/string/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/full/string/strike": [
  	"es.string.strike"
  ],
  	"core-js/full/string/sub": [
  	"es.string.sub"
  ],
  	"core-js/full/string/substr": [
  	"es.string.substr"
  ],
  	"core-js/full/string/sup": [
  	"es.string.sup"
  ],
  	"core-js/full/string/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/full/string/trim": [
  	"es.string.trim"
  ],
  	"core-js/full/string/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/full/string/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/full/string/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/full/string/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/full/string/virtual": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"esnext.string.at",
  	"esnext.string.code-points",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/full/string/virtual/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/full/string/virtual/at": [
  	"es.string.at-alternative",
  	"esnext.string.at"
  ],
  	"core-js/full/string/virtual/big": [
  	"es.string.big"
  ],
  	"core-js/full/string/virtual/blink": [
  	"es.string.blink"
  ],
  	"core-js/full/string/virtual/bold": [
  	"es.string.bold"
  ],
  	"core-js/full/string/virtual/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/full/string/virtual/code-points": [
  	"es.object.to-string",
  	"esnext.string.code-points"
  ],
  	"core-js/full/string/virtual/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/full/string/virtual/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/full/string/virtual/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/full/string/virtual/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/full/string/virtual/includes": [
  	"es.string.includes"
  ],
  	"core-js/full/string/virtual/is-well-formed": [
  	"es.string.is-well-formed",
  	"esnext.string.is-well-formed"
  ],
  	"core-js/full/string/virtual/italics": [
  	"es.string.italics"
  ],
  	"core-js/full/string/virtual/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/full/string/virtual/link": [
  	"es.string.link"
  ],
  	"core-js/full/string/virtual/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all",
  	"esnext.string.match-all"
  ],
  	"core-js/full/string/virtual/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/full/string/virtual/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/full/string/virtual/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/full/string/virtual/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all",
  	"esnext.string.replace-all"
  ],
  	"core-js/full/string/virtual/small": [
  	"es.string.small"
  ],
  	"core-js/full/string/virtual/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/full/string/virtual/strike": [
  	"es.string.strike"
  ],
  	"core-js/full/string/virtual/sub": [
  	"es.string.sub"
  ],
  	"core-js/full/string/virtual/substr": [
  	"es.string.substr"
  ],
  	"core-js/full/string/virtual/sup": [
  	"es.string.sup"
  ],
  	"core-js/full/string/virtual/to-well-formed": [
  	"es.string.to-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/full/string/virtual/trim": [
  	"es.string.trim"
  ],
  	"core-js/full/string/virtual/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/full/string/virtual/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/full/string/virtual/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/full/string/virtual/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/full/structured-clone": [
  	"es.error.to-string",
  	"es.array.iterator",
  	"es.map",
  	"es.object.keys",
  	"es.object.to-string",
  	"es.set",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.structured-clone"
  ],
  	"core-js/full/suppressed-error": [
  ],
  	"core-js/full/symbol": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag",
  	"esnext.function.metadata",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/symbol/async-dispose": [
  	"esnext.symbol.async-dispose"
  ],
  	"core-js/full/symbol/async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/full/symbol/custom-matcher": [
  	"esnext.symbol.custom-matcher"
  ],
  	"core-js/full/symbol/description": [
  	"es.symbol.description"
  ],
  	"core-js/full/symbol/dispose": [
  	"esnext.symbol.dispose"
  ],
  	"core-js/full/symbol/for": [
  	"es.symbol"
  ],
  	"core-js/full/symbol/has-instance": [
  	"es.symbol.has-instance",
  	"es.function.has-instance"
  ],
  	"core-js/full/symbol/is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable",
  	"es.array.concat"
  ],
  	"core-js/full/symbol/is-registered": [
  	"es.symbol",
  	"esnext.symbol.is-registered"
  ],
  	"core-js/full/symbol/is-registered-symbol": [
  	"es.symbol",
  	"esnext.symbol.is-registered-symbol"
  ],
  	"core-js/full/symbol/is-well-known": [
  	"es.symbol",
  	"esnext.symbol.is-well-known"
  ],
  	"core-js/full/symbol/is-well-known-symbol": [
  	"es.symbol",
  	"esnext.symbol.is-well-known-symbol"
  ],
  	"core-js/full/symbol/iterator": [
  	"es.symbol.iterator",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/symbol/key-for": [
  	"es.symbol"
  ],
  	"core-js/full/symbol/match": [
  	"es.symbol.match",
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/full/symbol/match-all": [
  	"es.symbol.match-all",
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/full/symbol/matcher": [
  	"esnext.symbol.matcher"
  ],
  	"core-js/full/symbol/metadata": [
  	"esnext.function.metadata",
  	"esnext.symbol.metadata"
  ],
  	"core-js/full/symbol/metadata-key": [
  	"esnext.symbol.metadata-key"
  ],
  	"core-js/full/symbol/observable": [
  	"esnext.symbol.observable"
  ],
  	"core-js/full/symbol/pattern-match": [
  	"esnext.symbol.pattern-match"
  ],
  	"core-js/full/symbol/replace": [
  	"es.symbol.replace",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/full/symbol/replace-all": [
  	"esnext.symbol.replace-all"
  ],
  	"core-js/full/symbol/search": [
  	"es.symbol.search",
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/full/symbol/species": [
  	"es.symbol.species"
  ],
  	"core-js/full/symbol/split": [
  	"es.symbol.split",
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/full/symbol/to-primitive": [
  	"es.symbol.to-primitive",
  	"es.date.to-primitive"
  ],
  	"core-js/full/symbol/to-string-tag": [
  	"es.symbol.to-string-tag",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/full/symbol/unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/full/typed-array": [
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/at": [
  	"es.typed-array.at",
  	"esnext.typed-array.at"
  ],
  	"core-js/full/typed-array/copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/full/typed-array/entries": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/full/typed-array/every": [
  	"es.typed-array.every"
  ],
  	"core-js/full/typed-array/fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/full/typed-array/filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/full/typed-array/filter-out": [
  	"esnext.typed-array.filter-out"
  ],
  	"core-js/full/typed-array/filter-reject": [
  	"esnext.typed-array.filter-reject"
  ],
  	"core-js/full/typed-array/find": [
  	"es.typed-array.find"
  ],
  	"core-js/full/typed-array/find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/full/typed-array/find-last": [
  	"es.typed-array.find-last",
  	"esnext.typed-array.find-last"
  ],
  	"core-js/full/typed-array/find-last-index": [
  	"es.typed-array.find-last-index",
  	"esnext.typed-array.find-last-index"
  ],
  	"core-js/full/typed-array/float32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/float64-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.float64-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/full/typed-array/from": [
  	"es.typed-array.from"
  ],
  	"core-js/full/typed-array/from-async": [
  	"esnext.typed-array.from-async"
  ],
  	"core-js/full/typed-array/from-base64": [
  	"esnext.uint8-array.from-base64"
  ],
  	"core-js/full/typed-array/from-hex": [
  	"esnext.uint8-array.from-hex"
  ],
  	"core-js/full/typed-array/group-by": [
  	"esnext.typed-array.group-by"
  ],
  	"core-js/full/typed-array/includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/full/typed-array/index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/full/typed-array/int16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/int32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/int8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.int8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/iterator": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/full/typed-array/join": [
  	"es.typed-array.join"
  ],
  	"core-js/full/typed-array/keys": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/full/typed-array/last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/full/typed-array/map": [
  	"es.typed-array.map"
  ],
  	"core-js/full/typed-array/methods": [
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/of": [
  	"es.typed-array.of"
  ],
  	"core-js/full/typed-array/reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/full/typed-array/reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/full/typed-array/reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/full/typed-array/set": [
  	"es.typed-array.set"
  ],
  	"core-js/full/typed-array/slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/full/typed-array/some": [
  	"es.typed-array.some"
  ],
  	"core-js/full/typed-array/sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/full/typed-array/subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/full/typed-array/to-base64": [
  	"esnext.uint8-array.to-base64"
  ],
  	"core-js/full/typed-array/to-hex": [
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/full/typed-array/to-reversed": [
  	"es.typed-array.to-reversed",
  	"esnext.typed-array.to-reversed"
  ],
  	"core-js/full/typed-array/to-sorted": [
  	"es.typed-array.sort",
  	"es.typed-array.to-sorted",
  	"esnext.typed-array.to-sorted"
  ],
  	"core-js/full/typed-array/to-spliced": [
  	"esnext.typed-array.to-spliced"
  ],
  	"core-js/full/typed-array/to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/full/typed-array/uint16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/uint32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/uint8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/uint8-clamped-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.map",
  	"es.object.to-string",
  	"es.promise",
  	"es.string.iterator",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/full/typed-array/unique-by": [
  	"es.map",
  	"esnext.typed-array.unique-by"
  ],
  	"core-js/full/typed-array/values": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/full/typed-array/with": [
  	"es.typed-array.with",
  	"esnext.typed-array.with"
  ],
  	"core-js/full/unescape": [
  	"es.unescape"
  ],
  	"core-js/full/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/full/url-search-params": [
  	"web.dom-collections.iterator",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/full/url/can-parse": [
  	"web.url",
  	"web.url.can-parse"
  ],
  	"core-js/full/url/parse": [
  	"web.url",
  	"web.url.parse"
  ],
  	"core-js/full/url/to-json": [
  	"web.url.to-json"
  ],
  	"core-js/full/weak-map": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/weak-map/delete-all": [
  	"es.weak-map",
  	"esnext.weak-map.delete-all"
  ],
  	"core-js/full/weak-map/emplace": [
  	"es.weak-map",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/full/weak-map/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.emplace",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/weak-map/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-map",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/full/weak-map/upsert": [
  	"es.weak-map",
  	"esnext.weak-map.upsert"
  ],
  	"core-js/full/weak-set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/weak-set/add-all": [
  	"es.weak-set",
  	"esnext.weak-set.add-all"
  ],
  	"core-js/full/weak-set/delete-all": [
  	"es.weak-set",
  	"esnext.weak-set.delete-all"
  ],
  	"core-js/full/weak-set/from": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"web.dom-collections.iterator"
  ],
  	"core-js/full/weak-set/of": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-set",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.of"
  ],
  	"core-js/modules/es.aggregate-error": [
  	"es.aggregate-error"
  ],
  	"core-js/modules/es.aggregate-error.cause": [
  	"es.aggregate-error.cause"
  ],
  	"core-js/modules/es.aggregate-error.constructor": [
  	"es.aggregate-error.constructor"
  ],
  	"core-js/modules/es.array-buffer.constructor": [
  	"es.array-buffer.constructor"
  ],
  	"core-js/modules/es.array-buffer.detached": [
  	"es.array-buffer.detached"
  ],
  	"core-js/modules/es.array-buffer.is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/modules/es.array-buffer.slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/modules/es.array-buffer.transfer": [
  	"es.array-buffer.transfer"
  ],
  	"core-js/modules/es.array-buffer.transfer-to-fixed-length": [
  	"es.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/modules/es.array.at": [
  	"es.array.at"
  ],
  	"core-js/modules/es.array.concat": [
  	"es.array.concat"
  ],
  	"core-js/modules/es.array.copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/modules/es.array.every": [
  	"es.array.every"
  ],
  	"core-js/modules/es.array.fill": [
  	"es.array.fill"
  ],
  	"core-js/modules/es.array.filter": [
  	"es.array.filter"
  ],
  	"core-js/modules/es.array.find": [
  	"es.array.find"
  ],
  	"core-js/modules/es.array.find-index": [
  	"es.array.find-index"
  ],
  	"core-js/modules/es.array.find-last": [
  	"es.array.find-last"
  ],
  	"core-js/modules/es.array.find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/modules/es.array.flat": [
  	"es.array.flat"
  ],
  	"core-js/modules/es.array.flat-map": [
  	"es.array.flat-map"
  ],
  	"core-js/modules/es.array.for-each": [
  	"es.array.for-each"
  ],
  	"core-js/modules/es.array.from": [
  	"es.array.from"
  ],
  	"core-js/modules/es.array.includes": [
  	"es.array.includes"
  ],
  	"core-js/modules/es.array.index-of": [
  	"es.array.index-of"
  ],
  	"core-js/modules/es.array.is-array": [
  	"es.array.is-array"
  ],
  	"core-js/modules/es.array.iterator": [
  	"es.array.iterator"
  ],
  	"core-js/modules/es.array.join": [
  	"es.array.join"
  ],
  	"core-js/modules/es.array.last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/modules/es.array.map": [
  	"es.array.map"
  ],
  	"core-js/modules/es.array.of": [
  	"es.array.of"
  ],
  	"core-js/modules/es.array.push": [
  	"es.array.push"
  ],
  	"core-js/modules/es.array.reduce": [
  	"es.array.reduce"
  ],
  	"core-js/modules/es.array.reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/modules/es.array.reverse": [
  	"es.array.reverse"
  ],
  	"core-js/modules/es.array.slice": [
  	"es.array.slice"
  ],
  	"core-js/modules/es.array.some": [
  	"es.array.some"
  ],
  	"core-js/modules/es.array.sort": [
  	"es.array.sort"
  ],
  	"core-js/modules/es.array.species": [
  	"es.array.species"
  ],
  	"core-js/modules/es.array.splice": [
  	"es.array.splice"
  ],
  	"core-js/modules/es.array.to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/modules/es.array.to-sorted": [
  	"es.array.to-sorted"
  ],
  	"core-js/modules/es.array.to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/modules/es.array.unscopables.flat": [
  	"es.array.unscopables.flat"
  ],
  	"core-js/modules/es.array.unscopables.flat-map": [
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/modules/es.array.unshift": [
  	"es.array.unshift"
  ],
  	"core-js/modules/es.array.with": [
  	"es.array.with"
  ],
  	"core-js/modules/es.data-view": [
  	"es.data-view"
  ],
  	"core-js/modules/es.data-view.constructor": [
  	"es.data-view.constructor"
  ],
  	"core-js/modules/es.date.get-year": [
  	"es.date.get-year"
  ],
  	"core-js/modules/es.date.now": [
  	"es.date.now"
  ],
  	"core-js/modules/es.date.set-year": [
  	"es.date.set-year"
  ],
  	"core-js/modules/es.date.to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/modules/es.date.to-iso-string": [
  	"es.date.to-iso-string"
  ],
  	"core-js/modules/es.date.to-json": [
  	"es.date.to-json"
  ],
  	"core-js/modules/es.date.to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/modules/es.date.to-string": [
  	"es.date.to-string"
  ],
  	"core-js/modules/es.error.cause": [
  	"es.error.cause"
  ],
  	"core-js/modules/es.error.to-string": [
  	"es.error.to-string"
  ],
  	"core-js/modules/es.escape": [
  	"es.escape"
  ],
  	"core-js/modules/es.function.bind": [
  	"es.function.bind"
  ],
  	"core-js/modules/es.function.has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/modules/es.function.name": [
  	"es.function.name"
  ],
  	"core-js/modules/es.global-this": [
  	"es.global-this"
  ],
  	"core-js/modules/es.json.stringify": [
  	"es.json.stringify"
  ],
  	"core-js/modules/es.json.to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/modules/es.map": [
  	"es.map"
  ],
  	"core-js/modules/es.map.constructor": [
  	"es.map.constructor"
  ],
  	"core-js/modules/es.map.group-by": [
  	"es.map.group-by"
  ],
  	"core-js/modules/es.math.acosh": [
  	"es.math.acosh"
  ],
  	"core-js/modules/es.math.asinh": [
  	"es.math.asinh"
  ],
  	"core-js/modules/es.math.atanh": [
  	"es.math.atanh"
  ],
  	"core-js/modules/es.math.cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/modules/es.math.clz32": [
  	"es.math.clz32"
  ],
  	"core-js/modules/es.math.cosh": [
  	"es.math.cosh"
  ],
  	"core-js/modules/es.math.expm1": [
  	"es.math.expm1"
  ],
  	"core-js/modules/es.math.fround": [
  	"es.math.fround"
  ],
  	"core-js/modules/es.math.hypot": [
  	"es.math.hypot"
  ],
  	"core-js/modules/es.math.imul": [
  	"es.math.imul"
  ],
  	"core-js/modules/es.math.log10": [
  	"es.math.log10"
  ],
  	"core-js/modules/es.math.log1p": [
  	"es.math.log1p"
  ],
  	"core-js/modules/es.math.log2": [
  	"es.math.log2"
  ],
  	"core-js/modules/es.math.sign": [
  	"es.math.sign"
  ],
  	"core-js/modules/es.math.sinh": [
  	"es.math.sinh"
  ],
  	"core-js/modules/es.math.tanh": [
  	"es.math.tanh"
  ],
  	"core-js/modules/es.math.to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/modules/es.math.trunc": [
  	"es.math.trunc"
  ],
  	"core-js/modules/es.number.constructor": [
  	"es.number.constructor"
  ],
  	"core-js/modules/es.number.epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/modules/es.number.is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/modules/es.number.is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/modules/es.number.is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/modules/es.number.is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/modules/es.number.max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/modules/es.number.min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/modules/es.number.parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/modules/es.number.parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/modules/es.number.to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/modules/es.number.to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/modules/es.number.to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/modules/es.object.assign": [
  	"es.object.assign"
  ],
  	"core-js/modules/es.object.create": [
  	"es.object.create"
  ],
  	"core-js/modules/es.object.define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/modules/es.object.define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/modules/es.object.define-property": [
  	"es.object.define-property"
  ],
  	"core-js/modules/es.object.define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/modules/es.object.entries": [
  	"es.object.entries"
  ],
  	"core-js/modules/es.object.freeze": [
  	"es.object.freeze"
  ],
  	"core-js/modules/es.object.from-entries": [
  	"es.object.from-entries"
  ],
  	"core-js/modules/es.object.get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/modules/es.object.get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/modules/es.object.get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/modules/es.object.get-own-property-symbols": [
  	"es.object.get-own-property-symbols"
  ],
  	"core-js/modules/es.object.get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/modules/es.object.group-by": [
  	"es.object.group-by"
  ],
  	"core-js/modules/es.object.has-own": [
  	"es.object.has-own"
  ],
  	"core-js/modules/es.object.is": [
  	"es.object.is"
  ],
  	"core-js/modules/es.object.is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/modules/es.object.is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/modules/es.object.is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/modules/es.object.keys": [
  	"es.object.keys"
  ],
  	"core-js/modules/es.object.lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/modules/es.object.lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/modules/es.object.prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/modules/es.object.proto": [
  	"es.object.proto"
  ],
  	"core-js/modules/es.object.seal": [
  	"es.object.seal"
  ],
  	"core-js/modules/es.object.set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/modules/es.object.to-string": [
  	"es.object.to-string"
  ],
  	"core-js/modules/es.object.values": [
  	"es.object.values"
  ],
  	"core-js/modules/es.parse-float": [
  	"es.parse-float"
  ],
  	"core-js/modules/es.parse-int": [
  	"es.parse-int"
  ],
  	"core-js/modules/es.promise": [
  	"es.promise"
  ],
  	"core-js/modules/es.promise.all": [
  	"es.promise.all"
  ],
  	"core-js/modules/es.promise.all-settled": [
  	"es.promise.all-settled"
  ],
  	"core-js/modules/es.promise.any": [
  	"es.promise.any"
  ],
  	"core-js/modules/es.promise.catch": [
  	"es.promise.catch"
  ],
  	"core-js/modules/es.promise.constructor": [
  	"es.promise.constructor"
  ],
  	"core-js/modules/es.promise.finally": [
  	"es.promise.finally"
  ],
  	"core-js/modules/es.promise.race": [
  	"es.promise.race"
  ],
  	"core-js/modules/es.promise.reject": [
  	"es.promise.reject"
  ],
  	"core-js/modules/es.promise.resolve": [
  	"es.promise.resolve"
  ],
  	"core-js/modules/es.promise.with-resolvers": [
  	"es.promise.with-resolvers"
  ],
  	"core-js/modules/es.reflect.apply": [
  	"es.reflect.apply"
  ],
  	"core-js/modules/es.reflect.construct": [
  	"es.reflect.construct"
  ],
  	"core-js/modules/es.reflect.define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/modules/es.reflect.delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/modules/es.reflect.get": [
  	"es.reflect.get"
  ],
  	"core-js/modules/es.reflect.get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/modules/es.reflect.get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/modules/es.reflect.has": [
  	"es.reflect.has"
  ],
  	"core-js/modules/es.reflect.is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/modules/es.reflect.own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/modules/es.reflect.prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/modules/es.reflect.set": [
  	"es.reflect.set"
  ],
  	"core-js/modules/es.reflect.set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/modules/es.reflect.to-string-tag": [
  	"es.reflect.to-string-tag"
  ],
  	"core-js/modules/es.regexp.constructor": [
  	"es.regexp.constructor"
  ],
  	"core-js/modules/es.regexp.dot-all": [
  	"es.regexp.dot-all"
  ],
  	"core-js/modules/es.regexp.exec": [
  	"es.regexp.exec"
  ],
  	"core-js/modules/es.regexp.flags": [
  	"es.regexp.flags"
  ],
  	"core-js/modules/es.regexp.sticky": [
  	"es.regexp.sticky"
  ],
  	"core-js/modules/es.regexp.test": [
  	"es.regexp.test"
  ],
  	"core-js/modules/es.regexp.to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/modules/es.set": [
  	"es.set"
  ],
  	"core-js/modules/es.set.constructor": [
  	"es.set.constructor"
  ],
  	"core-js/modules/es.set.difference.v2": [
  	"es.set.difference.v2"
  ],
  	"core-js/modules/es.set.intersection.v2": [
  	"es.set.intersection.v2"
  ],
  	"core-js/modules/es.set.is-disjoint-from.v2": [
  	"es.set.is-disjoint-from.v2"
  ],
  	"core-js/modules/es.set.is-subset-of.v2": [
  	"es.set.is-subset-of.v2"
  ],
  	"core-js/modules/es.set.is-superset-of.v2": [
  	"es.set.is-superset-of.v2"
  ],
  	"core-js/modules/es.set.symmetric-difference.v2": [
  	"es.set.symmetric-difference.v2"
  ],
  	"core-js/modules/es.set.union.v2": [
  	"es.set.union.v2"
  ],
  	"core-js/modules/es.string.anchor": [
  	"es.string.anchor"
  ],
  	"core-js/modules/es.string.at-alternative": [
  	"es.string.at-alternative"
  ],
  	"core-js/modules/es.string.big": [
  	"es.string.big"
  ],
  	"core-js/modules/es.string.blink": [
  	"es.string.blink"
  ],
  	"core-js/modules/es.string.bold": [
  	"es.string.bold"
  ],
  	"core-js/modules/es.string.code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/modules/es.string.ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/modules/es.string.fixed": [
  	"es.string.fixed"
  ],
  	"core-js/modules/es.string.fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/modules/es.string.fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/modules/es.string.from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/modules/es.string.includes": [
  	"es.string.includes"
  ],
  	"core-js/modules/es.string.is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/modules/es.string.italics": [
  	"es.string.italics"
  ],
  	"core-js/modules/es.string.iterator": [
  	"es.string.iterator"
  ],
  	"core-js/modules/es.string.link": [
  	"es.string.link"
  ],
  	"core-js/modules/es.string.match": [
  	"es.string.match"
  ],
  	"core-js/modules/es.string.match-all": [
  	"es.string.match-all"
  ],
  	"core-js/modules/es.string.pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/modules/es.string.pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/modules/es.string.raw": [
  	"es.string.raw"
  ],
  	"core-js/modules/es.string.repeat": [
  	"es.string.repeat"
  ],
  	"core-js/modules/es.string.replace": [
  	"es.string.replace"
  ],
  	"core-js/modules/es.string.replace-all": [
  	"es.string.replace-all"
  ],
  	"core-js/modules/es.string.search": [
  	"es.string.search"
  ],
  	"core-js/modules/es.string.small": [
  	"es.string.small"
  ],
  	"core-js/modules/es.string.split": [
  	"es.string.split"
  ],
  	"core-js/modules/es.string.starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/modules/es.string.strike": [
  	"es.string.strike"
  ],
  	"core-js/modules/es.string.sub": [
  	"es.string.sub"
  ],
  	"core-js/modules/es.string.substr": [
  	"es.string.substr"
  ],
  	"core-js/modules/es.string.sup": [
  	"es.string.sup"
  ],
  	"core-js/modules/es.string.to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/modules/es.string.trim": [
  	"es.string.trim"
  ],
  	"core-js/modules/es.string.trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/modules/es.string.trim-left": [
  	"es.string.trim-left"
  ],
  	"core-js/modules/es.string.trim-right": [
  	"es.string.trim-right"
  ],
  	"core-js/modules/es.string.trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/modules/es.symbol": [
  	"es.symbol"
  ],
  	"core-js/modules/es.symbol.async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/modules/es.symbol.constructor": [
  	"es.symbol.constructor"
  ],
  	"core-js/modules/es.symbol.description": [
  	"es.symbol.description"
  ],
  	"core-js/modules/es.symbol.for": [
  	"es.symbol.for"
  ],
  	"core-js/modules/es.symbol.has-instance": [
  	"es.symbol.has-instance"
  ],
  	"core-js/modules/es.symbol.is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable"
  ],
  	"core-js/modules/es.symbol.iterator": [
  	"es.symbol.iterator"
  ],
  	"core-js/modules/es.symbol.key-for": [
  	"es.symbol.key-for"
  ],
  	"core-js/modules/es.symbol.match": [
  	"es.symbol.match"
  ],
  	"core-js/modules/es.symbol.match-all": [
  	"es.symbol.match-all"
  ],
  	"core-js/modules/es.symbol.replace": [
  	"es.symbol.replace"
  ],
  	"core-js/modules/es.symbol.search": [
  	"es.symbol.search"
  ],
  	"core-js/modules/es.symbol.species": [
  	"es.symbol.species"
  ],
  	"core-js/modules/es.symbol.split": [
  	"es.symbol.split"
  ],
  	"core-js/modules/es.symbol.to-primitive": [
  	"es.symbol.to-primitive"
  ],
  	"core-js/modules/es.symbol.to-string-tag": [
  	"es.symbol.to-string-tag"
  ],
  	"core-js/modules/es.symbol.unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/modules/es.typed-array.at": [
  	"es.typed-array.at"
  ],
  	"core-js/modules/es.typed-array.copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/modules/es.typed-array.every": [
  	"es.typed-array.every"
  ],
  	"core-js/modules/es.typed-array.fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/modules/es.typed-array.filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/modules/es.typed-array.find": [
  	"es.typed-array.find"
  ],
  	"core-js/modules/es.typed-array.find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/modules/es.typed-array.find-last": [
  	"es.typed-array.find-last"
  ],
  	"core-js/modules/es.typed-array.find-last-index": [
  	"es.typed-array.find-last-index"
  ],
  	"core-js/modules/es.typed-array.float32-array": [
  	"es.typed-array.float32-array"
  ],
  	"core-js/modules/es.typed-array.float64-array": [
  	"es.typed-array.float64-array"
  ],
  	"core-js/modules/es.typed-array.for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/modules/es.typed-array.from": [
  	"es.typed-array.from"
  ],
  	"core-js/modules/es.typed-array.includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/modules/es.typed-array.index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/modules/es.typed-array.int16-array": [
  	"es.typed-array.int16-array"
  ],
  	"core-js/modules/es.typed-array.int32-array": [
  	"es.typed-array.int32-array"
  ],
  	"core-js/modules/es.typed-array.int8-array": [
  	"es.typed-array.int8-array"
  ],
  	"core-js/modules/es.typed-array.iterator": [
  	"es.typed-array.iterator"
  ],
  	"core-js/modules/es.typed-array.join": [
  	"es.typed-array.join"
  ],
  	"core-js/modules/es.typed-array.last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/modules/es.typed-array.map": [
  	"es.typed-array.map"
  ],
  	"core-js/modules/es.typed-array.of": [
  	"es.typed-array.of"
  ],
  	"core-js/modules/es.typed-array.reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/modules/es.typed-array.reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/modules/es.typed-array.reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/modules/es.typed-array.set": [
  	"es.typed-array.set"
  ],
  	"core-js/modules/es.typed-array.slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/modules/es.typed-array.some": [
  	"es.typed-array.some"
  ],
  	"core-js/modules/es.typed-array.sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/modules/es.typed-array.subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/modules/es.typed-array.to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/modules/es.typed-array.to-reversed": [
  	"es.typed-array.to-reversed"
  ],
  	"core-js/modules/es.typed-array.to-sorted": [
  	"es.typed-array.to-sorted"
  ],
  	"core-js/modules/es.typed-array.to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/modules/es.typed-array.uint16-array": [
  	"es.typed-array.uint16-array"
  ],
  	"core-js/modules/es.typed-array.uint32-array": [
  	"es.typed-array.uint32-array"
  ],
  	"core-js/modules/es.typed-array.uint8-array": [
  	"es.typed-array.uint8-array"
  ],
  	"core-js/modules/es.typed-array.uint8-clamped-array": [
  	"es.typed-array.uint8-clamped-array"
  ],
  	"core-js/modules/es.typed-array.with": [
  	"es.typed-array.with"
  ],
  	"core-js/modules/es.unescape": [
  	"es.unescape"
  ],
  	"core-js/modules/es.weak-map": [
  	"es.weak-map"
  ],
  	"core-js/modules/es.weak-map.constructor": [
  	"es.weak-map.constructor"
  ],
  	"core-js/modules/es.weak-set": [
  	"es.weak-set"
  ],
  	"core-js/modules/es.weak-set.constructor": [
  	"es.weak-set.constructor"
  ],
  	"core-js/modules/esnext.aggregate-error": [
  	"esnext.aggregate-error"
  ],
  	"core-js/modules/esnext.array-buffer.detached": [
  	"esnext.array-buffer.detached"
  ],
  	"core-js/modules/esnext.array-buffer.transfer": [
  	"esnext.array-buffer.transfer"
  ],
  	"core-js/modules/esnext.array-buffer.transfer-to-fixed-length": [
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/modules/esnext.array.at": [
  	"esnext.array.at"
  ],
  	"core-js/modules/esnext.array.filter-out": [
  	"esnext.array.filter-out"
  ],
  	"core-js/modules/esnext.array.filter-reject": [
  	"esnext.array.filter-reject"
  ],
  	"core-js/modules/esnext.array.find-last": [
  	"esnext.array.find-last"
  ],
  	"core-js/modules/esnext.array.find-last-index": [
  	"esnext.array.find-last-index"
  ],
  	"core-js/modules/esnext.array.from-async": [
  	"esnext.array.from-async"
  ],
  	"core-js/modules/esnext.array.group": [
  	"esnext.array.group"
  ],
  	"core-js/modules/esnext.array.group-by": [
  	"esnext.array.group-by"
  ],
  	"core-js/modules/esnext.array.group-by-to-map": [
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/modules/esnext.array.group-to-map": [
  	"esnext.array.group-to-map"
  ],
  	"core-js/modules/esnext.array.is-template-object": [
  	"esnext.array.is-template-object"
  ],
  	"core-js/modules/esnext.array.last-index": [
  	"esnext.array.last-index"
  ],
  	"core-js/modules/esnext.array.last-item": [
  	"esnext.array.last-item"
  ],
  	"core-js/modules/esnext.array.to-reversed": [
  	"esnext.array.to-reversed"
  ],
  	"core-js/modules/esnext.array.to-sorted": [
  	"esnext.array.to-sorted"
  ],
  	"core-js/modules/esnext.array.to-spliced": [
  	"esnext.array.to-spliced"
  ],
  	"core-js/modules/esnext.array.unique-by": [
  	"esnext.array.unique-by"
  ],
  	"core-js/modules/esnext.array.with": [
  	"esnext.array.with"
  ],
  	"core-js/modules/esnext.async-disposable-stack.constructor": [
  	"esnext.async-disposable-stack.constructor"
  ],
  	"core-js/modules/esnext.async-iterator.as-indexed-pairs": [
  	"esnext.async-iterator.as-indexed-pairs"
  ],
  	"core-js/modules/esnext.async-iterator.async-dispose": [
  	"esnext.async-iterator.async-dispose"
  ],
  	"core-js/modules/esnext.async-iterator.constructor": [
  	"esnext.async-iterator.constructor"
  ],
  	"core-js/modules/esnext.async-iterator.drop": [
  	"esnext.async-iterator.drop"
  ],
  	"core-js/modules/esnext.async-iterator.every": [
  	"esnext.async-iterator.every"
  ],
  	"core-js/modules/esnext.async-iterator.filter": [
  	"esnext.async-iterator.filter"
  ],
  	"core-js/modules/esnext.async-iterator.find": [
  	"esnext.async-iterator.find"
  ],
  	"core-js/modules/esnext.async-iterator.flat-map": [
  	"esnext.async-iterator.flat-map"
  ],
  	"core-js/modules/esnext.async-iterator.for-each": [
  	"esnext.async-iterator.for-each"
  ],
  	"core-js/modules/esnext.async-iterator.from": [
  	"esnext.async-iterator.from"
  ],
  	"core-js/modules/esnext.async-iterator.indexed": [
  	"esnext.async-iterator.indexed"
  ],
  	"core-js/modules/esnext.async-iterator.map": [
  	"esnext.async-iterator.map"
  ],
  	"core-js/modules/esnext.async-iterator.reduce": [
  	"esnext.async-iterator.reduce"
  ],
  	"core-js/modules/esnext.async-iterator.some": [
  	"esnext.async-iterator.some"
  ],
  	"core-js/modules/esnext.async-iterator.take": [
  	"esnext.async-iterator.take"
  ],
  	"core-js/modules/esnext.async-iterator.to-array": [
  	"esnext.async-iterator.to-array"
  ],
  	"core-js/modules/esnext.bigint.range": [
  	"esnext.bigint.range"
  ],
  	"core-js/modules/esnext.composite-key": [
  	"esnext.composite-key"
  ],
  	"core-js/modules/esnext.composite-symbol": [
  	"esnext.composite-symbol"
  ],
  	"core-js/modules/esnext.data-view.get-float16": [
  	"esnext.data-view.get-float16"
  ],
  	"core-js/modules/esnext.data-view.get-uint8-clamped": [
  	"esnext.data-view.get-uint8-clamped"
  ],
  	"core-js/modules/esnext.data-view.set-float16": [
  	"esnext.data-view.set-float16"
  ],
  	"core-js/modules/esnext.data-view.set-uint8-clamped": [
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/modules/esnext.disposable-stack.constructor": [
  	"esnext.disposable-stack.constructor"
  ],
  	"core-js/modules/esnext.function.demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/modules/esnext.function.is-callable": [
  	"esnext.function.is-callable"
  ],
  	"core-js/modules/esnext.function.is-constructor": [
  	"esnext.function.is-constructor"
  ],
  	"core-js/modules/esnext.function.metadata": [
  	"esnext.function.metadata"
  ],
  	"core-js/modules/esnext.function.un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/modules/esnext.global-this": [
  	"esnext.global-this"
  ],
  	"core-js/modules/esnext.iterator.as-indexed-pairs": [
  	"esnext.iterator.as-indexed-pairs"
  ],
  	"core-js/modules/esnext.iterator.constructor": [
  	"esnext.iterator.constructor"
  ],
  	"core-js/modules/esnext.iterator.dispose": [
  	"esnext.iterator.dispose"
  ],
  	"core-js/modules/esnext.iterator.drop": [
  	"esnext.iterator.drop"
  ],
  	"core-js/modules/esnext.iterator.every": [
  	"esnext.iterator.every"
  ],
  	"core-js/modules/esnext.iterator.filter": [
  	"esnext.iterator.filter"
  ],
  	"core-js/modules/esnext.iterator.find": [
  	"esnext.iterator.find"
  ],
  	"core-js/modules/esnext.iterator.flat-map": [
  	"esnext.iterator.flat-map"
  ],
  	"core-js/modules/esnext.iterator.for-each": [
  	"esnext.iterator.for-each"
  ],
  	"core-js/modules/esnext.iterator.from": [
  	"esnext.iterator.from"
  ],
  	"core-js/modules/esnext.iterator.indexed": [
  	"esnext.iterator.indexed"
  ],
  	"core-js/modules/esnext.iterator.map": [
  	"esnext.iterator.map"
  ],
  	"core-js/modules/esnext.iterator.range": [
  	"esnext.iterator.range"
  ],
  	"core-js/modules/esnext.iterator.reduce": [
  	"esnext.iterator.reduce"
  ],
  	"core-js/modules/esnext.iterator.some": [
  	"esnext.iterator.some"
  ],
  	"core-js/modules/esnext.iterator.take": [
  	"esnext.iterator.take"
  ],
  	"core-js/modules/esnext.iterator.to-array": [
  	"esnext.iterator.to-array"
  ],
  	"core-js/modules/esnext.iterator.to-async": [
  	"esnext.iterator.to-async"
  ],
  	"core-js/modules/esnext.json.is-raw-json": [
  	"esnext.json.is-raw-json"
  ],
  	"core-js/modules/esnext.json.parse": [
  	"esnext.json.parse"
  ],
  	"core-js/modules/esnext.json.raw-json": [
  	"esnext.json.raw-json"
  ],
  	"core-js/modules/esnext.map.delete-all": [
  	"esnext.map.delete-all"
  ],
  	"core-js/modules/esnext.map.emplace": [
  	"esnext.map.emplace"
  ],
  	"core-js/modules/esnext.map.every": [
  	"esnext.map.every"
  ],
  	"core-js/modules/esnext.map.filter": [
  	"esnext.map.filter"
  ],
  	"core-js/modules/esnext.map.find": [
  	"esnext.map.find"
  ],
  	"core-js/modules/esnext.map.find-key": [
  	"esnext.map.find-key"
  ],
  	"core-js/modules/esnext.map.from": [
  	"esnext.map.from"
  ],
  	"core-js/modules/esnext.map.group-by": [
  	"esnext.map.group-by"
  ],
  	"core-js/modules/esnext.map.includes": [
  	"esnext.map.includes"
  ],
  	"core-js/modules/esnext.map.key-by": [
  	"esnext.map.key-by"
  ],
  	"core-js/modules/esnext.map.key-of": [
  	"esnext.map.key-of"
  ],
  	"core-js/modules/esnext.map.map-keys": [
  	"esnext.map.map-keys"
  ],
  	"core-js/modules/esnext.map.map-values": [
  	"esnext.map.map-values"
  ],
  	"core-js/modules/esnext.map.merge": [
  	"esnext.map.merge"
  ],
  	"core-js/modules/esnext.map.of": [
  	"esnext.map.of"
  ],
  	"core-js/modules/esnext.map.reduce": [
  	"esnext.map.reduce"
  ],
  	"core-js/modules/esnext.map.some": [
  	"esnext.map.some"
  ],
  	"core-js/modules/esnext.map.update": [
  	"esnext.map.update"
  ],
  	"core-js/modules/esnext.map.update-or-insert": [
  	"esnext.map.update-or-insert"
  ],
  	"core-js/modules/esnext.map.upsert": [
  	"esnext.map.upsert"
  ],
  	"core-js/modules/esnext.math.clamp": [
  	"esnext.math.clamp"
  ],
  	"core-js/modules/esnext.math.deg-per-rad": [
  	"esnext.math.deg-per-rad"
  ],
  	"core-js/modules/esnext.math.degrees": [
  	"esnext.math.degrees"
  ],
  	"core-js/modules/esnext.math.f16round": [
  	"esnext.math.f16round"
  ],
  	"core-js/modules/esnext.math.fscale": [
  	"esnext.math.fscale"
  ],
  	"core-js/modules/esnext.math.iaddh": [
  	"esnext.math.iaddh"
  ],
  	"core-js/modules/esnext.math.imulh": [
  	"esnext.math.imulh"
  ],
  	"core-js/modules/esnext.math.isubh": [
  	"esnext.math.isubh"
  ],
  	"core-js/modules/esnext.math.rad-per-deg": [
  	"esnext.math.rad-per-deg"
  ],
  	"core-js/modules/esnext.math.radians": [
  	"esnext.math.radians"
  ],
  	"core-js/modules/esnext.math.scale": [
  	"esnext.math.scale"
  ],
  	"core-js/modules/esnext.math.seeded-prng": [
  	"esnext.math.seeded-prng"
  ],
  	"core-js/modules/esnext.math.signbit": [
  	"esnext.math.signbit"
  ],
  	"core-js/modules/esnext.math.sum-precise": [
  	"esnext.math.sum-precise"
  ],
  	"core-js/modules/esnext.math.umulh": [
  	"esnext.math.umulh"
  ],
  	"core-js/modules/esnext.number.from-string": [
  	"esnext.number.from-string"
  ],
  	"core-js/modules/esnext.number.range": [
  	"esnext.number.range"
  ],
  	"core-js/modules/esnext.object.group-by": [
  	"esnext.object.group-by"
  ],
  	"core-js/modules/esnext.object.has-own": [
  	"esnext.object.has-own"
  ],
  	"core-js/modules/esnext.object.iterate-entries": [
  	"esnext.object.iterate-entries"
  ],
  	"core-js/modules/esnext.object.iterate-keys": [
  	"esnext.object.iterate-keys"
  ],
  	"core-js/modules/esnext.object.iterate-values": [
  	"esnext.object.iterate-values"
  ],
  	"core-js/modules/esnext.observable": [
  	"esnext.observable"
  ],
  	"core-js/modules/esnext.observable.constructor": [
  	"esnext.observable.constructor"
  ],
  	"core-js/modules/esnext.observable.from": [
  	"esnext.observable.from"
  ],
  	"core-js/modules/esnext.observable.of": [
  	"esnext.observable.of"
  ],
  	"core-js/modules/esnext.promise.all-settled": [
  	"esnext.promise.all-settled"
  ],
  	"core-js/modules/esnext.promise.any": [
  	"esnext.promise.any"
  ],
  	"core-js/modules/esnext.promise.try": [
  	"esnext.promise.try"
  ],
  	"core-js/modules/esnext.promise.with-resolvers": [
  	"esnext.promise.with-resolvers"
  ],
  	"core-js/modules/esnext.reflect.define-metadata": [
  	"esnext.reflect.define-metadata"
  ],
  	"core-js/modules/esnext.reflect.delete-metadata": [
  	"esnext.reflect.delete-metadata"
  ],
  	"core-js/modules/esnext.reflect.get-metadata": [
  	"esnext.reflect.get-metadata"
  ],
  	"core-js/modules/esnext.reflect.get-metadata-keys": [
  	"esnext.reflect.get-metadata-keys"
  ],
  	"core-js/modules/esnext.reflect.get-own-metadata": [
  	"esnext.reflect.get-own-metadata"
  ],
  	"core-js/modules/esnext.reflect.get-own-metadata-keys": [
  	"esnext.reflect.get-own-metadata-keys"
  ],
  	"core-js/modules/esnext.reflect.has-metadata": [
  	"esnext.reflect.has-metadata"
  ],
  	"core-js/modules/esnext.reflect.has-own-metadata": [
  	"esnext.reflect.has-own-metadata"
  ],
  	"core-js/modules/esnext.reflect.metadata": [
  	"esnext.reflect.metadata"
  ],
  	"core-js/modules/esnext.regexp.escape": [
  	"esnext.regexp.escape"
  ],
  	"core-js/modules/esnext.set.add-all": [
  	"esnext.set.add-all"
  ],
  	"core-js/modules/esnext.set.delete-all": [
  	"esnext.set.delete-all"
  ],
  	"core-js/modules/esnext.set.difference": [
  	"esnext.set.difference"
  ],
  	"core-js/modules/esnext.set.difference.v2": [
  	"esnext.set.difference.v2"
  ],
  	"core-js/modules/esnext.set.every": [
  	"esnext.set.every"
  ],
  	"core-js/modules/esnext.set.filter": [
  	"esnext.set.filter"
  ],
  	"core-js/modules/esnext.set.find": [
  	"esnext.set.find"
  ],
  	"core-js/modules/esnext.set.from": [
  	"esnext.set.from"
  ],
  	"core-js/modules/esnext.set.intersection": [
  	"esnext.set.intersection"
  ],
  	"core-js/modules/esnext.set.intersection.v2": [
  	"esnext.set.intersection.v2"
  ],
  	"core-js/modules/esnext.set.is-disjoint-from": [
  	"esnext.set.is-disjoint-from"
  ],
  	"core-js/modules/esnext.set.is-disjoint-from.v2": [
  	"esnext.set.is-disjoint-from.v2"
  ],
  	"core-js/modules/esnext.set.is-subset-of": [
  	"esnext.set.is-subset-of"
  ],
  	"core-js/modules/esnext.set.is-subset-of.v2": [
  	"esnext.set.is-subset-of.v2"
  ],
  	"core-js/modules/esnext.set.is-superset-of": [
  	"esnext.set.is-superset-of"
  ],
  	"core-js/modules/esnext.set.is-superset-of.v2": [
  	"esnext.set.is-superset-of.v2"
  ],
  	"core-js/modules/esnext.set.join": [
  	"esnext.set.join"
  ],
  	"core-js/modules/esnext.set.map": [
  	"esnext.set.map"
  ],
  	"core-js/modules/esnext.set.of": [
  	"esnext.set.of"
  ],
  	"core-js/modules/esnext.set.reduce": [
  	"esnext.set.reduce"
  ],
  	"core-js/modules/esnext.set.some": [
  	"esnext.set.some"
  ],
  	"core-js/modules/esnext.set.symmetric-difference": [
  	"esnext.set.symmetric-difference"
  ],
  	"core-js/modules/esnext.set.symmetric-difference.v2": [
  	"esnext.set.symmetric-difference.v2"
  ],
  	"core-js/modules/esnext.set.union": [
  	"esnext.set.union"
  ],
  	"core-js/modules/esnext.set.union.v2": [
  	"esnext.set.union.v2"
  ],
  	"core-js/modules/esnext.string.at": [
  	"esnext.string.at"
  ],
  	"core-js/modules/esnext.string.at-alternative": [
  	"esnext.string.at-alternative"
  ],
  	"core-js/modules/esnext.string.code-points": [
  	"esnext.string.code-points"
  ],
  	"core-js/modules/esnext.string.cooked": [
  	"esnext.string.cooked"
  ],
  	"core-js/modules/esnext.string.dedent": [
  	"esnext.string.dedent"
  ],
  	"core-js/modules/esnext.string.is-well-formed": [
  	"esnext.string.is-well-formed"
  ],
  	"core-js/modules/esnext.string.match-all": [
  	"esnext.string.match-all"
  ],
  	"core-js/modules/esnext.string.replace-all": [
  	"esnext.string.replace-all"
  ],
  	"core-js/modules/esnext.string.to-well-formed": [
  	"esnext.string.to-well-formed"
  ],
  	"core-js/modules/esnext.suppressed-error.constructor": [
  	"esnext.suppressed-error.constructor"
  ],
  	"core-js/modules/esnext.symbol.async-dispose": [
  	"esnext.symbol.async-dispose"
  ],
  	"core-js/modules/esnext.symbol.custom-matcher": [
  	"esnext.symbol.custom-matcher"
  ],
  	"core-js/modules/esnext.symbol.dispose": [
  	"esnext.symbol.dispose"
  ],
  	"core-js/modules/esnext.symbol.is-registered": [
  	"esnext.symbol.is-registered"
  ],
  	"core-js/modules/esnext.symbol.is-registered-symbol": [
  	"esnext.symbol.is-registered-symbol"
  ],
  	"core-js/modules/esnext.symbol.is-well-known": [
  	"esnext.symbol.is-well-known"
  ],
  	"core-js/modules/esnext.symbol.is-well-known-symbol": [
  	"esnext.symbol.is-well-known-symbol"
  ],
  	"core-js/modules/esnext.symbol.matcher": [
  	"esnext.symbol.matcher"
  ],
  	"core-js/modules/esnext.symbol.metadata": [
  	"esnext.symbol.metadata"
  ],
  	"core-js/modules/esnext.symbol.metadata-key": [
  	"esnext.symbol.metadata-key"
  ],
  	"core-js/modules/esnext.symbol.observable": [
  	"esnext.symbol.observable"
  ],
  	"core-js/modules/esnext.symbol.pattern-match": [
  	"esnext.symbol.pattern-match"
  ],
  	"core-js/modules/esnext.symbol.replace-all": [
  	"esnext.symbol.replace-all"
  ],
  	"core-js/modules/esnext.typed-array.at": [
  	"esnext.typed-array.at"
  ],
  	"core-js/modules/esnext.typed-array.filter-out": [
  	"esnext.typed-array.filter-out"
  ],
  	"core-js/modules/esnext.typed-array.filter-reject": [
  	"esnext.typed-array.filter-reject"
  ],
  	"core-js/modules/esnext.typed-array.find-last": [
  	"esnext.typed-array.find-last"
  ],
  	"core-js/modules/esnext.typed-array.find-last-index": [
  	"esnext.typed-array.find-last-index"
  ],
  	"core-js/modules/esnext.typed-array.from-async": [
  	"esnext.typed-array.from-async"
  ],
  	"core-js/modules/esnext.typed-array.group-by": [
  	"esnext.typed-array.group-by"
  ],
  	"core-js/modules/esnext.typed-array.to-reversed": [
  	"esnext.typed-array.to-reversed"
  ],
  	"core-js/modules/esnext.typed-array.to-sorted": [
  	"esnext.typed-array.to-sorted"
  ],
  	"core-js/modules/esnext.typed-array.to-spliced": [
  	"esnext.typed-array.to-spliced"
  ],
  	"core-js/modules/esnext.typed-array.unique-by": [
  	"esnext.typed-array.unique-by"
  ],
  	"core-js/modules/esnext.typed-array.with": [
  	"esnext.typed-array.with"
  ],
  	"core-js/modules/esnext.uint8-array.from-base64": [
  	"esnext.uint8-array.from-base64"
  ],
  	"core-js/modules/esnext.uint8-array.from-hex": [
  	"esnext.uint8-array.from-hex"
  ],
  	"core-js/modules/esnext.uint8-array.to-base64": [
  	"esnext.uint8-array.to-base64"
  ],
  	"core-js/modules/esnext.uint8-array.to-hex": [
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/modules/esnext.weak-map.delete-all": [
  	"esnext.weak-map.delete-all"
  ],
  	"core-js/modules/esnext.weak-map.emplace": [
  	"esnext.weak-map.emplace"
  ],
  	"core-js/modules/esnext.weak-map.from": [
  	"esnext.weak-map.from"
  ],
  	"core-js/modules/esnext.weak-map.of": [
  	"esnext.weak-map.of"
  ],
  	"core-js/modules/esnext.weak-map.upsert": [
  	"esnext.weak-map.upsert"
  ],
  	"core-js/modules/esnext.weak-set.add-all": [
  	"esnext.weak-set.add-all"
  ],
  	"core-js/modules/esnext.weak-set.delete-all": [
  	"esnext.weak-set.delete-all"
  ],
  	"core-js/modules/esnext.weak-set.from": [
  	"esnext.weak-set.from"
  ],
  	"core-js/modules/esnext.weak-set.of": [
  	"esnext.weak-set.of"
  ],
  	"core-js/modules/web.atob": [
  	"web.atob"
  ],
  	"core-js/modules/web.btoa": [
  	"web.btoa"
  ],
  	"core-js/modules/web.clear-immediate": [
  	"web.clear-immediate"
  ],
  	"core-js/modules/web.dom-collections.for-each": [
  	"web.dom-collections.for-each"
  ],
  	"core-js/modules/web.dom-collections.iterator": [
  	"web.dom-collections.iterator"
  ],
  	"core-js/modules/web.dom-exception.constructor": [
  	"web.dom-exception.constructor"
  ],
  	"core-js/modules/web.dom-exception.stack": [
  	"web.dom-exception.stack"
  ],
  	"core-js/modules/web.dom-exception.to-string-tag": [
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/modules/web.immediate": [
  	"web.immediate"
  ],
  	"core-js/modules/web.queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/modules/web.self": [
  	"web.self"
  ],
  	"core-js/modules/web.set-immediate": [
  	"web.set-immediate"
  ],
  	"core-js/modules/web.set-interval": [
  	"web.set-interval"
  ],
  	"core-js/modules/web.set-timeout": [
  	"web.set-timeout"
  ],
  	"core-js/modules/web.structured-clone": [
  	"web.structured-clone"
  ],
  	"core-js/modules/web.timers": [
  	"web.timers"
  ],
  	"core-js/modules/web.url": [
  	"web.url"
  ],
  	"core-js/modules/web.url-search-params": [
  	"web.url-search-params"
  ],
  	"core-js/modules/web.url-search-params.constructor": [
  	"web.url-search-params.constructor"
  ],
  	"core-js/modules/web.url-search-params.delete": [
  	"web.url-search-params.delete"
  ],
  	"core-js/modules/web.url-search-params.has": [
  	"web.url-search-params.has"
  ],
  	"core-js/modules/web.url-search-params.size": [
  	"web.url-search-params.size"
  ],
  	"core-js/modules/web.url.can-parse": [
  	"web.url.can-parse"
  ],
  	"core-js/modules/web.url.constructor": [
  	"web.url.constructor"
  ],
  	"core-js/modules/web.url.parse": [
  	"web.url.parse"
  ],
  	"core-js/modules/web.url.to-json": [
  	"web.url.to-json"
  ],
  	"core-js/proposals": [
  	"es.map",
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/proposals/accessible-object-hasownproperty": [
  	"esnext.object.has-own"
  ],
  	"core-js/proposals/array-buffer-base64": [
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/proposals/array-buffer-transfer": [
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/proposals/array-filtering": [
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject"
  ],
  	"core-js/proposals/array-filtering-stage-1": [
  	"esnext.array.filter-reject",
  	"esnext.typed-array.filter-reject"
  ],
  	"core-js/proposals/array-find-from-last": [
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index"
  ],
  	"core-js/proposals/array-flat-map": [
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/proposals/array-from-async": [
  	"esnext.array.from-async",
  	"esnext.typed-array.from-async"
  ],
  	"core-js/proposals/array-from-async-stage-2": [
  	"esnext.array.from-async"
  ],
  	"core-js/proposals/array-grouping": [
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.typed-array.group-by"
  ],
  	"core-js/proposals/array-grouping-stage-3": [
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map"
  ],
  	"core-js/proposals/array-grouping-stage-3-2": [
  	"esnext.array.group",
  	"esnext.array.group-to-map"
  ],
  	"core-js/proposals/array-grouping-v2": [
  	"esnext.map.group-by",
  	"esnext.object.group-by"
  ],
  	"core-js/proposals/array-includes": [
  	"es.array.includes",
  	"es.typed-array.includes"
  ],
  	"core-js/proposals/array-is-template-object": [
  	"esnext.array.is-template-object"
  ],
  	"core-js/proposals/array-last": [
  	"esnext.array.last-index",
  	"esnext.array.last-item"
  ],
  	"core-js/proposals/array-unique": [
  	"es.map",
  	"esnext.array.unique-by",
  	"esnext.typed-array.unique-by"
  ],
  	"core-js/proposals/async-explicit-resource-management": [
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.symbol.async-dispose"
  ],
  	"core-js/proposals/async-iteration": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/proposals/async-iterator-helpers": [
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.iterator.to-async"
  ],
  	"core-js/proposals/change-array-by-copy": [
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with"
  ],
  	"core-js/proposals/change-array-by-copy-stage-4": [
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.with"
  ],
  	"core-js/proposals/collection-methods": [
  	"esnext.map.delete-all",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all"
  ],
  	"core-js/proposals/collection-of-from": [
  	"esnext.map.from",
  	"esnext.map.of",
  	"esnext.set.from",
  	"esnext.set.of",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of"
  ],
  	"core-js/proposals/data-view-get-set-uint8-clamped": [
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-uint8-clamped"
  ],
  	"core-js/proposals/decorator-metadata": [
  	"esnext.symbol.metadata-key"
  ],
  	"core-js/proposals/decorator-metadata-v2": [
  	"esnext.function.metadata",
  	"esnext.symbol.metadata"
  ],
  	"core-js/proposals/decorators": [
  	"esnext.symbol.metadata"
  ],
  	"core-js/proposals/efficient-64-bit-arithmetic": [
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.umulh"
  ],
  	"core-js/proposals/error-cause": [
  	"es.error.cause",
  	"es.aggregate-error.cause"
  ],
  	"core-js/proposals/explicit-resource-management": [
  	"esnext.suppressed-error.constructor",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.disposable-stack.constructor",
  	"esnext.iterator.dispose",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose"
  ],
  	"core-js/proposals/extractors": [
  	"esnext.symbol.custom-matcher"
  ],
  	"core-js/proposals/float16": [
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16",
  	"esnext.math.f16round"
  ],
  	"core-js/proposals/function-demethodize": [
  	"esnext.function.demethodize"
  ],
  	"core-js/proposals/function-is-callable-is-constructor": [
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor"
  ],
  	"core-js/proposals/function-un-this": [
  	"esnext.function.un-this"
  ],
  	"core-js/proposals/global-this": [
  	"esnext.global-this"
  ],
  	"core-js/proposals/iterator-helpers": [
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async"
  ],
  	"core-js/proposals/iterator-helpers-stage-3": [
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.iterator.constructor",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async"
  ],
  	"core-js/proposals/iterator-helpers-stage-3-2": [
  	"esnext.iterator.constructor",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array"
  ],
  	"core-js/proposals/iterator-range": [
  	"esnext.iterator.constructor",
  	"esnext.iterator.range"
  ],
  	"core-js/proposals/json-parse-with-source": [
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json"
  ],
  	"core-js/proposals/keys-composition": [
  	"esnext.composite-key",
  	"esnext.composite-symbol"
  ],
  	"core-js/proposals/map-update-or-insert": [
  	"esnext.map.emplace",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert"
  ],
  	"core-js/proposals/map-upsert": [
  	"esnext.map.emplace",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert"
  ],
  	"core-js/proposals/map-upsert-stage-2": [
  	"esnext.map.emplace",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/proposals/math-extensions": [
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale"
  ],
  	"core-js/proposals/math-signbit": [
  	"esnext.math.signbit"
  ],
  	"core-js/proposals/math-sum": [
  	"esnext.math.sum-precise"
  ],
  	"core-js/proposals/number-from-string": [
  	"esnext.number.from-string"
  ],
  	"core-js/proposals/number-range": [
  	"esnext.bigint.range",
  	"esnext.number.range"
  ],
  	"core-js/proposals/object-from-entries": [
  	"es.object.from-entries"
  ],
  	"core-js/proposals/object-getownpropertydescriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/proposals/object-iteration": [
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values"
  ],
  	"core-js/proposals/object-values-entries": [
  	"es.object.entries",
  	"es.object.values"
  ],
  	"core-js/proposals/observable": [
  	"esnext.observable",
  	"esnext.symbol.observable"
  ],
  	"core-js/proposals/pattern-matching": [
  	"esnext.symbol.matcher",
  	"esnext.symbol.pattern-match"
  ],
  	"core-js/proposals/pattern-matching-v2": [
  	"esnext.symbol.custom-matcher"
  ],
  	"core-js/proposals/promise-all-settled": [
  	"esnext.promise.all-settled"
  ],
  	"core-js/proposals/promise-any": [
  	"esnext.aggregate-error",
  	"esnext.promise.any"
  ],
  	"core-js/proposals/promise-finally": [
  	"es.promise.finally"
  ],
  	"core-js/proposals/promise-try": [
  	"esnext.promise.try"
  ],
  	"core-js/proposals/promise-with-resolvers": [
  	"esnext.promise.with-resolvers"
  ],
  	"core-js/proposals/reflect-metadata": [
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata"
  ],
  	"core-js/proposals/regexp-dotall-flag": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags"
  ],
  	"core-js/proposals/regexp-escaping": [
  	"esnext.regexp.escape"
  ],
  	"core-js/proposals/regexp-named-groups": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/proposals/relative-indexing-method": [
  	"es.string.at-alternative",
  	"esnext.array.at",
  	"esnext.typed-array.at"
  ],
  	"core-js/proposals/seeded-random": [
  	"esnext.math.seeded-prng"
  ],
  	"core-js/proposals/set-methods": [
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union"
  ],
  	"core-js/proposals/set-methods-v2": [
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2"
  ],
  	"core-js/proposals/string-at": [
  	"esnext.string.at"
  ],
  	"core-js/proposals/string-code-points": [
  	"esnext.string.code-points"
  ],
  	"core-js/proposals/string-cooked": [
  	"esnext.string.cooked"
  ],
  	"core-js/proposals/string-dedent": [
  	"esnext.string.dedent"
  ],
  	"core-js/proposals/string-left-right-trim": [
  	"es.string.trim-end",
  	"es.string.trim-start"
  ],
  	"core-js/proposals/string-match-all": [
  	"esnext.string.match-all"
  ],
  	"core-js/proposals/string-padding": [
  	"es.string.pad-end",
  	"es.string.pad-start"
  ],
  	"core-js/proposals/string-replace-all": [
  	"esnext.string.replace-all",
  	"esnext.symbol.replace-all"
  ],
  	"core-js/proposals/string-replace-all-stage-4": [
  	"esnext.string.replace-all"
  ],
  	"core-js/proposals/symbol-description": [
  	"es.symbol.description"
  ],
  	"core-js/proposals/symbol-predicates": [
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known"
  ],
  	"core-js/proposals/symbol-predicates-v2": [
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-well-known-symbol"
  ],
  	"core-js/proposals/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/proposals/using-statement": [
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose"
  ],
  	"core-js/proposals/well-formed-stringify": [
  	"es.json.stringify"
  ],
  	"core-js/proposals/well-formed-unicode-strings": [
  	"esnext.string.is-well-formed",
  	"esnext.string.to-well-formed"
  ],
  	"core-js/stable": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.error.cause",
  	"es.error.to-string",
  	"es.aggregate-error",
  	"es.aggregate-error.cause",
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string",
  	"es.escape",
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name",
  	"es.global-this",
  	"es.json.stringify",
  	"es.json.to-string-tag",
  	"es.map",
  	"es.map.group-by",
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc",
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.parse-float",
  	"es.parse-int",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag",
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with",
  	"es.unescape",
  	"es.weak-map",
  	"es.weak-set",
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/stable/aggregate-error": [
  ],
  	"core-js/stable/array": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.from",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.is-array",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.of",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/stable/array-buffer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.is-view",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string"
  ],
  	"core-js/stable/array-buffer/constructor": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached",
  	"es.array-buffer.transfer",
  	"es.array-buffer.transfer-to-fixed-length",
  	"es.object.to-string"
  ],
  	"core-js/stable/array-buffer/detached": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.array-buffer.detached"
  ],
  	"core-js/stable/array-buffer/is-view": [
  	"es.array-buffer.is-view"
  ],
  	"core-js/stable/array-buffer/slice": [
  	"es.array-buffer.slice"
  ],
  	"core-js/stable/array-buffer/transfer": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer"
  ],
  	"core-js/stable/array-buffer/transfer-to-fixed-length": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.array-buffer.transfer-to-fixed-length"
  ],
  	"core-js/stable/array/at": [
  	"es.array.at"
  ],
  	"core-js/stable/array/concat": [
  	"es.array.concat"
  ],
  	"core-js/stable/array/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/stable/array/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/every": [
  	"es.array.every"
  ],
  	"core-js/stable/array/fill": [
  	"es.array.fill"
  ],
  	"core-js/stable/array/filter": [
  	"es.array.filter"
  ],
  	"core-js/stable/array/find": [
  	"es.array.find"
  ],
  	"core-js/stable/array/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/stable/array/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/stable/array/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/stable/array/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/stable/array/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/stable/array/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/stable/array/from": [
  	"es.array.from",
  	"es.string.iterator"
  ],
  	"core-js/stable/array/includes": [
  	"es.array.includes"
  ],
  	"core-js/stable/array/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/stable/array/is-array": [
  	"es.array.is-array"
  ],
  	"core-js/stable/array/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/join": [
  	"es.array.join"
  ],
  	"core-js/stable/array/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/stable/array/map": [
  	"es.array.map"
  ],
  	"core-js/stable/array/of": [
  	"es.array.of"
  ],
  	"core-js/stable/array/push": [
  	"es.array.push"
  ],
  	"core-js/stable/array/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/stable/array/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/stable/array/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/stable/array/slice": [
  	"es.array.slice"
  ],
  	"core-js/stable/array/some": [
  	"es.array.some"
  ],
  	"core-js/stable/array/sort": [
  	"es.array.sort"
  ],
  	"core-js/stable/array/splice": [
  	"es.array.splice"
  ],
  	"core-js/stable/array/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/stable/array/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/stable/array/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/stable/array/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/stable/array/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual": [
  	"es.array.at",
  	"es.array.concat",
  	"es.array.copy-within",
  	"es.array.every",
  	"es.array.fill",
  	"es.array.filter",
  	"es.array.find",
  	"es.array.find-index",
  	"es.array.find-last",
  	"es.array.find-last-index",
  	"es.array.flat",
  	"es.array.flat-map",
  	"es.array.for-each",
  	"es.array.includes",
  	"es.array.index-of",
  	"es.array.iterator",
  	"es.array.join",
  	"es.array.last-index-of",
  	"es.array.map",
  	"es.array.push",
  	"es.array.reduce",
  	"es.array.reduce-right",
  	"es.array.reverse",
  	"es.array.slice",
  	"es.array.some",
  	"es.array.sort",
  	"es.array.species",
  	"es.array.splice",
  	"es.array.to-reversed",
  	"es.array.to-sorted",
  	"es.array.to-spliced",
  	"es.array.unscopables.flat",
  	"es.array.unscopables.flat-map",
  	"es.array.unshift",
  	"es.array.with",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual/at": [
  	"es.array.at"
  ],
  	"core-js/stable/array/virtual/concat": [
  	"es.array.concat"
  ],
  	"core-js/stable/array/virtual/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/stable/array/virtual/entries": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual/every": [
  	"es.array.every"
  ],
  	"core-js/stable/array/virtual/fill": [
  	"es.array.fill"
  ],
  	"core-js/stable/array/virtual/filter": [
  	"es.array.filter"
  ],
  	"core-js/stable/array/virtual/find": [
  	"es.array.find"
  ],
  	"core-js/stable/array/virtual/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/stable/array/virtual/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/stable/array/virtual/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/stable/array/virtual/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/stable/array/virtual/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/stable/array/virtual/for-each": [
  	"es.array.for-each"
  ],
  	"core-js/stable/array/virtual/includes": [
  	"es.array.includes"
  ],
  	"core-js/stable/array/virtual/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/stable/array/virtual/iterator": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual/join": [
  	"es.array.join"
  ],
  	"core-js/stable/array/virtual/keys": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/stable/array/virtual/map": [
  	"es.array.map"
  ],
  	"core-js/stable/array/virtual/push": [
  	"es.array.push"
  ],
  	"core-js/stable/array/virtual/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/stable/array/virtual/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/stable/array/virtual/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/stable/array/virtual/slice": [
  	"es.array.slice"
  ],
  	"core-js/stable/array/virtual/some": [
  	"es.array.some"
  ],
  	"core-js/stable/array/virtual/sort": [
  	"es.array.sort"
  ],
  	"core-js/stable/array/virtual/splice": [
  	"es.array.splice"
  ],
  	"core-js/stable/array/virtual/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/stable/array/virtual/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/stable/array/virtual/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/stable/array/virtual/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/stable/array/virtual/values": [
  	"es.array.iterator",
  	"es.object.to-string"
  ],
  	"core-js/stable/array/virtual/with": [
  	"es.array.with"
  ],
  	"core-js/stable/array/with": [
  	"es.array.with"
  ],
  	"core-js/stable/atob": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.atob",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/stable/btoa": [
  	"es.error.to-string",
  	"es.object.to-string",
  	"web.btoa",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/stable/clear-immediate": [
  	"web.immediate"
  ],
  	"core-js/stable/data-view": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.data-view",
  	"es.object.to-string"
  ],
  	"core-js/stable/date": [
  	"es.date.get-year",
  	"es.date.now",
  	"es.date.set-year",
  	"es.date.to-gmt-string",
  	"es.date.to-iso-string",
  	"es.date.to-json",
  	"es.date.to-primitive",
  	"es.date.to-string"
  ],
  	"core-js/stable/date/get-year": [
  	"es.date.get-year"
  ],
  	"core-js/stable/date/now": [
  	"es.date.now"
  ],
  	"core-js/stable/date/set-year": [
  	"es.date.set-year"
  ],
  	"core-js/stable/date/to-gmt-string": [
  	"es.date.to-gmt-string"
  ],
  	"core-js/stable/date/to-iso-string": [
  	"es.date.to-iso-string",
  	"es.date.to-json"
  ],
  	"core-js/stable/date/to-json": [
  	"es.date.to-json"
  ],
  	"core-js/stable/date/to-primitive": [
  	"es.date.to-primitive"
  ],
  	"core-js/stable/date/to-string": [
  	"es.date.to-string"
  ],
  	"core-js/stable/dom-collections": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/dom-collections/for-each": [
  	"web.dom-collections.for-each"
  ],
  	"core-js/stable/dom-collections/iterator": [
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/dom-exception": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/stable/dom-exception/constructor": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack"
  ],
  	"core-js/stable/dom-exception/to-string-tag": [
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/stable/error": [
  	"es.error.cause",
  	"es.error.to-string"
  ],
  	"core-js/stable/error/constructor": [
  	"es.error.cause"
  ],
  	"core-js/stable/error/to-string": [
  	"es.error.to-string"
  ],
  	"core-js/stable/escape": [
  	"es.escape"
  ],
  	"core-js/stable/function": [
  	"es.function.bind",
  	"es.function.has-instance",
  	"es.function.name"
  ],
  	"core-js/stable/function/bind": [
  	"es.function.bind"
  ],
  	"core-js/stable/function/has-instance": [
  	"es.function.has-instance"
  ],
  	"core-js/stable/function/name": [
  	"es.function.name"
  ],
  	"core-js/stable/function/virtual": [
  	"es.function.bind"
  ],
  	"core-js/stable/function/virtual/bind": [
  	"es.function.bind"
  ],
  	"core-js/stable/get-iterator": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/get-iterator-method": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/global-this": [
  	"es.global-this"
  ],
  	"core-js/stable/instance/at": [
  	"es.array.at",
  	"es.string.at-alternative"
  ],
  	"core-js/stable/instance/bind": [
  	"es.function.bind"
  ],
  	"core-js/stable/instance/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/stable/instance/concat": [
  	"es.array.concat"
  ],
  	"core-js/stable/instance/copy-within": [
  	"es.array.copy-within"
  ],
  	"core-js/stable/instance/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/stable/instance/entries": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/instance/every": [
  	"es.array.every"
  ],
  	"core-js/stable/instance/fill": [
  	"es.array.fill"
  ],
  	"core-js/stable/instance/filter": [
  	"es.array.filter"
  ],
  	"core-js/stable/instance/find": [
  	"es.array.find"
  ],
  	"core-js/stable/instance/find-index": [
  	"es.array.find-index"
  ],
  	"core-js/stable/instance/find-last": [
  	"es.array.find-last"
  ],
  	"core-js/stable/instance/find-last-index": [
  	"es.array.find-last-index"
  ],
  	"core-js/stable/instance/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/stable/instance/flat": [
  	"es.array.flat",
  	"es.array.unscopables.flat"
  ],
  	"core-js/stable/instance/flat-map": [
  	"es.array.flat-map",
  	"es.array.unscopables.flat-map"
  ],
  	"core-js/stable/instance/for-each": [
  	"es.array.for-each",
  	"web.dom-collections.for-each"
  ],
  	"core-js/stable/instance/includes": [
  	"es.array.includes",
  	"es.string.includes"
  ],
  	"core-js/stable/instance/index-of": [
  	"es.array.index-of"
  ],
  	"core-js/stable/instance/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/stable/instance/keys": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/instance/last-index-of": [
  	"es.array.last-index-of"
  ],
  	"core-js/stable/instance/map": [
  	"es.array.map"
  ],
  	"core-js/stable/instance/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/stable/instance/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/stable/instance/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/stable/instance/push": [
  	"es.array.push"
  ],
  	"core-js/stable/instance/reduce": [
  	"es.array.reduce"
  ],
  	"core-js/stable/instance/reduce-right": [
  	"es.array.reduce-right"
  ],
  	"core-js/stable/instance/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/stable/instance/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/stable/instance/reverse": [
  	"es.array.reverse"
  ],
  	"core-js/stable/instance/slice": [
  	"es.array.slice"
  ],
  	"core-js/stable/instance/some": [
  	"es.array.some"
  ],
  	"core-js/stable/instance/sort": [
  	"es.array.sort"
  ],
  	"core-js/stable/instance/splice": [
  	"es.array.splice"
  ],
  	"core-js/stable/instance/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/stable/instance/to-reversed": [
  	"es.array.to-reversed"
  ],
  	"core-js/stable/instance/to-sorted": [
  	"es.array.sort",
  	"es.array.to-sorted"
  ],
  	"core-js/stable/instance/to-spliced": [
  	"es.array.to-spliced"
  ],
  	"core-js/stable/instance/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/stable/instance/trim": [
  	"es.string.trim"
  ],
  	"core-js/stable/instance/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/instance/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/instance/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/instance/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/instance/unshift": [
  	"es.array.unshift"
  ],
  	"core-js/stable/instance/values": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/instance/with": [
  	"es.array.with"
  ],
  	"core-js/stable/is-iterable": [
  	"es.array.iterator",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/json": [
  	"es.date.to-json",
  	"es.json.stringify",
  	"es.json.to-string-tag"
  ],
  	"core-js/stable/json/stringify": [
  	"es.date.to-json",
  	"es.json.stringify"
  ],
  	"core-js/stable/json/to-string-tag": [
  	"es.json.to-string-tag"
  ],
  	"core-js/stable/map": [
  	"es.array.iterator",
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/map/group-by": [
  	"es.map",
  	"es.map.group-by",
  	"es.object.to-string"
  ],
  	"core-js/stable/math": [
  	"es.math.acosh",
  	"es.math.asinh",
  	"es.math.atanh",
  	"es.math.cbrt",
  	"es.math.clz32",
  	"es.math.cosh",
  	"es.math.expm1",
  	"es.math.fround",
  	"es.math.hypot",
  	"es.math.imul",
  	"es.math.log10",
  	"es.math.log1p",
  	"es.math.log2",
  	"es.math.sign",
  	"es.math.sinh",
  	"es.math.tanh",
  	"es.math.to-string-tag",
  	"es.math.trunc"
  ],
  	"core-js/stable/math/acosh": [
  	"es.math.acosh"
  ],
  	"core-js/stable/math/asinh": [
  	"es.math.asinh"
  ],
  	"core-js/stable/math/atanh": [
  	"es.math.atanh"
  ],
  	"core-js/stable/math/cbrt": [
  	"es.math.cbrt"
  ],
  	"core-js/stable/math/clz32": [
  	"es.math.clz32"
  ],
  	"core-js/stable/math/cosh": [
  	"es.math.cosh"
  ],
  	"core-js/stable/math/expm1": [
  	"es.math.expm1"
  ],
  	"core-js/stable/math/fround": [
  	"es.math.fround"
  ],
  	"core-js/stable/math/hypot": [
  	"es.math.hypot"
  ],
  	"core-js/stable/math/imul": [
  	"es.math.imul"
  ],
  	"core-js/stable/math/log10": [
  	"es.math.log10"
  ],
  	"core-js/stable/math/log1p": [
  	"es.math.log1p"
  ],
  	"core-js/stable/math/log2": [
  	"es.math.log2"
  ],
  	"core-js/stable/math/sign": [
  	"es.math.sign"
  ],
  	"core-js/stable/math/sinh": [
  	"es.math.sinh"
  ],
  	"core-js/stable/math/tanh": [
  	"es.math.tanh"
  ],
  	"core-js/stable/math/to-string-tag": [
  	"es.math.to-string-tag"
  ],
  	"core-js/stable/math/trunc": [
  	"es.math.trunc"
  ],
  	"core-js/stable/number": [
  	"es.number.constructor",
  	"es.number.epsilon",
  	"es.number.is-finite",
  	"es.number.is-integer",
  	"es.number.is-nan",
  	"es.number.is-safe-integer",
  	"es.number.max-safe-integer",
  	"es.number.min-safe-integer",
  	"es.number.parse-float",
  	"es.number.parse-int",
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/stable/number/constructor": [
  	"es.number.constructor"
  ],
  	"core-js/stable/number/epsilon": [
  	"es.number.epsilon"
  ],
  	"core-js/stable/number/is-finite": [
  	"es.number.is-finite"
  ],
  	"core-js/stable/number/is-integer": [
  	"es.number.is-integer"
  ],
  	"core-js/stable/number/is-nan": [
  	"es.number.is-nan"
  ],
  	"core-js/stable/number/is-safe-integer": [
  	"es.number.is-safe-integer"
  ],
  	"core-js/stable/number/max-safe-integer": [
  	"es.number.max-safe-integer"
  ],
  	"core-js/stable/number/min-safe-integer": [
  	"es.number.min-safe-integer"
  ],
  	"core-js/stable/number/parse-float": [
  	"es.number.parse-float"
  ],
  	"core-js/stable/number/parse-int": [
  	"es.number.parse-int"
  ],
  	"core-js/stable/number/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/stable/number/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/stable/number/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/stable/number/virtual": [
  	"es.number.to-exponential",
  	"es.number.to-fixed",
  	"es.number.to-precision"
  ],
  	"core-js/stable/number/virtual/to-exponential": [
  	"es.number.to-exponential"
  ],
  	"core-js/stable/number/virtual/to-fixed": [
  	"es.number.to-fixed"
  ],
  	"core-js/stable/number/virtual/to-precision": [
  	"es.number.to-precision"
  ],
  	"core-js/stable/object": [
  	"es.symbol",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.assign",
  	"es.object.create",
  	"es.object.define-getter",
  	"es.object.define-properties",
  	"es.object.define-property",
  	"es.object.define-setter",
  	"es.object.entries",
  	"es.object.freeze",
  	"es.object.from-entries",
  	"es.object.get-own-property-descriptor",
  	"es.object.get-own-property-descriptors",
  	"es.object.get-own-property-names",
  	"es.object.get-prototype-of",
  	"es.object.group-by",
  	"es.object.has-own",
  	"es.object.is",
  	"es.object.is-extensible",
  	"es.object.is-frozen",
  	"es.object.is-sealed",
  	"es.object.keys",
  	"es.object.lookup-getter",
  	"es.object.lookup-setter",
  	"es.object.prevent-extensions",
  	"es.object.proto",
  	"es.object.seal",
  	"es.object.set-prototype-of",
  	"es.object.to-string",
  	"es.object.values",
  	"es.reflect.to-string-tag",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/object/assign": [
  	"es.object.assign"
  ],
  	"core-js/stable/object/create": [
  	"es.object.create"
  ],
  	"core-js/stable/object/define-getter": [
  	"es.object.define-getter"
  ],
  	"core-js/stable/object/define-properties": [
  	"es.object.define-properties"
  ],
  	"core-js/stable/object/define-property": [
  	"es.object.define-property"
  ],
  	"core-js/stable/object/define-setter": [
  	"es.object.define-setter"
  ],
  	"core-js/stable/object/entries": [
  	"es.object.entries"
  ],
  	"core-js/stable/object/freeze": [
  	"es.object.freeze"
  ],
  	"core-js/stable/object/from-entries": [
  	"es.array.iterator",
  	"es.object.from-entries",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/object/get-own-property-descriptor": [
  	"es.object.get-own-property-descriptor"
  ],
  	"core-js/stable/object/get-own-property-descriptors": [
  	"es.object.get-own-property-descriptors"
  ],
  	"core-js/stable/object/get-own-property-names": [
  	"es.object.get-own-property-names"
  ],
  	"core-js/stable/object/get-own-property-symbols": [
  	"es.symbol"
  ],
  	"core-js/stable/object/get-prototype-of": [
  	"es.object.get-prototype-of"
  ],
  	"core-js/stable/object/group-by": [
  	"es.object.create",
  	"es.object.group-by"
  ],
  	"core-js/stable/object/has-own": [
  	"es.object.has-own"
  ],
  	"core-js/stable/object/is": [
  	"es.object.is"
  ],
  	"core-js/stable/object/is-extensible": [
  	"es.object.is-extensible"
  ],
  	"core-js/stable/object/is-frozen": [
  	"es.object.is-frozen"
  ],
  	"core-js/stable/object/is-sealed": [
  	"es.object.is-sealed"
  ],
  	"core-js/stable/object/keys": [
  	"es.object.keys"
  ],
  	"core-js/stable/object/lookup-getter": [
  	"es.object.lookup-getter"
  ],
  	"core-js/stable/object/lookup-setter": [
  	"es.object.lookup-setter"
  ],
  	"core-js/stable/object/prevent-extensions": [
  	"es.object.prevent-extensions"
  ],
  	"core-js/stable/object/proto": [
  	"es.object.proto"
  ],
  	"core-js/stable/object/seal": [
  	"es.object.seal"
  ],
  	"core-js/stable/object/set-prototype-of": [
  	"es.object.set-prototype-of"
  ],
  	"core-js/stable/object/to-string": [
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/stable/object/values": [
  	"es.object.values"
  ],
  	"core-js/stable/parse-float": [
  	"es.parse-float"
  ],
  	"core-js/stable/parse-int": [
  	"es.parse-int"
  ],
  	"core-js/stable/promise": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.promise.any",
  	"es.promise.finally",
  	"es.promise.with-resolvers",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/promise/all-settled": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.all-settled",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/promise/any": [
  	"es.aggregate-error",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.any",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/promise/finally": [
  	"es.object.to-string",
  	"es.promise",
  	"es.promise.finally"
  ],
  	"core-js/stable/promise/with-resolvers": [
  	"es.promise",
  	"es.promise.with-resolvers"
  ],
  	"core-js/stable/queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/stable/reflect": [
  	"es.object.to-string",
  	"es.reflect.apply",
  	"es.reflect.construct",
  	"es.reflect.define-property",
  	"es.reflect.delete-property",
  	"es.reflect.get",
  	"es.reflect.get-own-property-descriptor",
  	"es.reflect.get-prototype-of",
  	"es.reflect.has",
  	"es.reflect.is-extensible",
  	"es.reflect.own-keys",
  	"es.reflect.prevent-extensions",
  	"es.reflect.set",
  	"es.reflect.set-prototype-of",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/stable/reflect/apply": [
  	"es.reflect.apply"
  ],
  	"core-js/stable/reflect/construct": [
  	"es.reflect.construct"
  ],
  	"core-js/stable/reflect/define-property": [
  	"es.reflect.define-property"
  ],
  	"core-js/stable/reflect/delete-property": [
  	"es.reflect.delete-property"
  ],
  	"core-js/stable/reflect/get": [
  	"es.reflect.get"
  ],
  	"core-js/stable/reflect/get-own-property-descriptor": [
  	"es.reflect.get-own-property-descriptor"
  ],
  	"core-js/stable/reflect/get-prototype-of": [
  	"es.reflect.get-prototype-of"
  ],
  	"core-js/stable/reflect/has": [
  	"es.reflect.has"
  ],
  	"core-js/stable/reflect/is-extensible": [
  	"es.reflect.is-extensible"
  ],
  	"core-js/stable/reflect/own-keys": [
  	"es.reflect.own-keys"
  ],
  	"core-js/stable/reflect/prevent-extensions": [
  	"es.reflect.prevent-extensions"
  ],
  	"core-js/stable/reflect/set": [
  	"es.reflect.set"
  ],
  	"core-js/stable/reflect/set-prototype-of": [
  	"es.reflect.set-prototype-of"
  ],
  	"core-js/stable/reflect/to-string-tag": [
  	"es.reflect.to-string-tag"
  ],
  	"core-js/stable/regexp": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.flags",
  	"es.regexp.sticky",
  	"es.regexp.test",
  	"es.regexp.to-string",
  	"es.string.match",
  	"es.string.replace",
  	"es.string.search",
  	"es.string.split"
  ],
  	"core-js/stable/regexp/constructor": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/stable/regexp/dot-all": [
  	"es.regexp.constructor",
  	"es.regexp.dot-all",
  	"es.regexp.exec"
  ],
  	"core-js/stable/regexp/flags": [
  	"es.regexp.flags"
  ],
  	"core-js/stable/regexp/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/stable/regexp/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/stable/regexp/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/stable/regexp/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/stable/regexp/sticky": [
  	"es.regexp.constructor",
  	"es.regexp.exec",
  	"es.regexp.sticky"
  ],
  	"core-js/stable/regexp/test": [
  	"es.regexp.exec",
  	"es.regexp.test"
  ],
  	"core-js/stable/regexp/to-string": [
  	"es.regexp.to-string"
  ],
  	"core-js/stable/self": [
  	"web.self"
  ],
  	"core-js/stable/set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.set",
  	"es.set.difference.v2",
  	"es.set.intersection.v2",
  	"es.set.is-disjoint-from.v2",
  	"es.set.is-subset-of.v2",
  	"es.set.is-superset-of.v2",
  	"es.set.symmetric-difference.v2",
  	"es.set.union.v2",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/set-immediate": [
  	"web.immediate"
  ],
  	"core-js/stable/set-interval": [
  	"web.timers"
  ],
  	"core-js/stable/set-timeout": [
  	"web.timers"
  ],
  	"core-js/stable/set/difference": [
  	"es.set",
  	"es.set.difference.v2"
  ],
  	"core-js/stable/set/intersection": [
  	"es.set",
  	"es.set.intersection.v2"
  ],
  	"core-js/stable/set/is-disjoint-from": [
  	"es.set",
  	"es.set.is-disjoint-from.v2"
  ],
  	"core-js/stable/set/is-subset-of": [
  	"es.set",
  	"es.set.is-subset-of.v2"
  ],
  	"core-js/stable/set/is-superset-of": [
  	"es.set",
  	"es.set.is-superset-of.v2"
  ],
  	"core-js/stable/set/symmetric-difference": [
  	"es.set",
  	"es.set.symmetric-difference.v2"
  ],
  	"core-js/stable/set/union": [
  	"es.set",
  	"es.set.union.v2"
  ],
  	"core-js/stable/string": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.from-code-point",
  	"es.string.includes",
  	"es.string.is-well-formed",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.raw",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.to-well-formed",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup"
  ],
  	"core-js/stable/string/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/stable/string/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/stable/string/big": [
  	"es.string.big"
  ],
  	"core-js/stable/string/blink": [
  	"es.string.blink"
  ],
  	"core-js/stable/string/bold": [
  	"es.string.bold"
  ],
  	"core-js/stable/string/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/stable/string/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/stable/string/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/stable/string/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/stable/string/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/stable/string/from-code-point": [
  	"es.string.from-code-point"
  ],
  	"core-js/stable/string/includes": [
  	"es.string.includes"
  ],
  	"core-js/stable/string/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/stable/string/italics": [
  	"es.string.italics"
  ],
  	"core-js/stable/string/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/stable/string/link": [
  	"es.string.link"
  ],
  	"core-js/stable/string/match": [
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/stable/string/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/stable/string/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/stable/string/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/stable/string/raw": [
  	"es.string.raw"
  ],
  	"core-js/stable/string/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/stable/string/replace": [
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/stable/string/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/stable/string/search": [
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/stable/string/small": [
  	"es.string.small"
  ],
  	"core-js/stable/string/split": [
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/stable/string/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/stable/string/strike": [
  	"es.string.strike"
  ],
  	"core-js/stable/string/sub": [
  	"es.string.sub"
  ],
  	"core-js/stable/string/substr": [
  	"es.string.substr"
  ],
  	"core-js/stable/string/sup": [
  	"es.string.sup"
  ],
  	"core-js/stable/string/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/stable/string/trim": [
  	"es.string.trim"
  ],
  	"core-js/stable/string/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/string/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/string/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/string/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/string/virtual": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.at-alternative",
  	"es.string.code-point-at",
  	"es.string.ends-with",
  	"es.string.includes",
  	"es.string.iterator",
  	"es.string.match",
  	"es.string.match-all",
  	"es.string.pad-end",
  	"es.string.pad-start",
  	"es.string.repeat",
  	"es.string.replace",
  	"es.string.replace-all",
  	"es.string.search",
  	"es.string.split",
  	"es.string.starts-with",
  	"es.string.substr",
  	"es.string.trim",
  	"es.string.trim-end",
  	"es.string.trim-start",
  	"es.string.anchor",
  	"es.string.big",
  	"es.string.blink",
  	"es.string.bold",
  	"es.string.fixed",
  	"es.string.fontcolor",
  	"es.string.fontsize",
  	"es.string.italics",
  	"es.string.link",
  	"es.string.small",
  	"es.string.strike",
  	"es.string.sub",
  	"es.string.sup"
  ],
  	"core-js/stable/string/virtual/anchor": [
  	"es.string.anchor"
  ],
  	"core-js/stable/string/virtual/at": [
  	"es.string.at-alternative"
  ],
  	"core-js/stable/string/virtual/big": [
  	"es.string.big"
  ],
  	"core-js/stable/string/virtual/blink": [
  	"es.string.blink"
  ],
  	"core-js/stable/string/virtual/bold": [
  	"es.string.bold"
  ],
  	"core-js/stable/string/virtual/code-point-at": [
  	"es.string.code-point-at"
  ],
  	"core-js/stable/string/virtual/ends-with": [
  	"es.string.ends-with"
  ],
  	"core-js/stable/string/virtual/fixed": [
  	"es.string.fixed"
  ],
  	"core-js/stable/string/virtual/fontcolor": [
  	"es.string.fontcolor"
  ],
  	"core-js/stable/string/virtual/fontsize": [
  	"es.string.fontsize"
  ],
  	"core-js/stable/string/virtual/includes": [
  	"es.string.includes"
  ],
  	"core-js/stable/string/virtual/is-well-formed": [
  	"es.string.is-well-formed"
  ],
  	"core-js/stable/string/virtual/italics": [
  	"es.string.italics"
  ],
  	"core-js/stable/string/virtual/iterator": [
  	"es.object.to-string",
  	"es.string.iterator"
  ],
  	"core-js/stable/string/virtual/link": [
  	"es.string.link"
  ],
  	"core-js/stable/string/virtual/match-all": [
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/stable/string/virtual/pad-end": [
  	"es.string.pad-end"
  ],
  	"core-js/stable/string/virtual/pad-start": [
  	"es.string.pad-start"
  ],
  	"core-js/stable/string/virtual/repeat": [
  	"es.string.repeat"
  ],
  	"core-js/stable/string/virtual/replace-all": [
  	"es.regexp.exec",
  	"es.string.replace",
  	"es.string.replace-all"
  ],
  	"core-js/stable/string/virtual/small": [
  	"es.string.small"
  ],
  	"core-js/stable/string/virtual/starts-with": [
  	"es.string.starts-with"
  ],
  	"core-js/stable/string/virtual/strike": [
  	"es.string.strike"
  ],
  	"core-js/stable/string/virtual/sub": [
  	"es.string.sub"
  ],
  	"core-js/stable/string/virtual/substr": [
  	"es.string.substr"
  ],
  	"core-js/stable/string/virtual/sup": [
  	"es.string.sup"
  ],
  	"core-js/stable/string/virtual/to-well-formed": [
  	"es.string.to-well-formed"
  ],
  	"core-js/stable/string/virtual/trim": [
  	"es.string.trim"
  ],
  	"core-js/stable/string/virtual/trim-end": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/string/virtual/trim-left": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/string/virtual/trim-right": [
  	"es.string.trim-end"
  ],
  	"core-js/stable/string/virtual/trim-start": [
  	"es.string.trim-start"
  ],
  	"core-js/stable/structured-clone": [
  	"es.error.to-string",
  	"es.array.iterator",
  	"es.map",
  	"es.object.keys",
  	"es.object.to-string",
  	"es.set",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.structured-clone"
  ],
  	"core-js/stable/symbol": [
  	"es.symbol",
  	"es.symbol.description",
  	"es.symbol.async-iterator",
  	"es.symbol.has-instance",
  	"es.symbol.is-concat-spreadable",
  	"es.symbol.iterator",
  	"es.symbol.match",
  	"es.symbol.match-all",
  	"es.symbol.replace",
  	"es.symbol.search",
  	"es.symbol.species",
  	"es.symbol.split",
  	"es.symbol.to-primitive",
  	"es.symbol.to-string-tag",
  	"es.symbol.unscopables",
  	"es.array.concat",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/symbol/async-iterator": [
  	"es.symbol.async-iterator"
  ],
  	"core-js/stable/symbol/description": [
  	"es.symbol.description"
  ],
  	"core-js/stable/symbol/for": [
  	"es.symbol"
  ],
  	"core-js/stable/symbol/has-instance": [
  	"es.symbol.has-instance",
  	"es.function.has-instance"
  ],
  	"core-js/stable/symbol/is-concat-spreadable": [
  	"es.symbol.is-concat-spreadable",
  	"es.array.concat"
  ],
  	"core-js/stable/symbol/iterator": [
  	"es.symbol.iterator",
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.string.iterator",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/symbol/key-for": [
  	"es.symbol"
  ],
  	"core-js/stable/symbol/match": [
  	"es.symbol.match",
  	"es.regexp.exec",
  	"es.string.match"
  ],
  	"core-js/stable/symbol/match-all": [
  	"es.symbol.match-all",
  	"es.object.to-string",
  	"es.regexp.exec",
  	"es.string.match-all"
  ],
  	"core-js/stable/symbol/replace": [
  	"es.symbol.replace",
  	"es.regexp.exec",
  	"es.string.replace"
  ],
  	"core-js/stable/symbol/search": [
  	"es.symbol.search",
  	"es.regexp.exec",
  	"es.string.search"
  ],
  	"core-js/stable/symbol/species": [
  	"es.symbol.species"
  ],
  	"core-js/stable/symbol/split": [
  	"es.symbol.split",
  	"es.regexp.exec",
  	"es.string.split"
  ],
  	"core-js/stable/symbol/to-primitive": [
  	"es.symbol.to-primitive",
  	"es.date.to-primitive"
  ],
  	"core-js/stable/symbol/to-string-tag": [
  	"es.symbol.to-string-tag",
  	"es.json.to-string-tag",
  	"es.math.to-string-tag",
  	"es.object.to-string",
  	"es.reflect.to-string-tag"
  ],
  	"core-js/stable/symbol/unscopables": [
  	"es.symbol.unscopables"
  ],
  	"core-js/stable/typed-array": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.float64-array",
  	"es.typed-array.int8-array",
  	"es.typed-array.int16-array",
  	"es.typed-array.int32-array",
  	"es.typed-array.uint8-array",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.uint16-array",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/at": [
  	"es.typed-array.at"
  ],
  	"core-js/stable/typed-array/copy-within": [
  	"es.typed-array.copy-within"
  ],
  	"core-js/stable/typed-array/entries": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/stable/typed-array/every": [
  	"es.typed-array.every"
  ],
  	"core-js/stable/typed-array/fill": [
  	"es.typed-array.fill"
  ],
  	"core-js/stable/typed-array/filter": [
  	"es.typed-array.filter"
  ],
  	"core-js/stable/typed-array/find": [
  	"es.typed-array.find"
  ],
  	"core-js/stable/typed-array/find-index": [
  	"es.typed-array.find-index"
  ],
  	"core-js/stable/typed-array/find-last": [
  	"es.typed-array.find-last"
  ],
  	"core-js/stable/typed-array/find-last-index": [
  	"es.typed-array.find-last-index"
  ],
  	"core-js/stable/typed-array/float32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/float64-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.float64-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/for-each": [
  	"es.typed-array.for-each"
  ],
  	"core-js/stable/typed-array/from": [
  	"es.typed-array.from"
  ],
  	"core-js/stable/typed-array/includes": [
  	"es.typed-array.includes"
  ],
  	"core-js/stable/typed-array/index-of": [
  	"es.typed-array.index-of"
  ],
  	"core-js/stable/typed-array/int16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/int32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/int8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.int8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/iterator": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/stable/typed-array/join": [
  	"es.typed-array.join"
  ],
  	"core-js/stable/typed-array/keys": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/stable/typed-array/last-index-of": [
  	"es.typed-array.last-index-of"
  ],
  	"core-js/stable/typed-array/map": [
  	"es.typed-array.map"
  ],
  	"core-js/stable/typed-array/methods": [
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/of": [
  	"es.typed-array.of"
  ],
  	"core-js/stable/typed-array/reduce": [
  	"es.typed-array.reduce"
  ],
  	"core-js/stable/typed-array/reduce-right": [
  	"es.typed-array.reduce-right"
  ],
  	"core-js/stable/typed-array/reverse": [
  	"es.typed-array.reverse"
  ],
  	"core-js/stable/typed-array/set": [
  	"es.typed-array.set"
  ],
  	"core-js/stable/typed-array/slice": [
  	"es.typed-array.slice"
  ],
  	"core-js/stable/typed-array/some": [
  	"es.typed-array.some"
  ],
  	"core-js/stable/typed-array/sort": [
  	"es.typed-array.sort"
  ],
  	"core-js/stable/typed-array/subarray": [
  	"es.typed-array.subarray"
  ],
  	"core-js/stable/typed-array/to-locale-string": [
  	"es.typed-array.to-locale-string"
  ],
  	"core-js/stable/typed-array/to-reversed": [
  	"es.typed-array.to-reversed"
  ],
  	"core-js/stable/typed-array/to-sorted": [
  	"es.typed-array.sort",
  	"es.typed-array.to-sorted"
  ],
  	"core-js/stable/typed-array/to-string": [
  	"es.typed-array.to-string"
  ],
  	"core-js/stable/typed-array/uint16-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint16-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/uint32-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint32-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/uint8-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/uint8-clamped-array": [
  	"es.array-buffer.constructor",
  	"es.array-buffer.slice",
  	"es.object.to-string",
  	"es.string.iterator",
  	"es.typed-array.uint8-clamped-array",
  	"es.typed-array.at",
  	"es.typed-array.copy-within",
  	"es.typed-array.every",
  	"es.typed-array.fill",
  	"es.typed-array.filter",
  	"es.typed-array.find",
  	"es.typed-array.find-index",
  	"es.typed-array.find-last",
  	"es.typed-array.find-last-index",
  	"es.typed-array.for-each",
  	"es.typed-array.from",
  	"es.typed-array.includes",
  	"es.typed-array.index-of",
  	"es.typed-array.iterator",
  	"es.typed-array.join",
  	"es.typed-array.last-index-of",
  	"es.typed-array.map",
  	"es.typed-array.of",
  	"es.typed-array.reduce",
  	"es.typed-array.reduce-right",
  	"es.typed-array.reverse",
  	"es.typed-array.set",
  	"es.typed-array.slice",
  	"es.typed-array.some",
  	"es.typed-array.sort",
  	"es.typed-array.subarray",
  	"es.typed-array.to-locale-string",
  	"es.typed-array.to-reversed",
  	"es.typed-array.to-sorted",
  	"es.typed-array.to-string",
  	"es.typed-array.with"
  ],
  	"core-js/stable/typed-array/values": [
  	"es.object.to-string",
  	"es.typed-array.iterator"
  ],
  	"core-js/stable/typed-array/with": [
  	"es.typed-array.with"
  ],
  	"core-js/stable/unescape": [
  	"es.unescape"
  ],
  	"core-js/stable/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/stable/url-search-params": [
  	"web.dom-collections.iterator",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/stable/url/can-parse": [
  	"web.url",
  	"web.url.can-parse"
  ],
  	"core-js/stable/url/parse": [
  	"web.url",
  	"web.url.parse"
  ],
  	"core-js/stable/url/to-json": [
  	"web.url.to-json"
  ],
  	"core-js/stable/weak-map": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-map",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stable/weak-set": [
  	"es.array.iterator",
  	"es.object.to-string",
  	"es.weak-set",
  	"web.dom-collections.iterator"
  ],
  	"core-js/stage": [
  	"es.map",
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/stage/0": [
  	"es.map",
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/stage/1": [
  	"es.map",
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.metadata",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of"
  ],
  	"core-js/stage/2": [
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.metadata",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.emplace",
  	"esnext.map.group-by",
  	"esnext.math.f16round",
  	"esnext.math.sum-precise",
  	"esnext.object.has-own",
  	"esnext.object.group-by",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.regexp.escape",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.typed-array.at",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.emplace"
  ],
  	"core-js/stage/2.7": [
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.metadata",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.group-by",
  	"esnext.math.f16round",
  	"esnext.math.sum-precise",
  	"esnext.object.has-own",
  	"esnext.object.group-by",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose",
  	"esnext.symbol.metadata",
  	"esnext.typed-array.at",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/stage/3": [
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.set-float16",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.metadata",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.map",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.group-by",
  	"esnext.math.f16round",
  	"esnext.object.has-own",
  	"esnext.object.group-by",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.with-resolvers",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.dispose",
  	"esnext.symbol.metadata",
  	"esnext.typed-array.at",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex"
  ],
  	"core-js/stage/4": [
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.array.at",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.global-this",
  	"esnext.map.group-by",
  	"esnext.object.has-own",
  	"esnext.object.group-by",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.with-resolvers",
  	"esnext.set.difference.v2",
  	"esnext.set.intersection.v2",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.union.v2",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.typed-array.at",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.with"
  ],
  	"core-js/stage/pre": [
  	"es.map",
  	"es.string.at-alternative",
  	"esnext.aggregate-error",
  	"esnext.suppressed-error.constructor",
  	"esnext.array.from-async",
  	"esnext.array.at",
  	"esnext.array.filter-out",
  	"esnext.array.filter-reject",
  	"esnext.array.find-last",
  	"esnext.array.find-last-index",
  	"esnext.array.group",
  	"esnext.array.group-by",
  	"esnext.array.group-by-to-map",
  	"esnext.array.group-to-map",
  	"esnext.array.is-template-object",
  	"esnext.array.last-index",
  	"esnext.array.last-item",
  	"esnext.array.to-reversed",
  	"esnext.array.to-sorted",
  	"esnext.array.to-spliced",
  	"esnext.array.unique-by",
  	"esnext.array.with",
  	"esnext.array-buffer.detached",
  	"esnext.array-buffer.transfer",
  	"esnext.array-buffer.transfer-to-fixed-length",
  	"esnext.async-disposable-stack.constructor",
  	"esnext.async-iterator.constructor",
  	"esnext.async-iterator.as-indexed-pairs",
  	"esnext.async-iterator.async-dispose",
  	"esnext.async-iterator.drop",
  	"esnext.async-iterator.every",
  	"esnext.async-iterator.filter",
  	"esnext.async-iterator.find",
  	"esnext.async-iterator.flat-map",
  	"esnext.async-iterator.for-each",
  	"esnext.async-iterator.from",
  	"esnext.async-iterator.indexed",
  	"esnext.async-iterator.map",
  	"esnext.async-iterator.reduce",
  	"esnext.async-iterator.some",
  	"esnext.async-iterator.take",
  	"esnext.async-iterator.to-array",
  	"esnext.bigint.range",
  	"esnext.composite-key",
  	"esnext.composite-symbol",
  	"esnext.data-view.get-float16",
  	"esnext.data-view.get-uint8-clamped",
  	"esnext.data-view.set-float16",
  	"esnext.data-view.set-uint8-clamped",
  	"esnext.disposable-stack.constructor",
  	"esnext.function.demethodize",
  	"esnext.function.is-callable",
  	"esnext.function.is-constructor",
  	"esnext.function.metadata",
  	"esnext.function.un-this",
  	"esnext.global-this",
  	"esnext.iterator.constructor",
  	"esnext.iterator.as-indexed-pairs",
  	"esnext.iterator.dispose",
  	"esnext.iterator.drop",
  	"esnext.iterator.every",
  	"esnext.iterator.filter",
  	"esnext.iterator.find",
  	"esnext.iterator.flat-map",
  	"esnext.iterator.for-each",
  	"esnext.iterator.from",
  	"esnext.iterator.indexed",
  	"esnext.iterator.map",
  	"esnext.iterator.range",
  	"esnext.iterator.reduce",
  	"esnext.iterator.some",
  	"esnext.iterator.take",
  	"esnext.iterator.to-array",
  	"esnext.iterator.to-async",
  	"esnext.json.is-raw-json",
  	"esnext.json.parse",
  	"esnext.json.raw-json",
  	"esnext.map.delete-all",
  	"esnext.map.emplace",
  	"esnext.map.every",
  	"esnext.map.filter",
  	"esnext.map.find",
  	"esnext.map.find-key",
  	"esnext.map.from",
  	"esnext.map.group-by",
  	"esnext.map.includes",
  	"esnext.map.key-by",
  	"esnext.map.key-of",
  	"esnext.map.map-keys",
  	"esnext.map.map-values",
  	"esnext.map.merge",
  	"esnext.map.of",
  	"esnext.map.reduce",
  	"esnext.map.some",
  	"esnext.map.update",
  	"esnext.map.update-or-insert",
  	"esnext.map.upsert",
  	"esnext.math.clamp",
  	"esnext.math.deg-per-rad",
  	"esnext.math.degrees",
  	"esnext.math.fscale",
  	"esnext.math.f16round",
  	"esnext.math.iaddh",
  	"esnext.math.imulh",
  	"esnext.math.isubh",
  	"esnext.math.rad-per-deg",
  	"esnext.math.radians",
  	"esnext.math.scale",
  	"esnext.math.seeded-prng",
  	"esnext.math.signbit",
  	"esnext.math.sum-precise",
  	"esnext.math.umulh",
  	"esnext.number.from-string",
  	"esnext.number.range",
  	"esnext.object.has-own",
  	"esnext.object.iterate-entries",
  	"esnext.object.iterate-keys",
  	"esnext.object.iterate-values",
  	"esnext.object.group-by",
  	"esnext.observable",
  	"esnext.promise.all-settled",
  	"esnext.promise.any",
  	"esnext.promise.try",
  	"esnext.promise.with-resolvers",
  	"esnext.reflect.define-metadata",
  	"esnext.reflect.delete-metadata",
  	"esnext.reflect.get-metadata",
  	"esnext.reflect.get-metadata-keys",
  	"esnext.reflect.get-own-metadata",
  	"esnext.reflect.get-own-metadata-keys",
  	"esnext.reflect.has-metadata",
  	"esnext.reflect.has-own-metadata",
  	"esnext.reflect.metadata",
  	"esnext.regexp.escape",
  	"esnext.set.add-all",
  	"esnext.set.delete-all",
  	"esnext.set.difference.v2",
  	"esnext.set.difference",
  	"esnext.set.every",
  	"esnext.set.filter",
  	"esnext.set.find",
  	"esnext.set.from",
  	"esnext.set.intersection.v2",
  	"esnext.set.intersection",
  	"esnext.set.is-disjoint-from.v2",
  	"esnext.set.is-disjoint-from",
  	"esnext.set.is-subset-of.v2",
  	"esnext.set.is-subset-of",
  	"esnext.set.is-superset-of.v2",
  	"esnext.set.is-superset-of",
  	"esnext.set.join",
  	"esnext.set.map",
  	"esnext.set.of",
  	"esnext.set.reduce",
  	"esnext.set.some",
  	"esnext.set.symmetric-difference.v2",
  	"esnext.set.symmetric-difference",
  	"esnext.set.union.v2",
  	"esnext.set.union",
  	"esnext.string.at",
  	"esnext.string.cooked",
  	"esnext.string.code-points",
  	"esnext.string.dedent",
  	"esnext.string.is-well-formed",
  	"esnext.string.match-all",
  	"esnext.string.replace-all",
  	"esnext.string.to-well-formed",
  	"esnext.symbol.async-dispose",
  	"esnext.symbol.custom-matcher",
  	"esnext.symbol.dispose",
  	"esnext.symbol.is-registered-symbol",
  	"esnext.symbol.is-registered",
  	"esnext.symbol.is-well-known-symbol",
  	"esnext.symbol.is-well-known",
  	"esnext.symbol.matcher",
  	"esnext.symbol.metadata",
  	"esnext.symbol.metadata-key",
  	"esnext.symbol.observable",
  	"esnext.symbol.pattern-match",
  	"esnext.symbol.replace-all",
  	"esnext.typed-array.from-async",
  	"esnext.typed-array.at",
  	"esnext.typed-array.filter-out",
  	"esnext.typed-array.filter-reject",
  	"esnext.typed-array.find-last",
  	"esnext.typed-array.find-last-index",
  	"esnext.typed-array.group-by",
  	"esnext.typed-array.to-reversed",
  	"esnext.typed-array.to-sorted",
  	"esnext.typed-array.to-spliced",
  	"esnext.typed-array.unique-by",
  	"esnext.typed-array.with",
  	"esnext.uint8-array.from-base64",
  	"esnext.uint8-array.from-hex",
  	"esnext.uint8-array.to-base64",
  	"esnext.uint8-array.to-hex",
  	"esnext.weak-map.delete-all",
  	"esnext.weak-map.from",
  	"esnext.weak-map.of",
  	"esnext.weak-map.emplace",
  	"esnext.weak-map.upsert",
  	"esnext.weak-set.add-all",
  	"esnext.weak-set.delete-all",
  	"esnext.weak-set.from",
  	"esnext.weak-set.of",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/web": [
  	"web.atob",
  	"web.btoa",
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag",
  	"web.immediate",
  	"web.queue-microtask",
  	"web.self",
  	"web.structured-clone",
  	"web.timers",
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/web/dom-collections": [
  	"web.dom-collections.for-each",
  	"web.dom-collections.iterator"
  ],
  	"core-js/web/dom-exception": [
  	"es.error.to-string",
  	"web.dom-exception.constructor",
  	"web.dom-exception.stack",
  	"web.dom-exception.to-string-tag"
  ],
  	"core-js/web/immediate": [
  	"web.immediate"
  ],
  	"core-js/web/queue-microtask": [
  	"web.queue-microtask"
  ],
  	"core-js/web/structured-clone": [
  	"es.array.iterator",
  	"es.map",
  	"es.object.to-string",
  	"es.set",
  	"web.structured-clone"
  ],
  	"core-js/web/timers": [
  	"web.timers"
  ],
  	"core-js/web/url": [
  	"web.url",
  	"web.url.can-parse",
  	"web.url.parse",
  	"web.url.to-json",
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ],
  	"core-js/web/url-search-params": [
  	"web.url-search-params",
  	"web.url-search-params.delete",
  	"web.url-search-params.has",
  	"web.url-search-params.size"
  ]
  };

  var entries$1;
  var hasRequiredEntries;
  function requireEntries() {
    if (hasRequiredEntries) return entries$1;
    hasRequiredEntries = 1;
    entries$1 = require$$0$2;
    return entries$1;
  }

  var hasRequiredUtils$2;
  function requireUtils$2() {
    if (hasRequiredUtils$2) return utils$2;
    hasRequiredUtils$2 = 1;
    utils$2.__esModule = true;
    utils$2.BABEL_RUNTIME = void 0;
    utils$2.callMethod = callMethod;
    utils$2.coreJSModule = coreJSModule;
    utils$2.coreJSPureHelper = coreJSPureHelper;
    utils$2.isCoreJSSource = isCoreJSSource;
    var _babel = _interopRequireWildcard(require$$5);
    var _entries = _interopRequireDefault(requireEntries());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var BABEL_RUNTIME = "@babel/runtime-corejs3";
    utils$2.BABEL_RUNTIME = BABEL_RUNTIME;
    function callMethod(path, id) {
      var object = path.node.object;
      var context1, context2;
      if (t.isIdentifier(object)) {
        context1 = object;
        context2 = t.cloneNode(object);
      } else {
        context1 = path.scope.generateDeclaredUidIdentifier("context");
        context2 = t.assignmentExpression("=", t.cloneNode(context1), object);
      }
      path.replaceWith(t.memberExpression(t.callExpression(id, [context2]), t.identifier("call")));
      path.parentPath.unshiftContainer("arguments", context1);
    }
    function isCoreJSSource(source) {
      if (typeof source === "string") {
        source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase();
      }
      return Object.prototype.hasOwnProperty.call(_entries["default"], source) && _entries["default"][source];
    }
    function coreJSModule(name) {
      return "core-js/modules/" + name + ".js";
    }
    function coreJSPureHelper(name, useBabelRuntime, ext) {
      return useBabelRuntime ? BABEL_RUNTIME + "/core-js/" + name + ext : "core-js-pure/features/" + name + ".js";
    }
    return utils$2;
  }

  var hasRequiredLib$4;
  function requireLib$4() {
    if (hasRequiredLib$4) return lib$4;
    hasRequiredLib$4 = 1;
    lib$4.__esModule = true;
    lib$4["default"] = void 0;
    var _data = _interopRequireDefault(requireData());
    var _shippedProposals = _interopRequireDefault(requireShippedProposals());
    var _getModulesListForTargetVersion = _interopRequireDefault(requireGetModulesListForTargetVersion());
    var _builtInDefinitions = requireBuiltInDefinitions$1();
    var BabelRuntimePaths = _interopRequireWildcard(requireBabelRuntimeCorejs3Paths());
    var _usageFilters = _interopRequireDefault(requireUsageFilters());
    var _babel = _interopRequireWildcard(require$$5);
    var _utils = requireUtils$2();
    var _helperDefinePolyfillProvider = _interopRequireDefault(requireLib$6());
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function _extends() {
      _extends = Object.assign ? Object.assign.bind() : function (target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      return _extends.apply(this, arguments);
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var uniqueObjects = ["array", "string", "iterator", "async-iterator", "dom-collections"].map(function (v) {
      return new RegExp("[a-z]*\\." + v + "\\..*");
    });
    var esnextFallback = function esnextFallback(name, cb) {
      if (cb(name)) return true;
      if (!name.startsWith("es.")) return false;
      var fallback = "esnext." + name.slice(3);
      if (!_data["default"][fallback]) return false;
      return cb(fallback);
    };
    var _default = (0, _helperDefinePolyfillProvider["default"])(function (_ref2, _ref3) {
      var getUtils = _ref2.getUtils,
        method = _ref2.method,
        shouldInjectPolyfill = _ref2.shouldInjectPolyfill,
        createMetaResolver = _ref2.createMetaResolver,
        debug = _ref2.debug,
        babel = _ref2.babel;
      var _ref3$version = _ref3.version,
        version = _ref3$version === void 0 ? 3 : _ref3$version,
        proposals = _ref3.proposals,
        shippedProposals = _ref3.shippedProposals,
        _ref3$presetEnvCompat = _ref3[presetEnvCompat],
        _ref3$presetEnvCompat2 = _ref3$presetEnvCompat === void 0 ? {} : _ref3$presetEnvCompat,
        _ref3$presetEnvCompat3 = _ref3$presetEnvCompat2.noRuntimeName,
        noRuntimeName = _ref3$presetEnvCompat3 === void 0 ? false : _ref3$presetEnvCompat3,
        _ref3$runtimeCompat = _ref3[runtimeCompat],
        _ref3$runtimeCompat2 = _ref3$runtimeCompat === void 0 ? {} : _ref3$runtimeCompat,
        _ref3$runtimeCompat2$ = _ref3$runtimeCompat2.useBabelRuntime,
        useBabelRuntime = _ref3$runtimeCompat2$ === void 0 ? false : _ref3$runtimeCompat2$,
        _ref3$runtimeCompat2$2 = _ref3$runtimeCompat2.ext,
        ext = _ref3$runtimeCompat2$2 === void 0 ? ".js" : _ref3$runtimeCompat2$2;
      var isWebpack = babel.caller(function (caller) {
        return (caller == null ? void 0 : caller.name) === "babel-loader";
      });
      var resolve = createMetaResolver({
        global: _builtInDefinitions.BuiltIns,
        "static": _builtInDefinitions.StaticProperties,
        instance: _builtInDefinitions.InstanceProperties
      });
      var available = new Set((0, _getModulesListForTargetVersion["default"])(version));
      function getCoreJSPureBase(useProposalBase) {
        return useBabelRuntime ? useProposalBase ? _utils.BABEL_RUNTIME + "/core-js" : _utils.BABEL_RUNTIME + "/core-js-stable" : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
      }
      function maybeInjectGlobalImpl(name, utils) {
        if (shouldInjectPolyfill(name)) {
          debug(name);
          utils.injectGlobalImport((0, _utils.coreJSModule)(name), name);
          return true;
        }
        return false;
      }
      function maybeInjectGlobal(names, utils, fallback) {
        if (fallback === void 0) {
          fallback = true;
        }
        for (var _iterator = _createForOfIteratorHelperLoose(names), _step; !(_step = _iterator()).done;) {
          var name = _step.value;
          if (fallback) {
            esnextFallback(name, function (name) {
              return maybeInjectGlobalImpl(name, utils);
            });
          } else {
            maybeInjectGlobalImpl(name, utils);
          }
        }
      }
      function maybeInjectPure(desc, hint, utils, object) {
        if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) {
          var name = desc.name;
          var useProposalBase = false;
          if (proposals || shippedProposals && name.startsWith("esnext.")) {
            useProposalBase = true;
          } else if (name.startsWith("es.") && !available.has(name)) {
            useProposalBase = true;
          }
          if (useBabelRuntime && !(useProposalBase ? BabelRuntimePaths.proposals : BabelRuntimePaths.stable).has(desc.pure)) {
            return;
          }
          var coreJSPureBase = getCoreJSPureBase(useProposalBase);
          return utils.injectDefaultImport(coreJSPureBase + "/" + desc.pure + ext, hint);
        }
      }
      function isFeatureStable(name) {
        if (name.startsWith("esnext.")) {
          var esName = "es." + name.slice(7);
          return esName in _data["default"];
        }
        return true;
      }
      return {
        name: "corejs3",
        runtimeName: noRuntimeName ? null : _utils.BABEL_RUNTIME,
        polyfills: _data["default"],
        filterPolyfills: function filterPolyfills(name) {
          if (!available.has(name)) return false;
          if (proposals || method === "entry-global") return true;
          if (shippedProposals && _shippedProposals["default"].has(name)) {
            return true;
          }
          return isFeatureStable(name);
        },
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind !== "import") return;
          var modules = (0, _utils.isCoreJSSource)(meta.source);
          if (!modules) return;
          if (modules.length === 1 && meta.source === (0, _utils.coreJSModule)(modules[0]) && shouldInjectPolyfill(modules[0])) {
            debug(null);
            return;
          }
          var modulesSet = new Set(modules);
          var filteredModules = modules.filter(function (module) {
            if (!module.startsWith("esnext.")) return true;
            var stable = module.replace("esnext.", "es.");
            if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
              return false;
            }
            return true;
          });
          maybeInjectGlobal(filteredModules, utils, false);
          path.remove();
        },
        usageGlobal: function usageGlobal(meta, utils, path) {
          var resolved = resolve(meta);
          if (!resolved) return;
          if ((0, _usageFilters["default"])(resolved.desc, path)) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return uniqueObjects.some(function (v) {
                return v.test(m);
              }) ? m.includes(low) : true;
            });
          }
          maybeInjectGlobal(deps, utils);
          return true;
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t.callExpression(utils.injectDefaultImport((0, _utils.coreJSPureHelper)("is-iterable", useBabelRuntime, ext), "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (path.parentPath.isUpdateExpression()) return;
            if (t.isSuper(path.node.object)) {
              return;
            }
            if (meta.key === "Symbol.iterator") {
              if (!shouldInjectPolyfill("es.symbol.iterator")) return;
              var parent = path.parent,
                node = path.node;
              if (t.isCallExpression(parent, {
                callee: node
              })) {
                if (parent.arguments.length === 0) {
                  path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport((0, _utils.coreJSPureHelper)("get-iterator", useBabelRuntime, ext), "getIterator"), [node.object]));
                  path.skip();
                } else {
                  (0, _utils.callMethod)(path, utils.injectDefaultImport((0, _utils.coreJSPureHelper)("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"));
                }
              } else {
                path.replaceWith(t.callExpression(utils.injectDefaultImport((0, _utils.coreJSPureHelper)("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
              }
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          if ((0, _usageFilters["default"])(resolved.desc, path)) return;
          if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
            resolved = _extends({}, resolved, {
              desc: _extends({}, resolved.desc, {
                pure: resolved.desc.pure.slice(0, -6)
              })
            });
          }
          if (resolved.kind === "global") {
            var id = maybeInjectPure(resolved.desc, resolved.name, utils);
            if (id) path.replaceWith(id);
          } else if (resolved.kind === "static") {
            var _id = maybeInjectPure(resolved.desc, resolved.name, utils, meta.object);
            if (_id) path.replaceWith(_id);
          } else if (resolved.kind === "instance") {
            var _id2 = maybeInjectPure(resolved.desc, resolved.name + "InstanceProperty", utils, meta.object);
            if (!_id2) return;
            var _node = path.node;
            if (t.isCallExpression(path.parent, {
              callee: _node
            })) {
              (0, _utils.callMethod)(path, _id2);
            } else {
              path.replaceWith(t.callExpression(_id2, [_node.object]));
            }
          }
        },
        visitor: method === "usage-global" && {
          CallExpression: function CallExpression(path) {
            if (path.get("callee").isImport()) {
              var utils = getUtils(path);
              if (isWebpack) {
                maybeInjectGlobal(_builtInDefinitions.PromiseDependenciesWithIterators, utils);
              } else {
                maybeInjectGlobal(_builtInDefinitions.PromiseDependencies, utils);
              }
            }
          },
          Function: function Function(path) {
            if (path.node.async) {
              maybeInjectGlobal(_builtInDefinitions.PromiseDependencies, getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
          },
          SpreadElement: function SpreadElement(path) {
            if (!path.parentPath.isObjectExpression()) {
              maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
            }
          },
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              maybeInjectGlobal(_builtInDefinitions.CommonIterators, getUtils(path));
            }
          },
          Class: function Class(path) {
            var _path$node$decorators;
            var hasDecorators = ((_path$node$decorators = path.node.decorators) == null ? void 0 : _path$node$decorators.length) || path.node.body.body.some(function (el) {
              var _decorators;
              return (_decorators = el.decorators) == null ? void 0 : _decorators.length;
            });
            if (hasDecorators) {
              maybeInjectGlobal(_builtInDefinitions.DecoratorMetadataDependencies, getUtils(path));
            }
          }
        }
      };
    });
    lib$4["default"] = _default;
    return lib$4;
  }

  var lib$3 = {};

  var hasRequiredLib$3;
  function requireLib$3() {
    if (hasRequiredLib$3) return lib$3;
    hasRequiredLib$3 = 1;
    lib$3.__esModule = true;
    lib$3["default"] = void 0;
    var _helperDefinePolyfillProvider = _interopRequireDefault(requireLib$6());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var _default = (0, _helperDefinePolyfillProvider["default"])(function (_ref2, options) {
      var debug = _ref2.debug,
        targets = _ref2.targets,
        babel = _ref2.babel;
      if (!shallowEqual(targets, babel.targets())) {
        throw new Error("This plugin does not use the targets option. Only preset-env's targets" + " or top-level targets need to be configured for this plugin to work." + " See https://github.com/babel/babel-polyfills/issues/36 for more" + " details.");
      }
      var _options$runtimeCompa = options[runtimeCompat],
        _options$runtimeCompa2 = _options$runtimeCompa === void 0 ? {} : _options$runtimeCompa,
        _options$runtimeCompa3 = _options$runtimeCompa2.moduleName,
        moduleName = _options$runtimeCompa3 === void 0 ? null : _options$runtimeCompa3,
        _options$runtimeCompa4 = _options$runtimeCompa2.useBabelRuntime,
        useBabelRuntime = _options$runtimeCompa4 === void 0 ? false : _options$runtimeCompa4;
      return {
        name: "regenerator",
        polyfills: ["regenerator-runtime"],
        usageGlobal: function usageGlobal(meta, utils) {
          if (isRegenerator(meta)) {
            debug("regenerator-runtime");
            utils.injectGlobalImport("regenerator-runtime/runtime.js");
          }
        },
        usagePure: function usagePure(meta, utils, path) {
          if (isRegenerator(meta)) {
            var pureName = "regenerator-runtime";
            if (useBabelRuntime) {
              var _ref;
              var runtimeName = (_ref = moduleName != null ? moduleName : path.hub.file.get("runtimeHelpersModuleName")) != null ? _ref : "@babel/runtime";
              pureName = runtimeName + "/regenerator";
            }
            path.replaceWith(utils.injectDefaultImport(pureName, "regenerator-runtime"));
          }
        }
      };
    });
    lib$3["default"] = _default;
    var isRegenerator = function isRegenerator(meta) {
      return meta.kind === "global" && meta.name === "regeneratorRuntime";
    };
    function shallowEqual(obj1, obj2) {
      return JSON.stringify(obj1) === JSON.stringify(obj2);
    }
    return lib$3;
  }

  var babelPluginPolyfillRegenerator$1;
  var hasRequiredBabelPluginPolyfillRegenerator$1;
  function requireBabelPluginPolyfillRegenerator$1() {
    if (hasRequiredBabelPluginPolyfillRegenerator$1) return babelPluginPolyfillRegenerator$1;
    hasRequiredBabelPluginPolyfillRegenerator$1 = 1;
    function bool(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    babelPluginPolyfillRegenerator$1 = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? null : requireLib$3();
    return babelPluginPolyfillRegenerator$1;
  }

  var polyfills;
  var hasRequiredPolyfills;
  function requirePolyfills() {
    if (hasRequiredPolyfills) return polyfills;
    hasRequiredPolyfills = 1;
    var pluginCorejs2 = requireBabelPluginPolyfillCorejs2$1()["default"];
    var pluginCorejs3 = requireLib$4()["default"];
    var pluginRegenerator = requireBabelPluginPolyfillRegenerator$1()["default"];
    var pluginsCompat = "#__secret_key__@babel/runtime__compatibility";
    function createCorejs2Plugin(options) {
      return function (api, _, filename) {
        return pluginCorejs2(api, options, filename);
      };
    }
    function createCorejs3Plugin(options) {
      return function (api, _, filename) {
        return pluginCorejs3(api, options, filename);
      };
    }
    function createRegeneratorPlugin(options, useRuntimeRegenerator, corejsPlugin) {
      if (!useRuntimeRegenerator) return corejsPlugin != null ? corejsPlugin : undefined;
      return function (api, _, filename) {
        return Object.assign({}, pluginRegenerator(api, options, filename), {
          inherits: corejsPlugin != null ? corejsPlugin : undefined
        });
      };
    }
    polyfills = function createBasePolyfillsPlugin(_ref, runtimeVersion, absoluteImports) {
      var _polyfillOpts;
      var corejs = _ref.corejs,
        _ref$regenerator = _ref.regenerator,
        regenerator = _ref$regenerator === void 0 ? true : _ref$regenerator,
        moduleName = _ref.moduleName;
      var proposals = false;
      var rawVersion;
      if (typeof corejs === "object" && corejs !== null) {
        rawVersion = corejs.version;
        proposals = Boolean(corejs.proposals);
      } else {
        rawVersion = corejs;
      }
      var corejsVersion = rawVersion ? Number(rawVersion) : false;
      if (![false, 2, 3].includes(corejsVersion)) {
        throw new Error("The `core-js` version must be false, 2 or 3, but got " + JSON.stringify(rawVersion) + ".");
      }
      if (proposals && (!corejsVersion || corejsVersion < 3)) {
        throw new Error("The 'proposals' option is only supported when using 'corejs: 3'");
      }
      if (typeof regenerator !== "boolean") {
        throw new Error("The 'regenerator' option must be undefined, or a boolean.");
      }
      var polyfillOpts = (_polyfillOpts = {
        method: "usage-pure",
        absoluteImports: absoluteImports,
        proposals: proposals
      }, _polyfillOpts[pluginsCompat] = {
        useBabelRuntime: true,
        runtimeVersion: runtimeVersion,
        ext: "",
        moduleName: moduleName
      }, _polyfillOpts);
      return createRegeneratorPlugin(polyfillOpts, regenerator, corejsVersion === 2 ? createCorejs2Plugin(polyfillOpts) : corejsVersion === 3 ? createCorejs3Plugin(polyfillOpts) : null);
    };
    return polyfills;
  }

  (function (exports) {
    Object.defineProperty(exports, "createPolyfillPlugins", {
      get: function get() {
        return requirePolyfills();
      }
    });
  })(babel7);

  var transformRuntime = declare(function (api, options, dirname) {
    api.assertVersion("*");
    var _options$version = options.version,
      runtimeVersion = _options$version === void 0 ? "7.0.0-beta.0" : _options$version,
      _options$absoluteRunt = options.absoluteRuntime,
      absoluteRuntime = _options$absoluteRunt === void 0 ? false : _options$absoluteRunt,
      _options$moduleName = options.moduleName,
      moduleName = _options$moduleName === void 0 ? null : _options$moduleName;
    if (typeof absoluteRuntime !== "boolean" && typeof absoluteRuntime !== "string") {
      throw new Error("The 'absoluteRuntime' option must be undefined, a boolean, or a string.");
    }
    if (typeof runtimeVersion !== "string") {
      throw new Error("The 'version' option must be a version string.");
    }
    if (moduleName !== null && typeof moduleName !== "string") {
      throw new Error("The 'moduleName' option must be null or a string.");
    }
    {
      var DUAL_MODE_RUNTIME = "7.13.0";
      var supportsCJSDefault = hasMinVersion(DUAL_MODE_RUNTIME, runtimeVersion);
    }
    if (hasOwnProperty.call(options, "useBuiltIns")) {
      if (options["useBuiltIns"]) {
        throw new Error("The 'useBuiltIns' option has been removed. The @babel/runtime " + "module now uses builtins by default.");
      } else {
        throw new Error("The 'useBuiltIns' option has been removed. Use the 'corejs'" + "option to polyfill with `core-js` via @babel/runtime.");
      }
    }
    if (hasOwnProperty.call(options, "polyfill")) {
      if (options["polyfill"] === false) {
        throw new Error("The 'polyfill' option has been removed. The @babel/runtime " + "module now skips polyfilling by default.");
      } else {
        throw new Error("The 'polyfill' option has been removed. Use the 'corejs'" + "option to polyfill with `core-js` via @babel/runtime.");
      }
    }
    {
      var _options$useESModules = options.useESModules,
        useESModules = _options$useESModules === void 0 ? false : _options$useESModules;
      if (typeof useESModules !== "boolean" && useESModules !== "auto") {
        throw new Error("The 'useESModules' option must be undefined, or a boolean, or 'auto'.");
      }
      var esModules = useESModules === "auto" ? api.caller(function (caller) {
        return !!(caller != null && caller.supportsStaticESM);
      }) : useESModules;
    }
    {
      var _options$helpers = options.helpers,
        useRuntimeHelpers = _options$helpers === void 0 ? true : _options$helpers;
      if (typeof useRuntimeHelpers !== "boolean") {
        throw new Error("The 'helpers' option must be undefined, or a boolean.");
      }
    }
    var HEADER_HELPERS = new Set(["interopRequireWildcard", "interopRequireDefault"]);
    return {
      name: "transform-runtime",
      inherits: babel7.createPolyfillPlugins(options, runtimeVersion, absoluteRuntime),
      pre: function pre(file) {
        if (!useRuntimeHelpers) return;
        var modulePath;
        file.set("helperGenerator", function (name) {
          var _modulePath, _ref;
          (_modulePath = modulePath) != null ? _modulePath : modulePath = getRuntimePath((_ref = moduleName != null ? moduleName : file.get("runtimeHelpersModuleName")) != null ? _ref : "@babel/runtime", dirname, absoluteRuntime);
          {
            if (!(file.availableHelper != null && file.availableHelper(name, runtimeVersion))) {
              if (name === "regeneratorRuntime") {
                return arrowFunctionExpression$4([], identifier$e("regeneratorRuntime"));
              }
              return;
            }
          }
          var blockHoist = HEADER_HELPERS.has(name) && !isModule(file.path) ? 4 : undefined;
          var helperPath = modulePath + "/helpers/" + (esModules && file.path.node.sourceType === "module" ? "esm/" + name : name);
          if (absoluteRuntime) helperPath = resolveFSPath();
          return addDefaultImport(helperPath, name, blockHoist);
        });
        var cache = new Map();
        function addDefaultImport(source, nameHint, blockHoist, isHelper) {
          var cacheKey = isModule(file.path);
          var key = source + ":" + nameHint + ":" + (cacheKey || "");
          var cached = cache.get(key);
          if (cached) {
            cached = cloneNode$g(cached);
          } else {
            cached = addDefault(file.path, source, {
              importedInterop: supportsCJSDefault ? "compiled" : "uncompiled",
              nameHint: nameHint,
              blockHoist: blockHoist
            });
            cache.set(key, cached);
          }
          return cached;
        }
      }
    };
  });

  var _transformShorthandProperties = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-shorthand-properties",
      visitor: {
        ObjectMethod: function ObjectMethod(path) {
          var node = path.node;
          if (node.kind === "method") {
            var func = functionExpression$2(null, node.params, node.body, node.generator, node.async);
            func.returnType = node.returnType;
            var computedKey = toComputedKey$2(node);
            if (isStringLiteral$5(computedKey, {
              value: "__proto__"
            })) {
              path.replaceWith(objectProperty$1(computedKey, func, true));
            } else {
              path.replaceWith(objectProperty$1(node.key, func, node.computed));
            }
          }
        },
        ObjectProperty: function ObjectProperty(path) {
          var node = path.node;
          if (node.shorthand) {
            var computedKey = toComputedKey$2(node);
            if (isStringLiteral$5(computedKey, {
              value: "__proto__"
            })) {
              path.replaceWith(objectProperty$1(computedKey, node.value, true));
            } else {
              node.shorthand = false;
            }
          }
        }
      }
    };
  });

  var _transformSpread = declare(function (api, options) {
    var _api$assumption, _options$allowArrayLi;
    api.assertVersion("*");
    var iterableIsArray = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose;
    var arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
    function getSpreadLiteral(spread, scope) {
      if (iterableIsArray && !isIdentifier$f(spread.argument, {
        name: "arguments"
      })) {
        return spread.argument;
      } else {
        return scope.toArray(spread.argument, true, arrayLikeIsIterable);
      }
    }
    function hasHole(spread) {
      return spread.elements.some(function (el) {
        return el === null;
      });
    }
    function hasSpread(nodes) {
      for (var i = 0; i < nodes.length; i++) {
        if (isSpreadElement$1(nodes[i])) {
          return true;
        }
      }
      return false;
    }
    function push(_props, nodes) {
      if (!_props.length) return _props;
      nodes.push(arrayExpression$1(_props));
      return [];
    }
    function build(props, scope, file) {
      var nodes = [];
      var _props = [];
      for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done;) {
        var prop = _step.value;
        if (isSpreadElement$1(prop)) {
          _props = push(_props, nodes);
          var spreadLiteral = getSpreadLiteral(prop, scope);
          if (isArrayExpression$2(spreadLiteral) && hasHole(spreadLiteral)) {
            spreadLiteral = callExpression$c(file.addHelper("arrayWithoutHoles"), [spreadLiteral]);
          }
          nodes.push(spreadLiteral);
        } else {
          _props.push(prop);
        }
      }
      push(_props, nodes);
      return nodes;
    }
    return {
      name: "transform-spread",
      visitor: {
        ArrayExpression: function ArrayExpression(path) {
          var node = path.node,
            scope = path.scope;
          var elements = node.elements;
          if (!hasSpread(elements)) return;
          var nodes = build(elements, scope, this.file);
          var first = nodes[0];
          if (nodes.length === 1 && first !== elements[0].argument) {
            path.replaceWith(first);
            return;
          }
          if (!isArrayExpression$2(first)) {
            first = arrayExpression$1([]);
          } else {
            nodes.shift();
          }
          path.replaceWith(callExpression$c(memberExpression$a(first, identifier$e("concat")), nodes));
        },
        CallExpression: function CallExpression(path) {
          var node = path.node,
            scope = path.scope;
          var args = node.arguments;
          if (!hasSpread(args)) return;
          var calleePath = skipTransparentExprWrappers(path.get("callee"));
          if (calleePath.isSuper()) {
            throw path.buildCodeFrameError("It's not possible to compile spread arguments in `super()` without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
          }
          var contextLiteral = scope.buildUndefinedNode();
          node.arguments = [];
          var nodes;
          if (args.length === 1 && isIdentifier$f(args[0].argument, {
            name: "arguments"
          })) {
            nodes = [args[0].argument];
          } else {
            nodes = build(args, scope, this.file);
          }
          var first = nodes.shift();
          if (nodes.length) {
            node.arguments.push(callExpression$c(memberExpression$a(first, identifier$e("concat")), nodes));
          } else {
            node.arguments.push(first);
          }
          var callee = calleePath.node;
          if (isMemberExpression$8(callee)) {
            var temp = scope.maybeGenerateMemoised(callee.object);
            if (temp) {
              callee.object = assignmentExpression$b("=", temp, callee.object);
              contextLiteral = temp;
            } else {
              contextLiteral = cloneNode$g(callee.object);
            }
          }
          node.callee = memberExpression$a(node.callee, identifier$e("apply"));
          if (isSuper$3(contextLiteral)) {
            contextLiteral = thisExpression$4();
          }
          node.arguments.unshift(cloneNode$g(contextLiteral));
        },
        NewExpression: function NewExpression(path) {
          var node = path.node,
            scope = path.scope;
          if (!hasSpread(node.arguments)) return;
          var nodes = build(node.arguments, scope, this.file);
          var first = nodes.shift();
          var args;
          if (nodes.length) {
            args = callExpression$c(memberExpression$a(first, identifier$e("concat")), nodes);
          } else {
            args = first;
          }
          path.replaceWith(callExpression$c(path.hub.addHelper("construct"), [node.callee, args]));
        }
      }
    };
  });

  var _transformStickyRegex = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-sticky-regex",
      visitor: {
        RegExpLiteral: function RegExpLiteral(path) {
          var node = path.node;
          if (!node.flags.includes("y")) return;
          path.replaceWith(newExpression(identifier$e("RegExp"), [stringLiteral$6(node.pattern), stringLiteral$6(node.flags)]));
        }
      }
    };
  });

  var transformStrictMode = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-strict-mode",
      visitor: {
        Program: function Program(path) {
          var node = path.node;
          for (var _iterator = _createForOfIteratorHelperLoose(node.directives), _step; !(_step = _iterator()).done;) {
            var directive$1 = _step.value;
            if (directive$1.value.value === "use strict") return;
          }
          path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
        }
      }
    };
  });

  var _templateObject$9;
  var _transformTemplateLiterals = declare(function (api, options) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var ignoreToPrimitiveHint = (_api$assumption = api.assumption("ignoreToPrimitiveHint")) != null ? _api$assumption : options.loose;
    var mutableTemplateObject = (_api$assumption2 = api.assumption("mutableTemplateObject")) != null ? _api$assumption2 : options.loose;
    var helperName = "taggedTemplateLiteral";
    if (mutableTemplateObject) helperName += "Loose";
    function buildConcatCallExpressions(items) {
      var avail = true;
      return items.reduce(function (left, right) {
        var canBeInserted = isLiteral$5(right);
        if (!canBeInserted && avail) {
          canBeInserted = true;
          avail = false;
        }
        if (canBeInserted && isCallExpression$8(left)) {
          left.arguments.push(right);
          return left;
        }
        return callExpression$c(memberExpression$a(left, identifier$e("concat")), [right]);
      });
    }
    return {
      name: "transform-template-literals",
      visitor: {
        TaggedTemplateExpression: function TaggedTemplateExpression(path) {
          var node = path.node;
          var quasi = node.quasi;
          var strings = [];
          var raws = [];
          var isStringsRawEqual = true;
          for (var _iterator = _createForOfIteratorHelperLoose(quasi.quasis), _step; !(_step = _iterator()).done;) {
            var elem = _step.value;
            var _elem$value = elem.value,
              raw = _elem$value.raw,
              cooked = _elem$value.cooked;
            var value = cooked == null ? path.scope.buildUndefinedNode() : stringLiteral$6(cooked);
            strings.push(value);
            raws.push(stringLiteral$6(raw));
            if (raw !== cooked) {
              isStringsRawEqual = false;
            }
          }
          var helperArgs = [arrayExpression$1(strings)];
          if (!isStringsRawEqual) {
            helperArgs.push(arrayExpression$1(raws));
          }
          var tmp = path.scope.generateUidIdentifier("templateObject");
          path.scope.getProgramParent().push({
            id: cloneNode$g(tmp)
          });
          path.replaceWith(callExpression$c(node.tag, [template$1.expression.ast(_templateObject$9 || (_templateObject$9 = _taggedTemplateLiteralLoose(["\n              ", " || (\n                ", " = ", "(", ")\n              )\n            "])), cloneNode$g(tmp), tmp, this.addHelper(helperName), helperArgs)].concat(_toConsumableArray(quasi.expressions))));
        },
        TemplateLiteral: function TemplateLiteral(path) {
          if (path.parent.type === "TSLiteralType") {
            return;
          }
          var nodes = [];
          var expressions = path.get("expressions");
          var index = 0;
          for (var _iterator2 = _createForOfIteratorHelperLoose(path.node.quasis), _step2; !(_step2 = _iterator2()).done;) {
            var elem = _step2.value;
            if (elem.value.cooked) {
              nodes.push(stringLiteral$6(elem.value.cooked));
            }
            if (index < expressions.length) {
              var expr = expressions[index++];
              var node = expr.node;
              if (!isStringLiteral$5(node, {
                value: ""
              })) {
                nodes.push(node);
              }
            }
          }
          if (!isStringLiteral$5(nodes[0]) && !(ignoreToPrimitiveHint && isStringLiteral$5(nodes[1]))) {
            nodes.unshift(stringLiteral$6(""));
          }
          var root = nodes[0];
          if (ignoreToPrimitiveHint) {
            for (var i = 1; i < nodes.length; i++) {
              root = binaryExpression$5("+", root, nodes[i]);
            }
          } else if (nodes.length > 1) {
            root = buildConcatCallExpressions(nodes);
          }
          path.replaceWith(root);
        }
      }
    };
  });

  var _transformTypeofSymbol = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-typeof-symbol",
      visitor: {
        Scope: function Scope(_ref) {
          var scope = _ref.scope;
          if (!scope.getBinding("Symbol")) {
            return;
          }
          scope.rename("Symbol");
        },
        UnaryExpression: function UnaryExpression(path) {
          var node = path.node,
            parent = path.parent;
          if (node.operator !== "typeof") return;
          if (path.parentPath.isBinaryExpression() && EQUALITY_BINARY_OPERATORS.includes(parent.operator)) {
            var opposite = path.getOpposite();
            if (opposite.isStringLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") {
              return;
            }
          }
          var isUnderHelper = path.findParent(function (path) {
            if (path.isFunction()) {
              var _path$get;
              return ((_path$get = path.get("body.directives.0")) == null ? void 0 : _path$get.node.value.value) === "@babel/helpers - typeof";
            }
          });
          if (isUnderHelper) return;
          var helper = this.addHelper("typeof");
          isUnderHelper = path.findParent(function (path) {
            return path.isVariableDeclarator() && path.node.id === helper || path.isFunctionDeclaration() && path.node.id && path.node.id.name === helper.name;
          });
          if (isUnderHelper) {
            return;
          }
          var call = callExpression$c(helper, [node.argument]);
          var arg = path.get("argument");
          if (arg.isIdentifier() && !path.scope.hasBinding(arg.node.name, true)) {
            var unary = unaryExpression$5("typeof", cloneNode$g(node.argument));
            path.replaceWith(conditionalExpression$5(binaryExpression$5("===", unary, stringLiteral$6("undefined")), stringLiteral$6("undefined"), call));
          } else {
            path.replaceWith(call);
          }
        }
      }
    };
  });

  var ENUMS = new WeakMap();
  var buildEnumWrapper = template$1.expression("\n    (function (ID) {\n      ASSIGNMENTS;\n      return ID;\n    })(INIT)\n  ");
  function transpileEnum(path, t) {
    var node = path.node,
      parentPath = path.parentPath;
    if (node.declare) {
      path.remove();
      return;
    }
    var name = node.id.name;
    var _enumFill = enumFill(path, t, node.id),
      fill = _enumFill.fill,
      data = _enumFill.data,
      isPure = _enumFill.isPure;
    switch (parentPath.type) {
      case "BlockStatement":
      case "ExportNamedDeclaration":
      case "Program":
        {
          var isGlobal = t.isProgram(path.parent);
          var isSeen = seen(parentPath);
          var init = t.objectExpression([]);
          if (isSeen || isGlobal) {
            init = t.logicalExpression("||", t.cloneNode(fill.ID), init);
          }
          var enumIIFE = buildEnumWrapper(Object.assign({}, fill, {
            INIT: init
          }));
          if (isPure) annotateAsPure(enumIIFE);
          if (isSeen) {
            var toReplace = parentPath.isExportDeclaration() ? parentPath : path;
            toReplace.replaceWith(t.expressionStatement(t.assignmentExpression("=", t.cloneNode(node.id), enumIIFE)));
          } else {
            path.scope.registerDeclaration(path.replaceWith(t.variableDeclaration(isGlobal ? "var" : "let", [t.variableDeclarator(node.id, enumIIFE)]))[0]);
          }
          ENUMS.set(path.scope.getBindingIdentifier(name), data);
          break;
        }
      default:
        throw new Error("Unexpected enum parent '" + path.parent.type);
    }
    function seen(parentPath) {
      if (parentPath.isExportDeclaration()) {
        return seen(parentPath.parentPath);
      }
      if (parentPath.getData(name)) {
        return true;
      } else {
        parentPath.setData(name, true);
        return false;
      }
    }
  }
  var buildStringAssignment = template$1("\n  ENUM[\"NAME\"] = VALUE;\n");
  var buildNumericAssignment = template$1("\n  ENUM[ENUM[\"NAME\"] = VALUE] = \"NAME\";\n");
  var buildEnumMember = function buildEnumMember(isString, options) {
    return (isString ? buildStringAssignment : buildNumericAssignment)(options);
  };
  function enumFill(path, t, id) {
    var _translateEnumValues = translateEnumValues(path, t),
      x = _translateEnumValues.enumValues,
      data = _translateEnumValues.data,
      isPure = _translateEnumValues.isPure;
    var assignments = x.map(function (_ref) {
      var _ref2 = _slicedToArray(_ref, 2),
        memberName = _ref2[0],
        memberValue = _ref2[1];
      return buildEnumMember(isSyntacticallyString(memberValue), {
        ENUM: t.cloneNode(id),
        NAME: memberName,
        VALUE: memberValue
      });
    });
    return {
      fill: {
        ID: t.cloneNode(id),
        ASSIGNMENTS: assignments
      },
      data: data,
      isPure: isPure
    };
  }
  function isSyntacticallyString(expr) {
    expr = skipTransparentExprWrapperNodes(expr);
    switch (expr.type) {
      case "BinaryExpression":
        {
          var left = expr.left;
          var right = expr.right;
          return expr.operator === "+" && (isSyntacticallyString(left) || isSyntacticallyString(right));
        }
      case "TemplateLiteral":
      case "StringLiteral":
        return true;
    }
    return false;
  }
  function ReferencedIdentifier(expr, state) {
    var seen = state.seen,
      path = state.path,
      t = state.t;
    var name = expr.node.name;
    if (seen.has(name) && !expr.scope.hasOwnBinding(name)) {
      expr.replaceWith(t.memberExpression(t.cloneNode(path.node.id), t.cloneNode(expr.node)));
      expr.skip();
    }
  }
  var enumSelfReferenceVisitor = {
    ReferencedIdentifier: ReferencedIdentifier
  };
  function translateEnumValues(path, t) {
    var _ENUMS$get;
    var bindingIdentifier = path.scope.getBindingIdentifier(path.node.id.name);
    var seen = (_ENUMS$get = ENUMS.get(bindingIdentifier)) != null ? _ENUMS$get : new Map();
    var constValue = -1;
    var lastName;
    var isPure = true;
    var enumValues = path.get("members").map(function (memberPath) {
      var member = memberPath.node;
      var name = t.isIdentifier(member.id) ? member.id.name : member.id.value;
      var initializerPath = memberPath.get("initializer");
      var initializer = member.initializer;
      var value;
      if (initializer) {
        constValue = computeConstantValue(initializerPath, seen);
        if (constValue !== undefined) {
          seen.set(name, constValue);
          assert(typeof constValue === "number" || typeof constValue === "string");
          if (constValue === Infinity || Number.isNaN(constValue)) {
            value = t.identifier(String(constValue));
          } else if (constValue === -Infinity) {
            value = t.unaryExpression("-", t.identifier("Infinity"));
          } else {
            value = t.valueToNode(constValue);
          }
        } else {
          isPure && (isPure = initializerPath.isPure());
          if (initializerPath.isReferencedIdentifier()) {
            ReferencedIdentifier(initializerPath, {
              t: t,
              seen: seen,
              path: path
            });
          } else {
            initializerPath.traverse(enumSelfReferenceVisitor, {
              t: t,
              seen: seen,
              path: path
            });
          }
          value = initializerPath.node;
          seen.set(name, undefined);
        }
      } else if (typeof constValue === "number") {
        constValue += 1;
        value = t.numericLiteral(constValue);
        seen.set(name, constValue);
      } else if (typeof constValue === "string") {
        throw path.buildCodeFrameError("Enum member must have initializer.");
      } else {
        var lastRef = t.memberExpression(t.cloneNode(path.node.id), t.stringLiteral(lastName), true);
        value = t.binaryExpression("+", t.numericLiteral(1), lastRef);
        seen.set(name, undefined);
      }
      lastName = name;
      return [name, value];
    });
    return {
      isPure: isPure,
      data: seen,
      enumValues: enumValues
    };
  }
  function computeConstantValue(path, prevMembers, seen) {
    if (seen === void 0) {
      seen = new Set();
    }
    return evaluate(path);
    function evaluate(path) {
      var expr = path.node;
      switch (expr.type) {
        case "MemberExpression":
          return evaluateRef(path, prevMembers, seen);
        case "StringLiteral":
          return expr.value;
        case "UnaryExpression":
          return evalUnaryExpression(path);
        case "BinaryExpression":
          return evalBinaryExpression(path);
        case "NumericLiteral":
          return expr.value;
        case "ParenthesizedExpression":
          return evaluate(path.get("expression"));
        case "Identifier":
          return evaluateRef(path, prevMembers, seen);
        case "TemplateLiteral":
          {
            if (expr.quasis.length === 1) {
              return expr.quasis[0].value.cooked;
            }
            var paths = path.get("expressions");
            var quasis = expr.quasis;
            var str = "";
            for (var i = 0; i < quasis.length; i++) {
              str += quasis[i].value.cooked;
              if (i + 1 < quasis.length) {
                var value = evaluateRef(paths[i], prevMembers, seen);
                if (value === undefined) return undefined;
                str += value;
              }
            }
            return str;
          }
        default:
          return undefined;
      }
    }
    function evaluateRef(path, prevMembers, seen) {
      if (path.isMemberExpression()) {
        var expr = path.node;
        var obj = expr.object;
        var prop = expr.property;
        if (!isIdentifier$f(obj) || (expr.computed ? !isStringLiteral$5(prop) : !isIdentifier$f(prop))) {
          return;
        }
        var bindingIdentifier = path.scope.getBindingIdentifier(obj.name);
        var data = ENUMS.get(bindingIdentifier);
        if (!data) return;
        return data.get(prop.computed ? prop.value : prop.name);
      } else if (path.isIdentifier()) {
        var name = path.node.name;
        if (["Infinity", "NaN"].includes(name)) {
          return Number(name);
        }
        var value = prevMembers == null ? void 0 : prevMembers.get(name);
        if (value !== undefined) {
          return value;
        }
        if (seen.has(path.node)) return;
        seen.add(path.node);
        value = computeConstantValue(path.resolve(), prevMembers, seen);
        prevMembers == null || prevMembers.set(name, value);
        return value;
      }
    }
    function evalUnaryExpression(path) {
      var value = evaluate(path.get("argument"));
      if (value === undefined) {
        return undefined;
      }
      switch (path.node.operator) {
        case "+":
          return value;
        case "-":
          return -value;
        case "~":
          return ~value;
        default:
          return undefined;
      }
    }
    function evalBinaryExpression(path) {
      var left = evaluate(path.get("left"));
      if (left === undefined) {
        return undefined;
      }
      var right = evaluate(path.get("right"));
      if (right === undefined) {
        return undefined;
      }
      switch (path.node.operator) {
        case "|":
          return left | right;
        case "&":
          return left & right;
        case ">>":
          return left >> right;
        case ">>>":
          return left >>> right;
        case "<<":
          return left << right;
        case "^":
          return left ^ right;
        case "*":
          return left * right;
        case "/":
          return left / right;
        case "+":
          return left + right;
        case "-":
          return left - right;
        case "%":
          return left % right;
        case "**":
          return Math.pow(left, right);
        default:
          return undefined;
      }
    }
  }

  function transpileConstEnum(path, t) {
    var name = path.node.id.name;
    var parentIsExport = path.parentPath.isExportNamedDeclaration();
    var isExported = parentIsExport;
    if (!isExported && t.isProgram(path.parent)) {
      isExported = path.parent.body.some(function (stmt) {
        return t.isExportNamedDeclaration(stmt) && stmt.exportKind !== "type" && !stmt.source && stmt.specifiers.some(function (spec) {
          return t.isExportSpecifier(spec) && spec.exportKind !== "type" && spec.local.name === name;
        });
      });
    }
    var _translateEnumValues = translateEnumValues(path, t),
      entries = _translateEnumValues.enumValues;
    if (isExported) {
      var obj = t.objectExpression(entries.map(function (_ref) {
        var _ref2 = _slicedToArray(_ref, 2),
          name = _ref2[0],
          value = _ref2[1];
        return t.objectProperty(t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name), value);
      }));
      if (path.scope.hasOwnBinding(name)) {
        (parentIsExport ? path.parentPath : path).replaceWith(t.expressionStatement(t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("assign")), [path.node.id, obj])));
      } else {
        path.replaceWith(t.variableDeclaration("var", [t.variableDeclarator(path.node.id, obj)]));
        path.scope.registerDeclaration(path);
      }
      return;
    }
    var entriesMap = new Map(entries);
    path.scope.path.traverse({
      Scope: function Scope(path) {
        if (path.scope.hasOwnBinding(name)) path.skip();
      },
      MemberExpression: function MemberExpression(path) {
        if (!t.isIdentifier(path.node.object, {
          name: name
        })) return;
        var key;
        if (path.node.computed) {
          if (t.isStringLiteral(path.node.property)) {
            key = path.node.property.value;
          } else {
            return;
          }
        } else if (t.isIdentifier(path.node.property)) {
          key = path.node.property.name;
        } else {
          return;
        }
        if (!entriesMap.has(key)) return;
        path.replaceWith(t.cloneNode(entriesMap.get(key)));
      }
    });
    path.remove();
  }

  var GLOBAL_TYPES = new WeakMap();
  function isGlobalType(_ref, name) {
    var scope = _ref.scope;
    if (scope.hasBinding(name)) return false;
    if (GLOBAL_TYPES.get(scope).has(name)) return true;
    console.warn("The exported identifier \"" + name + "\" is not declared in Babel's scope tracker\n" + "as a JavaScript value binding, and \"@babel/plugin-transform-typescript\"\n" + "never encountered it as a TypeScript type declaration.\n" + "It will be treated as a JavaScript value.\n\n" + "This problem is likely caused by another plugin injecting\n" + ("\"" + name + "\" without registering it in the scope tracker. If you are the author\n") + " of that plugin, please use \"scope.registerDeclaration(declarationPath)\".");
    return false;
  }
  function registerGlobalType(programScope, name) {
    GLOBAL_TYPES.get(programScope).add(name);
  }

  var _templateObject$8, _templateObject2$8;
  function transpileNamespace(path, allowNamespaces) {
    if (path.node.declare || path.node.id.type === "StringLiteral") {
      path.remove();
      return;
    }
    if (!allowNamespaces) {
      throw path.get("id").buildCodeFrameError("Namespace not marked type-only declare." + " Non-declarative namespaces are only supported experimentally in Babel." + " To enable and review caveats see:" + " https://babeljs.io/docs/en/babel-plugin-transform-typescript");
    }
    var name = path.node.id.name;
    var value = handleNested(path, cloneNode$g(path.node, true));
    if (value === null) {
      var program = path.findParent(function (p) {
        return p.isProgram();
      });
      registerGlobalType(program.scope, name);
      path.remove();
    } else if (path.scope.hasOwnBinding(name)) {
      path.replaceWith(value);
    } else {
      path.scope.registerDeclaration(path.replaceWithMultiple([getDeclaration(name), value])[0]);
    }
  }
  function getDeclaration(name) {
    return variableDeclaration$6("let", [variableDeclarator$6(identifier$e(name))]);
  }
  function getMemberExpression(name, itemName) {
    return memberExpression$a(identifier$e(name), identifier$e(itemName));
  }
  function handleVariableDeclaration(node, name, hub) {
    if (node.kind !== "const") {
      throw hub.file.buildCodeFrameError(node, "Namespaces exporting non-const are not supported by Babel." + " Change to const or see:" + " https://babeljs.io/docs/en/babel-plugin-transform-typescript");
    }
    var declarations = node.declarations;
    if (declarations.every(function (declarator) {
      return isIdentifier$f(declarator.id);
    })) {
      for (var _iterator = _createForOfIteratorHelperLoose(declarations), _step; !(_step = _iterator()).done;) {
        var declarator = _step.value;
        declarator.init = assignmentExpression$b("=", getMemberExpression(name, declarator.id.name), declarator.init);
      }
      return [node];
    }
    var bindingIdentifiers = getBindingIdentifiers$4(node);
    var assignments = [];
    for (var idName in bindingIdentifiers) {
      assignments.push(assignmentExpression$b("=", getMemberExpression(name, idName), cloneNode$g(bindingIdentifiers[idName])));
    }
    return [node, expressionStatement$7(sequenceExpression$8(assignments))];
  }
  function buildNestedAmbientModuleError(path, node) {
    return path.hub.buildError(node, "Ambient modules cannot be nested in other modules or namespaces.", Error);
  }
  function handleNested(path, node, parentExport) {
    var names = new Set();
    var realName = node.id;
    assertIdentifier(realName);
    var name = path.scope.generateUid(realName.name);
    var namespaceTopLevel = isTSModuleBlock(node.body) ? node.body.body : [exportNamedDeclaration$2(node.body)];
    var isEmpty = true;
    for (var i = 0; i < namespaceTopLevel.length; i++) {
      var subNode = namespaceTopLevel[i];
      switch (subNode.type) {
        case "TSModuleDeclaration":
          {
            if (!isIdentifier$f(subNode.id)) {
              throw buildNestedAmbientModuleError(path, subNode);
            }
            var transformed = handleNested(path, subNode);
            if (transformed !== null) {
              isEmpty = false;
              var moduleName = subNode.id.name;
              if (names.has(moduleName)) {
                namespaceTopLevel[i] = transformed;
              } else {
                names.add(moduleName);
                namespaceTopLevel.splice(i++, 1, getDeclaration(moduleName), transformed);
              }
            }
            continue;
          }
        case "TSEnumDeclaration":
        case "FunctionDeclaration":
        case "ClassDeclaration":
          isEmpty = false;
          names.add(subNode.id.name);
          continue;
        case "VariableDeclaration":
          {
            isEmpty = false;
            for (var _name in getBindingIdentifiers$4(subNode)) {
              names.add(_name);
            }
            continue;
          }
        default:
          isEmpty && (isEmpty = isTypeScript(subNode));
          continue;
        case "ExportNamedDeclaration":
      }
      if ("declare" in subNode.declaration && subNode.declaration.declare) {
        continue;
      }
      switch (subNode.declaration.type) {
        case "TSEnumDeclaration":
        case "FunctionDeclaration":
        case "ClassDeclaration":
          {
            isEmpty = false;
            var itemName = subNode.declaration.id.name;
            names.add(itemName);
            namespaceTopLevel.splice(i++, 1, subNode.declaration, expressionStatement$7(assignmentExpression$b("=", getMemberExpression(name, itemName), identifier$e(itemName))));
            break;
          }
        case "VariableDeclaration":
          {
            isEmpty = false;
            var nodes = handleVariableDeclaration(subNode.declaration, name, path.hub);
            namespaceTopLevel.splice.apply(namespaceTopLevel, [i, nodes.length].concat(_toConsumableArray(nodes)));
            i += nodes.length - 1;
            break;
          }
        case "TSModuleDeclaration":
          {
            if (!isIdentifier$f(subNode.declaration.id)) {
              throw buildNestedAmbientModuleError(path, subNode.declaration);
            }
            var _transformed = handleNested(path, subNode.declaration, identifier$e(name));
            if (_transformed !== null) {
              isEmpty = false;
              var _moduleName = subNode.declaration.id.name;
              if (names.has(_moduleName)) {
                namespaceTopLevel[i] = _transformed;
              } else {
                names.add(_moduleName);
                namespaceTopLevel.splice(i++, 1, getDeclaration(_moduleName), _transformed);
              }
            } else {
              namespaceTopLevel.splice(i, 1);
              i--;
            }
          }
      }
    }
    if (isEmpty) return null;
    var fallthroughValue = objectExpression$3([]);
    if (parentExport) {
      var memberExpr = memberExpression$a(parentExport, realName);
      fallthroughValue = template$1.expression.ast(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteralLoose(["\n      ", " ||\n        (", " = ", ")\n    "])), cloneNode$g(memberExpr), cloneNode$g(memberExpr), fallthroughValue);
    }
    return template$1.statement.ast(_templateObject2$8 || (_templateObject2$8 = _taggedTemplateLiteralLoose(["\n    (function (", ") {\n      ", "\n    })(", " || (", " = ", "));\n  "])), identifier$e(name), namespaceTopLevel, realName, cloneNode$g(realName), fallthroughValue);
  }

  var _templateObject$7, _templateObject2$7;
  function isInType(path) {
    switch (path.parent.type) {
      case "TSTypeReference":
      case "TSExpressionWithTypeArguments":
      case "TSTypeQuery":
        return true;
      case "TSQualifiedName":
        return path.parentPath.findParent(function (path) {
          return path.type !== "TSQualifiedName";
        }).type !== "TSImportEqualsDeclaration";
      case "ExportSpecifier":
        return path.parent.exportKind === "type" || path.parentPath.parent.exportKind === "type";
      default:
        return false;
    }
  }
  var NEEDS_EXPLICIT_ESM = new WeakMap();
  var PARSED_PARAMS = new WeakSet();
  function safeRemove(path) {
    var ids = path.getBindingIdentifiers();
    for (var _i = 0, _Object$keys = Object.keys(ids); _i < _Object$keys.length; _i++) {
      var name = _Object$keys[_i];
      var binding = path.scope.getBinding(name);
      if (binding && binding.identifier === ids[name]) {
        binding.scope.removeBinding(name);
      }
    }
    path.opts.noScope = true;
    path.remove();
    path.opts.noScope = false;
  }
  function assertCjsTransformEnabled(path, pass, wrong, suggestion, extra) {
    if (extra === void 0) {
      extra = "";
    }
    if (pass.file.get("@babel/plugin-transform-modules-*") !== "commonjs") {
      throw path.buildCodeFrameError("`" + wrong + "` is only supported when compiling modules to CommonJS.\n" + ("Please consider using `" + suggestion + "`" + extra + ", or add ") + "@babel/plugin-transform-modules-commonjs to your Babel config.");
    }
  }
  var transformTypeScript = declare(function (api, opts) {
    var _visitor;
    var t = api.types,
      template = api.template;
    api.assertVersion("*");
    var JSX_PRAGMA_REGEX = /\*?\s*@jsx((?:Frag)?)\s+(\S+)/;
    var _opts$allowNamespaces = opts.allowNamespaces,
      allowNamespaces = _opts$allowNamespaces === void 0 ? true : _opts$allowNamespaces,
      _opts$jsxPragma = opts.jsxPragma,
      jsxPragma = _opts$jsxPragma === void 0 ? "React.createElement" : _opts$jsxPragma,
      _opts$jsxPragmaFrag = opts.jsxPragmaFrag,
      jsxPragmaFrag = _opts$jsxPragmaFrag === void 0 ? "React.Fragment" : _opts$jsxPragmaFrag,
      _opts$onlyRemoveTypeI = opts.onlyRemoveTypeImports,
      onlyRemoveTypeImports = _opts$onlyRemoveTypeI === void 0 ? false : _opts$onlyRemoveTypeI,
      _opts$optimizeConstEn = opts.optimizeConstEnums,
      optimizeConstEnums = _opts$optimizeConstEn === void 0 ? false : _opts$optimizeConstEn;
    {
      var _opts$allowDeclareFie = opts.allowDeclareFields,
        allowDeclareFields = _opts$allowDeclareFie === void 0 ? false : _opts$allowDeclareFie;
    }
    var classMemberVisitors = {
      field: function field(path) {
        var node = path.node;
        {
          if (!allowDeclareFields && node.declare) {
            throw path.buildCodeFrameError("The 'declare' modifier is only allowed when the 'allowDeclareFields' option of " + "@babel/plugin-transform-typescript or @babel/preset-typescript is enabled.");
          }
        }
        if (node.declare) {
          if (node.value) {
            throw path.buildCodeFrameError("Fields with the 'declare' modifier cannot be initialized here, but only in the constructor");
          }
          if (!node.decorators) {
            path.remove();
          }
        } else if (node.definite) {
          if (node.value) {
            throw path.buildCodeFrameError("Definitely assigned fields cannot be initialized here, but only in the constructor");
          }
          {
            if (!allowDeclareFields && !node.decorators && !t.isClassPrivateProperty(node)) {
              path.remove();
            }
          }
        } else if (node["abstract"]) {
          path.remove();
        } else {
          if (!allowDeclareFields && !node.value && !node.decorators && !t.isClassPrivateProperty(node)) {
            path.remove();
          }
        }
        if (node.accessibility) node.accessibility = null;
        if (node["abstract"]) node["abstract"] = null;
        if (node.readonly) node.readonly = null;
        if (node.optional) node.optional = null;
        if (node.typeAnnotation) node.typeAnnotation = null;
        if (node.definite) node.definite = null;
        if (node.declare) node.declare = null;
        if (node.override) node.override = null;
      },
      method: function method(_ref) {
        var node = _ref.node;
        if (node.accessibility) node.accessibility = null;
        if (node["abstract"]) node["abstract"] = null;
        if (node.optional) node.optional = null;
        if (node.override) node.override = null;
      },
      constructor: function constructor(path, classPath) {
        if (path.node.accessibility) path.node.accessibility = null;
        var assigns = [];
        var scope = path.scope;
        for (var _iterator = _createForOfIteratorHelperLoose(path.get("params")), _step; !(_step = _iterator()).done;) {
          var paramPath = _step.value;
          var param = paramPath.node;
          if (param.type === "TSParameterProperty") {
            var parameter = param.parameter;
            if (PARSED_PARAMS.has(parameter)) continue;
            PARSED_PARAMS.add(parameter);
            var id = void 0;
            if (t.isIdentifier(parameter)) {
              id = parameter;
            } else if (t.isAssignmentPattern(parameter) && t.isIdentifier(parameter.left)) {
              id = parameter.left;
            } else {
              throw paramPath.buildCodeFrameError("Parameter properties can not be destructuring patterns.");
            }
            assigns.push(template.statement.ast(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteralLoose(["\n              this.", " = ", "\n            "])), t.cloneNode(id), t.cloneNode(id)));
            paramPath.replaceWith(paramPath.get("parameter"));
            scope.registerBinding("param", paramPath);
          }
        }
        injectInitialization(classPath, path, assigns);
      }
    };
    return {
      name: "transform-typescript",
      inherits: syntaxTypescript,
      visitor: (_visitor = {
        Pattern: visitPattern,
        Identifier: visitPattern,
        RestElement: visitPattern,
        Program: {
          enter: function enter(path, state) {
            var file = state.file;
            var fileJsxPragma = null;
            var fileJsxPragmaFrag = null;
            var programScope = path.scope;
            if (!GLOBAL_TYPES.has(programScope)) {
              GLOBAL_TYPES.set(programScope, new Set());
            }
            if (file.ast.comments) {
              for (var _iterator2 = _createForOfIteratorHelperLoose(file.ast.comments), _step2; !(_step2 = _iterator2()).done;) {
                var comment = _step2.value;
                var jsxMatches = JSX_PRAGMA_REGEX.exec(comment.value);
                if (jsxMatches) {
                  if (jsxMatches[1]) {
                    fileJsxPragmaFrag = jsxMatches[2];
                  } else {
                    fileJsxPragma = jsxMatches[2];
                  }
                }
              }
            }
            var pragmaImportName = fileJsxPragma || jsxPragma;
            if (pragmaImportName) {
              var _pragmaImportName$spl = pragmaImportName.split(".");
              var _pragmaImportName$spl2 = _slicedToArray(_pragmaImportName$spl, 1);
              pragmaImportName = _pragmaImportName$spl2[0];
            }
            var pragmaFragImportName = fileJsxPragmaFrag || jsxPragmaFrag;
            if (pragmaFragImportName) {
              var _pragmaFragImportName = pragmaFragImportName.split(".");
              var _pragmaFragImportName2 = _slicedToArray(_pragmaFragImportName, 1);
              pragmaFragImportName = _pragmaFragImportName2[0];
            }
            var _loop = function _loop() {
                var stmt = _step3.value;
                if (stmt.isImportDeclaration()) {
                  if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
                    NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
                  }
                  if (stmt.node.importKind === "type") {
                    for (var _iterator4 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step4; !(_step4 = _iterator4()).done;) {
                      var specifier = _step4.value;
                      registerGlobalType(programScope, specifier.local.name);
                    }
                    stmt.remove();
                    return 0;
                  }
                  var importsToRemove = new Set();
                  var specifiersLength = stmt.node.specifiers.length;
                  var isAllSpecifiersElided = function isAllSpecifiersElided() {
                    return specifiersLength > 0 && specifiersLength === importsToRemove.size;
                  };
                  for (var _iterator5 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step5; !(_step5 = _iterator5()).done;) {
                    var _specifier2 = _step5.value;
                    if (_specifier2.type === "ImportSpecifier" && _specifier2.importKind === "type") {
                      registerGlobalType(programScope, _specifier2.local.name);
                      var _binding = stmt.scope.getBinding(_specifier2.local.name);
                      if (_binding) {
                        importsToRemove.add(_binding.path);
                      }
                    }
                  }
                  if (onlyRemoveTypeImports) {
                    NEEDS_EXPLICIT_ESM.set(path.node, false);
                  } else {
                    if (stmt.node.specifiers.length === 0) {
                      NEEDS_EXPLICIT_ESM.set(path.node, false);
                      return 0;
                    }
                    for (var _iterator6 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step6; !(_step6 = _iterator6()).done;) {
                      var _specifier = _step6.value;
                      var binding = stmt.scope.getBinding(_specifier.local.name);
                      if (binding && !importsToRemove.has(binding.path)) {
                        if (isImportTypeOnly({
                          binding: binding,
                          programPath: path,
                          pragmaImportName: pragmaImportName,
                          pragmaFragImportName: pragmaFragImportName
                        })) {
                          importsToRemove.add(binding.path);
                        } else {
                          NEEDS_EXPLICIT_ESM.set(path.node, false);
                        }
                      }
                    }
                  }
                  if (isAllSpecifiersElided() && !onlyRemoveTypeImports) {
                    stmt.remove();
                  } else {
                    for (var _iterator7 = _createForOfIteratorHelperLoose(importsToRemove), _step7; !(_step7 = _iterator7()).done;) {
                      var importPath = _step7.value;
                      importPath.remove();
                    }
                  }
                  return 0;
                }
                if (stmt.isExportDeclaration()) {
                  stmt = stmt.get("declaration");
                }
                if (stmt.isVariableDeclaration({
                  declare: true
                })) {
                  for (var _i2 = 0, _Object$keys2 = Object.keys(stmt.getBindingIdentifiers()); _i2 < _Object$keys2.length; _i2++) {
                    var name = _Object$keys2[_i2];
                    registerGlobalType(programScope, name);
                  }
                } else if (stmt.isTSTypeAliasDeclaration() || stmt.isTSDeclareFunction() && stmt.get("id").isIdentifier() || stmt.isTSInterfaceDeclaration() || stmt.isClassDeclaration({
                  declare: true
                }) || stmt.isTSEnumDeclaration({
                  declare: true
                }) || stmt.isTSModuleDeclaration({
                  declare: true
                }) && stmt.get("id").isIdentifier()) {
                  registerGlobalType(programScope, stmt.node.id.name);
                }
              },
              _ret;
            for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("body")), _step3; !(_step3 = _iterator3()).done;) {
              _ret = _loop();
              if (_ret === 0) continue;
            }
          },
          exit: function exit(path) {
            if (path.node.sourceType === "module" && NEEDS_EXPLICIT_ESM.get(path.node)) {
              path.pushContainer("body", t.exportNamedDeclaration());
            }
          }
        },
        ExportNamedDeclaration: function ExportNamedDeclaration(path, state) {
          if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
            NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
          }
          if (path.node.exportKind === "type") {
            path.remove();
            return;
          }
          if (path.node.source && path.node.specifiers.length > 0 && path.node.specifiers.every(function (specifier) {
            return specifier.type === "ExportSpecifier" && specifier.exportKind === "type";
          })) {
            path.remove();
            return;
          }
          if (!path.node.source && path.node.specifiers.length > 0 && path.node.specifiers.every(function (specifier) {
            return t.isExportSpecifier(specifier) && isGlobalType(path, specifier.local.name);
          })) {
            path.remove();
            return;
          }
          if (t.isTSModuleDeclaration(path.node.declaration)) {
            var namespace = path.node.declaration;
            var id = namespace.id;
            if (t.isIdentifier(id)) {
              if (path.scope.hasOwnBinding(id.name)) {
                path.replaceWith(namespace);
              } else {
                var _path$replaceWithMult = path.replaceWithMultiple([t.exportNamedDeclaration(t.variableDeclaration("let", [t.variableDeclarator(t.cloneNode(id))])), namespace]),
                  _path$replaceWithMult2 = _slicedToArray(_path$replaceWithMult, 1),
                  newExport = _path$replaceWithMult2[0];
                path.scope.registerDeclaration(newExport);
              }
            }
          }
          NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);
        },
        ExportAllDeclaration: function ExportAllDeclaration(path) {
          if (path.node.exportKind === "type") path.remove();
        },
        ExportSpecifier: function ExportSpecifier(path) {
          var parent = path.parent;
          if (!parent.source && isGlobalType(path, path.node.local.name) || path.node.exportKind === "type") {
            path.remove();
          }
        },
        ExportDefaultDeclaration: function ExportDefaultDeclaration(path, state) {
          if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
            NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
          }
          if (t.isIdentifier(path.node.declaration) && isGlobalType(path, path.node.declaration.name)) {
            path.remove();
            return;
          }
          NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);
        },
        TSDeclareFunction: function TSDeclareFunction(path) {
          safeRemove(path);
        },
        TSDeclareMethod: function TSDeclareMethod(path) {
          safeRemove(path);
        },
        VariableDeclaration: function VariableDeclaration(path) {
          if (path.node.declare) {
            safeRemove(path);
          }
        },
        VariableDeclarator: function VariableDeclarator(_ref2) {
          var node = _ref2.node;
          if (node.definite) node.definite = null;
        },
        TSIndexSignature: function TSIndexSignature(path) {
          path.remove();
        },
        ClassDeclaration: function ClassDeclaration(path) {
          var node = path.node;
          if (node.declare) {
            safeRemove(path);
          }
        },
        Class: function Class(path) {
          var node = path.node;
          if (node.typeParameters) node.typeParameters = null;
          if (node.superTypeParameters) node.superTypeParameters = null;
          if (node["implements"]) node["implements"] = null;
          if (node["abstract"]) node["abstract"] = null;
          path.get("body.body").forEach(function (child) {
            if (child.isClassMethod() || child.isClassPrivateMethod()) {
              if (child.node.kind === "constructor") {
                classMemberVisitors.constructor(child, path);
              } else {
                classMemberVisitors.method(child);
              }
            } else if (child.isClassProperty() || child.isClassPrivateProperty() || child.isClassAccessorProperty()) {
              classMemberVisitors.field(child);
            }
          });
        },
        Function: function Function(path) {
          var node = path.node;
          if (node.typeParameters) node.typeParameters = null;
          if (node.returnType) node.returnType = null;
          var params = node.params;
          if (params.length > 0 && t.isIdentifier(params[0], {
            name: "this"
          })) {
            params.shift();
          }
        },
        TSModuleDeclaration: function TSModuleDeclaration(path) {
          transpileNamespace(path, allowNamespaces);
        },
        TSInterfaceDeclaration: function TSInterfaceDeclaration(path) {
          path.remove();
        },
        TSTypeAliasDeclaration: function TSTypeAliasDeclaration(path) {
          path.remove();
        },
        TSEnumDeclaration: function TSEnumDeclaration(path) {
          if (optimizeConstEnums && path.node["const"]) {
            transpileConstEnum(path, t);
          } else {
            transpileEnum(path, t);
          }
        },
        TSImportEqualsDeclaration: function TSImportEqualsDeclaration(path, pass) {
          var _path$node = path.node,
            id = _path$node.id,
            moduleReference = _path$node.moduleReference,
            isExport = _path$node.isExport;
          var init;
          var varKind;
          if (t.isTSExternalModuleReference(moduleReference)) {
            assertCjsTransformEnabled(path, pass, "import " + id.name + " = require(...);", "import " + id.name + " from '...';", " alongside Typescript's --allowSyntheticDefaultImports option");
            init = t.callExpression(t.identifier("require"), [moduleReference.expression]);
            varKind = "const";
          } else {
            init = entityNameToExpr(moduleReference);
            varKind = "var";
          }
          var newNode = t.variableDeclaration(varKind, [t.variableDeclarator(id, init)]);
          path.replaceWith(isExport ? t.exportNamedDeclaration(newNode) : newNode);
          path.scope.registerDeclaration(path);
        },
        TSExportAssignment: function TSExportAssignment(path, pass) {
          assertCjsTransformEnabled(path, pass, "export = <value>;", "export default <value>;");
          path.replaceWith(template.statement.ast(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteralLoose(["module.exports = ", ""])), path.node.expression));
        },
        TSTypeAssertion: function TSTypeAssertion(path) {
          path.replaceWith(path.node.expression);
        }
      }, _visitor["TSAsExpression" + (t.tsSatisfiesExpression ? "|TSSatisfiesExpression" : "")] = function TSAsExpression(path) {
        var node = path.node;
        do {
          node = node.expression;
        } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression != null && t.isTSSatisfiesExpression(node));
        path.replaceWith(node);
      }, _visitor[api.types.tsInstantiationExpression ? "TSNonNullExpression|TSInstantiationExpression" : "TSNonNullExpression"] = function (path) {
        path.replaceWith(path.node.expression);
      }, _visitor.CallExpression = function CallExpression(path) {
        path.node.typeParameters = null;
      }, _visitor.OptionalCallExpression = function OptionalCallExpression(path) {
        path.node.typeParameters = null;
      }, _visitor.NewExpression = function NewExpression(path) {
        path.node.typeParameters = null;
      }, _visitor.JSXOpeningElement = function JSXOpeningElement(path) {
        path.node.typeParameters = null;
      }, _visitor.TaggedTemplateExpression = function TaggedTemplateExpression(path) {
        path.node.typeParameters = null;
      }, _visitor)
    };
    function entityNameToExpr(node) {
      if (t.isTSQualifiedName(node)) {
        return t.memberExpression(entityNameToExpr(node.left), node.right);
      }
      return node;
    }
    function visitPattern(_ref3) {
      var node = _ref3.node;
      if (node.typeAnnotation) node.typeAnnotation = null;
      if (t.isIdentifier(node) && node.optional) node.optional = null;
    }
    function isImportTypeOnly(_ref4) {
      var binding = _ref4.binding,
        programPath = _ref4.programPath,
        pragmaImportName = _ref4.pragmaImportName,
        pragmaFragImportName = _ref4.pragmaFragImportName;
      for (var _iterator8 = _createForOfIteratorHelperLoose(binding.referencePaths), _step8; !(_step8 = _iterator8()).done;) {
        var path = _step8.value;
        if (!isInType(path)) {
          return false;
        }
      }
      if (binding.identifier.name !== pragmaImportName && binding.identifier.name !== pragmaFragImportName) {
        return true;
      }
      var sourceFileHasJsx = false;
      programPath.traverse({
        "JSXElement|JSXFragment": function JSXElementJSXFragment(path) {
          sourceFileHasJsx = true;
          path.stop();
        }
      });
      return !sourceFileHasJsx;
    }
  });

  var _transformUnicodeEscapes = declare(function (api) {
    api.assertVersion("*");
    var surrogate = /[\ud800-\udfff]/g;
    var unicodeEscape = /(\\+)u\{([0-9a-fA-F]+)\}/g;
    function escape(code) {
      {
        var str = code.toString(16);
        while (str.length < 4) str = "0" + str;
        return "\\u" + str;
      }
    }
    function replacer(match, backslashes, code) {
      if (backslashes.length % 2 === 0) {
        return match;
      }
      var _char = String.fromCodePoint(parseInt(code, 16));
      var escaped = backslashes.slice(0, -1) + escape(_char.charCodeAt(0));
      return _char.length === 1 ? escaped : escaped + escape(_char.charCodeAt(1));
    }
    function replaceUnicodeEscapes(str) {
      return str.replace(unicodeEscape, replacer);
    }
    function getUnicodeEscape(str) {
      var match;
      while (match = unicodeEscape.exec(str)) {
        if (match[1].length % 2 === 0) continue;
        unicodeEscape.lastIndex = 0;
        return match[0];
      }
      return null;
    }
    return {
      name: "transform-unicode-escapes",
      manipulateOptions: function manipulateOptions(_ref) {
        var _generatorOpts$jsescO, _generatorOpts$jsescO2;
        var generatorOpts = _ref.generatorOpts;
        if (!generatorOpts.jsescOption) {
          generatorOpts.jsescOption = {};
        }
        (_generatorOpts$jsescO2 = (_generatorOpts$jsescO = generatorOpts.jsescOption).minimal) != null ? _generatorOpts$jsescO2 : _generatorOpts$jsescO.minimal = false;
      },
      visitor: {
        Identifier: function Identifier(path) {
          var node = path.node,
            key = path.key;
          var name = node.name;
          var replaced = name.replace(surrogate, function (c) {
            return "_u" + c.charCodeAt(0).toString(16);
          });
          if (name === replaced) return;
          var str = inherits$3(stringLiteral$6(name), node);
          if (key === "key") {
            path.replaceWith(str);
            return;
          }
          var parentPath = path.parentPath,
            scope = path.scope;
          if (parentPath.isMemberExpression({
            property: node
          }) || parentPath.isOptionalMemberExpression({
            property: node
          })) {
            parentPath.node.computed = true;
            path.replaceWith(str);
            return;
          }
          var binding = scope.getBinding(name);
          if (binding) {
            scope.rename(name, scope.generateUid(replaced));
            return;
          }
          throw path.buildCodeFrameError("Can't reference '" + name + "' as a bare identifier");
        },
        "StringLiteral|DirectiveLiteral": function StringLiteralDirectiveLiteral(path) {
          var node = path.node;
          var extra = node.extra;
          if (extra != null && extra.raw) extra.raw = replaceUnicodeEscapes(extra.raw);
        },
        TemplateElement: function TemplateElement(path) {
          var node = path.node,
            parentPath = path.parentPath;
          var value = node.value;
          var firstEscape = getUnicodeEscape(value.raw);
          if (!firstEscape) return;
          var grandParent = parentPath.parentPath;
          if (grandParent.isTaggedTemplateExpression()) {
            throw path.buildCodeFrameError("Can't replace Unicode escape '" + firstEscape + "' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.");
          }
          value.raw = replaceUnicodeEscapes(value.raw);
        }
      }
    };
  });

  var _transformUnicodeRegex = declare(function (api) {
    api.assertVersion("*");
    return createRegExpFeaturePlugin({
      name: "transform-unicode-regex",
      feature: "unicodeFlag"
    });
  });

  var _templateObject$6, _templateObject2$6, _templateObject3$5;
  var proposalExplicitResourceManagement = declare(function (api) {
    api.assertVersion("*");
    var TOP_LEVEL_USING = new Map();
    function isUsingDeclaration(node) {
      if (!isVariableDeclaration$3(node)) return false;
      return node.kind === "using" || node.kind === "await using" || TOP_LEVEL_USING.has(node);
    }
    var transformUsingDeclarationsVisitor = {
      ForOfStatement: function ForOfStatement(path) {
        var left = path.node.left;
        if (!isUsingDeclaration(left)) return;
        var id = left.declarations[0].id;
        var tmpId = path.scope.generateUidIdentifierBasedOnNode(id);
        left.declarations[0].id = tmpId;
        left.kind = "const";
        path.ensureBlock();
        path.node.body.body.unshift(variableDeclaration$6("using", [variableDeclarator$6(id, cloneNode$g(tmpId))]));
      },
      "BlockStatement|StaticBlock": function BlockStatementStaticBlock(path, state) {
        if (state.availableHelper("usingCtx")) {
          var ctx = null;
          var needsAwait = false;
          for (var _iterator = _createForOfIteratorHelperLoose(path.node.body), _step; !(_step = _iterator()).done;) {
            var _ctx;
            var node = _step.value;
            if (!isUsingDeclaration(node)) continue;
            (_ctx = ctx) != null ? _ctx : ctx = path.scope.generateUidIdentifier("usingCtx");
            var isAwaitUsing = node.kind === "await using" || TOP_LEVEL_USING.get(node) === 1;
            needsAwait || (needsAwait = isAwaitUsing);
            if (!TOP_LEVEL_USING["delete"](node)) {
              node.kind = "const";
            }
            for (var _iterator2 = _createForOfIteratorHelperLoose(node.declarations), _step2; !(_step2 = _iterator2()).done;) {
              var decl = _step2.value;
              decl.init = callExpression$c(memberExpression$a(cloneNode$g(ctx), isAwaitUsing ? identifier$e("a") : identifier$e("u")), [decl.init]);
            }
          }
          if (!ctx) return;
          var disposeCall = callExpression$c(memberExpression$a(cloneNode$g(ctx), identifier$e("d")), []);
          var replacement = template$1.statement.ast(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["\n        try {\n          var ", " = ", "();\n          ", "\n        } catch (_) {\n          ", ".e = _;\n        } finally {\n          ", "\n        }\n      "])), cloneNode$g(ctx), state.addHelper("usingCtx"), path.node.body, cloneNode$g(ctx), needsAwait ? awaitExpression$1(disposeCall) : disposeCall);
          inherits$3(replacement, path.node);
          var parentPath = path.parentPath;
          if (parentPath.isFunction() || parentPath.isTryStatement() || parentPath.isCatchClause()) {
            path.replaceWith(blockStatement$6([replacement]));
          } else if (path.isStaticBlock()) {
            path.node.body = [replacement];
          } else {
            path.replaceWith(replacement);
          }
        } else {
          var stackId = null;
          var _needsAwait = false;
          var _loop = function _loop() {
            var _stackId;
            var node = _step3.value;
            if (!isUsingDeclaration(node)) return 1;
            (_stackId = stackId) != null ? _stackId : stackId = path.scope.generateUidIdentifier("stack");
            var isAwaitUsing = node.kind === "await using" || TOP_LEVEL_USING.get(node) === 1;
            _needsAwait || (_needsAwait = isAwaitUsing);
            if (!TOP_LEVEL_USING["delete"](node)) {
              node.kind = "const";
            }
            node.declarations.forEach(function (decl) {
              var args = [cloneNode$g(stackId), decl.init];
              if (isAwaitUsing) args.push(booleanLiteral$2(true));
              decl.init = callExpression$c(state.addHelper("using"), args);
            });
          };
          for (var _iterator3 = _createForOfIteratorHelperLoose(path.node.body), _step3; !(_step3 = _iterator3()).done;) {
            if (_loop()) continue;
          }
          if (!stackId) return;
          var errorId = path.scope.generateUidIdentifier("error");
          var hasErrorId = path.scope.generateUidIdentifier("hasError");
          var _disposeCall = callExpression$c(state.addHelper("dispose"), [cloneNode$g(stackId), cloneNode$g(errorId), cloneNode$g(hasErrorId)]);
          if (_needsAwait) _disposeCall = awaitExpression$1(_disposeCall);
          var _replacement = template$1.statement.ast(_templateObject2$6 || (_templateObject2$6 = _taggedTemplateLiteralLoose(["\n        try {\n          var ", " = [];\n          ", "\n        } catch (_) {\n          var ", " = _;\n          var ", " = true;\n        } finally {\n          ", "\n        }\n      "])), stackId, path.node.body, errorId, hasErrorId, _disposeCall);
          inherits$3(_replacement.block, path.node);
          var _parentPath = path.parentPath;
          if (_parentPath.isFunction() || _parentPath.isTryStatement() || _parentPath.isCatchClause()) {
            path.replaceWith(blockStatement$6([_replacement]));
          } else if (path.isStaticBlock()) {
            path.node.body = [_replacement];
          } else {
            path.replaceWith(_replacement);
          }
        }
      },
      SwitchStatement: function SwitchStatement(path, state) {
        var ctx = null;
        var needsAwait = false;
        var cases = path.node.cases;
        for (var _iterator4 = _createForOfIteratorHelperLoose(cases), _step4; !(_step4 = _iterator4()).done;) {
          var c = _step4.value;
          for (var _iterator5 = _createForOfIteratorHelperLoose(c.consequent), _step5; !(_step5 = _iterator5()).done;) {
            var stmt = _step5.value;
            if (isUsingDeclaration(stmt)) {
              var _ctx2;
              if (!state.availableHelper("usingCtx")) {
                path.traverse({
                  VariableDeclaration: function VariableDeclaration(path) {
                    var node = path.node;
                    if (!isUsingDeclaration(node)) return;
                    throw path.buildCodeFrameError("`using` declarations inside `switch` statements are not supported by your current `@babel/core` version, please update to a more recent one");
                  }
                });
              }
              (_ctx2 = ctx) != null ? _ctx2 : ctx = path.scope.generateUidIdentifier("usingCtx");
              var isAwaitUsing = stmt.kind === "await using";
              needsAwait || (needsAwait = isAwaitUsing);
              stmt.kind = "const";
              for (var _iterator6 = _createForOfIteratorHelperLoose(stmt.declarations), _step6; !(_step6 = _iterator6()).done;) {
                var decl = _step6.value;
                decl.init = callExpression$c(memberExpression$a(cloneNode$g(ctx), isAwaitUsing ? identifier$e("a") : identifier$e("u")), [decl.init]);
              }
            }
          }
        }
        if (!ctx) return;
        var disposeCall = callExpression$c(memberExpression$a(cloneNode$g(ctx), identifier$e("d")), []);
        var replacement = template$1.statement.ast(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteralLoose(["\n        try {\n          var ", " = ", "();\n          ", "\n        } catch (_) {\n          ", ".e = _;\n        } finally {\n          ", "\n        }\n      "])), cloneNode$g(ctx), state.addHelper("usingCtx"), path.node, cloneNode$g(ctx), needsAwait ? awaitExpression$1(disposeCall) : disposeCall);
        inherits$3(replacement, path.node);
        path.replaceWith(replacement);
      }
    };
    var transformUsingDeclarationsVisitorSkipFn = traverse.visitors.merge([transformUsingDeclarationsVisitor, {
      Function: function Function(path) {
        path.skip();
      }
    }]);
    return {
      name: "proposal-explicit-resource-management",
      inherits: syntaxExplicitResourceManagement,
      visitor: traverse.visitors.merge([transformUsingDeclarationsVisitor, {
        Program: function Program(path) {
          TOP_LEVEL_USING.clear();
          if (path.node.sourceType !== "module") return;
          if (!path.node.body.some(isUsingDeclaration)) return;
          var innerBlockBody = [];
          for (var _iterator7 = _createForOfIteratorHelperLoose(path.get("body")), _step7; !(_step7 = _iterator7()).done;) {
            var stmt = _step7.value;
            if (stmt.isFunctionDeclaration() || stmt.isImportDeclaration()) {
              continue;
            }
            var node = stmt.node;
            var shouldRemove = true;
            if (stmt.isExportDefaultDeclaration()) {
              var _varId;
              var declaration = stmt.node.declaration;
              var varId = void 0;
              if (isClassDeclaration$2(declaration)) {
                varId = declaration.id;
                declaration.id = null;
                declaration = toExpression$1(declaration);
              } else if (!isExpression$4(declaration)) {
                continue;
              }
              (_varId = varId) != null ? _varId : varId = path.scope.generateUidIdentifier("_default");
              innerBlockBody.push(variableDeclaration$6("var", [variableDeclarator$6(varId, declaration)]));
              stmt.replaceWith(exportNamedDeclaration$2(null, [exportSpecifier$2(cloneNode$g(varId), identifier$e("default"))]));
              continue;
            }
            if (stmt.isExportNamedDeclaration()) {
              node = stmt.node.declaration;
              if (!node || isFunction$5(node)) continue;
              stmt.replaceWith(exportNamedDeclaration$2(null, Object.keys(getOuterBindingIdentifiers$1(node, false)).map(function (id) {
                return exportSpecifier$2(identifier$e(id), identifier$e(id));
              })));
              shouldRemove = false;
            } else if (stmt.isExportDeclaration()) {
              continue;
            }
            if (isClassDeclaration$2(node)) {
              var _node = node,
                id = _node.id;
              node.id = null;
              innerBlockBody.push(variableDeclaration$6("var", [variableDeclarator$6(id, toExpression$1(node))]));
            } else if (isVariableDeclaration$3(node)) {
              if (node.kind === "using") {
                TOP_LEVEL_USING.set(stmt.node, 0);
              } else if (node.kind === "await using") {
                TOP_LEVEL_USING.set(stmt.node, 1);
              }
              node.kind = "var";
              innerBlockBody.push(node);
            } else {
              innerBlockBody.push(stmt.node);
            }
            if (shouldRemove) stmt.remove();
          }
          path.pushContainer("body", blockStatement$6(innerBlockBody));
        },
        Function: function Function(path, state) {
          if (path.node.async) {
            path.traverse(transformUsingDeclarationsVisitorSkipFn, state);
          }
        }
      }])
    };
  });

  var syntaxImportDefer = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "syntax-import-defer",
      manipulateOptions: function manipulateOptions(_, parserOpts) {
        parserOpts.plugins.push("deferredImportEvaluation");
      }
    };
  });

  var _templateObject$5, _templateObject2$5;
  var proposalImportDefer = declare(function (api) {
    api.assertVersion("*");
    var t = api.types;
    var template = api.template;
    function allReferencesAreProps(scope, node) {
      var specifier = node.specifiers[0];
      t.assertImportNamespaceSpecifier(specifier);
      var binding = scope.getOwnBinding(specifier.local.name);
      return !!(binding != null && binding.referencePaths.every(function (path) {
        return path.parentPath.isMemberExpression({
          object: path.node
        });
      }));
    }
    return {
      name: "proposal-import-defer",
      inherits: syntaxImportDefer,
      pre: function pre() {
        var file = this.file;
        defineCommonJSHook(file, {
          name: "@babel/plugin-proposal-import-defer",
          version: "7.24.7",
          getWrapperPayload: function getWrapperPayload(source, metadata, importNodes) {
            var needsProxy = false;
            for (var _iterator = _createForOfIteratorHelperLoose(importNodes), _step; !(_step = _iterator()).done;) {
              var node = _step.value;
              if (!t.isImportDeclaration(node)) return null;
              if (node.phase !== "defer") return null;
              if (!allReferencesAreProps(file.scope, node)) needsProxy = true;
            }
            return needsProxy ? "defer/proxy" : "defer/function";
          },
          buildRequireWrapper: function buildRequireWrapper(name, init, payload, referenced) {
            if (payload === "defer/proxy") {
              if (!referenced) return false;
              return template.statement.ast(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["\n              var ", " = ", "(\n                () => ", "\n              )\n            "])), name, file.addHelper("importDeferProxy"), init);
            }
            if (payload === "defer/function") {
              if (!referenced) return false;
              return template.statement.ast(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteralLoose(["\n              function ", "(data) {\n                ", " = () => data;\n                return data = ", ";\n              }\n            "])), name, name, init);
            }
          },
          wrapReference: function wrapReference(ref, payload) {
            if (payload === "defer/function") return t.callExpression(ref, []);
          }
        });
      },
      visitor: {
        Program: function Program(path) {
          if (this.file.get("@babel/plugin-transform-modules-*") !== "commonjs") {
            throw new Error("@babel/plugin-proposal-import-defer can only be used when" + " transpiling modules to CommonJS.");
          }
          var eagerImports = new Set();
          for (var _iterator2 = _createForOfIteratorHelperLoose(path.get("body")), _step2; !(_step2 = _iterator2()).done;) {
            var child = _step2.value;
            if (child.isImportDeclaration() && child.node.phase == null || child.isExportNamedDeclaration() && child.node.source !== null || child.isExportAllDeclaration()) {
              var specifier = child.node.source.value;
              if (!eagerImports.has(specifier)) {
                eagerImports.add(specifier);
              }
            }
          }
          var importsToPush = [];
          for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("body")), _step3; !(_step3 = _iterator3()).done;) {
            var _child = _step3.value;
            if (_child.isImportDeclaration({
              phase: "defer"
            })) {
              var _specifier = _child.node.source.value;
              if (!eagerImports.has(_specifier)) continue;
              _child.node.phase = null;
              importsToPush.push(_child.node);
              _child.remove();
            }
          }
          if (importsToPush.length) {
            path.pushContainer("body", importsToPush);
            path.scope.crawl();
          }
        }
      }
    };
  });

  var _excluded$1 = ["node"];
  function isEmpty$1(obj) {
    return Object.keys(obj).length === 0;
  }
  var isRequiredOptions = {
    compatData: {
      webIMR: {
        chrome: "105.0.0",
        edge: "105.0.0",
        firefox: "106.0.0",
        opera: "91.0.0",
        safari: "16.4.0",
        opera_mobile: "72.0.0",
        ios: "16.4.0",
        samsung: "20.0",
        deno: "1.24.0"
      },
      nodeIMR: {
        node: "20.6.0"
      },
      nodeFSP: {
        node: "10.0.0"
      }
    }
  };
  var SUPPORT_CACHE = new WeakMap();
  function getSupport(targets) {
    if (SUPPORT_CACHE.has(targets)) return SUPPORT_CACHE.get(targets);
    var nodeTarget = targets.node,
      webTargets = _objectWithoutPropertiesLoose(targets, _excluded$1);
    var emptyNodeTarget = nodeTarget == null;
    var emptyWebTargets = isEmpty$1(webTargets);
    var needsNodeSupport = !emptyNodeTarget || emptyWebTargets;
    var needsWebSupport = !emptyWebTargets || emptyNodeTarget;
    var webSupportsIMR = !emptyWebTargets && !isRequired("webIMR", webTargets, isRequiredOptions);
    var nodeSupportsIMR = !emptyNodeTarget && !isRequired("nodeIMR", {
      node: nodeTarget
    }, isRequiredOptions);
    var nodeSupportsFsPromises = !emptyNodeTarget && !isRequired("nodeFSP", {
      node: nodeTarget
    }, isRequiredOptions);
    var result = {
      needsNodeSupport: needsNodeSupport,
      needsWebSupport: needsWebSupport,
      nodeSupportsIMR: nodeSupportsIMR,
      webSupportsIMR: webSupportsIMR,
      nodeSupportsFsPromises: nodeSupportsFsPromises
    };
    SUPPORT_CACHE.set(targets, result);
    return result;
  }

  var _templateObject$4, _templateObject2$4, _templateObject3$4, _templateObject4$2, _templateObject5$1, _templateObject6, _templateObject7, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19, _templateObject20, _templateObject21;
  function imp(path, name, module) {
    return addNamed(path, name, module, {
      importedType: "es6"
    });
  }
  var imr = function imr(s) {
    return template$1.expression.ast(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteralLoose(["\n  import.meta.resolve(", ")\n"])), s);
  };
  var imrWithFallback = function imrWithFallback(s) {
    return template$1.expression.ast(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteralLoose(["\n  import.meta.resolve?.(", ") ?? new URL(", ", import.meta.url)\n"])), s, cloneNode$g(s));
  };
  function importToPlatformApi(targets, transformers, toCommonJS) {
    var _buildFetchAsync;
    var _getSupport = getSupport(targets),
      needsNodeSupport = _getSupport.needsNodeSupport,
      needsWebSupport = _getSupport.needsWebSupport,
      nodeSupportsIMR = _getSupport.nodeSupportsIMR,
      webSupportsIMR = _getSupport.webSupportsIMR,
      nodeSupportsFsPromises = _getSupport.nodeSupportsFsPromises;
    var supportIsomorphicCJS = transformers.commonJS != null;
    var buildFetchAsync;
    var buildFetchSync;
    var p = function p(_ref) {
      var _ref$web = _ref.web,
        w = _ref$web === void 0 ? needsWebSupport : _ref$web,
        _ref$node = _ref.node,
        n = _ref$node === void 0 ? needsNodeSupport : _ref$node,
        _ref$nodeFSP = _ref.nodeFSP,
        nF = _ref$nodeFSP === void 0 ? nodeSupportsFsPromises : _ref$nodeFSP,
        _ref$webIMR = _ref.webIMR,
        wI = _ref$webIMR === void 0 ? webSupportsIMR : _ref$webIMR,
        _ref$nodeIMR = _ref.nodeIMR,
        nI = _ref$nodeIMR === void 0 ? nodeSupportsIMR : _ref$nodeIMR,
        _ref$toCJS = _ref.toCJS,
        c = _ref$toCJS === void 0 ? toCommonJS : _ref$toCJS,
        _ref$supportIsomorphi = _ref.supportIsomorphicCJS,
        iC = _ref$supportIsomorphi === void 0 ? supportIsomorphicCJS : _ref$supportIsomorphi;
      return +w + (+n << 1) + (+wI << 2) + (+nI << 3) + (+c << 4) + (+nF << 5) + (+iC << 6);
    };
    var readFileP = function readFileP(fs, arg) {
      if (nodeSupportsFsPromises) {
        return template$1.expression.ast(_templateObject3$4 || (_templateObject3$4 = _taggedTemplateLiteralLoose(["", ".promises.readFile(", ")"])), fs, arg);
      }
      return template$1.expression.ast(_templateObject4$2 || (_templateObject4$2 = _taggedTemplateLiteralLoose(["\n      new Promise(\n        (a =>\n          (r, j) => ", ".readFile(a, (e, d) => e ? j(e) : r(d))\n        )(", ")\n      )"])), fs, arg);
    };
    switch (p({
      web: needsWebSupport,
      node: needsNodeSupport,
      webIMR: webSupportsIMR,
      nodeIMR: nodeSupportsIMR,
      toCJS: toCommonJS
    })) {
      case p({
        toCJS: true,
        supportIsomorphicCJS: true
      }):
        buildFetchSync = function buildFetchSync(specifier) {
          return transformers.commonJS(identifier$e("require"), specifier);
        };
        break;
      case p({
        web: true,
        node: true
      }):
        buildFetchAsync = function buildFetchAsync(specifier) {
          var web = transformers.webFetch(callExpression$c(identifier$e("fetch"), [(webSupportsIMR ? imr : imrWithFallback)(cloneNode$g(specifier))]));
          var node = supportIsomorphicCJS ? template$1.expression.ast(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n              import(\"module\").then(module => ", ")\n            "])), transformers.commonJS(template$1.expression.ast(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["module.createRequire(import.meta.url)"]))), specifier)) : nodeSupportsIMR ? template$1.expression.ast(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["\n                import(\"fs\").then(\n                  fs => ", "\n                ).then(", ")\n              "])), readFileP(identifier$e("fs"), template$1.expression.ast(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["new URL(", ")"])), imr(specifier))), transformers.nodeFsAsync()) : template$1.expression.ast(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n                Promise.all([import(\"fs\"), import(\"module\")])\n                  .then(([fs, module]) =>\n                    ", "\n                  )\n                  .then(", ")\n              "])), readFileP(identifier$e("fs"), template$1.expression.ast(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n                        module.createRequire(import.meta.url).resolve(", ")\n                      "])), specifier)), transformers.nodeFsAsync());
          return template$1.expression.ast(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n            typeof process === \"object\" && process.versions?.node\n              ? ", "\n              : ", "\n          "])), node, web);
        };
        break;
      case p({
        web: true,
        node: false,
        webIMR: true
      }):
        buildFetchAsync = function buildFetchAsync(specifier) {
          return transformers.webFetch(callExpression$c(identifier$e("fetch"), [imr(specifier)]));
        };
        break;
      case p({
        web: true,
        node: false,
        webIMR: false
      }):
        buildFetchAsync = function buildFetchAsync(specifier) {
          return transformers.webFetch(callExpression$c(identifier$e("fetch"), [imrWithFallback(specifier)]));
        };
        break;
      case p({
        web: false,
        node: true,
        toCJS: true
      }):
        buildFetchSync = function buildFetchSync(specifier) {
          return transformers.nodeFsSync(template$1.expression.ast(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n            require(\"fs\").readFileSync(require.resolve(", "))\n          "])), specifier));
        };
        buildFetchAsync = function buildFetchAsync(specifier) {
          return template$1.expression.ast(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n            require(\"fs\").promises.readFile(require.resolve(", "))\n              .then(", ")\n          "])), specifier, transformers.nodeFsAsync());
        };
        break;
      case p({
        web: false,
        node: true,
        toCJS: false,
        supportIsomorphicCJS: true
      }):
        buildFetchSync = function buildFetchSync(specifier, path) {
          return transformers.commonJS(template$1.expression.ast(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["\n            ", "(import.meta.url)\n          "])), imp(path, "createRequire", "module")), specifier);
        };
        break;
      case p({
        web: false,
        node: true,
        toCJS: false,
        nodeIMR: true
      }):
        buildFetchSync = function buildFetchSync(specifier, path) {
          return transformers.nodeFsSync(template$1.expression.ast(_templateObject15 || (_templateObject15 = _taggedTemplateLiteralLoose(["\n            ", "(\n              new URL(", ")\n            )\n          "])), imp(path, "readFileSync", "fs"), imr(specifier)));
        };
        buildFetchAsync = function buildFetchAsync(specifier, path) {
          return template$1.expression.ast(_templateObject16 || (_templateObject16 = _taggedTemplateLiteralLoose(["\n          ", "\n            .readFile(new URL(", "))\n            .then(", ")\n        "])), imp(path, "promises", "fs"), imr(specifier), transformers.nodeFsAsync());
        };
        break;
      case p({
        web: false,
        node: true,
        toCJS: false,
        nodeIMR: false
      }):
        buildFetchSync = function buildFetchSync(specifier, path) {
          return transformers.nodeFsSync(template$1.expression.ast(_templateObject17 || (_templateObject17 = _taggedTemplateLiteralLoose(["\n            ", "(\n              ", "(import.meta.url)\n                .resolve(", ")\n            )\n          "])), imp(path, "readFileSync", "fs"), imp(path, "createRequire", "module"), specifier));
        };
        buildFetchAsync = function buildFetchAsync(specifier, path) {
          return transformers.webFetch(template$1.expression.ast(_templateObject18 || (_templateObject18 = _taggedTemplateLiteralLoose(["\n            ", "\n              .readFile(\n                ", "(import.meta.url)\n                  .resolve(", ")\n              )\n          "])), imp(path, "promises", "fs"), imp(path, "createRequire", "module"), specifier));
        };
        break;
      default:
        throw new Error("Internal Babel error: unreachable code.");
    }
    (_buildFetchAsync = buildFetchAsync) != null ? _buildFetchAsync : buildFetchAsync = buildFetchSync;
    var buildFetchAsyncWrapped = function buildFetchAsyncWrapped(expression, path) {
      if (isStringLiteral$5(expression)) {
        return template$1.expression.ast(_templateObject19 || (_templateObject19 = _taggedTemplateLiteralLoose(["\n        Promise.resolve().then(() => ", ")\n      "])), buildFetchAsync(expression, path));
      } else {
        return template$1.expression.ast(_templateObject20 || (_templateObject20 = _taggedTemplateLiteralLoose(["\n        Promise.resolve(`${", "}`).then((s) => ", ")\n      "], ["\n        Promise.resolve(\\`\\${", "}\\`).then((s) => ", ")\n      "])), expression, buildFetchAsync(identifier$e("s"), path));
      }
    };
    var buildFetch = buildFetchSync;
    if (!buildFetchSync) {
      if (toCommonJS) {
        buildFetch = function buildFetch(specifier, path) {
          throw path.buildCodeFrameError("Cannot compile to CommonJS, since it would require top-level await.");
        };
      } else {
        buildFetch = buildFetchAsync;
      }
    }
    return {
      buildFetch: buildFetch,
      buildFetchAsync: buildFetchAsyncWrapped,
      needsAwait: !buildFetchSync
    };
  }
  function buildParallelStaticImports(data, needsAwait) {
    if (data.length === 0) return null;
    var declarators = [];
    if (data.length === 1) {
      var rhs = data[0].fetch;
      if (needsAwait) rhs = awaitExpression$1(rhs);
      declarators.push(variableDeclarator$6(data[0].id, rhs));
    } else if (needsAwait) {
      var ids = data.map(function (_ref2) {
        var id = _ref2.id;
        return id;
      });
      var fetches = data.map(function (_ref3) {
        var fetch = _ref3.fetch;
        return fetch;
      });
      declarators.push(variableDeclarator$6(arrayPattern(ids), awaitExpression$1(template$1.expression.ast(_templateObject21 || (_templateObject21 = _taggedTemplateLiteralLoose(["\n            Promise.all(", ")\n          "])), arrayExpression$1(fetches)))));
    } else {
      for (var _iterator = _createForOfIteratorHelperLoose(data), _step; !(_step = _iterator()).done;) {
        var _step$value = _step.value,
          id = _step$value.id,
          fetch = _step$value.fetch;
        declarators.push(variableDeclarator$6(id, fetch));
      }
    }
    return variableDeclaration$6("const", declarators);
  }

  var _templateObject$3, _templateObject2$3, _templateObject3$3, _templateObject4$1, _templateObject5;
  var proposalJsonModules = declare(function (api, options) {
    var t = api.types,
      template = api.template;
    api.assertVersion("*");
    var targets = api.targets();
    var helperESM;
    var helperCJS;
    var transformers = {
      commonJS: options.uncheckedRequire ? function (require, specifier) {
        return t.callExpression(require, [specifier]);
      } : null,
      webFetch: function webFetch(fetch) {
        return template.expression.ast(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose(["", ".then(r => r.json())"])), fetch);
      },
      nodeFsSync: function nodeFsSync(read) {
        return template.expression.ast(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["JSON.parse(", ")"])), read);
      },
      nodeFsAsync: function nodeFsAsync() {
        return template.expression.ast(_templateObject3$3 || (_templateObject3$3 = _taggedTemplateLiteralLoose(["JSON.parse"])));
      }
    };
    var getHelper = function getHelper(file) {
      var modules = file.get("@babel/plugin-transform-modules-*");
      if (modules === "commonjs") {
        var _helperCJS;
        return (_helperCJS = helperCJS) != null ? _helperCJS : helperCJS = importToPlatformApi(targets, transformers, true);
      }
      if (modules == null) {
        var _helperESM;
        return (_helperESM = helperESM) != null ? _helperESM : helperESM = importToPlatformApi(targets, transformers, false);
      }
      throw new Error("@babel/plugin-proposal-json-modules can only be used when not " + "compiling modules, or when compiling them to CommonJS.");
    };
    function getAttributeKey(_ref) {
      var key = _ref.key;
      return t.isIdentifier(key) ? key.name : key.value;
    }
    function hasTypeJson(attributes) {
      return !!(attributes != null && attributes.some(function (attr) {
        return getAttributeKey(attr) === "type" && attr.value.value === "json";
      }));
    }
    return {
      name: "proposal-json-modules",
      inherits: _syntaxImportAttributes,
      visitor: {
        Program: function Program(path) {
          if (path.node.sourceType !== "module") return;
          var helper = getHelper(this.file);
          var data = [];
          for (var _iterator = _createForOfIteratorHelperLoose(path.get("body")), _step; !(_step = _iterator()).done;) {
            var _id;
            var _decl = _step.value;
            if (!_decl.isImportDeclaration()) continue;
            var attributes = _decl.node.attributes || _decl.node.assertions;
            if (!hasTypeJson(attributes)) continue;
            if (_decl.node.phase != null) {
              throw _decl.buildCodeFrameError("JSON modules do not support phase modifiers.");
            }
            if (attributes.length > 1) {
              var paths = _decl.node.attributes ? _decl.get("attributes") : _decl.get("assertions");
              var index = getAttributeKey(attributes[0]) === "type" ? 1 : 0;
              throw paths[index].buildCodeFrameError("Unknown attribute for JSON modules.");
            }
            var id = void 0;
            var needsNS = false;
            for (var _iterator2 = _createForOfIteratorHelperLoose(_decl.get("specifiers")), _step2; !(_step2 = _iterator2()).done;) {
              var specifier = _step2.value;
              if (specifier.isImportSpecifier()) {
                throw specifier.buildCodeFrameError("JSON modules do not support named imports.");
              }
              id = specifier.node.local;
              needsNS = specifier.isImportNamespaceSpecifier();
            }
            (_id = id) != null ? _id : id = path.scope.generateUidIdentifier("_");
            var fetch = helper.buildFetch(_decl.node.source, path);
            if (needsNS) {
              if (helper.needsAwait) {
                fetch = template.expression.ast(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n                ", ".then(j => ({ default: j }))\n              "])), fetch);
              } else {
                fetch = template.expression.ast(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["{ default: ", " }"])), fetch);
              }
            }
            data.push({
              id: id,
              fetch: fetch
            });
            _decl.remove();
          }
          if (data.length === 0) return;
          var decl = buildParallelStaticImports(data, helper.needsAwait);
          if (decl) path.unshiftContainer("body", decl);
        }
      }
    };
  });

  var syntaxAsyncGenerators = makeNoopPlugin(),
    syntaxClassProperties = makeNoopPlugin(),
    syntaxClassStaticBlock = makeNoopPlugin(),
    syntaxImportMeta = makeNoopPlugin(),
    syntaxObjectRestSpread = makeNoopPlugin(),
    syntaxOptionalCatchBinding = makeNoopPlugin(),
    syntaxTopLevelAwait = makeNoopPlugin();
  var all = {
    "syntax-async-generators": syntaxAsyncGenerators,
    "syntax-class-properties": syntaxClassProperties,
    "syntax-class-static-block": syntaxClassStaticBlock,
    "syntax-import-meta": syntaxImportMeta,
    "syntax-object-rest-spread": syntaxObjectRestSpread,
    "syntax-optional-catch-binding": syntaxOptionalCatchBinding,
    "syntax-top-level-await": syntaxTopLevelAwait,
    "external-helpers": externalHelpers,
    "syntax-decimal": syntaxDecimal,
    "syntax-decorators": syntaxDecorators,
    "syntax-destructuring-private": syntaxDestructuringPrivate,
    "syntax-do-expressions": syntaxDoExpressions,
    "syntax-explicit-resource-management": syntaxExplicitResourceManagement,
    "syntax-export-default-from": syntaxExportDefaultFrom,
    "syntax-flow": syntaxFlow,
    "syntax-function-bind": syntaxFunctionBind,
    "syntax-function-sent": syntaxFunctionSent,
    "syntax-import-assertions": _syntaxImportAssertions,
    "syntax-import-attributes": _syntaxImportAttributes,
    "syntax-import-reflection": syntaxImportReflection,
    "syntax-jsx": syntaxJsx,
    "syntax-module-blocks": syntaxModuleBlocks,
    "syntax-optional-chaining-assign": syntaxOptionalChainingAssign,
    "syntax-pipeline-operator": syntaxPipelineOperator,
    "syntax-record-and-tuple": syntaxRecordAndTuple,
    "syntax-typescript": syntaxTypescript,
    "transform-async-generator-functions": _transformAsyncGeneratorFunctions,
    "transform-class-properties": _transformClassProperties,
    "transform-class-static-block": _transformClassStaticBlock,
    "proposal-decorators": proposalDecorators,
    "proposal-destructuring-private": proposalDestructuringPrivate,
    "proposal-do-expressions": proposalDoExpressions,
    "transform-duplicate-named-capturing-groups-regex": _transformDuplicateNamedCapturingGroupsRegex,
    "transform-dynamic-import": _transformDynamicImport,
    "proposal-export-default-from": proposalExportDefaultFrom,
    "transform-export-namespace-from": _transformExportNamespaceFrom,
    "proposal-function-bind": proposalFunctionBind,
    "proposal-function-sent": proposalFunctionSent,
    "transform-json-strings": _transformJsonStrings,
    "transform-logical-assignment-operators": _transformLogicalAssignmentOperators,
    "transform-nullish-coalescing-operator": _transformNullishCoalescingOperator,
    "transform-numeric-separator": _transformNumericSeparator,
    "transform-object-rest-spread": _transformObjectRestSpread,
    "transform-optional-catch-binding": _transformOptionalCatchBinding,
    "transform-optional-chaining": _transformOptionalChaining,
    "proposal-optional-chaining-assign": proposalOptionalChainingAssign,
    "proposal-pipeline-operator": proposalPipelineOperator,
    "transform-private-methods": _transformPrivateMethods,
    "transform-private-property-in-object": _transformPrivatePropertyInObject,
    "proposal-record-and-tuple": proposalRecordAndTuple,
    "proposal-regexp-modifiers": proposalRegexpModifiers,
    "proposal-throw-expressions": proposalThrowExpressions,
    "transform-unicode-property-regex": _transformUnicodePropertyRegex,
    "transform-unicode-sets-regex": _transformUnicodeSetsRegex,
    "transform-async-to-generator": _transformAsyncToGenerator,
    "transform-arrow-functions": _transformArrowFunctions,
    "transform-block-scoped-functions": _transformBlockScopedFunctions,
    "transform-block-scoping": _transformBlockScoping,
    "transform-classes": _transformClasses,
    "transform-computed-properties": _transformComputedProperties,
    "transform-destructuring": _transformDestructuring,
    "transform-dotall-regex": _transformDotallRegex,
    "transform-duplicate-keys": _transformDuplicateKeys,
    "transform-exponentiation-operator": transformExponentialOperator,
    "transform-flow-comments": transformFlowComments,
    "transform-flow-strip-types": transformFlowStripTypes,
    "transform-for-of": _transformForOf,
    "transform-function-name": _transformFunctionName,
    "transform-instanceof": transformInstanceof,
    "transform-jscript": transformJscript,
    "transform-literals": _transformLiterals,
    "transform-member-expression-literals": _transformMemberExpressionLiterals,
    "transform-modules-amd": _transformModulesAmd,
    "transform-modules-commonjs": transformModulesCommonJS,
    "transform-modules-systemjs": _transformModulesSystemjs,
    "transform-modules-umd": _transformModulesUmd,
    "transform-named-capturing-groups-regex": _transformNamedCapturingGroupsRegex,
    "transform-new-target": _transformNewTarget,
    "transform-object-assign": transformObjectAssign,
    "transform-object-super": _transformObjectSuper,
    "transform-object-set-prototype-of-to-assign": transformObjectSetPrototypeOfToAssign,
    "transform-parameters": _transformParameters,
    "transform-property-literals": _transformPropertyLiterals,
    "transform-property-mutators": transformPropertyMutators,
    "transform-proto-to-assign": transformProtoToAssign,
    "transform-react-constant-elements": transformReactConstantElements,
    "transform-react-display-name": transformReactDisplayName,
    "transform-react-inline-elements": transformReactInlineElements,
    "transform-react-jsx": transformReactJSX,
    "transform-react-jsx-compat": transformReactJsxCompat,
    "transform-react-jsx-development": plugin,
    "transform-react-jsx-self": transformReactJsxSelf,
    "transform-react-jsx-source": transformReactJsxSource,
    "transform-regenerator": _transformRegenerator,
    "transform-reserved-words": _transformReservedWords,
    "transform-runtime": transformRuntime,
    "transform-shorthand-properties": _transformShorthandProperties,
    "transform-spread": _transformSpread,
    "transform-sticky-regex": _transformStickyRegex,
    "transform-strict-mode": transformStrictMode,
    "transform-template-literals": _transformTemplateLiterals,
    "transform-typeof-symbol": _transformTypeofSymbol,
    "transform-typescript": transformTypeScript,
    "transform-unicode-escapes": _transformUnicodeEscapes,
    "transform-unicode-regex": _transformUnicodeRegex,
    "proposal-explicit-resource-management": proposalExplicitResourceManagement,
    "proposal-import-defer": proposalImportDefer,
    "proposal-json-modules": proposalJsonModules
  };

  var preset2015 = (function (_, opts) {
    var loose = false;
    var modules = "commonjs";
    var spec = false;
    if (opts !== undefined) {
      if (opts.loose !== undefined) loose = opts.loose;
      if (opts.modules !== undefined) modules = opts.modules;
      if (opts.spec !== undefined) spec = opts.spec;
    }
    var optsLoose = {
      loose: loose
    };
    return {
      plugins: [[_transformTemplateLiterals, {
        loose: loose,
        spec: spec
      }], _transformLiterals, _transformFunctionName, [_transformArrowFunctions, {
        spec: spec
      }], _transformBlockScopedFunctions, [_transformClasses, optsLoose], _transformObjectSuper, _transformShorthandProperties, _transformDuplicateKeys, [_transformComputedProperties, optsLoose], [_transformForOf, optsLoose], _transformStickyRegex, _transformUnicodeEscapes, _transformUnicodeRegex, [_transformSpread, optsLoose], [_transformParameters, optsLoose], [_transformDestructuring, optsLoose], _transformBlockScoping, _transformTypeofSymbol, transformInstanceof, (modules === "commonjs" || modules === "cjs") && [transformModulesCommonJS, optsLoose], modules === "systemjs" && [_transformModulesSystemjs, optsLoose], modules === "amd" && [_transformModulesAmd, optsLoose], modules === "umd" && [_transformModulesUmd, optsLoose], [_transformRegenerator, {
        async: false,
        asyncGenerators: false
      }]].filter(Boolean)
    };
  });

  var presetStage3 = (function (_, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var _opts = opts,
      _opts$loose = _opts.loose,
      loose = _opts$loose === void 0 ? false : _opts$loose,
      _opts$decoratorsLegac = _opts.decoratorsLegacy,
      decoratorsLegacy = _opts$decoratorsLegac === void 0 ? false : _opts$decoratorsLegac,
      _opts$decoratorsVersi = _opts.decoratorsVersion,
      decoratorsVersion = _opts$decoratorsVersi === void 0 ? "2018-09" : _opts$decoratorsVersi,
      decoratorsBeforeExport = _opts.decoratorsBeforeExport;
    var plugins = [[_syntaxImportAttributes, {
      deprecatedAssertSyntax: true
    }], [proposalDecorators, {
      version: decoratorsLegacy ? "legacy" : decoratorsVersion,
      decoratorsBeforeExport: decoratorsBeforeExport
    }], proposalRegexpModifiers, proposalExplicitResourceManagement, proposalJsonModules].concat(_toConsumableArray([_transformExportNamespaceFrom, _transformLogicalAssignmentOperators, [_transformOptionalChaining, {
      loose: loose
    }], [_transformNullishCoalescingOperator, {
      loose: loose
    }], [_transformClassProperties, {
      loose: loose
    }], _transformJsonStrings, _transformNumericSeparator, [_transformPrivateMethods, {
      loose: loose
    }], _transformPrivatePropertyInObject, _transformClassStaticBlock, _transformUnicodeSetsRegex, _transformDuplicateNamedCapturingGroupsRegex]));
    return {
      plugins: plugins
    };
  });

  var presetStage2 = (function (_, opts) {
    var _opts$recordAndTupleS;
    if (opts === void 0) {
      opts = {};
    }
    var _opts = opts,
      _opts$pipelineProposa = _opts.pipelineProposal,
      pipelineProposal = _opts$pipelineProposa === void 0 ? "minimal" : _opts$pipelineProposa,
      _opts$pipelineTopicTo = _opts.pipelineTopicToken,
      pipelineTopicToken = _opts$pipelineTopicTo === void 0 ? "%" : _opts$pipelineTopicTo;
    return {
      presets: [[presetStage3, opts]],
      plugins: [proposalDestructuringPrivate, [proposalPipelineOperator, {
        proposal: pipelineProposal,
        topicToken: pipelineTopicToken
      }], proposalFunctionSent, proposalThrowExpressions, [proposalRecordAndTuple, {
        syntaxType: (_opts$recordAndTupleS = opts.recordAndTupleSyntax) != null ? _opts$recordAndTupleS : "hash"
      }], syntaxModuleBlocks, syntaxImportReflection]
    };
  });

  var presetStage1 = (function (_, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var _opts = opts,
      _opts$loose = _opts.loose,
      loose = _opts$loose === void 0 ? false : _opts$loose,
      _opts$useBuiltIns = _opts.useBuiltIns,
      useBuiltIns = _opts$useBuiltIns === void 0 ? false : _opts$useBuiltIns,
      decoratorsLegacy = _opts.decoratorsLegacy,
      decoratorsVersion = _opts.decoratorsVersion,
      decoratorsBeforeExport = _opts.decoratorsBeforeExport,
      pipelineProposal = _opts.pipelineProposal,
      pipelineTopicToken = _opts.pipelineTopicToken,
      _opts$optionalChainin = _opts.optionalChainingAssignVersion,
      optionalChainingAssignVersion = _opts$optionalChainin === void 0 ? "2023-07" : _opts$optionalChainin;
    return {
      presets: [[presetStage2, {
        loose: loose,
        useBuiltIns: useBuiltIns,
        decoratorsLegacy: decoratorsLegacy,
        decoratorsVersion: decoratorsVersion,
        decoratorsBeforeExport: decoratorsBeforeExport,
        pipelineProposal: pipelineProposal,
        pipelineTopicToken: pipelineTopicToken,
        recordAndTupleSyntax: opts.recordAndTupleSyntax
      }]],
      plugins: [syntaxDecimal, proposalExportDefaultFrom, proposalDoExpressions, [proposalOptionalChainingAssign, {
        version: optionalChainingAssignVersion
      }]]
    };
  });

  var presetStage0 = (function (_, opts) {
    if (opts === void 0) {
      opts = {};
    }
    var _opts = opts,
      _opts$loose = _opts.loose,
      loose = _opts$loose === void 0 ? false : _opts$loose,
      _opts$useBuiltIns = _opts.useBuiltIns,
      useBuiltIns = _opts$useBuiltIns === void 0 ? false : _opts$useBuiltIns,
      decoratorsLegacy = _opts.decoratorsLegacy,
      decoratorsVersion = _opts.decoratorsVersion,
      decoratorsBeforeExport = _opts.decoratorsBeforeExport,
      pipelineProposal = _opts.pipelineProposal,
      pipelineTopicToken = _opts.pipelineTopicToken;
    return {
      presets: [[presetStage1, {
        loose: loose,
        useBuiltIns: useBuiltIns,
        decoratorsLegacy: decoratorsLegacy,
        decoratorsVersion: decoratorsVersion,
        decoratorsBeforeExport: decoratorsBeforeExport,
        pipelineProposal: pipelineProposal,
        pipelineTopicToken: pipelineTopicToken
      }]],
      plugins: [proposalFunctionBind]
    };
  });

  function bool(value) {
    if (value == null) return false;
    return value && value !== "false" && value !== "0";
  }
  var semver$1 = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemver$2() : requireSemver$2();

  var logPlugin = function logPlugin(item, targetVersions, list) {
    var filteredList = getInclusionReasons(item, targetVersions, list);
    var support = list[item];
    {
      if (item.startsWith("transform-")) {
        var proposalName = "proposal-" + item.slice(10);
        if (proposalName === "proposal-dynamic-import" || hasOwnProperty.call(plugins$1, proposalName)) {
          item = proposalName;
        }
      }
    }
    if (!support) {
      console.log("  " + item);
      return;
    }
    var formattedTargets = "{";
    var first = true;
    for (var _i = 0, _arr = Object.keys(filteredList); _i < _arr.length; _i++) {
      var target = _arr[_i];
      if (!first) formattedTargets += ",";
      first = false;
      formattedTargets += " " + target;
      if (support[target]) formattedTargets += " < " + support[target];
    }
    formattedTargets += " }";
    console.log("  " + item + " " + formattedTargets);
  };

  var transformAsyncArrowsInClass = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = void 0;
    var OPTS = {
      allowInsertArrow: false,
      specCompliant: false
    };
    var _default = function _default(_ref) {
      var t = _ref.types;
      return {
        name: "transform-async-arrows-in-class",
        visitor: {
          ArrowFunctionExpression: function ArrowFunctionExpression(path) {
            if (path.node.async && path.findParent(t.isClassMethod)) {
              path.arrowFunctionToExpression(OPTS);
            }
          }
        }
      };
    };
    exports["default"] = _default;
    module.exports = exports["default"];
  })(transformAsyncArrowsInClass, transformAsyncArrowsInClass.exports);
  var transformAsyncArrowsInClassExports = transformAsyncArrowsInClass.exports;

  var transformEdgeDefaultParameters = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = void 0;
    var _default = function _default(_ref) {
      var t = _ref.types;
      var isArrowParent = function isArrowParent(p) {
        return p.parentKey === "params" && p.parentPath && t.isArrowFunctionExpression(p.parentPath);
      };
      return {
        name: "transform-edge-default-parameters",
        visitor: {
          AssignmentPattern: function AssignmentPattern(path) {
            var arrowArgParent = path.find(isArrowParent);
            if (arrowArgParent && path.parent.shorthand) {
              path.parent.shorthand = false;
              (path.parent.extra || {}).shorthand = false;
              path.scope.rename(path.parent.key.name);
            }
          }
        }
      };
    };
    exports["default"] = _default;
    module.exports = exports["default"];
  })(transformEdgeDefaultParameters, transformEdgeDefaultParameters.exports);
  var transformEdgeDefaultParametersExports = transformEdgeDefaultParameters.exports;

  var transformEdgeFunctionName = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = void 0;
    var _default = function _default(_ref) {
      var t = _ref.types;
      return {
        name: "transform-edge-function-name",
        visitor: {
          FunctionExpression: {
            exit: function exit(path) {
              if (!path.node.id && t.isIdentifier(path.parent.id)) {
                var id = t.cloneNode(path.parent.id);
                var binding = path.scope.getBinding(id.name);
                if (binding == null ? void 0 : binding.constantViolations.length) {
                  path.scope.rename(id.name);
                }
                path.node.id = id;
              }
            }
          }
        }
      };
    };
    exports["default"] = _default;
    module.exports = exports["default"];
  })(transformEdgeFunctionName, transformEdgeFunctionName.exports);
  var transformEdgeFunctionNameExports = transformEdgeFunctionName.exports;

  var bugfixFirefoxClassInComputedKey = declare(function (_ref) {
    var t = _ref.types,
      assertVersion = _ref.assertVersion;
    assertVersion("*");
    var containsClassExpressionVisitor = {
      ClassExpression: function ClassExpression(path, state) {
        state.found = true;
        path.stop();
      },
      Function: function Function(path) {
        path.skip();
      }
    };
    var containsYieldOrAwaitVisitor = environmentVisitor({
      YieldExpression: function YieldExpression(path, state) {
        state["yield"] = true;
        if (state["await"]) path.stop();
      },
      AwaitExpression: function AwaitExpression(path, state) {
        state["await"] = true;
        if (state["yield"]) path.stop();
      }
    });
    function containsClassExpression(path) {
      if (t.isClassExpression(path.node)) return true;
      if (t.isFunction(path.node)) return false;
      var state = {
        found: false
      };
      path.traverse(containsClassExpressionVisitor, state);
      return state.found;
    }
    function wrap(path) {
      var context = {
        "yield": t.isYieldExpression(path.node),
        "await": t.isAwaitExpression(path.node)
      };
      path.traverse(containsYieldOrAwaitVisitor, context);
      var replacement;
      if (context["yield"]) {
        var fn = t.functionExpression(null, [], t.blockStatement([t.returnStatement(path.node)]), true, context["await"]);
        replacement = t.yieldExpression(t.callExpression(t.memberExpression(fn, t.identifier("call")), [t.thisExpression(), t.identifier("arguments")]), true);
      } else {
        var _fn = t.arrowFunctionExpression([], path.node, context["await"]);
        replacement = t.callExpression(_fn, []);
        if (context["await"]) replacement = t.awaitExpression(replacement);
      }
      path.replaceWith(replacement);
    }
    return {
      name: "bugfix-firefox-class-in-computed-class-key",
      visitor: {
        Class: function Class(path) {
          var hasPrivateElement = path.node.body.body.some(function (node) {
            return t.isPrivate(node);
          });
          if (!hasPrivateElement) return;
          for (var _iterator = _createForOfIteratorHelperLoose(path.get("body.body")), _step; !(_step = _iterator()).done;) {
            var elem = _step.value;
            if ("computed" in elem.node && elem.node.computed && containsClassExpression(elem.get("key"))) {
              wrap(elem.get("key"));
            }
          }
        }
      }
    };
  });

  var transformTaggedTemplateCaching = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = void 0;
    var _default = function _default(_ref) {
      var t = _ref.types;
      return {
        name: "transform-tagged-template-caching",
        visitor: {
          TaggedTemplateExpression: function TaggedTemplateExpression(path, state) {
            var processed = state.get("processed");
            if (!processed) {
              processed = new WeakSet();
              state.set("processed", processed);
            }
            if (processed.has(path.node)) return path.skip();
            var expressions = path.node.quasi.expressions;
            var identity = state.get("identity");
            if (!identity) {
              identity = path.scope.getProgramParent().generateDeclaredUidIdentifier("_");
              state.set("identity", identity);
              var binding = path.scope.getBinding(identity.name);
              binding.path.get("init").replaceWith(t.arrowFunctionExpression([t.identifier("t")], t.identifier("t")));
            }
            var template = t.taggedTemplateExpression(t.cloneNode(identity), t.templateLiteral(path.node.quasi.quasis, expressions.map(function () {
              return t.numericLiteral(0);
            })));
            processed.add(template);
            var ident = path.scope.getProgramParent().generateDeclaredUidIdentifier("t");
            path.scope.getBinding(ident.name).path.parent.kind = "let";
            var inlineCache = t.logicalExpression("||", ident, t.assignmentExpression("=", t.cloneNode(ident), template));
            var node = t.callExpression(path.node.tag, [inlineCache].concat(_toConsumableArray(expressions)));
            path.replaceWith(node);
          }
        }
      };
    };
    exports["default"] = _default;
    module.exports = exports["default"];
  })(transformTaggedTemplateCaching, transformTaggedTemplateCaching.exports);
  var transformTaggedTemplateCachingExports = transformTaggedTemplateCaching.exports;

  var transformSafariBlockShadowing = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = _default;
    function _default(_ref) {
      var t = _ref.types;
      return {
        name: "transform-safari-block-shadowing",
        visitor: {
          VariableDeclarator: function VariableDeclarator(path) {
            var kind = path.parent.kind;
            if (kind !== "let" && kind !== "const") return;
            var block = path.scope.block;
            if (t.isFunction(block) || t.isProgram(block)) return;
            var bindings = t.getOuterBindingIdentifiers(path.node.id);
            for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
              var name = _Object$keys[_i];
              var scope = path.scope;
              if (!scope.hasOwnBinding(name)) continue;
              while (scope = scope.parent) {
                if (scope.hasOwnBinding(name)) {
                  path.scope.rename(name);
                  break;
                }
                if (t.isFunction(scope.block) || t.isProgram(scope.block)) {
                  break;
                }
              }
            }
          }
        }
      };
    }
    module.exports = exports["default"];
  })(transformSafariBlockShadowing, transformSafariBlockShadowing.exports);
  var transformSafariBlockShadowingExports = transformSafariBlockShadowing.exports;

  var transformSafariForShadowing = {exports: {}};

  (function (module, exports) {

    exports.__esModule = true;
    exports["default"] = void 0;
    function handle(declaration) {
      if (!declaration.isVariableDeclaration()) return;
      var fn = declaration.getFunctionParent();
      var name = declaration.node.declarations[0].id.name;
      if (fn && fn.scope.hasOwnBinding(name) && fn.scope.getOwnBinding(name).kind === "param") {
        declaration.scope.rename(name);
      }
    }
    var _default = function _default() {
      return {
        name: "transform-safari-for-shadowing",
        visitor: {
          ForXStatement: function ForXStatement(path) {
            handle(path.get("left"));
          },
          ForStatement: function ForStatement(path) {
            handle(path.get("init"));
          }
        }
      };
    };
    exports["default"] = _default;
    module.exports = exports["default"];
  })(transformSafariForShadowing, transformSafariForShadowing.exports);
  var transformSafariForShadowingExports = transformSafariForShadowing.exports;

  function shouldTransform$1(path) {
    var node = path.node;
    var functionId = node.id;
    if (!functionId) return false;
    var name = functionId.name;
    var paramNameBinding = path.scope.getOwnBinding(name);
    if (paramNameBinding === undefined) {
      return false;
    }
    if (paramNameBinding.kind !== "param") {
      return false;
    }
    if (paramNameBinding.identifier === paramNameBinding.path.node) {
      return false;
    }
    return name;
  }

  var bugfixSafariIdDestructuringCollisionInFunctionExpression = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
      visitor: {
        FunctionExpression: function FunctionExpression(path) {
          var name = shouldTransform$1(path);
          if (name) {
            var scope = path.scope;
            var newParamName = scope.generateUid(name);
            scope.rename(name, newParamName);
          }
        }
      }
    };
  });

  function needsWrapping(node) {
    if (isLiteral$5(node) && !isTemplateLiteral$1(node)) {
      return false;
    }
    if (isCallExpression$8(node) || isOptionalCallExpression$2(node) || isNewExpression$3(node)) {
      return needsWrapping(node.callee) || node.arguments.some(needsWrapping);
    }
    if (isTemplateLiteral$1(node)) {
      return node.expressions.some(needsWrapping);
    }
    if (isTaggedTemplateExpression$1(node)) {
      return needsWrapping(node.tag) || needsWrapping(node.quasi);
    }
    if (isArrayExpression$2(node)) {
      return node.elements.some(needsWrapping);
    }
    if (isObjectExpression$3(node)) {
      return node.properties.some(function (prop) {
        if (isObjectProperty$3(prop)) {
          return needsWrapping(prop.value) || prop.computed && needsWrapping(prop.key);
        }
        if (isObjectMethod(prop)) {
          return false;
        }
        return false;
      });
    }
    if (isMemberExpression$8(node) || isOptionalMemberExpression$3(node)) {
      return needsWrapping(node.object) || node.computed && needsWrapping(node.property);
    }
    if (isFunctionExpression(node) || isArrowFunctionExpression(node) || isClassExpression(node)) {
      return false;
    }
    if (isThisExpression$2(node)) {
      return false;
    }
    if (isSequenceExpression$1(node)) {
      return node.expressions.some(needsWrapping);
    }
    return true;
  }
  function wrapInitializer(path) {
    var value = path.node.value;
    if (value && needsWrapping(value)) {
      path.node.value = callExpression$c(arrowFunctionExpression$4([], value), []);
    }
  }
  var bugfixSafariClassFieldInitializerScope = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "plugin-bugfix-safari-class-field-initializer-scope",
      visitor: {
        ClassProperty: function ClassProperty(path) {
          wrapInitializer(path);
        },
        ClassPrivateProperty: function ClassPrivateProperty(path) {
          wrapInitializer(path);
        }
      }
    };
  });

  function matchAffectedArguments(argumentNodes) {
    var spreadIndex = argumentNodes.findIndex(function (node) {
      return isSpreadElement$1(node);
    });
    return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1;
  }
  function shouldTransform(path) {
    var optionalPath = path;
    var chains = [];
    for (;;) {
      if (optionalPath.isOptionalMemberExpression()) {
        chains.push(optionalPath.node);
        optionalPath = skipTransparentExprWrappers(optionalPath.get("object"));
      } else if (optionalPath.isOptionalCallExpression()) {
        chains.push(optionalPath.node);
        optionalPath = skipTransparentExprWrappers(optionalPath.get("callee"));
      } else {
        break;
      }
    }
    for (var i = 0; i < chains.length; i++) {
      var node = chains[i];
      if (isOptionalCallExpression$2(node) && matchAffectedArguments(node.arguments)) {
        if (node.optional) {
          return true;
        }
        var callee = chains[i + 1];
        if (isOptionalMemberExpression$3(callee, {
          optional: true
        })) {
          return true;
        }
      }
    }
    return false;
  }

  var bugfixV8SpreadParametersInOptionalChaining = declare(function (api) {
    var _api$assumption, _api$assumption2;
    api.assertVersion("*");
    var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : false;
    var pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false;
    return {
      name: "bugfix-v8-spread-parameters-in-optional-chaining",
      visitor: {
        "OptionalCallExpression|OptionalMemberExpression": function OptionalCallExpressionOptionalMemberExpression(path) {
          if (shouldTransform(path)) {
            transform$1(path, {
              noDocumentAll: noDocumentAll,
              pureGetters: pureGetters
            });
          }
        }
      }
    };
  });

  function isNameOrLength(key) {
    if (isIdentifier$f(key)) {
      return key.name === "name" || key.name === "length";
    }
    if (isStringLiteral$5(key)) {
      return key.value === "name" || key.value === "length";
    }
    return false;
  }
  function isStaticFieldWithValue(node) {
    return (isClassProperty(node) || isClassPrivateProperty(node)) && node["static"] && !!node.value;
  }
  var hasReferenceVisitor = {
    ReferencedIdentifier: function ReferencedIdentifier(path, state) {
      if (path.node.name === state.name) {
        state.ref();
        path.stop();
      }
    },
    Scope: function Scope(path, _ref) {
      var name = _ref.name;
      if (path.scope.hasOwnBinding(name)) {
        path.skip();
      }
    }
  };
  function isReferenceOrThis(node, name) {
    return isThisExpression$2(node) || name && isIdentifier$f(node, {
      name: name
    });
  }
  var hasReferenceOrThisVisitor = {
    "ThisExpression|ReferencedIdentifier": function ThisExpressionReferencedIdentifier(path, state) {
      if (isReferenceOrThis(path.node, state.name)) {
        state.ref();
        path.stop();
      }
    },
    FunctionParent: function FunctionParent(path, state) {
      if (path.isArrowFunctionExpression()) return;
      if (state.name && !path.scope.hasOwnBinding(state.name)) {
        path.traverse(hasReferenceVisitor, state);
      }
      path.skip();
      if (path.isMethod()) {
        {
          path.requeueComputedKeyAndDecorators();
        }
      }
    }
  };
  function getPotentiallyBuggyFieldsIndexes(path) {
    var _path$node$id;
    var buggyPublicStaticFieldsIndexes = [];
    var classReferenced = false;
    var className = (_path$node$id = path.node.id) == null ? void 0 : _path$node$id.name;
    var hasReferenceState = {
      name: className,
      ref: function ref() {
        return classReferenced = true;
      }
    };
    if (className) {
      for (var _iterator = _createForOfIteratorHelperLoose(path.get("body.body")), _step; !(_step = _iterator()).done;) {
        var el = _step.value;
        if (el.node.computed) {
          el.get("key").traverse(hasReferenceVisitor, hasReferenceState);
          if (classReferenced) break;
        }
      }
    }
    var nextPotentiallyBuggy = false;
    var body = path.node.body.body;
    for (var i = 0; i < body.length; i++) {
      var node = body[i];
      if (!nextPotentiallyBuggy) {
        if (isStaticBlock(node)) {
          classReferenced = true;
          nextPotentiallyBuggy = true;
        } else if (isStaticFieldWithValue(node)) {
          if (!classReferenced) {
            if (isReferenceOrThis(node.value, className)) {
              classReferenced = true;
            } else {
              path.get("body.body." + i + ".value").traverse(hasReferenceOrThisVisitor, hasReferenceState);
            }
          }
          if (classReferenced) {
            nextPotentiallyBuggy = !path.scope.isPure(node.value);
          }
        }
      }
      if (isClassProperty(node, {
        "static": true
      }) && (nextPotentiallyBuggy || node.computed || isNameOrLength(node.key))) {
        buggyPublicStaticFieldsIndexes.push(i);
      }
    }
    return buggyPublicStaticFieldsIndexes;
  }
  function getNameOrLengthStaticFieldsIndexes(path) {
    var indexes = [];
    var body = path.node.body.body;
    for (var i = 0; i < body.length; i++) {
      var node = body[i];
      if (isClassProperty(node, {
        "static": true,
        computed: false
      }) && isNameOrLength(node.key)) {
        indexes.push(i);
      }
    }
    return indexes;
  }
  function toRanges(nums) {
    var ranges = [];
    if (nums.length === 0) return ranges;
    var start = nums[0];
    var end = start + 1;
    for (var i = 1; i < nums.length; i++) {
      if (nums[i] <= nums[i - 1]) {
        throw new Error("Internal Babel error: nums must be in ascending order");
      }
      if (nums[i] === end) {
        end++;
      } else {
        ranges.push([start, end]);
        start = nums[i];
        end = start + 1;
      }
    }
    ranges.push([start, end]);
    return ranges;
  }

  function buildFieldsReplacement(fields, scope, file) {
    return staticBlock(fields.map(function (field) {
      var key = field.computed || !isIdentifier$f(field.key) ? field.key : stringLiteral$6(field.key.name);
      return expressionStatement$7(callExpression$c(file.addHelper("defineProperty"), [thisExpression$4(), key, field.value || scope.buildUndefinedNode()]));
    }));
  }
  var bugfixV8StaticClassFieldsRedefineReadonly = declare(function (api) {
    api.assertVersion("*");
    var setPublicClassFields = api.assumption("setPublicClassFields");
    return {
      name: "bugfix-v8-static-class-fields-redefine-readonly",
      visitor: {
        Class: function Class(path) {
          var ranges = toRanges(setPublicClassFields ? getNameOrLengthStaticFieldsIndexes(path) : getPotentiallyBuggyFieldsIndexes(path));
          for (var i = ranges.length - 1; i >= 0; i--) {
            var _ranges$i = _slicedToArray(ranges[i], 2),
              start = _ranges$i[0],
              end = _ranges$i[1];
            var startPath = path.get("body.body")[start];
            startPath.replaceWith(buildFieldsReplacement(path.node.body.body.slice(start, end), path.scope, this.file));
            for (var j = end - 1; j > start; j--) {
              path.get("body.body")[j].remove();
            }
          }
        }
      }
    };
  });

  var availablePlugins$1 = {
    "bugfix/transform-async-arrows-in-class": function bugfix_transformAsyncArrowsInClass() {
      return transformAsyncArrowsInClassExports;
    },
    "bugfix/transform-edge-default-parameters": function bugfix_transformEdgeDefaultParameters() {
      return transformEdgeDefaultParametersExports;
    },
    "bugfix/transform-edge-function-name": function bugfix_transformEdgeFunctionName() {
      return transformEdgeFunctionNameExports;
    },
    "bugfix/transform-firefox-class-in-computed-class-key": function bugfix_transformFirefoxClassInComputedClassKey() {
      return bugfixFirefoxClassInComputedKey;
    },
    "bugfix/transform-safari-block-shadowing": function bugfix_transformSafariBlockShadowing() {
      return transformSafariBlockShadowingExports;
    },
    "bugfix/transform-safari-class-field-initializer-scope": function bugfix_transformSafariClassFieldInitializerScope() {
      return bugfixSafariClassFieldInitializerScope;
    },
    "bugfix/transform-safari-for-shadowing": function bugfix_transformSafariForShadowing() {
      return transformSafariForShadowingExports;
    },
    "bugfix/transform-safari-id-destructuring-collision-in-function-expression": function bugfix_transformSafariIdDestructuringCollisionInFunctionExpression() {
      return bugfixSafariIdDestructuringCollisionInFunctionExpression;
    },
    "bugfix/transform-tagged-template-caching": function bugfix_transformTaggedTemplateCaching() {
      return transformTaggedTemplateCachingExports;
    },
    "bugfix/transform-v8-spread-parameters-in-optional-chaining": function bugfix_transformV8SpreadParametersInOptionalChaining() {
      return bugfixV8SpreadParametersInOptionalChaining;
    },
    "bugfix/transform-v8-static-class-fields-redefine-readonly": function bugfix_transformV8StaticClassFieldsRedefineReadonly() {
      return bugfixV8StaticClassFieldsRedefineReadonly;
    },
    "syntax-import-assertions": function syntaxImportAssertions() {
      return _syntaxImportAssertions;
    },
    "syntax-import-attributes": function syntaxImportAttributes() {
      return _syntaxImportAttributes;
    },
    "transform-arrow-functions": function transformArrowFunctions() {
      return _transformArrowFunctions;
    },
    "transform-async-generator-functions": function transformAsyncGeneratorFunctions() {
      return _transformAsyncGeneratorFunctions;
    },
    "transform-async-to-generator": function transformAsyncToGenerator() {
      return _transformAsyncToGenerator;
    },
    "transform-block-scoped-functions": function transformBlockScopedFunctions() {
      return _transformBlockScopedFunctions;
    },
    "transform-block-scoping": function transformBlockScoping() {
      return _transformBlockScoping;
    },
    "transform-class-properties": function transformClassProperties() {
      return _transformClassProperties;
    },
    "transform-class-static-block": function transformClassStaticBlock() {
      return _transformClassStaticBlock;
    },
    "transform-classes": function transformClasses() {
      return _transformClasses;
    },
    "transform-computed-properties": function transformComputedProperties() {
      return _transformComputedProperties;
    },
    "transform-destructuring": function transformDestructuring() {
      return _transformDestructuring;
    },
    "transform-dotall-regex": function transformDotallRegex() {
      return _transformDotallRegex;
    },
    "transform-duplicate-keys": function transformDuplicateKeys() {
      return _transformDuplicateKeys;
    },
    "transform-duplicate-named-capturing-groups-regex": function transformDuplicateNamedCapturingGroupsRegex() {
      return _transformDuplicateNamedCapturingGroupsRegex;
    },
    "transform-dynamic-import": function transformDynamicImport() {
      return _transformDynamicImport;
    },
    "transform-exponentiation-operator": function transformExponentiationOperator() {
      return transformExponentialOperator;
    },
    "transform-export-namespace-from": function transformExportNamespaceFrom() {
      return _transformExportNamespaceFrom;
    },
    "transform-for-of": function transformForOf() {
      return _transformForOf;
    },
    "transform-function-name": function transformFunctionName() {
      return _transformFunctionName;
    },
    "transform-json-strings": function transformJsonStrings() {
      return _transformJsonStrings;
    },
    "transform-literals": function transformLiterals() {
      return _transformLiterals;
    },
    "transform-logical-assignment-operators": function transformLogicalAssignmentOperators() {
      return _transformLogicalAssignmentOperators;
    },
    "transform-member-expression-literals": function transformMemberExpressionLiterals() {
      return _transformMemberExpressionLiterals;
    },
    "transform-modules-amd": function transformModulesAmd() {
      return _transformModulesAmd;
    },
    "transform-modules-commonjs": function transformModulesCommonjs() {
      return transformModulesCommonJS;
    },
    "transform-modules-systemjs": function transformModulesSystemjs() {
      return _transformModulesSystemjs;
    },
    "transform-modules-umd": function transformModulesUmd() {
      return _transformModulesUmd;
    },
    "transform-named-capturing-groups-regex": function transformNamedCapturingGroupsRegex() {
      return _transformNamedCapturingGroupsRegex;
    },
    "transform-new-target": function transformNewTarget() {
      return _transformNewTarget;
    },
    "transform-nullish-coalescing-operator": function transformNullishCoalescingOperator() {
      return _transformNullishCoalescingOperator;
    },
    "transform-numeric-separator": function transformNumericSeparator() {
      return _transformNumericSeparator;
    },
    "transform-object-rest-spread": function transformObjectRestSpread() {
      return _transformObjectRestSpread;
    },
    "transform-object-super": function transformObjectSuper() {
      return _transformObjectSuper;
    },
    "transform-optional-catch-binding": function transformOptionalCatchBinding() {
      return _transformOptionalCatchBinding;
    },
    "transform-optional-chaining": function transformOptionalChaining() {
      return _transformOptionalChaining;
    },
    "transform-parameters": function transformParameters() {
      return _transformParameters;
    },
    "transform-private-methods": function transformPrivateMethods() {
      return _transformPrivateMethods;
    },
    "transform-private-property-in-object": function transformPrivatePropertyInObject() {
      return _transformPrivatePropertyInObject;
    },
    "transform-property-literals": function transformPropertyLiterals() {
      return _transformPropertyLiterals;
    },
    "transform-regenerator": function transformRegenerator() {
      return _transformRegenerator;
    },
    "transform-reserved-words": function transformReservedWords() {
      return _transformReservedWords;
    },
    "transform-shorthand-properties": function transformShorthandProperties() {
      return _transformShorthandProperties;
    },
    "transform-spread": function transformSpread() {
      return _transformSpread;
    },
    "transform-sticky-regex": function transformStickyRegex() {
      return _transformStickyRegex;
    },
    "transform-template-literals": function transformTemplateLiterals() {
      return _transformTemplateLiterals;
    },
    "transform-typeof-symbol": function transformTypeofSymbol() {
      return _transformTypeofSymbol;
    },
    "transform-unicode-escapes": function transformUnicodeEscapes() {
      return _transformUnicodeEscapes;
    },
    "transform-unicode-property-regex": function transformUnicodePropertyRegex() {
      return _transformUnicodePropertyRegex;
    },
    "transform-unicode-regex": function transformUnicodeRegex() {
      return _transformUnicodeRegex;
    },
    "transform-unicode-sets-regex": function transformUnicodeSetsRegex() {
      return _transformUnicodeSetsRegex;
    }
  };
  var minVersions = {};
  var legacyBabel7SyntaxPlugins;
  {
    Object.assign(minVersions, {
      "bugfix/transform-safari-id-destructuring-collision-in-function-expression": "7.16.0",
      "bugfix/transform-v8-static-class-fields-redefine-readonly": "7.12.0",
      "syntax-import-attributes": "7.22.0",
      "transform-class-static-block": "7.12.0",
      "transform-duplicate-named-capturing-groups-regex": "7.19.0",
      "transform-private-property-in-object": "7.10.0"
    });
    var e = function e() {
      return function () {
        return function () {
          return {};
        };
      };
    };
    var legacyBabel7SyntaxPluginsLoaders = {
      "syntax-async-generators": e(),
      "syntax-class-properties": e(),
      "syntax-class-static-block": e(),
      "syntax-dynamic-import": e(),
      "syntax-export-namespace-from": e(),
      "syntax-import-meta": e(),
      "syntax-json-strings": e(),
      "syntax-logical-assignment-operators": e(),
      "syntax-nullish-coalescing-operator": e(),
      "syntax-numeric-separator": e(),
      "syntax-object-rest-spread": e(),
      "syntax-optional-catch-binding": e(),
      "syntax-optional-chaining": e(),
      "syntax-private-property-in-object": e(),
      "syntax-top-level-await": e()
    };
    {
      legacyBabel7SyntaxPluginsLoaders["syntax-unicode-sets-regex"] = e();
    }
    Object.assign(availablePlugins$1, legacyBabel7SyntaxPluginsLoaders);
    legacyBabel7SyntaxPlugins = new Set(Object.keys(legacyBabel7SyntaxPluginsLoaders));
  }

  function addProposalSyntaxPlugins(items, proposalSyntaxPlugins) {
    proposalSyntaxPlugins.forEach(function (plugin) {
      items.add(plugin);
    });
  }
  function removeUnnecessaryItems(items, overlapping) {
    items.forEach(function (item) {
      var _overlapping$item;
      (_overlapping$item = overlapping[item]) == null || _overlapping$item.forEach(function (name) {
        return items["delete"](name);
      });
    });
  }
  function removeUnsupportedItems(items, babelVersion) {
    items.forEach(function (item) {
      if (hasOwnProperty.call(minVersions, item) && semver$1.lt(babelVersion, minVersions[item])) {
        items["delete"](item);
      } else if (babelVersion[0] === "8" && legacyBabel7SyntaxPlugins.has(item)) {
        items["delete"](item);
      }
    });
  }

  var moduleTransformations = {
    amd: "transform-modules-amd",
    commonjs: "transform-modules-commonjs",
    cjs: "transform-modules-commonjs",
    systemjs: "transform-modules-systemjs",
    umd: "transform-modules-umd"
  };

  var require$$0$1 = {
  	"bugfix/transform-async-arrows-in-class": {
  	chrome: "55",
  	opera: "42",
  	edge: "15",
  	firefox: "52",
  	safari: "11",
  	node: "7.6",
  	deno: "1",
  	ios: "11",
  	samsung: "6",
  	opera_mobile: "42",
  	electron: "1.6"
  },
  	"bugfix/transform-edge-default-parameters": {
  	chrome: "49",
  	opera: "36",
  	edge: "18",
  	firefox: "52",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"bugfix/transform-edge-function-name": {
  	chrome: "51",
  	opera: "38",
  	edge: "79",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"bugfix/transform-safari-block-shadowing": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "44",
  	safari: "11",
  	node: "6",
  	deno: "1",
  	ie: "11",
  	ios: "11",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"bugfix/transform-safari-for-shadowing": {
  	chrome: "49",
  	opera: "36",
  	edge: "12",
  	firefox: "4",
  	safari: "11",
  	node: "6",
  	deno: "1",
  	ie: "11",
  	ios: "11",
  	samsung: "5",
  	rhino: "1.7.13",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
  	chrome: "49",
  	opera: "36",
  	edge: "14",
  	firefox: "2",
  	safari: "16.3",
  	node: "6",
  	deno: "1",
  	ios: "16.3",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"bugfix/transform-tagged-template-caching": {
  	chrome: "41",
  	opera: "28",
  	edge: "12",
  	firefox: "34",
  	safari: "13",
  	node: "4",
  	deno: "1",
  	ios: "13",
  	samsung: "3.4",
  	rhino: "1.7.14",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"bugfix/transform-v8-spread-parameters-in-optional-chaining": {
  	chrome: "91",
  	opera: "77",
  	edge: "91",
  	firefox: "74",
  	safari: "13.1",
  	node: "16.9",
  	deno: "1.9",
  	ios: "13.4",
  	samsung: "16",
  	opera_mobile: "64",
  	electron: "13.0"
  },
  	"bugfix/transform-firefox-class-in-computed-class-key": {
  	chrome: "74",
  	opera: "62",
  	edge: "79",
  	safari: "16",
  	node: "12",
  	deno: "1",
  	ios: "16",
  	samsung: "11",
  	opera_mobile: "53",
  	electron: "6.0"
  },
  	"transform-optional-chaining": {
  	chrome: "80",
  	opera: "67",
  	edge: "80",
  	firefox: "74",
  	safari: "13.1",
  	node: "14",
  	deno: "1",
  	ios: "13.4",
  	samsung: "13",
  	opera_mobile: "57",
  	electron: "8.0"
  },
  	"proposal-optional-chaining": {
  	chrome: "80",
  	opera: "67",
  	edge: "80",
  	firefox: "74",
  	safari: "13.1",
  	node: "14",
  	deno: "1",
  	ios: "13.4",
  	samsung: "13",
  	opera_mobile: "57",
  	electron: "8.0"
  },
  	"transform-parameters": {
  	chrome: "49",
  	opera: "36",
  	edge: "15",
  	firefox: "53",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "36",
  	electron: "0.37"
  },
  	"transform-async-to-generator": {
  	chrome: "55",
  	opera: "42",
  	edge: "15",
  	firefox: "52",
  	safari: "10.1",
  	node: "7.6",
  	deno: "1",
  	ios: "10.3",
  	samsung: "6",
  	opera_mobile: "42",
  	electron: "1.6"
  },
  	"transform-template-literals": {
  	chrome: "41",
  	opera: "28",
  	edge: "13",
  	firefox: "34",
  	safari: "9",
  	node: "4",
  	deno: "1",
  	ios: "9",
  	samsung: "3.4",
  	opera_mobile: "28",
  	electron: "0.21"
  },
  	"transform-function-name": {
  	chrome: "51",
  	opera: "38",
  	edge: "14",
  	firefox: "53",
  	safari: "10",
  	node: "6.5",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "41",
  	electron: "1.2"
  },
  	"transform-block-scoping": {
  	chrome: "50",
  	opera: "37",
  	edge: "14",
  	firefox: "53",
  	safari: "10",
  	node: "6",
  	deno: "1",
  	ios: "10",
  	samsung: "5",
  	opera_mobile: "37",
  	electron: "1.1"
  }
  };

  var pluginBugfixes = require$$0$1;

  var require$$0 = {
  	"transform-async-to-generator": [
  	"bugfix/transform-async-arrows-in-class"
  ],
  	"transform-parameters": [
  	"bugfix/transform-edge-default-parameters",
  	"bugfix/transform-safari-id-destructuring-collision-in-function-expression"
  ],
  	"transform-function-name": [
  	"bugfix/transform-edge-function-name"
  ],
  	"transform-block-scoping": [
  	"bugfix/transform-safari-block-shadowing",
  	"bugfix/transform-safari-for-shadowing"
  ],
  	"transform-template-literals": [
  	"bugfix/transform-tagged-template-caching"
  ],
  	"transform-optional-chaining": [
  	"bugfix/transform-v8-spread-parameters-in-optional-chaining"
  ],
  	"proposal-optional-chaining": [
  	"bugfix/transform-v8-spread-parameters-in-optional-chaining"
  ],
  	"transform-class-properties": [
  	"bugfix/transform-v8-static-class-fields-redefine-readonly",
  	"bugfix/transform-firefox-class-in-computed-class-key",
  	"bugfix/transform-safari-class-field-initializer-scope"
  ],
  	"proposal-class-properties": [
  	"bugfix/transform-v8-static-class-fields-redefine-readonly",
  	"bugfix/transform-firefox-class-in-computed-class-key",
  	"bugfix/transform-safari-class-field-initializer-scope"
  ]
  };

  var overlappingPlugins$1 = require$$0;

  var keys = Object.keys;
  var plugins = filterAvailable(plugins$1);
  var pluginsBugfixes = filterAvailable(pluginBugfixes);
  var overlappingPlugins = filterAvailable(overlappingPlugins$1);
  overlappingPlugins["syntax-import-attributes"] = ["syntax-import-assertions"];
  function filterAvailable(data) {
    var result = {};
    for (var _iterator = _createForOfIteratorHelperLoose(keys(data)), _step; !(_step = _iterator()).done;) {
      var plugin = _step.value;
      if (hasOwnProperty.call(availablePlugins$1, plugin)) {
        result[plugin] = data[plugin];
      }
    }
    return result;
  }

  var TopLevelOptions = {
    bugfixes: "bugfixes",
    configPath: "configPath",
    corejs: "corejs",
    debug: "debug",
    exclude: "exclude",
    forceAllTransforms: "forceAllTransforms",
    ignoreBrowserslistConfig: "ignoreBrowserslistConfig",
    include: "include",
    modules: "modules",
    shippedProposals: "shippedProposals",
    targets: "targets",
    useBuiltIns: "useBuiltIns",
    browserslistEnv: "browserslistEnv"
  };
  {
    Object.assign(TopLevelOptions, {
      loose: "loose",
      spec: "spec"
    });
  }
  var ModulesOption = {
    "false": false,
    auto: "auto",
    amd: "amd",
    commonjs: "commonjs",
    cjs: "cjs",
    systemjs: "systemjs",
    umd: "umd"
  };
  var UseBuiltInsOption = {
    "false": false,
    entry: "entry",
    usage: "usage"
  };

  var babel7Plugins = {};

  var lib$2 = {};

  var builtInDefinitions = {};

  var hasRequiredBuiltInDefinitions;
  function requireBuiltInDefinitions() {
    if (hasRequiredBuiltInDefinitions) return builtInDefinitions;
    hasRequiredBuiltInDefinitions = 1;
    builtInDefinitions.__esModule = true;
    builtInDefinitions.StaticProperties = builtInDefinitions.InstanceProperties = builtInDefinitions.CommonIterators = builtInDefinitions.BuiltIns = void 0;
    var _corejs2BuiltIns = _interopRequireDefault(requireCorejs2BuiltIns());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var define = function define(name, pure, global, meta) {
      if (global === void 0) {
        global = [];
      }
      return {
        name: name,
        pure: pure,
        global: global,
        meta: meta
      };
    };
    var pureAndGlobal = function pureAndGlobal(pure, global, minRuntimeVersion) {
      if (minRuntimeVersion === void 0) {
        minRuntimeVersion = null;
      }
      return define(global[0], pure, global, {
        minRuntimeVersion: minRuntimeVersion
      });
    };
    var globalOnly = function globalOnly(global) {
      return define(global[0], null, global);
    };
    var pureOnly = function pureOnly(pure, name) {
      return define(name, pure, []);
    };
    var ArrayNatureIterators = ["es6.object.to-string", "es6.array.iterator", "web.dom.iterable"];
    var CommonIterators = ["es6.string.iterator"].concat(ArrayNatureIterators);
    builtInDefinitions.CommonIterators = CommonIterators;
    var PromiseDependencies = ["es6.object.to-string", "es6.promise"];
    var BuiltIns = {
      DataView: globalOnly(["es6.typed.data-view"]),
      Float32Array: globalOnly(["es6.typed.float32-array"]),
      Float64Array: globalOnly(["es6.typed.float64-array"]),
      Int8Array: globalOnly(["es6.typed.int8-array"]),
      Int16Array: globalOnly(["es6.typed.int16-array"]),
      Int32Array: globalOnly(["es6.typed.int32-array"]),
      Map: pureAndGlobal("map", ["es6.map"].concat(_toConsumableArray(CommonIterators))),
      Number: globalOnly(["es6.number.constructor"]),
      Promise: pureAndGlobal("promise", PromiseDependencies),
      RegExp: globalOnly(["es6.regexp.constructor"]),
      Set: pureAndGlobal("set", ["es6.set"].concat(_toConsumableArray(CommonIterators))),
      Symbol: pureAndGlobal("symbol/index", ["es6.symbol"]),
      Uint8Array: globalOnly(["es6.typed.uint8-array"]),
      Uint8ClampedArray: globalOnly(["es6.typed.uint8-clamped-array"]),
      Uint16Array: globalOnly(["es6.typed.uint16-array"]),
      Uint32Array: globalOnly(["es6.typed.uint32-array"]),
      WeakMap: pureAndGlobal("weak-map", ["es6.weak-map"].concat(_toConsumableArray(CommonIterators))),
      WeakSet: pureAndGlobal("weak-set", ["es6.weak-set"].concat(_toConsumableArray(CommonIterators))),
      setImmediate: pureOnly("set-immediate", "web.immediate"),
      clearImmediate: pureOnly("clear-immediate", "web.immediate"),
      parseFloat: pureOnly("parse-float", "es6.parse-float"),
      parseInt: pureOnly("parse-int", "es6.parse-int")
    };
    builtInDefinitions.BuiltIns = BuiltIns;
    var InstanceProperties = {
      __defineGetter__: globalOnly(["es7.object.define-getter"]),
      __defineSetter__: globalOnly(["es7.object.define-setter"]),
      __lookupGetter__: globalOnly(["es7.object.lookup-getter"]),
      __lookupSetter__: globalOnly(["es7.object.lookup-setter"]),
      anchor: globalOnly(["es6.string.anchor"]),
      big: globalOnly(["es6.string.big"]),
      bind: globalOnly(["es6.function.bind"]),
      blink: globalOnly(["es6.string.blink"]),
      bold: globalOnly(["es6.string.bold"]),
      codePointAt: globalOnly(["es6.string.code-point-at"]),
      copyWithin: globalOnly(["es6.array.copy-within"]),
      endsWith: globalOnly(["es6.string.ends-with"]),
      entries: globalOnly(ArrayNatureIterators),
      every: globalOnly(["es6.array.every"]),
      fill: globalOnly(["es6.array.fill"]),
      filter: globalOnly(["es6.array.filter"]),
      "finally": globalOnly(["es7.promise.finally"].concat(PromiseDependencies)),
      find: globalOnly(["es6.array.find"]),
      findIndex: globalOnly(["es6.array.find-index"]),
      fixed: globalOnly(["es6.string.fixed"]),
      flags: globalOnly(["es6.regexp.flags"]),
      flatMap: globalOnly(["es7.array.flat-map"]),
      fontcolor: globalOnly(["es6.string.fontcolor"]),
      fontsize: globalOnly(["es6.string.fontsize"]),
      forEach: globalOnly(["es6.array.for-each"]),
      includes: globalOnly(["es6.string.includes", "es7.array.includes"]),
      indexOf: globalOnly(["es6.array.index-of"]),
      italics: globalOnly(["es6.string.italics"]),
      keys: globalOnly(ArrayNatureIterators),
      lastIndexOf: globalOnly(["es6.array.last-index-of"]),
      link: globalOnly(["es6.string.link"]),
      map: globalOnly(["es6.array.map"]),
      match: globalOnly(["es6.regexp.match"]),
      name: globalOnly(["es6.function.name"]),
      padStart: globalOnly(["es7.string.pad-start"]),
      padEnd: globalOnly(["es7.string.pad-end"]),
      reduce: globalOnly(["es6.array.reduce"]),
      reduceRight: globalOnly(["es6.array.reduce-right"]),
      repeat: globalOnly(["es6.string.repeat"]),
      replace: globalOnly(["es6.regexp.replace"]),
      search: globalOnly(["es6.regexp.search"]),
      small: globalOnly(["es6.string.small"]),
      some: globalOnly(["es6.array.some"]),
      sort: globalOnly(["es6.array.sort"]),
      split: globalOnly(["es6.regexp.split"]),
      startsWith: globalOnly(["es6.string.starts-with"]),
      strike: globalOnly(["es6.string.strike"]),
      sub: globalOnly(["es6.string.sub"]),
      sup: globalOnly(["es6.string.sup"]),
      toISOString: globalOnly(["es6.date.to-iso-string"]),
      toJSON: globalOnly(["es6.date.to-json"]),
      toString: globalOnly(["es6.object.to-string", "es6.date.to-string", "es6.regexp.to-string"]),
      trim: globalOnly(["es6.string.trim"]),
      trimEnd: globalOnly(["es7.string.trim-right"]),
      trimLeft: globalOnly(["es7.string.trim-left"]),
      trimRight: globalOnly(["es7.string.trim-right"]),
      trimStart: globalOnly(["es7.string.trim-left"]),
      values: globalOnly(ArrayNatureIterators)
    };
    builtInDefinitions.InstanceProperties = InstanceProperties;
    if ("es6.array.slice" in _corejs2BuiltIns["default"]) {
      InstanceProperties.slice = globalOnly(["es6.array.slice"]);
    }
    var StaticProperties = {
      Array: {
        from: pureAndGlobal("array/from", ["es6.symbol", "es6.array.from"].concat(_toConsumableArray(CommonIterators))),
        isArray: pureAndGlobal("array/is-array", ["es6.array.is-array"]),
        of: pureAndGlobal("array/of", ["es6.array.of"])
      },
      Date: {
        now: pureAndGlobal("date/now", ["es6.date.now"])
      },
      JSON: {
        stringify: pureOnly("json/stringify", "es6.symbol")
      },
      Math: {
        acosh: pureAndGlobal("math/acosh", ["es6.math.acosh"], "7.0.1"),
        asinh: pureAndGlobal("math/asinh", ["es6.math.asinh"], "7.0.1"),
        atanh: pureAndGlobal("math/atanh", ["es6.math.atanh"], "7.0.1"),
        cbrt: pureAndGlobal("math/cbrt", ["es6.math.cbrt"], "7.0.1"),
        clz32: pureAndGlobal("math/clz32", ["es6.math.clz32"], "7.0.1"),
        cosh: pureAndGlobal("math/cosh", ["es6.math.cosh"], "7.0.1"),
        expm1: pureAndGlobal("math/expm1", ["es6.math.expm1"], "7.0.1"),
        fround: pureAndGlobal("math/fround", ["es6.math.fround"], "7.0.1"),
        hypot: pureAndGlobal("math/hypot", ["es6.math.hypot"], "7.0.1"),
        imul: pureAndGlobal("math/imul", ["es6.math.imul"], "7.0.1"),
        log1p: pureAndGlobal("math/log1p", ["es6.math.log1p"], "7.0.1"),
        log10: pureAndGlobal("math/log10", ["es6.math.log10"], "7.0.1"),
        log2: pureAndGlobal("math/log2", ["es6.math.log2"], "7.0.1"),
        sign: pureAndGlobal("math/sign", ["es6.math.sign"], "7.0.1"),
        sinh: pureAndGlobal("math/sinh", ["es6.math.sinh"], "7.0.1"),
        tanh: pureAndGlobal("math/tanh", ["es6.math.tanh"], "7.0.1"),
        trunc: pureAndGlobal("math/trunc", ["es6.math.trunc"], "7.0.1")
      },
      Number: {
        EPSILON: pureAndGlobal("number/epsilon", ["es6.number.epsilon"]),
        MIN_SAFE_INTEGER: pureAndGlobal("number/min-safe-integer", ["es6.number.min-safe-integer"]),
        MAX_SAFE_INTEGER: pureAndGlobal("number/max-safe-integer", ["es6.number.max-safe-integer"]),
        isFinite: pureAndGlobal("number/is-finite", ["es6.number.is-finite"]),
        isInteger: pureAndGlobal("number/is-integer", ["es6.number.is-integer"]),
        isSafeInteger: pureAndGlobal("number/is-safe-integer", ["es6.number.is-safe-integer"]),
        isNaN: pureAndGlobal("number/is-nan", ["es6.number.is-nan"]),
        parseFloat: pureAndGlobal("number/parse-float", ["es6.number.parse-float"]),
        parseInt: pureAndGlobal("number/parse-int", ["es6.number.parse-int"])
      },
      Object: {
        assign: pureAndGlobal("object/assign", ["es6.object.assign"]),
        create: pureAndGlobal("object/create", ["es6.object.create"]),
        defineProperties: pureAndGlobal("object/define-properties", ["es6.object.define-properties"]),
        defineProperty: pureAndGlobal("object/define-property", ["es6.object.define-property"]),
        entries: pureAndGlobal("object/entries", ["es7.object.entries"]),
        freeze: pureAndGlobal("object/freeze", ["es6.object.freeze"]),
        getOwnPropertyDescriptor: pureAndGlobal("object/get-own-property-descriptor", ["es6.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: pureAndGlobal("object/get-own-property-descriptors", ["es7.object.get-own-property-descriptors"]),
        getOwnPropertyNames: pureAndGlobal("object/get-own-property-names", ["es6.object.get-own-property-names"]),
        getOwnPropertySymbols: pureAndGlobal("object/get-own-property-symbols", ["es6.symbol"]),
        getPrototypeOf: pureAndGlobal("object/get-prototype-of", ["es6.object.get-prototype-of"]),
        is: pureAndGlobal("object/is", ["es6.object.is"]),
        isExtensible: pureAndGlobal("object/is-extensible", ["es6.object.is-extensible"]),
        isFrozen: pureAndGlobal("object/is-frozen", ["es6.object.is-frozen"]),
        isSealed: pureAndGlobal("object/is-sealed", ["es6.object.is-sealed"]),
        keys: pureAndGlobal("object/keys", ["es6.object.keys"]),
        preventExtensions: pureAndGlobal("object/prevent-extensions", ["es6.object.prevent-extensions"]),
        seal: pureAndGlobal("object/seal", ["es6.object.seal"]),
        setPrototypeOf: pureAndGlobal("object/set-prototype-of", ["es6.object.set-prototype-of"]),
        values: pureAndGlobal("object/values", ["es7.object.values"])
      },
      Promise: {
        all: globalOnly(CommonIterators),
        race: globalOnly(CommonIterators)
      },
      Reflect: {
        apply: pureAndGlobal("reflect/apply", ["es6.reflect.apply"]),
        construct: pureAndGlobal("reflect/construct", ["es6.reflect.construct"]),
        defineProperty: pureAndGlobal("reflect/define-property", ["es6.reflect.define-property"]),
        deleteProperty: pureAndGlobal("reflect/delete-property", ["es6.reflect.delete-property"]),
        get: pureAndGlobal("reflect/get", ["es6.reflect.get"]),
        getOwnPropertyDescriptor: pureAndGlobal("reflect/get-own-property-descriptor", ["es6.reflect.get-own-property-descriptor"]),
        getPrototypeOf: pureAndGlobal("reflect/get-prototype-of", ["es6.reflect.get-prototype-of"]),
        has: pureAndGlobal("reflect/has", ["es6.reflect.has"]),
        isExtensible: pureAndGlobal("reflect/is-extensible", ["es6.reflect.is-extensible"]),
        ownKeys: pureAndGlobal("reflect/own-keys", ["es6.reflect.own-keys"]),
        preventExtensions: pureAndGlobal("reflect/prevent-extensions", ["es6.reflect.prevent-extensions"]),
        set: pureAndGlobal("reflect/set", ["es6.reflect.set"]),
        setPrototypeOf: pureAndGlobal("reflect/set-prototype-of", ["es6.reflect.set-prototype-of"])
      },
      String: {
        at: pureOnly("string/at", "es7.string.at"),
        fromCodePoint: pureAndGlobal("string/from-code-point", ["es6.string.from-code-point"]),
        raw: pureAndGlobal("string/raw", ["es6.string.raw"])
      },
      Symbol: {
        asyncIterator: globalOnly(["es6.symbol", "es7.symbol.async-iterator"]),
        "for": pureOnly("symbol/for", "es6.symbol"),
        hasInstance: pureOnly("symbol/has-instance", "es6.symbol"),
        isConcatSpreadable: pureOnly("symbol/is-concat-spreadable", "es6.symbol"),
        iterator: define("es6.symbol", "symbol/iterator", CommonIterators),
        keyFor: pureOnly("symbol/key-for", "es6.symbol"),
        match: pureAndGlobal("symbol/match", ["es6.regexp.match"]),
        replace: pureOnly("symbol/replace", "es6.symbol"),
        search: pureOnly("symbol/search", "es6.symbol"),
        species: pureOnly("symbol/species", "es6.symbol"),
        split: pureOnly("symbol/split", "es6.symbol"),
        toPrimitive: pureOnly("symbol/to-primitive", "es6.symbol"),
        toStringTag: pureOnly("symbol/to-string-tag", "es6.symbol"),
        unscopables: pureOnly("symbol/unscopables", "es6.symbol")
      }
    };
    builtInDefinitions.StaticProperties = StaticProperties;
    return builtInDefinitions;
  }

  var addPlatformSpecificPolyfills = {};

  var hasRequiredAddPlatformSpecificPolyfills;
  function requireAddPlatformSpecificPolyfills() {
    if (hasRequiredAddPlatformSpecificPolyfills) return addPlatformSpecificPolyfills;
    hasRequiredAddPlatformSpecificPolyfills = 1;
    addPlatformSpecificPolyfills.__esModule = true;
    addPlatformSpecificPolyfills["default"] = _default;
    function _extends() {
      _extends = Object.assign ? Object.assign.bind() : function (target) {
        for (var i = 1; i < arguments.length; i++) {
          var source = arguments[i];
          for (var key in source) {
            if (Object.prototype.hasOwnProperty.call(source, key)) {
              target[key] = source[key];
            }
          }
        }
        return target;
      };
      return _extends.apply(this, arguments);
    }
    var webPolyfills = {
      "web.timers": {},
      "web.immediate": {},
      "web.dom.iterable": {}
    };
    var purePolyfills = {
      "es6.parse-float": {},
      "es6.parse-int": {},
      "es7.string.at": {}
    };
    function _default(targets, method, polyfills) {
      var targetNames = Object.keys(targets);
      var isAnyTarget = !targetNames.length;
      var isWebTarget = targetNames.some(function (name) {
        return name !== "node";
      });
      return _extends({}, polyfills, method === "usage-pure" ? purePolyfills : null, isAnyTarget || isWebTarget ? webPolyfills : null);
    }
    return addPlatformSpecificPolyfills;
  }

  var helpers = {};

  var semver = {exports: {}};

  var hasRequiredSemver;
  function requireSemver() {
    if (hasRequiredSemver) return semver.exports;
    hasRequiredSemver = 1;
    (function (module, exports) {
      exports = module.exports = SemVer;
      var debug;
      if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
        debug = function debug() {
          var args = Array.prototype.slice.call(arguments, 0);
          args.unshift('SEMVER');
          console.log.apply(console, args);
        };
      } else {
        debug = function debug() {};
      }
      exports.SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      var MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6;
      var re = exports.re = [];
      var safeRe = exports.safeRe = [];
      var src = exports.src = [];
      var t = exports.tokens = {};
      var R = 0;
      function tok(n) {
        t[n] = R++;
      }
      var LETTERDASHNUMBER = '[a-zA-Z0-9-]';
      var safeRegexReplacements = [['\\s', 1], ['\\d', MAX_LENGTH], [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH]];
      function makeSafeRe(value) {
        for (var i = 0; i < safeRegexReplacements.length; i++) {
          var token = safeRegexReplacements[i][0];
          var max = safeRegexReplacements[i][1];
          value = value.split(token + '*').join(token + '{0,' + max + '}').split(token + '+').join(token + '{1,' + max + '}');
        }
        return value;
      }
      tok('NUMERICIDENTIFIER');
      src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
      tok('NUMERICIDENTIFIERLOOSE');
      src[t.NUMERICIDENTIFIERLOOSE] = '\\d+';
      tok('NONNUMERICIDENTIFIER');
      src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-]' + LETTERDASHNUMBER + '*';
      tok('MAINVERSION');
      src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
      tok('MAINVERSIONLOOSE');
      src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
      tok('PRERELEASEIDENTIFIER');
      src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASEIDENTIFIERLOOSE');
      src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASE');
      src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
      tok('PRERELEASELOOSE');
      src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
      tok('BUILDIDENTIFIER');
      src[t.BUILDIDENTIFIER] = LETTERDASHNUMBER + '+';
      tok('BUILD');
      src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
      tok('FULL');
      tok('FULLPLAIN');
      src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
      src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
      tok('LOOSEPLAIN');
      src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
      tok('LOOSE');
      src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
      tok('GTLT');
      src[t.GTLT] = '((?:<|>)?=?)';
      tok('XRANGEIDENTIFIERLOOSE');
      src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
      tok('XRANGEIDENTIFIER');
      src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
      tok('XRANGEPLAIN');
      src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGEPLAINLOOSE');
      src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGE');
      src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
      tok('XRANGELOOSE');
      src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COERCE');
      src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
      tok('COERCERTL');
      re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
      safeRe[t.COERCERTL] = new RegExp(makeSafeRe(src[t.COERCE]), 'g');
      tok('LONETILDE');
      src[t.LONETILDE] = '(?:~>?)';
      tok('TILDETRIM');
      src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
      re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
      safeRe[t.TILDETRIM] = new RegExp(makeSafeRe(src[t.TILDETRIM]), 'g');
      var tildeTrimReplace = '$1~';
      tok('TILDE');
      src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
      tok('TILDELOOSE');
      src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('LONECARET');
      src[t.LONECARET] = '(?:\\^)';
      tok('CARETTRIM');
      src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
      re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
      safeRe[t.CARETTRIM] = new RegExp(makeSafeRe(src[t.CARETTRIM]), 'g');
      var caretTrimReplace = '$1^';
      tok('CARET');
      src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
      tok('CARETLOOSE');
      src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COMPARATORLOOSE');
      src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
      tok('COMPARATOR');
      src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
      tok('COMPARATORTRIM');
      src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
      re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
      safeRe[t.COMPARATORTRIM] = new RegExp(makeSafeRe(src[t.COMPARATORTRIM]), 'g');
      var comparatorTrimReplace = '$1$2$3';
      tok('HYPHENRANGE');
      src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
      tok('HYPHENRANGELOOSE');
      src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
      tok('STAR');
      src[t.STAR] = '(<|>)?=?\\s*\\*';
      for (var i = 0; i < R; i++) {
        debug(i, src[i]);
        if (!re[i]) {
          re[i] = new RegExp(src[i]);
          safeRe[i] = new RegExp(makeSafeRe(src[i]));
        }
      }
      exports.parse = parse;
      function parse(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      }
      exports.valid = valid;
      function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      }
      exports.clean = clean;
      function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      }
      exports.SemVer = SemVer;
      function SemVer(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          if (version.loose === options.loose) {
            return version;
          } else {
            version = version.version;
          }
        } else if (typeof version !== 'string') {
          throw new TypeError('Invalid Version: ' + version);
        }
        if (version.length > MAX_LENGTH) {
          throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
        }
        if (!(this instanceof SemVer)) {
          return new SemVer(version, options);
        }
        debug('SemVer', version, options);
        this.options = options;
        this.loose = !!options.loose;
        var m = version.trim().match(options.loose ? safeRe[t.LOOSE] : safeRe[t.FULL]);
        if (!m) {
          throw new TypeError('Invalid Version: ' + version);
        }
        this.raw = version;
        this.major = +m[1];
        this.minor = +m[2];
        this.patch = +m[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError('Invalid major version');
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError('Invalid minor version');
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError('Invalid patch version');
        }
        if (!m[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m[4].split('.').map(function (id) {
            if (/^[0-9]+$/.test(id)) {
              var num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m[5] ? m[5].split('.') : [];
        this.format();
      }
      SemVer.prototype.format = function () {
        this.version = this.major + '.' + this.minor + '.' + this.patch;
        if (this.prerelease.length) {
          this.version += '-' + this.prerelease.join('.');
        }
        return this.version;
      };
      SemVer.prototype.toString = function () {
        return this.version;
      };
      SemVer.prototype.compare = function (other) {
        debug('SemVer.compare', this.version, this.options, other);
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return this.compareMain(other) || this.comparePre(other);
      };
      SemVer.prototype.compareMain = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      };
      SemVer.prototype.comparePre = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        var i = 0;
        do {
          var a = this.prerelease[i];
          var b = other.prerelease[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.compareBuild = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        var i = 0;
        do {
          var a = this.build[i];
          var b = other.build[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.inc = function (release, identifier) {
        switch (release) {
          case 'premajor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc('pre', identifier);
            break;
          case 'preminor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc('pre', identifier);
            break;
          case 'prepatch':
            this.prerelease.length = 0;
            this.inc('patch', identifier);
            this.inc('pre', identifier);
            break;
          case 'prerelease':
            if (this.prerelease.length === 0) {
              this.inc('patch', identifier);
            }
            this.inc('pre', identifier);
            break;
          case 'major':
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'minor':
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'patch':
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          case 'pre':
            if (this.prerelease.length === 0) {
              this.prerelease = [0];
            } else {
              var i = this.prerelease.length;
              while (--i >= 0) {
                if (typeof this.prerelease[i] === 'number') {
                  this.prerelease[i]++;
                  i = -2;
                }
              }
              if (i === -1) {
                this.prerelease.push(0);
              }
            }
            if (identifier) {
              if (this.prerelease[0] === identifier) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = [identifier, 0];
                }
              } else {
                this.prerelease = [identifier, 0];
              }
            }
            break;
          default:
            throw new Error('invalid increment argument: ' + release);
        }
        this.format();
        this.raw = this.version;
        return this;
      };
      exports.inc = inc;
      function inc(version, release, loose, identifier) {
        if (typeof loose === 'string') {
          identifier = loose;
          loose = undefined;
        }
        try {
          return new SemVer(version, loose).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      }
      exports.diff = diff;
      function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var prefix = '';
          if (v1.prerelease.length || v2.prerelease.length) {
            prefix = 'pre';
            var defaultResult = 'prerelease';
          }
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      }
      exports.compareIdentifiers = compareIdentifiers;
      var numeric = /^[0-9]+$/;
      function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      }
      exports.rcompareIdentifiers = rcompareIdentifiers;
      function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      }
      exports.major = major;
      function major(a, loose) {
        return new SemVer(a, loose).major;
      }
      exports.minor = minor;
      function minor(a, loose) {
        return new SemVer(a, loose).minor;
      }
      exports.patch = patch;
      function patch(a, loose) {
        return new SemVer(a, loose).patch;
      }
      exports.compare = compare;
      function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      }
      exports.compareLoose = compareLoose;
      function compareLoose(a, b) {
        return compare(a, b, true);
      }
      exports.compareBuild = compareBuild;
      function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      }
      exports.rcompare = rcompare;
      function rcompare(a, b, loose) {
        return compare(b, a, loose);
      }
      exports.sort = sort;
      function sort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(a, b, loose);
        });
      }
      exports.rsort = rsort;
      function rsort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(b, a, loose);
        });
      }
      exports.gt = gt;
      function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      }
      exports.lt = lt;
      function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      }
      exports.eq = eq;
      function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      }
      exports.neq = neq;
      function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      }
      exports.gte = gte;
      function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      }
      exports.lte = lte;
      function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      }
      exports.cmp = cmp;
      function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError('Invalid operator: ' + op);
        }
      }
      exports.Comparator = Comparator;
      function Comparator(comp, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (comp instanceof Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        if (!(this instanceof Comparator)) {
          return new Comparator(comp, options);
        }
        comp = comp.trim().split(/\s+/).join(' ');
        debug('comparator', comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = '';
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug('comp', this);
      }
      var ANY = {};
      Comparator.prototype.parse = function (comp) {
        var r = this.options.loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var m = comp.match(r);
        if (!m) {
          throw new TypeError('Invalid comparator: ' + comp);
        }
        this.operator = m[1] !== undefined ? m[1] : '';
        if (this.operator === '=') {
          this.operator = '';
        }
        if (!m[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m[2], this.options.loose);
        }
      };
      Comparator.prototype.toString = function () {
        return this.value;
      };
      Comparator.prototype.test = function (version) {
        debug('Comparator.test', version, this.options.loose);
        if (this.semver === ANY || version === ANY) {
          return true;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version, this.operator, this.semver, this.options);
      };
      Comparator.prototype.intersects = function (comp, options) {
        if (!(comp instanceof Comparator)) {
          throw new TypeError('a Comparator is required');
        }
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        var rangeTmp;
        if (this.operator === '') {
          if (this.value === '') {
            return true;
          }
          rangeTmp = new Range(comp.value, options);
          return satisfies(this.value, rangeTmp, options);
        } else if (comp.operator === '') {
          if (comp.value === '') {
            return true;
          }
          rangeTmp = new Range(this.value, options);
          return satisfies(comp.semver, rangeTmp, options);
        }
        var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
        var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
        var sameSemVer = this.semver.version === comp.semver.version;
        var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
        var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
        var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
        return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
      };
      exports.Range = Range;
      function Range(range, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (range instanceof Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          return new Range(range.value, options);
        }
        if (!(this instanceof Range)) {
          return new Range(range, options);
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range.trim().split(/\s+/).join(' ');
        this.set = this.raw.split('||').map(function (range) {
          return this.parseRange(range.trim());
        }, this).filter(function (c) {
          return c.length;
        });
        if (!this.set.length) {
          throw new TypeError('Invalid SemVer Range: ' + this.raw);
        }
        this.format();
      }
      Range.prototype.format = function () {
        this.range = this.set.map(function (comps) {
          return comps.join(' ').trim();
        }).join('||').trim();
        return this.range;
      };
      Range.prototype.toString = function () {
        return this.range;
      };
      Range.prototype.parseRange = function (range) {
        var loose = this.options.loose;
        var hr = loose ? safeRe[t.HYPHENRANGELOOSE] : safeRe[t.HYPHENRANGE];
        range = range.replace(hr, hyphenReplace);
        debug('hyphen replace', range);
        range = range.replace(safeRe[t.COMPARATORTRIM], comparatorTrimReplace);
        debug('comparator trim', range, safeRe[t.COMPARATORTRIM]);
        range = range.replace(safeRe[t.TILDETRIM], tildeTrimReplace);
        range = range.replace(safeRe[t.CARETTRIM], caretTrimReplace);
        range = range.split(/\s+/).join(' ');
        var compRe = loose ? safeRe[t.COMPARATORLOOSE] : safeRe[t.COMPARATOR];
        var set = range.split(' ').map(function (comp) {
          return parseComparator(comp, this.options);
        }, this).join(' ').split(/\s+/);
        if (this.options.loose) {
          set = set.filter(function (comp) {
            return !!comp.match(compRe);
          });
        }
        set = set.map(function (comp) {
          return new Comparator(comp, this.options);
        }, this);
        return set;
      };
      Range.prototype.intersects = function (range, options) {
        if (!(range instanceof Range)) {
          throw new TypeError('a Range is required');
        }
        return this.set.some(function (thisComparators) {
          return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
            return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
              return rangeComparators.every(function (rangeComparator) {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      };
      function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      }
      exports.toComparators = toComparators;
      function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      }
      function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      }
      function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      }
      function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      }
      function replaceTilde(comp, options) {
        var r = options.loose ? safeRe[t.TILDELOOSE] : safeRe[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
          } else {
            ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
          }
          debug('tilde return', ret);
          return ret;
        });
      }
      function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      }
      function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? safeRe[t.CARETLOOSE] : safeRe[t.CARET];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            if (M === '0') {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
            }
          }
          debug('caret return', ret);
          return ret;
        });
      }
      function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      }
      function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? safeRe[t.XRANGELOOSE] : safeRe[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            ret = gtlt + M + '.' + m + '.' + p + pr;
          } else if (xm) {
            ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
          } else if (xp) {
            ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
          }
          debug('xRange return', ret);
          return ret;
        });
      }
      function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(safeRe[t.STAR], '');
      }
      function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
        if (isX(fM)) {
          from = '';
        } else if (isX(fm)) {
          from = '>=' + fM + '.0.0';
        } else if (isX(fp)) {
          from = '>=' + fM + '.' + fm + '.0';
        } else {
          from = '>=' + from;
        }
        if (isX(tM)) {
          to = '';
        } else if (isX(tm)) {
          to = '<' + (+tM + 1) + '.0.0';
        } else if (isX(tp)) {
          to = '<' + tM + '.' + (+tm + 1) + '.0';
        } else if (tpr) {
          to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
        } else {
          to = '<=' + to;
        }
        return (from + ' ' + to).trim();
      }
      Range.prototype.test = function (version) {
        if (!version) {
          return false;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        for (var i = 0; i < this.set.length; i++) {
          if (testSet(this.set[i], version, this.options)) {
            return true;
          }
        }
        return false;
      };
      function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (i = 0; i < set.length; i++) {
            debug(set[i].semver);
            if (set[i].semver === ANY) {
              continue;
            }
            if (set[i].semver.prerelease.length > 0) {
              var allowed = set[i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      }
      exports.satisfies = satisfies;
      function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      }
      exports.maxSatisfying = maxSatisfying;
      function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      }
      exports.minSatisfying = minSatisfying;
      function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      }
      exports.minVersion = minVersion;
      function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!minver || gt(minver, compver)) {
                  minver = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error('Unexpected operation: ' + comparator.operator);
            }
          });
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      }
      exports.validRange = validRange;
      function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      }
      exports.ltr = ltr;
      function ltr(version, range, options) {
        return outside(version, range, '<', options);
      }
      exports.gtr = gtr;
      function gtr(version, range, options) {
        return outside(version, range, '>', options);
      }
      exports.outside = outside;
      function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return false;
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return false;
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return false;
          }
        }
        return true;
      }
      exports.prerelease = prerelease;
      function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      }
      exports.intersects = intersects;
      function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      }
      exports.coerce = coerce;
      function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(safeRe[t.COERCE]);
        } else {
          var next;
          while ((next = safeRe[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            safeRe[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          safeRe[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) {
          return null;
        }
        return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
      }
    })(semver, semver.exports);
    return semver.exports;
  }

  var hasRequiredHelpers;
  function requireHelpers() {
    if (hasRequiredHelpers) return helpers;
    hasRequiredHelpers = 1;
    helpers.__esModule = true;
    helpers.hasMinVersion = hasMinVersion;
    var _semver = _interopRequireDefault(requireSemver());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function hasMinVersion(minVersion, runtimeVersion) {
      if (!runtimeVersion || !minVersion) return true;
      runtimeVersion = String(runtimeVersion);
      if (_semver["default"].valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
      return !_semver["default"].intersects("<" + minVersion, runtimeVersion) && !_semver["default"].intersects(">=8.0.0", runtimeVersion);
    }
    return helpers;
  }

  var lib$1 = {};

  var utils$1 = {};

  var _templateObject$2, _templateObject2$2, _templateObject3$2;
  var hasRequiredUtils$1;
  function requireUtils$1() {
    if (hasRequiredUtils$1) return utils$1;
    hasRequiredUtils$1 = 1;
    utils$1.__esModule = true;
    utils$1.createUtilsGetter = createUtilsGetter;
    utils$1.getImportSource = getImportSource;
    utils$1.getRequireSource = getRequireSource;
    utils$1.has = has;
    utils$1.intersection = intersection;
    utils$1.resolveKey = resolveKey;
    utils$1.resolveSource = resolveSource;
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types,
      template = _ref.template;
    function intersection(a, b) {
      var result = new Set();
      a.forEach(function (v) {
        return b.has(v) && result.add(v);
      });
      return result;
    }
    function has(object, key) {
      return Object.prototype.hasOwnProperty.call(object, key);
    }
    function getType(target) {
      return Object.prototype.toString.call(target).slice(8, -1);
    }
    function resolveId(path) {
      if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, true)) {
        return path.node.name;
      }
      if (path.isPure()) {
        var _path$evaluate = path.evaluate(),
          deopt = _path$evaluate.deopt;
        if (deopt && deopt.isIdentifier()) {
          return deopt.node.name;
        }
      }
    }
    function resolveKey(path, computed) {
      if (computed === void 0) {
        computed = false;
      }
      var scope = path.scope;
      if (path.isStringLiteral()) return path.node.value;
      var isIdentifier = path.isIdentifier();
      if (isIdentifier && !(computed || path.parent.computed)) {
        return path.node.name;
      }
      if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
        name: "Symbol"
      }) && !scope.hasBinding("Symbol", true)) {
        var sym = resolveKey(path.get("property"), path.node.computed);
        if (sym) return "Symbol." + sym;
      }
      if (isIdentifier ? scope.hasBinding(path.node.name, true) : path.isPure()) {
        var _path$evaluate2 = path.evaluate(),
          value = _path$evaluate2.value;
        if (typeof value === "string") return value;
      }
    }
    function resolveSource(obj) {
      if (obj.isMemberExpression() && obj.get("property").isIdentifier({
        name: "prototype"
      })) {
        var _id = resolveId(obj.get("object"));
        if (_id) {
          return {
            id: _id,
            placement: "prototype"
          };
        }
        return {
          id: null,
          placement: null
        };
      }
      var id = resolveId(obj);
      if (id) {
        return {
          id: id,
          placement: "static"
        };
      }
      if (obj.isRegExpLiteral()) {
        return {
          id: "RegExp",
          placement: "prototype"
        };
      } else if (obj.isFunction()) {
        return {
          id: "Function",
          placement: "prototype"
        };
      } else if (obj.isPure()) {
        var _obj$evaluate = obj.evaluate(),
          value = _obj$evaluate.value;
        if (value !== undefined) {
          return {
            id: getType(value),
            placement: "prototype"
          };
        }
      }
      return {
        id: null,
        placement: null
      };
    }
    function getImportSource(_ref2) {
      var node = _ref2.node;
      if (node.specifiers.length === 0) return node.source.value;
    }
    function getRequireSource(_ref3) {
      var node = _ref3.node;
      if (!t.isExpressionStatement(node)) return;
      var expression = node.expression;
      if (t.isCallExpression(expression) && t.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t.isStringLiteral(expression.arguments[0])) {
        return expression.arguments[0].value;
      }
    }
    function hoist(node) {
      node._blockHoist = 3;
      return node;
    }
    function createUtilsGetter(cache) {
      return function (path) {
        var prog = path.findParent(function (p) {
          return p.isProgram();
        });
        return {
          injectGlobalImport: function injectGlobalImport(url, moduleName) {
            cache.storeAnonymous(prog, url, moduleName, function (isScript, source) {
              return isScript ? template.statement.ast(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose(["require(", ")"])), source) : t.importDeclaration([], source);
            });
          },
          injectNamedImport: function injectNamedImport(url, name, hint, moduleName) {
            if (hint === void 0) {
              hint = name;
            }
            return cache.storeNamed(prog, url, name, moduleName, function (isScript, source, name) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose(["\n                  var ", " = require(", ").", "\n                "])), id, source, name)) : t.importDeclaration([t.importSpecifier(id, name)], source),
                name: id.name
              };
            });
          },
          injectDefaultImport: function injectDefaultImport(url, hint, moduleName) {
            if (hint === void 0) {
              hint = url;
            }
            return cache.storeNamed(prog, url, "default", moduleName, function (isScript, source) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose(["var ", " = require(", ")"])), id, source)) : t.importDeclaration([t.importDefaultSpecifier(id)], source),
                name: id.name
              };
            });
          }
        };
      };
    }
    return utils$1;
  }

  var importsInjector = {};

  var hasRequiredImportsInjector;
  function requireImportsInjector() {
    if (hasRequiredImportsInjector) return importsInjector;
    hasRequiredImportsInjector = 1;
    importsInjector.__esModule = true;
    importsInjector["default"] = void 0;
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var ImportsCachedInjector = function () {
      function ImportsCachedInjector(resolver, getPreferredIndex) {
        this._imports = new WeakMap();
        this._anonymousImports = new WeakMap();
        this._lastImports = new WeakMap();
        this._resolver = resolver;
        this._getPreferredIndex = getPreferredIndex;
      }
      var _proto = ImportsCachedInjector.prototype;
      _proto.storeAnonymous = function storeAnonymous(programPath, url, moduleName, getVal) {
        var key = this._normalizeKey(programPath, url);
        var imports = this._ensure(this._anonymousImports, programPath, Set);
        if (imports.has(key)) return;
        var node = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)));
        imports.add(key);
        this._injectImport(programPath, node, moduleName);
      };
      _proto.storeNamed = function storeNamed(programPath, url, name, moduleName, getVal) {
        var key = this._normalizeKey(programPath, url, name);
        var imports = this._ensure(this._imports, programPath, Map);
        if (!imports.has(key)) {
          var _getVal = getVal(programPath.node.sourceType === "script", t.stringLiteral(this._resolver(url)), t.identifier(name)),
            node = _getVal.node,
            id = _getVal.name;
          imports.set(key, id);
          this._injectImport(programPath, node, moduleName);
        }
        return t.identifier(imports.get(key));
      };
      _proto._injectImport = function _injectImport(programPath, node, moduleName) {
        var _this$_lastImports$ge;
        var newIndex = this._getPreferredIndex(moduleName);
        var lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
        var isPathStillValid = function isPathStillValid(path) {
          return path.node && path.parent === programPath.node && path.container === programPath.node.body;
        };
        var last;
        if (newIndex === Infinity) {
          if (lastImports.length > 0) {
            last = lastImports[lastImports.length - 1].path;
            if (!isPathStillValid(last)) last = undefined;
          }
        } else {
          for (var _iterator = _createForOfIteratorHelperLoose(lastImports.entries()), _step; !(_step = _iterator()).done;) {
            var _step$value = _slicedToArray(_step.value, 2),
              i = _step$value[0],
              data = _step$value[1];
            var path = data.path,
              index = data.index;
            if (isPathStillValid(path)) {
              if (newIndex < index) {
                var _path$insertBefore = path.insertBefore(node),
                  _path$insertBefore2 = _slicedToArray(_path$insertBefore, 1),
                  newPath = _path$insertBefore2[0];
                lastImports.splice(i, 0, {
                  path: newPath,
                  index: newIndex
                });
                return;
              }
              last = path;
            }
          }
        }
        if (last) {
          var _last$insertAfter = last.insertAfter(node),
            _last$insertAfter2 = _slicedToArray(_last$insertAfter, 1),
            _newPath = _last$insertAfter2[0];
          lastImports.push({
            path: _newPath,
            index: newIndex
          });
        } else {
          var _programPath$unshiftC = programPath.unshiftContainer("body", node),
            _programPath$unshiftC2 = _slicedToArray(_programPath$unshiftC, 1),
            _newPath2 = _programPath$unshiftC2[0];
          this._lastImports.set(programPath, [{
            path: _newPath2,
            index: newIndex
          }]);
        }
      };
      _proto._ensure = function _ensure(map, programPath, Collection) {
        var collection = map.get(programPath);
        if (!collection) {
          collection = new Collection();
          map.set(programPath, collection);
        }
        return collection;
      };
      _proto._normalizeKey = function _normalizeKey(programPath, url, name) {
        if (name === void 0) {
          name = "";
        }
        var sourceType = programPath.node.sourceType;
        return (name && sourceType) + "::" + url + "::" + name;
      };
      return _createClass(ImportsCachedInjector);
    }();
    importsInjector["default"] = ImportsCachedInjector;
    return importsInjector;
  }

  var debugUtils = {};

  var hasRequiredDebugUtils;
  function requireDebugUtils() {
    if (hasRequiredDebugUtils) return debugUtils;
    hasRequiredDebugUtils = 1;
    debugUtils.__esModule = true;
    debugUtils.presetEnvSilentDebugHeader = void 0;
    debugUtils.stringifyTargets = stringifyTargets;
    debugUtils.stringifyTargetsMultiline = stringifyTargetsMultiline;
    var _helperCompilationTargets = require$$1$1;
    var presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
    debugUtils.presetEnvSilentDebugHeader = presetEnvSilentDebugHeader;
    function stringifyTargetsMultiline(targets) {
      return JSON.stringify((0, _helperCompilationTargets.prettifyTargets)(targets), null, 2);
    }
    function stringifyTargets(targets) {
      return JSON.stringify(targets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
    }
    return debugUtils;
  }

  var normalizeOptions$4 = {};

  var hasRequiredNormalizeOptions;
  function requireNormalizeOptions() {
    if (hasRequiredNormalizeOptions) return normalizeOptions$4;
    hasRequiredNormalizeOptions = 1;
    normalizeOptions$4.__esModule = true;
    normalizeOptions$4.applyMissingDependenciesDefaults = applyMissingDependenciesDefaults;
    normalizeOptions$4.validateIncludeExclude = validateIncludeExclude;
    var _utils = requireUtils$1();
    function patternToRegExp(pattern) {
      if (pattern instanceof RegExp) return pattern;
      try {
        return new RegExp("^" + pattern + "$");
      } catch (_unused) {
        return null;
      }
    }
    function buildUnusedError(label, unused) {
      if (!unused.length) return "";
      return "  - The following \"" + label + "\" patterns didn't match any polyfill:\n" + unused.map(function (original) {
        return "    " + String(original) + "\n";
      }).join("");
    }
    function buldDuplicatesError(duplicates) {
      if (!duplicates.size) return "";
      return "  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\n" + Array.from(duplicates, function (name) {
        return "    " + name + "\n";
      }).join("");
    }
    function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
      var current;
      var filter = function filter(pattern) {
        var regexp = patternToRegExp(pattern);
        if (!regexp) return false;
        var matched = false;
        for (var _iterator = _createForOfIteratorHelperLoose(polyfills.keys()), _step; !(_step = _iterator()).done;) {
          var polyfill = _step.value;
          if (regexp.test(polyfill)) {
            matched = true;
            current.add(polyfill);
          }
        }
        return !matched;
      };
      var include = current = new Set();
      var unusedInclude = Array.from(includePatterns).filter(filter);
      var exclude = current = new Set();
      var unusedExclude = Array.from(excludePatterns).filter(filter);
      var duplicates = (0, _utils.intersection)(include, exclude);
      if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
        throw new Error("Error while validating the \"" + provider + "\" provider options:\n" + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
      }
      return {
        include: include,
        exclude: exclude
      };
    }
    function applyMissingDependenciesDefaults(options, babelApi) {
      var _options$missingDepen = options.missingDependencies,
        missingDependencies = _options$missingDepen === void 0 ? {} : _options$missingDepen;
      if (missingDependencies === false) return false;
      var caller = babelApi.caller(function (caller) {
        return caller == null ? void 0 : caller.name;
      });
      var _missingDependencies$ = missingDependencies.log,
        log = _missingDependencies$ === void 0 ? "deferred" : _missingDependencies$,
        _missingDependencies$2 = missingDependencies.inject,
        inject = _missingDependencies$2 === void 0 ? caller === "rollup-plugin-babel" ? "throw" : "import" : _missingDependencies$2,
        _missingDependencies$3 = missingDependencies.all,
        all = _missingDependencies$3 === void 0 ? false : _missingDependencies$3;
      return {
        log: log,
        inject: inject,
        all: all
      };
    }
    return normalizeOptions$4;
  }

  var visitors = {};

  var usage$1 = {};

  var hasRequiredUsage;
  function requireUsage() {
    if (hasRequiredUsage) return usage$1;
    hasRequiredUsage = 1;
    usage$1.__esModule = true;
    usage$1["default"] = void 0;
    var _utils = requireUtils$1();
    function isRemoved(path) {
      if (path.removed) return true;
      if (!path.parentPath) return false;
      if (path.listKey) {
        var _path$parentPath$node;
        if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
      } else {
        if (path.parentPath.node[path.key] !== path.node) return true;
      }
      return isRemoved(path.parentPath);
    }
    var _default = function _default(callProvider) {
      function property(object, key, placement, path) {
        return callProvider({
          kind: "property",
          object: object,
          key: key,
          placement: placement
        }, path);
      }
      function handleReferencedIdentifier(path) {
        var name = path.node.name,
          scope = path.scope;
        if (scope.getBindingIdentifier(name)) return;
        callProvider({
          kind: "global",
          name: name
        }, path);
      }
      function analyzeMemberExpression(path) {
        var key = (0, _utils.resolveKey)(path.get("property"), path.node.computed);
        return {
          key: key,
          handleAsMemberExpression: !!key && key !== "prototype"
        };
      }
      return {
        ReferencedIdentifier: function ReferencedIdentifier(path) {
          var parentPath = path.parentPath;
          if (parentPath.isMemberExpression({
            object: path.node
          }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
            return;
          }
          handleReferencedIdentifier(path);
        },
        MemberExpression: function MemberExpression(path) {
          var _analyzeMemberExpress = analyzeMemberExpression(path),
            key = _analyzeMemberExpress.key,
            handleAsMemberExpression = _analyzeMemberExpress.handleAsMemberExpression;
          if (!handleAsMemberExpression) return;
          var object = path.get("object");
          var objectIsGlobalIdentifier = object.isIdentifier();
          if (objectIsGlobalIdentifier) {
            var binding = object.scope.getBinding(object.node.name);
            if (binding) {
              if (binding.path.isImportNamespaceSpecifier()) return;
              objectIsGlobalIdentifier = false;
            }
          }
          var source = (0, _utils.resolveSource)(object);
          var skipObject = property(source.id, key, source.placement, path);
          skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
          if (!skipObject) handleReferencedIdentifier(object);
        },
        ObjectPattern: function ObjectPattern(path) {
          var parentPath = path.parentPath,
            parent = path.parent;
          var obj;
          if (parentPath.isVariableDeclarator()) {
            obj = parentPath.get("init");
          } else if (parentPath.isAssignmentExpression()) {
            obj = parentPath.get("right");
          } else if (parentPath.isFunction()) {
            var grand = parentPath.parentPath;
            if (grand.isCallExpression() || grand.isNewExpression()) {
              if (grand.node.callee === parent) {
                obj = grand.get("arguments")[path.key];
              }
            }
          }
          var id = null;
          var placement = null;
          if (obj) {
            var _ref = (0, _utils.resolveSource)(obj);
            id = _ref.id;
            placement = _ref.placement;
          }
          for (var _iterator = _createForOfIteratorHelperLoose(path.get("properties")), _step; !(_step = _iterator()).done;) {
            var prop = _step.value;
            if (prop.isObjectProperty()) {
              var key = (0, _utils.resolveKey)(prop.get("key"));
              if (key) property(id, key, placement, prop);
            }
          }
        },
        BinaryExpression: function BinaryExpression(path) {
          if (path.node.operator !== "in") return;
          var source = (0, _utils.resolveSource)(path.get("right"));
          var key = (0, _utils.resolveKey)(path.get("left"), true);
          if (!key) return;
          callProvider({
            kind: "in",
            object: source.id,
            key: key,
            placement: source.placement
          }, path);
        }
      };
    };
    usage$1["default"] = _default;
    return usage$1;
  }

  var entry$1 = {};

  var hasRequiredEntry;
  function requireEntry() {
    if (hasRequiredEntry) return entry$1;
    hasRequiredEntry = 1;
    entry$1.__esModule = true;
    entry$1["default"] = void 0;
    var _utils = requireUtils$1();
    var _default = function _default(callProvider) {
      return {
        ImportDeclaration: function ImportDeclaration(path) {
          var source = (0, _utils.getImportSource)(path);
          if (!source) return;
          callProvider({
            kind: "import",
            source: source
          }, path);
        },
        Program: function Program(path) {
          path.get("body").forEach(function (bodyPath) {
            var source = (0, _utils.getRequireSource)(bodyPath);
            if (!source) return;
            callProvider({
              kind: "import",
              source: source
            }, bodyPath);
          });
        }
      };
    };
    entry$1["default"] = _default;
    return entry$1;
  }

  var hasRequiredVisitors;
  function requireVisitors() {
    if (hasRequiredVisitors) return visitors;
    hasRequiredVisitors = 1;
    visitors.__esModule = true;
    visitors.usage = visitors.entry = void 0;
    var _usage = _interopRequireDefault(requireUsage());
    visitors.usage = _usage["default"];
    var _entry = _interopRequireDefault(requireEntry());
    visitors.entry = _entry["default"];
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    return visitors;
  }

  var dependencies = {};

  var hasRequiredDependencies;
  function requireDependencies() {
    if (hasRequiredDependencies) return dependencies;
    hasRequiredDependencies = 1;
    dependencies.__esModule = true;
    dependencies.has = has;
    dependencies.laterLogMissing = laterLogMissing;
    dependencies.logMissing = logMissing;
    dependencies.resolve = resolve;
    function resolve(dirname, moduleName, absoluteImports) {
      if (absoluteImports === false) return moduleName;
      throw new Error("\"absoluteImports\" is not supported in bundles prepared for the browser.");
    }
    function has(basedir, name) {
      return true;
    }
    function logMissing(missingDeps) {}
    function laterLogMissing(missingDeps) {}
    return dependencies;
  }

  var metaResolver = {};

  var hasRequiredMetaResolver;
  function requireMetaResolver() {
    if (hasRequiredMetaResolver) return metaResolver;
    hasRequiredMetaResolver = 1;
    metaResolver.__esModule = true;
    metaResolver["default"] = createMetaResolver;
    var _utils = requireUtils$1();
    var PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
    function createMetaResolver(polyfills) {
      var staticP = polyfills["static"],
        instanceP = polyfills.instance,
        globalP = polyfills.global;
      return function (meta) {
        if (meta.kind === "global" && globalP && (0, _utils.has)(globalP, meta.name)) {
          return {
            kind: "global",
            desc: globalP[meta.name],
            name: meta.name
          };
        }
        if (meta.kind === "property" || meta.kind === "in") {
          var placement = meta.placement,
            object = meta.object,
            key = meta.key;
          if (object && placement === "static") {
            if (globalP && PossibleGlobalObjects.has(object) && (0, _utils.has)(globalP, key)) {
              return {
                kind: "global",
                desc: globalP[key],
                name: key
              };
            }
            if (staticP && (0, _utils.has)(staticP, object) && (0, _utils.has)(staticP[object], key)) {
              return {
                kind: "static",
                desc: staticP[object][key],
                name: object + "$" + key
              };
            }
          }
          if (instanceP && (0, _utils.has)(instanceP, key)) {
            return {
              kind: "instance",
              desc: instanceP[key],
              name: "" + key
            };
          }
        }
      };
    }
    return metaResolver;
  }

  var hasRequiredLib$2;
  function requireLib$2() {
    if (hasRequiredLib$2) return lib$1;
    hasRequiredLib$2 = 1;
    lib$1.__esModule = true;
    lib$1["default"] = definePolyfillProvider;
    var _helperPluginUtils = require$$0$4;
    var _helperCompilationTargets = _interopRequireWildcard(require$$1$1);
    var _utils = requireUtils$1();
    var _importsInjector = _interopRequireDefault(requireImportsInjector());
    var _debugUtils = requireDebugUtils();
    var _normalizeOptions = requireNormalizeOptions();
    var v = _interopRequireWildcard(requireVisitors());
    var deps = _interopRequireWildcard(requireDependencies());
    var _metaResolver = _interopRequireDefault(requireMetaResolver());
    var _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    function _objectWithoutPropertiesLoose(source, excluded) {
      if (source == null) return {};
      var target = {};
      var sourceKeys = Object.keys(source);
      var key, i;
      for (i = 0; i < sourceKeys.length; i++) {
        key = sourceKeys[i];
        if (excluded.indexOf(key) >= 0) continue;
        target[key] = source[key];
      }
      return target;
    }
    var getTargets = _helperCompilationTargets["default"]["default"] || _helperCompilationTargets["default"];
    function resolveOptions(options, babelApi) {
      var method = options.method,
        targetsOption = options.targets,
        ignoreBrowserslistConfig = options.ignoreBrowserslistConfig,
        configPath = options.configPath,
        debug = options.debug,
        shouldInjectPolyfill = options.shouldInjectPolyfill,
        absoluteImports = options.absoluteImports,
        providerOptions = _objectWithoutPropertiesLoose(options, _excluded);
      if (isEmpty(options)) {
        throw new Error("This plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md");
      }
      var methodName;
      if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
        throw new Error(".method must be a string");
      } else {
        throw new Error(".method must be one of \"entry-global\", \"usage-global\"" + (" or \"usage-pure\" (received " + JSON.stringify(method) + ")"));
      }
      if (typeof shouldInjectPolyfill === "function") {
        if (options.include || options.exclude) {
          throw new Error(".include and .exclude are not supported when using the" + " .shouldInjectPolyfill function.");
        }
      } else if (shouldInjectPolyfill != null) {
        throw new Error(".shouldInjectPolyfill must be a function, or undefined" + (" (received " + JSON.stringify(shouldInjectPolyfill) + ")"));
      }
      if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
        throw new Error(".absoluteImports must be a boolean, a string, or undefined" + (" (received " + JSON.stringify(absoluteImports) + ")"));
      }
      var targets;
      if (targetsOption || configPath || ignoreBrowserslistConfig) {
        var targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
          browsers: targetsOption
        } : targetsOption;
        targets = getTargets(targetsObj, {
          ignoreBrowserslistConfig: ignoreBrowserslistConfig,
          configPath: configPath
        });
      } else {
        targets = babelApi.targets();
      }
      return {
        method: method,
        methodName: methodName,
        targets: targets,
        absoluteImports: absoluteImports != null ? absoluteImports : false,
        shouldInjectPolyfill: shouldInjectPolyfill,
        debug: !!debug,
        providerOptions: providerOptions
      };
    }
    function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
      var _resolveOptions = resolveOptions(options, babelApi),
        method = _resolveOptions.method,
        methodName = _resolveOptions.methodName,
        targets = _resolveOptions.targets,
        _debug = _resolveOptions.debug,
        _shouldInjectPolyfill = _resolveOptions.shouldInjectPolyfill,
        providerOptions = _resolveOptions.providerOptions,
        absoluteImports = _resolveOptions.absoluteImports;
      var include, exclude;
      var polyfillsSupport;
      var polyfillsNames;
      var filterPolyfills;
      var getUtils = (0, _utils.createUtilsGetter)(new _importsInjector["default"](function (moduleName) {
        return deps.resolve(dirname, moduleName, absoluteImports);
      }, function (name) {
        var _polyfillsNames$get, _polyfillsNames;
        return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
      }));
      var depsCache = new Map();
      var api = {
        babel: babelApi,
        getUtils: getUtils,
        method: options.method,
        targets: targets,
        createMetaResolver: _metaResolver["default"],
        shouldInjectPolyfill: function shouldInjectPolyfill(name) {
          if (polyfillsNames === undefined) {
            throw new Error("Internal error in the " + factory.name + " provider: " + "shouldInjectPolyfill() can't be called during initialization.");
          }
          if (!polyfillsNames.has(name)) {
            console.warn("Internal error in the " + providerName + " provider: " + ("unknown polyfill \"" + name + "\"."));
          }
          if (filterPolyfills && !filterPolyfills(name)) return false;
          var shouldInject = (0, _helperCompilationTargets.isRequired)(name, targets, {
            compatData: polyfillsSupport,
            includes: include,
            excludes: exclude
          });
          if (_shouldInjectPolyfill) {
            shouldInject = _shouldInjectPolyfill(name, shouldInject);
            if (typeof shouldInject !== "boolean") {
              throw new Error(".shouldInjectPolyfill must return a boolean.");
            }
          }
          return shouldInject;
        },
        debug: function debug(name) {
          var _debugLog, _debugLog$polyfillsSu;
          debugLog().found = true;
          if (!_debug || !name) return;
          if (debugLog().polyfills.has(providerName)) return;
          debugLog().polyfills.add(name);
          (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
        },
        assertDependency: function assertDependency(name, version) {
          if (version === void 0) {
            version = "*";
          }
          if (missingDependencies === false) return;
          if (absoluteImports) {
            return;
          }
          var dep = version === "*" ? name : name + "@^" + version;
          var found = missingDependencies.all ? false : mapGetOr(depsCache, name + " :: " + dirname, function () {
            return deps.has(dirname, name);
          });
          if (!found) {
            debugLog().missingDeps.add(dep);
          }
        }
      };
      var provider = factory(api, providerOptions, dirname);
      var providerName = provider.name || factory.name;
      if (typeof provider[methodName] !== "function") {
        throw new Error("The \"" + providerName + "\" provider doesn't support the \"" + method + "\" polyfilling method.");
      }
      if (Array.isArray(provider.polyfills)) {
        polyfillsNames = new Map(provider.polyfills.map(function (name, index) {
          return [name, index];
        }));
        filterPolyfills = provider.filterPolyfills;
      } else if (provider.polyfills) {
        polyfillsNames = new Map(Object.keys(provider.polyfills).map(function (name, index) {
          return [name, index];
        }));
        polyfillsSupport = provider.polyfills;
        filterPolyfills = provider.filterPolyfills;
      } else {
        polyfillsNames = new Map();
      }
      var _ref2 = (0, _normalizeOptions.validateIncludeExclude)(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []);
      include = _ref2.include;
      exclude = _ref2.exclude;
      var callProvider;
      if (methodName === "usageGlobal") {
        callProvider = function callProvider(payload, path) {
          var _ref;
          var utils = getUtils(path);
          return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
        };
      } else {
        callProvider = function callProvider(payload, path) {
          var utils = getUtils(path);
          provider[methodName](payload, utils, path);
          return false;
        };
      }
      return {
        debug: _debug,
        method: method,
        targets: targets,
        provider: provider,
        providerName: providerName,
        callProvider: callProvider
      };
    }
    function definePolyfillProvider(factory) {
      return (0, _helperPluginUtils.declare)(function (babelApi, options, dirname) {
        babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
        var traverse = babelApi.traverse;
        var debugLog;
        var missingDependencies = (0, _normalizeOptions.applyMissingDependenciesDefaults)(options, babelApi);
        var _instantiateProvider = instantiateProvider(factory, options, missingDependencies, dirname, function () {
            return debugLog;
          }, babelApi),
          debug = _instantiateProvider.debug,
          method = _instantiateProvider.method,
          targets = _instantiateProvider.targets,
          provider = _instantiateProvider.provider,
          providerName = _instantiateProvider.providerName,
          callProvider = _instantiateProvider.callProvider;
        var createVisitor = method === "entry-global" ? v.entry : v.usage;
        var visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
        if (debug && debug !== _debugUtils.presetEnvSilentDebugHeader) {
          console.log(providerName + ": `DEBUG` option");
          console.log("\nUsing targets: " + (0, _debugUtils.stringifyTargetsMultiline)(targets));
          console.log("\nUsing polyfills with `" + method + "` method:");
        }
        var runtimeName = provider.runtimeName;
        return {
          name: "inject-polyfills",
          visitor: visitor,
          pre: function pre(file) {
            var _provider$pre;
            if (runtimeName) {
              if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
                console.warn("Two different polyfill providers" + (" (" + file.get("runtimeHelpersModuleProvider")) + (" and " + providerName + ") are trying to define two") + " conflicting @babel/runtime alternatives:" + (" " + file.get("runtimeHelpersModuleName") + " and " + runtimeName + ".") + " The second one will be ignored.");
              } else {
                file.set("runtimeHelpersModuleName", runtimeName);
                file.set("runtimeHelpersModuleProvider", providerName);
              }
            }
            debugLog = {
              polyfills: new Set(),
              polyfillsSupport: undefined,
              found: false,
              providers: new Set(),
              missingDeps: new Set()
            };
            (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
          },
          post: function post() {
            var _provider$post;
            (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
            if (missingDependencies !== false) {
              if (missingDependencies.log === "per-file") {
                deps.logMissing(debugLog.missingDeps);
              } else {
                deps.laterLogMissing(debugLog.missingDeps);
              }
            }
            if (!debug) return;
            if (this.filename) console.log("\n[" + this.filename + "]");
            if (debugLog.polyfills.size === 0) {
              console.log(method === "entry-global" ? debugLog.found ? "Based on your targets, the " + providerName + " polyfill did not add any polyfill." : "The entry point for the " + providerName + " polyfill has not been found." : "Based on your code and targets, the " + providerName + " polyfill did not add any polyfill.");
              return;
            }
            if (method === "entry-global") {
              console.log("The " + providerName + " polyfill entry has been replaced with " + "the following polyfills:");
            } else {
              console.log("The " + providerName + " polyfill added the following polyfills:");
            }
            for (var _iterator = _createForOfIteratorHelperLoose(debugLog.polyfills), _step; !(_step = _iterator()).done;) {
              var name = _step.value;
              var _debugLog$polyfillsSu2;
              if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
                var filteredTargets = (0, _helperCompilationTargets.getInclusionReasons)(name, targets, debugLog.polyfillsSupport);
                var formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
                console.log("  " + name + " " + formattedTargets);
              } else {
                console.log("  " + name);
              }
            }
          }
        };
      });
    }
    function mapGetOr(map, key, getDefault) {
      var val = map.get(key);
      if (val === undefined) {
        val = getDefault();
        map.set(key, val);
      }
      return val;
    }
    function isEmpty(obj) {
      return Object.keys(obj).length === 0;
    }
    return lib$1;
  }

  var hasRequiredLib$1;
  function requireLib$1() {
    if (hasRequiredLib$1) return lib$2;
    hasRequiredLib$1 = 1;
    lib$2.__esModule = true;
    lib$2["default"] = void 0;
    var _corejs2BuiltIns = _interopRequireDefault(requireCorejs2BuiltIns());
    var _builtInDefinitions = requireBuiltInDefinitions();
    var _addPlatformSpecificPolyfills = _interopRequireDefault(requireAddPlatformSpecificPolyfills());
    var _helpers = requireHelpers();
    var _helperDefinePolyfillProvider = _interopRequireDefault(requireLib$2());
    var _babel = _interopRequireWildcard(require$$5);
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var _ref = _babel["default"] || _babel,
      t = _ref.types;
    var BABEL_RUNTIME = "@babel/runtime-corejs2";
    var presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var has = Function.call.bind(Object.hasOwnProperty);
    var _default = (0, _helperDefinePolyfillProvider["default"])(function (api, _ref2) {
      var _ref2$presetEnvCompat = _ref2[presetEnvCompat],
        _ref2$presetEnvCompat2 = _ref2$presetEnvCompat === void 0 ? {} : _ref2$presetEnvCompat,
        _ref2$presetEnvCompat3 = _ref2$presetEnvCompat2.entryInjectRegenerator,
        entryInjectRegenerator = _ref2$presetEnvCompat3 === void 0 ? false : _ref2$presetEnvCompat3,
        _ref2$presetEnvCompat4 = _ref2$presetEnvCompat2.noRuntimeName,
        noRuntimeName = _ref2$presetEnvCompat4 === void 0 ? false : _ref2$presetEnvCompat4,
        _ref2$runtimeCompat = _ref2[runtimeCompat],
        _ref2$runtimeCompat2 = _ref2$runtimeCompat === void 0 ? {} : _ref2$runtimeCompat,
        _ref2$runtimeCompat2$ = _ref2$runtimeCompat2.useBabelRuntime,
        useBabelRuntime = _ref2$runtimeCompat2$ === void 0 ? false : _ref2$runtimeCompat2$,
        _ref2$runtimeCompat2$2 = _ref2$runtimeCompat2.runtimeVersion,
        runtimeVersion = _ref2$runtimeCompat2$2 === void 0 ? "" : _ref2$runtimeCompat2$2,
        _ref2$runtimeCompat2$3 = _ref2$runtimeCompat2.ext,
        ext = _ref2$runtimeCompat2$3 === void 0 ? ".js" : _ref2$runtimeCompat2$3;
      var resolve = api.createMetaResolver({
        global: _builtInDefinitions.BuiltIns,
        "static": _builtInDefinitions.StaticProperties,
        instance: _builtInDefinitions.InstanceProperties
      });
      var debug = api.debug,
        shouldInjectPolyfill = api.shouldInjectPolyfill,
        method = api.method;
      var polyfills = (0, _addPlatformSpecificPolyfills["default"])(api.targets, method, _corejs2BuiltIns["default"]);
      var coreJSBase = useBabelRuntime ? BABEL_RUNTIME + "/core-js" : method === "usage-pure" ? "core-js/library/fn" : "core-js/modules";
      function inject(name, utils) {
        if (typeof name === "string") {
          if (has(polyfills, name) && shouldInjectPolyfill(name)) {
            debug(name);
            utils.injectGlobalImport(coreJSBase + "/" + name + ".js");
          }
          return;
        }
        name.forEach(function (name) {
          return inject(name, utils);
        });
      }
      function maybeInjectPure(desc, hint, utils) {
        var pure = desc.pure,
          meta = desc.meta,
          name = desc.name;
        if (!pure || !shouldInjectPolyfill(name)) return;
        if (runtimeVersion && meta && meta.minRuntimeVersion && !(0, _helpers.hasMinVersion)(meta && meta.minRuntimeVersion, runtimeVersion)) {
          return;
        }
        if (useBabelRuntime && pure === "symbol/index") pure = "symbol";
        return utils.injectDefaultImport(coreJSBase + "/" + pure + ext, hint);
      }
      return {
        name: "corejs2",
        runtimeName: noRuntimeName ? null : BABEL_RUNTIME,
        polyfills: polyfills,
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind === "import" && meta.source === "core-js") {
            debug(null);
            inject(Object.keys(polyfills), utils);
            if (entryInjectRegenerator) {
              utils.injectGlobalImport("regenerator-runtime/runtime.js");
            }
            path.remove();
          }
        },
        usageGlobal: function usageGlobal(meta, utils) {
          var resolved = resolve(meta);
          if (!resolved) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low);
            });
          }
          inject(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSBase + "/is-iterable" + ext, "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (meta.key === "Symbol.iterator" && shouldInjectPolyfill("es6.symbol") && path.parentPath.isCallExpression({
              callee: path.node
            }) && path.parentPath.node.arguments.length === 0) {
              path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSBase + "/get-iterator" + ext, "getIterator"), [path.node.object]));
              path.skip();
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          var id = maybeInjectPure(resolved.desc, resolved.name, utils);
          if (id) path.replaceWith(id);
        },
        visitor: method === "usage-global" && {
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              inject("web.dom.iterable", api.getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            _builtInDefinitions.CommonIterators.forEach(function (name) {
              return inject(name, api.getUtils(path));
            });
          }
        }
      };
    });
    lib$2["default"] = _default;
    return lib$2;
  }

  var babelPluginPolyfillCorejs2;
  var hasRequiredBabelPluginPolyfillCorejs2;
  function requireBabelPluginPolyfillCorejs2() {
    if (hasRequiredBabelPluginPolyfillCorejs2) return babelPluginPolyfillCorejs2;
    hasRequiredBabelPluginPolyfillCorejs2 = 1;
    function bool(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    babelPluginPolyfillCorejs2 = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? null : requireLib$1();
    return babelPluginPolyfillCorejs2;
  }

  var lib = {};

  var hasRequiredLib;
  function requireLib() {
    if (hasRequiredLib) return lib;
    hasRequiredLib = 1;
    lib.__esModule = true;
    lib["default"] = void 0;
    var _helperDefinePolyfillProvider = _interopRequireDefault(requireLib$2());
    function _interopRequireDefault(obj) {
      return obj && obj.__esModule ? obj : {
        "default": obj
      };
    }
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var _default = (0, _helperDefinePolyfillProvider["default"])(function (_ref2, options) {
      var debug = _ref2.debug,
        targets = _ref2.targets,
        babel = _ref2.babel;
      if (!shallowEqual(targets, babel.targets())) {
        throw new Error("This plugin does not use the targets option. Only preset-env's targets" + " or top-level targets need to be configured for this plugin to work." + " See https://github.com/babel/babel-polyfills/issues/36 for more" + " details.");
      }
      var _options$runtimeCompa = options[runtimeCompat],
        _options$runtimeCompa2 = _options$runtimeCompa === void 0 ? {} : _options$runtimeCompa,
        _options$runtimeCompa3 = _options$runtimeCompa2.moduleName,
        moduleName = _options$runtimeCompa3 === void 0 ? null : _options$runtimeCompa3,
        _options$runtimeCompa4 = _options$runtimeCompa2.useBabelRuntime,
        useBabelRuntime = _options$runtimeCompa4 === void 0 ? false : _options$runtimeCompa4;
      return {
        name: "regenerator",
        polyfills: ["regenerator-runtime"],
        usageGlobal: function usageGlobal(meta, utils) {
          if (isRegenerator(meta)) {
            debug("regenerator-runtime");
            utils.injectGlobalImport("regenerator-runtime/runtime.js");
          }
        },
        usagePure: function usagePure(meta, utils, path) {
          if (isRegenerator(meta)) {
            var pureName = "regenerator-runtime";
            if (useBabelRuntime) {
              var _ref;
              var runtimeName = (_ref = moduleName != null ? moduleName : path.hub.file.get("runtimeHelpersModuleName")) != null ? _ref : "@babel/runtime";
              pureName = runtimeName + "/regenerator";
            }
            path.replaceWith(utils.injectDefaultImport(pureName, "regenerator-runtime"));
          }
        }
      };
    });
    lib["default"] = _default;
    var isRegenerator = function isRegenerator(meta) {
      return meta.kind === "global" && meta.name === "regeneratorRuntime";
    };
    function shallowEqual(obj1, obj2) {
      return JSON.stringify(obj1) === JSON.stringify(obj2);
    }
    return lib;
  }

  var babelPluginPolyfillRegenerator;
  var hasRequiredBabelPluginPolyfillRegenerator;
  function requireBabelPluginPolyfillRegenerator() {
    if (hasRequiredBabelPluginPolyfillRegenerator) return babelPluginPolyfillRegenerator;
    hasRequiredBabelPluginPolyfillRegenerator = 1;
    function bool(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    babelPluginPolyfillRegenerator = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? null : requireLib();
    return babelPluginPolyfillRegenerator;
  }

  var utils = {};

  var hasRequiredUtils;
  function requireUtils() {
    if (hasRequiredUtils) return utils;
    hasRequiredUtils = 1;
    utils.getImportSource = function (_ref) {
      var node = _ref.node;
      if (node.specifiers.length === 0) return node.source.value;
    };
    utils.getRequireSource = function (_ref2) {
      var node = _ref2.node;
      if (node.type !== "ExpressionStatement") return;
      var expression = node.expression;
      if (expression.type === "CallExpression" && expression.callee.type === "Identifier" && expression.callee.name === "require" && expression.arguments.length === 1 && expression.arguments[0].type === "StringLiteral") {
        return expression.arguments[0].value;
      }
    };
    utils.isPolyfillSource = function (source) {
      return source === "@babel/polyfill" || source === "core-js";
    };
    return utils;
  }

  var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4;
  var babelPolyfill;
  var hasRequiredBabelPolyfill;
  function requireBabelPolyfill() {
    if (hasRequiredBabelPolyfill) return babelPolyfill;
    hasRequiredBabelPolyfill = 1;
    var _require$$ = requireUtils(),
      getImportSource = _require$$.getImportSource,
      getRequireSource = _require$$.getRequireSource,
      isPolyfillSource = _require$$.isPolyfillSource;
    var BABEL_POLYFILL_DEPRECATION = "\n  `@babel/polyfill` is deprecated. Please, use required parts of `core-js`\n  and `regenerator-runtime/runtime` separately";
    var NO_DIRECT_POLYFILL_IMPORT = "\n  When setting `useBuiltIns: 'usage'`, polyfills are automatically imported when needed.\n  Please remove the direct import of `SPECIFIER` or use `useBuiltIns: 'entry'` instead.";
    babelPolyfill = function babelPolyfill(_ref, _ref2) {
      var template = _ref.template;
      var regenerator = _ref2.regenerator,
        deprecated = _ref2.deprecated,
        usage = _ref2.usage;
      return {
        name: "preset-env/replace-babel-polyfill",
        visitor: {
          ImportDeclaration: function ImportDeclaration(path) {
            var src = getImportSource(path);
            if (usage && isPolyfillSource(src)) {
              console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
              if (!deprecated) path.remove();
            } else if (src === "@babel/polyfill") {
              if (deprecated) {
                console.warn(BABEL_POLYFILL_DEPRECATION);
              } else if (regenerator) {
                path.replaceWithMultiple(template.ast(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n              import \"core-js\";\n              import \"regenerator-runtime/runtime.js\";\n            "]))));
              } else {
                path.replaceWith(template.ast(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n              import \"core-js\";\n            "]))));
              }
            }
          },
          Program: function Program(path) {
            path.get("body").forEach(function (bodyPath) {
              var src = getRequireSource(bodyPath);
              if (usage && isPolyfillSource(src)) {
                console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
                if (!deprecated) bodyPath.remove();
              } else if (src === "@babel/polyfill") {
                if (deprecated) {
                  console.warn(BABEL_POLYFILL_DEPRECATION);
                } else if (regenerator) {
                  bodyPath.replaceWithMultiple(template.ast(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n                require(\"core-js\");\n                require(\"regenerator-runtime/runtime.js\");\n              "]))));
                } else {
                  bodyPath.replaceWith(template.ast(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n                require(\"core-js\");\n              "]))));
                }
              }
            });
          }
        }
      };
    };
    return babelPolyfill;
  }

  var regenerator;
  var hasRequiredRegenerator;
  function requireRegenerator() {
    if (hasRequiredRegenerator) return regenerator;
    hasRequiredRegenerator = 1;
    var _require$$ = requireUtils(),
      getImportSource = _require$$.getImportSource,
      getRequireSource = _require$$.getRequireSource;
    function isRegeneratorSource(source) {
      return source === "regenerator-runtime/runtime" || source === "regenerator-runtime/runtime.js";
    }
    regenerator = function regenerator() {
      var visitor = {
        ImportDeclaration: function ImportDeclaration(path) {
          if (isRegeneratorSource(getImportSource(path))) {
            this.regeneratorImportExcluded = true;
            path.remove();
          }
        },
        Program: function Program(path) {
          var _this = this;
          path.get("body").forEach(function (bodyPath) {
            if (isRegeneratorSource(getRequireSource(bodyPath))) {
              _this.regeneratorImportExcluded = true;
              bodyPath.remove();
            }
          });
        }
      };
      return {
        name: "preset-env/remove-regenerator",
        visitor: visitor,
        pre: function pre() {
          this.regeneratorImportExcluded = false;
        },
        post: function post() {
          if (this.opts.debug && this.regeneratorImportExcluded) {
            var filename = this.file.opts.filename;
            if (browser$1$1.env.BABEL_ENV === "test") {
              filename = filename.replace(/\\/g, "/");
            }
            console.log("\n[" + filename + "] Based on your targets, regenerator-runtime import excluded.");
          }
        }
      };
    };
    return regenerator;
  }

  (function (exports) {
    {
      Object.defineProperties(exports, {
        pluginCoreJS2: {
          get: function get() {
            return requireBabelPluginPolyfillCorejs2()["default"];
          }
        },
        pluginRegenerator: {
          get: function get() {
            return requireBabelPluginPolyfillRegenerator()["default"];
          }
        },
        legacyBabelPolyfillPlugin: {
          get: function get() {
            return requireBabelPolyfill();
          }
        },
        removeRegeneratorEntryPlugin: {
          get: function get() {
            return requireRegenerator();
          }
        },
        corejs2Polyfills: {
          get: function get() {
            return requireCorejs2BuiltIns();
          }
        }
      });
    }
  })(babel7Plugins);

  var v$1 = new OptionValidator("@babel/preset-env");
  var allPluginsList = Object.keys(plugins);
  var modulePlugins = ["transform-dynamic-import"].concat(_toConsumableArray(Object.keys(moduleTransformations).map(function (m) {
    return moduleTransformations[m];
  })));
  var getValidIncludesAndExcludes = function getValidIncludesAndExcludes(type, corejs) {
    var set = new Set(allPluginsList);
    if (type === "exclude") modulePlugins.map(set.add, set);
    if (corejs) {
      if (corejs === 2) {
        Object.keys(babel7Plugins.corejs2Polyfills).map(set.add, set);
        set.add("web.timers").add("web.immediate").add("web.dom.iterable");
      } else {
        Object.keys(require$$0$3).map(set.add, set);
      }
    }
    return Array.from(set);
  };
  function flatMap(array, fn) {
    return Array.prototype.concat.apply([], array.map(fn));
  }
  var normalizePluginName = function normalizePluginName(plugin) {
    return plugin.replace(/^(?:@babel\/|babel-)(?:plugin-)?/, "");
  };
  var expandIncludesAndExcludes = function expandIncludesAndExcludes(filterList, type, corejs) {
    if (filterList === void 0) {
      filterList = [];
    }
    if (filterList.length === 0) return [];
    var filterableItems = getValidIncludesAndExcludes(type, corejs);
    var invalidFilters = [];
    var selectedPlugins = flatMap(filterList, function (filter) {
      var re;
      if (typeof filter === "string") {
        try {
          re = new RegExp("^" + normalizePluginName(filter) + "$");
        } catch (_) {
          invalidFilters.push(filter);
          return [];
        }
      } else {
        re = filter;
      }
      var items = filterableItems.filter(function (item) {
        return re.test(item) || re.test(item.replace(/^transform-/, "proposal-"));
      });
      if (items.length === 0) invalidFilters.push(filter);
      return items;
    });
    v$1.invariant(invalidFilters.length === 0, "The plugins/built-ins '" + invalidFilters.join(", ") + "' passed to the '" + type + "' option are not\n    valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env");
    return selectedPlugins;
  };
  var checkDuplicateIncludeExcludes = function checkDuplicateIncludeExcludes(include, exclude) {
    if (include === void 0) {
      include = [];
    }
    if (exclude === void 0) {
      exclude = [];
    }
    var duplicates = include.filter(function (opt) {
      return exclude.includes(opt);
    });
    v$1.invariant(duplicates.length === 0, "The plugins/built-ins '" + duplicates.join(", ") + "' were found in both the \"include\" and\n    \"exclude\" options.");
  };
  var normalizeTargets = function normalizeTargets(targets) {
    if (typeof targets === "string" || Array.isArray(targets)) {
      return {
        browsers: targets
      };
    }
    return Object.assign({}, targets);
  };
  var validateModulesOption = function validateModulesOption(modulesOpt) {
    if (modulesOpt === void 0) {
      modulesOpt = ModulesOption.auto;
    }
    v$1.invariant(ModulesOption[modulesOpt.toString()] || modulesOpt === ModulesOption["false"], "The 'modules' option must be one of \n" + " - 'false' to indicate no module processing\n" + " - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'" + " - 'auto' (default) which will automatically select 'false' if the current\n" + "   process is known to support ES module syntax, or \"commonjs\" otherwise\n");
    return modulesOpt;
  };
  var validateUseBuiltInsOption = function validateUseBuiltInsOption(builtInsOpt) {
    if (builtInsOpt === void 0) {
      builtInsOpt = false;
    }
    v$1.invariant(UseBuiltInsOption[builtInsOpt.toString()] || builtInsOpt === UseBuiltInsOption["false"], "The 'useBuiltIns' option must be either\n    'false' (default) to indicate no polyfill,\n    '\"entry\"' to indicate replacing the entry polyfill, or\n    '\"usage\"' to import only used polyfills per file");
    return builtInsOpt;
  };
  function normalizeCoreJSOption(corejs, useBuiltIns) {
    var proposals = false;
    var rawVersion;
    if (useBuiltIns && corejs === undefined) {
      {
        rawVersion = 2;
        console.warn("\nWARNING (@babel/preset-env): We noticed you're using the `useBuiltIns` option without declaring a " + "core-js version. Currently, we assume version 2.x when no version " + "is passed. Since this default version will likely change in future " + "versions of Babel, we recommend explicitly setting the core-js version " + "you are using via the `corejs` option.\n" + "\nYou should also be sure that the version you pass to the `corejs` " + "option matches the version specified in your `package.json`'s " + "`dependencies` section. If it doesn't, you need to run one of the " + "following commands:\n\n" + "  npm install --save core-js@2    npm install --save core-js@3\n" + "  yarn add core-js@2              yarn add core-js@3\n\n" + "More info about useBuiltIns: https://babeljs.io/docs/en/babel-preset-env#usebuiltins\n" + "More info about core-js: https://babeljs.io/docs/en/babel-preset-env#corejs");
      }
    } else if (typeof corejs === "object" && corejs !== null) {
      rawVersion = corejs.version;
      proposals = Boolean(corejs.proposals);
    } else {
      rawVersion = corejs;
    }
    var version = rawVersion ? semver$1.coerce(String(rawVersion)) : false;
    if (version) {
      if (useBuiltIns) {
        {
          if (version.major < 2 || version.major > 3) {
            throw new RangeError("Invalid Option: The version passed to `corejs` is invalid. Currently, " + "only core-js@2 and core-js@3 are supported.");
          }
        }
      } else {
        console.warn("\nWARNING (@babel/preset-env): The `corejs` option only has an effect when the `useBuiltIns` option is not `false`\n");
      }
    }
    return {
      version: version,
      proposals: proposals
    };
  }
  function normalizeOptions$3(opts) {
    v$1.validateTopLevelOptions(opts, TopLevelOptions);
    var useBuiltIns = validateUseBuiltInsOption(opts.useBuiltIns);
    var corejs = normalizeCoreJSOption(opts.corejs, useBuiltIns);
    var include = expandIncludesAndExcludes(opts.include, TopLevelOptions.include, !!corejs.version && corejs.version.major);
    var exclude = expandIncludesAndExcludes(opts.exclude, TopLevelOptions.exclude, !!corejs.version && corejs.version.major);
    checkDuplicateIncludeExcludes(include, exclude);
    {
      v$1.validateBooleanOption("loose", opts.loose);
      v$1.validateBooleanOption("spec", opts.spec);
    }
    return {
      bugfixes: v$1.validateBooleanOption(TopLevelOptions.bugfixes, opts.bugfixes, false),
      configPath: v$1.validateStringOption(TopLevelOptions.configPath, opts.configPath, browser$1$1.cwd()),
      corejs: corejs,
      debug: v$1.validateBooleanOption(TopLevelOptions.debug, opts.debug, false),
      include: include,
      exclude: exclude,
      forceAllTransforms: v$1.validateBooleanOption(TopLevelOptions.forceAllTransforms, opts.forceAllTransforms, false),
      ignoreBrowserslistConfig: v$1.validateBooleanOption(TopLevelOptions.ignoreBrowserslistConfig, opts.ignoreBrowserslistConfig, false),
      modules: validateModulesOption(opts.modules),
      shippedProposals: v$1.validateBooleanOption(TopLevelOptions.shippedProposals, opts.shippedProposals, false),
      targets: normalizeTargets(opts.targets),
      useBuiltIns: useBuiltIns,
      browserslistEnv: v$1.validateStringOption(TopLevelOptions.browserslistEnv, opts.browserslistEnv)
    };
  }

  var proposalPlugins = new Set();
  var proposalSyntaxPlugins = ["syntax-import-assertions", "syntax-import-attributes"];
  var pluginSyntaxObject = {
    "transform-async-generator-functions": "syntax-async-generators",
    "transform-class-properties": "syntax-class-properties",
    "transform-class-static-block": "syntax-class-static-block",
    "transform-export-namespace-from": "syntax-export-namespace-from",
    "transform-json-strings": "syntax-json-strings",
    "transform-nullish-coalescing-operator": "syntax-nullish-coalescing-operator",
    "transform-numeric-separator": "syntax-numeric-separator",
    "transform-object-rest-spread": "syntax-object-rest-spread",
    "transform-optional-catch-binding": "syntax-optional-catch-binding",
    "transform-optional-chaining": "syntax-optional-chaining",
    "transform-private-methods": "syntax-class-properties",
    "transform-private-property-in-object": "syntax-private-property-in-object",
    "transform-unicode-property-regex": null
  };
  var pluginSyntaxEntries = Object.keys(pluginSyntaxObject).map(function (key) {
    return [key, pluginSyntaxObject[key]];
  });
  var pluginSyntaxMap = new Map(pluginSyntaxEntries);

  var data = require$$0$3;

  var getModulesListForTargetVersion = getModulesListForTargetVersion$2;

  var entries = require$$0$2;

  var _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
  var _templateObject, _templateObject2, _templateObject3;
  var _ref2$1 = _babel,
    t$1$1 = _ref2$1.types,
    template = _ref2$1.template;
  function intersection(a, b) {
    var result = new Set();
    a.forEach(function (v) {
      return b.has(v) && result.add(v);
    });
    return result;
  }
  function has$1(object, key) {
    return Object.prototype.hasOwnProperty.call(object, key);
  }
  function getType(target) {
    return Object.prototype.toString.call(target).slice(8, -1);
  }
  function resolveId(path) {
    if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, true)) {
      return path.node.name;
    }
    if (path.isPure()) {
      var _path$evaluate = path.evaluate(),
        deopt = _path$evaluate.deopt;
      if (deopt && deopt.isIdentifier()) {
        return deopt.node.name;
      }
    }
  }
  function resolveKey(path, computed) {
    if (computed === void 0) {
      computed = false;
    }
    var scope = path.scope;
    if (path.isStringLiteral()) return path.node.value;
    var isIdentifier = path.isIdentifier();
    if (isIdentifier && !(computed || path.parent.computed)) {
      return path.node.name;
    }
    if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
      name: "Symbol"
    }) && !scope.hasBinding("Symbol", true)) {
      var sym = resolveKey(path.get("property"), path.node.computed);
      if (sym) return "Symbol." + sym;
    }
    if (isIdentifier ? scope.hasBinding(path.node.name, true) : path.isPure()) {
      var _path$evaluate2 = path.evaluate(),
        value = _path$evaluate2.value;
      if (typeof value === "string") return value;
    }
  }
  function resolveSource(obj) {
    if (obj.isMemberExpression() && obj.get("property").isIdentifier({
      name: "prototype"
    })) {
      var _id = resolveId(obj.get("object"));
      if (_id) {
        return {
          id: _id,
          placement: "prototype"
        };
      }
      return {
        id: null,
        placement: null
      };
    }
    var id = resolveId(obj);
    if (id) {
      return {
        id: id,
        placement: "static"
      };
    }
    if (obj.isRegExpLiteral()) {
      return {
        id: "RegExp",
        placement: "prototype"
      };
    } else if (obj.isFunction()) {
      return {
        id: "Function",
        placement: "prototype"
      };
    } else if (obj.isPure()) {
      var _obj$evaluate = obj.evaluate(),
        value = _obj$evaluate.value;
      if (value !== undefined) {
        return {
          id: getType(value),
          placement: "prototype"
        };
      }
    }
    return {
      id: null,
      placement: null
    };
  }
  function getImportSource(_ref3) {
    var node = _ref3.node;
    if (node.specifiers.length === 0) return node.source.value;
  }
  function getRequireSource(_ref4) {
    var node = _ref4.node;
    if (!t$1$1.isExpressionStatement(node)) return;
    var expression = node.expression;
    if (t$1$1.isCallExpression(expression) && t$1$1.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t$1$1.isStringLiteral(expression.arguments[0])) {
      return expression.arguments[0].value;
    }
  }
  function hoist(node) {
    node._blockHoist = 3;
    return node;
  }
  function createUtilsGetter(cache) {
    return function (path) {
      var prog = path.findParent(function (p) {
        return p.isProgram();
      });
      return {
        injectGlobalImport: function injectGlobalImport(url, moduleName) {
          cache.storeAnonymous(prog, url, moduleName, function (isScript, source) {
            return isScript ? template.statement.ast(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["require(", ")"])), source) : t$1$1.importDeclaration([], source);
          });
        },
        injectNamedImport: function injectNamedImport(url, name, hint, moduleName) {
          if (hint === void 0) {
            hint = name;
          }
          return cache.storeNamed(prog, url, name, moduleName, function (isScript, source, name) {
            var id = prog.scope.generateUidIdentifier(hint);
            return {
              node: isScript ? hoist(template.statement.ast(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n                  var ", " = require(", ").", "\n                "])), id, source, name)) : t$1$1.importDeclaration([t$1$1.importSpecifier(id, name)], source),
              name: id.name
            };
          });
        },
        injectDefaultImport: function injectDefaultImport(url, hint, moduleName) {
          if (hint === void 0) {
            hint = url;
          }
          return cache.storeNamed(prog, url, "default", moduleName, function (isScript, source) {
            var id = prog.scope.generateUidIdentifier(hint);
            return {
              node: isScript ? hoist(template.statement.ast(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["var ", " = require(", ")"])), id, source)) : t$1$1.importDeclaration([t$1$1.importDefaultSpecifier(id)], source),
              name: id.name
            };
          });
        }
      };
    };
  }
  var _ref5 = _babel,
    t$3 = _ref5.types;
  var ImportsCachedInjector = function () {
    function ImportsCachedInjector(resolver, getPreferredIndex) {
      this._imports = new WeakMap();
      this._anonymousImports = new WeakMap();
      this._lastImports = new WeakMap();
      this._resolver = resolver;
      this._getPreferredIndex = getPreferredIndex;
    }
    var _proto = ImportsCachedInjector.prototype;
    _proto.storeAnonymous = function storeAnonymous(programPath, url, moduleName, getVal) {
      var key = this._normalizeKey(programPath, url);
      var imports = this._ensure(this._anonymousImports, programPath, Set);
      if (imports.has(key)) return;
      var node = getVal(programPath.node.sourceType === "script", t$3.stringLiteral(this._resolver(url)));
      imports.add(key);
      this._injectImport(programPath, node, moduleName);
    };
    _proto.storeNamed = function storeNamed(programPath, url, name, moduleName, getVal) {
      var key = this._normalizeKey(programPath, url, name);
      var imports = this._ensure(this._imports, programPath, Map);
      if (!imports.has(key)) {
        var _getVal = getVal(programPath.node.sourceType === "script", t$3.stringLiteral(this._resolver(url)), t$3.identifier(name)),
          node = _getVal.node,
          id = _getVal.name;
        imports.set(key, id);
        this._injectImport(programPath, node, moduleName);
      }
      return t$3.identifier(imports.get(key));
    };
    _proto._injectImport = function _injectImport(programPath, node, moduleName) {
      var _this$_lastImports$ge;
      var newIndex = this._getPreferredIndex(moduleName);
      var lastImports = (_this$_lastImports$ge = this._lastImports.get(programPath)) != null ? _this$_lastImports$ge : [];
      var isPathStillValid = function isPathStillValid(path) {
        return path.node && path.parent === programPath.node && path.container === programPath.node.body;
      };
      var last;
      if (newIndex === Infinity) {
        if (lastImports.length > 0) {
          last = lastImports[lastImports.length - 1].path;
          if (!isPathStillValid(last)) last = undefined;
        }
      } else {
        for (var _iterator = _createForOfIteratorHelperLoose(lastImports.entries()), _step; !(_step = _iterator()).done;) {
          var _step$value = _slicedToArray(_step.value, 2),
            i = _step$value[0],
            data = _step$value[1];
          var path = data.path,
            index = data.index;
          if (isPathStillValid(path)) {
            if (newIndex < index) {
              var _path$insertBefore = path.insertBefore(node),
                _path$insertBefore2 = _slicedToArray(_path$insertBefore, 1),
                newPath = _path$insertBefore2[0];
              lastImports.splice(i, 0, {
                path: newPath,
                index: newIndex
              });
              return;
            }
            last = path;
          }
        }
      }
      if (last) {
        var _last$insertAfter = last.insertAfter(node),
          _last$insertAfter2 = _slicedToArray(_last$insertAfter, 1),
          _newPath = _last$insertAfter2[0];
        lastImports.push({
          path: _newPath,
          index: newIndex
        });
      } else {
        var _programPath$unshiftC = programPath.unshiftContainer("body", node),
          _programPath$unshiftC2 = _slicedToArray(_programPath$unshiftC, 1),
          _newPath2 = _programPath$unshiftC2[0];
        this._lastImports.set(programPath, [{
          path: _newPath2,
          index: newIndex
        }]);
      }
    };
    _proto._ensure = function _ensure(map, programPath, Collection) {
      var collection = map.get(programPath);
      if (!collection) {
        collection = new Collection();
        map.set(programPath, collection);
      }
      return collection;
    };
    _proto._normalizeKey = function _normalizeKey(programPath, url, name) {
      if (name === void 0) {
        name = "";
      }
      var sourceType = programPath.node.sourceType;
      return (name && sourceType) + "::" + url + "::" + name;
    };
    return _createClass(ImportsCachedInjector);
  }();
  var presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
  function stringifyTargetsMultiline(targets) {
    return JSON.stringify(prettifyTargets(targets), null, 2);
  }
  function patternToRegExp(pattern) {
    if (pattern instanceof RegExp) return pattern;
    try {
      return new RegExp("^" + pattern + "$");
    } catch (_unused) {
      return null;
    }
  }
  function buildUnusedError(label, unused) {
    if (!unused.length) return "";
    return "  - The following \"" + label + "\" patterns didn't match any polyfill:\n" + unused.map(function (original) {
      return "    " + String(original) + "\n";
    }).join("");
  }
  function buldDuplicatesError(duplicates) {
    if (!duplicates.size) return "";
    return "  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\n" + Array.from(duplicates, function (name) {
      return "    " + name + "\n";
    }).join("");
  }
  function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
    var current;
    var filter = function filter(pattern) {
      var regexp = patternToRegExp(pattern);
      if (!regexp) return false;
      var matched = false;
      for (var _iterator2 = _createForOfIteratorHelperLoose(polyfills.keys()), _step2; !(_step2 = _iterator2()).done;) {
        var polyfill = _step2.value;
        if (regexp.test(polyfill)) {
          matched = true;
          current.add(polyfill);
        }
      }
      return !matched;
    };
    var include = current = new Set();
    var unusedInclude = Array.from(includePatterns).filter(filter);
    var exclude = current = new Set();
    var unusedExclude = Array.from(excludePatterns).filter(filter);
    var duplicates = intersection(include, exclude);
    if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
      throw new Error("Error while validating the \"" + provider + "\" provider options:\n" + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
    }
    return {
      include: include,
      exclude: exclude
    };
  }
  function applyMissingDependenciesDefaults(options, babelApi) {
    var _options$missingDepen = options.missingDependencies,
      missingDependencies = _options$missingDepen === void 0 ? {} : _options$missingDepen;
    if (missingDependencies === false) return false;
    var caller = babelApi.caller(function (caller) {
      return caller == null ? void 0 : caller.name;
    });
    var _missingDependencies$ = missingDependencies.log,
      log = _missingDependencies$ === void 0 ? "deferred" : _missingDependencies$,
      _missingDependencies$2 = missingDependencies.inject,
      inject = _missingDependencies$2 === void 0 ? caller === "rollup-plugin-babel" ? "throw" : "import" : _missingDependencies$2,
      _missingDependencies$3 = missingDependencies.all,
      all = _missingDependencies$3 === void 0 ? false : _missingDependencies$3;
    return {
      log: log,
      inject: inject,
      all: all
    };
  }
  function isRemoved(path) {
    if (path.removed) return true;
    if (!path.parentPath) return false;
    if (path.listKey) {
      var _path$parentPath$node;
      if (!((_path$parentPath$node = path.parentPath.node) != null && (_path$parentPath$node = _path$parentPath$node[path.listKey]) != null && _path$parentPath$node.includes(path.node))) return true;
    } else {
      if (path.parentPath.node[path.key] !== path.node) return true;
    }
    return isRemoved(path.parentPath);
  }
  var usage = function usage(callProvider) {
    function property(object, key, placement, path) {
      return callProvider({
        kind: "property",
        object: object,
        key: key,
        placement: placement
      }, path);
    }
    function handleReferencedIdentifier(path) {
      var name = path.node.name,
        scope = path.scope;
      if (scope.getBindingIdentifier(name)) return;
      callProvider({
        kind: "global",
        name: name
      }, path);
    }
    function analyzeMemberExpression(path) {
      var key = resolveKey(path.get("property"), path.node.computed);
      return {
        key: key,
        handleAsMemberExpression: !!key && key !== "prototype"
      };
    }
    return {
      ReferencedIdentifier: function ReferencedIdentifier(path) {
        var parentPath = path.parentPath;
        if (parentPath.isMemberExpression({
          object: path.node
        }) && analyzeMemberExpression(parentPath).handleAsMemberExpression) {
          return;
        }
        handleReferencedIdentifier(path);
      },
      MemberExpression: function MemberExpression(path) {
        var _analyzeMemberExpress = analyzeMemberExpression(path),
          key = _analyzeMemberExpress.key,
          handleAsMemberExpression = _analyzeMemberExpress.handleAsMemberExpression;
        if (!handleAsMemberExpression) return;
        var object = path.get("object");
        var objectIsGlobalIdentifier = object.isIdentifier();
        if (objectIsGlobalIdentifier) {
          var binding = object.scope.getBinding(object.node.name);
          if (binding) {
            if (binding.path.isImportNamespaceSpecifier()) return;
            objectIsGlobalIdentifier = false;
          }
        }
        var source = resolveSource(object);
        var skipObject = property(source.id, key, source.placement, path);
        skipObject || (skipObject = !objectIsGlobalIdentifier || path.shouldSkip || object.shouldSkip || isRemoved(object));
        if (!skipObject) handleReferencedIdentifier(object);
      },
      ObjectPattern: function ObjectPattern(path) {
        var parentPath = path.parentPath,
          parent = path.parent;
        var obj;
        if (parentPath.isVariableDeclarator()) {
          obj = parentPath.get("init");
        } else if (parentPath.isAssignmentExpression()) {
          obj = parentPath.get("right");
        } else if (parentPath.isFunction()) {
          var grand = parentPath.parentPath;
          if (grand.isCallExpression() || grand.isNewExpression()) {
            if (grand.node.callee === parent) {
              obj = grand.get("arguments")[path.key];
            }
          }
        }
        var id = null;
        var placement = null;
        if (obj) {
          var _resolveSource = resolveSource(obj);
          id = _resolveSource.id;
          placement = _resolveSource.placement;
        }
        for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("properties")), _step3; !(_step3 = _iterator3()).done;) {
          var prop = _step3.value;
          if (prop.isObjectProperty()) {
            var key = resolveKey(prop.get("key"));
            if (key) property(id, key, placement, prop);
          }
        }
      },
      BinaryExpression: function BinaryExpression(path) {
        if (path.node.operator !== "in") return;
        var source = resolveSource(path.get("right"));
        var key = resolveKey(path.get("left"), true);
        if (!key) return;
        callProvider({
          kind: "in",
          object: source.id,
          key: key,
          placement: source.placement
        }, path);
      }
    };
  };
  var entry = function entry(callProvider) {
    return {
      ImportDeclaration: function ImportDeclaration(path) {
        var source = getImportSource(path);
        if (!source) return;
        callProvider({
          kind: "import",
          source: source
        }, path);
      },
      Program: function Program(path) {
        path.get("body").forEach(function (bodyPath) {
          var source = getRequireSource(bodyPath);
          if (!source) return;
          callProvider({
            kind: "import",
            source: source
          }, bodyPath);
        });
      }
    };
  };
  function resolve(dirname, moduleName, absoluteImports) {
    if (absoluteImports === false) return moduleName;
    throw new Error("\"absoluteImports\" is not supported in bundles prepared for the browser.");
  }
  function has(basedir, name) {
    return true;
  }
  function logMissing(missingDeps) {}
  function laterLogMissing(missingDeps) {}
  var PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
  function createMetaResolver(polyfills) {
    var staticP = polyfills["static"],
      instanceP = polyfills.instance,
      globalP = polyfills.global;
    return function (meta) {
      if (meta.kind === "global" && globalP && has$1(globalP, meta.name)) {
        return {
          kind: "global",
          desc: globalP[meta.name],
          name: meta.name
        };
      }
      if (meta.kind === "property" || meta.kind === "in") {
        var placement = meta.placement,
          object = meta.object,
          key = meta.key;
        if (object && placement === "static") {
          if (globalP && PossibleGlobalObjects.has(object) && has$1(globalP, key)) {
            return {
              kind: "global",
              desc: globalP[key],
              name: key
            };
          }
          if (staticP && has$1(staticP, object) && has$1(staticP[object], key)) {
            return {
              kind: "static",
              desc: staticP[object][key],
              name: object + "$" + key
            };
          }
        }
        if (instanceP && has$1(instanceP, key)) {
          return {
            kind: "instance",
            desc: instanceP[key],
            name: "" + key
          };
        }
      }
    };
  }
  var getTargets = getTargets$1["default"] || getTargets$1;
  function resolveOptions(options, babelApi) {
    var method = options.method,
      targetsOption = options.targets,
      ignoreBrowserslistConfig = options.ignoreBrowserslistConfig,
      configPath = options.configPath,
      debug = options.debug,
      shouldInjectPolyfill = options.shouldInjectPolyfill,
      absoluteImports = options.absoluteImports,
      providerOptions = _objectWithoutProperties(options, _excluded);
    if (isEmpty(options)) {
      throw new Error("This plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md");
    }
    var methodName;
    if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
      throw new Error(".method must be a string");
    } else {
      throw new Error(".method must be one of \"entry-global\", \"usage-global\"" + (" or \"usage-pure\" (received " + JSON.stringify(method) + ")"));
    }
    if (typeof shouldInjectPolyfill === "function") {
      if (options.include || options.exclude) {
        throw new Error(".include and .exclude are not supported when using the" + " .shouldInjectPolyfill function.");
      }
    } else if (shouldInjectPolyfill != null) {
      throw new Error(".shouldInjectPolyfill must be a function, or undefined" + (" (received " + JSON.stringify(shouldInjectPolyfill) + ")"));
    }
    if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
      throw new Error(".absoluteImports must be a boolean, a string, or undefined" + (" (received " + JSON.stringify(absoluteImports) + ")"));
    }
    var targets;
    if (targetsOption || configPath || ignoreBrowserslistConfig) {
      var targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
        browsers: targetsOption
      } : targetsOption;
      targets = getTargets(targetsObj, {
        ignoreBrowserslistConfig: ignoreBrowserslistConfig,
        configPath: configPath
      });
    } else {
      targets = babelApi.targets();
    }
    return {
      method: method,
      methodName: methodName,
      targets: targets,
      absoluteImports: absoluteImports != null ? absoluteImports : false,
      shouldInjectPolyfill: shouldInjectPolyfill,
      debug: !!debug,
      providerOptions: providerOptions
    };
  }
  function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
    var _resolveOptions = resolveOptions(options, babelApi),
      method = _resolveOptions.method,
      methodName = _resolveOptions.methodName,
      targets = _resolveOptions.targets,
      _debug = _resolveOptions.debug,
      _shouldInjectPolyfill = _resolveOptions.shouldInjectPolyfill,
      providerOptions = _resolveOptions.providerOptions,
      absoluteImports = _resolveOptions.absoluteImports;
    var include, exclude;
    var polyfillsSupport;
    var polyfillsNames;
    var filterPolyfills;
    var getUtils = createUtilsGetter(new ImportsCachedInjector(function (moduleName) {
      return resolve(dirname, moduleName, absoluteImports);
    }, function (name) {
      var _polyfillsNames$get, _polyfillsNames;
      return (_polyfillsNames$get = (_polyfillsNames = polyfillsNames) == null ? void 0 : _polyfillsNames.get(name)) != null ? _polyfillsNames$get : Infinity;
    }));
    var depsCache = new Map();
    var api = {
      babel: babelApi,
      getUtils: getUtils,
      method: options.method,
      targets: targets,
      createMetaResolver: createMetaResolver,
      shouldInjectPolyfill: function shouldInjectPolyfill(name) {
        if (polyfillsNames === undefined) {
          throw new Error("Internal error in the " + factory.name + " provider: " + "shouldInjectPolyfill() can't be called during initialization.");
        }
        if (!polyfillsNames.has(name)) {
          console.warn("Internal error in the " + providerName + " provider: " + ("unknown polyfill \"" + name + "\"."));
        }
        if (filterPolyfills && !filterPolyfills(name)) return false;
        var shouldInject = isRequired(name, targets, {
          compatData: polyfillsSupport,
          includes: include,
          excludes: exclude
        });
        if (_shouldInjectPolyfill) {
          shouldInject = _shouldInjectPolyfill(name, shouldInject);
          if (typeof shouldInject !== "boolean") {
            throw new Error(".shouldInjectPolyfill must return a boolean.");
          }
        }
        return shouldInject;
      },
      debug: function debug(name) {
        var _debugLog, _debugLog$polyfillsSu;
        debugLog().found = true;
        if (!_debug || !name) return;
        if (debugLog().polyfills.has(providerName)) return;
        debugLog().polyfills.add(name);
        (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
      },
      assertDependency: function assertDependency(name, version) {
        if (version === void 0) {
          version = "*";
        }
        if (missingDependencies === false) return;
        if (absoluteImports) {
          return;
        }
        var dep = version === "*" ? name : name + "@^" + version;
        var found = missingDependencies.all ? false : mapGetOr(depsCache, name + " :: " + dirname, function () {
          return has();
        });
        if (!found) {
          debugLog().missingDeps.add(dep);
        }
      }
    };
    var provider = factory(api, providerOptions, dirname);
    var providerName = provider.name || factory.name;
    if (typeof provider[methodName] !== "function") {
      throw new Error("The \"" + providerName + "\" provider doesn't support the \"" + method + "\" polyfilling method.");
    }
    if (Array.isArray(provider.polyfills)) {
      polyfillsNames = new Map(provider.polyfills.map(function (name, index) {
        return [name, index];
      }));
      filterPolyfills = provider.filterPolyfills;
    } else if (provider.polyfills) {
      polyfillsNames = new Map(Object.keys(provider.polyfills).map(function (name, index) {
        return [name, index];
      }));
      polyfillsSupport = provider.polyfills;
      filterPolyfills = provider.filterPolyfills;
    } else {
      polyfillsNames = new Map();
    }
    var _validateIncludeExclu = validateIncludeExclude(providerName, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []);
    include = _validateIncludeExclu.include;
    exclude = _validateIncludeExclu.exclude;
    var callProvider;
    if (methodName === "usageGlobal") {
      callProvider = function callProvider(payload, path) {
        var _ref;
        var utils = getUtils(path);
        return (_ref = provider[methodName](payload, utils, path)) != null ? _ref : false;
      };
    } else {
      callProvider = function callProvider(payload, path) {
        var utils = getUtils(path);
        provider[methodName](payload, utils, path);
        return false;
      };
    }
    return {
      debug: _debug,
      method: method,
      targets: targets,
      provider: provider,
      providerName: providerName,
      callProvider: callProvider
    };
  }
  function definePolyfillProvider(factory) {
    return declare(function (babelApi, options, dirname) {
      babelApi.assertVersion("^7.0.0 || ^8.0.0-alpha.0");
      var traverse = babelApi.traverse;
      var debugLog;
      var missingDependencies = applyMissingDependenciesDefaults(options, babelApi);
      var _instantiateProvider = instantiateProvider(factory, options, missingDependencies, dirname, function () {
          return debugLog;
        }, babelApi),
        debug = _instantiateProvider.debug,
        method = _instantiateProvider.method,
        targets = _instantiateProvider.targets,
        provider = _instantiateProvider.provider,
        providerName = _instantiateProvider.providerName,
        callProvider = _instantiateProvider.callProvider;
      var createVisitor = method === "entry-global" ? entry : usage;
      var visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
      if (debug && debug !== presetEnvSilentDebugHeader) {
        console.log(providerName + ": `DEBUG` option");
        console.log("\nUsing targets: " + stringifyTargetsMultiline(targets));
        console.log("\nUsing polyfills with `" + method + "` method:");
      }
      var runtimeName = provider.runtimeName;
      return {
        name: "inject-polyfills",
        visitor: visitor,
        pre: function pre(file) {
          var _provider$pre;
          if (runtimeName) {
            if (file.get("runtimeHelpersModuleName") && file.get("runtimeHelpersModuleName") !== runtimeName) {
              console.warn("Two different polyfill providers" + (" (" + file.get("runtimeHelpersModuleProvider")) + (" and " + providerName + ") are trying to define two") + " conflicting @babel/runtime alternatives:" + (" " + file.get("runtimeHelpersModuleName") + " and " + runtimeName + ".") + " The second one will be ignored.");
            } else {
              file.set("runtimeHelpersModuleName", runtimeName);
              file.set("runtimeHelpersModuleProvider", providerName);
            }
          }
          debugLog = {
            polyfills: new Set(),
            polyfillsSupport: undefined,
            found: false,
            providers: new Set(),
            missingDeps: new Set()
          };
          (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
        },
        post: function post() {
          var _provider$post;
          (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
          if (missingDependencies !== false) {
            if (missingDependencies.log === "per-file") {
              logMissing(debugLog.missingDeps);
            } else {
              laterLogMissing(debugLog.missingDeps);
            }
          }
          if (!debug) return;
          if (this.filename) console.log("\n[" + this.filename + "]");
          if (debugLog.polyfills.size === 0) {
            console.log(method === "entry-global" ? debugLog.found ? "Based on your targets, the " + providerName + " polyfill did not add any polyfill." : "The entry point for the " + providerName + " polyfill has not been found." : "Based on your code and targets, the " + providerName + " polyfill did not add any polyfill.");
            return;
          }
          if (method === "entry-global") {
            console.log("The " + providerName + " polyfill entry has been replaced with " + "the following polyfills:");
          } else {
            console.log("The " + providerName + " polyfill added the following polyfills:");
          }
          for (var _iterator4 = _createForOfIteratorHelperLoose(debugLog.polyfills), _step4; !(_step4 = _iterator4()).done;) {
            var name = _step4.value;
            var _debugLog$polyfillsSu2;
            if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
              var filteredTargets = getInclusionReasons(name, targets, debugLog.polyfillsSupport);
              var formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
              console.log("  " + name + " " + formattedTargets);
            } else {
              console.log("  " + name);
            }
          }
        }
      };
    });
  }
  function mapGetOr(map, key, getDefault) {
    var val = map.get(key);
    if (val === undefined) {
      val = getDefault();
      map.set(key, val);
    }
    return val;
  }
  function isEmpty(obj) {
    return Object.keys(obj).length === 0;
  }

  var _InstanceProperties;
  var corejs3ShippedProposalsList = new Set(["esnext.suppressed-error.constructor", "esnext.array.from-async", "esnext.array.group", "esnext.array.group-to-map", "esnext.data-view.get-float16", "esnext.data-view.set-float16", "esnext.iterator.constructor", "esnext.iterator.drop", "esnext.iterator.every", "esnext.iterator.filter", "esnext.iterator.find", "esnext.iterator.flat-map", "esnext.iterator.for-each", "esnext.iterator.from", "esnext.iterator.map", "esnext.iterator.reduce", "esnext.iterator.some", "esnext.iterator.take", "esnext.iterator.to-array", "esnext.json.is-raw-json", "esnext.json.parse", "esnext.json.raw-json", "esnext.math.f16round", "esnext.promise.try", "esnext.symbol.async-dispose", "esnext.symbol.dispose", "esnext.symbol.metadata"]);
  var polyfillsOrder = {};
  Object.keys(data).forEach(function (name, index) {
    polyfillsOrder[name] = index;
  });
  var define = function define(pure, global, name, exclude) {
    if (name === void 0) {
      name = global[0];
    }
    return {
      name: name,
      pure: pure,
      global: global.sort(function (a, b) {
        return polyfillsOrder[a] - polyfillsOrder[b];
      }),
      exclude: exclude
    };
  };
  var typed = function typed() {
    for (var _len = arguments.length, modules = new Array(_len), _key = 0; _key < _len; _key++) {
      modules[_key] = arguments[_key];
    }
    return define(null, [].concat(modules, TypedArrayDependencies));
  };
  var ArrayNatureIterators = ["es.array.iterator", "web.dom-collections.iterator"];
  var CommonIterators = ["es.string.iterator"].concat(ArrayNatureIterators);
  var ArrayNatureIteratorsWithTag = ["es.object.to-string"].concat(ArrayNatureIterators);
  var CommonIteratorsWithTag = ["es.object.to-string"].concat(_toConsumableArray(CommonIterators));
  var ErrorDependencies = ["es.error.cause", "es.error.to-string"];
  var SuppressedErrorDependencies = ["esnext.suppressed-error.constructor"].concat(ErrorDependencies);
  var ArrayBufferDependencies = ["es.array-buffer.constructor", "es.array-buffer.slice", "es.data-view", "es.array-buffer.detached", "es.array-buffer.transfer", "es.array-buffer.transfer-to-fixed-length", "es.object.to-string"];
  var TypedArrayDependencies = ["es.typed-array.at", "es.typed-array.copy-within", "es.typed-array.every", "es.typed-array.fill", "es.typed-array.filter", "es.typed-array.find", "es.typed-array.find-index", "es.typed-array.find-last", "es.typed-array.find-last-index", "es.typed-array.for-each", "es.typed-array.includes", "es.typed-array.index-of", "es.typed-array.iterator", "es.typed-array.join", "es.typed-array.last-index-of", "es.typed-array.map", "es.typed-array.reduce", "es.typed-array.reduce-right", "es.typed-array.reverse", "es.typed-array.set", "es.typed-array.slice", "es.typed-array.some", "es.typed-array.sort", "es.typed-array.subarray", "es.typed-array.to-locale-string", "es.typed-array.to-reversed", "es.typed-array.to-sorted", "es.typed-array.to-string", "es.typed-array.with", "es.object.to-string", "es.array.iterator", "esnext.typed-array.filter-reject", "esnext.typed-array.group-by", "esnext.typed-array.to-spliced", "esnext.typed-array.unique-by"].concat(ArrayBufferDependencies);
  var PromiseDependencies = ["es.promise", "es.object.to-string"];
  var PromiseDependenciesWithIterators = [].concat(PromiseDependencies, _toConsumableArray(CommonIterators));
  var SymbolDependencies = ["es.symbol", "es.symbol.description", "es.object.to-string"];
  var MapDependencies = ["es.map", "esnext.map.delete-all", "esnext.map.emplace", "esnext.map.every", "esnext.map.filter", "esnext.map.find", "esnext.map.find-key", "esnext.map.includes", "esnext.map.key-of", "esnext.map.map-keys", "esnext.map.map-values", "esnext.map.merge", "esnext.map.reduce", "esnext.map.some", "esnext.map.update"].concat(_toConsumableArray(CommonIteratorsWithTag));
  var SetDependencies = ["es.set", "es.set.difference.v2", "es.set.intersection.v2", "es.set.is-disjoint-from.v2", "es.set.is-subset-of.v2", "es.set.is-superset-of.v2", "es.set.symmetric-difference.v2", "es.set.union.v2", "esnext.set.add-all", "esnext.set.delete-all", "esnext.set.difference", "esnext.set.every", "esnext.set.filter", "esnext.set.find", "esnext.set.intersection", "esnext.set.is-disjoint-from", "esnext.set.is-subset-of", "esnext.set.is-superset-of", "esnext.set.join", "esnext.set.map", "esnext.set.reduce", "esnext.set.some", "esnext.set.symmetric-difference", "esnext.set.union"].concat(_toConsumableArray(CommonIteratorsWithTag));
  var WeakMapDependencies = ["es.weak-map", "esnext.weak-map.delete-all", "esnext.weak-map.emplace"].concat(_toConsumableArray(CommonIteratorsWithTag));
  var WeakSetDependencies = ["es.weak-set", "esnext.weak-set.add-all", "esnext.weak-set.delete-all"].concat(_toConsumableArray(CommonIteratorsWithTag));
  var DOMExceptionDependencies = ["web.dom-exception.constructor", "web.dom-exception.stack", "web.dom-exception.to-string-tag", "es.error.to-string"];
  var URLSearchParamsDependencies = ["web.url-search-params", "web.url-search-params.delete", "web.url-search-params.has", "web.url-search-params.size"].concat(_toConsumableArray(CommonIteratorsWithTag));
  var AsyncIteratorDependencies = ["esnext.async-iterator.constructor"].concat(PromiseDependencies);
  var AsyncIteratorProblemMethods = ["esnext.async-iterator.every", "esnext.async-iterator.filter", "esnext.async-iterator.find", "esnext.async-iterator.flat-map", "esnext.async-iterator.for-each", "esnext.async-iterator.map", "esnext.async-iterator.reduce", "esnext.async-iterator.some"];
  var IteratorDependencies = ["esnext.iterator.constructor", "es.object.to-string"];
  var DecoratorMetadataDependencies = ["esnext.symbol.metadata", "esnext.function.metadata"];
  var TypedArrayStaticMethods = function TypedArrayStaticMethods(base) {
    return {
      from: define(null, ["es.typed-array.from", base].concat(TypedArrayDependencies)),
      fromAsync: define(null, ["esnext.typed-array.from-async", base].concat(_toConsumableArray(PromiseDependenciesWithIterators), TypedArrayDependencies)),
      of: define(null, ["es.typed-array.of", base].concat(TypedArrayDependencies))
    };
  };
  var DataViewDependencies = ["es.data-view"].concat(ArrayBufferDependencies);
  var BuiltIns = {
    AsyncDisposableStack: define("async-disposable-stack/index", ["esnext.async-disposable-stack.constructor", "es.object.to-string", "esnext.async-iterator.async-dispose", "esnext.iterator.dispose"].concat(PromiseDependencies, _toConsumableArray(SuppressedErrorDependencies))),
    AsyncIterator: define("async-iterator/index", AsyncIteratorDependencies),
    AggregateError: define("aggregate-error", ["es.aggregate-error"].concat(ErrorDependencies, _toConsumableArray(CommonIteratorsWithTag), ["es.aggregate-error.cause"])),
    ArrayBuffer: define(null, ArrayBufferDependencies),
    DataView: define(null, DataViewDependencies),
    Date: define(null, ["es.date.to-string"]),
    DOMException: define("dom-exception/index", DOMExceptionDependencies),
    DisposableStack: define("disposable-stack/index", ["esnext.disposable-stack.constructor", "es.object.to-string", "esnext.iterator.dispose"].concat(_toConsumableArray(SuppressedErrorDependencies))),
    Error: define(null, ErrorDependencies),
    EvalError: define(null, ErrorDependencies),
    Float32Array: typed("es.typed-array.float32-array"),
    Float64Array: typed("es.typed-array.float64-array"),
    Int8Array: typed("es.typed-array.int8-array"),
    Int16Array: typed("es.typed-array.int16-array"),
    Int32Array: typed("es.typed-array.int32-array"),
    Iterator: define("iterator/index", IteratorDependencies),
    Uint8Array: typed("es.typed-array.uint8-array", "esnext.uint8-array.set-from-base64", "esnext.uint8-array.set-from-hex", "esnext.uint8-array.to-base64", "esnext.uint8-array.to-hex"),
    Uint8ClampedArray: typed("es.typed-array.uint8-clamped-array"),
    Uint16Array: typed("es.typed-array.uint16-array"),
    Uint32Array: typed("es.typed-array.uint32-array"),
    Map: define("map/index", MapDependencies),
    Number: define(null, ["es.number.constructor"]),
    Observable: define("observable/index", ["esnext.observable", "esnext.symbol.observable", "es.object.to-string"].concat(_toConsumableArray(CommonIteratorsWithTag))),
    Promise: define("promise/index", PromiseDependencies),
    RangeError: define(null, ErrorDependencies),
    ReferenceError: define(null, ErrorDependencies),
    Reflect: define(null, ["es.reflect.to-string-tag", "es.object.to-string"]),
    RegExp: define(null, ["es.regexp.constructor", "es.regexp.dot-all", "es.regexp.exec", "es.regexp.sticky", "es.regexp.to-string"]),
    Set: define("set/index", SetDependencies),
    SuppressedError: define("suppressed-error", SuppressedErrorDependencies),
    Symbol: define("symbol/index", SymbolDependencies),
    SyntaxError: define(null, ErrorDependencies),
    TypeError: define(null, ErrorDependencies),
    URIError: define(null, ErrorDependencies),
    URL: define("url/index", ["web.url", "web.url.to-json"].concat(_toConsumableArray(URLSearchParamsDependencies))),
    URLSearchParams: define("url-search-params/index", URLSearchParamsDependencies),
    WeakMap: define("weak-map/index", WeakMapDependencies),
    WeakSet: define("weak-set/index", WeakSetDependencies),
    atob: define("atob", ["web.atob"].concat(DOMExceptionDependencies)),
    btoa: define("btoa", ["web.btoa"].concat(DOMExceptionDependencies)),
    clearImmediate: define("clear-immediate", ["web.immediate"]),
    compositeKey: define("composite-key", ["esnext.composite-key"]),
    compositeSymbol: define("composite-symbol", ["esnext.composite-symbol"]),
    escape: define("escape", ["es.escape"]),
    fetch: define(null, PromiseDependencies),
    globalThis: define("global-this", ["es.global-this"]),
    parseFloat: define("parse-float", ["es.parse-float"]),
    parseInt: define("parse-int", ["es.parse-int"]),
    queueMicrotask: define("queue-microtask", ["web.queue-microtask"]),
    self: define("self", ["web.self"]),
    setImmediate: define("set-immediate", ["web.immediate"]),
    setInterval: define("set-interval", ["web.timers"]),
    setTimeout: define("set-timeout", ["web.timers"]),
    structuredClone: define("structured-clone", ["web.structured-clone"].concat(DOMExceptionDependencies, ["es.array.iterator", "es.object.keys", "es.object.to-string", "es.map", "es.set"])),
    unescape: define("unescape", ["es.unescape"])
  };
  var StaticProperties = {
    AsyncIterator: {
      from: define("async-iterator/from", ["esnext.async-iterator.from"].concat(_toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods, _toConsumableArray(CommonIterators)))
    },
    Array: {
      from: define("array/from", ["es.array.from", "es.string.iterator"]),
      fromAsync: define("array/from-async", ["esnext.array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
      isArray: define("array/is-array", ["es.array.is-array"]),
      isTemplateObject: define("array/is-template-object", ["esnext.array.is-template-object"]),
      of: define("array/of", ["es.array.of"])
    },
    ArrayBuffer: {
      isView: define(null, ["es.array-buffer.is-view"])
    },
    BigInt: {
      range: define("bigint/range", ["esnext.bigint.range", "es.object.to-string"])
    },
    Date: {
      now: define("date/now", ["es.date.now"])
    },
    Function: {
      isCallable: define("function/is-callable", ["esnext.function.is-callable"]),
      isConstructor: define("function/is-constructor", ["esnext.function.is-constructor"])
    },
    Iterator: {
      from: define("iterator/from", ["esnext.iterator.from"].concat(IteratorDependencies, _toConsumableArray(CommonIterators))),
      range: define("iterator/range", ["esnext.iterator.range", "es.object.to-string"])
    },
    JSON: {
      isRawJSON: define("json/is-raw-json", ["esnext.json.is-raw-json"]),
      parse: define("json/parse", ["esnext.json.parse", "es.object.keys"]),
      rawJSON: define("json/raw-json", ["esnext.json.raw-json", "es.object.create", "es.object.freeze"]),
      stringify: define("json/stringify", ["es.json.stringify", "es.date.to-json"], "es.symbol")
    },
    Math: {
      DEG_PER_RAD: define("math/deg-per-rad", ["esnext.math.deg-per-rad"]),
      RAD_PER_DEG: define("math/rad-per-deg", ["esnext.math.rad-per-deg"]),
      acosh: define("math/acosh", ["es.math.acosh"]),
      asinh: define("math/asinh", ["es.math.asinh"]),
      atanh: define("math/atanh", ["es.math.atanh"]),
      cbrt: define("math/cbrt", ["es.math.cbrt"]),
      clamp: define("math/clamp", ["esnext.math.clamp"]),
      clz32: define("math/clz32", ["es.math.clz32"]),
      cosh: define("math/cosh", ["es.math.cosh"]),
      degrees: define("math/degrees", ["esnext.math.degrees"]),
      expm1: define("math/expm1", ["es.math.expm1"]),
      fround: define("math/fround", ["es.math.fround"]),
      f16round: define("math/f16round", ["esnext.math.f16round"]),
      fscale: define("math/fscale", ["esnext.math.fscale"]),
      hypot: define("math/hypot", ["es.math.hypot"]),
      iaddh: define("math/iaddh", ["esnext.math.iaddh"]),
      imul: define("math/imul", ["es.math.imul"]),
      imulh: define("math/imulh", ["esnext.math.imulh"]),
      isubh: define("math/isubh", ["esnext.math.isubh"]),
      log10: define("math/log10", ["es.math.log10"]),
      log1p: define("math/log1p", ["es.math.log1p"]),
      log2: define("math/log2", ["es.math.log2"]),
      radians: define("math/radians", ["esnext.math.radians"]),
      scale: define("math/scale", ["esnext.math.scale"]),
      seededPRNG: define("math/seeded-prng", ["esnext.math.seeded-prng"]),
      sign: define("math/sign", ["es.math.sign"]),
      signbit: define("math/signbit", ["esnext.math.signbit"]),
      sinh: define("math/sinh", ["es.math.sinh"]),
      sumPrecise: define("math/sum-precise", ["esnext.math.sum-precise", "es.array.iterator"]),
      tanh: define("math/tanh", ["es.math.tanh"]),
      trunc: define("math/trunc", ["es.math.trunc"]),
      umulh: define("math/umulh", ["esnext.math.umulh"])
    },
    Map: {
      from: define("map/from", ["esnext.map.from"].concat(_toConsumableArray(MapDependencies))),
      groupBy: define("map/group-by", ["es.map.group-by"].concat(_toConsumableArray(MapDependencies))),
      keyBy: define("map/key-by", ["esnext.map.key-by"].concat(_toConsumableArray(MapDependencies))),
      of: define("map/of", ["esnext.map.of"].concat(_toConsumableArray(MapDependencies)))
    },
    Number: {
      EPSILON: define("number/epsilon", ["es.number.epsilon"]),
      MAX_SAFE_INTEGER: define("number/max-safe-integer", ["es.number.max-safe-integer"]),
      MIN_SAFE_INTEGER: define("number/min-safe-integer", ["es.number.min-safe-integer"]),
      fromString: define("number/from-string", ["esnext.number.from-string"]),
      isFinite: define("number/is-finite", ["es.number.is-finite"]),
      isInteger: define("number/is-integer", ["es.number.is-integer"]),
      isNaN: define("number/is-nan", ["es.number.is-nan"]),
      isSafeInteger: define("number/is-safe-integer", ["es.number.is-safe-integer"]),
      parseFloat: define("number/parse-float", ["es.number.parse-float"]),
      parseInt: define("number/parse-int", ["es.number.parse-int"]),
      range: define("number/range", ["esnext.number.range", "es.object.to-string"])
    },
    Object: {
      assign: define("object/assign", ["es.object.assign"]),
      create: define("object/create", ["es.object.create"]),
      defineProperties: define("object/define-properties", ["es.object.define-properties"]),
      defineProperty: define("object/define-property", ["es.object.define-property"]),
      entries: define("object/entries", ["es.object.entries"]),
      freeze: define("object/freeze", ["es.object.freeze"]),
      fromEntries: define("object/from-entries", ["es.object.from-entries", "es.array.iterator"]),
      getOwnPropertyDescriptor: define("object/get-own-property-descriptor", ["es.object.get-own-property-descriptor"]),
      getOwnPropertyDescriptors: define("object/get-own-property-descriptors", ["es.object.get-own-property-descriptors"]),
      getOwnPropertyNames: define("object/get-own-property-names", ["es.object.get-own-property-names"]),
      getOwnPropertySymbols: define("object/get-own-property-symbols", ["es.symbol"]),
      getPrototypeOf: define("object/get-prototype-of", ["es.object.get-prototype-of"]),
      groupBy: define("object/group-by", ["es.object.group-by", "es.object.create"]),
      hasOwn: define("object/has-own", ["es.object.has-own"]),
      is: define("object/is", ["es.object.is"]),
      isExtensible: define("object/is-extensible", ["es.object.is-extensible"]),
      isFrozen: define("object/is-frozen", ["es.object.is-frozen"]),
      isSealed: define("object/is-sealed", ["es.object.is-sealed"]),
      keys: define("object/keys", ["es.object.keys"]),
      preventExtensions: define("object/prevent-extensions", ["es.object.prevent-extensions"]),
      seal: define("object/seal", ["es.object.seal"]),
      setPrototypeOf: define("object/set-prototype-of", ["es.object.set-prototype-of"]),
      values: define("object/values", ["es.object.values"])
    },
    Promise: {
      all: define(null, PromiseDependenciesWithIterators),
      allSettled: define("promise/all-settled", ["es.promise.all-settled"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
      any: define("promise/any", ["es.promise.any", "es.aggregate-error"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
      race: define(null, PromiseDependenciesWithIterators),
      "try": define("promise/try", ["esnext.promise.try"].concat(PromiseDependencies)),
      withResolvers: define("promise/with-resolvers", ["es.promise.with-resolvers"].concat(PromiseDependencies))
    },
    Reflect: {
      apply: define("reflect/apply", ["es.reflect.apply"]),
      construct: define("reflect/construct", ["es.reflect.construct"]),
      defineMetadata: define("reflect/define-metadata", ["esnext.reflect.define-metadata"]),
      defineProperty: define("reflect/define-property", ["es.reflect.define-property"]),
      deleteMetadata: define("reflect/delete-metadata", ["esnext.reflect.delete-metadata"]),
      deleteProperty: define("reflect/delete-property", ["es.reflect.delete-property"]),
      get: define("reflect/get", ["es.reflect.get"]),
      getMetadata: define("reflect/get-metadata", ["esnext.reflect.get-metadata"]),
      getMetadataKeys: define("reflect/get-metadata-keys", ["esnext.reflect.get-metadata-keys"]),
      getOwnMetadata: define("reflect/get-own-metadata", ["esnext.reflect.get-own-metadata"]),
      getOwnMetadataKeys: define("reflect/get-own-metadata-keys", ["esnext.reflect.get-own-metadata-keys"]),
      getOwnPropertyDescriptor: define("reflect/get-own-property-descriptor", ["es.reflect.get-own-property-descriptor"]),
      getPrototypeOf: define("reflect/get-prototype-of", ["es.reflect.get-prototype-of"]),
      has: define("reflect/has", ["es.reflect.has"]),
      hasMetadata: define("reflect/has-metadata", ["esnext.reflect.has-metadata"]),
      hasOwnMetadata: define("reflect/has-own-metadata", ["esnext.reflect.has-own-metadata"]),
      isExtensible: define("reflect/is-extensible", ["es.reflect.is-extensible"]),
      metadata: define("reflect/metadata", ["esnext.reflect.metadata"]),
      ownKeys: define("reflect/own-keys", ["es.reflect.own-keys"]),
      preventExtensions: define("reflect/prevent-extensions", ["es.reflect.prevent-extensions"]),
      set: define("reflect/set", ["es.reflect.set"]),
      setPrototypeOf: define("reflect/set-prototype-of", ["es.reflect.set-prototype-of"])
    },
    RegExp: {
      escape: define("regexp/escape", ["esnext.regexp.escape"])
    },
    Set: {
      from: define("set/from", ["esnext.set.from"].concat(_toConsumableArray(SetDependencies))),
      of: define("set/of", ["esnext.set.of"].concat(_toConsumableArray(SetDependencies)))
    },
    String: {
      cooked: define("string/cooked", ["esnext.string.cooked"]),
      dedent: define("string/dedent", ["esnext.string.dedent", "es.string.from-code-point", "es.weak-map"]),
      fromCodePoint: define("string/from-code-point", ["es.string.from-code-point"]),
      raw: define("string/raw", ["es.string.raw"])
    },
    Symbol: {
      asyncDispose: define("symbol/async-dispose", ["esnext.symbol.async-dispose", "esnext.async-iterator.async-dispose"]),
      asyncIterator: define("symbol/async-iterator", ["es.symbol.async-iterator"]),
      customMatcher: define("symbol/custom-matcher", ["esnext.symbol.custom-matcher"]),
      dispose: define("symbol/dispose", ["esnext.symbol.dispose", "esnext.iterator.dispose"]),
      "for": define("symbol/for", [], "es.symbol"),
      hasInstance: define("symbol/has-instance", ["es.symbol.has-instance", "es.function.has-instance"]),
      isConcatSpreadable: define("symbol/is-concat-spreadable", ["es.symbol.is-concat-spreadable", "es.array.concat"]),
      isRegistered: define("symbol/is-registered", ["esnext.symbol.is-registered", "es.symbol"]),
      isRegisteredSymbol: define("symbol/is-registered-symbol", ["esnext.symbol.is-registered-symbol", "es.symbol"]),
      isWellKnown: define("symbol/is-well-known", ["esnext.symbol.is-well-known", "es.symbol"]),
      isWellKnownSymbol: define("symbol/is-well-known-symbol", ["esnext.symbol.is-well-known-symbol", "es.symbol"]),
      iterator: define("symbol/iterator", ["es.symbol.iterator"].concat(_toConsumableArray(CommonIteratorsWithTag))),
      keyFor: define("symbol/key-for", [], "es.symbol"),
      match: define("symbol/match", ["es.symbol.match", "es.string.match"]),
      matcher: define("symbol/matcher", ["esnext.symbol.matcher"]),
      matchAll: define("symbol/match-all", ["es.symbol.match-all", "es.string.match-all"]),
      metadata: define("symbol/metadata", DecoratorMetadataDependencies),
      metadataKey: define("symbol/metadata-key", ["esnext.symbol.metadata-key"]),
      observable: define("symbol/observable", ["esnext.symbol.observable"]),
      patternMatch: define("symbol/pattern-match", ["esnext.symbol.pattern-match"]),
      replace: define("symbol/replace", ["es.symbol.replace", "es.string.replace"]),
      search: define("symbol/search", ["es.symbol.search", "es.string.search"]),
      species: define("symbol/species", ["es.symbol.species", "es.array.species"]),
      split: define("symbol/split", ["es.symbol.split", "es.string.split"]),
      toPrimitive: define("symbol/to-primitive", ["es.symbol.to-primitive", "es.date.to-primitive"]),
      toStringTag: define("symbol/to-string-tag", ["es.symbol.to-string-tag", "es.object.to-string", "es.math.to-string-tag", "es.json.to-string-tag"]),
      unscopables: define("symbol/unscopables", ["es.symbol.unscopables"])
    },
    URL: {
      canParse: define("url/can-parse", ["web.url.can-parse", "web.url"]),
      parse: define("url/parse", ["web.url.parse", "web.url"])
    },
    WeakMap: {
      from: define("weak-map/from", ["esnext.weak-map.from"].concat(_toConsumableArray(WeakMapDependencies))),
      of: define("weak-map/of", ["esnext.weak-map.of"].concat(_toConsumableArray(WeakMapDependencies)))
    },
    WeakSet: {
      from: define("weak-set/from", ["esnext.weak-set.from"].concat(_toConsumableArray(WeakSetDependencies))),
      of: define("weak-set/of", ["esnext.weak-set.of"].concat(_toConsumableArray(WeakSetDependencies)))
    },
    Int8Array: TypedArrayStaticMethods("es.typed-array.int8-array"),
    Uint8Array: Object.assign({
      fromBase64: define(null, ["esnext.uint8-array.from-base64"].concat(TypedArrayDependencies)),
      fromHex: define(null, ["esnext.uint8-array.from-hex"].concat(TypedArrayDependencies))
    }, TypedArrayStaticMethods("es.typed-array.uint8-array")),
    Uint8ClampedArray: TypedArrayStaticMethods("es.typed-array.uint8-clamped-array"),
    Int16Array: TypedArrayStaticMethods("es.typed-array.int16-array"),
    Uint16Array: TypedArrayStaticMethods("es.typed-array.uint16-array"),
    Int32Array: TypedArrayStaticMethods("es.typed-array.int32-array"),
    Uint32Array: TypedArrayStaticMethods("es.typed-array.uint32-array"),
    Float32Array: TypedArrayStaticMethods("es.typed-array.float32-array"),
    Float64Array: TypedArrayStaticMethods("es.typed-array.float64-array"),
    WebAssembly: {
      CompileError: define(null, ErrorDependencies),
      LinkError: define(null, ErrorDependencies),
      RuntimeError: define(null, ErrorDependencies)
    }
  };
  var InstanceProperties = (_InstanceProperties = {
    asIndexedPairs: define(null, ["esnext.async-iterator.as-indexed-pairs"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.as-indexed-pairs"], IteratorDependencies)),
    at: define("instance/at", ["esnext.string.at", "es.string.at-alternative", "es.array.at"]),
    anchor: define(null, ["es.string.anchor"]),
    big: define(null, ["es.string.big"]),
    bind: define("instance/bind", ["es.function.bind"]),
    blink: define(null, ["es.string.blink"]),
    bold: define(null, ["es.string.bold"]),
    codePointAt: define("instance/code-point-at", ["es.string.code-point-at"]),
    codePoints: define("instance/code-points", ["esnext.string.code-points"]),
    concat: define("instance/concat", ["es.array.concat"], undefined, ["String"]),
    copyWithin: define("instance/copy-within", ["es.array.copy-within"]),
    demethodize: define("instance/demethodize", ["esnext.function.demethodize"]),
    description: define(null, ["es.symbol", "es.symbol.description"]),
    dotAll: define(null, ["es.regexp.dot-all"]),
    drop: define(null, ["esnext.async-iterator.drop"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.drop"], IteratorDependencies)),
    emplace: define("instance/emplace", ["esnext.map.emplace", "esnext.weak-map.emplace"]),
    endsWith: define("instance/ends-with", ["es.string.ends-with"]),
    entries: define("instance/entries", ArrayNatureIteratorsWithTag),
    every: define("instance/every", ["es.array.every", "esnext.async-iterator.every", "esnext.iterator.every"].concat(IteratorDependencies)),
    exec: define(null, ["es.regexp.exec"]),
    fill: define("instance/fill", ["es.array.fill"]),
    filter: define("instance/filter", ["es.array.filter", "esnext.async-iterator.filter", "esnext.iterator.filter"].concat(IteratorDependencies)),
    filterReject: define("instance/filterReject", ["esnext.array.filter-reject"]),
    "finally": define(null, ["es.promise.finally"].concat(PromiseDependencies)),
    find: define("instance/find", ["es.array.find", "esnext.async-iterator.find", "esnext.iterator.find"].concat(IteratorDependencies)),
    findIndex: define("instance/find-index", ["es.array.find-index"]),
    findLast: define("instance/find-last", ["es.array.find-last"]),
    findLastIndex: define("instance/find-last-index", ["es.array.find-last-index"]),
    fixed: define(null, ["es.string.fixed"]),
    flags: define("instance/flags", ["es.regexp.flags"]),
    flatMap: define("instance/flat-map", ["es.array.flat-map", "es.array.unscopables.flat-map", "esnext.async-iterator.flat-map", "esnext.iterator.flat-map"].concat(IteratorDependencies)),
    flat: define("instance/flat", ["es.array.flat", "es.array.unscopables.flat"]),
    getFloat16: define(null, ["esnext.data-view.get-float16"].concat(_toConsumableArray(DataViewDependencies))),
    getUint8Clamped: define(null, ["esnext.data-view.get-uint8-clamped"].concat(_toConsumableArray(DataViewDependencies))),
    getYear: define(null, ["es.date.get-year"]),
    group: define("instance/group", ["esnext.array.group"]),
    groupBy: define("instance/group-by", ["esnext.array.group-by"]),
    groupByToMap: define("instance/group-by-to-map", ["esnext.array.group-by-to-map", "es.map", "es.object.to-string"]),
    groupToMap: define("instance/group-to-map", ["esnext.array.group-to-map", "es.map", "es.object.to-string"]),
    fontcolor: define(null, ["es.string.fontcolor"]),
    fontsize: define(null, ["es.string.fontsize"]),
    forEach: define("instance/for-each", ["es.array.for-each", "esnext.async-iterator.for-each", "esnext.iterator.for-each"].concat(IteratorDependencies, ["web.dom-collections.for-each"])),
    includes: define("instance/includes", ["es.array.includes", "es.string.includes"]),
    indexed: define(null, ["esnext.async-iterator.indexed"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.indexed"], IteratorDependencies)),
    indexOf: define("instance/index-of", ["es.array.index-of"]),
    isWellFormed: define("instance/is-well-formed", ["es.string.is-well-formed"]),
    italic: define(null, ["es.string.italics"]),
    join: define(null, ["es.array.join"]),
    keys: define("instance/keys", ArrayNatureIteratorsWithTag),
    lastIndex: define(null, ["esnext.array.last-index"]),
    lastIndexOf: define("instance/last-index-of", ["es.array.last-index-of"]),
    lastItem: define(null, ["esnext.array.last-item"]),
    link: define(null, ["es.string.link"]),
    map: define("instance/map", ["es.array.map", "esnext.async-iterator.map", "esnext.iterator.map"]),
    match: define(null, ["es.string.match", "es.regexp.exec"]),
    matchAll: define("instance/match-all", ["es.string.match-all", "es.regexp.exec"]),
    name: define(null, ["es.function.name"]),
    padEnd: define("instance/pad-end", ["es.string.pad-end"]),
    padStart: define("instance/pad-start", ["es.string.pad-start"]),
    push: define("instance/push", ["es.array.push"]),
    reduce: define("instance/reduce", ["es.array.reduce", "esnext.async-iterator.reduce", "esnext.iterator.reduce"].concat(IteratorDependencies)),
    reduceRight: define("instance/reduce-right", ["es.array.reduce-right"]),
    repeat: define("instance/repeat", ["es.string.repeat"]),
    replace: define(null, ["es.string.replace", "es.regexp.exec"]),
    replaceAll: define("instance/replace-all", ["es.string.replace-all", "es.string.replace", "es.regexp.exec"]),
    reverse: define("instance/reverse", ["es.array.reverse"]),
    search: define(null, ["es.string.search", "es.regexp.exec"]),
    setFloat16: define(null, ["esnext.data-view.set-float16"].concat(_toConsumableArray(DataViewDependencies))),
    setUint8Clamped: define(null, ["esnext.data-view.set-uint8-clamped"].concat(_toConsumableArray(DataViewDependencies))),
    setYear: define(null, ["es.date.set-year"]),
    slice: define("instance/slice", ["es.array.slice"]),
    small: define(null, ["es.string.small"]),
    some: define("instance/some", ["es.array.some", "esnext.async-iterator.some", "esnext.iterator.some"].concat(IteratorDependencies)),
    sort: define("instance/sort", ["es.array.sort"]),
    splice: define("instance/splice", ["es.array.splice"]),
    split: define(null, ["es.string.split", "es.regexp.exec"]),
    startsWith: define("instance/starts-with", ["es.string.starts-with"]),
    sticky: define(null, ["es.regexp.sticky"]),
    strike: define(null, ["es.string.strike"]),
    sub: define(null, ["es.string.sub"]),
    substr: define(null, ["es.string.substr"]),
    sup: define(null, ["es.string.sup"]),
    take: define(null, ["esnext.async-iterator.take"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.take"], IteratorDependencies)),
    test: define(null, ["es.regexp.test", "es.regexp.exec"]),
    toArray: define(null, ["esnext.async-iterator.to-array"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.to-array"], IteratorDependencies)),
    toAsync: define(null, ["esnext.iterator.to-async"].concat(IteratorDependencies, _toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods)),
    toExponential: define(null, ["es.number.to-exponential"]),
    toFixed: define(null, ["es.number.to-fixed"]),
    toGMTString: define(null, ["es.date.to-gmt-string"]),
    toISOString: define(null, ["es.date.to-iso-string"]),
    toJSON: define(null, ["es.date.to-json"]),
    toPrecision: define(null, ["es.number.to-precision"]),
    toReversed: define("instance/to-reversed", ["es.array.to-reversed"]),
    toSorted: define("instance/to-sorted", ["es.array.to-sorted", "es.array.sort"]),
    toSpliced: define("instance/to-spliced", ["es.array.to-spliced"]),
    toString: define(null, ["es.object.to-string", "es.error.to-string", "es.date.to-string", "es.regexp.to-string"]),
    toWellFormed: define("instance/to-well-formed", ["es.string.to-well-formed"]),
    trim: define("instance/trim", ["es.string.trim"]),
    trimEnd: define("instance/trim-end", ["es.string.trim-end"]),
    trimLeft: define("instance/trim-left", ["es.string.trim-start"]),
    trimRight: define("instance/trim-right", ["es.string.trim-end"]),
    trimStart: define("instance/trim-start", ["es.string.trim-start"]),
    uniqueBy: define("instance/unique-by", ["esnext.array.unique-by", "es.map"]),
    unshift: define("instance/unshift", ["es.array.unshift"]),
    unThis: define("instance/un-this", ["esnext.function.un-this"]),
    values: define("instance/values", ArrayNatureIteratorsWithTag),
    "with": define("instance/with", ["es.array.with"]),
    __defineGetter__: define(null, ["es.object.define-getter"]),
    __defineSetter__: define(null, ["es.object.define-setter"]),
    __lookupGetter__: define(null, ["es.object.lookup-getter"]),
    __lookupSetter__: define(null, ["es.object.lookup-setter"])
  }, _InstanceProperties["__proto__"] = define(null, ["es.object.proto"]), _InstanceProperties);
  var stable = new Set(["array", "array/from", "array/is-array", "array/of", "clear-immediate", "date/now", "instance/bind", "instance/code-point-at", "instance/concat", "instance/copy-within", "instance/ends-with", "instance/entries", "instance/every", "instance/fill", "instance/filter", "instance/find", "instance/find-index", "instance/flags", "instance/flat", "instance/flat-map", "instance/for-each", "instance/includes", "instance/index-of", "instance/keys", "instance/last-index-of", "instance/map", "instance/pad-end", "instance/pad-start", "instance/reduce", "instance/reduce-right", "instance/repeat", "instance/reverse", "instance/slice", "instance/some", "instance/sort", "instance/splice", "instance/starts-with", "instance/trim", "instance/trim-end", "instance/trim-left", "instance/trim-right", "instance/trim-start", "instance/values", "json/stringify", "map", "math/acosh", "math/asinh", "math/atanh", "math/cbrt", "math/clz32", "math/cosh", "math/expm1", "math/fround", "math/hypot", "math/imul", "math/log10", "math/log1p", "math/log2", "math/sign", "math/sinh", "math/tanh", "math/trunc", "number/epsilon", "number/is-finite", "number/is-integer", "number/is-nan", "number/is-safe-integer", "number/max-safe-integer", "number/min-safe-integer", "number/parse-float", "number/parse-int", "object/assign", "object/create", "object/define-properties", "object/define-property", "object/entries", "object/freeze", "object/from-entries", "object/get-own-property-descriptor", "object/get-own-property-descriptors", "object/get-own-property-names", "object/get-own-property-symbols", "object/get-prototype-of", "object/is", "object/is-extensible", "object/is-frozen", "object/is-sealed", "object/keys", "object/prevent-extensions", "object/seal", "object/set-prototype-of", "object/values", "parse-float", "parse-int", "promise", "queue-microtask", "reflect/apply", "reflect/construct", "reflect/define-property", "reflect/delete-property", "reflect/get", "reflect/get-own-property-descriptor", "reflect/get-prototype-of", "reflect/has", "reflect/is-extensible", "reflect/own-keys", "reflect/prevent-extensions", "reflect/set", "reflect/set-prototype-of", "set", "set-immediate", "set-interval", "set-timeout", "string/from-code-point", "string/raw", "symbol", "symbol/async-iterator", "symbol/for", "symbol/has-instance", "symbol/is-concat-spreadable", "symbol/iterator", "symbol/key-for", "symbol/match", "symbol/replace", "symbol/search", "symbol/species", "symbol/split", "symbol/to-primitive", "symbol/to-string-tag", "symbol/unscopables", "url", "url-search-params", "weak-map", "weak-set"]);
  var proposals = new Set([].concat(_toConsumableArray(stable), ["aggregate-error", "composite-key", "composite-symbol", "global-this", "instance/at", "instance/code-points", "instance/match-all", "instance/replace-all", "math/clamp", "math/degrees", "math/deg-per-rad", "math/fscale", "math/iaddh", "math/imulh", "math/isubh", "math/rad-per-deg", "math/radians", "math/scale", "math/seeded-prng", "math/signbit", "math/umulh", "number/from-string", "observable", "reflect/define-metadata", "reflect/delete-metadata", "reflect/get-metadata", "reflect/get-metadata-keys", "reflect/get-own-metadata", "reflect/get-own-metadata-keys", "reflect/has-metadata", "reflect/has-own-metadata", "reflect/metadata", "symbol/dispose", "symbol/observable", "symbol/pattern-match"]));
  var _ref = _babel,
    t$2 = _ref.types;
  function canSkipPolyfill(desc, path) {
    var node = path.node,
      parent = path.parent;
    switch (desc.name) {
      case "es.string.split":
        {
          if (!t$2.isCallExpression(parent, {
            callee: node
          })) return false;
          if (parent.arguments.length < 1) return true;
          var splitter = parent.arguments[0];
          return t$2.isStringLiteral(splitter) || t$2.isTemplateLiteral(splitter);
        }
    }
  }
  var _ref2 = _babel,
    t$1 = _ref2.types;
  var BABEL_RUNTIME = "@babel/runtime-corejs3";
  function callMethod(path, id) {
    var object = path.node.object;
    var context1, context2;
    if (t$1.isIdentifier(object)) {
      context1 = object;
      context2 = t$1.cloneNode(object);
    } else {
      context1 = path.scope.generateDeclaredUidIdentifier("context");
      context2 = t$1.assignmentExpression("=", t$1.cloneNode(context1), object);
    }
    path.replaceWith(t$1.memberExpression(t$1.callExpression(id, [context2]), t$1.identifier("call")));
    path.parentPath.unshiftContainer("arguments", context1);
  }
  function isCoreJSSource(source) {
    if (typeof source === "string") {
      source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase();
    }
    return Object.prototype.hasOwnProperty.call(entries, source) && entries[source];
  }
  function coreJSModule(name) {
    return "core-js/modules/" + name + ".js";
  }
  function coreJSPureHelper(name, useBabelRuntime, ext) {
    return useBabelRuntime ? BABEL_RUNTIME + "/core-js/" + name + ext : "core-js-pure/features/" + name + ".js";
  }
  var _ref3 = _babel,
    t = _ref3.types;
  var presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
  var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
  var uniqueObjects = ["array", "string", "iterator", "async-iterator", "dom-collections"].map(function (v) {
    return new RegExp("[a-z]*\\." + v + "\\..*");
  });
  var esnextFallback = function esnextFallback(name, cb) {
    if (cb(name)) return true;
    if (!name.startsWith("es.")) return false;
    var fallback = "esnext." + name.slice(3);
    if (!data[fallback]) return false;
    return cb(fallback);
  };
  var index = definePolyfillProvider(function (_ref4, _ref5) {
    var getUtils = _ref4.getUtils,
      method = _ref4.method,
      shouldInjectPolyfill = _ref4.shouldInjectPolyfill,
      createMetaResolver = _ref4.createMetaResolver,
      debug = _ref4.debug,
      babel = _ref4.babel;
    var _ref5$version = _ref5.version,
      version = _ref5$version === void 0 ? 3 : _ref5$version,
      proposals$1 = _ref5.proposals,
      shippedProposals = _ref5.shippedProposals,
      _ref5$presetEnvCompat = _ref5[presetEnvCompat],
      _ref5$presetEnvCompat2 = _ref5$presetEnvCompat === void 0 ? {} : _ref5$presetEnvCompat,
      _ref5$presetEnvCompat3 = _ref5$presetEnvCompat2.noRuntimeName,
      noRuntimeName = _ref5$presetEnvCompat3 === void 0 ? false : _ref5$presetEnvCompat3,
      _ref5$runtimeCompat = _ref5[runtimeCompat],
      _ref5$runtimeCompat2 = _ref5$runtimeCompat === void 0 ? {} : _ref5$runtimeCompat,
      _ref5$runtimeCompat2$ = _ref5$runtimeCompat2.useBabelRuntime,
      useBabelRuntime = _ref5$runtimeCompat2$ === void 0 ? false : _ref5$runtimeCompat2$,
      _ref5$runtimeCompat2$2 = _ref5$runtimeCompat2.ext,
      ext = _ref5$runtimeCompat2$2 === void 0 ? ".js" : _ref5$runtimeCompat2$2;
    var isWebpack = babel.caller(function (caller) {
      return (caller == null ? void 0 : caller.name) === "babel-loader";
    });
    var resolve = createMetaResolver({
      global: BuiltIns,
      "static": StaticProperties,
      instance: InstanceProperties
    });
    var available = new Set(getModulesListForTargetVersion(version));
    function getCoreJSPureBase(useProposalBase) {
      return useBabelRuntime ? useProposalBase ? BABEL_RUNTIME + "/core-js" : BABEL_RUNTIME + "/core-js-stable" : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
    }
    function maybeInjectGlobalImpl(name, utils) {
      if (shouldInjectPolyfill(name)) {
        debug(name);
        utils.injectGlobalImport(coreJSModule(name), name);
        return true;
      }
      return false;
    }
    function maybeInjectGlobal(names, utils, fallback) {
      if (fallback === void 0) {
        fallback = true;
      }
      for (var _iterator = _createForOfIteratorHelperLoose(names), _step; !(_step = _iterator()).done;) {
        var name = _step.value;
        if (fallback) {
          esnextFallback(name, function (name) {
            return maybeInjectGlobalImpl(name, utils);
          });
        } else {
          maybeInjectGlobalImpl(name, utils);
        }
      }
    }
    function maybeInjectPure(desc, hint, utils, object) {
      if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) {
        var name = desc.name;
        var useProposalBase = false;
        if (proposals$1 || shippedProposals && name.startsWith("esnext.")) {
          useProposalBase = true;
        } else if (name.startsWith("es.") && !available.has(name)) {
          useProposalBase = true;
        }
        if (useBabelRuntime && !(useProposalBase ? proposals : stable).has(desc.pure)) {
          return;
        }
        var coreJSPureBase = getCoreJSPureBase(useProposalBase);
        return utils.injectDefaultImport(coreJSPureBase + "/" + desc.pure + ext, hint);
      }
    }
    function isFeatureStable(name) {
      if (name.startsWith("esnext.")) {
        var esName = "es." + name.slice(7);
        return esName in data;
      }
      return true;
    }
    return {
      name: "corejs3",
      runtimeName: noRuntimeName ? null : BABEL_RUNTIME,
      polyfills: data,
      filterPolyfills: function filterPolyfills(name) {
        if (!available.has(name)) return false;
        if (proposals$1 || method === "entry-global") return true;
        if (shippedProposals && corejs3ShippedProposalsList.has(name)) {
          return true;
        }
        return isFeatureStable(name);
      },
      entryGlobal: function entryGlobal(meta, utils, path) {
        if (meta.kind !== "import") return;
        var modules = isCoreJSSource(meta.source);
        if (!modules) return;
        if (modules.length === 1 && meta.source === coreJSModule(modules[0]) && shouldInjectPolyfill(modules[0])) {
          debug(null);
          return;
        }
        var modulesSet = new Set(modules);
        var filteredModules = modules.filter(function (module) {
          if (!module.startsWith("esnext.")) return true;
          var stable = module.replace("esnext.", "es.");
          if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
            return false;
          }
          return true;
        });
        maybeInjectGlobal(filteredModules, utils, false);
        path.remove();
      },
      usageGlobal: function usageGlobal(meta, utils, path) {
        var resolved = resolve(meta);
        if (!resolved) return;
        if (canSkipPolyfill(resolved.desc, path)) return;
        var deps = resolved.desc.global;
        if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
          var low = meta.object.toLowerCase();
          deps = deps.filter(function (m) {
            return uniqueObjects.some(function (v) {
              return v.test(m);
            }) ? m.includes(low) : true;
          });
        }
        maybeInjectGlobal(deps, utils);
        return true;
      },
      usagePure: function usagePure(meta, utils, path) {
        if (meta.kind === "in") {
          if (meta.key === "Symbol.iterator") {
            path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("is-iterable", useBabelRuntime, ext), "isIterable"), [path.node.right]));
          }
          return;
        }
        if (path.parentPath.isUnaryExpression({
          operator: "delete"
        })) return;
        if (meta.kind === "property") {
          if (!path.isMemberExpression()) return;
          if (!path.isReferenced()) return;
          if (path.parentPath.isUpdateExpression()) return;
          if (t.isSuper(path.node.object)) {
            return;
          }
          if (meta.key === "Symbol.iterator") {
            if (!shouldInjectPolyfill("es.symbol.iterator")) return;
            var parent = path.parent,
              node = path.node;
            if (t.isCallExpression(parent, {
              callee: node
            })) {
              if (parent.arguments.length === 0) {
                path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator", useBabelRuntime, ext), "getIterator"), [node.object]));
                path.skip();
              } else {
                callMethod(path, utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"));
              }
            } else {
              path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
            }
            return;
          }
        }
        var resolved = resolve(meta);
        if (!resolved) return;
        if (canSkipPolyfill(resolved.desc, path)) return;
        if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
          resolved = Object.assign(Object.assign({}, resolved), {}, {
            desc: Object.assign(Object.assign({}, resolved.desc), {}, {
              pure: resolved.desc.pure.slice(0, -6)
            })
          });
        }
        if (resolved.kind === "global") {
          var id = maybeInjectPure(resolved.desc, resolved.name, utils);
          if (id) path.replaceWith(id);
        } else if (resolved.kind === "static") {
          var _id = maybeInjectPure(resolved.desc, resolved.name, utils, meta.object);
          if (_id) path.replaceWith(_id);
        } else if (resolved.kind === "instance") {
          var _id2 = maybeInjectPure(resolved.desc, resolved.name + "InstanceProperty", utils, meta.object);
          if (!_id2) return;
          var _node = path.node;
          if (t.isCallExpression(path.parent, {
            callee: _node
          })) {
            callMethod(path, _id2);
          } else {
            path.replaceWith(t.callExpression(_id2, [_node.object]));
          }
        }
      },
      visitor: method === "usage-global" && {
        CallExpression: function CallExpression(path) {
          if (path.get("callee").isImport()) {
            var utils = getUtils(path);
            if (isWebpack) {
              maybeInjectGlobal(PromiseDependenciesWithIterators, utils);
            } else {
              maybeInjectGlobal(PromiseDependencies, utils);
            }
          }
        },
        Function: function Function(path) {
          if (path.node.async) {
            maybeInjectGlobal(PromiseDependencies, getUtils(path));
          }
        },
        "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
          maybeInjectGlobal(CommonIterators, getUtils(path));
        },
        SpreadElement: function SpreadElement(path) {
          if (!path.parentPath.isObjectExpression()) {
            maybeInjectGlobal(CommonIterators, getUtils(path));
          }
        },
        YieldExpression: function YieldExpression(path) {
          if (path.node.delegate) {
            maybeInjectGlobal(CommonIterators, getUtils(path));
          }
        },
        Class: function Class(path) {
          var _path$node$decorators;
          var hasDecorators = ((_path$node$decorators = path.node.decorators) == null ? void 0 : _path$node$decorators.length) || path.node.body.body.some(function (el) {
            var _decorators;
            return (_decorators = el.decorators) == null ? void 0 : _decorators.length;
          });
          if (hasDecorators) {
            maybeInjectGlobal(DecoratorMetadataDependencies, getUtils(path));
          }
        }
      }
    };
  });

  var pluginCoreJS3 = index["default"] || index;
  function filterStageFromList(list, stageList) {
    return Object.keys(list).reduce(function (result, item) {
      if (!stageList.has(item)) {
        result[item] = list[item];
      }
      return result;
    }, {});
  }
  var pluginLists = {
    withProposals: {
      withoutBugfixes: plugins,
      withBugfixes: Object.assign({}, plugins, pluginsBugfixes)
    },
    withoutProposals: {
      withoutBugfixes: filterStageFromList(plugins, proposalPlugins),
      withBugfixes: filterStageFromList(Object.assign({}, plugins, pluginsBugfixes), proposalPlugins)
    }
  };
  function getPluginList(proposals, bugfixes) {
    if (proposals) {
      if (bugfixes) return pluginLists.withProposals.withBugfixes;else return pluginLists.withProposals.withoutBugfixes;
    } else {
      if (bugfixes) return pluginLists.withoutProposals.withBugfixes;else return pluginLists.withoutProposals.withoutBugfixes;
    }
  }
  var getPlugin = function getPlugin(pluginName) {
    var plugin = availablePlugins$1[pluginName]();
    if (!plugin) {
      throw new Error("Could not find plugin \"" + pluginName + "\". Ensure there is an entry in ./available-plugins.js for it.");
    }
    return plugin;
  };
  var transformIncludesAndExcludes = function transformIncludesAndExcludes(opts) {
    return opts.reduce(function (result, opt) {
      var target = /^(?:es|es6|es7|esnext|web)\./.test(opt) ? "builtIns" : "plugins";
      result[target].add(opt);
      return result;
    }, {
      all: opts,
      plugins: new Set(),
      builtIns: new Set()
    });
  };
  function getSpecialModulesPluginNames(modules, shouldTransformDynamicImport, babelVersion) {
    var modulesPluginNames = [];
    if (modules) {
      modulesPluginNames.push(moduleTransformations[modules]);
    }
    if (shouldTransformDynamicImport) {
      if (modules && modules !== "umd") {
        modulesPluginNames.push("transform-dynamic-import");
      } else {
        console.warn("Dynamic import can only be transformed when transforming ES" + " modules to AMD, CommonJS or SystemJS.");
      }
    }
    if (babelVersion[0] !== "8") {
      if (!shouldTransformDynamicImport) {
        modulesPluginNames.push("syntax-dynamic-import");
      }
      modulesPluginNames.push("syntax-top-level-await");
      modulesPluginNames.push("syntax-import-meta");
    }
    return modulesPluginNames;
  }
  var getCoreJSOptions = function getCoreJSOptions(_ref) {
    var useBuiltIns = _ref.useBuiltIns,
      corejs = _ref.corejs,
      polyfillTargets = _ref.polyfillTargets,
      include = _ref.include,
      exclude = _ref.exclude,
      proposals = _ref.proposals,
      shippedProposals = _ref.shippedProposals,
      debug = _ref.debug;
    return {
      method: useBuiltIns + "-global",
      version: corejs ? corejs.toString() : undefined,
      targets: polyfillTargets,
      include: include,
      exclude: exclude,
      proposals: proposals,
      shippedProposals: shippedProposals,
      debug: debug,
      "#__secret_key__@babel/preset-env__compatibility": {
        noRuntimeName: true
      }
    };
  };
  {
    var getPolyfillPlugins = function getPolyfillPlugins(_ref2) {
      var useBuiltIns = _ref2.useBuiltIns,
        corejs = _ref2.corejs,
        polyfillTargets = _ref2.polyfillTargets,
        include = _ref2.include,
        exclude = _ref2.exclude,
        proposals = _ref2.proposals,
        shippedProposals = _ref2.shippedProposals,
        regenerator = _ref2.regenerator,
        debug = _ref2.debug;
      var polyfillPlugins = [];
      if (useBuiltIns === "usage" || useBuiltIns === "entry") {
        var pluginOptions = getCoreJSOptions({
          useBuiltIns: useBuiltIns,
          corejs: corejs,
          polyfillTargets: polyfillTargets,
          include: include,
          exclude: exclude,
          proposals: proposals,
          shippedProposals: shippedProposals,
          debug: debug
        });
        if (corejs) {
          {
            if (useBuiltIns === "usage") {
              if (corejs.major === 2) {
                polyfillPlugins.push([babel7Plugins.pluginCoreJS2, pluginOptions], [babel7Plugins.legacyBabelPolyfillPlugin, {
                  usage: true
                }]);
              } else {
                polyfillPlugins.push([pluginCoreJS3, pluginOptions], [babel7Plugins.legacyBabelPolyfillPlugin, {
                  usage: true,
                  deprecated: true
                }]);
              }
              if (regenerator) {
                polyfillPlugins.push([babel7Plugins.pluginRegenerator, {
                  method: "usage-global",
                  debug: debug
                }]);
              }
            } else {
              if (corejs.major === 2) {
                polyfillPlugins.push([babel7Plugins.legacyBabelPolyfillPlugin, {
                  regenerator: regenerator
                }], [babel7Plugins.pluginCoreJS2, pluginOptions]);
              } else {
                polyfillPlugins.push([pluginCoreJS3, pluginOptions], [babel7Plugins.legacyBabelPolyfillPlugin, {
                  deprecated: true
                }]);
                if (!regenerator) {
                  polyfillPlugins.push([babel7Plugins.removeRegeneratorEntryPlugin, pluginOptions]);
                }
              }
            }
          }
        }
      }
      return polyfillPlugins;
    };
    {
      exports.getPolyfillPlugins = getPolyfillPlugins;
    }
  }
  function getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv) {
    if (optionsTargets != null && optionsTargets.esmodules && optionsTargets.browsers) {
      console.warn("\n@babel/preset-env: esmodules and browsers targets have been specified together.\n`browsers` target, `" + optionsTargets.browsers.toString() + "` will be ignored.\n");
    }
    return getTargets$1(optionsTargets, {
      ignoreBrowserslistConfig: ignoreBrowserslistConfig,
      configPath: configPath,
      browserslistEnv: browserslistEnv
    });
  }
  function supportsStaticESM(caller) {
    return !!(caller != null && caller.supportsStaticESM);
  }
  function supportsDynamicImport(caller) {
    return !!(caller != null && caller.supportsDynamicImport);
  }
  function supportsExportNamespaceFrom(caller) {
    return !!(caller != null && caller.supportsExportNamespaceFrom);
  }
  var presetEnv = declare(function (api, opts) {
    api.assertVersion("*");
    var babelTargets = api.targets();
    var _normalizeOptions = normalizeOptions$3(opts),
      bugfixes = _normalizeOptions.bugfixes,
      configPath = _normalizeOptions.configPath,
      debug = _normalizeOptions.debug,
      optionsExclude = _normalizeOptions.exclude,
      forceAllTransforms = _normalizeOptions.forceAllTransforms,
      ignoreBrowserslistConfig = _normalizeOptions.ignoreBrowserslistConfig,
      optionsInclude = _normalizeOptions.include,
      optionsModules = _normalizeOptions.modules,
      shippedProposals = _normalizeOptions.shippedProposals,
      optionsTargets = _normalizeOptions.targets,
      useBuiltIns = _normalizeOptions.useBuiltIns,
      _normalizeOptions$cor = _normalizeOptions.corejs,
      corejs = _normalizeOptions$cor.version,
      proposals = _normalizeOptions$cor.proposals,
      browserslistEnv = _normalizeOptions.browserslistEnv;
    {
      var loose = opts.loose,
        _opts$spec = opts.spec,
        spec = _opts$spec === void 0 ? false : _opts$spec;
    }
    var targets = babelTargets;
    if (semver$1.lt(api.version, "7.13.0") || opts.targets || opts.configPath || opts.browserslistEnv || opts.ignoreBrowserslistConfig) {
      {
        var hasUglifyTarget = false;
        if (optionsTargets != null && optionsTargets.uglify) {
          hasUglifyTarget = true;
          delete optionsTargets.uglify;
          console.warn("\nThe uglify target has been deprecated. Set the top level\noption `forceAllTransforms: true` instead.\n");
        }
      }
      targets = getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv);
    }
    var transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
    var include = transformIncludesAndExcludes(optionsInclude);
    var exclude = transformIncludesAndExcludes(optionsExclude);
    var compatData = getPluginList(shippedProposals, bugfixes);
    var modules = optionsModules === "auto" ? api.caller(supportsStaticESM) ? false : "commonjs" : optionsModules;
    var shouldTransformDynamicImport = optionsModules === "auto" ? !api.caller(supportsDynamicImport) : !!modules;
    if (!exclude.plugins.has("transform-export-namespace-from") && (optionsModules === "auto" ? !api.caller(supportsExportNamespaceFrom) : !!modules)) {
      include.plugins.add("transform-export-namespace-from");
    }
    var pluginNames = filterItems(compatData, include.plugins, exclude.plugins, transformTargets, getSpecialModulesPluginNames(modules, shouldTransformDynamicImport, api.version), !loose ? undefined : ["transform-typeof-symbol"], pluginSyntaxMap);
    if (shippedProposals) {
      addProposalSyntaxPlugins(pluginNames, proposalSyntaxPlugins);
    }
    removeUnsupportedItems(pluginNames, api.version);
    removeUnnecessaryItems(pluginNames, overlappingPlugins);
    var polyfillPlugins = getPolyfillPlugins({
      useBuiltIns: useBuiltIns,
      corejs: corejs,
      polyfillTargets: targets,
      include: include.builtIns,
      exclude: exclude.builtIns,
      proposals: proposals,
      shippedProposals: shippedProposals,
      regenerator: pluginNames.has("transform-regenerator"),
      debug: debug
    });
    var pluginUseBuiltIns = useBuiltIns !== false;
    var plugins = Array.from(pluginNames).map(function (pluginName) {
      if (pluginName === "transform-class-properties" || pluginName === "transform-private-methods" || pluginName === "transform-private-property-in-object") {
        return [getPlugin(pluginName), {
          loose: loose ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error" : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error"
        }];
      }
      if (pluginName === "syntax-import-attributes") {
        return [getPlugin(pluginName), {
          deprecatedAssertSyntax: true
        }];
      }
      return [getPlugin(pluginName), {
        spec: spec,
        loose: loose,
        useBuiltIns: pluginUseBuiltIns
      }];
    }).concat(polyfillPlugins);
    if (debug) {
      console.log("@babel/preset-env: `DEBUG` option");
      console.log("\nUsing targets:");
      console.log(JSON.stringify(prettifyTargets(targets), null, 2));
      console.log("\nUsing modules transform: " + optionsModules.toString());
      console.log("\nUsing plugins:");
      pluginNames.forEach(function (pluginName) {
        logPlugin(pluginName, targets, compatData);
      });
      if (!useBuiltIns) {
        console.log("\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.");
      }
    }
    return {
      plugins: plugins
    };
  });
  {
    exports.getModulesPluginNames = function (_ref3) {
      var modules = _ref3.modules,
        transformations = _ref3.transformations,
        shouldTransformESM = _ref3.shouldTransformESM,
        shouldTransformDynamicImport = _ref3.shouldTransformDynamicImport,
        shouldTransformExportNamespaceFrom = _ref3.shouldTransformExportNamespaceFrom;
      var modulesPluginNames = [];
      if (modules !== false && transformations[modules]) {
        if (shouldTransformESM) {
          modulesPluginNames.push(transformations[modules]);
        }
        if (shouldTransformDynamicImport) {
          if (shouldTransformESM && modules !== "umd") {
            modulesPluginNames.push("transform-dynamic-import");
          } else {
            console.warn("Dynamic import can only be transformed when transforming ES" + " modules to AMD, CommonJS or SystemJS.");
          }
        }
      }
      if (shouldTransformExportNamespaceFrom) {
        modulesPluginNames.push("transform-export-namespace-from");
      }
      if (!shouldTransformDynamicImport) {
        modulesPluginNames.push("syntax-dynamic-import");
      }
      if (!shouldTransformExportNamespaceFrom) {
        modulesPluginNames.push("syntax-export-namespace-from");
      }
      modulesPluginNames.push("syntax-top-level-await");
      modulesPluginNames.push("syntax-import-meta");
      return modulesPluginNames;
    };
  }

  new OptionValidator("@babel/preset-flow");
  function normalizeOptions$2(options) {
    if (options === void 0) {
      options = {};
    }
    var _options = options,
      all = _options.all,
      ignoreExtensions = _options.ignoreExtensions,
      experimental_useHermesParser = _options.experimental_useHermesParser;
    var _options2 = options,
      allowDeclareFields = _options2.allowDeclareFields;
    {
      return {
        all: all,
        allowDeclareFields: allowDeclareFields,
        ignoreExtensions: ignoreExtensions,
        experimental_useHermesParser: experimental_useHermesParser
      };
    }
  }

  var presetFlow = declare(function (api, opts) {
    api.assertVersion("*");
    var _normalizeOptions = normalizeOptions$2(opts),
      all = _normalizeOptions.all,
      allowDeclareFields = _normalizeOptions.allowDeclareFields,
      _normalizeOptions$ign = _normalizeOptions.ignoreExtensions,
      ignoreExtensions = _normalizeOptions$ign === void 0 ? true : _normalizeOptions$ign,
      _normalizeOptions$exp = _normalizeOptions.experimental_useHermesParser,
      useHermesParser = _normalizeOptions$exp === void 0 ? false : _normalizeOptions$exp;
    var plugins = [[transformFlowStripTypes, {
      all: all,
      allowDeclareFields: allowDeclareFields
    }]];
    if (useHermesParser) {
      if (Number.parseInt(browser$1$1.versions.node, 10) < 12) {
        throw new Error("The Hermes parser is only supported in Node 12 and later.");
      }
      {
        throw new Error("The Hermes parser is not supported in the @babel/standalone.");
      }
    }
    if (ignoreExtensions) {
      return {
        plugins: plugins
      };
    }
    return {
      overrides: [{
        test: function test(filename) {
          return filename == null || !/\.tsx?$/.test(filename);
        },
        plugins: plugins
      }]
    };
  });

  var PURE_CALLS = [["react", new Set(["cloneElement", "createContext", "createElement", "createFactory", "createRef", "forwardRef", "isValidElement", "memo", "lazy"])], ["react-dom", new Set(["createPortal"])]];
  var transformReactPure = declare(function (api) {
    api.assertVersion("*");
    return {
      name: "transform-react-pure-annotations",
      visitor: {
        CallExpression: function CallExpression(path) {
          if (isReactCall(path)) {
            annotateAsPure(path);
          }
        }
      }
    };
  });
  function isReactCall(path) {
    var calleePath = path.get("callee");
    if (!calleePath.isMemberExpression()) {
      for (var _i = 0, _PURE_CALLS = PURE_CALLS; _i < _PURE_CALLS.length; _i++) {
        var _PURE_CALLS$_i = _slicedToArray(_PURE_CALLS[_i], 2),
          module = _PURE_CALLS$_i[0],
          methods = _PURE_CALLS$_i[1];
        for (var _iterator = _createForOfIteratorHelperLoose(methods), _step; !(_step = _iterator()).done;) {
          var method = _step.value;
          if (calleePath.referencesImport(module, method)) {
            return true;
          }
        }
      }
      return false;
    }
    var object = calleePath.get("object");
    var callee = calleePath.node;
    if (!callee.computed && isIdentifier$f(callee.property)) {
      var propertyName = callee.property.name;
      for (var _i2 = 0, _PURE_CALLS2 = PURE_CALLS; _i2 < _PURE_CALLS2.length; _i2++) {
        var _PURE_CALLS2$_i = _slicedToArray(_PURE_CALLS2[_i2], 2),
          _module = _PURE_CALLS2$_i[0],
          _methods = _PURE_CALLS2$_i[1];
        if (object.referencesImport(_module, "default") || object.referencesImport(_module, "*")) {
          return _methods.has(propertyName);
        }
      }
    }
    return false;
  }

  new OptionValidator("@babel/preset-react");
  function normalizeOptions$1(options) {
    if (options === void 0) {
      options = {};
    }
    {
      var _options = options,
        pragma = _options.pragma,
        pragmaFrag = _options.pragmaFrag;
      var _options2 = options,
        pure = _options2.pure,
        _options2$throwIfName = _options2.throwIfNamespace,
        throwIfNamespace = _options2$throwIfName === void 0 ? true : _options2$throwIfName,
        _options2$runtime = _options2.runtime,
        runtime = _options2$runtime === void 0 ? "classic" : _options2$runtime,
        importSource = _options2.importSource,
        useBuiltIns = _options2.useBuiltIns,
        useSpread = _options2.useSpread;
      if (runtime === "classic") {
        pragma = pragma || "React.createElement";
        pragmaFrag = pragmaFrag || "React.Fragment";
      }
      var development = !!options.development;
      return {
        development: development,
        importSource: importSource,
        pragma: pragma,
        pragmaFrag: pragmaFrag,
        pure: pure,
        runtime: runtime,
        throwIfNamespace: throwIfNamespace,
        useBuiltIns: useBuiltIns,
        useSpread: useSpread
      };
    }
  }

  var presetReact = declare(function (api, opts) {
    api.assertVersion("*");
    var _normalizeOptions = normalizeOptions$1(opts),
      development = _normalizeOptions.development,
      importSource = _normalizeOptions.importSource,
      pragma = _normalizeOptions.pragma,
      pragmaFrag = _normalizeOptions.pragmaFrag,
      pure = _normalizeOptions.pure,
      runtime = _normalizeOptions.runtime,
      throwIfNamespace = _normalizeOptions.throwIfNamespace;
    return {
      plugins: [[development ? plugin : transformReactJSX, {
        importSource: importSource,
        pragma: pragma,
        pragmaFrag: pragmaFrag,
        runtime: runtime,
        throwIfNamespace: throwIfNamespace,
        pure: pure,
        useBuiltIns: !!opts.useBuiltIns,
        useSpread: opts.useSpread
      }], transformReactDisplayName, pure !== false && transformReactPure].filter(Boolean)
    };
  });

  var v = new OptionValidator("@babel/preset-typescript");
  function normalizeOptions(options) {
    if (options === void 0) {
      options = {};
    }
    var _options = options,
      _options$allowNamespa = _options.allowNamespaces,
      allowNamespaces = _options$allowNamespa === void 0 ? true : _options$allowNamespa,
      jsxPragma = _options.jsxPragma,
      onlyRemoveTypeImports = _options.onlyRemoveTypeImports;
    var TopLevelOptions = {
      ignoreExtensions: "ignoreExtensions",
      allowNamespaces: "allowNamespaces",
      disallowAmbiguousJSXLike: "disallowAmbiguousJSXLike",
      jsxPragma: "jsxPragma",
      jsxPragmaFrag: "jsxPragmaFrag",
      onlyRemoveTypeImports: "onlyRemoveTypeImports",
      optimizeConstEnums: "optimizeConstEnums",
      rewriteImportExtensions: "rewriteImportExtensions",
      allExtensions: "allExtensions",
      isTSX: "isTSX"
    };
    var jsxPragmaFrag = v.validateStringOption(TopLevelOptions.jsxPragmaFrag, options.jsxPragmaFrag, "React.Fragment");
    {
      var allExtensions = v.validateBooleanOption(TopLevelOptions.allExtensions, options.allExtensions, false);
      var isTSX = v.validateBooleanOption(TopLevelOptions.isTSX, options.isTSX, false);
      if (isTSX) {
        v.invariant(allExtensions, "isTSX:true requires allExtensions:true");
      }
    }
    var ignoreExtensions = v.validateBooleanOption(TopLevelOptions.ignoreExtensions, options.ignoreExtensions, false);
    var disallowAmbiguousJSXLike = v.validateBooleanOption(TopLevelOptions.disallowAmbiguousJSXLike, options.disallowAmbiguousJSXLike, false);
    if (disallowAmbiguousJSXLike) {
      {
        v.invariant(allExtensions, "disallowAmbiguousJSXLike:true requires allExtensions:true");
      }
    }
    var optimizeConstEnums = v.validateBooleanOption(TopLevelOptions.optimizeConstEnums, options.optimizeConstEnums, false);
    var rewriteImportExtensions = v.validateBooleanOption(TopLevelOptions.rewriteImportExtensions, options.rewriteImportExtensions, false);
    var normalized = {
      ignoreExtensions: ignoreExtensions,
      allowNamespaces: allowNamespaces,
      disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
      jsxPragma: jsxPragma,
      jsxPragmaFrag: jsxPragmaFrag,
      onlyRemoveTypeImports: onlyRemoveTypeImports,
      optimizeConstEnums: optimizeConstEnums,
      rewriteImportExtensions: rewriteImportExtensions
    };
    {
      normalized.allExtensions = allExtensions;
      normalized.isTSX = isTSX;
    }
    return normalized;
  }

  var pluginRewriteTSImports = declare(function (_ref) {
    var t = _ref.types;
    return {
      name: "preset-typescript/plugin-rewrite-ts-imports",
      visitor: {
        "ImportDeclaration|ExportAllDeclaration|ExportNamedDeclaration": function ImportDeclarationExportAllDeclarationExportNamedDeclaration(_ref2) {
          var node = _ref2.node;
          var source = node.source;
          var kind = t.isImportDeclaration(node) ? node.importKind : node.exportKind;
          if (kind === "value" && source && /[\\/]/.test(source.value)) {
            source.value = source.value.replace(/(\.[mc]?)ts$/, "$1js").replace(/\.tsx$/, ".js");
          }
        }
      }
    };
  });

  var presetTypescript = declare(function (api, opts) {
    api.assertVersion("*");
    var _normalizeOptions = normalizeOptions(opts),
      allExtensions = _normalizeOptions.allExtensions,
      ignoreExtensions = _normalizeOptions.ignoreExtensions,
      allowNamespaces = _normalizeOptions.allowNamespaces,
      disallowAmbiguousJSXLike = _normalizeOptions.disallowAmbiguousJSXLike,
      isTSX = _normalizeOptions.isTSX,
      jsxPragma = _normalizeOptions.jsxPragma,
      jsxPragmaFrag = _normalizeOptions.jsxPragmaFrag,
      onlyRemoveTypeImports = _normalizeOptions.onlyRemoveTypeImports,
      optimizeConstEnums = _normalizeOptions.optimizeConstEnums,
      rewriteImportExtensions = _normalizeOptions.rewriteImportExtensions;
    var pluginOptions = function pluginOptions(disallowAmbiguousJSXLike) {
      return {
        allowDeclareFields: opts.allowDeclareFields,
        allowNamespaces: allowNamespaces,
        disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
        jsxPragma: jsxPragma,
        jsxPragmaFrag: jsxPragmaFrag,
        onlyRemoveTypeImports: onlyRemoveTypeImports,
        optimizeConstEnums: optimizeConstEnums
      };
    };
    var getPlugins = function getPlugins(isTSX, disallowAmbiguousJSXLike) {
      {
        return [[transformTypeScript, Object.assign({
          isTSX: isTSX
        }, pluginOptions(disallowAmbiguousJSXLike))]];
      }
    };
    var disableExtensionDetect = allExtensions || ignoreExtensions;
    return {
      plugins: rewriteImportExtensions ? [pluginRewriteTSImports] : [],
      overrides: disableExtensionDetect ? [{
        plugins: getPlugins(isTSX, disallowAmbiguousJSXLike)
      }] : [{
        test: /\.ts$/,
        plugins: getPlugins(false, false)
      }, {
        test: /\.mts$/,
        sourceType: "module",
        plugins: getPlugins(false, true)
      }, {
        test: /\.cts$/,
        sourceType: "unambiguous",
        plugins: [[transformModulesCommonJS, {
          allowTopLevelThis: true
        }], [transformTypeScript, pluginOptions(true)]]
      }, {
        test: /\.tsx$/,
        plugins: getPlugins(true, false)
      }]
    };
  });

  var scriptTypes = ["text/jsx", "text/babel"];
  var headEl;
  var inlineScriptCount = 0;
  function transformCode(transformFn, script) {
    var source;
    if (script.url != null) {
      source = script.url;
    } else {
      source = "Inline Babel script";
      inlineScriptCount++;
      if (inlineScriptCount > 1) {
        source += " (" + inlineScriptCount + ")";
      }
    }
    return transformFn(script.content, buildBabelOptions(script, source)).code;
  }
  function buildBabelOptions(script, filename) {
    var presets = script.presets;
    if (!presets) {
      if (script.type === "module") {
        presets = ["react", ["env", {
          targets: {
            esmodules: true
          },
          modules: false
        }]];
      } else {
        presets = ["react", "env"];
      }
    }
    return {
      filename: filename,
      presets: presets,
      plugins: script.plugins || ["transform-class-properties", "transform-object-rest-spread", "transform-flow-strip-types"],
      sourceMaps: "inline",
      sourceFileName: filename
    };
  }
  function run(transformFn, script) {
    var scriptEl = document.createElement("script");
    if (script.type) {
      scriptEl.setAttribute("type", script.type);
    }
    if (script.nonce) {
      scriptEl.nonce = script.nonce;
    }
    scriptEl.text = transformCode(transformFn, script);
    headEl.appendChild(scriptEl);
  }
  function load(url, successCallback, errorCallback) {
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    if ("overrideMimeType" in xhr) {
      xhr.overrideMimeType("text/plain");
    }
    xhr.onreadystatechange = function () {
      if (xhr.readyState === 4) {
        if (xhr.status === 0 || xhr.status === 200) {
          successCallback(xhr.responseText);
        } else {
          errorCallback();
          throw new Error("Could not load " + url);
        }
      }
    };
    xhr.send(null);
  }
  function getPluginsOrPresetsFromScript(script, attributeName) {
    var rawValue = script.getAttribute(attributeName);
    if (rawValue === "") {
      return [];
    }
    if (!rawValue) {
      return null;
    }
    return rawValue.split(",").map(function (item) {
      return item.trim();
    });
  }
  function loadScripts(transformFn, scripts) {
    var results = [];
    var count = scripts.length;
    function check() {
      for (var i = 0; i < count; i++) {
        var result = results[i];
        if (result.loaded && !result.executed) {
          result.executed = true;
          run(transformFn, result);
        } else if (!result.loaded && !result.error && !result.async) {
          break;
        }
      }
    }
    var _loop = function _loop() {
      var script = scripts[i];
      var result = {
        async: script.hasAttribute("async"),
        type: script.getAttribute("data-type"),
        nonce: script.nonce,
        error: false,
        executed: false,
        plugins: getPluginsOrPresetsFromScript(script, "data-plugins"),
        presets: getPluginsOrPresetsFromScript(script, "data-presets"),
        loaded: false,
        url: null,
        content: null
      };
      results.push(result);
      if (script.src) {
        result.url = script.src;
        load(script.src, function (content) {
          result.loaded = true;
          result.content = content;
          check();
        }, function () {
          result.error = true;
          check();
        });
      } else {
        result.url = script.getAttribute("data-module") || null;
        result.loaded = true;
        result.content = script.innerHTML;
      }
    };
    for (var i = 0; i < count; i++) {
      _loop();
    }
    check();
  }
  function runScripts(transformFn, scripts) {
    headEl = document.getElementsByTagName("head")[0];
    if (!scripts) {
      scripts = document.getElementsByTagName("script");
    }
    var jsxScripts = [];
    for (var i = 0; i < scripts.length; i++) {
      var script = scripts.item(i);
      var type = script.type.split(";")[0];
      if (scriptTypes.includes(type)) {
        jsxScripts.push(script);
      }
    }
    if (jsxScripts.length === 0) {
      return;
    }
    console.warn("You are using the in-browser Babel transformer. Be sure to precompile " + "your scripts for production - https://babeljs.io/docs/setup/");
    loadScripts(transformFn, jsxScripts);
  }

  var packages = /*#__PURE__*/Object.freeze({
    __proto__: null,
    generator: index$2,
    parser: index$4,
    template: index$3,
    traverse: index$1,
    types: t$4
  });

  var legacyPluginAliases = {
    __proto__: null,
    "transform-class-static-block": "proposal-class-static-block",
    "transform-private-property-in-object": "proposal-private-property-in-object",
    "transform-class-properties": "proposal-class-properties",
    "transform-private-methods": "proposal-private-methods",
    "transform-numeric-separator": "proposal-numeric-separator",
    "transform-logical-assignment-operators": "proposal-logical-assignment-operators",
    "transform-nullish-coalescing-operator": "proposal-nullish-coalescing-operator",
    "transform-optional-chaining": "proposal-optional-chaining",
    "transform-json-strings": "proposal-json-strings",
    "transform-optional-catch-binding": "proposal-optional-catch-binding",
    "transform-async-generator-functions": "proposal-async-generator-functions",
    "transform-object-rest-spread": "proposal-object-rest-spread",
    "transform-unicode-property-regex": "proposal-unicode-property-regex",
    "transform-export-namespace-from": "proposal-export-namespace-from"
  };

  var _window;
  for (var name in legacyPluginAliases) {
    all[legacyPluginAliases[name]] = all[name];
  }
  all["proposal-unicode-sets-regex"] = all["transform-unicode-sets-regex"];
  var availablePlugins = {};
  registerPlugins(all);
  var availablePresets = {
    env: presetEnv,
    es2015: preset2015,
    es2016: function es2016() {
      return {
        plugins: [availablePlugins["transform-exponentiation-operator"]]
      };
    },
    es2017: function es2017() {
      return {
        plugins: [availablePlugins["transform-async-to-generator"]]
      };
    },
    react: presetReact,
    "stage-0": presetStage0,
    "stage-1": presetStage1,
    "stage-2": presetStage2,
    "stage-3": presetStage3,
    "es2015-loose": {
      presets: [[preset2015, {
        loose: true
      }]]
    },
    "es2015-no-commonjs": {
      presets: [[preset2015, {
        modules: false
      }]]
    },
    typescript: presetTypescript,
    flow: presetFlow
  };
  var isArray = Array.isArray || function (arg) {
    return Object.prototype.toString.call(arg) === "[object Array]";
  };
  function loadBuiltin(builtinTable, name) {
    if (isArray(name) && typeof name[0] === "string") {
      if (hasOwnProperty.call(builtinTable, name[0])) {
        return [builtinTable[name[0]]].concat(name.slice(1));
      }
      return;
    } else if (typeof name === "string") {
      return builtinTable[name];
    }
    return name;
  }
  function processOptions(options) {
    var presets = (options.presets || []).map(function (presetName) {
      var preset = loadBuiltin(availablePresets, presetName);
      if (preset) {
        if (isArray(preset) && typeof preset[0] === "object" && hasOwnProperty.call(preset[0], "buildPreset")) {
          preset[0] = Object.assign({}, preset[0], {
            buildPreset: preset[0].buildPreset
          });
        }
      } else {
        throw new Error("Invalid preset specified in Babel options: \"" + presetName + "\"");
      }
      return preset;
    });
    var plugins = (options.plugins || []).map(function (pluginName) {
      var plugin = loadBuiltin(availablePlugins, pluginName);
      if (!plugin) {
        throw new Error("Invalid plugin specified in Babel options: \"" + pluginName + "\"");
      }
      return plugin;
    });
    return Object.assign({
      babelrc: false
    }, options, {
      presets: presets,
      plugins: plugins
    });
  }
  function transform(code, options) {
    return transformSync(code, processOptions(options));
  }
  function transformFromAst(ast, code, options) {
    return transformFromAstSync(ast, code, processOptions(options));
  }
  var buildExternalHelpers = babelBuildExternalHelpers;
  function registerPlugin(name, plugin) {
    if (hasOwnProperty.call(availablePlugins, name)) {
      console.warn("A plugin named \"" + name + "\" is already registered, it will be overridden");
    }
    availablePlugins[name] = plugin;
  }
  function registerPlugins(newPlugins) {
    Object.keys(newPlugins).forEach(function (name) {
      return registerPlugin(name, newPlugins[name]);
    });
  }
  function registerPreset(name, preset) {
    if (hasOwnProperty.call(availablePresets, name)) {
      if (name === "env") {
        console.warn("@babel/preset-env is now included in @babel/standalone, please remove @babel/preset-env-standalone");
      } else {
        console.warn("A preset named \"" + name + "\" is already registered, it will be overridden");
      }
    }
    availablePresets[name] = preset;
  }
  function registerPresets(newPresets) {
    Object.keys(newPresets).forEach(function (name) {
      return registerPreset(name, newPresets[name]);
    });
  }
  var version = "7.25.6";
  function onDOMContentLoaded() {
    transformScriptTags();
  }
  if (typeof window !== "undefined" && (_window = window) != null && _window.addEventListener) {
    window.addEventListener("DOMContentLoaded", onDOMContentLoaded, false);
  }
  function transformScriptTags(scriptTags) {
    runScripts(transform, scriptTags);
  }
  function disableScriptTags() {
    window.removeEventListener("DOMContentLoaded", onDOMContentLoaded);
  }

  exports.availablePlugins = availablePlugins;
  exports.availablePresets = availablePresets;
  exports.buildExternalHelpers = buildExternalHelpers;
  exports.disableScriptTags = disableScriptTags;
  exports.packages = packages;
  exports.registerPlugin = registerPlugin;
  exports.registerPlugins = registerPlugins;
  exports.registerPreset = registerPreset;
  exports.registerPresets = registerPresets;
  exports.transform = transform;
  exports.transformFromAst = transformFromAst;
  exports.transformScriptTags = transformScriptTags;
  exports.version = version;

  Object.defineProperty(exports, '__esModule', { value: true });

}));
//# sourceMappingURL=babel.js.map
