Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Promises resolve in wrong order #1026

Closed
danieltroger opened this issue Dec 20, 2021 · 5 comments · Fixed by majacQ/core-js#4 or majacQ/core-js#5
Closed

Promises resolve in wrong order #1026

danieltroger opened this issue Dec 20, 2021 · 5 comments · Fixed by majacQ/core-js#4 or majacQ/core-js#5
Labels

Comments

@danieltroger
Copy link

AFAIK Promises are supposed to be deterministic. And as part of that, resolve in the order they were created.
I have found a case where that's not the case with the transpiled version, running in IE11.
It behaves differently from when executing it unpolyfilled in a normal browser.

Continuation of #1025 as issue

Input code snippet:

import "core-js/features/promise/index";

main();

async function main() {
  const fn1 = the_thing();
  const fn2 = the_thing();
  fn2(1);
  fn1(2);
}

function the_thing() {
  const resolved_promise = Promise.resolve();
  return async value => {
    console.log("Function for", value, "is awaiting resolved promise");
    await resolved_promise;
    console.log("Function for", value, "continued");
  };
}

Expected output:

22:26:14.912 Function for 1 is awaiting resolved promise debugger eval code:13:13
22:26:14.912 Function for 2 is awaiting resolved promise debugger eval code:13:13
22:26:14.913 Function for 1 continued debugger eval code:15:13
22:26:14.913 Function for 2 continued

Actual output, when ran in IE11:
Screenshot 2021-12-20 at 22 28 19

Transpiled code that I executed in IE11 (transpiled with parcel):
(function () {
function $parcel$interopDefault(a) {
  return a && a.__esModule ? a.default : a;
}
var $parcel$global =
typeof globalThis !== 'undefined'
  ? globalThis
  : typeof self !== 'undefined'
  ? self
  : typeof window !== 'undefined'
  ? window
  : typeof global !== 'undefined'
  ? global
  : {};
var $parcel$modules = {};
var $parcel$inits = {};

var parcelRequire = $parcel$global["parcelRequire06c1"];
if (parcelRequire == null) {
  parcelRequire = function(id) {
    if (id in $parcel$modules) {
      return $parcel$modules[id].exports;
    }
    if (id in $parcel$inits) {
      var init = $parcel$inits[id];
      delete $parcel$inits[id];
      var module = {id: id, exports: {}};
      $parcel$modules[id] = module;
      init.call(module.exports, module, module.exports);
      return module.exports;
    }
    var err = new Error("Cannot find module '" + id + "'");
    err.code = 'MODULE_NOT_FOUND';
    throw err;
  };

  parcelRequire.register = function register(id, init) {
    $parcel$inits[id] = init;
  };

  $parcel$global["parcelRequire06c1"] = parcelRequire;
}
parcelRequire.register("bUD10", function(module, exports) {
/**
 * Copyright (c) 2014-present, Facebook, Inc.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */ var $8ac330499876571b$var$runtime = function(exports) {
    var Op = Object.prototype;
    var hasOwn = Op.hasOwnProperty;
    var undefined; // More compressible than void 0.
    var $Symbol = typeof Symbol === "function" ? Symbol : {
    };
    var iteratorSymbol = $Symbol.iterator || "@@iterator";
    var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
    var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
    function define(obj, key, value) {
        Object.defineProperty(obj, key, {
            value: value,
            enumerable: true,
            configurable: true,
            writable: true
        });
        return obj[key];
    }
    try {
        // IE 8 has a broken Object.defineProperty that only works on DOM objects.
        define({
        }, "");
    } catch (err1) {
        define = function(obj, key, value) {
            return obj[key] = value;
        };
    }
    function wrap(innerFn, outerFn, self, tryLocsList) {
        // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
        var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
        var generator = Object.create(protoGenerator.prototype);
        var context = new Context(tryLocsList || []);
        // The ._invoke method unifies the implementations of the .next,
        // .throw, and .return methods.
        generator._invoke = makeInvokeMethod(innerFn, self, context);
        return generator;
    }
    exports.wrap = wrap;
    // Try/catch helper to minimize deoptimizations. Returns a completion
    // record like context.tryEntries[i].completion. This interface could
    // have been (and was previously) designed to take a closure to be
    // invoked without arguments, but in all the cases we care about we
    // already have an existing method we want to call, so there's no need
    // to create a new function object. We can even get away with assuming
    // the method takes exactly one argument, since that happens to be true
    // in every case, so we don't have to touch the arguments object. The
    // only additional allocation required is the completion record, which
    // has a stable shape and so hopefully should be cheap to allocate.
    function tryCatch(fn, obj, arg) {
        try {
            return {
                type: "normal",
                arg: fn.call(obj, arg)
            };
        } catch (err) {
            return {
                type: "throw",
                arg: err
            };
        }
    }
    var GenStateSuspendedStart = "suspendedStart";
    var GenStateSuspendedYield = "suspendedYield";
    var GenStateExecuting = "executing";
    var GenStateCompleted = "completed";
    // Returning this object from the innerFn has the same effect as
    // breaking out of the dispatch switch statement.
    var ContinueSentinel = {
    };
    // Dummy constructor functions that we use as the .constructor and
    // .constructor.prototype properties for functions that return Generator
    // objects. For full spec compliance, you may wish to configure your
    // minifier not to mangle the names of these two functions.
    function Generator() {
    }
    function GeneratorFunction() {
    }
    function GeneratorFunctionPrototype() {
    }
    // This is a polyfill for %IteratorPrototype% for environments that
    // don't natively support it.
    var IteratorPrototype = {
    };
    define(IteratorPrototype, iteratorSymbol, function() {
        return this;
    });
    var getProto = Object.getPrototypeOf;
    var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
    if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) // This environment has a native %IteratorPrototype%; use it instead
    // of the polyfill.
    IteratorPrototype = NativeIteratorPrototype;
    var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
    GeneratorFunction.prototype = GeneratorFunctionPrototype;
    define(Gp, "constructor", GeneratorFunctionPrototype);
    define(GeneratorFunctionPrototype, "constructor", GeneratorFunction);
    GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction");
    // Helper for defining the .next, .throw, and .return methods of the
    // Iterator interface in terms of a single ._invoke method.
    function defineIteratorMethods(prototype) {
        [
            "next",
            "throw",
            "return"
        ].forEach(function(method) {
            define(prototype, method, function(arg) {
                return this._invoke(method, arg);
            });
        });
    }
    exports.isGeneratorFunction = function(genFun) {
        var ctor = typeof genFun === "function" && genFun.constructor;
        return ctor ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can
        // do is to check its .name property.
        (ctor.displayName || ctor.name) === "GeneratorFunction" : false;
    };
    exports.mark = function(genFun) {
        if (Object.setPrototypeOf) Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
        else {
            genFun.__proto__ = GeneratorFunctionPrototype;
            define(genFun, toStringTagSymbol, "GeneratorFunction");
        }
        genFun.prototype = Object.create(Gp);
        return genFun;
    };
    // Within the body of any async function, `await x` is transformed to
    // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
    // `hasOwn.call(value, "__await")` to determine if the yielded value is
    // meant to be awaited.
    exports.awrap = function(arg) {
        return {
            __await: arg
        };
    };
    function AsyncIterator(generator, PromiseImpl) {
        function invoke(method, arg, resolve, reject) {
            var record = tryCatch(generator[method], generator, arg);
            if (record.type === "throw") reject(record.arg);
            else {
                var result = record.arg;
                var value1 = result.value;
                if (value1 && typeof value1 === "object" && hasOwn.call(value1, "__await")) return PromiseImpl.resolve(value1.__await).then(function(value) {
                    invoke("next", value, resolve, reject);
                }, function(err) {
                    invoke("throw", err, resolve, reject);
                });
                return PromiseImpl.resolve(value1).then(function(unwrapped) {
                    // When a yielded Promise is resolved, its final value becomes
                    // the .value of the Promise<{value,done}> result for the
                    // current iteration.
                    result.value = unwrapped;
                    resolve(result);
                }, function(error) {
                    // If a rejected Promise was yielded, throw the rejection back
                    // into the async generator function so it can be handled there.
                    return invoke("throw", error, resolve, reject);
                });
            }
        }
        var previousPromise;
        function enqueue(method, arg) {
            function callInvokeWithMethodAndArg() {
                return new PromiseImpl(function(resolve, reject) {
                    invoke(method, arg, resolve, reject);
                });
            }
            return previousPromise = // If enqueue has been called before, then we want to wait until
            // all previous Promises have been resolved before calling invoke,
            // so that results are always delivered in the correct order. If
            // enqueue has not been called before, then it is important to
            // call invoke immediately, without waiting on a callback to fire,
            // so that the async generator function has the opportunity to do
            // any necessary setup in a predictable way. This predictability
            // is why the Promise constructor synchronously invokes its
            // executor callback, and why async functions synchronously
            // execute code before the first await. Since we implement simple
            // async functions in terms of async generators, it is especially
            // important to get this right, even though it requires care.
            previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later
            // invocations of the iterator.
            callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
        }
        // Define the unified helper method that is used to implement .next,
        // .throw, and .return (see defineIteratorMethods).
        this._invoke = enqueue;
    }
    defineIteratorMethods(AsyncIterator.prototype);
    define(AsyncIterator.prototype, asyncIteratorSymbol, function() {
        return this;
    });
    exports.AsyncIterator = AsyncIterator;
    // Note that simple async functions are implemented on top of
    // AsyncIterator objects; they just return a Promise for the value of
    // the final result produced by the iterator.
    exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {
        if (PromiseImpl === void 0) PromiseImpl = Promise;
        var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
        return exports.isGeneratorFunction(outerFn) ? iter // If outerFn is a generator, return the full iterator.
         : iter.next().then(function(result) {
            return result.done ? result.value : iter.next();
        });
    };
    function makeInvokeMethod(innerFn, self, context) {
        var state = GenStateSuspendedStart;
        return function invoke(method, arg) {
            if (state === GenStateExecuting) throw new Error("Generator is already running");
            if (state === GenStateCompleted) {
                if (method === "throw") throw arg;
                // Be forgiving, per 25.3.3.3.3 of the spec:
                // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
                return doneResult();
            }
            context.method = method;
            context.arg = arg;
            while(true){
                var delegate = context.delegate;
                if (delegate) {
                    var delegateResult = maybeInvokeDelegate(delegate, context);
                    if (delegateResult) {
                        if (delegateResult === ContinueSentinel) continue;
                        return delegateResult;
                    }
                }
                if (context.method === "next") // Setting context._sent for legacy support of Babel's
                // function.sent implementation.
                context.sent = context._sent = context.arg;
                else if (context.method === "throw") {
                    if (state === GenStateSuspendedStart) {
                        state = GenStateCompleted;
                        throw context.arg;
                    }
                    context.dispatchException(context.arg);
                } else if (context.method === "return") context.abrupt("return", context.arg);
                state = GenStateExecuting;
                var record = tryCatch(innerFn, self, context);
                if (record.type === "normal") {
                    // If an exception is thrown from innerFn, we leave state ===
                    // GenStateExecuting and loop back for another invocation.
                    state = context.done ? GenStateCompleted : GenStateSuspendedYield;
                    if (record.arg === ContinueSentinel) continue;
                    return {
                        value: record.arg,
                        done: context.done
                    };
                } else if (record.type === "throw") {
                    state = GenStateCompleted;
                    // Dispatch the exception by looping back around to the
                    // context.dispatchException(context.arg) call above.
                    context.method = "throw";
                    context.arg = record.arg;
                }
            }
        };
    }
    // Call delegate.iterator[context.method](context.arg) and handle the
    // result, either by returning a { value, done } result from the
    // delegate iterator, or by modifying context.method and context.arg,
    // setting context.delegate to null, and returning the ContinueSentinel.
    function maybeInvokeDelegate(delegate, context) {
        var method = delegate.iterator[context.method];
        if (method === undefined) {
            // A .throw or .return when the delegate iterator has no .throw
            // method always terminates the yield* loop.
            context.delegate = null;
            if (context.method === "throw") {
                // Note: ["return"] must be used for ES3 parsing compatibility.
                if (delegate.iterator["return"]) {
                    // If the delegate iterator has a return method, give it a
                    // chance to clean up.
                    context.method = "return";
                    context.arg = undefined;
                    maybeInvokeDelegate(delegate, context);
                    if (context.method === "throw") // If maybeInvokeDelegate(context) changed context.method from
                    // "return" to "throw", let that override the TypeError below.
                    return ContinueSentinel;
                }
                context.method = "throw";
                context.arg = new TypeError("The iterator does not provide a 'throw' method");
            }
            return ContinueSentinel;
        }
        var record = tryCatch(method, delegate.iterator, context.arg);
        if (record.type === "throw") {
            context.method = "throw";
            context.arg = record.arg;
            context.delegate = null;
            return ContinueSentinel;
        }
        var info = record.arg;
        if (!info) {
            context.method = "throw";
            context.arg = new TypeError("iterator result is not an object");
            context.delegate = null;
            return ContinueSentinel;
        }
        if (info.done) {
            // Assign the result of the finished delegate to the temporary
            // variable specified by delegate.resultName (see delegateYield).
            context[delegate.resultName] = info.value;
            // Resume execution at the desired location (see delegateYield).
            context.next = delegate.nextLoc;
            // If context.method was "throw" but the delegate handled the
            // exception, let the outer generator proceed normally. If
            // context.method was "next", forget context.arg since it has been
            // "consumed" by the delegate iterator. If context.method was
            // "return", allow the original .return call to continue in the
            // outer generator.
            if (context.method !== "return") {
                context.method = "next";
                context.arg = undefined;
            }
        } else // Re-yield the result returned by the delegate method.
        return info;
        // The delegate iterator is finished, so forget it and continue with
        // the outer generator.
        context.delegate = null;
        return ContinueSentinel;
    }
    // Define Generator.prototype.{next,throw,return} in terms of the
    // unified ._invoke helper method.
    defineIteratorMethods(Gp);
    define(Gp, toStringTagSymbol, "Generator");
    // A Generator should always return itself as the iterator object when the
    // @@iterator function is called on it. Some browsers' implementations of the
    // iterator prototype chain incorrectly implement this, causing the Generator
    // object to not be returned from this call. This ensures that doesn't happen.
    // See https://github.com/facebook/regenerator/issues/274 for more details.
    define(Gp, iteratorSymbol, function() {
        return this;
    });
    define(Gp, "toString", function() {
        return "[object Generator]";
    });
    function pushTryEntry(locs) {
        var entry = {
            tryLoc: locs[0]
        };
        if (1 in locs) entry.catchLoc = locs[1];
        if (2 in locs) {
            entry.finallyLoc = locs[2];
            entry.afterLoc = locs[3];
        }
        this.tryEntries.push(entry);
    }
    function resetTryEntry(entry) {
        var record = entry.completion || {
        };
        record.type = "normal";
        delete record.arg;
        entry.completion = record;
    }
    function Context(tryLocsList) {
        // The root entry object (effectively a try statement without a catch
        // or a finally block) gives us a place to store values thrown from
        // locations where there is no enclosing try statement.
        this.tryEntries = [
            {
                tryLoc: "root"
            }
        ];
        tryLocsList.forEach(pushTryEntry, this);
        this.reset(true);
    }
    exports.keys = function(object) {
        var keys = [];
        for(var key1 in object)keys.push(key1);
        keys.reverse();
        // Rather than returning an object with a next method, we keep
        // things simple and return the next function itself.
        return function next() {
            while(keys.length){
                var key = keys.pop();
                if (key in object) {
                    next.value = key;
                    next.done = false;
                    return next;
                }
            }
            // To avoid creating an additional object, we just hang the .value
            // and .done properties off the next function object itself. This
            // also ensures that the minifier will not anonymize the function.
            next.done = true;
            return next;
        };
    };
    function values(iterable) {
        if (iterable) {
            var iteratorMethod = iterable[iteratorSymbol];
            if (iteratorMethod) return iteratorMethod.call(iterable);
            if (typeof iterable.next === "function") return iterable;
            if (!isNaN(iterable.length)) {
                var i = -1, next1 = function next() {
                    while(++i < iterable.length)if (hasOwn.call(iterable, i)) {
                        next.value = iterable[i];
                        next.done = false;
                        return next;
                    }
                    next.value = undefined;
                    next.done = true;
                    return next;
                };
                return next1.next = next1;
            }
        }
        // Return an iterator with no values.
        return {
            next: doneResult
        };
    }
    exports.values = values;
    function doneResult() {
        return {
            value: undefined,
            done: true
        };
    }
    Context.prototype = {
        constructor: Context,
        reset: function(skipTempReset) {
            this.prev = 0;
            this.next = 0;
            // Resetting context._sent for legacy support of Babel's
            // function.sent implementation.
            this.sent = this._sent = undefined;
            this.done = false;
            this.delegate = null;
            this.method = "next";
            this.arg = undefined;
            this.tryEntries.forEach(resetTryEntry);
            if (!skipTempReset) {
                for(var name in this)// Not sure about the optimal order of these conditions:
                if (name.charAt(0) === "t" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) this[name] = undefined;
            }
        },
        stop: function() {
            this.done = true;
            var rootEntry = this.tryEntries[0];
            var rootRecord = rootEntry.completion;
            if (rootRecord.type === "throw") throw rootRecord.arg;
            return this.rval;
        },
        dispatchException: function(exception) {
            if (this.done) throw exception;
            var context = this;
            function handle(loc, caught) {
                record.type = "throw";
                record.arg = exception;
                context.next = loc;
                if (caught) {
                    // If the dispatched exception was caught by a catch block,
                    // then let that catch block handle the exception normally.
                    context.method = "next";
                    context.arg = undefined;
                }
                return !!caught;
            }
            for(var i = this.tryEntries.length - 1; i >= 0; --i){
                var entry = this.tryEntries[i];
                var record = entry.completion;
                if (entry.tryLoc === "root") // Exception thrown outside of any try block that could handle
                // it, so set the completion value of the entire function to
                // throw the exception.
                return handle("end");
                if (entry.tryLoc <= this.prev) {
                    var hasCatch = hasOwn.call(entry, "catchLoc");
                    var hasFinally = hasOwn.call(entry, "finallyLoc");
                    if (hasCatch && hasFinally) {
                        if (this.prev < entry.catchLoc) return handle(entry.catchLoc, true);
                        else if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
                    } else if (hasCatch) {
                        if (this.prev < entry.catchLoc) return handle(entry.catchLoc, true);
                    } else if (hasFinally) {
                        if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
                    } else throw new Error("try statement without catch or finally");
                }
            }
        },
        abrupt: function(type, arg) {
            for(var i = this.tryEntries.length - 1; i >= 0; --i){
                var entry = this.tryEntries[i];
                if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
                    var finallyEntry = entry;
                    break;
                }
            }
            if (finallyEntry && (type === "break" || type === "continue") && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc) // Ignore the finally entry if control is not jumping to a
            // location outside the try/catch block.
            finallyEntry = null;
            var record = finallyEntry ? finallyEntry.completion : {
            };
            record.type = type;
            record.arg = arg;
            if (finallyEntry) {
                this.method = "next";
                this.next = finallyEntry.finallyLoc;
                return ContinueSentinel;
            }
            return this.complete(record);
        },
        complete: function(record, afterLoc) {
            if (record.type === "throw") throw record.arg;
            if (record.type === "break" || record.type === "continue") this.next = record.arg;
            else if (record.type === "return") {
                this.rval = this.arg = record.arg;
                this.method = "return";
                this.next = "end";
            } else if (record.type === "normal" && afterLoc) this.next = afterLoc;
            return ContinueSentinel;
        },
        finish: function(finallyLoc) {
            for(var i = this.tryEntries.length - 1; i >= 0; --i){
                var entry = this.tryEntries[i];
                if (entry.finallyLoc === finallyLoc) {
                    this.complete(entry.completion, entry.afterLoc);
                    resetTryEntry(entry);
                    return ContinueSentinel;
                }
            }
        },
        "catch": function(tryLoc) {
            for(var i = this.tryEntries.length - 1; i >= 0; --i){
                var entry = this.tryEntries[i];
                if (entry.tryLoc === tryLoc) {
                    var record = entry.completion;
                    if (record.type === "throw") {
                        var thrown = record.arg;
                        resetTryEntry(entry);
                    }
                    return thrown;
                }
            }
            // The context.catch method must only be called with a location
            // argument that corresponds to a known catch block.
            throw new Error("illegal catch attempt");
        },
        delegateYield: function(iterable, resultName, nextLoc) {
            this.delegate = {
                iterator: values(iterable),
                resultName: resultName,
                nextLoc: nextLoc
            };
            if (this.method === "next") // Deliberately forget the last sent value so that we don't
            // accidentally pass it on to the delegate.
            this.arg = undefined;
            return ContinueSentinel;
        }
    };
    // Regardless of whether this script is executing as a CommonJS module
    // or not, return the runtime object so that we can declare the variable
    // regeneratorRuntime in the outer scope, which allows this module to be
    // injected easily by `bin/regenerator --include-runtime script.js`.
    return exports;
}(// If this script is executing as a CommonJS module, use module.exports
// as the regeneratorRuntime namespace. Otherwise create a new empty
// object. Either way, the resulting object will be used to initialize
// the regeneratorRuntime variable at the top of this file.
"object" === "object" ? module.exports : {
});
try {
    regeneratorRuntime = $8ac330499876571b$var$runtime;
} catch (accidentalStrictMode) {
    // This module should not be running in strict mode, so the above
    // assignment should always work unless something is misconfigured. Just
    // in case runtime.js accidentally runs in strict mode, in modern engines
    // we can explicitly access globalThis. In older engines we can escape
    // strict mode using a global Function call. This could conceivably fail
    // if a Content Security Policy forbids using Function, but in that case
    // the proper solution is to fix the accidental strict mode problem. If
    // you've misconfigured your bundler to force strict mode and applied a
    // CSP to forbid Function, and you're not willing to fix either of those
    // problems, please detail your unique predicament in a GitHub issue.
    if (typeof globalThis === "object") globalThis.regeneratorRuntime = $8ac330499876571b$var$runtime;
    else Function("r", "regeneratorRuntime = r")($8ac330499876571b$var$runtime);
}

});

var $bbb9b92677e7f4e1$exports = {};
function $bbb9b92677e7f4e1$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
    try {
        var info = gen[key](arg);
        var value = info.value;
    } catch (error) {
        reject(error);
        return;
    }
    if (info.done) resolve(value);
    else Promise.resolve(value).then(_next, _throw);
}
function $bbb9b92677e7f4e1$var$_asyncToGenerator(fn) {
    return function() {
        var self = this, args = arguments;
        return new Promise(function(resolve, reject) {
            var gen = fn.apply(self, args);
            function _next(value) {
                $bbb9b92677e7f4e1$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
            }
            function _throw(err) {
                $bbb9b92677e7f4e1$var$asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
            }
            _next(undefined);
        });
    };
}
$bbb9b92677e7f4e1$exports = $bbb9b92677e7f4e1$var$_asyncToGenerator, $bbb9b92677e7f4e1$exports.__esModule = true, $bbb9b92677e7f4e1$exports["default"] = $bbb9b92677e7f4e1$exports;


var $efaf621fa185bd77$exports = {};

$efaf621fa185bd77$exports = (parcelRequire("bUD10"));


var $19dfc4060129c05d$exports = {};
'use strict';
var $97ec2e5c7182541a$exports = {};
var $36dc2b6d1092d240$exports = {};
var $f333edce04dc84d2$exports = {};
var $f333edce04dc84d2$var$check = function(it) {
    return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
$f333edce04dc84d2$exports = // eslint-disable-next-line es/no-global-this -- safe
$f333edce04dc84d2$var$check(typeof globalThis == 'object' && globalThis) || $f333edce04dc84d2$var$check(typeof window == 'object' && window) || // eslint-disable-next-line no-restricted-globals -- safe
$f333edce04dc84d2$var$check(typeof self == 'object' && self) || $f333edce04dc84d2$var$check(typeof $parcel$global == 'object' && $parcel$global) || // eslint-disable-next-line no-new-func -- fallback
(function() {
    return this;
})() || Function('return this')();


var $0e047cd7e4bd2a61$exports = {};
var $0e047cd7e4bd2a61$var$FunctionPrototype = Function.prototype;
var $0e047cd7e4bd2a61$var$bind = $0e047cd7e4bd2a61$var$FunctionPrototype.bind;
var $0e047cd7e4bd2a61$var$call = $0e047cd7e4bd2a61$var$FunctionPrototype.call;
var $0e047cd7e4bd2a61$var$callBind = $0e047cd7e4bd2a61$var$bind && $0e047cd7e4bd2a61$var$bind.bind($0e047cd7e4bd2a61$var$call);
$0e047cd7e4bd2a61$exports = $0e047cd7e4bd2a61$var$bind ? function(fn) {
    return fn && $0e047cd7e4bd2a61$var$callBind($0e047cd7e4bd2a61$var$call, fn);
} : function(fn) {
    return fn && function() {
        return $0e047cd7e4bd2a61$var$call.apply(fn, arguments);
    };
};


var $639365070cb811ed$exports = {};
$639365070cb811ed$exports = function(exec) {
    try {
        return !!exec();
    } catch (error) {
        return true;
    }
};


var $5f5cecfe0210d5fc$exports = {};

var $5f5cecfe0210d5fc$var$toString = $0e047cd7e4bd2a61$exports({
}.toString);
var $5f5cecfe0210d5fc$var$stringSlice = $0e047cd7e4bd2a61$exports(''.slice);
$5f5cecfe0210d5fc$exports = function(it) {
    return $5f5cecfe0210d5fc$var$stringSlice($5f5cecfe0210d5fc$var$toString(it), 8, -1);
};


var $36dc2b6d1092d240$var$Object = $f333edce04dc84d2$exports.Object;
var $36dc2b6d1092d240$var$split = $0e047cd7e4bd2a61$exports(''.split);
// fallback for non-array-like ES3 and non-enumerable old V8 strings
$36dc2b6d1092d240$exports = $639365070cb811ed$exports(function() {
    // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
    // eslint-disable-next-line no-prototype-builtins -- safe
    return !$36dc2b6d1092d240$var$Object('z').propertyIsEnumerable(0);
}) ? function(it) {
    return $5f5cecfe0210d5fc$exports(it) == 'String' ? $36dc2b6d1092d240$var$split(it, '') : $36dc2b6d1092d240$var$Object(it);
} : $36dc2b6d1092d240$var$Object;


var $61d1221ff70a8a56$exports = {};

var $61d1221ff70a8a56$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// `RequireObjectCoercible` abstract operation
// https://tc39.es/ecma262/#sec-requireobjectcoercible
$61d1221ff70a8a56$exports = function(it) {
    if (it == undefined) throw $61d1221ff70a8a56$var$TypeError("Can't call method on " + it);
    return it;
};


$97ec2e5c7182541a$exports = function(it) {
    return $36dc2b6d1092d240$exports($61d1221ff70a8a56$exports(it));
};


var $b6aa2c4ec4d930d5$exports = {};
var $3e9517d770b151f3$exports = {};

var $7221bdedd963a313$exports = {};
var $0a617e53de17f0cf$exports = {};
$0a617e53de17f0cf$exports = false;


var $e54370cbe81dd8f8$exports = {};

var $883391211b9e3206$exports = {};

// eslint-disable-next-line es/no-object-defineproperty -- safe
var $883391211b9e3206$var$defineProperty = Object.defineProperty;
$883391211b9e3206$exports = function(key, value) {
    try {
        $883391211b9e3206$var$defineProperty($f333edce04dc84d2$exports, key, {
            value: value,
            configurable: true,
            writable: true
        });
    } catch (error) {
        $f333edce04dc84d2$exports[key] = value;
    }
    return value;
};


var $e54370cbe81dd8f8$var$SHARED = '__core-js_shared__';
var $e54370cbe81dd8f8$var$store = $f333edce04dc84d2$exports[$e54370cbe81dd8f8$var$SHARED] || $883391211b9e3206$exports($e54370cbe81dd8f8$var$SHARED, {
});
$e54370cbe81dd8f8$exports = $e54370cbe81dd8f8$var$store;


($7221bdedd963a313$exports = function(key, value) {
    return $e54370cbe81dd8f8$exports[key] || ($e54370cbe81dd8f8$exports[key] = value !== undefined ? value : {
    });
})('versions', []).push({
    version: '3.20.0',
    mode: $0a617e53de17f0cf$exports ? 'pure' : 'global',
    copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
});


var $c98185f2a2200053$exports = {};

var $0c22979a3ee624f0$exports = {};


var $0c22979a3ee624f0$var$Object = $f333edce04dc84d2$exports.Object;
// `ToObject` abstract operation
// https://tc39.es/ecma262/#sec-toobject
$0c22979a3ee624f0$exports = function(argument) {
    return $0c22979a3ee624f0$var$Object($61d1221ff70a8a56$exports(argument));
};


var $c98185f2a2200053$var$hasOwnProperty = $0e047cd7e4bd2a61$exports({
}.hasOwnProperty);
// `HasOwnProperty` abstract operation
// https://tc39.es/ecma262/#sec-hasownproperty
$c98185f2a2200053$exports = Object.hasOwn || function hasOwn(it, key) {
    return $c98185f2a2200053$var$hasOwnProperty($0c22979a3ee624f0$exports(it), key);
};


var $0831e930e27ad9c2$exports = {};

var $0831e930e27ad9c2$var$id = 0;
var $0831e930e27ad9c2$var$postfix = Math.random();
var $0831e930e27ad9c2$var$toString = $0e047cd7e4bd2a61$exports(1..toString);
$0831e930e27ad9c2$exports = function(key) {
    return 'Symbol(' + (key === undefined ? '' : key) + ')_' + $0831e930e27ad9c2$var$toString(++$0831e930e27ad9c2$var$id + $0831e930e27ad9c2$var$postfix, 36);
};


var $2ac071e6478bb61f$exports = {};
var $f708c8065848ad38$exports = {};

var $aa75c90eb2c8cdd8$exports = {};
var $f4dfad6b8aca7fc7$exports = {};

var $fcbda71016cee9bb$exports = {};
// `IsCallable` abstract operation
// https://tc39.es/ecma262/#sec-iscallable
$fcbda71016cee9bb$exports = function(argument) {
    return typeof argument == 'function';
};


var $f4dfad6b8aca7fc7$var$aFunction = function(argument) {
    return $fcbda71016cee9bb$exports(argument) ? argument : undefined;
};
$f4dfad6b8aca7fc7$exports = function(namespace, method) {
    return arguments.length < 2 ? $f4dfad6b8aca7fc7$var$aFunction($f333edce04dc84d2$exports[namespace]) : $f333edce04dc84d2$exports[namespace] && $f333edce04dc84d2$exports[namespace][method];
};


$aa75c90eb2c8cdd8$exports = $f4dfad6b8aca7fc7$exports('navigator', 'userAgent') || '';


var $f708c8065848ad38$var$process = $f333edce04dc84d2$exports.process;
var $f708c8065848ad38$var$Deno = $f333edce04dc84d2$exports.Deno;
var $f708c8065848ad38$var$versions = $f708c8065848ad38$var$process && $f708c8065848ad38$var$process.versions || $f708c8065848ad38$var$Deno && $f708c8065848ad38$var$Deno.version;
var $f708c8065848ad38$var$v8 = $f708c8065848ad38$var$versions && $f708c8065848ad38$var$versions.v8;
var $f708c8065848ad38$var$match, $f708c8065848ad38$var$version;
if ($f708c8065848ad38$var$v8) {
    $f708c8065848ad38$var$match = $f708c8065848ad38$var$v8.split('.');
    // in old Chrome, versions of V8 isn't V8 = Chrome / 10
    // but their correct versions are not interesting for us
    $f708c8065848ad38$var$version = $f708c8065848ad38$var$match[0] > 0 && $f708c8065848ad38$var$match[0] < 4 ? 1 : +($f708c8065848ad38$var$match[0] + $f708c8065848ad38$var$match[1]);
}
// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`
// so check `userAgent` even if `.v8` exists, but 0
if (!$f708c8065848ad38$var$version && $aa75c90eb2c8cdd8$exports) {
    $f708c8065848ad38$var$match = $aa75c90eb2c8cdd8$exports.match(/Edge\/(\d+)/);
    if (!$f708c8065848ad38$var$match || $f708c8065848ad38$var$match[1] >= 74) {
        $f708c8065848ad38$var$match = $aa75c90eb2c8cdd8$exports.match(/Chrome\/(\d+)/);
        if ($f708c8065848ad38$var$match) $f708c8065848ad38$var$version = +$f708c8065848ad38$var$match[1];
    }
}
$f708c8065848ad38$exports = $f708c8065848ad38$var$version;



// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
$2ac071e6478bb61f$exports = !!Object.getOwnPropertySymbols && !$639365070cb811ed$exports(function() {
    var symbol = Symbol();
    // Chrome 38 Symbol has incorrect toString conversion
    // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances
    return !String(symbol) || !(Object(symbol) instanceof Symbol) || // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
    !Symbol.sham && $f708c8065848ad38$exports && $f708c8065848ad38$exports < 41;
});


var $c0ba2cd94ccee146$exports = {};

$c0ba2cd94ccee146$exports = $2ac071e6478bb61f$exports && !Symbol.sham && typeof Symbol.iterator == 'symbol';


var $3e9517d770b151f3$var$WellKnownSymbolsStore = $7221bdedd963a313$exports('wks');
var $3e9517d770b151f3$var$Symbol = $f333edce04dc84d2$exports.Symbol;
var $3e9517d770b151f3$var$symbolFor = $3e9517d770b151f3$var$Symbol && $3e9517d770b151f3$var$Symbol['for'];
var $3e9517d770b151f3$var$createWellKnownSymbol = $c0ba2cd94ccee146$exports ? $3e9517d770b151f3$var$Symbol : $3e9517d770b151f3$var$Symbol && $3e9517d770b151f3$var$Symbol.withoutSetter || $0831e930e27ad9c2$exports;
$3e9517d770b151f3$exports = function(name) {
    if (!$c98185f2a2200053$exports($3e9517d770b151f3$var$WellKnownSymbolsStore, name) || !($2ac071e6478bb61f$exports || typeof $3e9517d770b151f3$var$WellKnownSymbolsStore[name] == 'string')) {
        var description = 'Symbol.' + name;
        if ($2ac071e6478bb61f$exports && $c98185f2a2200053$exports($3e9517d770b151f3$var$Symbol, name)) $3e9517d770b151f3$var$WellKnownSymbolsStore[name] = $3e9517d770b151f3$var$Symbol[name];
        else if ($c0ba2cd94ccee146$exports && $3e9517d770b151f3$var$symbolFor) $3e9517d770b151f3$var$WellKnownSymbolsStore[name] = $3e9517d770b151f3$var$symbolFor(description);
        else $3e9517d770b151f3$var$WellKnownSymbolsStore[name] = $3e9517d770b151f3$var$createWellKnownSymbol(description);
    }
    return $3e9517d770b151f3$var$WellKnownSymbolsStore[name];
};


var $d3ac9847cf651bba$exports = {};
var $8cde29e156f67727$exports = {};

var $03cf12799242f409$exports = {};

$03cf12799242f409$exports = function(it) {
    return typeof it == 'object' ? it !== null : $fcbda71016cee9bb$exports(it);
};


var $8cde29e156f67727$var$String = $f333edce04dc84d2$exports.String;
var $8cde29e156f67727$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// `Assert: Type(argument) is Object`
$8cde29e156f67727$exports = function(argument) {
    if ($03cf12799242f409$exports(argument)) return argument;
    throw $8cde29e156f67727$var$TypeError($8cde29e156f67727$var$String(argument) + ' is not an object');
};


var $67889ba1099c927e$exports = {};
var $b2de12f63ee8e8eb$exports = {};

// Detect IE8's incomplete defineProperty implementation
$b2de12f63ee8e8eb$exports = !$639365070cb811ed$exports(function() {
    // eslint-disable-next-line es/no-object-defineproperty -- required for testing
    return Object.defineProperty({
    }, 1, {
        get: function() {
            return 7;
        }
    })[1] != 7;
});


// `Object.defineProperty` method
// https://tc39.es/ecma262/#sec-object.defineproperty
var $1fe1833a1cb14f9b$export$2d1720544b23b823;


var $530ff8786b8b3414$exports = {};


var $0158366a26a6b285$exports = {};


var $0158366a26a6b285$var$document = $f333edce04dc84d2$exports.document;
// typeof document.createElement is 'object' in old IE
var $0158366a26a6b285$var$EXISTS = $03cf12799242f409$exports($0158366a26a6b285$var$document) && $03cf12799242f409$exports($0158366a26a6b285$var$document.createElement);
$0158366a26a6b285$exports = function(it) {
    return $0158366a26a6b285$var$EXISTS ? $0158366a26a6b285$var$document.createElement(it) : {
    };
};


// Thank's IE8 for his funny defineProperty
$530ff8786b8b3414$exports = !$b2de12f63ee8e8eb$exports && !$639365070cb811ed$exports(function() {
    // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
    return Object.defineProperty($0158366a26a6b285$exports('div'), 'a', {
        get: function() {
            return 7;
        }
    }).a != 7;
});



var $69748fdc4ab19225$exports = {};
var $f07d310f67fd0744$exports = {};

var $541d4c9e93c87577$exports = {};
var $541d4c9e93c87577$var$call = Function.prototype.call;
$541d4c9e93c87577$exports = $541d4c9e93c87577$var$call.bind ? $541d4c9e93c87577$var$call.bind($541d4c9e93c87577$var$call) : function() {
    return $541d4c9e93c87577$var$call.apply($541d4c9e93c87577$var$call, arguments);
};



var $6a4f41ed357b4c29$exports = {};



var $b5a2a9c765693536$exports = {};

$b5a2a9c765693536$exports = $0e047cd7e4bd2a61$exports({
}.isPrototypeOf);



var $6a4f41ed357b4c29$var$Object = $f333edce04dc84d2$exports.Object;
$6a4f41ed357b4c29$exports = $c0ba2cd94ccee146$exports ? function(it) {
    return typeof it == 'symbol';
} : function(it) {
    var $Symbol = $f4dfad6b8aca7fc7$exports('Symbol');
    return $fcbda71016cee9bb$exports($Symbol) && $b5a2a9c765693536$exports($Symbol.prototype, $6a4f41ed357b4c29$var$Object(it));
};


var $bcadeac5df64398e$exports = {};
var $c2aed39e690846d2$exports = {};


var $7f50243e65ef1e57$exports = {};

var $7f50243e65ef1e57$var$String = $f333edce04dc84d2$exports.String;
$7f50243e65ef1e57$exports = function(argument) {
    try {
        return $7f50243e65ef1e57$var$String(argument);
    } catch (error) {
        return 'Object';
    }
};


var $c2aed39e690846d2$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// `Assert: IsCallable(argument) is true`
$c2aed39e690846d2$exports = function(argument) {
    if ($fcbda71016cee9bb$exports(argument)) return argument;
    throw $c2aed39e690846d2$var$TypeError($7f50243e65ef1e57$exports(argument) + ' is not a function');
};


// `GetMethod` abstract operation
// https://tc39.es/ecma262/#sec-getmethod
$bcadeac5df64398e$exports = function(V, P) {
    var func = V[P];
    return func == null ? undefined : $c2aed39e690846d2$exports(func);
};


var $cf2e59bf08633327$exports = {};




var $cf2e59bf08633327$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// `OrdinaryToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-ordinarytoprimitive
$cf2e59bf08633327$exports = function(input, pref) {
    var fn, val;
    if (pref === 'string' && $fcbda71016cee9bb$exports(fn = input.toString) && !$03cf12799242f409$exports(val = $541d4c9e93c87577$exports(fn, input))) return val;
    if ($fcbda71016cee9bb$exports(fn = input.valueOf) && !$03cf12799242f409$exports(val = $541d4c9e93c87577$exports(fn, input))) return val;
    if (pref !== 'string' && $fcbda71016cee9bb$exports(fn = input.toString) && !$03cf12799242f409$exports(val = $541d4c9e93c87577$exports(fn, input))) return val;
    throw $cf2e59bf08633327$var$TypeError("Can't convert object to primitive value");
};



var $f07d310f67fd0744$var$TypeError = $f333edce04dc84d2$exports.TypeError;
var $f07d310f67fd0744$var$TO_PRIMITIVE = $3e9517d770b151f3$exports('toPrimitive');
// `ToPrimitive` abstract operation
// https://tc39.es/ecma262/#sec-toprimitive
$f07d310f67fd0744$exports = function(input, pref) {
    if (!$03cf12799242f409$exports(input) || $6a4f41ed357b4c29$exports(input)) return input;
    var exoticToPrim = $bcadeac5df64398e$exports(input, $f07d310f67fd0744$var$TO_PRIMITIVE);
    var result;
    if (exoticToPrim) {
        if (pref === undefined) pref = 'default';
        result = $541d4c9e93c87577$exports(exoticToPrim, input, pref);
        if (!$03cf12799242f409$exports(result) || $6a4f41ed357b4c29$exports(result)) return result;
        throw $f07d310f67fd0744$var$TypeError("Can't convert object to primitive value");
    }
    if (pref === undefined) pref = 'number';
    return $cf2e59bf08633327$exports(input, pref);
};



// `ToPropertyKey` abstract operation
// https://tc39.es/ecma262/#sec-topropertykey
$69748fdc4ab19225$exports = function(argument) {
    var key = $f07d310f67fd0744$exports(argument, 'string');
    return $6a4f41ed357b4c29$exports(key) ? key : key + '';
};


var $1fe1833a1cb14f9b$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// eslint-disable-next-line es/no-object-defineproperty -- safe
var $1fe1833a1cb14f9b$var$$defineProperty = Object.defineProperty;
$1fe1833a1cb14f9b$export$2d1720544b23b823 = $b2de12f63ee8e8eb$exports ? $1fe1833a1cb14f9b$var$$defineProperty : function defineProperty(O, P, Attributes) {
    $8cde29e156f67727$exports(O);
    P = $69748fdc4ab19225$exports(P);
    $8cde29e156f67727$exports(Attributes);
    if ($530ff8786b8b3414$exports) try {
        return $1fe1833a1cb14f9b$var$$defineProperty(O, P, Attributes);
    } catch (error) {
    }
    if ('get' in Attributes || 'set' in Attributes) throw $1fe1833a1cb14f9b$var$TypeError('Accessors not supported');
    if ('value' in Attributes) O[P] = Attributes.value;
    return O;
};




var $f6a01c267cdb564c$exports = {};
var $a2e6841c5b9a21c5$exports = {};



var $4b0ffb57dd664c88$exports = {};

var $ca547ae405e4fbdd$exports = {};
var $a6b1a426cfae0839$exports = {};
var $a6b1a426cfae0839$var$ceil = Math.ceil;
var $a6b1a426cfae0839$var$floor = Math.floor;
// `ToIntegerOrInfinity` abstract operation
// https://tc39.es/ecma262/#sec-tointegerorinfinity
$a6b1a426cfae0839$exports = function(argument) {
    var number = +argument;
    // eslint-disable-next-line no-self-compare -- safe
    return number !== number || number === 0 ? 0 : (number > 0 ? $a6b1a426cfae0839$var$floor : $a6b1a426cfae0839$var$ceil)(number);
};


var $ca547ae405e4fbdd$var$max = Math.max;
var $ca547ae405e4fbdd$var$min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
$ca547ae405e4fbdd$exports = function(index, length) {
    var integer = $a6b1a426cfae0839$exports(index);
    return integer < 0 ? $ca547ae405e4fbdd$var$max(integer + length, 0) : $ca547ae405e4fbdd$var$min(integer, length);
};


var $0bac94b09229c49e$exports = {};
var $e100ab5b9932519a$exports = {};

var $e100ab5b9932519a$var$min = Math.min;
// `ToLength` abstract operation
// https://tc39.es/ecma262/#sec-tolength
$e100ab5b9932519a$exports = function(argument) {
    return argument > 0 ? $e100ab5b9932519a$var$min($a6b1a426cfae0839$exports(argument), 9007199254740991) : 0; // 2 ** 53 - 1 == 9007199254740991
};


// `LengthOfArrayLike` abstract operation
// https://tc39.es/ecma262/#sec-lengthofarraylike
$0bac94b09229c49e$exports = function(obj) {
    return $e100ab5b9932519a$exports(obj.length);
};


// `Array.prototype.{ indexOf, includes }` methods implementation
var $4b0ffb57dd664c88$var$createMethod = function(IS_INCLUDES) {
    return function($this, el, fromIndex) {
        var O = $97ec2e5c7182541a$exports($this);
        var length = $0bac94b09229c49e$exports(O);
        var index = $ca547ae405e4fbdd$exports(fromIndex, length);
        var value;
        // Array#includes uses SameValueZero equality algorithm
        // eslint-disable-next-line no-self-compare -- NaN check
        if (IS_INCLUDES && el != el) while(length > index){
            value = O[index++];
            // eslint-disable-next-line no-self-compare -- NaN check
            if (value != value) return true;
        // Array#indexOf ignores holes, Array#includes - not
        }
        else for(; length > index; index++){
            if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
        }
        return !IS_INCLUDES && -1;
    };
};
$4b0ffb57dd664c88$exports = {
    // `Array.prototype.includes` method
    // https://tc39.es/ecma262/#sec-array.prototype.includes
    includes: $4b0ffb57dd664c88$var$createMethod(true),
    // `Array.prototype.indexOf` method
    // https://tc39.es/ecma262/#sec-array.prototype.indexof
    indexOf: $4b0ffb57dd664c88$var$createMethod(false)
};


var $a2e6841c5b9a21c5$require$indexOf = $4b0ffb57dd664c88$exports.indexOf;
var $145f7221e927a627$exports = {};
$145f7221e927a627$exports = {
};


var $a2e6841c5b9a21c5$var$push = $0e047cd7e4bd2a61$exports([].push);
$a2e6841c5b9a21c5$exports = function(object, names) {
    var O = $97ec2e5c7182541a$exports(object);
    var i = 0;
    var result = [];
    var key;
    for(key in O)!$c98185f2a2200053$exports($145f7221e927a627$exports, key) && $c98185f2a2200053$exports(O, key) && $a2e6841c5b9a21c5$var$push(result, key);
    // Don't enum bug & hidden keys
    while(names.length > i)if ($c98185f2a2200053$exports(O, key = names[i++])) ~$a2e6841c5b9a21c5$require$indexOf(result, key) || $a2e6841c5b9a21c5$var$push(result, key);
    return result;
};


var $8d73a41cff741f2c$exports = {};
// IE8- don't enum bug keys
$8d73a41cff741f2c$exports = [
    'constructor',
    'hasOwnProperty',
    'isPrototypeOf',
    'propertyIsEnumerable',
    'toLocaleString',
    'toString',
    'valueOf'
];


// `Object.keys` method
// https://tc39.es/ecma262/#sec-object.keys
// eslint-disable-next-line es/no-object-keys -- safe
$f6a01c267cdb564c$exports = Object.keys || function keys(O) {
    return $a2e6841c5b9a21c5$exports(O, $8d73a41cff741f2c$exports);
};


// `Object.defineProperties` method
// https://tc39.es/ecma262/#sec-object.defineproperties
// eslint-disable-next-line es/no-object-defineproperties -- safe
$67889ba1099c927e$exports = $b2de12f63ee8e8eb$exports ? Object.defineProperties : function defineProperties(O, Properties) {
    $8cde29e156f67727$exports(O);
    var props = $97ec2e5c7182541a$exports(Properties);
    var keys = $f6a01c267cdb564c$exports(Properties);
    var length = keys.length;
    var index = 0;
    var key;
    while(length > index)$1fe1833a1cb14f9b$export$2d1720544b23b823(O, key = keys[index++], props[key]);
    return O;
};




var $9d90cd2397026bfe$exports = {};

$9d90cd2397026bfe$exports = $f4dfad6b8aca7fc7$exports('document', 'documentElement');



var $947a80a874e039c6$exports = {};


var $947a80a874e039c6$var$keys = $7221bdedd963a313$exports('keys');
$947a80a874e039c6$exports = function(key) {
    return $947a80a874e039c6$var$keys[key] || ($947a80a874e039c6$var$keys[key] = $0831e930e27ad9c2$exports(key));
};


var $d3ac9847cf651bba$var$GT = '>';
var $d3ac9847cf651bba$var$LT = '<';
var $d3ac9847cf651bba$var$PROTOTYPE = 'prototype';
var $d3ac9847cf651bba$var$SCRIPT = 'script';
var $d3ac9847cf651bba$var$IE_PROTO = $947a80a874e039c6$exports('IE_PROTO');
var $d3ac9847cf651bba$var$EmptyConstructor = function() {
};
var $d3ac9847cf651bba$var$scriptTag = function(content) {
    return $d3ac9847cf651bba$var$LT + $d3ac9847cf651bba$var$SCRIPT + $d3ac9847cf651bba$var$GT + content + $d3ac9847cf651bba$var$LT + '/' + $d3ac9847cf651bba$var$SCRIPT + $d3ac9847cf651bba$var$GT;
};
// Create object with fake `null` prototype: use ActiveX Object with cleared prototype
var $d3ac9847cf651bba$var$NullProtoObjectViaActiveX = function(activeXDocument) {
    activeXDocument.write($d3ac9847cf651bba$var$scriptTag(''));
    activeXDocument.close();
    var temp = activeXDocument.parentWindow.Object;
    activeXDocument = null; // avoid memory leak
    return temp;
};
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var $d3ac9847cf651bba$var$NullProtoObjectViaIFrame = function() {
    // Thrash, waste and sodomy: IE GC bug
    var iframe = $0158366a26a6b285$exports('iframe');
    var JS = 'java' + $d3ac9847cf651bba$var$SCRIPT + ':';
    var iframeDocument;
    iframe.style.display = 'none';
    $9d90cd2397026bfe$exports.appendChild(iframe);
    // https://github.com/zloirock/core-js/issues/475
    iframe.src = String(JS);
    iframeDocument = iframe.contentWindow.document;
    iframeDocument.open();
    iframeDocument.write($d3ac9847cf651bba$var$scriptTag('document.F=Object'));
    iframeDocument.close();
    return iframeDocument.F;
};
// Check for document.domain and active x support
// No need to use active x approach when document.domain is not set
// see https://github.com/es-shims/es5-shim/issues/150
// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
// avoid IE GC bug
var $d3ac9847cf651bba$var$activeXDocument;
var $d3ac9847cf651bba$var$NullProtoObject = function() {
    try {
        $d3ac9847cf651bba$var$activeXDocument = new ActiveXObject('htmlfile');
    } catch (error) {
    }
    $d3ac9847cf651bba$var$NullProtoObject = typeof document != 'undefined' ? document.domain && $d3ac9847cf651bba$var$activeXDocument ? $d3ac9847cf651bba$var$NullProtoObjectViaActiveX($d3ac9847cf651bba$var$activeXDocument) // old IE
     : $d3ac9847cf651bba$var$NullProtoObjectViaIFrame() : $d3ac9847cf651bba$var$NullProtoObjectViaActiveX($d3ac9847cf651bba$var$activeXDocument); // WSH
    var length = $8d73a41cff741f2c$exports.length;
    while(length--)delete $d3ac9847cf651bba$var$NullProtoObject[$d3ac9847cf651bba$var$PROTOTYPE][$8d73a41cff741f2c$exports[length]];
    return $d3ac9847cf651bba$var$NullProtoObject();
};
$145f7221e927a627$exports[$d3ac9847cf651bba$var$IE_PROTO] = true;
// `Object.create` method
// https://tc39.es/ecma262/#sec-object.create
$d3ac9847cf651bba$exports = Object.create || function create(O, Properties) {
    var result;
    if (O !== null) {
        $d3ac9847cf651bba$var$EmptyConstructor[$d3ac9847cf651bba$var$PROTOTYPE] = $8cde29e156f67727$exports(O);
        result = new $d3ac9847cf651bba$var$EmptyConstructor();
        $d3ac9847cf651bba$var$EmptyConstructor[$d3ac9847cf651bba$var$PROTOTYPE] = null;
        // add "__proto__" for Object.getPrototypeOf polyfill
        result[$d3ac9847cf651bba$var$IE_PROTO] = O;
    } else result = $d3ac9847cf651bba$var$NullProtoObject();
    return Properties === undefined ? result : $67889ba1099c927e$exports(result, Properties);
};



var $b6aa2c4ec4d930d5$var$UNSCOPABLES = $3e9517d770b151f3$exports('unscopables');
var $b6aa2c4ec4d930d5$var$ArrayPrototype = Array.prototype;
// Array.prototype[@@unscopables]
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
if ($b6aa2c4ec4d930d5$var$ArrayPrototype[$b6aa2c4ec4d930d5$var$UNSCOPABLES] == undefined) $1fe1833a1cb14f9b$export$2d1720544b23b823($b6aa2c4ec4d930d5$var$ArrayPrototype, $b6aa2c4ec4d930d5$var$UNSCOPABLES, {
    configurable: true,
    value: $d3ac9847cf651bba$exports(null)
});
// add a key to Array.prototype[@@unscopables]
$b6aa2c4ec4d930d5$exports = function(key) {
    $b6aa2c4ec4d930d5$var$ArrayPrototype[$b6aa2c4ec4d930d5$var$UNSCOPABLES][key] = true;
};


var $4807385c6bcbbcab$exports = {};
$4807385c6bcbbcab$exports = {
};


var $ea7e65ba02245cf9$exports = {};
var $2413e250fd67c462$exports = {};


var $5b63997c7c97e8d6$exports = {};



var $5b63997c7c97e8d6$var$functionToString = $0e047cd7e4bd2a61$exports(Function.toString);
// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper
if (!$fcbda71016cee9bb$exports($e54370cbe81dd8f8$exports.inspectSource)) $e54370cbe81dd8f8$exports.inspectSource = function(it) {
    return $5b63997c7c97e8d6$var$functionToString(it);
};
$5b63997c7c97e8d6$exports = $e54370cbe81dd8f8$exports.inspectSource;


var $2413e250fd67c462$var$WeakMap = $f333edce04dc84d2$exports.WeakMap;
$2413e250fd67c462$exports = $fcbda71016cee9bb$exports($2413e250fd67c462$var$WeakMap) && /native code/.test($5b63997c7c97e8d6$exports($2413e250fd67c462$var$WeakMap));





var $55c1099db5c9e6a0$exports = {};


var $3c8b2ccf7adfb59a$exports = {};
$3c8b2ccf7adfb59a$exports = function(bitmap, value) {
    return {
        enumerable: !(bitmap & 1),
        configurable: !(bitmap & 2),
        writable: !(bitmap & 4),
        value: value
    };
};


$55c1099db5c9e6a0$exports = $b2de12f63ee8e8eb$exports ? function(object, key, value) {
    return $1fe1833a1cb14f9b$export$2d1720544b23b823(object, key, $3c8b2ccf7adfb59a$exports(1, value));
} : function(object, key, value) {
    object[key] = value;
    return object;
};






var $ea7e65ba02245cf9$var$OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
var $ea7e65ba02245cf9$var$TypeError = $f333edce04dc84d2$exports.TypeError;
var $ea7e65ba02245cf9$var$WeakMap = $f333edce04dc84d2$exports.WeakMap;
var $ea7e65ba02245cf9$var$set, $ea7e65ba02245cf9$var$get, $ea7e65ba02245cf9$var$has;
var $ea7e65ba02245cf9$var$enforce = function(it) {
    return $ea7e65ba02245cf9$var$has(it) ? $ea7e65ba02245cf9$var$get(it) : $ea7e65ba02245cf9$var$set(it, {
    });
};
var $ea7e65ba02245cf9$var$getterFor = function(TYPE) {
    return function(it) {
        var state;
        if (!$03cf12799242f409$exports(it) || (state = $ea7e65ba02245cf9$var$get(it)).type !== TYPE) throw $ea7e65ba02245cf9$var$TypeError('Incompatible receiver, ' + TYPE + ' required');
        return state;
    };
};
if ($2413e250fd67c462$exports || $e54370cbe81dd8f8$exports.state) {
    var $ea7e65ba02245cf9$var$store = $e54370cbe81dd8f8$exports.state || ($e54370cbe81dd8f8$exports.state = new $ea7e65ba02245cf9$var$WeakMap());
    var $ea7e65ba02245cf9$var$wmget = $0e047cd7e4bd2a61$exports($ea7e65ba02245cf9$var$store.get);
    var $ea7e65ba02245cf9$var$wmhas = $0e047cd7e4bd2a61$exports($ea7e65ba02245cf9$var$store.has);
    var $ea7e65ba02245cf9$var$wmset = $0e047cd7e4bd2a61$exports($ea7e65ba02245cf9$var$store.set);
    $ea7e65ba02245cf9$var$set = function(it, metadata) {
        if ($ea7e65ba02245cf9$var$wmhas($ea7e65ba02245cf9$var$store, it)) throw new $ea7e65ba02245cf9$var$TypeError($ea7e65ba02245cf9$var$OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        $ea7e65ba02245cf9$var$wmset($ea7e65ba02245cf9$var$store, it, metadata);
        return metadata;
    };
    $ea7e65ba02245cf9$var$get = function(it) {
        return $ea7e65ba02245cf9$var$wmget($ea7e65ba02245cf9$var$store, it) || {
        };
    };
    $ea7e65ba02245cf9$var$has = function(it) {
        return $ea7e65ba02245cf9$var$wmhas($ea7e65ba02245cf9$var$store, it);
    };
} else {
    var $ea7e65ba02245cf9$var$STATE = $947a80a874e039c6$exports('state');
    $145f7221e927a627$exports[$ea7e65ba02245cf9$var$STATE] = true;
    $ea7e65ba02245cf9$var$set = function(it, metadata) {
        if ($c98185f2a2200053$exports(it, $ea7e65ba02245cf9$var$STATE)) throw new $ea7e65ba02245cf9$var$TypeError($ea7e65ba02245cf9$var$OBJECT_ALREADY_INITIALIZED);
        metadata.facade = it;
        $55c1099db5c9e6a0$exports(it, $ea7e65ba02245cf9$var$STATE, metadata);
        return metadata;
    };
    $ea7e65ba02245cf9$var$get = function(it) {
        return $c98185f2a2200053$exports(it, $ea7e65ba02245cf9$var$STATE) ? it[$ea7e65ba02245cf9$var$STATE] : {
        };
    };
    $ea7e65ba02245cf9$var$has = function(it) {
        return $c98185f2a2200053$exports(it, $ea7e65ba02245cf9$var$STATE);
    };
}
$ea7e65ba02245cf9$exports = {
    set: $ea7e65ba02245cf9$var$set,
    get: $ea7e65ba02245cf9$var$get,
    has: $ea7e65ba02245cf9$var$has,
    enforce: $ea7e65ba02245cf9$var$enforce,
    getterFor: $ea7e65ba02245cf9$var$getterFor
};



var $19dfc4060129c05d$require$defineProperty = $1fe1833a1cb14f9b$export$2d1720544b23b823;
var $ab7a19d4a83b9c08$exports = {};
'use strict';
var $af460506ee59fa9e$exports = {};

// `Object.getOwnPropertyDescriptor` method
// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
var $a2eb34e3e735edaf$export$2d1720544b23b823;


// `Object.prototype.propertyIsEnumerable` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
var $3e774a1de5b6bb49$export$2d1720544b23b823;
'use strict';
var $3e774a1de5b6bb49$var$$propertyIsEnumerable = {
}.propertyIsEnumerable;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $3e774a1de5b6bb49$var$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var $3e774a1de5b6bb49$var$NASHORN_BUG = $3e774a1de5b6bb49$var$getOwnPropertyDescriptor && !$3e774a1de5b6bb49$var$$propertyIsEnumerable.call({
    1: 2
}, 1);
$3e774a1de5b6bb49$export$2d1720544b23b823 = $3e774a1de5b6bb49$var$NASHORN_BUG ? function propertyIsEnumerable(V) {
    var descriptor = $3e774a1de5b6bb49$var$getOwnPropertyDescriptor(this, V);
    return !!descriptor && descriptor.enumerable;
} : $3e774a1de5b6bb49$var$$propertyIsEnumerable;







// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $a2eb34e3e735edaf$var$$getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
$a2eb34e3e735edaf$export$2d1720544b23b823 = $b2de12f63ee8e8eb$exports ? $a2eb34e3e735edaf$var$$getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
    O = $97ec2e5c7182541a$exports(O);
    P = $69748fdc4ab19225$exports(P);
    if ($530ff8786b8b3414$exports) try {
        return $a2eb34e3e735edaf$var$$getOwnPropertyDescriptor(O, P);
    } catch (error) {
    }
    if ($c98185f2a2200053$exports(O, P)) return $3c8b2ccf7adfb59a$exports(!$541d4c9e93c87577$exports($3e774a1de5b6bb49$export$2d1720544b23b823, O, P), O[P]);
};


var $af460506ee59fa9e$require$getOwnPropertyDescriptor = $a2eb34e3e735edaf$export$2d1720544b23b823;

var $a8719ecb9393e08b$exports = {};







var $1b2726027345f4eb$exports = {};


var $1b2726027345f4eb$var$FunctionPrototype = Function.prototype;
// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
var $1b2726027345f4eb$var$getDescriptor = $b2de12f63ee8e8eb$exports && Object.getOwnPropertyDescriptor;
var $1b2726027345f4eb$var$EXISTS = $c98185f2a2200053$exports($1b2726027345f4eb$var$FunctionPrototype, 'name');
// additional protection from minified / mangled / dropped function names
var $1b2726027345f4eb$var$PROPER = $1b2726027345f4eb$var$EXISTS && (function something() {
}).name === 'something';
var $1b2726027345f4eb$var$CONFIGURABLE = $1b2726027345f4eb$var$EXISTS && (!$b2de12f63ee8e8eb$exports || $b2de12f63ee8e8eb$exports && $1b2726027345f4eb$var$getDescriptor($1b2726027345f4eb$var$FunctionPrototype, 'name').configurable);
$1b2726027345f4eb$exports = {
    EXISTS: $1b2726027345f4eb$var$EXISTS,
    PROPER: $1b2726027345f4eb$var$PROPER,
    CONFIGURABLE: $1b2726027345f4eb$var$CONFIGURABLE
};


var $a8719ecb9393e08b$require$CONFIGURABLE_FUNCTION_NAME = $1b2726027345f4eb$exports.CONFIGURABLE;
var $a8719ecb9393e08b$var$getInternalState = $ea7e65ba02245cf9$exports.get;
var $a8719ecb9393e08b$var$enforceInternalState = $ea7e65ba02245cf9$exports.enforce;
var $a8719ecb9393e08b$var$TEMPLATE = String(String).split('String');
($a8719ecb9393e08b$exports = function(O, key, value, options) {
    var unsafe = options ? !!options.unsafe : false;
    var simple = options ? !!options.enumerable : false;
    var noTargetGet = options ? !!options.noTargetGet : false;
    var name = options && options.name !== undefined ? options.name : key;
    var state;
    if ($fcbda71016cee9bb$exports(value)) {
        if (String(name).slice(0, 7) === 'Symbol(') name = '[' + String(name).replace(/^Symbol\(([^)]*)\)/, '$1') + ']';
        if (!$c98185f2a2200053$exports(value, 'name') || $a8719ecb9393e08b$require$CONFIGURABLE_FUNCTION_NAME && value.name !== name) $55c1099db5c9e6a0$exports(value, 'name', name);
        state = $a8719ecb9393e08b$var$enforceInternalState(value);
        if (!state.source) state.source = $a8719ecb9393e08b$var$TEMPLATE.join(typeof name == 'string' ? name : '');
    }
    if (O === $f333edce04dc84d2$exports) {
        if (simple) O[key] = value;
        else $883391211b9e3206$exports(key, value);
        return;
    } else if (!unsafe) delete O[key];
    else if (!noTargetGet && O[key]) simple = true;
    if (simple) O[key] = value;
    else $55c1099db5c9e6a0$exports(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
    return $fcbda71016cee9bb$exports(this) && $a8719ecb9393e08b$var$getInternalState(this).source || $5b63997c7c97e8d6$exports(this);
});



var $2dfe3c4787ce0e40$exports = {};

var $325bf33af776c733$exports = {};


// `Object.getOwnPropertyNames` method
// https://tc39.es/ecma262/#sec-object.getownpropertynames
// eslint-disable-next-line es/no-object-getownpropertynames -- safe
var $a19d62405ddd1ba6$export$2d1720544b23b823;


var $a19d62405ddd1ba6$var$hiddenKeys = $8d73a41cff741f2c$exports.concat('length', 'prototype');
$a19d62405ddd1ba6$export$2d1720544b23b823 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
    return $a2e6841c5b9a21c5$exports(O, $a19d62405ddd1ba6$var$hiddenKeys);
};


// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
var $f2f2dc1124c6efde$export$2d1720544b23b823;
$f2f2dc1124c6efde$export$2d1720544b23b823 = Object.getOwnPropertySymbols;



var $325bf33af776c733$var$concat = $0e047cd7e4bd2a61$exports([].concat);
// all object keys, includes non-enumerable and symbols
$325bf33af776c733$exports = $f4dfad6b8aca7fc7$exports('Reflect', 'ownKeys') || function ownKeys(it) {
    var keys = $a19d62405ddd1ba6$export$2d1720544b23b823($8cde29e156f67727$exports(it));
    var getOwnPropertySymbols = $f2f2dc1124c6efde$export$2d1720544b23b823;
    return getOwnPropertySymbols ? $325bf33af776c733$var$concat(keys, getOwnPropertySymbols(it)) : keys;
};




$2dfe3c4787ce0e40$exports = function(target, source, exceptions) {
    var keys = $325bf33af776c733$exports(source);
    var defineProperty = $1fe1833a1cb14f9b$export$2d1720544b23b823;
    var getOwnPropertyDescriptor = $a2eb34e3e735edaf$export$2d1720544b23b823;
    for(var i = 0; i < keys.length; i++){
        var key = keys[i];
        if (!$c98185f2a2200053$exports(target, key) && !(exceptions && $c98185f2a2200053$exports(exceptions, key))) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
    }
};


var $86acbf67a8f43f79$exports = {};


var $86acbf67a8f43f79$var$replacement = /#|\.prototype\./;
var $86acbf67a8f43f79$var$isForced = function(feature, detection) {
    var value = $86acbf67a8f43f79$var$data[$86acbf67a8f43f79$var$normalize(feature)];
    return value == $86acbf67a8f43f79$var$POLYFILL ? true : value == $86acbf67a8f43f79$var$NATIVE ? false : $fcbda71016cee9bb$exports(detection) ? $639365070cb811ed$exports(detection) : !!detection;
};
var $86acbf67a8f43f79$var$normalize = $86acbf67a8f43f79$var$isForced.normalize = function(string) {
    return String(string).replace($86acbf67a8f43f79$var$replacement, '.').toLowerCase();
};
var $86acbf67a8f43f79$var$data = $86acbf67a8f43f79$var$isForced.data = {
};
var $86acbf67a8f43f79$var$NATIVE = $86acbf67a8f43f79$var$isForced.NATIVE = 'N';
var $86acbf67a8f43f79$var$POLYFILL = $86acbf67a8f43f79$var$isForced.POLYFILL = 'P';
$86acbf67a8f43f79$exports = $86acbf67a8f43f79$var$isForced;


/*
  options.target      - name of the target object
  options.global      - target is the global object
  options.stat        - export as static methods of target
  options.proto       - export as prototype methods of target
  options.real        - real prototype method for the `pure` version
  options.forced      - export even if the native feature is available
  options.bind        - bind methods to the target, required for the `pure` version
  options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
  options.unsafe      - use the simple assignment of property instead of delete + defineProperty
  options.sham        - add a flag to not completely full polyfills
  options.enumerable  - export as enumerable property
  options.noTargetGet - prevent calling a getter on target
  options.name        - the .name of the function if it does not match the key
*/ $af460506ee59fa9e$exports = function(options, source) {
    var TARGET = options.target;
    var GLOBAL = options.global;
    var STATIC = options.stat;
    var FORCED, target, key, targetProperty, sourceProperty, descriptor;
    if (GLOBAL) target = $f333edce04dc84d2$exports;
    else if (STATIC) target = $f333edce04dc84d2$exports[TARGET] || $883391211b9e3206$exports(TARGET, {
    });
    else target = ($f333edce04dc84d2$exports[TARGET] || {
    }).prototype;
    if (target) for(key in source){
        sourceProperty = source[key];
        if (options.noTargetGet) {
            descriptor = $af460506ee59fa9e$require$getOwnPropertyDescriptor(target, key);
            targetProperty = descriptor && descriptor.value;
        } else targetProperty = target[key];
        FORCED = $86acbf67a8f43f79$exports(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
        // contained in target
        if (!FORCED && targetProperty !== undefined) {
            if (typeof sourceProperty == typeof targetProperty) continue;
            $2dfe3c4787ce0e40$exports(sourceProperty, targetProperty);
        }
        // add a flag to not completely full polyfills
        if (options.sham || targetProperty && targetProperty.sham) $55c1099db5c9e6a0$exports(sourceProperty, 'sham', true);
        // extend global
        $a8719ecb9393e08b$exports(target, key, sourceProperty, options);
    }
};






var $b3515a62650194d5$exports = {};
'use strict';
var $46cc82908d6c8032$exports = {};
'use strict';



var $f17f9036e72a9934$exports = {};





var $1f89bb3ed52235da$exports = {};

$1f89bb3ed52235da$exports = !$639365070cb811ed$exports(function() {
    function F() {
    }
    F.prototype.constructor = null;
    // eslint-disable-next-line es/no-object-getprototypeof -- required for testing
    return Object.getPrototypeOf(new F()) !== F.prototype;
});


var $f17f9036e72a9934$var$IE_PROTO = $947a80a874e039c6$exports('IE_PROTO');
var $f17f9036e72a9934$var$Object = $f333edce04dc84d2$exports.Object;
var $f17f9036e72a9934$var$ObjectPrototype = $f17f9036e72a9934$var$Object.prototype;
// `Object.getPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.getprototypeof
$f17f9036e72a9934$exports = $1f89bb3ed52235da$exports ? $f17f9036e72a9934$var$Object.getPrototypeOf : function(O) {
    var object = $0c22979a3ee624f0$exports(O);
    if ($c98185f2a2200053$exports(object, $f17f9036e72a9934$var$IE_PROTO)) return object[$f17f9036e72a9934$var$IE_PROTO];
    var constructor = object.constructor;
    if ($fcbda71016cee9bb$exports(constructor) && object instanceof constructor) return constructor.prototype;
    return object instanceof $f17f9036e72a9934$var$Object ? $f17f9036e72a9934$var$ObjectPrototype : null;
};





var $46cc82908d6c8032$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
var $46cc82908d6c8032$var$BUGGY_SAFARI_ITERATORS = false;
// `%IteratorPrototype%` object
// https://tc39.es/ecma262/#sec-%iteratorprototype%-object
var $46cc82908d6c8032$var$IteratorPrototype, $46cc82908d6c8032$var$PrototypeOfArrayIteratorPrototype, $46cc82908d6c8032$var$arrayIterator;
/* eslint-disable es/no-array-prototype-keys -- safe */ if ([].keys) {
    $46cc82908d6c8032$var$arrayIterator = [].keys();
    // Safari 8 has buggy iterators w/o `next`
    if (!('next' in $46cc82908d6c8032$var$arrayIterator)) $46cc82908d6c8032$var$BUGGY_SAFARI_ITERATORS = true;
    else {
        $46cc82908d6c8032$var$PrototypeOfArrayIteratorPrototype = $f17f9036e72a9934$exports($f17f9036e72a9934$exports($46cc82908d6c8032$var$arrayIterator));
        if ($46cc82908d6c8032$var$PrototypeOfArrayIteratorPrototype !== Object.prototype) $46cc82908d6c8032$var$IteratorPrototype = $46cc82908d6c8032$var$PrototypeOfArrayIteratorPrototype;
    }
}
var $46cc82908d6c8032$var$NEW_ITERATOR_PROTOTYPE = $46cc82908d6c8032$var$IteratorPrototype == undefined || $639365070cb811ed$exports(function() {
    var test = {
    };
    // FF44- legacy iterators case
    return $46cc82908d6c8032$var$IteratorPrototype[$46cc82908d6c8032$var$ITERATOR].call(test) !== test;
});
if ($46cc82908d6c8032$var$NEW_ITERATOR_PROTOTYPE) $46cc82908d6c8032$var$IteratorPrototype = {
};
else if ($0a617e53de17f0cf$exports) $46cc82908d6c8032$var$IteratorPrototype = $d3ac9847cf651bba$exports($46cc82908d6c8032$var$IteratorPrototype);
// `%IteratorPrototype%[@@iterator]()` method
// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator
if (!$fcbda71016cee9bb$exports($46cc82908d6c8032$var$IteratorPrototype[$46cc82908d6c8032$var$ITERATOR])) $a8719ecb9393e08b$exports($46cc82908d6c8032$var$IteratorPrototype, $46cc82908d6c8032$var$ITERATOR, function() {
    return this;
});
$46cc82908d6c8032$exports = {
    IteratorPrototype: $46cc82908d6c8032$var$IteratorPrototype,
    BUGGY_SAFARI_ITERATORS: $46cc82908d6c8032$var$BUGGY_SAFARI_ITERATORS
};


var $b3515a62650194d5$require$IteratorPrototype = $46cc82908d6c8032$exports.IteratorPrototype;


var $78b33d3572646828$exports = {};

var $78b33d3572646828$require$defineProperty = $1fe1833a1cb14f9b$export$2d1720544b23b823;


var $78b33d3572646828$var$TO_STRING_TAG = $3e9517d770b151f3$exports('toStringTag');
$78b33d3572646828$exports = function(target, TAG, STATIC) {
    if (target && !STATIC) target = target.prototype;
    if (target && !$c98185f2a2200053$exports(target, $78b33d3572646828$var$TO_STRING_TAG)) $78b33d3572646828$require$defineProperty(target, $78b33d3572646828$var$TO_STRING_TAG, {
        configurable: true,
        value: TAG
    });
};



var $b3515a62650194d5$var$returnThis = function() {
    return this;
};
$b3515a62650194d5$exports = function(IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {
    var TO_STRING_TAG = NAME + ' Iterator';
    IteratorConstructor.prototype = $d3ac9847cf651bba$exports($b3515a62650194d5$require$IteratorPrototype, {
        next: $3c8b2ccf7adfb59a$exports(+!ENUMERABLE_NEXT, next)
    });
    $78b33d3572646828$exports(IteratorConstructor, TO_STRING_TAG, false, true);
    $4807385c6bcbbcab$exports[TO_STRING_TAG] = $b3515a62650194d5$var$returnThis;
    return IteratorConstructor;
};



var $b43955ec518fbd41$exports = {};


var $2881e2b1ec2e0a9f$exports = {};


var $2881e2b1ec2e0a9f$var$String = $f333edce04dc84d2$exports.String;
var $2881e2b1ec2e0a9f$var$TypeError = $f333edce04dc84d2$exports.TypeError;
$2881e2b1ec2e0a9f$exports = function(argument) {
    if (typeof argument == 'object' || $fcbda71016cee9bb$exports(argument)) return argument;
    throw $2881e2b1ec2e0a9f$var$TypeError("Can't set " + $2881e2b1ec2e0a9f$var$String(argument) + ' as a prototype');
};


// `Object.setPrototypeOf` method
// https://tc39.es/ecma262/#sec-object.setprototypeof
// Works with __proto__ only. Old v8 can't work with null proto objects.
// eslint-disable-next-line es/no-object-setprototypeof -- safe
$b43955ec518fbd41$exports = Object.setPrototypeOf || ('__proto__' in {
} ? (function() {
    var CORRECT_SETTER = false;
    var test = {
    };
    var setter;
    try {
        // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
        setter = $0e047cd7e4bd2a61$exports(Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set);
        setter(test, []);
        CORRECT_SETTER = test instanceof Array;
    } catch (error) {
    }
    return function setPrototypeOf(O, proto) {
        $8cde29e156f67727$exports(O);
        $2881e2b1ec2e0a9f$exports(proto);
        if (CORRECT_SETTER) setter(O, proto);
        else O.__proto__ = proto;
        return O;
    };
})() : undefined);








var $ab7a19d4a83b9c08$var$PROPER_FUNCTION_NAME = $1b2726027345f4eb$exports.PROPER;
var $ab7a19d4a83b9c08$var$CONFIGURABLE_FUNCTION_NAME = $1b2726027345f4eb$exports.CONFIGURABLE;
var $ab7a19d4a83b9c08$var$IteratorPrototype = $46cc82908d6c8032$exports.IteratorPrototype;
var $ab7a19d4a83b9c08$var$BUGGY_SAFARI_ITERATORS = $46cc82908d6c8032$exports.BUGGY_SAFARI_ITERATORS;
var $ab7a19d4a83b9c08$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
var $ab7a19d4a83b9c08$var$KEYS = 'keys';
var $ab7a19d4a83b9c08$var$VALUES = 'values';
var $ab7a19d4a83b9c08$var$ENTRIES = 'entries';
var $ab7a19d4a83b9c08$var$returnThis = function() {
    return this;
};
$ab7a19d4a83b9c08$exports = function(Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
    $b3515a62650194d5$exports(IteratorConstructor, NAME, next);
    var getIterationMethod = function(KIND) {
        if (KIND === DEFAULT && defaultIterator) return defaultIterator;
        if (!$ab7a19d4a83b9c08$var$BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
        switch(KIND){
            case $ab7a19d4a83b9c08$var$KEYS:
                return function keys() {
                    return new IteratorConstructor(this, KIND);
                };
            case $ab7a19d4a83b9c08$var$VALUES:
                return function values() {
                    return new IteratorConstructor(this, KIND);
                };
            case $ab7a19d4a83b9c08$var$ENTRIES:
                return function entries() {
                    return new IteratorConstructor(this, KIND);
                };
        }
        return function() {
            return new IteratorConstructor(this);
        };
    };
    var TO_STRING_TAG = NAME + ' Iterator';
    var INCORRECT_VALUES_NAME = false;
    var IterablePrototype = Iterable.prototype;
    var nativeIterator = IterablePrototype[$ab7a19d4a83b9c08$var$ITERATOR] || IterablePrototype['@@iterator'] || DEFAULT && IterablePrototype[DEFAULT];
    var defaultIterator = !$ab7a19d4a83b9c08$var$BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
    var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
    var CurrentIteratorPrototype, methods, KEY;
    // fix native
    if (anyNativeIterator) {
        CurrentIteratorPrototype = $f17f9036e72a9934$exports(anyNativeIterator.call(new Iterable()));
        if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
            if (!$0a617e53de17f0cf$exports && $f17f9036e72a9934$exports(CurrentIteratorPrototype) !== $ab7a19d4a83b9c08$var$IteratorPrototype) {
                if ($b43955ec518fbd41$exports) $b43955ec518fbd41$exports(CurrentIteratorPrototype, $ab7a19d4a83b9c08$var$IteratorPrototype);
                else if (!$fcbda71016cee9bb$exports(CurrentIteratorPrototype[$ab7a19d4a83b9c08$var$ITERATOR])) $a8719ecb9393e08b$exports(CurrentIteratorPrototype, $ab7a19d4a83b9c08$var$ITERATOR, $ab7a19d4a83b9c08$var$returnThis);
            }
            // Set @@toStringTag to native iterators
            $78b33d3572646828$exports(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
            if ($0a617e53de17f0cf$exports) $4807385c6bcbbcab$exports[TO_STRING_TAG] = $ab7a19d4a83b9c08$var$returnThis;
        }
    }
    // fix Array.prototype.{ values, @@iterator }.name in V8 / FF
    if ($ab7a19d4a83b9c08$var$PROPER_FUNCTION_NAME && DEFAULT == $ab7a19d4a83b9c08$var$VALUES && nativeIterator && nativeIterator.name !== $ab7a19d4a83b9c08$var$VALUES) {
        if (!$0a617e53de17f0cf$exports && $ab7a19d4a83b9c08$var$CONFIGURABLE_FUNCTION_NAME) $55c1099db5c9e6a0$exports(IterablePrototype, 'name', $ab7a19d4a83b9c08$var$VALUES);
        else {
            INCORRECT_VALUES_NAME = true;
            defaultIterator = function values() {
                return $541d4c9e93c87577$exports(nativeIterator, this);
            };
        }
    }
    // export additional methods
    if (DEFAULT) {
        methods = {
            values: getIterationMethod($ab7a19d4a83b9c08$var$VALUES),
            keys: IS_SET ? defaultIterator : getIterationMethod($ab7a19d4a83b9c08$var$KEYS),
            entries: getIterationMethod($ab7a19d4a83b9c08$var$ENTRIES)
        };
        if (FORCED) {
            for(KEY in methods)if ($ab7a19d4a83b9c08$var$BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) $a8719ecb9393e08b$exports(IterablePrototype, KEY, methods[KEY]);
        } else $af460506ee59fa9e$exports({
            target: NAME,
            proto: true,
            forced: $ab7a19d4a83b9c08$var$BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME
        }, methods);
    }
    // define iterator
    if ((!$0a617e53de17f0cf$exports || FORCED) && IterablePrototype[$ab7a19d4a83b9c08$var$ITERATOR] !== defaultIterator) $a8719ecb9393e08b$exports(IterablePrototype, $ab7a19d4a83b9c08$var$ITERATOR, defaultIterator, {
        name: DEFAULT
    });
    $4807385c6bcbbcab$exports[NAME] = defaultIterator;
    return methods;
};




var $19dfc4060129c05d$var$ARRAY_ITERATOR = 'Array Iterator';
var $19dfc4060129c05d$var$setInternalState = $ea7e65ba02245cf9$exports.set;
var $19dfc4060129c05d$var$getInternalState = $ea7e65ba02245cf9$exports.getterFor($19dfc4060129c05d$var$ARRAY_ITERATOR);
// `Array.prototype.entries` method
// https://tc39.es/ecma262/#sec-array.prototype.entries
// `Array.prototype.keys` method
// https://tc39.es/ecma262/#sec-array.prototype.keys
// `Array.prototype.values` method
// https://tc39.es/ecma262/#sec-array.prototype.values
// `Array.prototype[@@iterator]` method
// https://tc39.es/ecma262/#sec-array.prototype-@@iterator
// `CreateArrayIterator` internal method
// https://tc39.es/ecma262/#sec-createarrayiterator
$19dfc4060129c05d$exports = $ab7a19d4a83b9c08$exports(Array, 'Array', function(iterated, kind) {
    $19dfc4060129c05d$var$setInternalState(this, {
        type: $19dfc4060129c05d$var$ARRAY_ITERATOR,
        target: $97ec2e5c7182541a$exports(iterated),
        index: 0,
        kind: kind // kind
    });
// `%ArrayIteratorPrototype%.next` method
// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next
}, function() {
    var state = $19dfc4060129c05d$var$getInternalState(this);
    var target = state.target;
    var kind = state.kind;
    var index = state.index++;
    if (!target || index >= target.length) {
        state.target = undefined;
        return {
            value: undefined,
            done: true
        };
    }
    if (kind == 'keys') return {
        value: index,
        done: false
    };
    if (kind == 'values') return {
        value: target[index],
        done: false
    };
    return {
        value: [
            index,
            target[index]
        ],
        done: false
    };
}, 'values');
// argumentsList[@@iterator] is %ArrayProto_values%
// https://tc39.es/ecma262/#sec-createunmappedargumentsobject
// https://tc39.es/ecma262/#sec-createmappedargumentsobject
var $19dfc4060129c05d$var$values = $4807385c6bcbbcab$exports.Arguments = $4807385c6bcbbcab$exports.Array;
// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
$b6aa2c4ec4d930d5$exports('keys');
$b6aa2c4ec4d930d5$exports('values');
$b6aa2c4ec4d930d5$exports('entries');
// V8 ~ Chrome 45- bug
if (!$0a617e53de17f0cf$exports && $b2de12f63ee8e8eb$exports && $19dfc4060129c05d$var$values.name !== 'values') try {
    $19dfc4060129c05d$require$defineProperty($19dfc4060129c05d$var$values, 'name', {
        value: 'values'
    });
} catch (error) {
}


var $825f807a817c9a20$exports = {};

var $825f807a817c9a20$var$TO_STRING_TAG = $3e9517d770b151f3$exports('toStringTag');
var $825f807a817c9a20$var$test = {
};
$825f807a817c9a20$var$test[$825f807a817c9a20$var$TO_STRING_TAG] = 'z';
$825f807a817c9a20$exports = String($825f807a817c9a20$var$test) === '[object z]';



var $d70f2fa92132ae9b$exports = {};
'use strict';

var $dd8b053bbc200b54$exports = {};





var $dd8b053bbc200b54$var$TO_STRING_TAG = $3e9517d770b151f3$exports('toStringTag');
var $dd8b053bbc200b54$var$Object = $f333edce04dc84d2$exports.Object;
// ES3 wrong here
var $dd8b053bbc200b54$var$CORRECT_ARGUMENTS = $5f5cecfe0210d5fc$exports(function() {
    return arguments;
}()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var $dd8b053bbc200b54$var$tryGet = function(it, key) {
    try {
        return it[key];
    } catch (error) {
    }
};
// getting tag from ES6+ `Object.prototype.toString`
$dd8b053bbc200b54$exports = $825f807a817c9a20$exports ? $5f5cecfe0210d5fc$exports : function(it) {
    var O, tag, result;
    return it === undefined ? 'Undefined' : it === null ? 'Null' : typeof (tag = $dd8b053bbc200b54$var$tryGet(O = $dd8b053bbc200b54$var$Object(it), $dd8b053bbc200b54$var$TO_STRING_TAG)) == 'string' ? tag : $dd8b053bbc200b54$var$CORRECT_ARGUMENTS ? $5f5cecfe0210d5fc$exports(O) : (result = $5f5cecfe0210d5fc$exports(O)) == 'Object' && $fcbda71016cee9bb$exports(O.callee) ? 'Arguments' : result;
};


// `Object.prototype.toString` method implementation
// https://tc39.es/ecma262/#sec-object.prototype.tostring
$d70f2fa92132ae9b$exports = $825f807a817c9a20$exports ? ({
}).toString : function toString() {
    return '[object ' + $dd8b053bbc200b54$exports(this) + ']';
};


// `Object.prototype.toString` method
// https://tc39.es/ecma262/#sec-object.prototype.tostring
if (!$825f807a817c9a20$exports) $a8719ecb9393e08b$exports(Object.prototype, 'toString', $d70f2fa92132ae9b$exports, {
    unsafe: true
});


'use strict';





var $85dfb1a850120f2f$exports = {};

$85dfb1a850120f2f$exports = $f333edce04dc84d2$exports.Promise;



var $8b266b64a252ca00$exports = {};

$8b266b64a252ca00$exports = function(target, src, options) {
    for(var key in src)$a8719ecb9393e08b$exports(target, key, src[key], options);
    return target;
};




var $4bea57d3e3b6d7e9$exports = {};
'use strict';




var $4bea57d3e3b6d7e9$var$SPECIES = $3e9517d770b151f3$exports('species');
$4bea57d3e3b6d7e9$exports = function(CONSTRUCTOR_NAME) {
    var Constructor = $f4dfad6b8aca7fc7$exports(CONSTRUCTOR_NAME);
    var defineProperty = $1fe1833a1cb14f9b$export$2d1720544b23b823;
    if ($b2de12f63ee8e8eb$exports && Constructor && !Constructor[$4bea57d3e3b6d7e9$var$SPECIES]) defineProperty(Constructor, $4bea57d3e3b6d7e9$var$SPECIES, {
        configurable: true,
        get: function() {
            return this;
        }
    });
};





var $53d5317711b7b807$exports = {};


var $53d5317711b7b807$var$TypeError = $f333edce04dc84d2$exports.TypeError;
$53d5317711b7b807$exports = function(it, Prototype) {
    if ($b5a2a9c765693536$exports(Prototype, it)) return it;
    throw $53d5317711b7b807$var$TypeError('Incorrect invocation');
};



var $4d171c5aa8e88bbc$exports = {};

var $3b52cbe6777e8e42$exports = {};


var $3b52cbe6777e8e42$var$bind = $0e047cd7e4bd2a61$exports($0e047cd7e4bd2a61$exports.bind);
// optional / simple context binding
$3b52cbe6777e8e42$exports = function(fn, that) {
    $c2aed39e690846d2$exports(fn);
    return that === undefined ? fn : $3b52cbe6777e8e42$var$bind ? $3b52cbe6777e8e42$var$bind(fn, that) : function() {
        return fn.apply(that, arguments);
    };
};





var $98a154d4af8cf138$exports = {};


var $98a154d4af8cf138$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
var $98a154d4af8cf138$var$ArrayPrototype = Array.prototype;
// check on default Array iterator
$98a154d4af8cf138$exports = function(it) {
    return it !== undefined && ($4807385c6bcbbcab$exports.Array === it || $98a154d4af8cf138$var$ArrayPrototype[$98a154d4af8cf138$var$ITERATOR] === it);
};




var $451219649e070f17$exports = {};





var $c4ebf4f531053c94$exports = {};




var $c4ebf4f531053c94$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
$c4ebf4f531053c94$exports = function(it) {
    if (it != undefined) return $bcadeac5df64398e$exports(it, $c4ebf4f531053c94$var$ITERATOR) || $bcadeac5df64398e$exports(it, '@@iterator') || $4807385c6bcbbcab$exports[$dd8b053bbc200b54$exports(it)];
};


var $451219649e070f17$var$TypeError = $f333edce04dc84d2$exports.TypeError;
$451219649e070f17$exports = function(argument, usingIterator) {
    var iteratorMethod = arguments.length < 2 ? $c4ebf4f531053c94$exports(argument) : usingIterator;
    if ($c2aed39e690846d2$exports(iteratorMethod)) return $8cde29e156f67727$exports($541d4c9e93c87577$exports(iteratorMethod, argument));
    throw $451219649e070f17$var$TypeError($7f50243e65ef1e57$exports(argument) + ' is not iterable');
};



var $a6d15f5d91fe9b0b$exports = {};



$a6d15f5d91fe9b0b$exports = function(iterator, kind, value) {
    var innerResult, innerError;
    $8cde29e156f67727$exports(iterator);
    try {
        innerResult = $bcadeac5df64398e$exports(iterator, 'return');
        if (!innerResult) {
            if (kind === 'throw') throw value;
            return value;
        }
        innerResult = $541d4c9e93c87577$exports(innerResult, iterator);
    } catch (error) {
        innerError = true;
        innerResult = error;
    }
    if (kind === 'throw') throw value;
    if (innerError) throw innerResult;
    $8cde29e156f67727$exports(innerResult);
    return value;
};


var $4d171c5aa8e88bbc$var$TypeError = $f333edce04dc84d2$exports.TypeError;
var $4d171c5aa8e88bbc$var$Result = function(stopped, result) {
    this.stopped = stopped;
    this.result = result;
};
var $4d171c5aa8e88bbc$var$ResultPrototype = $4d171c5aa8e88bbc$var$Result.prototype;
$4d171c5aa8e88bbc$exports = function(iterable, unboundFunction, options) {
    var that = options && options.that;
    var AS_ENTRIES = !!(options && options.AS_ENTRIES);
    var IS_ITERATOR = !!(options && options.IS_ITERATOR);
    var INTERRUPTED = !!(options && options.INTERRUPTED);
    var fn = $3b52cbe6777e8e42$exports(unboundFunction, that);
    var iterator, iterFn, index, length, result, next, step;
    var stop = function(condition) {
        if (iterator) $a6d15f5d91fe9b0b$exports(iterator, 'normal', condition);
        return new $4d171c5aa8e88bbc$var$Result(true, condition);
    };
    var callFn = function(value) {
        if (AS_ENTRIES) {
            $8cde29e156f67727$exports(value);
            return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);
        }
        return INTERRUPTED ? fn(value, stop) : fn(value);
    };
    if (IS_ITERATOR) iterator = iterable;
    else {
        iterFn = $c4ebf4f531053c94$exports(iterable);
        if (!iterFn) throw $4d171c5aa8e88bbc$var$TypeError($7f50243e65ef1e57$exports(iterable) + ' is not iterable');
        // optimisation for array iterators
        if ($98a154d4af8cf138$exports(iterFn)) {
            for(index = 0, length = $0bac94b09229c49e$exports(iterable); length > index; index++){
                result = callFn(iterable[index]);
                if (result && $b5a2a9c765693536$exports($4d171c5aa8e88bbc$var$ResultPrototype, result)) return result;
            }
            return new $4d171c5aa8e88bbc$var$Result(false);
        }
        iterator = $451219649e070f17$exports(iterable, iterFn);
    }
    next = iterator.next;
    while(!(step = $541d4c9e93c87577$exports(next, iterator)).done){
        try {
            result = callFn(step.value);
        } catch (error) {
            $a6d15f5d91fe9b0b$exports(iterator, 'throw', error);
        }
        if (typeof result == 'object' && result && $b5a2a9c765693536$exports($4d171c5aa8e88bbc$var$ResultPrototype, result)) return result;
    }
    return new $4d171c5aa8e88bbc$var$Result(false);
};


var $1078680048fab23f$exports = {};

var $1078680048fab23f$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
var $1078680048fab23f$var$SAFE_CLOSING = false;
try {
    var $1078680048fab23f$var$called = 0;
    var $1078680048fab23f$var$iteratorWithReturn = {
        next: function() {
            return {
                done: !!$1078680048fab23f$var$called++
            };
        },
        'return': function() {
            $1078680048fab23f$var$SAFE_CLOSING = true;
        }
    };
    $1078680048fab23f$var$iteratorWithReturn[$1078680048fab23f$var$ITERATOR] = function() {
        return this;
    };
    // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing
    Array.from($1078680048fab23f$var$iteratorWithReturn, function() {
        throw 2;
    });
} catch (error) {
}
$1078680048fab23f$exports = function(exec, SKIP_CLOSING) {
    if (!SKIP_CLOSING && !$1078680048fab23f$var$SAFE_CLOSING) return false;
    var ITERATION_SUPPORT = false;
    try {
        var object = {
        };
        object[$1078680048fab23f$var$ITERATOR] = function() {
            return {
                next: function() {
                    return {
                        done: ITERATION_SUPPORT = true
                    };
                }
            };
        };
        exec(object);
    } catch (error) {
    }
    return ITERATION_SUPPORT;
};


var $43c04f4d8bd60d85$exports = {};

var $f1962c63c936774b$exports = {};

var $05d09bbad06d596e$exports = {};






var $05d09bbad06d596e$var$noop = function() {
};
var $05d09bbad06d596e$var$empty = [];
var $05d09bbad06d596e$var$construct = $f4dfad6b8aca7fc7$exports('Reflect', 'construct');
var $05d09bbad06d596e$var$constructorRegExp = /^\s*(?:class|function)\b/;
var $05d09bbad06d596e$var$exec = $0e047cd7e4bd2a61$exports($05d09bbad06d596e$var$constructorRegExp.exec);
var $05d09bbad06d596e$var$INCORRECT_TO_STRING = !$05d09bbad06d596e$var$constructorRegExp.exec($05d09bbad06d596e$var$noop);
var $05d09bbad06d596e$var$isConstructorModern = function isConstructor(argument) {
    if (!$fcbda71016cee9bb$exports(argument)) return false;
    try {
        $05d09bbad06d596e$var$construct($05d09bbad06d596e$var$noop, $05d09bbad06d596e$var$empty, argument);
        return true;
    } catch (error) {
        return false;
    }
};
var $05d09bbad06d596e$var$isConstructorLegacy = function isConstructor(argument) {
    if (!$fcbda71016cee9bb$exports(argument)) return false;
    switch($dd8b053bbc200b54$exports(argument)){
        case 'AsyncFunction':
        case 'GeneratorFunction':
        case 'AsyncGeneratorFunction':
            return false;
    }
    try {
        // we can't check .prototype since constructors produced by .bind haven't it
        // `Function#toString` throws on some built-it function in some legacy engines
        // (for example, `DOMQuad` and similar in FF41-)
        return $05d09bbad06d596e$var$INCORRECT_TO_STRING || !!$05d09bbad06d596e$var$exec($05d09bbad06d596e$var$constructorRegExp, $5b63997c7c97e8d6$exports(argument));
    } catch (error) {
        return true;
    }
};
$05d09bbad06d596e$var$isConstructorLegacy.sham = true;
// `IsConstructor` abstract operation
// https://tc39.es/ecma262/#sec-isconstructor
$05d09bbad06d596e$exports = !$05d09bbad06d596e$var$construct || $639365070cb811ed$exports(function() {
    var called;
    return $05d09bbad06d596e$var$isConstructorModern($05d09bbad06d596e$var$isConstructorModern.call) || !$05d09bbad06d596e$var$isConstructorModern(Object) || !$05d09bbad06d596e$var$isConstructorModern(function() {
        called = true;
    }) || called;
}) ? $05d09bbad06d596e$var$isConstructorLegacy : $05d09bbad06d596e$var$isConstructorModern;



var $f1962c63c936774b$var$TypeError = $f333edce04dc84d2$exports.TypeError;
// `Assert: IsConstructor(argument) is true`
$f1962c63c936774b$exports = function(argument) {
    if ($05d09bbad06d596e$exports(argument)) return argument;
    throw $f1962c63c936774b$var$TypeError($7f50243e65ef1e57$exports(argument) + ' is not a constructor');
};



var $43c04f4d8bd60d85$var$SPECIES = $3e9517d770b151f3$exports('species');
// `SpeciesConstructor` abstract operation
// https://tc39.es/ecma262/#sec-speciesconstructor
$43c04f4d8bd60d85$exports = function(O, defaultConstructor) {
    var C = $8cde29e156f67727$exports(O).constructor;
    var S;
    return C === undefined || (S = $8cde29e156f67727$exports(C)[$43c04f4d8bd60d85$var$SPECIES]) == undefined ? defaultConstructor : $f1962c63c936774b$exports(S);
};


var $36b486d0e5241b2c$exports = {};

var $50db109213d498ba$exports = {};
var $50db109213d498ba$var$FunctionPrototype = Function.prototype;
var $50db109213d498ba$var$apply = $50db109213d498ba$var$FunctionPrototype.apply;
var $50db109213d498ba$var$bind = $50db109213d498ba$var$FunctionPrototype.bind;
var $50db109213d498ba$var$call = $50db109213d498ba$var$FunctionPrototype.call;
// eslint-disable-next-line es/no-reflect -- safe
$50db109213d498ba$exports = typeof Reflect == 'object' && Reflect.apply || ($50db109213d498ba$var$bind ? $50db109213d498ba$var$call.bind($50db109213d498ba$var$apply) : function() {
    return $50db109213d498ba$var$call.apply($50db109213d498ba$var$apply, arguments);
});







var $9b44c639348be14c$exports = {};

$9b44c639348be14c$exports = $0e047cd7e4bd2a61$exports([].slice);



var $0c54dcdcb2c0f1e8$exports = {};

$0c54dcdcb2c0f1e8$exports = /(?:ipad|iphone|ipod).*applewebkit/i.test($aa75c90eb2c8cdd8$exports);


var $05f84e7a0e886990$exports = {};


$05f84e7a0e886990$exports = $5f5cecfe0210d5fc$exports($f333edce04dc84d2$exports.process) == 'process';


var $36b486d0e5241b2c$var$set = $f333edce04dc84d2$exports.setImmediate;
var $36b486d0e5241b2c$var$clear = $f333edce04dc84d2$exports.clearImmediate;
var $36b486d0e5241b2c$var$process = $f333edce04dc84d2$exports.process;
var $36b486d0e5241b2c$var$Dispatch = $f333edce04dc84d2$exports.Dispatch;
var $36b486d0e5241b2c$var$Function = $f333edce04dc84d2$exports.Function;
var $36b486d0e5241b2c$var$MessageChannel = $f333edce04dc84d2$exports.MessageChannel;
var $36b486d0e5241b2c$var$String = $f333edce04dc84d2$exports.String;
var $36b486d0e5241b2c$var$counter = 0;
var $36b486d0e5241b2c$var$queue = {
};
var $36b486d0e5241b2c$var$ONREADYSTATECHANGE = 'onreadystatechange';
var $36b486d0e5241b2c$var$location, $36b486d0e5241b2c$var$defer, $36b486d0e5241b2c$var$channel, $36b486d0e5241b2c$var$port;
try {
    // Deno throws a ReferenceError on `location` access without `--location` flag
    $36b486d0e5241b2c$var$location = $f333edce04dc84d2$exports.location;
} catch (error) {
}
var $36b486d0e5241b2c$var$run = function(id) {
    if ($c98185f2a2200053$exports($36b486d0e5241b2c$var$queue, id)) {
        var fn = $36b486d0e5241b2c$var$queue[id];
        delete $36b486d0e5241b2c$var$queue[id];
        fn();
    }
};
var $36b486d0e5241b2c$var$runner = function(id) {
    return function() {
        $36b486d0e5241b2c$var$run(id);
    };
};
var $36b486d0e5241b2c$var$listener = function(event) {
    $36b486d0e5241b2c$var$run(event.data);
};
var $36b486d0e5241b2c$var$post = function(id) {
    // old engines have not location.origin
    $f333edce04dc84d2$exports.postMessage($36b486d0e5241b2c$var$String(id), $36b486d0e5241b2c$var$location.protocol + '//' + $36b486d0e5241b2c$var$location.host);
};
// Node.js 0.9+ & IE10+ has setImmediate, otherwise:
if (!$36b486d0e5241b2c$var$set || !$36b486d0e5241b2c$var$clear) {
    $36b486d0e5241b2c$var$set = function setImmediate(fn) {
        var args = $9b44c639348be14c$exports(arguments, 1);
        $36b486d0e5241b2c$var$queue[++$36b486d0e5241b2c$var$counter] = function() {
            $50db109213d498ba$exports($fcbda71016cee9bb$exports(fn) ? fn : $36b486d0e5241b2c$var$Function(fn), undefined, args);
        };
        $36b486d0e5241b2c$var$defer($36b486d0e5241b2c$var$counter);
        return $36b486d0e5241b2c$var$counter;
    };
    $36b486d0e5241b2c$var$clear = function clearImmediate(id) {
        delete $36b486d0e5241b2c$var$queue[id];
    };
    // Node.js 0.8-
    if ($05f84e7a0e886990$exports) $36b486d0e5241b2c$var$defer = function(id) {
        $36b486d0e5241b2c$var$process.nextTick($36b486d0e5241b2c$var$runner(id));
    };
    else if ($36b486d0e5241b2c$var$Dispatch && $36b486d0e5241b2c$var$Dispatch.now) $36b486d0e5241b2c$var$defer = function(id) {
        $36b486d0e5241b2c$var$Dispatch.now($36b486d0e5241b2c$var$runner(id));
    };
    else if ($36b486d0e5241b2c$var$MessageChannel && !$0c54dcdcb2c0f1e8$exports) {
        $36b486d0e5241b2c$var$channel = new $36b486d0e5241b2c$var$MessageChannel();
        $36b486d0e5241b2c$var$port = $36b486d0e5241b2c$var$channel.port2;
        $36b486d0e5241b2c$var$channel.port1.onmessage = $36b486d0e5241b2c$var$listener;
        $36b486d0e5241b2c$var$defer = $3b52cbe6777e8e42$exports($36b486d0e5241b2c$var$port.postMessage, $36b486d0e5241b2c$var$port);
    // Browsers with postMessage, skip WebWorkers
    // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'
    } else if ($f333edce04dc84d2$exports.addEventListener && $fcbda71016cee9bb$exports($f333edce04dc84d2$exports.postMessage) && !$f333edce04dc84d2$exports.importScripts && $36b486d0e5241b2c$var$location && $36b486d0e5241b2c$var$location.protocol !== 'file:' && !$639365070cb811ed$exports($36b486d0e5241b2c$var$post)) {
        $36b486d0e5241b2c$var$defer = $36b486d0e5241b2c$var$post;
        $f333edce04dc84d2$exports.addEventListener('message', $36b486d0e5241b2c$var$listener, false);
    // IE8-
    } else if ($36b486d0e5241b2c$var$ONREADYSTATECHANGE in $0158366a26a6b285$exports('script')) $36b486d0e5241b2c$var$defer = function(id) {
        $9d90cd2397026bfe$exports.appendChild($0158366a26a6b285$exports('script'))[$36b486d0e5241b2c$var$ONREADYSTATECHANGE] = function() {
            $9d90cd2397026bfe$exports.removeChild(this);
            $36b486d0e5241b2c$var$run(id);
        };
    };
    else $36b486d0e5241b2c$var$defer = function(id) {
        setTimeout($36b486d0e5241b2c$var$runner(id), 0);
    };
}
$36b486d0e5241b2c$exports = {
    set: $36b486d0e5241b2c$var$set,
    clear: $36b486d0e5241b2c$var$clear
};


var $c137f7ca258a8d03$require$task = $36b486d0e5241b2c$exports.set;
var $e7e2e92c5958175d$exports = {};



var $e7e2e92c5958175d$require$getOwnPropertyDescriptor = $a2eb34e3e735edaf$export$2d1720544b23b823;

var $e7e2e92c5958175d$require$macrotask = $36b486d0e5241b2c$exports.set;

var $091b027301632dc4$exports = {};


$091b027301632dc4$exports = /ipad|iphone|ipod/i.test($aa75c90eb2c8cdd8$exports) && $f333edce04dc84d2$exports.Pebble !== undefined;


var $9e929de86611c49b$exports = {};

$9e929de86611c49b$exports = /web0s(?!.*chrome)/i.test($aa75c90eb2c8cdd8$exports);



var $e7e2e92c5958175d$var$MutationObserver = $f333edce04dc84d2$exports.MutationObserver || $f333edce04dc84d2$exports.WebKitMutationObserver;
var $e7e2e92c5958175d$var$document = $f333edce04dc84d2$exports.document;
var $e7e2e92c5958175d$var$process = $f333edce04dc84d2$exports.process;
var $e7e2e92c5958175d$var$Promise = $f333edce04dc84d2$exports.Promise;
// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`
var $e7e2e92c5958175d$var$queueMicrotaskDescriptor = $e7e2e92c5958175d$require$getOwnPropertyDescriptor($f333edce04dc84d2$exports, 'queueMicrotask');
var $e7e2e92c5958175d$var$queueMicrotask = $e7e2e92c5958175d$var$queueMicrotaskDescriptor && $e7e2e92c5958175d$var$queueMicrotaskDescriptor.value;
var $e7e2e92c5958175d$var$flush, $e7e2e92c5958175d$var$head, $e7e2e92c5958175d$var$last, $e7e2e92c5958175d$var$notify, $e7e2e92c5958175d$var$toggle, $e7e2e92c5958175d$var$node, $e7e2e92c5958175d$var$promise, $e7e2e92c5958175d$var$then;
// modern engines have queueMicrotask method
if (!$e7e2e92c5958175d$var$queueMicrotask) {
    $e7e2e92c5958175d$var$flush = function() {
        var parent, fn;
        if ($05f84e7a0e886990$exports && (parent = $e7e2e92c5958175d$var$process.domain)) parent.exit();
        while($e7e2e92c5958175d$var$head){
            fn = $e7e2e92c5958175d$var$head.fn;
            $e7e2e92c5958175d$var$head = $e7e2e92c5958175d$var$head.next;
            try {
                fn();
            } catch (error) {
                if ($e7e2e92c5958175d$var$head) $e7e2e92c5958175d$var$notify();
                else $e7e2e92c5958175d$var$last = undefined;
                throw error;
            }
        }
        $e7e2e92c5958175d$var$last = undefined;
        if (parent) parent.enter();
    };
    // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339
    // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898
    if (!$0c54dcdcb2c0f1e8$exports && !$05f84e7a0e886990$exports && !$9e929de86611c49b$exports && $e7e2e92c5958175d$var$MutationObserver && $e7e2e92c5958175d$var$document) {
        $e7e2e92c5958175d$var$toggle = true;
        $e7e2e92c5958175d$var$node = $e7e2e92c5958175d$var$document.createTextNode('');
        new $e7e2e92c5958175d$var$MutationObserver($e7e2e92c5958175d$var$flush).observe($e7e2e92c5958175d$var$node, {
            characterData: true
        });
        $e7e2e92c5958175d$var$notify = function() {
            $e7e2e92c5958175d$var$node.data = $e7e2e92c5958175d$var$toggle = !$e7e2e92c5958175d$var$toggle;
        };
    // environments with maybe non-completely correct, but existent Promise
    } else if (!$091b027301632dc4$exports && $e7e2e92c5958175d$var$Promise && $e7e2e92c5958175d$var$Promise.resolve) {
        // Promise.resolve without an argument throws an error in LG WebOS 2
        $e7e2e92c5958175d$var$promise = $e7e2e92c5958175d$var$Promise.resolve(undefined);
        // workaround of WebKit ~ iOS Safari 10.1 bug
        $e7e2e92c5958175d$var$promise.constructor = $e7e2e92c5958175d$var$Promise;
        $e7e2e92c5958175d$var$then = $3b52cbe6777e8e42$exports($e7e2e92c5958175d$var$promise.then, $e7e2e92c5958175d$var$promise);
        $e7e2e92c5958175d$var$notify = function() {
            $e7e2e92c5958175d$var$then($e7e2e92c5958175d$var$flush);
        };
    // Node.js without promises
    } else if ($05f84e7a0e886990$exports) $e7e2e92c5958175d$var$notify = function() {
        $e7e2e92c5958175d$var$process.nextTick($e7e2e92c5958175d$var$flush);
    };
    else {
        // strange IE + webpack dev server bug - use .bind(global)
        $e7e2e92c5958175d$require$macrotask = $3b52cbe6777e8e42$exports($e7e2e92c5958175d$require$macrotask, $f333edce04dc84d2$exports);
        $e7e2e92c5958175d$var$notify = function() {
            $e7e2e92c5958175d$require$macrotask($e7e2e92c5958175d$var$flush);
        };
    }
}
$e7e2e92c5958175d$exports = $e7e2e92c5958175d$var$queueMicrotask || function(fn) {
    var task = {
        fn: fn,
        next: undefined
    };
    if ($e7e2e92c5958175d$var$last) $e7e2e92c5958175d$var$last.next = task;
    if (!$e7e2e92c5958175d$var$head) {
        $e7e2e92c5958175d$var$head = task;
        $e7e2e92c5958175d$var$notify();
    }
    $e7e2e92c5958175d$var$last = task;
};


var $a9a1537b2ab64544$exports = {};


// `NewPromiseCapability` abstract operation
// https://tc39.es/ecma262/#sec-newpromisecapability
var $a2a7a87741ab16d8$export$2d1720544b23b823;
'use strict';

var $a2a7a87741ab16d8$var$PromiseCapability = function(C) {
    var resolve, reject;
    this.promise = new C(function($$resolve, $$reject) {
        if (resolve !== undefined || reject !== undefined) throw TypeError('Bad Promise constructor');
        resolve = $$resolve;
        reject = $$reject;
    });
    this.resolve = $c2aed39e690846d2$exports(resolve);
    this.reject = $c2aed39e690846d2$exports(reject);
};
$a2a7a87741ab16d8$export$2d1720544b23b823 = function(C) {
    return new $a2a7a87741ab16d8$var$PromiseCapability(C);
};


$a9a1537b2ab64544$exports = function(C, x) {
    $8cde29e156f67727$exports(C);
    if ($03cf12799242f409$exports(x) && x.constructor === C) return x;
    var promiseCapability = $a2a7a87741ab16d8$export$2d1720544b23b823(C);
    var resolve = promiseCapability.resolve;
    resolve(x);
    return promiseCapability.promise;
};


var $a58c9e1aced3ad5a$exports = {};

$a58c9e1aced3ad5a$exports = function(a, b) {
    var console = $f333edce04dc84d2$exports.console;
    if (console && console.error) arguments.length == 1 ? console.error(a) : console.error(a, b);
};



var $222a12d7e40231b3$exports = {};
$222a12d7e40231b3$exports = function(exec) {
    try {
        return {
            error: false,
            value: exec()
        };
    } catch (error) {
        return {
            error: true,
            value: error
        };
    }
};





var $af948342d2b0764d$exports = {};
$af948342d2b0764d$exports = typeof window == 'object';




var $c137f7ca258a8d03$var$SPECIES = $3e9517d770b151f3$exports('species');
var $c137f7ca258a8d03$var$PROMISE = 'Promise';
var $c137f7ca258a8d03$var$getInternalState = $ea7e65ba02245cf9$exports.getterFor($c137f7ca258a8d03$var$PROMISE);
var $c137f7ca258a8d03$var$setInternalState = $ea7e65ba02245cf9$exports.set;
var $c137f7ca258a8d03$var$getInternalPromiseState = $ea7e65ba02245cf9$exports.getterFor($c137f7ca258a8d03$var$PROMISE);
var $c137f7ca258a8d03$var$NativePromisePrototype = $85dfb1a850120f2f$exports && $85dfb1a850120f2f$exports.prototype;
var $c137f7ca258a8d03$var$PromiseConstructor = $85dfb1a850120f2f$exports;
var $c137f7ca258a8d03$var$PromisePrototype = $c137f7ca258a8d03$var$NativePromisePrototype;
var $c137f7ca258a8d03$var$TypeError = $f333edce04dc84d2$exports.TypeError;
var $c137f7ca258a8d03$var$document = $f333edce04dc84d2$exports.document;
var $c137f7ca258a8d03$var$process = $f333edce04dc84d2$exports.process;
var $c137f7ca258a8d03$var$newPromiseCapability = $a2a7a87741ab16d8$export$2d1720544b23b823;
var $c137f7ca258a8d03$var$newGenericPromiseCapability = $c137f7ca258a8d03$var$newPromiseCapability;
var $c137f7ca258a8d03$var$DISPATCH_EVENT = !!($c137f7ca258a8d03$var$document && $c137f7ca258a8d03$var$document.createEvent && $f333edce04dc84d2$exports.dispatchEvent);
var $c137f7ca258a8d03$var$NATIVE_REJECTION_EVENT = $fcbda71016cee9bb$exports($f333edce04dc84d2$exports.PromiseRejectionEvent);
var $c137f7ca258a8d03$var$UNHANDLED_REJECTION = 'unhandledrejection';
var $c137f7ca258a8d03$var$REJECTION_HANDLED = 'rejectionhandled';
var $c137f7ca258a8d03$var$PENDING = 0;
var $c137f7ca258a8d03$var$FULFILLED = 1;
var $c137f7ca258a8d03$var$REJECTED = 2;
var $c137f7ca258a8d03$var$HANDLED = 1;
var $c137f7ca258a8d03$var$UNHANDLED = 2;
var $c137f7ca258a8d03$var$SUBCLASSING = false;
var $c137f7ca258a8d03$var$Internal, $c137f7ca258a8d03$var$OwnPromiseCapability, $c137f7ca258a8d03$var$PromiseWrapper, $c137f7ca258a8d03$var$nativeThen;
var $c137f7ca258a8d03$var$FORCED = $86acbf67a8f43f79$exports($c137f7ca258a8d03$var$PROMISE, function() {
    var PROMISE_CONSTRUCTOR_SOURCE = $5b63997c7c97e8d6$exports($c137f7ca258a8d03$var$PromiseConstructor);
    var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String($c137f7ca258a8d03$var$PromiseConstructor);
    // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables
    // https://bugs.chromium.org/p/chromium/issues/detail?id=830565
    // We can't detect it synchronously, so just check versions
    if (!GLOBAL_CORE_JS_PROMISE && $f708c8065848ad38$exports === 66) return true;
    // We need Promise#finally in the pure version for preventing prototype pollution
    if ($0a617e53de17f0cf$exports && !$c137f7ca258a8d03$var$PromisePrototype['finally']) return true;
    // We can't use @@species feature detection in V8 since it causes
    // deoptimization and performance degradation
    // https://github.com/zloirock/core-js/issues/679
    if ($f708c8065848ad38$exports >= 51 && /native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) return false;
    // Detect correctness of subclassing with @@species support
    var promise = new $c137f7ca258a8d03$var$PromiseConstructor(function(resolve) {
        resolve(1);
    });
    var FakePromise = function(exec) {
        exec(function() {
        }, function() {
        });
    };
    var constructor = promise.constructor = {
    };
    constructor[$c137f7ca258a8d03$var$SPECIES] = FakePromise;
    $c137f7ca258a8d03$var$SUBCLASSING = promise.then(function() {
    }) instanceof FakePromise;
    if (!$c137f7ca258a8d03$var$SUBCLASSING) return true;
    // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test
    return !GLOBAL_CORE_JS_PROMISE && $af948342d2b0764d$exports && !$c137f7ca258a8d03$var$NATIVE_REJECTION_EVENT;
});
var $c137f7ca258a8d03$var$INCORRECT_ITERATION = $c137f7ca258a8d03$var$FORCED || !$1078680048fab23f$exports(function(iterable) {
    $c137f7ca258a8d03$var$PromiseConstructor.all(iterable)['catch'](function() {
    });
});
// helpers
var $c137f7ca258a8d03$var$isThenable = function(it) {
    var then;
    return $03cf12799242f409$exports(it) && $fcbda71016cee9bb$exports(then = it.then) ? then : false;
};
var $c137f7ca258a8d03$var$notify = function(state, isReject) {
    if (state.notified) return;
    state.notified = true;
    var chain = state.reactions;
    $e7e2e92c5958175d$exports(function() {
        var value = state.value;
        var ok = state.state == $c137f7ca258a8d03$var$FULFILLED;
        var index = 0;
        // variable length - can't use forEach
        while(chain.length > index){
            var reaction = chain[index++];
            var handler = ok ? reaction.ok : reaction.fail;
            var resolve = reaction.resolve;
            var reject = reaction.reject;
            var domain = reaction.domain;
            var result, then, exited;
            try {
                if (handler) {
                    if (!ok) {
                        if (state.rejection === $c137f7ca258a8d03$var$UNHANDLED) $c137f7ca258a8d03$var$onHandleUnhandled(state);
                        state.rejection = $c137f7ca258a8d03$var$HANDLED;
                    }
                    if (handler === true) result = value;
                    else {
                        if (domain) domain.enter();
                        result = handler(value); // can throw
                        if (domain) {
                            domain.exit();
                            exited = true;
                        }
                    }
                    if (result === reaction.promise) reject($c137f7ca258a8d03$var$TypeError('Promise-chain cycle'));
                    else if (then = $c137f7ca258a8d03$var$isThenable(result)) $541d4c9e93c87577$exports(then, result, resolve, reject);
                    else resolve(result);
                } else reject(value);
            } catch (error) {
                if (domain && !exited) domain.exit();
                reject(error);
            }
        }
        state.reactions = [];
        state.notified = false;
        if (isReject && !state.rejection) $c137f7ca258a8d03$var$onUnhandled(state);
    });
};
var $c137f7ca258a8d03$var$dispatchEvent = function(name, promise, reason) {
    var event, handler;
    if ($c137f7ca258a8d03$var$DISPATCH_EVENT) {
        event = $c137f7ca258a8d03$var$document.createEvent('Event');
        event.promise = promise;
        event.reason = reason;
        event.initEvent(name, false, true);
        $f333edce04dc84d2$exports.dispatchEvent(event);
    } else event = {
        promise: promise,
        reason: reason
    };
    if (!$c137f7ca258a8d03$var$NATIVE_REJECTION_EVENT && (handler = $f333edce04dc84d2$exports['on' + name])) handler(event);
    else if (name === $c137f7ca258a8d03$var$UNHANDLED_REJECTION) $a58c9e1aced3ad5a$exports('Unhandled promise rejection', reason);
};
var $c137f7ca258a8d03$var$onUnhandled = function(state) {
    $541d4c9e93c87577$exports($c137f7ca258a8d03$require$task, $f333edce04dc84d2$exports, function() {
        var promise = state.facade;
        var value = state.value;
        var IS_UNHANDLED = $c137f7ca258a8d03$var$isUnhandled(state);
        var result;
        if (IS_UNHANDLED) {
            result = $222a12d7e40231b3$exports(function() {
                if ($05f84e7a0e886990$exports) $c137f7ca258a8d03$var$process.emit('unhandledRejection', value, promise);
                else $c137f7ca258a8d03$var$dispatchEvent($c137f7ca258a8d03$var$UNHANDLED_REJECTION, promise, value);
            });
            // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should
            state.rejection = $05f84e7a0e886990$exports || $c137f7ca258a8d03$var$isUnhandled(state) ? $c137f7ca258a8d03$var$UNHANDLED : $c137f7ca258a8d03$var$HANDLED;
            if (result.error) throw result.value;
        }
    });
};
var $c137f7ca258a8d03$var$isUnhandled = function(state) {
    return state.rejection !== $c137f7ca258a8d03$var$HANDLED && !state.parent;
};
var $c137f7ca258a8d03$var$onHandleUnhandled = function(state) {
    $541d4c9e93c87577$exports($c137f7ca258a8d03$require$task, $f333edce04dc84d2$exports, function() {
        var promise = state.facade;
        if ($05f84e7a0e886990$exports) $c137f7ca258a8d03$var$process.emit('rejectionHandled', promise);
        else $c137f7ca258a8d03$var$dispatchEvent($c137f7ca258a8d03$var$REJECTION_HANDLED, promise, state.value);
    });
};
var $c137f7ca258a8d03$var$bind = function(fn, state, unwrap) {
    return function(value) {
        fn(state, value, unwrap);
    };
};
var $c137f7ca258a8d03$var$internalReject = function(state, value, unwrap) {
    if (state.done) return;
    state.done = true;
    if (unwrap) state = unwrap;
    state.value = value;
    state.state = $c137f7ca258a8d03$var$REJECTED;
    $c137f7ca258a8d03$var$notify(state, true);
};
var $c137f7ca258a8d03$var$internalResolve = function(state, value, unwrap) {
    if (state.done) return;
    state.done = true;
    if (unwrap) state = unwrap;
    try {
        if (state.facade === value) throw $c137f7ca258a8d03$var$TypeError("Promise can't be resolved itself");
        var then = $c137f7ca258a8d03$var$isThenable(value);
        if (then) $e7e2e92c5958175d$exports(function() {
            var wrapper = {
                done: false
            };
            try {
                $541d4c9e93c87577$exports(then, value, $c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalResolve, wrapper, state), $c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalReject, wrapper, state));
            } catch (error) {
                $c137f7ca258a8d03$var$internalReject(wrapper, error, state);
            }
        });
        else {
            state.value = value;
            state.state = $c137f7ca258a8d03$var$FULFILLED;
            $c137f7ca258a8d03$var$notify(state, false);
        }
    } catch (error) {
        $c137f7ca258a8d03$var$internalReject({
            done: false
        }, error, state);
    }
};
// constructor polyfill
if ($c137f7ca258a8d03$var$FORCED) {
    // 25.4.3.1 Promise(executor)
    $c137f7ca258a8d03$var$PromiseConstructor = function Promise(executor) {
        $53d5317711b7b807$exports(this, $c137f7ca258a8d03$var$PromisePrototype);
        $c2aed39e690846d2$exports(executor);
        $541d4c9e93c87577$exports($c137f7ca258a8d03$var$Internal, this);
        var state = $c137f7ca258a8d03$var$getInternalState(this);
        try {
            executor($c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalResolve, state), $c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalReject, state));
        } catch (error) {
            $c137f7ca258a8d03$var$internalReject(state, error);
        }
    };
    $c137f7ca258a8d03$var$PromisePrototype = $c137f7ca258a8d03$var$PromiseConstructor.prototype;
    // eslint-disable-next-line no-unused-vars -- required for `.length`
    $c137f7ca258a8d03$var$Internal = function Promise(executor) {
        $c137f7ca258a8d03$var$setInternalState(this, {
            type: $c137f7ca258a8d03$var$PROMISE,
            done: false,
            notified: false,
            parent: false,
            reactions: [],
            rejection: false,
            state: $c137f7ca258a8d03$var$PENDING,
            value: undefined
        });
    };
    $c137f7ca258a8d03$var$Internal.prototype = $8b266b64a252ca00$exports($c137f7ca258a8d03$var$PromisePrototype, {
        // `Promise.prototype.then` method
        // https://tc39.es/ecma262/#sec-promise.prototype.then
        then: function then(onFulfilled, onRejected) {
            var state = $c137f7ca258a8d03$var$getInternalPromiseState(this);
            var reactions = state.reactions;
            var reaction = $c137f7ca258a8d03$var$newPromiseCapability($43c04f4d8bd60d85$exports(this, $c137f7ca258a8d03$var$PromiseConstructor));
            reaction.ok = $fcbda71016cee9bb$exports(onFulfilled) ? onFulfilled : true;
            reaction.fail = $fcbda71016cee9bb$exports(onRejected) && onRejected;
            reaction.domain = $05f84e7a0e886990$exports ? $c137f7ca258a8d03$var$process.domain : undefined;
            state.parent = true;
            reactions[reactions.length] = reaction;
            if (state.state != $c137f7ca258a8d03$var$PENDING) $c137f7ca258a8d03$var$notify(state, false);
            return reaction.promise;
        },
        // `Promise.prototype.catch` method
        // https://tc39.es/ecma262/#sec-promise.prototype.catch
        'catch': function(onRejected) {
            return this.then(undefined, onRejected);
        }
    });
    $c137f7ca258a8d03$var$OwnPromiseCapability = function() {
        var promise = new $c137f7ca258a8d03$var$Internal();
        var state = $c137f7ca258a8d03$var$getInternalState(promise);
        this.promise = promise;
        this.resolve = $c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalResolve, state);
        this.reject = $c137f7ca258a8d03$var$bind($c137f7ca258a8d03$var$internalReject, state);
    };
    $a2a7a87741ab16d8$export$2d1720544b23b823 = $c137f7ca258a8d03$var$newPromiseCapability = function(C) {
        return C === $c137f7ca258a8d03$var$PromiseConstructor || C === $c137f7ca258a8d03$var$PromiseWrapper ? new $c137f7ca258a8d03$var$OwnPromiseCapability(C) : $c137f7ca258a8d03$var$newGenericPromiseCapability(C);
    };
    if (!$0a617e53de17f0cf$exports && $fcbda71016cee9bb$exports($85dfb1a850120f2f$exports) && $c137f7ca258a8d03$var$NativePromisePrototype !== Object.prototype) {
        $c137f7ca258a8d03$var$nativeThen = $c137f7ca258a8d03$var$NativePromisePrototype.then;
        if (!$c137f7ca258a8d03$var$SUBCLASSING) {
            // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs
            $a8719ecb9393e08b$exports($c137f7ca258a8d03$var$NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {
                var that = this;
                return new $c137f7ca258a8d03$var$PromiseConstructor(function(resolve, reject) {
                    $541d4c9e93c87577$exports($c137f7ca258a8d03$var$nativeThen, that, resolve, reject);
                }).then(onFulfilled, onRejected);
            // https://github.com/zloirock/core-js/issues/640
            }, {
                unsafe: true
            });
            // makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`
            $a8719ecb9393e08b$exports($c137f7ca258a8d03$var$NativePromisePrototype, 'catch', $c137f7ca258a8d03$var$PromisePrototype['catch'], {
                unsafe: true
            });
        }
        // make `.constructor === Promise` work for native promise-based APIs
        try {
            delete $c137f7ca258a8d03$var$NativePromisePrototype.constructor;
        } catch (error) {
        }
        // make `instanceof Promise` work for native promise-based APIs
        if ($b43955ec518fbd41$exports) $b43955ec518fbd41$exports($c137f7ca258a8d03$var$NativePromisePrototype, $c137f7ca258a8d03$var$PromisePrototype);
    }
}
$af460506ee59fa9e$exports({
    global: true,
    wrap: true,
    forced: $c137f7ca258a8d03$var$FORCED
}, {
    Promise: $c137f7ca258a8d03$var$PromiseConstructor
});
$78b33d3572646828$exports($c137f7ca258a8d03$var$PromiseConstructor, $c137f7ca258a8d03$var$PROMISE, false, true);
$4bea57d3e3b6d7e9$exports($c137f7ca258a8d03$var$PROMISE);
$c137f7ca258a8d03$var$PromiseWrapper = $f4dfad6b8aca7fc7$exports($c137f7ca258a8d03$var$PROMISE);
// statics
$af460506ee59fa9e$exports({
    target: $c137f7ca258a8d03$var$PROMISE,
    stat: true,
    forced: $c137f7ca258a8d03$var$FORCED
}, {
    // `Promise.reject` method
    // https://tc39.es/ecma262/#sec-promise.reject
    reject: function reject(r) {
        var capability = $c137f7ca258a8d03$var$newPromiseCapability(this);
        $541d4c9e93c87577$exports(capability.reject, undefined, r);
        return capability.promise;
    }
});
$af460506ee59fa9e$exports({
    target: $c137f7ca258a8d03$var$PROMISE,
    stat: true,
    forced: $0a617e53de17f0cf$exports || $c137f7ca258a8d03$var$FORCED
}, {
    // `Promise.resolve` method
    // https://tc39.es/ecma262/#sec-promise.resolve
    resolve: function resolve(x) {
        return $a9a1537b2ab64544$exports($0a617e53de17f0cf$exports && this === $c137f7ca258a8d03$var$PromiseWrapper ? $c137f7ca258a8d03$var$PromiseConstructor : this, x);
    }
});
$af460506ee59fa9e$exports({
    target: $c137f7ca258a8d03$var$PROMISE,
    stat: true,
    forced: $c137f7ca258a8d03$var$INCORRECT_ITERATION
}, {
    // `Promise.all` method
    // https://tc39.es/ecma262/#sec-promise.all
    all: function all(iterable) {
        var C = this;
        var capability = $c137f7ca258a8d03$var$newPromiseCapability(C);
        var resolve = capability.resolve;
        var reject = capability.reject;
        var result = $222a12d7e40231b3$exports(function() {
            var $promiseResolve = $c2aed39e690846d2$exports(C.resolve);
            var values = [];
            var counter = 0;
            var remaining = 1;
            $4d171c5aa8e88bbc$exports(iterable, function(promise) {
                var index = counter++;
                var alreadyCalled = false;
                remaining++;
                $541d4c9e93c87577$exports($promiseResolve, C, promise).then(function(value) {
                    if (alreadyCalled) return;
                    alreadyCalled = true;
                    values[index] = value;
                    --remaining || resolve(values);
                }, reject);
            });
            --remaining || resolve(values);
        });
        if (result.error) reject(result.value);
        return capability.promise;
    },
    // `Promise.race` method
    // https://tc39.es/ecma262/#sec-promise.race
    race: function race(iterable) {
        var C = this;
        var capability = $c137f7ca258a8d03$var$newPromiseCapability(C);
        var reject = capability.reject;
        var result = $222a12d7e40231b3$exports(function() {
            var $promiseResolve = $c2aed39e690846d2$exports(C.resolve);
            $4d171c5aa8e88bbc$exports(iterable, function(promise) {
                $541d4c9e93c87577$exports($promiseResolve, C, promise).then(capability.resolve, reject);
            });
        });
        if (result.error) reject(result.value);
        return capability.promise;
    }
});


'use strict';









// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829
var $cde27604e2829f62$var$NON_GENERIC = !!$85dfb1a850120f2f$exports && $639365070cb811ed$exports(function() {
    $85dfb1a850120f2f$exports.prototype['finally'].call({
        then: function() {
        }
    }, function() {
    });
});
// `Promise.prototype.finally` method
// https://tc39.es/ecma262/#sec-promise.prototype.finally
$af460506ee59fa9e$exports({
    target: 'Promise',
    proto: true,
    real: true,
    forced: $cde27604e2829f62$var$NON_GENERIC
}, {
    'finally': function(onFinally) {
        var C = $43c04f4d8bd60d85$exports(this, $f4dfad6b8aca7fc7$exports('Promise'));
        var isFunction = $fcbda71016cee9bb$exports(onFinally);
        return this.then(isFunction ? function(x) {
            return $a9a1537b2ab64544$exports(C, onFinally()).then(function() {
                return x;
            });
        } : onFinally, isFunction ? function(e) {
            return $a9a1537b2ab64544$exports(C, onFinally()).then(function() {
                throw e;
            });
        } : onFinally);
    }
});
// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`
if (!$0a617e53de17f0cf$exports && $fcbda71016cee9bb$exports($85dfb1a850120f2f$exports)) {
    var $cde27604e2829f62$var$method = $f4dfad6b8aca7fc7$exports('Promise').prototype['finally'];
    if ($85dfb1a850120f2f$exports.prototype['finally'] !== $cde27604e2829f62$var$method) $a8719ecb9393e08b$exports($85dfb1a850120f2f$exports.prototype, 'finally', $cde27604e2829f62$var$method, {
        unsafe: true
    });
}


'use strict';
var $279d552dd5f5c4d7$exports = {};


var $30043a530ee32230$exports = {};


var $30043a530ee32230$var$String = $f333edce04dc84d2$exports.String;
$30043a530ee32230$exports = function(argument) {
    if ($dd8b053bbc200b54$exports(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');
    return $30043a530ee32230$var$String(argument);
};



var $279d552dd5f5c4d7$var$charAt = $0e047cd7e4bd2a61$exports(''.charAt);
var $279d552dd5f5c4d7$var$charCodeAt = $0e047cd7e4bd2a61$exports(''.charCodeAt);
var $279d552dd5f5c4d7$var$stringSlice = $0e047cd7e4bd2a61$exports(''.slice);
var $279d552dd5f5c4d7$var$createMethod = function(CONVERT_TO_STRING) {
    return function($this, pos) {
        var S = $30043a530ee32230$exports($61d1221ff70a8a56$exports($this));
        var position = $a6b1a426cfae0839$exports(pos);
        var size = S.length;
        var first, second;
        if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
        first = $279d552dd5f5c4d7$var$charCodeAt(S, position);
        return first < 55296 || first > 56319 || position + 1 === size || (second = $279d552dd5f5c4d7$var$charCodeAt(S, position + 1)) < 56320 || second > 57343 ? CONVERT_TO_STRING ? $279d552dd5f5c4d7$var$charAt(S, position) : first : CONVERT_TO_STRING ? $279d552dd5f5c4d7$var$stringSlice(S, position, position + 2) : (first - 55296 << 10) + (second - 56320) + 65536;
    };
};
$279d552dd5f5c4d7$exports = {
    // `String.prototype.codePointAt` method
    // https://tc39.es/ecma262/#sec-string.prototype.codepointat
    codeAt: $279d552dd5f5c4d7$var$createMethod(false),
    // `String.prototype.at` method
    // https://github.com/mathiasbynens/String.prototype.at
    charAt: $279d552dd5f5c4d7$var$createMethod(true)
};


var $820cb16258581a1e$require$charAt = $279d552dd5f5c4d7$exports.charAt;



var $820cb16258581a1e$var$STRING_ITERATOR = 'String Iterator';
var $820cb16258581a1e$var$setInternalState = $ea7e65ba02245cf9$exports.set;
var $820cb16258581a1e$var$getInternalState = $ea7e65ba02245cf9$exports.getterFor($820cb16258581a1e$var$STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.es/ecma262/#sec-string.prototype-@@iterator
$ab7a19d4a83b9c08$exports(String, 'String', function(iterated) {
    $820cb16258581a1e$var$setInternalState(this, {
        type: $820cb16258581a1e$var$STRING_ITERATOR,
        string: $30043a530ee32230$exports(iterated),
        index: 0
    });
// `%StringIteratorPrototype%.next` method
// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
    var state = $820cb16258581a1e$var$getInternalState(this);
    var string = state.string;
    var index = state.index;
    var point;
    if (index >= string.length) return {
        value: undefined,
        done: true
    };
    point = $820cb16258581a1e$require$charAt(string, index);
    state.index += point.length;
    return {
        value: point,
        done: false
    };
});


'use strict';









var $6b61db78a80e5257$exports = {};

var $6b61db78a80e5257$var$replace = $0e047cd7e4bd2a61$exports(''.replace);
var $6b61db78a80e5257$var$TEST = function(arg) {
    return String(Error(arg).stack);
}('zxcasd');
var $6b61db78a80e5257$var$V8_OR_CHAKRA_STACK_ENTRY = /\n\s*at [^:]*:[^\n]*/;
var $6b61db78a80e5257$var$IS_V8_OR_CHAKRA_STACK = $6b61db78a80e5257$var$V8_OR_CHAKRA_STACK_ENTRY.test($6b61db78a80e5257$var$TEST);
$6b61db78a80e5257$exports = function(stack, dropEntries) {
    if ($6b61db78a80e5257$var$IS_V8_OR_CHAKRA_STACK && typeof stack == 'string') while(dropEntries--)stack = $6b61db78a80e5257$var$replace(stack, $6b61db78a80e5257$var$V8_OR_CHAKRA_STACK_ENTRY, '');
    return stack;
};


var $f738139e080ada87$exports = {};


// `InstallErrorCause` abstract operation
// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause
$f738139e080ada87$exports = function(O, options) {
    if ($03cf12799242f409$exports(options) && 'cause' in options) $55c1099db5c9e6a0$exports(O, 'cause', options.cause);
};



var $ee4e17cb5169c3c6$exports = {};

$ee4e17cb5169c3c6$exports = function(argument, $default) {
    return argument === undefined ? arguments.length < 2 ? '' : $default : $30043a530ee32230$exports(argument);
};



var $63755b3b52896780$exports = {};


$63755b3b52896780$exports = !$639365070cb811ed$exports(function() {
    var error = Error('a');
    if (!('stack' in error)) return true;
    // eslint-disable-next-line es/no-object-defineproperty -- safe
    Object.defineProperty(error, 'stack', $3c8b2ccf7adfb59a$exports(1, 7));
    return error.stack !== 7;
});


var $7f1f401813623a17$var$TO_STRING_TAG = $3e9517d770b151f3$exports('toStringTag');
var $7f1f401813623a17$var$Error = $f333edce04dc84d2$exports.Error;
var $7f1f401813623a17$var$push = [].push;
var $7f1f401813623a17$var$$AggregateError = function AggregateError(errors, message /* , options */ ) {
    var options = arguments.length > 2 ? arguments[2] : undefined;
    var isInstance = $b5a2a9c765693536$exports($7f1f401813623a17$var$AggregateErrorPrototype, this);
    var that;
    if ($b43955ec518fbd41$exports) that = $b43955ec518fbd41$exports(new $7f1f401813623a17$var$Error(), isInstance ? $f17f9036e72a9934$exports(this) : $7f1f401813623a17$var$AggregateErrorPrototype);
    else {
        that = isInstance ? this : $d3ac9847cf651bba$exports($7f1f401813623a17$var$AggregateErrorPrototype);
        $55c1099db5c9e6a0$exports(that, $7f1f401813623a17$var$TO_STRING_TAG, 'Error');
    }
    if (message !== undefined) $55c1099db5c9e6a0$exports(that, 'message', $ee4e17cb5169c3c6$exports(message));
    if ($63755b3b52896780$exports) $55c1099db5c9e6a0$exports(that, 'stack', $6b61db78a80e5257$exports(that.stack, 1));
    $f738139e080ada87$exports(that, options);
    var errorsArray = [];
    $4d171c5aa8e88bbc$exports(errors, $7f1f401813623a17$var$push, {
        that: errorsArray
    });
    $55c1099db5c9e6a0$exports(that, 'errors', errorsArray);
    return that;
};
if ($b43955ec518fbd41$exports) $b43955ec518fbd41$exports($7f1f401813623a17$var$$AggregateError, $7f1f401813623a17$var$Error);
else $2dfe3c4787ce0e40$exports($7f1f401813623a17$var$$AggregateError, $7f1f401813623a17$var$Error, {
    name: true
});
var $7f1f401813623a17$var$AggregateErrorPrototype = $7f1f401813623a17$var$$AggregateError.prototype = $d3ac9847cf651bba$exports($7f1f401813623a17$var$Error.prototype, {
    constructor: $3c8b2ccf7adfb59a$exports(1, $7f1f401813623a17$var$$AggregateError),
    message: $3c8b2ccf7adfb59a$exports(1, ''),
    name: $3c8b2ccf7adfb59a$exports(1, 'AggregateError')
});
// `AggregateError` constructor
// https://tc39.es/ecma262/#sec-aggregate-error-constructor
$af460506ee59fa9e$exports({
    global: true
}, {
    AggregateError: $7f1f401813623a17$var$$AggregateError
});




'use strict';






// `Promise.allSettled` method
// https://tc39.es/ecma262/#sec-promise.allsettled
$af460506ee59fa9e$exports({
    target: 'Promise',
    stat: true
}, {
    allSettled: function allSettled(iterable) {
        var C = this;
        var capability = $a2a7a87741ab16d8$export$2d1720544b23b823(C);
        var resolve = capability.resolve;
        var reject = capability.reject;
        var result = $222a12d7e40231b3$exports(function() {
            var promiseResolve = $c2aed39e690846d2$exports(C.resolve);
            var values = [];
            var counter = 0;
            var remaining = 1;
            $4d171c5aa8e88bbc$exports(iterable, function(promise) {
                var index = counter++;
                var alreadyCalled = false;
                remaining++;
                $541d4c9e93c87577$exports(promiseResolve, C, promise).then(function(value) {
                    if (alreadyCalled) return;
                    alreadyCalled = true;
                    values[index] = {
                        status: 'fulfilled',
                        value: value
                    };
                    --remaining || resolve(values);
                }, function(error) {
                    if (alreadyCalled) return;
                    alreadyCalled = true;
                    values[index] = {
                        status: 'rejected',
                        reason: error
                    };
                    --remaining || resolve(values);
                });
            });
            --remaining || resolve(values);
        });
        if (result.error) reject(result.value);
        return capability.promise;
    }
});




'use strict';







var $63a11553943a5acf$var$PROMISE_ANY_ERROR = 'No one promise resolved';
// `Promise.any` method
// https://tc39.es/ecma262/#sec-promise.any
$af460506ee59fa9e$exports({
    target: 'Promise',
    stat: true
}, {
    any: function any(iterable) {
        var C = this;
        var AggregateError = $f4dfad6b8aca7fc7$exports('AggregateError');
        var capability = $a2a7a87741ab16d8$export$2d1720544b23b823(C);
        var resolve = capability.resolve;
        var reject = capability.reject;
        var result = $222a12d7e40231b3$exports(function() {
            var promiseResolve = $c2aed39e690846d2$exports(C.resolve);
            var errors = [];
            var counter = 0;
            var remaining = 1;
            var alreadyResolved = false;
            $4d171c5aa8e88bbc$exports(iterable, function(promise) {
                var index = counter++;
                var alreadyRejected = false;
                remaining++;
                $541d4c9e93c87577$exports(promiseResolve, C, promise).then(function(value) {
                    if (alreadyRejected || alreadyResolved) return;
                    alreadyResolved = true;
                    resolve(value);
                }, function(error) {
                    if (alreadyRejected || alreadyResolved) return;
                    alreadyRejected = true;
                    errors[index] = error;
                    --remaining || reject(new AggregateError(errors, $63a11553943a5acf$var$PROMISE_ANY_ERROR));
                });
            });
            --remaining || reject(new AggregateError(errors, $63a11553943a5acf$var$PROMISE_ANY_ERROR));
        });
        if (result.error) reject(result.value);
        return capability.promise;
    }
});




'use strict';



// `Promise.try` method
// https://github.com/tc39/proposal-promise-try
$af460506ee59fa9e$exports({
    target: 'Promise',
    stat: true
}, {
    'try': function(callbackfn) {
        var promiseCapability = $a2a7a87741ab16d8$export$2d1720544b23b823(this);
        var result = $222a12d7e40231b3$exports(callbackfn);
        (result.error ? promiseCapability.reject : promiseCapability.resolve)(result.value);
        return promiseCapability.promise;
    }
});



var $42931a78786f2e5d$exports = {};
// iterable DOM collections
// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
$42931a78786f2e5d$exports = {
    CSSRuleList: 0,
    CSSStyleDeclaration: 0,
    CSSValueList: 0,
    ClientRectList: 0,
    DOMRectList: 0,
    DOMStringList: 0,
    DOMTokenList: 1,
    DataTransferItemList: 0,
    FileList: 0,
    HTMLAllCollection: 0,
    HTMLCollection: 0,
    HTMLFormElement: 0,
    HTMLSelectElement: 0,
    MediaList: 0,
    MimeTypeArray: 0,
    NamedNodeMap: 0,
    NodeList: 1,
    PaintRequestList: 0,
    Plugin: 0,
    PluginArray: 0,
    SVGLengthList: 0,
    SVGNumberList: 0,
    SVGPathSegList: 0,
    SVGPointList: 0,
    SVGStringList: 0,
    SVGTransformList: 0,
    SourceBufferList: 0,
    StyleSheetList: 0,
    TextTrackCueList: 0,
    TextTrackList: 0,
    TouchList: 0
};


var $a411ca82190b83df$exports = {};

var $a411ca82190b83df$var$classList = $0158366a26a6b285$exports('span').classList;
var $a411ca82190b83df$var$DOMTokenListPrototype = $a411ca82190b83df$var$classList && $a411ca82190b83df$var$classList.constructor && $a411ca82190b83df$var$classList.constructor.prototype;
$a411ca82190b83df$exports = $a411ca82190b83df$var$DOMTokenListPrototype === Object.prototype ? undefined : $a411ca82190b83df$var$DOMTokenListPrototype;





var $af54aef524dfbde4$var$ITERATOR = $3e9517d770b151f3$exports('iterator');
var $af54aef524dfbde4$var$TO_STRING_TAG = $3e9517d770b151f3$exports('toStringTag');
var $af54aef524dfbde4$var$ArrayValues = $19dfc4060129c05d$exports.values;
var $af54aef524dfbde4$var$handlePrototype = function(CollectionPrototype, COLLECTION_NAME) {
    if (CollectionPrototype) {
        // some Chrome versions have non-configurable methods on DOMTokenList
        if (CollectionPrototype[$af54aef524dfbde4$var$ITERATOR] !== $af54aef524dfbde4$var$ArrayValues) try {
            $55c1099db5c9e6a0$exports(CollectionPrototype, $af54aef524dfbde4$var$ITERATOR, $af54aef524dfbde4$var$ArrayValues);
        } catch (error) {
            CollectionPrototype[$af54aef524dfbde4$var$ITERATOR] = $af54aef524dfbde4$var$ArrayValues;
        }
        if (!CollectionPrototype[$af54aef524dfbde4$var$TO_STRING_TAG]) $55c1099db5c9e6a0$exports(CollectionPrototype, $af54aef524dfbde4$var$TO_STRING_TAG, COLLECTION_NAME);
        if ($42931a78786f2e5d$exports[COLLECTION_NAME]) for(var METHOD_NAME in $19dfc4060129c05d$exports){
            // some Chrome versions have non-configurable methods on DOMTokenList
            if (CollectionPrototype[METHOD_NAME] !== $19dfc4060129c05d$exports[METHOD_NAME]) try {
                $55c1099db5c9e6a0$exports(CollectionPrototype, METHOD_NAME, $19dfc4060129c05d$exports[METHOD_NAME]);
            } catch (error) {
                CollectionPrototype[METHOD_NAME] = $19dfc4060129c05d$exports[METHOD_NAME];
            }
        }
    }
};
for(var $af54aef524dfbde4$var$COLLECTION_NAME in $42931a78786f2e5d$exports)$af54aef524dfbde4$var$handlePrototype($f333edce04dc84d2$exports[$af54aef524dfbde4$var$COLLECTION_NAME] && $f333edce04dc84d2$exports[$af54aef524dfbde4$var$COLLECTION_NAME].prototype, $af54aef524dfbde4$var$COLLECTION_NAME);
$af54aef524dfbde4$var$handlePrototype($a411ca82190b83df$exports, 'DOMTokenList');


$4b1f252cc54b0e64$var$main();
function $4b1f252cc54b0e64$var$main() {
    return $4b1f252cc54b0e64$var$_main.apply(this, arguments);
}
function $4b1f252cc54b0e64$var$_main() {
    $4b1f252cc54b0e64$var$_main = (/*@__PURE__*/$parcel$interopDefault($bbb9b92677e7f4e1$exports))(/*#__PURE__*/ (/*@__PURE__*/$parcel$interopDefault($efaf621fa185bd77$exports)).mark(function _callee2() {
        var fn1, fn2;
        return (/*@__PURE__*/$parcel$interopDefault($efaf621fa185bd77$exports)).wrap(function _callee2$(_context2) {
            while(true)switch(_context2.prev = _context2.next){
                case 0:
                    fn1 = $4b1f252cc54b0e64$var$the_thing();
                    fn2 = $4b1f252cc54b0e64$var$the_thing();
                    fn2(1);
                    fn1(2);
                case 4:
                case "end":
                    return _context2.stop();
            }
        }, _callee2);
    }));
    return $4b1f252cc54b0e64$var$_main.apply(this, arguments);
}
function $4b1f252cc54b0e64$var$the_thing() {
    var resolved_promise = Promise.resolve();
    return(/*#__PURE__*/ (function() {
        var _ref = (/*@__PURE__*/$parcel$interopDefault($bbb9b92677e7f4e1$exports))(/*#__PURE__*/ (/*@__PURE__*/$parcel$interopDefault($efaf621fa185bd77$exports)).mark(function _callee(value) {
            return (/*@__PURE__*/$parcel$interopDefault($efaf621fa185bd77$exports)).wrap(function _callee$(_context) {
                while(true)switch(_context.prev = _context.next){
                    case 0:
                        console.log("Function for", value, "is awaiting resolved promise");
                        _context.next = 3;
                        return resolved_promise;
                    case 3:
                        console.log("Function for", value, "continued");
                    case 4:
                    case "end":
                        return _context.stop();
                }
            }, _callee);
        }));
        return function(_x) {
            return _ref.apply(this, arguments);
        };
    })());
}

})();

How to transpile: Go to https://babeljs.io/repl/#?browsers=ie%2011&build=&builtIns=entry&corejs=3.6&spec=false&loose=false&code_lz=LYQwlgdgFAlA3AKASAzgTwgYwAQDMCuWALmAPYTaiSzYDeC22m5KReEAjNgLzZEAWAUwD6AyAHNYiRswit2AJh58ho_hKkNFUDvC25OUBXoC-SAsTIUBIsREkw6W2fIBOglKQA2AN0EATYQAHV1JgMBRBZQAFUPDIgDp3T19BTUZ3InxXClQMHB8QL3wo7gA-J0YZFm9BBK9SSQAiADFCTBJyPFJXJoAabELiwQGmiOwQAHdwEntsZO8_f2wQsIjBJr0qiemwNgXUwNX4wWkql1r6xqhW9s6KXB7-waKS0dlZkv9Ns5NEEyAA&debug=false&forceAllTransforms=false&shippedProposals=false&circleciRepo=&evaluate=true&fileSize=false&timeTravel=false&sourceType=module&lineWrap=false&presets=env%2Ctypescript&prettier=false&targets=&version=7.16.6&externalPlugins=&assumptions=%7B%7D

Copy the contents of https://unpkg.com/core-js-bundle@3.20.0/index.js and https://unpkg.com/regenerator-runtime@0.12.1/runtime.js and the result to the right from the babel REPL into a js file and run it in IE11

@zloirock
Copy link
Owner

I was able to reproduce it. Most likely it's an issue in the scheduler since it happens in IE and old V8, but not in old Safari.

@zloirock zloirock added the bug label Dec 21, 2021
@zloirock
Copy link
Owner

Transpiling and async functions are not requied, we can simplify it to

function the_thing() {
  const resolved_promise = Promise.resolve();
  return function(value) {
    console.log("Function for", value, "is awaiting resolved promise");
    resolved_promise.then(function () {
      console.log("Function for", value, "continued");
    });
  };
}

const fn1 = the_thing();
const fn2 = the_thing();
fn2(1);
fn1(2);

@zloirock
Copy link
Owner

Or even to

var p1 = Promise.resolve();
var p2 = Promise.resolve();
p2.then(function() { console.log('should be first') });
p1.then(function() { console.log('should be second') });

@zloirock
Copy link
Owner

zloirock commented Dec 21, 2021

Now, unlike promises-aplus-tests case, promises-es6-tests case fails in 2 order-related tests, however, some time ago all were passed.
image
After resolving this issue need to add it to CI.

    "promises-es6-tests": "~0.5.0",
   // ...
    "test-promises": "run-s test-promises-aplus test-promises-es6",
    "test-promises-aplus": "promises-aplus-tests tests/promises-aplus/adapter --timeout 1000",
    "test-promises-es6": "promises-es6-tests tests/promises-aplus/adapter --timeout 1000",

@zloirock zloirock added the es label Dec 21, 2021
@zloirock
Copy link
Owner

Fixed in 3.20.1.

Vylpes pushed a commit to Vylpes/Droplet that referenced this issue Dec 25, 2023
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [core-js](https://github.com/zloirock/core-js) | dependencies | minor | [`3.12.0` -> `3.34.0`](https://renovatebot.com/diffs/npm/core-js/3.12.0/3.34.0) |

---

### Release Notes

<details>
<summary>zloirock/core-js (core-js)</summary>

### [`v3.34.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3340---20231206)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.3...v3.34.0)

-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping):
    -   Methods:
        -   `Object.groupBy`
        -   `Map.groupBy`
    -   Moved to stable ES, [November 2023 TC39 meeting](https://github.com/tc39/proposal-array-grouping/issues/60)
    -   Added `es.` namespace modules, `/es/` and `/stable/` namespaces entries
-   [`Promise.withResolvers` proposal](https://github.com/tc39/proposal-promise-with-resolvers):
    -   Method:
        -   `Promise.withResolvers`
    -   Moved to stable ES, [November 2023 TC39 meeting](https://twitter.com/robpalmer2/status/1729216597623976407)
    -   Added `es.` namespace module, `/es/` and `/stable/` namespaces entries
-   Fixed a web incompatibility issue of [`Iterator` helpers proposal](https://github.com/tc39/proposal-iterator-helpers), [proposal-iterator-helpers/287](https://github.com/tc39/proposal-iterator-helpers/pull/287) and some following changes, November 2023 TC39 meeting
-   Added [`Uint8Array` to / from base64 and hex stage 2 proposal](https://github.com/tc39/proposal-arraybuffer-base64):
    -   Methods:
        -   `Uint8Array.fromBase64`
        -   `Uint8Array.fromHex`
        -   `Uint8Array.prototype.toBase64`
        -   `Uint8Array.prototype.toHex`
-   Relaxed some specific cases of [`Number.fromString`](https://github.com/tc39/proposal-number-fromstring) validation before clarification of [proposal-number-fromstring/24](https://github.com/tc39/proposal-number-fromstring/issues/24)
-   Fixed `@@&#8203;toStringTag` property descriptors on DOM collections, [#&#8203;1312](https://github.com/zloirock/core-js/issues/1312)
-   Fixed the order of arguments validation in `Array` iteration methods, [#&#8203;1313](https://github.com/zloirock/core-js/issues/1313)
-   Some minor `atob` / `btoa` improvements
-   Compat data improvements:
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as shipped from FF121

### [`v3.33.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3333---20231120)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.2...v3.33.3)

-   Fixed an issue getting the global object on Duktape, [#&#8203;1303](https://github.com/zloirock/core-js/issues/1303)
-   Avoid sharing internal `[[DedentMap]]` from [`String.dedent` proposal](https://github.com/tc39/proposal-string-dedent) between `core-js` instances before stabilization of the proposal
-   Some internal untangling
-   Compat data improvements:
    -   Added [Deno 1.38](https://deno.com/blog/v1.38) compat data mapping
    -   [`Array.fromAsync`](https://github.com/tc39/proposal-array-from-async) marked as [supported from Deno 1.38](https://github.com/denoland/deno/pull/21048)
    -   [`Symbol.{ dispose, asyncDispose }`](https://github.com/tc39/proposal-explicit-resource-management) marked as [supported from Deno 1.38](https://github.com/denoland/deno/pull/20845)
    -   Added Opera Android 79 compat data mapping
    -   Added Oculus Quest Browser 30 compat data mapping
    -   Updated Electron 28 and 29 compat data mapping

### [`v3.33.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3332---20231031)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.1...v3.33.2)

-   Simplified `structuredClone` polyfill, avoided second tree pass in cases of transferring
-   Added support of [`SuppressedError`](https://github.com/tc39/proposal-explicit-resource-management#the-suppressederror-error) to `structuredClone` polyfill
-   Removed unspecified unnecessary `ArrayBuffer` and `DataView` dependencies of `structuredClone` lack of which could cause errors in some entries in IE10-
-   Fixed handling of fractional number part in [`Number.fromString`](https://github.com/tc39/proposal-number-fromstring)
-   Compat data improvements:
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as [supported from Chromium 120](https://bugs.chromium.org/p/chromium/issues/detail?id=1425839)
    -   Updated Opera Android 78 compat data mapping
    -   Added Electron 29 compat data mapping

### [`v3.33.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3331---20231020)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.33.0...v3.33.1)

-   Added one more workaround of possible error with `Symbol` polyfill on global object, [#&#8203;1289](https://github.com/zloirock/core-js/issues/1289#issuecomment-1768411444)
-   Directly specified `type: commonjs` in `package.json` of all packages to avoid potential breakage in future Node versions, see [this issue](https://github.com/nodejs/TSC/issues/1445)
-   Prevented potential issue with lack of some dependencies after automatic optimization polyfills of some methods in the pure version
-   Some minor internal fixes and optimizations
-   Compat data improvements:
    -   [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as [supported from FF119](https://bugzilla.mozilla.org/show_bug.cgi?id=1850755)
    -   Added React Native 0.73 Hermes compat data, mainly fixes of [some issues](https://github.com/facebook/hermes/issues/770)
    -   Added [NodeJS 21.0 compat data mapping](https://nodejs.org/ru/blog/release/v21.0.0)

### [`v3.33.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3330---20231002)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.2...v3.33.0)

-   Re-introduced [`RegExp` escaping stage 2 proposal](https://github.com/tc39/proposal-regex-escaping), September 2023 TC39 meeting:
    -   Added `RegExp.escape` method with the new set of symbols for escaping
    -   Some years ago, it was presented in `core-js`, but it was removed after rejecting the old version of this proposal
-   Added [`ArrayBuffer.prototype.{ transfer, transferToFixedLength }`](https://github.com/tc39/proposal-arraybuffer-transfer) and support transferring of `ArrayBuffer`s via [`structuredClone`](https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone) to engines with `MessageChannel`
-   Optimized [`Math.f16round`](https://github.com/tc39/proposal-float16array) polyfill
-   Fixed [some conversion cases](https://github.com/petamoriken/float16/issues/1046) of [`Math.f16round` and `DataView.prototype.{ getFloat16, setFloat16 }`](https://github.com/tc39/proposal-float16array)
-   Fully forced polyfilling of [the TC39 `Observable` proposal](https://github.com/tc39/proposal-observable) because of incompatibility with [the new WHATWG `Observable` proposal](https://github.com/WICG/observable)
-   Added an extra workaround of errors with exotic environment objects in `Symbol` polyfill, [#&#8203;1289](https://github.com/zloirock/core-js/issues/1289)
-   Some minor fixes and stylistic changes
-   Compat data improvements:
    -   V8 unshipped [`Iterator` helpers](https://github.com/tc39/proposal-iterator-helpers) because of [some Web compatibility issues](https://github.com/tc39/proposal-iterator-helpers/issues/286)
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as [supported from V8 ~ Chrome 119](https://chromestatus.com/feature/5810984110784512)
    -   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping) features marked as [supported from FF119](https://bugzilla.mozilla.org/show_bug.cgi?id=1792650#c9)
    -   [`value` argument of `URLSearchParams.prototype.{ has, delete }`](https://url.spec.whatwg.org/#dom-urlsearchparams-delete) marked as properly supported from V8 ~ Chrome 118
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) and [`URLSearchParams.prototype.size`](https://url.spec.whatwg.org/#dom-urlsearchparams-size) marked as [supported from Bun 1.0.2](https://github.com/oven-sh/bun/releases/tag/bun-v1.0.2)
    -   Added Deno 1.37 compat data mapping
    -   Added Electron 28 compat data mapping
    -   Added Opera Android 78 compat data mapping

### [`v3.32.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3322---20230907)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.1...v3.32.2)

-   Fixed `structuredClone` feature detection `core-js@3.32.1` bug, [#&#8203;1288](https://github.com/zloirock/core-js/issues/1288)
-   Added a workaround of old WebKit + `eval` bug, [#&#8203;1287](https://github.com/zloirock/core-js/pull/1287)
-   Compat data improvements:
    -   Added Samsung Internet 23 compat data mapping
    -   Added Quest Browser 29 compat data mapping

### [`v3.32.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3321---20230819)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.32.0...v3.32.1)

-   Fixed some cases of IEEE754 rounding, [#&#8203;1279](https://github.com/zloirock/core-js/issues/1279), thanks [**@&#8203;petamoriken**](https://github.com/petamoriken)
-   Prevented injection `process` polyfill to `core-js` via some bundlers or `esm.sh`, [#&#8203;1277](https://github.com/zloirock/core-js/issues/1277)
-   Some minor fixes and stylistic changes
-   Compat data improvements:
    -   [`Promise.withResolvers`](https://github.com/tc39/proposal-promise-with-resolvers) marked as supported [from Bun 0.7.1](https://bun.sh/blog/bun-v0.7.1#bun-ismainthread-and-promise-withresolvers)
    -   Added Opera Android 77 compat data mapping
    -   Updated Electron 27 compat data mapping

### [`v3.32.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3320---20230728)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.31.1...v3.32.0)

-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping), July 2023 TC39 meeting updates:
    -   [Moved back to stage 3](https://github.com/tc39/proposal-array-grouping/issues/54)
    -   Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
-   [`Promise.withResolvers` proposal](https://github.com/tc39/proposal-promise-with-resolvers), July 2023 TC39 meeting updates:
    -   [Moved to stage 3](https://github.com/tc39/proposal-promise-with-resolvers/pull/18)
    -   Added `/actual/` namespaces entries, unconditional forced replacement changed to feature detection
-   [`Set` methods stage 3 proposal](https://github.com/tc39/proposal-set-methods), July 2023 TC39 meeting updates:
    -   Throw on negative `Set` sizes, [proposal-set-methods/88](https://github.com/tc39/proposal-set-methods/pull/88)
    -   Removed `IsCallable` check in `GetKeysIterator`, [proposal-set-methods/101](https://github.com/tc39/proposal-set-methods/pull/101)
-   [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers):
    -   Avoid creating observable `String` wrapper objects, July 2023 TC39 meeting update, [proposal-iterator-helpers/281](https://github.com/tc39/proposal-iterator-helpers/pull/281)
    -   `Iterator` is not constructible from the active function object (works as an abstract class)
-   Async explicit resource management:
    -   Moved back into [the initial proposal](https://github.com/tc39/proposal-explicit-resource-management) -> moved to stage 3, [proposal-explicit-resource-management/154](https://github.com/tc39/proposal-explicit-resource-management/pull/154)
    -   Added `/actual/` namespace entries, unconditional forced replacement changed to feature detection
    -   Ignore return value of `[@@&#8203;dispose]()` method when hint is `async-dispose`, [proposal-explicit-resource-management/180](https://github.com/tc39/proposal-explicit-resource-management/pull/180)
    -   Added ticks for empty resources, [proposal-explicit-resource-management/163](https://github.com/tc39/proposal-explicit-resource-management/pull/163)
-   Added some methods from [`Float16Array` stage 3 proposal](https://github.com/tc39/proposal-float16array):
    -   There are some reason why I don't want to add `Float16Array` right now, however, make sense to add some methods from this proposal.
    -   Methods:
        -   `Math.f16round`
        -   `DataView.prototype.getFloat16`
        -   `DataView.prototype.setFloat16`
-   Added [`DataView` get / set `Uint8Clamped` methods stage 1 proposal](https://github.com/tc39/proposal-dataview-get-set-uint8clamped):
    -   Methods:
        -   `DataView.prototype.getUint8Clamped`
        -   `DataView.prototype.setUint8Clamped`
-   Used strict mode in some missed cases, [#&#8203;1269](https://github.com/zloirock/core-js/issues/1269)
-   Fixed [a Chromium 117 bug](https://bugs.chromium.org/p/v8/issues/detail?id=14222) in `value` argument of `URLSearchParams.prototype.{ has, delete }`
-   Fixed early WebKit ~ Safari 17.0 beta `Set` methods implementation by the actual spec
-   Fixed incorrect `Symbol.{ dispose, asyncDispose }` descriptors from [NodeJS 20.4](https://github.com/nodejs/node/issues/48699) / transpilers helpers / userland code
-   Fixed forced polyfilling of some iterator helpers that should return wrapped iterator in the pure version
-   Fixed and exposed [`AsyncIteratorPrototype` `core-js/configurator` option](https://github.com/zloirock/core-js#asynciterator-helpers), [#&#8203;1268](https://github.com/zloirock/core-js/issues/1268)
-   Compat data improvements:
    -   Sync [`Iterator` helpers proposal](https://github.com/tc39/proposal-iterator-helpers) features marked as [supported](https://chromestatus.com/feature/5102502917177344) from V8 ~ Chrome 117
    -   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping) features marked as [supported](https://chromestatus.com/feature/5714791975878656) from V8 ~ Chrome 117
    -   Mark `Symbol.{ dispose, asyncDispose }` as supported from NodeJS 20.5.0 (as mentioned above, NodeJS 20.4.0 add it, but [with incorrect descriptors](https://github.com/nodejs/node/issues/48699))
    -   Added Electron 27 compat data mapping

### [`v3.31.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3311---20230706)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.31.0...v3.31.1)

-   Fixed a `structuredClone` bug with cloning views of transferred buffers, [#&#8203;1265](https://github.com/zloirock/core-js/issues/1265)
-   Fixed the order of arguments validation in `DataView` methods
-   Allowed cloning of [`Float16Array`](https://github.com/tc39/proposal-float16array) in `structuredClone`
-   Compat data improvements:
    -   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) marked as [supported from Safari 17.0](https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes#JavaScript)
    -   New `URL` features: [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse), [`URLSearchParams.prototype.size`](https://url.spec.whatwg.org/#dom-urlsearchparams-size) and [`value` argument of `URLSearchParams.prototype.{ has, delete }`](https://url.spec.whatwg.org/#dom-urlsearchparams-delete) marked as [supported from Safari 17.0](https://developer.apple.com/documentation/safari-release-notes/safari-17-release-notes#Web-API)
    -   `value` argument of `URLSearchParams.prototype.{ has, delete }` marked as supported from [Deno 1.35](https://github.com/denoland/deno/pull/19654)
    -   `AggregateError` and well-formed `JSON.stringify` marked as [supported React Native 0.72 Hermes](https://reactnative.dev/blog/2023/06/21/0.72-metro-package-exports-symlinks#more-ecmascript-support-in-hermes)
    -   Added Deno 1.35 compat data mapping
    -   Added Quest Browser 28 compat data mapping
    -   Added missing NodeJS 12.16-12.22 compat data mapping
    -   Updated Opera Android 76 compat data mapping

### [`v3.31.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3310---20230612)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.2...v3.31.0)

-   [Well-formed unicode strings proposal](https://github.com/tc39/proposal-is-usv-string):
    -   Methods:
        -   `String.prototype.isWellFormed` method
        -   `String.prototype.toWellFormed` method
    -   Moved to stable ES, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-15.md#well-formed-unicode-strings-for-stage-4)
    -   Added `es.` namespace modules, `/es/` and `/stable/` namespaces entries
-   [`Array` grouping proposal](https://github.com/tc39/proposal-array-grouping), [May 2023 TC39 meeting updates](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#arrayprototypegroup-rename-for-web-compatibility):
    -   Because of the [web compat issue](https://github.com/tc39/proposal-array-grouping/issues/44), [moved from prototype to static methods](https://github.com/tc39/proposal-array-grouping/pull/47). Added:
        -   `Object.groupBy` method
        -   `Map.groupBy` method (with the actual semantic - with a minor difference it was present [in the collections methods stage 1 proposal](https://github.com/tc39/proposal-collection-methods))
    -   Demoted to stage 2
-   [Decorator Metadata proposal](https://github.com/tc39/proposal-decorator-metadata), [May 2023 TC39 meeting updates](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#decorator-metadata-for-stage-3):
    -   Moved to stage 3
    -   Added `Function.prototype[Symbol.metadata]` (`=== null`)
    -   Added `/actual/` entries
-   [Iterator Helpers stage 3 proposal](https://github.com/tc39/proposal-iterator-helpers):
    -   Changed `Symbol.iterator` fallback from callable check to `undefined` / `null` check, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#iterator-helpers-should-symboliterator-fallback-be-a-callable-check-or-an-undefinednull-check), [proposal-iterator-helpers/272](https://github.com/tc39/proposal-iterator-helpers/pull/272)
    -   Removed `IsCallable` check on `NextMethod`, deferring errors to `Call` site, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-16.md#iterator-helpers-should-malformed-iterators-fail-early-or-fail-only-when-iterated), [proposal-iterator-helpers/274](https://github.com/tc39/proposal-iterator-helpers/pull/274)
-   Added [`Promise.withResolvers` stage 2 proposal](https://github.com/tc39/proposal-promise-with-resolvers):
    -   `Promise.withResolvers` method
-   [`Symbol` predicates stage 2 proposal](https://github.com/tc39/proposal-symbol-predicates):
    -   The methods renamed to end with `Symbol`, [May 2023 TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2023-05/may-15.md#symbol-predicates):
        -   `Symbol.isRegistered` -> `Symbol.isRegisteredSymbol` method
        -   `Symbol.isWellKnown` -> `Symbol.isWellKnownSymbol` method
-   Added `value` argument of `URLSearchParams.prototype.{ has, delete }`, [url/735](https://github.com/whatwg/url/pull/735)
-   Fixed some cases of increasing buffer size in `ArrayBuffer.prototype.{ transfer, transferToFixedLength }` polyfills
-   Fixed awaiting async `AsyncDisposableStack.prototype.adopt` callback, [#&#8203;1258](https://github.com/zloirock/core-js/issues/1258)
-   Fixed `URLSearchParams#size` in ES3 engines (IE8-)
-   Added a workaround in `Object.{ entries, values }` for some IE versions bug with invisible integer keys on `null`-prototype objects
-   Added TypeScript definitions to `core-js-compat`, [#&#8203;1235](https://github.com/zloirock/core-js/issues/1235), thanks [**@&#8203;susnux**](https://github.com/susnux)
-   Compat data improvements:
    -   [`Set.prototype.difference`](https://github.com/tc39/proposal-set-methods) that was missed in Bun because of [a bug](https://github.com/oven-sh/bun/issues/2309) added in 0.6.0
    -   `Array.prototype.{ group, groupToMap }` marked as no longer supported in WebKit runtimes because of the mentioned above web compat issue. For example, it's disabled from Bun 0.6.2
    -   Methods from the [change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) marked as supported from FF115
    -   [`Array.fromAsync`](https://github.com/tc39/proposal-array-from-async) marked as supported from FF115
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as supported from FF115
    -   `value` argument of `URLSearchParams.prototype.{ has, delete }` marked as supported from [NodeJS 20.2.0](https://github.com/nodejs/node/pull/47885) and FF115
    -   Added Deno 1.34 compat data mapping
    -   Added Electron 26 compat data mapping
    -   Added Samsung Internet 22 compat data mapping
    -   Added Opera Android 75 and 76 compat data mapping
    -   Added Quest Browser 27 compat data mapping

### [`v3.30.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3302---20230507)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.1...v3.30.2)

-   Added a fix for a NodeJS 20.0.0 [bug](https://github.com/nodejs/node/issues/47612) with cloning `File` via `structuredClone`
-   Added protection from Terser unsafe `String` optimization, [#&#8203;1242](https://github.com/zloirock/core-js/issues/1242)
-   Added a workaround for getting proper global object in Figma plugins, [#&#8203;1231](https://github.com/zloirock/core-js/issues/1231)
-   Compat data improvements:
    -   Added NodeJS 20.0 compat data mapping
    -   Added Deno 1.33 compat data mapping
    -   [`URL.canParse`](https://url.spec.whatwg.org/#dom-url-canparse) marked as supported (fixed) from [NodeJS 20.1.0](https://github.com/nodejs/node/pull/47513) and [Deno 1.33.2](https://github.com/denoland/deno/pull/18896)

### [`v3.30.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3301---20230414)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.30.0...v3.30.1)

-   Added a fix for a NodeJS 19.9.0 `URL.canParse` [bug](https://github.com/nodejs/node/issues/47505)
-   Compat data improvements:
    -   [`JSON.parse` source text access proposal](https://github.com/tc39/proposal-json-parse-with-source) features marked as [supported](https://chromestatus.com/feature/5121582673428480) from V8 ~ Chrome 114
    -   [`ArrayBuffer.prototype.transfer` and friends proposal](https://github.com/tc39/proposal-arraybuffer-transfer) features marked as [supported](https://chromestatus.com/feature/5073244152922112) from V8 ~ Chrome 114
    -   [`URLSearchParams.prototype.size`](https://github.com/whatwg/url/pull/734) marked as supported from V8 ~ Chrome 113

### [`v3.30.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3300---20230404)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.29.1...v3.30.0)

-   Added [`URL.canParse` method](https://url.spec.whatwg.org/#dom-url-canparse), [url/763](https://github.com/whatwg/url/pull/763)
-   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods):
    -   Removed sort from `Set.prototype.intersection`, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478610425), [proposal-set-methods/94](https://github.com/tc39/proposal-set-methods/pull/94)
-   Iterator Helpers proposals ([sync](https://github.com/tc39/proposal-iterator-helpers), [async](https://github.com/tc39/proposal-async-iterator-helpers)):
    -   Validate arguments before opening iterator, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478412430), [proposal-iterator-helpers/265](https://github.com/tc39/proposal-iterator-helpers/pull/265)
-   Explicit Resource Management proposals ([sync](https://github.com/tc39/proposal-explicit-resource-management), [async](https://github.com/tc39/proposal-async-explicit-resource-management)):
    -   `(Async)DisposableStack.prototype.move` marks the original stack as disposed, [#&#8203;1226](https://github.com/zloirock/core-js/issues/1226)
    -   Some simplifications like [proposal-explicit-resource-management/150](https://github.com/tc39/proposal-explicit-resource-management/pull/150)
-   [`Iterator.range` proposal](https://github.com/tc39/proposal-Number.range):
    -   Moved to Stage 2, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1480266760)
-   [Decorator Metadata proposal](https://github.com/tc39/proposal-decorator-metadata):
    -   Returned to usage `Symbol.metadata`, [March 2023 TC39 meeting](https://github.com/babel/proposals/issues/87#issuecomment-1478790137), [proposal-decorator-metadata/12](https://github.com/tc39/proposal-decorator-metadata/pull/12)
-   Compat data improvements:
    -   [`URLSearchParams.prototype.size`](https://github.com/whatwg/url/pull/734) marked as supported from FF112, NodeJS 19.8 and Deno 1.32
    -   Added Safari 16.4 compat data
    -   Added Deno 1.32 compat data mapping
    -   Added Electron 25 and updated 24 compat data mapping
    -   Added Samsung Internet 21 compat data mapping
    -   Added Quest Browser 26 compat data mapping
    -   Updated Opera Android 74 compat data

### [`v3.29.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3291---20230313)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.29.0...v3.29.1)

-   Fixed dependencies of some entries
-   Fixed `ToString` conversion / built-ins nature of some accessors
-   [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as supported from V8 ~ Chrome 111
-   Added Opera Android 74 compat data mapping

### [`v3.29.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3290---20230227)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.28.0...v3.29.0)

-   Added `URLSearchParams.prototype.size` getter, [url/734](https://github.com/whatwg/url/pull/734)
-   Allowed cloning resizable `ArrayBuffer`s in the `structuredClone` polyfill
-   Fixed wrong export in `/(stable|actual|full)/instance/unshift` entries, [#&#8203;1207](https://github.com/zloirock/core-js/issues/1207)
-   Compat data improvements:
    -   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) marked as supported from Bun 0.5.7
    -   `String.prototype.toWellFormed` marked as fixed from Bun 0.5.7
    -   Added Deno 1.31 compat data mapping

### [`v3.28.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3280---20230214)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.2...v3.28.0)

##### [3.28.0 - 2023.02.14](https://github.com/zloirock/core-js/releases/tag/v3.28.0)

### [`v3.27.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3272---20230119)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.1...v3.27.2)

-   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods) updates:
    -   Closing of iterators of `Set`-like objects on early exit, [proposal-set-methods/85](https://github.com/tc39/proposal-set-methods/pull/85)
    -   Some other minor internal changes
-   Added one more workaround of a `webpack` dev server bug on IE global methods, [#&#8203;1161](https://github.com/zloirock/core-js/issues/1161)
-   Fixed possible `String.{ raw, cooked }` error with empty template array
-   Used non-standard V8 `Error.captureStackTrace` instead of stack parsing in new error classes / wrappers where it's possible
-   Added detection correctness of iteration to `Promise.{ allSettled, any }` feature detection, Hermes issue
-   Compat data improvements:
    -   [Change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) marked as supported from V8 ~ Chrome 110
    -   Added Samsung Internet 20 compat data mapping
    -   Added Quest Browser 25 compat data mapping
    -   Added React Native 0.71 Hermes compat data
    -   Added Electron 23 and 24 compat data mapping
    -   `self` marked as fixed in Deno 1.29.3, [deno/17362](https://github.com/denoland/deno/pull/17362)
-   Minor tweaks of minification settings for `core-js-bundle`
-   Refactoring, some minor fixes, improvements, optimizations

### [`v3.27.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3271---20221230)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.27.0...v3.27.1)

-   Fixed a Chakra-based MS Edge (18-) bug that unfreeze (O_o) frozen arrays used as `WeakMap` keys
-   Fixing of the previous bug also fixes some cases of `String.dedent` in MS Edge
-   Fixed dependencies of some entries

### [`v3.27.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3270---20221226)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.26.1...v3.27.0)

-   [Iterator Helpers](https://github.com/tc39/proposal-iterator-helpers) proposal:
    -   Built-ins:
        -   `Iterator`
            -   `Iterator.from`
            -   `Iterator.prototype.drop`
            -   `Iterator.prototype.every`
            -   `Iterator.prototype.filter`
            -   `Iterator.prototype.find`
            -   `Iterator.prototype.flatMap`
            -   `Iterator.prototype.forEach`
            -   `Iterator.prototype.map`
            -   `Iterator.prototype.reduce`
            -   `Iterator.prototype.some`
            -   `Iterator.prototype.take`
            -   `Iterator.prototype.toArray`
            -   `Iterator.prototype.toAsync`
            -   `Iterator.prototype[@&#8203;@&#8203;toStringTag]`
        -   `AsyncIterator`
            -   `AsyncIterator.from`
            -   `AsyncIterator.prototype.drop`
            -   `AsyncIterator.prototype.every`
            -   `AsyncIterator.prototype.filter`
            -   `AsyncIterator.prototype.find`
            -   `AsyncIterator.prototype.flatMap`
            -   `AsyncIterator.prototype.forEach`
            -   `AsyncIterator.prototype.map`
            -   `AsyncIterator.prototype.reduce`
            -   `AsyncIterator.prototype.some`
            -   `AsyncIterator.prototype.take`
            -   `AsyncIterator.prototype.toArray`
            -   `AsyncIterator.prototype[@&#8203;@&#8203;toStringTag]`
    -   Moved to Stage 3, [November 2022 TC39 meeting](https://github.com/babel/proposals/issues/85#issuecomment-1333474304)
    -   Added `/actual/` entries, unconditional forced replacement disabled for features that survived to Stage 3
    -   `.from` accept strings, `.flatMap` throws on strings returned from the callback, [proposal-iterator-helpers/244](https://github.com/tc39/proposal-iterator-helpers/pull/244), [proposal-iterator-helpers/250](https://github.com/tc39/proposal-iterator-helpers/pull/250)
    -   `.from` and `.flatMap` throws on non-object *iterators*, [proposal-iterator-helpers/253](https://github.com/tc39/proposal-iterator-helpers/pull/253)
-   [`Set` methods proposal](https://github.com/tc39/proposal-set-methods):
    -   Built-ins:
        -   `Set.prototype.intersection`
        -   `Set.prototype.union`
        -   `Set.prototype.difference`
        -   `Set.prototype.symmetricDifference`
        -   `Set.prototype.isSubsetOf`
        -   `Set.prototype.isSupersetOf`
        -   `Set.prototype.isDisjointFrom`
    -   Moved to Stage 3, [November 2022 TC39 meeting](https://github.com/babel/proposals/issues/85#issuecomment-1332175557)
    -   Reimplemented with [new semantics](https://tc39.es/proposal-set-methods/):
        -   Optimized performance (iteration over lowest set)
        -   Accepted only `Set`-like objects as an argument, not all iterables
        -   Accepted only `Set`s as `this`, no `@@&#8203;species` support, and other minor changes
    -   Added `/actual/` entries, unconditional forced replacement changed to feature detection
    -   For avoiding breaking changes:
        -   New versions of methods are implemented as new modules and available in new entries or entries where old versions of methods were not available before (like `/actual/` namespace)
        -   In entries where they were available before (like `/full/` namespace), those methods are available with fallbacks to old semantics (in addition to `Set`-like, they accept iterable objects). This behavior will be removed from the next major release
-   [Well-Formed Unicode Strings](https://github.com/tc39/proposal-is-usv-string) proposal:
    -   Methods:
        -   `String.prototype.isWellFormed`
        -   `String.prototype.toWellFormed`
    -   Moved to Stage 3, [November 2022 TC39 meeting](https://github.com/babel/proposals/issues/85#issuecomment-1332180862)
    -   Added `/actual/` entries, disabled unconditional forced replacement
-   [Explicit resource management](https://github.com/tc39/proposal-explicit-resource-management) Stage 3 and [Async explicit resource management](https://github.com/tc39/proposal-async-explicit-resource-management) Stage 2 proposals:
    -   Renamed from "`using` statement" and [split into 2 (sync and async) proposals](https://github.com/tc39/proposal-explicit-resource-management/pull/131)
    -   In addition to already present well-known symbols, added new built-ins:
        -   `Symbol.dispose`
        -   `Symbol.asyncDispose`
        -   `SuppressedError`
        -   `DisposableStack`
            -   `DisposableStack.prototype.dispose`
            -   `DisposableStack.prototype.use`
            -   `DisposableStack.prototype.adopt`
            -   `DisposableStack.prototype.defer`
            -   `DisposableStack.prototype.move`
            -   `DisposableStack.prototype[@&#8203;@&#8203;dispose]`
        -   `AsyncDisposableStack`
            -   `AsyncDisposableStack.prototype.disposeAsync`
            -   `AsyncDisposableStack.prototype.use`
            -   `AsyncDisposableStack.prototype.adopt`
            -   `AsyncDisposableStack.prototype.defer`
            -   `AsyncDisposableStack.prototype.move`
            -   `AsyncDisposableStack.prototype[@&#8203;@&#8203;asyncDispose]`
        -   `Iterator.prototype[@&#8203;@&#8203;dispose]`
        -   `AsyncIterator.prototype[@&#8203;@&#8203;asyncDispose]`
    -   Sync version of this proposal moved to Stage 3, [November 2022 TC39 meeting](https://github.com/babel/proposals/issues/85#issuecomment-1333747094)
    -   Added `/actual/` namespace entries for Stage 3 proposal
-   Added [`String.dedent` stage 2 proposal](https://github.com/tc39/proposal-string-dedent)
    -   Method `String.dedent`
    -   Throws an error on non-frozen raw templates for avoiding possible breaking changes in the future, [proposal-string-dedent/75](https://github.com/tc39/proposal-string-dedent/issues/75)
-   [Compat data targets](/packages/core-js-compat#targets-option) improvements:
    -   [React Native from 0.70 shipped with Hermes as the default engine.](https://reactnative.dev/blog/2022/07/08/hermes-as-the-default) However, bundled Hermes versions differ from standalone Hermes releases. So added **`react-native`** target for React Native with bundled Hermes.
    -   [According to the documentation](https://developer.oculus.com/documentation/web/browser-intro/), Oculus Browser was renamed to Meta Quest Browser, so `oculus` target was renamed to **`quest`**.
    -   `opera_mobile` target name is confusing since it contains data for the Chromium-based Android version, but iOS Opera is Safari-based. So `opera_mobile` target was renamed to **`opera-android`**.
    -   `android` target name is also confusing for someone - that means Android WebView, some think thinks that it's Chrome for Android, but they have some differences. For avoiding confusion, added **`chrome-android`** target.
    -   For consistency with two previous cases, added **`firefox-android`** target.
    -   For avoiding breaking changes, the `oculus` and `opera_mobile` fields are available in the compat data till the next major release.
-   Compat data improvements:
    -   [`Array.fromAsync`](https://github.com/tc39/proposal-array-from-async) marked as supported from Bun 0.3.0
    -   [`String.prototype.{ isWellFormed, toWellFormed }`](https://github.com/tc39/proposal-is-usv-string) marked as supported from Bun 0.4.0
    -   [Change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) marked as supported from Deno 1.27, [deno/16429](https://github.com/denoland/deno/pull/16429)
    -   Added Deno 1.28 / 1.29 compat data mapping
    -   Added NodeJS 19.2 compat data mapping
    -   Added Samsung Internet 19.0 compat data mapping
    -   Added Quest Browser 24.0 compat data mapping
    -   Fixed the first version in the Chromium-based Edge compat data mapping
-   `{ Map, WeakMap }.prototype.emplace` became stricter [by the spec draft](https://tc39.es/proposal-upsert/)
-   Smoothed behavior of some conflicting proposals
-   Removed some generic behavior (like `@@&#8203;species` pattern) of some `.prototype` methods from the [new collections methods proposal](https://github.com/tc39/proposal-collection-methods) and the [`Array` deduplication proposal](https://github.com/tc39/proposal-array-unique) that *most likely* will not be implemented since it contradicts the current TC39 policy
-   Added pure version of the `Number` constructor, [#&#8203;1154](https://github.com/zloirock/core-js/issues/1154), [#&#8203;1155](https://github.com/zloirock/core-js/issues/1155), thanks [@&#8203;trosos](https://github.com/trosos)
-   Added `set(Timeout|Interval|Immediate)` extra arguments fix for Bun 0.3.0- (similarly to IE9-), [bun/1633](https://github.com/oven-sh/bun/issues/1633)
-   Fixed handling of sparse arrays in `structuredClone`, [#&#8203;1156](https://github.com/zloirock/core-js/issues/1156)
-   Fixed a theoretically possible future conflict of polyfills definitions in the pure version
-   Some refactoring and optimization

### [`v3.26.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3261---20221114)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.26.0...v3.26.1)

-   Disabled forced replacing of `Array.fromAsync` since it's on Stage 3
-   Avoiding a check of the target in the internal `function-uncurry-this` helper where it's not required - minor optimization and preventing problems in some broken environments, a workaround of [#&#8203;1141](https://github.com/zloirock/core-js/issues/1141)
-   V8 will not ship `Array.prototype.{ group, groupToMap }` in V8 ~ Chromium 108, [proposal-array-grouping/44](https://github.com/tc39/proposal-array-grouping/issues/44#issuecomment-1306311107)

### [`v3.26.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3260---20221024)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.5...v3.26.0)

-   [`Array.fromAsync` proposal](https://github.com/tc39/proposal-array-from-async):
    -   Moved to Stage 3, [September TC39 meeting](https://github.com/tc39/notes/blob/main/meetings/2022-09/sep-14.md#arrayfromasync-for-stage-3)
    -   Avoid observable side effects of `%Array.prototype.values%` usage in array-like branch, [proposal-array-from-async/30](https://github.com/tc39/proposal-array-from-async/pull/30)
-   Added [well-formed unicode strings stage 2 proposal](https://github.com/tc39/proposal-is-usv-string):
    -   `String.prototype.isWellFormed`
    -   `String.prototype.toWellFormed`
-   Recent updates of the [iterator helpers proposal](https://github.com/tc39/proposal-iterator-helpers):
    -   Added a counter parameter to helpers, [proposal-iterator-helpers/211](https://github.com/tc39/proposal-iterator-helpers/pull/211)
    -   Don't await non-objects returned from functions passed to `AsyncIterator` helpers, [proposal-iterator-helpers/239](https://github.com/tc39/proposal-iterator-helpers/pull/239)
    -   `{ Iterator, AsyncIterator }.prototype.flatMap` supports returning both - iterables and iterators, [proposal-iterator-helpers/233](https://github.com/tc39/proposal-iterator-helpers/pull/233)
    -   Early exit on broken `.next` in missed cases of `{ Iterator, AsyncIterator }.from`, [proposal-iterator-helpers/232](https://github.com/tc39/proposal-iterator-helpers/pull/232)
-   Added `self` polyfill as a part of [The Minimum Common Web Platform API](https://common-min-api.proposal.wintercg.org/), [specification](https://html.spec.whatwg.org/multipage/window-object.html#dom-self), [#&#8203;1118](https://github.com/zloirock/core-js/issues/1118)
-   Added `inverse` option to `core-js-compat`, [#&#8203;1119](https://github.com/zloirock/core-js/issues/1119)
-   Added `format` option to `core-js-builder`, [#&#8203;1120](https://github.com/zloirock/core-js/issues/1120)
-   Added NodeJS 19.0 compat data
-   Added Deno 1.26 and 1.27 compat data
-   Added Opera Android 72 compat data mapping
-   Updated Electron 22 compat data mapping

### [`v3.25.5`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3255---20221004)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.4...v3.25.5)

-   Fixed regression with an error on reuse of some built-in methods from another realm, [#&#8203;1133](https://github.com/zloirock/core-js/issues/1133)

### [`v3.25.4`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3254---20221003)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.3...v3.25.4)

-   Added a workaround of a Nashorn bug with `Function.prototype.{ call, apply, bind }` on string methods, [#&#8203;1128](https://github.com/zloirock/core-js/issues/1128)
-   Updated lists of `[Serializable]` and `[Transferable]` objects in the `structuredClone` polyfill. Mainly, for better error messages if polyfilling of cloning such types is impossible
-   `Array.prototype.{ group, groupToMap }` marked as [supported from V8 ~ Chromium 108](https://chromestatus.com/feature/5714791975878656)
-   Added Electron 22 compat data mapping

### [`v3.25.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3253---20220926)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.2...v3.25.3)

-   Forced polyfilling of `Array.prototype.groupToMap` in the pure version for returning wrapped `Map` instances
-   Fixed existence of `Array.prototype.{ findLast, findLastIndex }` in `/stage/4` entry
-   Added Opera Android 71 compat data mapping
-   Some stylistic changes

### [`v3.25.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3252---20220919)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.1...v3.25.2)

-   Considering `document.all` as a callable in some missed cases
-   Added Safari 16.0 compat data
-   Added iOS Safari 16.0 compat data mapping
-   Fixed some ancient iOS Safari versions compat data mapping

### [`v3.25.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3251---20220908)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.25.0...v3.25.1)

-   Added some fixes and workarounds of FF30- typed arrays bug that does not properly convert objects to numbers
-   Added `sideEffects` field to `core-js-pure` `package.json` for better tree shaking, [#&#8203;1117](https://github.com/zloirock/core-js/issues/1117)
-   Dropped `semver` dependency from `core-js-compat`
    -   `semver` package (ironically) added [a breaking change and dropped NodeJS 8 support in the minor `7.1` version](https://github.com/npm/node-semver/commit/d61f828e64260a0a097f26210f5500), after that `semver` in `core-js-compat` was pinned to `7.0` since for avoiding breaking changes it should support NodeJS 8. However, since `core-js-compat` is usually used with other packages that use `semver` dependency, it causes multiple duplication of `semver` in dependencies. So I decided to remove `semver` dependency and replace it with a couple of simple helpers.
-   Added Bun 0.1.6-0.1.11 compat data
-   Added Deno 1.25 compat data mapping
-   Updated Electron 21 compat data mapping
-   Some stylistic changes, minor fixes, and improvements

### [`v3.25.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3250---20220825)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.24.1...v3.25.0)

-   Added [`Object.prototype.__proto__`](https://tc39.es/ecma262/#sec-object.prototype.\__proto\_\_) polyfill
    -   It's optional, legacy, and in some cases (mainly because of developers' mistakes) can cause problems, but [some libraries depend on it](https://github.com/denoland/deno/issues/13321), and most code can't work without the proper libraries' ecosystem
    -   Only for modern engines where this feature is missed (like Deno), it's not installed in IE10- since here we have no proper way setting of the prototype
    -   Without fixes of early implementations where it's not an accessor since those fixes are impossible
    -   Only for the global version
-   Considering `document.all` as an object in some missed cases, see [ECMAScript Annex B 3.6](https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot)
-   Avoiding unnecessary promise creation and validation result in `%WrapForValid(Async)IteratorPrototype%.return`, [proposal-iterator-helpers/215](https://github.com/tc39/proposal-iterator-helpers/pull/215)
-   Fixed omitting the result of proxing `.return` in `%IteratorHelperPrototype%.return`, [#&#8203;1116](https://github.com/zloirock/core-js/issues/1116)
-   Fixed the order creation of properties of iteration result object of some iterators (`value` should be created before `done`)
-   Fixed some cases of Safari < 13 bug - silent on non-writable array `.length` setting
-   Fixed `ArrayBuffer.length` in V8 ~ Chrome 27-
-   Relaxed condition of re-usage native `WeakMap` for internal states with multiple `core-js` copies
-   Availability cloning of `FileList` in the `structuredClone` polyfill extended to some more old engines versions
-   Some stylistic changes and minor fixes
-   Throwing a `TypeError` in `core-js-compat` / `core-js-builder` in case of passing invalid module names / filters for avoiding unexpected result, related to [#&#8203;1115](https://github.com/zloirock/core-js/issues/1115)
-   Added missed NodeJS 13.2 to `esmodules` `core-js-compat` / `core-js-builder` target
-   Added Electron 21 compat data mapping
-   Added Oculus Browser 23.0 compat data mapping

### [`v3.24.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3241---20220730)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.24.0...v3.24.1)

-   NodeJS is ignored in `IS_BROWSER` detection to avoid a false positive with `jsdom`, [#&#8203;1110](https://github.com/zloirock/core-js/issues/1110)
-   Fixed detection of `@@&#8203;species` support in `Promise` in some old engines
-   `{ Array, %TypedArray% }.prototype.{ findLast, findLastIndex }` marked as shipped [in FF104](https://bugzilla.mozilla.org/show_bug.cgi?id=1775026)
-   Added iOS Safari 15.6 compat data mapping
-   Fixed Opera 15 compat data mapping

### [`v3.24.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3240---20220725)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.5...v3.24.0)

-   Recent updates of the [iterator helpers proposal](https://github.com/tc39/proposal-iterator-helpers), [#&#8203;1101](https://github.com/zloirock/core-js/issues/1101):
    -   `.asIndexedPairs` renamed to `.indexed`, [proposal-iterator-helpers/183](https://github.com/tc39/proposal-iterator-helpers/pull/183):
        -   `Iterator.prototype.asIndexedPairs` -> `Iterator.prototype.indexed`
        -   `AsyncIterator.prototype.asIndexedPairs` -> `AsyncIterator.prototype.indexed`
    -   Avoid exposing spec fiction `%AsyncFromSyncIteratorPrototype%` in `AsyncIterator.from` and `Iterator.prototype.toAsync`, [proposal-iterator-helpers/182](https://github.com/tc39/proposal-iterator-helpers/pull/182), [proposal-iterator-helpers/202](https://github.com/tc39/proposal-iterator-helpers/pull/202)
    -   Avoid unnecessary promise creation in `%WrapForValidAsyncIteratorPrototype%.next`, [proposal-iterator-helpers/197](https://github.com/tc39/proposal-iterator-helpers/pull/197)
    -   Do not validate value in `%WrapForValid(Async)IteratorPrototype%.next`, [proposal-iterator-helpers/197](https://github.com/tc39/proposal-iterator-helpers/pull/197) and [proposal-iterator-helpers/205](https://github.com/tc39/proposal-iterator-helpers/pull/205)
    -   Do not forward the parameter of `.next` / `.return` to an underlying iterator by the extended iterator protocol, a part of [proposal-iterator-helpers/194](https://github.com/tc39/proposal-iterator-helpers/pull/194)
    -   `.throw` methods removed from all wrappers / helpers prototypes, a part of [proposal-iterator-helpers/194](https://github.com/tc39/proposal-iterator-helpers/pull/194)
    -   Close inner iterators of `{ Iterator, AsyncIterator }.prototype.flatMap` proxy iterators on `.return`, [proposal-iterator-helpers/195](https://github.com/tc39/proposal-iterator-helpers/pull/195)
    -   Throw `RangeError` on `NaN` in `{ Iterator, AsyncIterator }.prototype.{ drop, take }`, [proposal-iterator-helpers/181](https://github.com/tc39/proposal-iterator-helpers/pull/181)
    -   Many other updates and fixes of this proposal
-   `%TypedArray%.prototype.toSpliced` method removed from the [change array by copy proposal](https://github.com/tc39/proposal-change-array-by-copy) and marked as obsolete in `core-js`, [proposal-change-array-by-copy/88](https://github.com/tc39/proposal-change-array-by-copy/issues/88)
-   Polyfill `Promise` with `unhandledrejection` event support (browser style) in Deno < [1.24](https://github.com/denoland/deno/releases/tag/v1.24.0)
-   Available new targets in `core-js-compat` / `core-js-builder` and added compat data for them:
    -   Bun (`bun`), compat data for 0.1.1-0.1.5, [#&#8203;1103](https://github.com/zloirock/core-js/issues/1103)
    -   Hermes (`hermes`), compat data for 0.1-0.11, [#&#8203;1099](https://github.com/zloirock/core-js/issues/1099)
    -   Oculus Browser (`oculus`), compat data mapping for 3.0-22.0, [#&#8203;1098](https://github.com/zloirock/core-js/issues/1098)
-   Added Samsung Internet 18.0 compat data mapping

### [`v3.23.5`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3235---20220718)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.4...v3.23.5)

-   Fixed a typo in the `structuredClone` feature detection, [#&#8203;1106](https://github.com/zloirock/core-js/issues/1106)
-   Added Opera Android 70 compat data mapping

### [`v3.23.4`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3234---20220710)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.3...v3.23.4)

-   Added a workaround of the Bun ~ 0.1.1 [bug](https://github.com/Jarred-Sumner/bun/issues/399) that define some globals with incorrect property descriptors and that causes a crash of `core-js`
-   Added a fix of the FF103+ `structuredClone` bugs ([1774866](https://bugzilla.mozilla.org/show_bug.cgi?id=1774866) (fixed in FF104) and [1777321](https://bugzilla.mozilla.org/show_bug.cgi?id=1777321) (still not fixed)) that now can clone errors, but `.stack` of the clone is an empty string
-   Fixed `{ Map, WeakMap }.prototype.emplace` logic, [#&#8203;1102](https://github.com/zloirock/core-js/issues/1102)
-   Fixed order of errors throwing on iterator helpers

### [`v3.23.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3233---20220626)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.2...v3.23.3)

-   Changed the order of operations in `%TypedArray%.prototype.toSpliced` following [proposal-change-array-by-copy/89](https://github.com/tc39/proposal-change-array-by-copy/issues/89)
-   Fixed regression of some IE8- issues

### [`v3.23.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3232---20220621)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.1...v3.23.2)

-   Avoided creation of extra properties for the handling of `%TypedArray%` constructors in new methods, [#&#8203;1092 (comment)](https://github.com/zloirock/core-js/issues/1092#issuecomment-1158760512)
-   Added Deno 1.23 compat data mapping

### [`v3.23.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3231---20220614)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.23.0...v3.23.1)

-   Fixed possible error on multiple `core-js` copies, [#&#8203;1091](https://github.com/zloirock/core-js/issues/1091)
-   Added `v` flag to `RegExp.prototype.flags` implementation in case if current V8 bugs will not be fixed before this flag implementation

### [`v3.23.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3230---20220614)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.8...v3.23.0)

-   [`Array` find from last](https://github.com/tc39/proposal-array-find-from-last) moved to the stable ES, according to June 2022 TC39 meeting:
    -   `Array.prototype.findLast`
    -   `Array.prototype.findLastIndex`
    -   `%TypedArray%.prototype.findLast`
    -   `%TypedArray%.prototype.findLastIndex`
-   Methods from [the `Array` grouping proposal](https://github.com/tc39/proposal-array-grouping) [renamed](https://github.com/tc39/proposal-array-grouping/pull/39), according to June 2022 TC39 meeting:
    -   `Array.prototype.groupBy` -> `Array.prototype.group`
    -   `Array.prototype.groupByToMap` -> `Array.prototype.groupToMap`
-   Changed the order of operations in `%TypedArray%.prototype.with` following [proposal-change-array-by-copy/86](https://github.com/tc39/proposal-change-array-by-copy/issues/86), according to June 2022 TC39 meeting
-   [Decorator Metadata proposal](https://github.com/tc39/proposal-decorator-metadata) extracted from [Decorators proposal](https://github.com/tc39/proposal-decorators) as a separate stage 2 proposal, according to March 2022 TC39 meeting, `Symbol.metadataKey` replaces `Symbol.metadata`
-   Added `Array.prototype.push` polyfill with some fixes for modern engines
-   Added `Array.prototype.unshift` polyfill with some fixes for modern engines
-   Fixed a bug in the order of getting flags in `RegExp.prototype.flags` in the actual version of V8
-   Fixed property descriptors of some `Math` and `Number` constants
-   Added a workaround of V8 `ArrayBufferDetaching` protector cell invalidation and performance degradation on `structuredClone` feature detection, one more case of [#&#8203;679](https://github.com/zloirock/core-js/issues/679)
-   Added detection of NodeJS [bug](https://github.com/nodejs/node/issues/41038) in `structuredClone` that can not clone `DOMException` (just in case for future versions that will fix other issues)
-   Compat data:
    -   Added NodeJS 18.3 compat data mapping
    -   Added and fixed Deno 1.22 and 1.21 compat data mapping
    -   Added Opera Android 69 compat data mapping
    -   Updated Electron 20.0 compat data mapping

### [`v3.22.8`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3228---20220602)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.7...v3.22.8)

-   Fixed possible multiple call of `ToBigInt` / `ToNumber` conversion of the argument passed to `%TypedArray%.prototype.fill` in V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18
-   Fixed some cases of `DeletePropertyOrThrow` in IE9-
-   Fixed the kind of error (`TypeError` instead of `Error`) on incorrect `exec` result in `RegExp.prototype.test` polyfill
-   Fixed dependencies of `{ actual, full, features }/typed-array/at` entries
-   Added Electron 20.0 compat data mapping
-   Added iOS Safari 15.5 compat data mapping
-   Refactoring

### [`v3.22.7`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3227---20220524)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.6...v3.22.7)

-   Added a workaround for V8 ~ Chrome 53 bug with non-writable prototype of some methods, [#&#8203;1083](https://github.com/zloirock/core-js/issues/1083)

### [`v3.22.6`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3226---20220523)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.5...v3.22.6)

-   Fixed possible double call of `ToNumber` conversion on arguments of `Math.{ fround, trunc }` polyfills
-   `Array.prototype.includes` marked as [fixed](https://bugzilla.mozilla.org/show_bug.cgi?id=1767541) in FF102

### [`v3.22.5`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3225---20220510)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.4...v3.22.5)

-   Ensured that polyfilled constructors `.prototype` is non-writable
-   Ensured that polyfilled methods `.prototype` is not defined
-   Added detection and fix of a V8 ~ Chrome <103 [bug](https://bugs.chromium.org/p/v8/issues/detail?id=12542) of `struturedClone` that returns `null` if cloned object contains multiple references to one error

### [`v3.22.4`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3224---20220503)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.3...v3.22.4)

-   Ensured proper `.length` of polyfilled functions even in compressed code (excepting some ancient engines)
-   Ensured proper `.name` of polyfilled accessors (excepting some ancient engines)
-   Ensured proper source / `ToString` conversion of polyfilled accessors
-   Actualized Rhino compat data
-   Refactoring

### [`v3.22.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3223---20220428)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.2...v3.22.3)

-   Added a fix for FF99+ `Array.prototype.includes` broken on sparse arrays

### [`v3.22.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3222---20220421)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.1...v3.22.2)

-   Fixed `URLSearchParams` in IE8- that was broken in the previous release
-   Fixed `__lookupGetter__` entries

### [`v3.22.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3221---20220420)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.22.0...v3.22.1)

-   Improved some cases of `RegExp` flags handling
-   Prevented experimental warning in NodeJS ~ 18.0 on detection `fetch` API
-   Added NodeJS 18.0 compat data

### [`v3.22.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3220---20220415)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.21.1...v3.22.0)

-   [Change `Array` by copy proposal](https://github.com/tc39/proposal-change-array-by-copy):
    -   Moved to Stage 3, [March TC39 meeting](https://github.com/babel/proposals/issues/81#issuecomment-1083449843)
    -   Disabled forced replacement and added `/actual/` entry points for methods from this proposal
    -   `Array.prototype.toSpliced` throws a `TypeError` instead of `RangeError` if the result length is more than `MAX_SAFE_INTEGER`, [proposal-change-array-by-copy/70](https://github.com/tc39/proposal-change-array-by-copy/pull/70)
-   Added some more `atob` / `btoa` fixes:
    -   NodeJS <17.9 `atob` does not ignore spaces, [node/42530](https://github.com/nodejs/node/issues/42530)
    -   Actual NodeJS `atob` does not validate encoding, [node/42646](https://github.com/nodejs/node/issues/42646)
    -   FF26- implementation does not properly convert argument to string
    -   IE / Edge <16 implementation have wrong arity
-   Added `/full/` namespace as the replacement for `/features/` since it's more descriptive in context of the rest namespaces (`/es/` ⊆ `/stable/` ⊆ `/actual/` ⊆ `/full/`)
-   Avoided propagation of removed parts of proposals to upper stages. For example, `%TypedArray%.prototype.groupBy` was removed from the `Array` grouping proposal a long time ago. We can't completely remove this method since it's a breaking change. But this proposal has been promoted to stage 3 - so the proposal should be promoted without this method, this method should not be available in `/actual/` entries - but it should be available in early-stage entries to avoid breakage.
-   Significant internal refactoring and splitting of modules (but without exposing to public API since it will be a breaking change - it will be exposed in the next major version)
-   Bug fixes:
    -   Fixed work of non-standard V8 `Error` features with wrapped `Error` constructors, [#&#8203;1061](https://github.com/zloirock/core-js/issues/1061)
    -   `null` and `undefined` allowed as the second argument of `structuredClone`, [#&#8203;1056](https://github.com/zloirock/core-js/issues/1056)
-   Tooling:
    -   Stabilized proposals are filtered out from the `core-js-compat` -> `core-js-builder` -> `core-js-bundle` output. That mean that if the output contains, for example, `es.object.has-own`, the legacy reference to it, `esnext.object.has-own`, no longer added.
    -   Aligned modules filters of [`core-js-builder`](https://github.com/zloirock/core-js/tree/master/packages/core-js-builder) and [`core-js-compat`](https://github.com/zloirock/core-js/tree/master/packages/core-js-compat), now it's `modules` and `exclude` options
    -   Added support of entry points, modules, regexes, and arrays of them to those filters
    -   Missed `targets` option of `core-js-compat` means that the `targets` filter just will not be applied, so the result will contain modules required for all possible engines
-   Compat data:
    -   `.stack` property on `DOMException` marked as supported from Deno [1.15](https://github.com/denoland/deno/releases/tag/v1.15.0)
    -   Added Deno 1.21 compat data mapping
    -   Added Electron 19.0 and updated 18.0 compat data mapping
    -   Added Samsung Internet 17.0 compat data mapping
    -   Added Opera Android 68 compat data mapping

### [`v3.21.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3211---20220217)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.21.0...v3.21.1)

-   Added a [bug](https://bugs.webkit.org/show_bug.cgi?id=236541)fix for the WebKit `Array.prototype.{ groupBy, groupByToMap }` implementation
-   `core-js-compat` targets parser transforms engine names to lower case
-   `atob` / `btoa` marked as [fixed](https://github.com/nodejs/node/pull/41478) in NodeJS 17.5
-   Added Electron 18.0 compat data mapping
-   Added Deno 1.20 compat data mapping

### [`v3.21.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3210---20220202)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.20.3...v3.21.0)

-   Added [Base64 utility methods](https://developer.mozilla.org/en-US/docs/Glossary/Base64):
    -   `atob`
    -   `btoa`
-   Added the proper validation of arguments to some methods from web standards
-   Forced replacement of all features from early-stage proposals for avoiding possible web compatibility issues in the future
-   Added Rhino 1.7.14 compat data
-   Added Deno 1.19 compat data mapping
-   Added Opera Android 66 and 67 compat data mapping
-   Added iOS Safari 15.3 and 15.4 compat data mapping

### [`v3.20.3`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3203---20220115)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.20.2...v3.20.3)

-   Detects and replaces broken third-party `Function#bind` polyfills, uses only native `Function#bind` in the internals
-   `structuredClone` should throw an error if no arguments passed
-   Changed the structure of notes in `__core-js_shared__`

### [`v3.20.2`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3202---20220102)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.20.1...v3.20.2)

-   Added a fix of [a V8 ~ Chrome 36- `Object.{ defineProperty, defineProperties }` bug](https://bugs.chromium.org/p/v8/issues/detail?id=3334), [Babel issue](https://github.com/babel/babel/issues/14056)
-   Added fixes of some different `%TypedArray%.prototype.set` bugs, affects modern engines (like Chrome < 95 or Safari < 14.1)

### [`v3.20.1`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3201---20211223)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.20.0...v3.20.1)

-   Fixed the order of calling reactions of already fulfilled / rejected promises in `Promise.prototype.then`, [#&#8203;1026](https://github.com/zloirock/core-js/issues/1026)
-   Fixed possible memory leak in specific promise chains
-   Fixed some missed dependencies of entries
-   Added Deno 1.18 compat data mapping

### [`v3.20.0`](https://github.com/zloirock/core-js/blob/HEAD/CHANGELOG.md#3200---20211216)

[Compare Source](https://github.com/zloirock/core-js/compare/v3.19.3...v3.20.0)

-   Added `structuredClone` method [from the HTML spec](https://html.spec.whatwg.org/multipage/structured-data.html#dom-structuredclone), [see MDN](https://developer.mozilla.org/en-US/docs/Web/API/structuredClone)
    -   Includes all cases of cloning and transferring of required ECMAScript and platform types that can be polyfilled, for the details see [the caveats](https://github.com/zloirock/core-js#caveats-when-using-structuredclone-polyfill)
    -   Uses native structured cloning algorithm implementations where it's possible
    -   Includes the new semantic of errors cloning from [`html/5749`](https://github.com/whatwg/html/pull/5749)
-   Added `DOMException` polyfill, [the Web IDL spec](https://webidl.spec.whatwg.org/#idl-DOMException), [see MDN](https://developer.mozilla.org/en-US/docs/Web/API/DOMException)
    -   Includes `DOMException` and its attributes polyfills with fi…
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
2 participants