(function (root) {
  var exports = undefined,
      module = undefined,
      require = undefined;
  var define = undefined;
  var self = root,
      window = root,
      global = root,
      globalThis = root;
  (function () {
    !function (e, t) {
      "object" == typeof exports && "undefined" != typeof module ? module.exports = t() : "function" == typeof define && define.amd ? define(t) : (e = "undefined" != typeof globalThis ? globalThis : e || self).YMFLV = t();
    }(this, function () {
      function e(e) {
        return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
      }

      var t = {
        exports: {}
      };
      !function (e, t) {
        var i;
        self, i = function () {
          return (() => {
            var e = {
              "./node_modules/es6-promise/dist/es6-promise.js":
              /*!******************************************************!*\
              	  !*** ./node_modules/es6-promise/dist/es6-promise.js ***!
              	  \******************************************************/
              function (e, t, i) {
                /*!
                	 * @overview es6-promise - a tiny implementation of Promises/A+.
                	 * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)
                	 * @license   Licensed under MIT license
                	 *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE
                	 * @version   v4.2.8+1e68dce6
                	 */
                e.exports = function () {
                  function e(e) {
                    var t = typeof e;
                    return null !== e && ("object" === t || "function" === t);
                  }

                  function t(e) {
                    return "function" == typeof e;
                  }

                  var n = Array.isArray ? Array.isArray : function (e) {
                    return "[object Array]" === Object.prototype.toString.call(e);
                  },
                      r = 0,
                      s = void 0,
                      o = void 0,
                      a = function (e, t) {
                    E[r] = e, E[r + 1] = t, 2 === (r += 2) && (o ? o(b) : L());
                  };

                  function u(e) {
                    o = e;
                  }

                  function l(e) {
                    a = e;
                  }

                  var d = "undefined" != typeof window ? window : void 0,
                      h = d || {},
                      c = h.MutationObserver || h.WebKitMutationObserver,
                      f = "undefined" == typeof self && "undefined" != typeof process && "[object process]" === {}.toString.call(process),
                      _ = "undefined" != typeof Uint8ClampedArray && "undefined" != typeof importScripts && "undefined" != typeof MessageChannel;

                  function p() {
                    return function () {
                      return process.nextTick(b);
                    };
                  }

                  function m() {
                    return void 0 !== s ? function () {
                      s(b);
                    } : y();
                  }

                  function g() {
                    var e = 0,
                        t = new c(b),
                        i = document.createTextNode("");
                    return t.observe(i, {
                      characterData: !0
                    }), function () {
                      i.data = e = ++e % 2;
                    };
                  }

                  function v() {
                    var e = new MessageChannel();
                    return e.port1.onmessage = b, function () {
                      return e.port2.postMessage(0);
                    };
                  }

                  function y() {
                    var e = setTimeout;
                    return function () {
                      return e(b, 1);
                    };
                  }

                  var E = new Array(1e3);

                  function b() {
                    for (var e = 0; e < r; e += 2) (0, E[e])(E[e + 1]), E[e] = void 0, E[e + 1] = void 0;

                    r = 0;
                  }

                  function S() {
                    try {
                      var e = Function("return this")().require("vertx");

                      return s = e.runOnLoop || e.runOnContext, m();
                    } catch (e) {
                      return y();
                    }
                  }

                  var L = void 0;

                  function A(e, t) {
                    var i = this,
                        n = new this.constructor(T);
                    void 0 === n[w] && q(n);
                    var r = i._state;

                    if (r) {
                      var s = arguments[r - 1];
                      a(function () {
                        return z(r, n, s, i._result);
                      });
                    } else G(i, n, e, t);

                    return n;
                  }

                  function R(e) {
                    var t = this;
                    if (e && "object" == typeof e && e.constructor === t) return e;
                    var i = new t(T);
                    return j(i, e), i;
                  }

                  L = f ? p() : c ? g() : _ ? v() : void 0 === d ? S() : y();
                  var w = Math.random().toString(36).substring(2);

                  function T() {}

                  var O = void 0,
                      k = 1,
                      I = 2;

                  function C() {
                    return new TypeError("You cannot resolve a promise with itself");
                  }

                  function D() {
                    return new TypeError("A promises callback cannot return that same promise.");
                  }

                  function x(e, t, i, n) {
                    try {
                      e.call(t, i, n);
                    } catch (e) {
                      return e;
                    }
                  }

                  function M(e, t, i) {
                    a(function (e) {
                      var n = !1,
                          r = x(i, t, function (i) {
                        n || (n = !0, t !== i ? j(e, i) : N(e, i));
                      }, function (t) {
                        n || (n = !0, F(e, t));
                      }, "Settle: " + (e._label || " unknown promise"));
                      !n && r && (n = !0, F(e, r));
                    }, e);
                  }

                  function P(e, t) {
                    t._state === k ? N(e, t._result) : t._state === I ? F(e, t._result) : G(t, void 0, function (t) {
                      return j(e, t);
                    }, function (t) {
                      return F(e, t);
                    });
                  }

                  function B(e, i, n) {
                    i.constructor === e.constructor && n === A && i.constructor.resolve === R ? P(e, i) : void 0 === n ? N(e, i) : t(n) ? M(e, i, n) : N(e, i);
                  }

                  function j(t, i) {
                    if (t === i) F(t, C());else if (e(i)) {
                      var n = void 0;

                      try {
                        n = i.then;
                      } catch (e) {
                        return void F(t, e);
                      }

                      B(t, i, n);
                    } else N(t, i);
                  }

                  function U(e) {
                    e._onerror && e._onerror(e._result), V(e);
                  }

                  function N(e, t) {
                    e._state === O && (e._result = t, e._state = k, 0 !== e._subscribers.length && a(V, e));
                  }

                  function F(e, t) {
                    e._state === O && (e._state = I, e._result = t, a(U, e));
                  }

                  function G(e, t, i, n) {
                    var r = e._subscribers,
                        s = r.length;
                    e._onerror = null, r[s] = t, r[s + k] = i, r[s + I] = n, 0 === s && e._state && a(V, e);
                  }

                  function V(e) {
                    var t = e._subscribers,
                        i = e._state;

                    if (0 !== t.length) {
                      for (var n = void 0, r = void 0, s = e._result, o = 0; o < t.length; o += 3) n = t[o], r = t[o + i], n ? z(i, n, r, s) : r(s);

                      e._subscribers.length = 0;
                    }
                  }

                  function z(e, i, n, r) {
                    var s = t(n),
                        o = void 0,
                        a = void 0,
                        u = !0;

                    if (s) {
                      try {
                        o = n(r);
                      } catch (e) {
                        u = !1, a = e;
                      }

                      if (i === o) return void F(i, D());
                    } else o = r;

                    i._state !== O || (s && u ? j(i, o) : !1 === u ? F(i, a) : e === k ? N(i, o) : e === I && F(i, o));
                  }

                  function W(e, t) {
                    try {
                      t(function (t) {
                        j(e, t);
                      }, function (t) {
                        F(e, t);
                      });
                    } catch (t) {
                      F(e, t);
                    }
                  }

                  var K = 0;

                  function H() {
                    return K++;
                  }

                  function q(e) {
                    e[w] = K++, e._state = void 0, e._result = void 0, e._subscribers = [];
                  }

                  function Y() {
                    return new Error("Array Methods must be provided an Array");
                  }

                  var X = function () {
                    function e(e, t) {
                      this._instanceConstructor = e, this.promise = new e(T), this.promise[w] || q(this.promise), n(t) ? (this.length = t.length, this._remaining = t.length, this._result = new Array(this.length), 0 === this.length ? N(this.promise, this._result) : (this.length = this.length || 0, this._enumerate(t), 0 === this._remaining && N(this.promise, this._result))) : F(this.promise, Y());
                    }

                    return e.prototype._enumerate = function (e) {
                      for (var t = 0; this._state === O && t < e.length; t++) this._eachEntry(e[t], t);
                    }, e.prototype._eachEntry = function (e, t) {
                      var i = this._instanceConstructor,
                          n = i.resolve;

                      if (n === R) {
                        var r = void 0,
                            s = void 0,
                            o = !1;

                        try {
                          r = e.then;
                        } catch (e) {
                          o = !0, s = e;
                        }

                        if (r === A && e._state !== O) this._settledAt(e._state, t, e._result);else if ("function" != typeof r) this._remaining--, this._result[t] = e;else if (i === te) {
                          var a = new i(T);
                          o ? F(a, s) : B(a, e, r), this._willSettleAt(a, t);
                        } else this._willSettleAt(new i(function (t) {
                          return t(e);
                        }), t);
                      } else this._willSettleAt(n(e), t);
                    }, e.prototype._settledAt = function (e, t, i) {
                      var n = this.promise;
                      n._state === O && (this._remaining--, e === I ? F(n, i) : this._result[t] = i), 0 === this._remaining && N(n, this._result);
                    }, e.prototype._willSettleAt = function (e, t) {
                      var i = this;
                      G(e, void 0, function (e) {
                        return i._settledAt(k, t, e);
                      }, function (e) {
                        return i._settledAt(I, t, e);
                      });
                    }, e;
                  }();

                  function Z(e) {
                    return new X(this, e).promise;
                  }

                  function J(e) {
                    var t = this;
                    return n(e) ? new t(function (i, n) {
                      for (var r = e.length, s = 0; s < r; s++) t.resolve(e[s]).then(i, n);
                    }) : new t(function (e, t) {
                      return t(new TypeError("You must pass an array to race."));
                    });
                  }

                  function Q(e) {
                    var t = new this(T);
                    return F(t, e), t;
                  }

                  function $() {
                    throw new TypeError("You must pass a resolver function as the first argument to the promise constructor");
                  }

                  function ee() {
                    throw new TypeError("Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.");
                  }

                  var te = function () {
                    function e(t) {
                      this[w] = H(), this._result = this._state = void 0, this._subscribers = [], T !== t && ("function" != typeof t && $(), this instanceof e ? W(this, t) : ee());
                    }

                    return e.prototype.catch = function (e) {
                      return this.then(null, e);
                    }, e.prototype.finally = function (e) {
                      var i = this,
                          n = i.constructor;
                      return t(e) ? i.then(function (t) {
                        return n.resolve(e()).then(function () {
                          return t;
                        });
                      }, function (t) {
                        return n.resolve(e()).then(function () {
                          throw t;
                        });
                      }) : i.then(e, e);
                    }, e;
                  }();

                  function ie() {
                    var e = void 0;
                    if (void 0 !== i.g) e = i.g;else if ("undefined" != typeof self) e = self;else try {
                      e = Function("return this")();
                    } catch (e) {
                      throw new Error("polyfill failed because global object is unavailable in this environment");
                    }
                    var t = e.Promise;

                    if (t) {
                      var n = null;

                      try {
                        n = Object.prototype.toString.call(t.resolve());
                      } catch (e) {}

                      if ("[object Promise]" === n && !t.cast) return;
                    }

                    e.Promise = te;
                  }

                  return te.prototype.then = A, te.all = Z, te.race = J, te.resolve = R, te.reject = Q, te._setScheduler = u, te._setAsap = l, te._asap = a, te.polyfill = ie, te.Promise = te, te;
                }();
              },
              "./node_modules/events/events.js":
              /*!***************************************!*\
              	  !*** ./node_modules/events/events.js ***!
              	  \***************************************/
              e => {
                var t,
                    i = "object" == typeof Reflect ? Reflect : null,
                    n = i && "function" == typeof i.apply ? i.apply : function (e, t, i) {
                  return Function.prototype.apply.call(e, t, i);
                };
                t = i && "function" == typeof i.ownKeys ? i.ownKeys : Object.getOwnPropertySymbols ? function (e) {
                  return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e));
                } : function (e) {
                  return Object.getOwnPropertyNames(e);
                };

                var r = Number.isNaN || function (e) {
                  return e != e;
                };

                function s() {
                  s.init.call(this);
                }

                e.exports = s, e.exports.once = function (e, t) {
                  return new Promise(function (i, n) {
                    function r(i) {
                      e.removeListener(t, s), n(i);
                    }

                    function s() {
                      "function" == typeof e.removeListener && e.removeListener("error", r), i([].slice.call(arguments));
                    }

                    p(e, t, s, {
                      once: !0
                    }), "error" !== t && function (e, t, i) {
                      "function" == typeof e.on && p(e, "error", t, i);
                    }(e, r, {
                      once: !0
                    });
                  });
                }, s.EventEmitter = s, s.prototype._events = void 0, s.prototype._eventsCount = 0, s.prototype._maxListeners = void 0;
                var o = 10;

                function a(e) {
                  if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
                }

                function u(e) {
                  return void 0 === e._maxListeners ? s.defaultMaxListeners : e._maxListeners;
                }

                function l(e, t, i, n) {
                  var r, s, o, l;
                  if (a(i), void 0 === (s = e._events) ? (s = e._events = Object.create(null), e._eventsCount = 0) : (void 0 !== s.newListener && (e.emit("newListener", t, i.listener ? i.listener : i), s = e._events), o = s[t]), void 0 === o) o = s[t] = i, ++e._eventsCount;else if ("function" == typeof o ? o = s[t] = n ? [i, o] : [o, i] : n ? o.unshift(i) : o.push(i), (r = u(e)) > 0 && o.length > r && !o.warned) {
                    o.warned = !0;
                    var d = new Error("Possible EventEmitter memory leak detected. " + o.length + " " + String(t) + " listeners added. Use emitter.setMaxListeners() to increase limit");
                    d.name = "MaxListenersExceededWarning", d.emitter = e, d.type = t, d.count = o.length, l = d, console && console.warn && console.warn(l);
                  }
                  return e;
                }

                function d() {
                  if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments);
                }

                function h(e, t, i) {
                  var n = {
                    fired: !1,
                    wrapFn: void 0,
                    target: e,
                    type: t,
                    listener: i
                  },
                      r = d.bind(n);
                  return r.listener = i, n.wrapFn = r, r;
                }

                function c(e, t, i) {
                  var n = e._events;
                  if (void 0 === n) return [];
                  var r = n[t];
                  return void 0 === r ? [] : "function" == typeof r ? i ? [r.listener || r] : [r] : i ? function (e) {
                    for (var t = new Array(e.length), i = 0; i < t.length; ++i) t[i] = e[i].listener || e[i];

                    return t;
                  }(r) : _(r, r.length);
                }

                function f(e) {
                  var t = this._events;

                  if (void 0 !== t) {
                    var i = t[e];
                    if ("function" == typeof i) return 1;
                    if (void 0 !== i) return i.length;
                  }

                  return 0;
                }

                function _(e, t) {
                  for (var i = new Array(t), n = 0; n < t; ++n) i[n] = e[n];

                  return i;
                }

                function p(e, t, i, n) {
                  if ("function" == typeof e.on) n.once ? e.once(t, i) : e.on(t, i);else {
                    if ("function" != typeof e.addEventListener) throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type ' + typeof e);
                    e.addEventListener(t, function r(s) {
                      n.once && e.removeEventListener(t, r), i(s);
                    });
                  }
                }

                Object.defineProperty(s, "defaultMaxListeners", {
                  enumerable: !0,
                  get: function () {
                    return o;
                  },
                  set: function (e) {
                    if ("number" != typeof e || e < 0 || r(e)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + ".");
                    o = e;
                  }
                }), s.init = function () {
                  void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0), this._maxListeners = this._maxListeners || void 0;
                }, s.prototype.setMaxListeners = function (e) {
                  if ("number" != typeof e || e < 0 || r(e)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + ".");
                  return this._maxListeners = e, this;
                }, s.prototype.getMaxListeners = function () {
                  return u(this);
                }, s.prototype.emit = function (e) {
                  for (var t = [], i = 1; i < arguments.length; i++) t.push(arguments[i]);

                  var r = "error" === e,
                      s = this._events;
                  if (void 0 !== s) r = r && void 0 === s.error;else if (!r) return !1;

                  if (r) {
                    var o;
                    if (t.length > 0 && (o = t[0]), o instanceof Error) throw o;
                    var a = new Error("Unhandled error." + (o ? " (" + o.message + ")" : ""));
                    throw a.context = o, a;
                  }

                  var u = s[e];
                  if (void 0 === u) return !1;
                  if ("function" == typeof u) n(u, this, t);else {
                    var l = u.length,
                        d = _(u, l);

                    for (i = 0; i < l; ++i) n(d[i], this, t);
                  }
                  return !0;
                }, s.prototype.addListener = function (e, t) {
                  return l(this, e, t, !1);
                }, s.prototype.on = s.prototype.addListener, s.prototype.prependListener = function (e, t) {
                  return l(this, e, t, !0);
                }, s.prototype.once = function (e, t) {
                  return a(t), this.on(e, h(this, e, t)), this;
                }, s.prototype.prependOnceListener = function (e, t) {
                  return a(t), this.prependListener(e, h(this, e, t)), this;
                }, s.prototype.removeListener = function (e, t) {
                  var i, n, r, s, o;
                  if (a(t), void 0 === (n = this._events)) return this;
                  if (void 0 === (i = n[e])) return this;
                  if (i === t || i.listener === t) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete n[e], n.removeListener && this.emit("removeListener", e, i.listener || t));else if ("function" != typeof i) {
                    for (r = -1, s = i.length - 1; s >= 0; s--) if (i[s] === t || i[s].listener === t) {
                      o = i[s].listener, r = s;
                      break;
                    }

                    if (r < 0) return this;
                    0 === r ? i.shift() : function (e, t) {
                      for (; t + 1 < e.length; t++) e[t] = e[t + 1];

                      e.pop();
                    }(i, r), 1 === i.length && (n[e] = i[0]), void 0 !== n.removeListener && this.emit("removeListener", e, o || t);
                  }
                  return this;
                }, s.prototype.off = s.prototype.removeListener, s.prototype.removeAllListeners = function (e) {
                  var t, i, n;
                  if (void 0 === (i = this._events)) return this;
                  if (void 0 === i.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== i[e] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete i[e]), this;

                  if (0 === arguments.length) {
                    var r,
                        s = Object.keys(i);

                    for (n = 0; n < s.length; ++n) "removeListener" !== (r = s[n]) && this.removeAllListeners(r);

                    return this.removeAllListeners("removeListener"), this._events = Object.create(null), this._eventsCount = 0, this;
                  }

                  if ("function" == typeof (t = i[e])) this.removeListener(e, t);else if (void 0 !== t) for (n = t.length - 1; n >= 0; n--) this.removeListener(e, t[n]);
                  return this;
                }, s.prototype.listeners = function (e) {
                  return c(this, e, !0);
                }, s.prototype.rawListeners = function (e) {
                  return c(this, e, !1);
                }, s.listenerCount = function (e, t) {
                  return "function" == typeof e.listenerCount ? e.listenerCount(t) : f.call(e, t);
                }, s.prototype.listenerCount = f, s.prototype.eventNames = function () {
                  return this._eventsCount > 0 ? t(this._events) : [];
                };
              },
              "./node_modules/webworkify-webpack/index.js":
              /*!**************************************************!*\
              	  !*** ./node_modules/webworkify-webpack/index.js ***!
              	  \**************************************************/
              (e, t, i) => {
                function n(e) {
                  var t = {};

                  function i(n) {
                    if (t[n]) return t[n].exports;
                    var r = t[n] = {
                      i: n,
                      l: !1,
                      exports: {}
                    };
                    return e[n].call(r.exports, r, r.exports, i), r.l = !0, r.exports;
                  }

                  i.m = e, i.c = t, i.i = function (e) {
                    return e;
                  }, i.d = function (e, t, n) {
                    i.o(e, t) || Object.defineProperty(e, t, {
                      configurable: !1,
                      enumerable: !0,
                      get: n
                    });
                  }, i.r = function (e) {
                    Object.defineProperty(e, "__esModule", {
                      value: !0
                    });
                  }, i.n = function (e) {
                    var t = e && e.__esModule ? function () {
                      return e.default;
                    } : function () {
                      return e;
                    };
                    return i.d(t, "a", t), t;
                  }, i.o = function (e, t) {
                    return Object.prototype.hasOwnProperty.call(e, t);
                  }, i.p = "/", i.oe = function (e) {
                    throw console.error(e), e;
                  };
                  var n = i(i.s = ENTRY_MODULE);
                  return n.default || n;
                }

                var r = "[\\.|\\-|\\+|\\w|/|@]+",
                    s = "\\(\\s*(/\\*.*?\\*/)?\\s*.*?([\\.|\\-|\\+|\\w|/|@]+).*?\\)";

                function o(e) {
                  return (e + "").replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&");
                }

                function a(e, t, n) {
                  var a = {};
                  a[n] = [];
                  var u = t.toString(),
                      l = u.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
                  if (!l) return a;

                  for (var d, h = l[1], c = new RegExp("(\\\\n|\\W)" + o(h) + s, "g"); d = c.exec(u);) "dll-reference" !== d[3] && a[n].push(d[3]);

                  for (c = new RegExp("\\(" + o(h) + '\\("(dll-reference\\s(' + r + '))"\\)\\)' + s, "g"); d = c.exec(u);) e[d[2]] || (a[n].push(d[1]), e[d[2]] = i(d[1]).m), a[d[2]] = a[d[2]] || [], a[d[2]].push(d[4]);

                  for (var f, _ = Object.keys(a), p = 0; p < _.length; p++) for (var m = 0; m < a[_[p]].length; m++) f = a[_[p]][m], isNaN(1 * f) || (a[_[p]][m] = 1 * a[_[p]][m]);

                  return a;
                }

                function u(e) {
                  return Object.keys(e).reduce(function (t, i) {
                    return t || e[i].length > 0;
                  }, !1);
                }

                e.exports = function (e, t) {
                  t = t || {};
                  var r = {
                    main: i.m
                  },
                      s = t.all ? {
                    main: Object.keys(r.main)
                  } : function (e, t) {
                    for (var i = {
                      main: [t]
                    }, n = {
                      main: []
                    }, r = {
                      main: {}
                    }; u(i);) for (var s = Object.keys(i), o = 0; o < s.length; o++) {
                      var l = s[o],
                          d = i[l].pop();

                      if (r[l] = r[l] || {}, !r[l][d] && e[l][d]) {
                        r[l][d] = !0, n[l] = n[l] || [], n[l].push(d);

                        for (var h = a(e, e[l][d], l), c = Object.keys(h), f = 0; f < c.length; f++) i[c[f]] = i[c[f]] || [], i[c[f]] = i[c[f]].concat(h[c[f]]);
                      }
                    }

                    return n;
                  }(r, e),
                      o = "";
                  Object.keys(s).filter(function (e) {
                    return "main" !== e;
                  }).forEach(function (e) {
                    for (var t = 0; s[e][t];) t++;

                    s[e].push(t), r[e][t] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })", o = o + "var " + e + " = (" + n.toString().replace("ENTRY_MODULE", JSON.stringify(t)) + ")({" + s[e].map(function (t) {
                      return JSON.stringify(t) + ": " + r[e][t].toString();
                    }).join(",") + "});\n";
                  }), o = o + "new ((" + n.toString().replace("ENTRY_MODULE", JSON.stringify(e)) + ")({" + s.main.map(function (e) {
                    return JSON.stringify(e) + ": " + r.main[e].toString();
                  }).join(",") + "}))(self);";
                  var l = new window.Blob([o], {
                    type: "text/javascript"
                  });
                  if (t.bare) return l;
                  var d = (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(l),
                      h = new window.Worker(d);
                  return h.objectURL = d, h;
                };
              },
              "./src/config.js":
              /*!***********************!*\
              	  !*** ./src/config.js ***!
              	  \***********************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  defaultConfig: () => n,
                  createDefaultConfig: () => r
                });
                var n = {
                  enableWorker: !1,
                  enableStashBuffer: !0,
                  stashInitialSize: void 0,
                  isLive: !1,
                  lazyLoad: !0,
                  lazyLoadMaxDuration: 180,
                  lazyLoadRecoverDuration: 30,
                  deferLoadAfterSourceOpen: !0,
                  autoCleanupMaxBackwardDuration: 180,
                  autoCleanupMinBackwardDuration: 120,
                  statisticsInfoReportInterval: 600,
                  fixAudioTimestampGap: !0,
                  accurateSeek: !1,
                  seekType: "range",
                  seekParamStart: "bstart",
                  seekParamEnd: "bend",
                  rangeLoadZeroStart: !1,
                  customSeekHandler: void 0,
                  reuseRedirectedURL: !1,
                  headers: void 0,
                  customLoader: void 0
                };

                function r() {
                  return Object.assign({}, n);
                }
              },
              "./src/core/features.js":
              /*!******************************!*\
              	  !*** ./src/core/features.js ***!
              	  \******************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => s
                });
                var n = i(
                /*! ../io/io-controller.js */
                "./src/io/io-controller.js"),
                    r = i(
                /*! ../config.js */
                "./src/config.js");

                const s = function () {
                  function e() {}

                  return e.supportMSEH264Playback = function () {
                    return window.MediaSource && window.MediaSource.isTypeSupported('video/mp4; codecs="avc1.42E01E,mp4a.40.2"');
                  }, e.supportNetworkStreamIO = function () {
                    var e = new n.default({}, (0, r.createDefaultConfig)()),
                        t = e.loaderType;
                    return e.destroy(), "fetch-stream-loader" == t || "xhr-moz-chunked-loader" == t;
                  }, e.getNetworkLoaderTypeName = function () {
                    var e = new n.default({}, (0, r.createDefaultConfig)()),
                        t = e.loaderType;
                    return e.destroy(), t;
                  }, e.supportNativeMediaPlayback = function (t) {
                    null == e.videoElement && (e.videoElement = window.document.createElement("video"));
                    var i = e.videoElement.canPlayType(t);
                    return "probably" === i || "maybe" == i;
                  }, e.getFeatureList = function () {
                    var t = {
                      mseFlvPlayback: !1,
                      mseLiveFlvPlayback: !1,
                      networkStreamIO: !1,
                      networkLoaderName: "",
                      nativeMP4H264Playback: !1,
                      nativeWebmVP8Playback: !1,
                      nativeWebmVP9Playback: !1
                    };
                    return t.mseFlvPlayback = e.supportMSEH264Playback(), t.networkStreamIO = e.supportNetworkStreamIO(), t.networkLoaderName = e.getNetworkLoaderTypeName(), t.mseLiveFlvPlayback = t.mseFlvPlayback && t.networkStreamIO, t.nativeMP4H264Playback = e.supportNativeMediaPlayback('video/mp4; codecs="avc1.42001E, mp4a.40.2"'), t.nativeWebmVP8Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp8.0, vorbis"'), t.nativeWebmVP9Playback = e.supportNativeMediaPlayback('video/webm; codecs="vp9"'), t;
                  }, e;
                }();
              },
              "./src/core/media-info.js":
              /*!********************************!*\
              	  !*** ./src/core/media-info.js ***!
              	  \********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });

                const n = function () {
                  function e() {
                    this.mimeType = null, this.duration = null, this.hasAudio = null, this.hasVideo = null, this.audioCodec = null, this.videoCodec = null, this.audioDataRate = null, this.videoDataRate = null, this.audioSampleRate = null, this.audioChannelCount = null, this.width = null, this.height = null, this.fps = null, this.profile = null, this.level = null, this.refFrames = null, this.chromaFormat = null, this.sarNum = null, this.sarDen = null, this.metadata = null, this.segments = null, this.segmentCount = null, this.hasKeyframesIndex = null, this.keyframesIndex = null;
                  }

                  return e.prototype.isComplete = function () {
                    var e = !1 === this.hasAudio || !0 === this.hasAudio && null != this.audioCodec && null != this.audioSampleRate && null != this.audioChannelCount,
                        t = !1 === this.hasVideo || !0 === this.hasVideo && null != this.videoCodec && null != this.width && null != this.height && null != this.fps && null != this.profile && null != this.level && null != this.refFrames && null != this.chromaFormat && null != this.sarNum && null != this.sarDen;
                    return null != this.mimeType && null != this.duration && null != this.metadata && null != this.hasKeyframesIndex && e && t;
                  }, e.prototype.isSeekable = function () {
                    return !0 === this.hasKeyframesIndex;
                  }, e.prototype.getNearestKeyframe = function (e) {
                    if (null == this.keyframesIndex) return null;

                    var t = this.keyframesIndex,
                        i = this._search(t.times, e);

                    return {
                      index: i,
                      milliseconds: t.times[i],
                      fileposition: t.filepositions[i]
                    };
                  }, e.prototype._search = function (e, t) {
                    var i = 0,
                        n = e.length - 1,
                        r = 0,
                        s = 0,
                        o = n;

                    for (t < e[0] && (i = 0, s = o + 1); s <= o;) {
                      if ((r = s + Math.floor((o - s) / 2)) === n || t >= e[r] && t < e[r + 1]) {
                        i = r;
                        break;
                      }

                      e[r] < t ? s = r + 1 : o = r - 1;
                    }

                    return i;
                  }, e;
                }();
              },
              "./src/core/media-segment-info.js":
              /*!****************************************!*\
              	  !*** ./src/core/media-segment-info.js ***!
              	  \****************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  SampleInfo: () => n,
                  MediaSegmentInfo: () => r,
                  IDRSampleList: () => s,
                  MediaSegmentInfoList: () => o
                });

                var n = function (e, t, i, n, r) {
                  this.dts = e, this.pts = t, this.duration = i, this.originalDts = n, this.isSyncPoint = r, this.fileposition = null;
                },
                    r = function () {
                  function e() {
                    this.beginDts = 0, this.endDts = 0, this.beginPts = 0, this.endPts = 0, this.originalBeginDts = 0, this.originalEndDts = 0, this.syncPoints = [], this.firstSample = null, this.lastSample = null;
                  }

                  return e.prototype.appendSyncPoint = function (e) {
                    e.isSyncPoint = !0, this.syncPoints.push(e);
                  }, e;
                }(),
                    s = function () {
                  function e() {
                    this._list = [];
                  }

                  return e.prototype.clear = function () {
                    this._list = [];
                  }, e.prototype.appendArray = function (e) {
                    var t = this._list;
                    0 !== e.length && (t.length > 0 && e[0].originalDts < t[t.length - 1].originalDts && this.clear(), Array.prototype.push.apply(t, e));
                  }, e.prototype.getLastSyncPointBeforeDts = function (e) {
                    if (0 == this._list.length) return null;
                    var t = this._list,
                        i = 0,
                        n = t.length - 1,
                        r = 0,
                        s = 0,
                        o = n;

                    for (e < t[0].dts && (i = 0, s = o + 1); s <= o;) {
                      if ((r = s + Math.floor((o - s) / 2)) === n || e >= t[r].dts && e < t[r + 1].dts) {
                        i = r;
                        break;
                      }

                      t[r].dts < e ? s = r + 1 : o = r - 1;
                    }

                    return this._list[i];
                  }, e;
                }(),
                    o = function () {
                  function e(e) {
                    this._type = e, this._list = [], this._lastAppendLocation = -1;
                  }

                  return Object.defineProperty(e.prototype, "type", {
                    get: function () {
                      return this._type;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "length", {
                    get: function () {
                      return this._list.length;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype.isEmpty = function () {
                    return 0 === this._list.length;
                  }, e.prototype.clear = function () {
                    this._list = [], this._lastAppendLocation = -1;
                  }, e.prototype._searchNearestSegmentBefore = function (e) {
                    var t = this._list;
                    if (0 === t.length) return -2;
                    var i = t.length - 1,
                        n = 0,
                        r = 0,
                        s = i,
                        o = 0;
                    if (e < t[0].originalBeginDts) return o = -1;

                    for (; r <= s;) {
                      if ((n = r + Math.floor((s - r) / 2)) === i || e > t[n].lastSample.originalDts && e < t[n + 1].originalBeginDts) {
                        o = n;
                        break;
                      }

                      t[n].originalBeginDts < e ? r = n + 1 : s = n - 1;
                    }

                    return o;
                  }, e.prototype._searchNearestSegmentAfter = function (e) {
                    return this._searchNearestSegmentBefore(e) + 1;
                  }, e.prototype.append = function (e) {
                    var t = this._list,
                        i = e,
                        n = this._lastAppendLocation,
                        r = 0;
                    -1 !== n && n < t.length && i.originalBeginDts >= t[n].lastSample.originalDts && (n === t.length - 1 || n < t.length - 1 && i.originalBeginDts < t[n + 1].originalBeginDts) ? r = n + 1 : t.length > 0 && (r = this._searchNearestSegmentBefore(i.originalBeginDts) + 1), this._lastAppendLocation = r, this._list.splice(r, 0, i);
                  }, e.prototype.getLastSegmentBefore = function (e) {
                    var t = this._searchNearestSegmentBefore(e);

                    return t >= 0 ? this._list[t] : null;
                  }, e.prototype.getLastSampleBefore = function (e) {
                    var t = this.getLastSegmentBefore(e);
                    return null != t ? t.lastSample : null;
                  }, e.prototype.getLastSyncPointBefore = function (e) {
                    for (var t = this._searchNearestSegmentBefore(e), i = this._list[t].syncPoints; 0 === i.length && t > 0;) t--, i = this._list[t].syncPoints;

                    return i.length > 0 ? i[i.length - 1] : null;
                  }, e;
                }();
              },
              "./src/core/mse-controller.js":
              /*!************************************!*\
              	  !*** ./src/core/mse-controller.js ***!
              	  \************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => d
                });
                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    o = i(
                /*! ../utils/browser.js */
                "./src/utils/browser.js"),
                    a = i(
                /*! ./mse-events.js */
                "./src/core/mse-events.js"),
                    u = i(
                /*! ./media-segment-info.js */
                "./src/core/media-segment-info.js"),
                    l = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const d = function () {
                  function e(e) {
                    this.TAG = "MSEController", this._config = e, this._emitter = new (r())(), this._config.isLive && null == this._config.autoCleanupSourceBuffer && (this._config.autoCleanupSourceBuffer = !0), this.e = {
                      onSourceOpen: this._onSourceOpen.bind(this),
                      onSourceEnded: this._onSourceEnded.bind(this),
                      onSourceClose: this._onSourceClose.bind(this),
                      onSourceBufferError: this._onSourceBufferError.bind(this),
                      onSourceBufferUpdateEnd: this._onSourceBufferUpdateEnd.bind(this)
                    }, this._mediaSource = null, this._mediaSourceObjectURL = null, this._mediaElement = null, this._isBufferFull = !1, this._hasPendingEos = !1, this._requireSetMediaDuration = !1, this._pendingMediaDuration = 0, this._pendingSourceBufferInit = [], this._mimeTypes = {
                      video: null,
                      audio: null
                    }, this._sourceBuffers = {
                      video: null,
                      audio: null
                    }, this._lastInitSegments = {
                      video: null,
                      audio: null
                    }, this._pendingSegments = {
                      video: [],
                      audio: []
                    }, this._pendingRemoveRanges = {
                      video: [],
                      audio: []
                    }, this._idrList = new u.IDRSampleList();
                  }

                  return e.prototype.destroy = function () {
                    (this._mediaElement || this._mediaSource) && this.detachMediaElement(), this.e = null, this._emitter.removeAllListeners(), this._emitter = null;
                  }, e.prototype.on = function (e, t) {
                    this._emitter.addListener(e, t);
                  }, e.prototype.off = function (e, t) {
                    this._emitter.removeListener(e, t);
                  }, e.prototype.attachMediaElement = function (e) {
                    if (this._mediaSource) throw new l.IllegalStateException("MediaSource has been attached to an HTMLMediaElement!");
                    var t = this._mediaSource = new window.MediaSource();
                    t.addEventListener("sourceopen", this.e.onSourceOpen), t.addEventListener("sourceended", this.e.onSourceEnded), t.addEventListener("sourceclose", this.e.onSourceClose), this._mediaElement = e, this._mediaSourceObjectURL = window.URL.createObjectURL(this._mediaSource), e.src = this._mediaSourceObjectURL;
                  }, e.prototype.detachMediaElement = function () {
                    if (this._mediaSource) {
                      var e = this._mediaSource;

                      for (var t in this._sourceBuffers) {
                        var i = this._pendingSegments[t];
                        i.splice(0, i.length), this._pendingSegments[t] = null, this._pendingRemoveRanges[t] = null, this._lastInitSegments[t] = null;
                        var n = this._sourceBuffers[t];

                        if (n) {
                          if ("closed" !== e.readyState) {
                            try {
                              e.removeSourceBuffer(n);
                            } catch (e) {
                              s.default.e(this.TAG, e.message);
                            }

                            n.removeEventListener("error", this.e.onSourceBufferError), n.removeEventListener("updateend", this.e.onSourceBufferUpdateEnd);
                          }

                          this._mimeTypes[t] = null, this._sourceBuffers[t] = null;
                        }
                      }

                      if ("open" === e.readyState) try {
                        e.endOfStream();
                      } catch (e) {
                        s.default.e(this.TAG, e.message);
                      }
                      e.removeEventListener("sourceopen", this.e.onSourceOpen), e.removeEventListener("sourceended", this.e.onSourceEnded), e.removeEventListener("sourceclose", this.e.onSourceClose), this._pendingSourceBufferInit = [], this._isBufferFull = !1, this._idrList.clear(), this._mediaSource = null;
                    }

                    this._mediaElement && (this._mediaElement.src = "", this._mediaElement.removeAttribute("src"), this._mediaElement = null), this._mediaSourceObjectURL && (window.URL.revokeObjectURL(this._mediaSourceObjectURL), this._mediaSourceObjectURL = null);
                  }, e.prototype.appendInitSegment = function (e, t) {
                    if (!this._mediaSource || "open" !== this._mediaSource.readyState) return this._pendingSourceBufferInit.push(e), void this._pendingSegments[e.type].push(e);
                    var i = e,
                        n = "" + i.container;
                    i.codec && i.codec.length > 0 && (n += ";codecs=" + i.codec);
                    var r = !1;

                    if (s.default.v(this.TAG, "Received Initialization Segment, mimeType: " + n), this._lastInitSegments[i.type] = i, n !== this._mimeTypes[i.type]) {
                      if (this._mimeTypes[i.type]) s.default.v(this.TAG, "Notice: " + i.type + " mimeType changed, origin: " + this._mimeTypes[i.type] + ", target: " + n);else {
                        r = !0;

                        try {
                          var u = this._sourceBuffers[i.type] = this._mediaSource.addSourceBuffer(n);

                          u.addEventListener("error", this.e.onSourceBufferError), u.addEventListener("updateend", this.e.onSourceBufferUpdateEnd);
                        } catch (e) {
                          return s.default.e(this.TAG, e.message), void this._emitter.emit(a.default.ERROR, {
                            code: e.code,
                            msg: e.message
                          });
                        }
                      }
                      this._mimeTypes[i.type] = n;
                    }

                    t || this._pendingSegments[i.type].push(i), r || this._sourceBuffers[i.type] && !this._sourceBuffers[i.type].updating && this._doAppendSegments(), o.default.safari && "audio/mpeg" === i.container && i.mediaDuration > 0 && (this._requireSetMediaDuration = !0, this._pendingMediaDuration = i.mediaDuration / 1e3, this._updateMediaSourceDuration());
                  }, e.prototype.appendMediaSegment = function (e) {
                    var t = e;
                    this._pendingSegments[t.type].push(t), this._config.autoCleanupSourceBuffer && this._needCleanupSourceBuffer() && this._doCleanupSourceBuffer();
                    var i = this._sourceBuffers[t.type];
                    !i || i.updating || this._hasPendingRemoveRanges() || this._doAppendSegments();
                  }, e.prototype.seek = function (e) {
                    for (var t in this._sourceBuffers) if (this._sourceBuffers[t]) {
                      var i = this._sourceBuffers[t];
                      if ("open" === this._mediaSource.readyState) try {
                        i.abort();
                      } catch (e) {
                        s.default.e(this.TAG, e.message);
                      }

                      this._idrList.clear();

                      var n = this._pendingSegments[t];

                      if (n.splice(0, n.length), "closed" !== this._mediaSource.readyState) {
                        for (var r = 0; r < i.buffered.length; r++) {
                          var a = i.buffered.start(r),
                              u = i.buffered.end(r);

                          this._pendingRemoveRanges[t].push({
                            start: a,
                            end: u
                          });
                        }

                        if (i.updating || this._doRemoveRanges(), o.default.safari) {
                          var l = this._lastInitSegments[t];
                          l && (this._pendingSegments[t].push(l), i.updating || this._doAppendSegments());
                        }
                      }
                    }
                  }, e.prototype.endOfStream = function () {
                    var e = this._mediaSource,
                        t = this._sourceBuffers;
                    e && "open" === e.readyState ? t.video && t.video.updating || t.audio && t.audio.updating ? this._hasPendingEos = !0 : (this._hasPendingEos = !1, e.endOfStream()) : e && "closed" === e.readyState && this._hasPendingSegments() && (this._hasPendingEos = !0);
                  }, e.prototype.getNearestKeyframe = function (e) {
                    return this._idrList.getLastSyncPointBeforeDts(e);
                  }, e.prototype._needCleanupSourceBuffer = function () {
                    if (!this._config.autoCleanupSourceBuffer) return !1;
                    var e = this._mediaElement.currentTime;

                    for (var t in this._sourceBuffers) {
                      var i = this._sourceBuffers[t];

                      if (i) {
                        var n = i.buffered;
                        if (n.length >= 1 && e - n.start(0) >= this._config.autoCleanupMaxBackwardDuration) return !0;
                      }
                    }

                    return !1;
                  }, e.prototype._doCleanupSourceBuffer = function () {
                    var e = this._mediaElement.currentTime;

                    for (var t in this._sourceBuffers) {
                      var i = this._sourceBuffers[t];

                      if (i) {
                        for (var n = i.buffered, r = !1, s = 0; s < n.length; s++) {
                          var o = n.start(s),
                              a = n.end(s);

                          if (o <= e && e < a + 3) {
                            if (e - o >= this._config.autoCleanupMaxBackwardDuration) {
                              r = !0;
                              var u = e - this._config.autoCleanupMinBackwardDuration;

                              this._pendingRemoveRanges[t].push({
                                start: o,
                                end: u
                              });
                            }
                          } else a < e && (r = !0, this._pendingRemoveRanges[t].push({
                            start: o,
                            end: a
                          }));
                        }

                        r && !i.updating && this._doRemoveRanges();
                      }
                    }
                  }, e.prototype._updateMediaSourceDuration = function () {
                    var e = this._sourceBuffers;

                    if (0 !== this._mediaElement.readyState && "open" === this._mediaSource.readyState && !(e.video && e.video.updating || e.audio && e.audio.updating)) {
                      var t = this._mediaSource.duration,
                          i = this._pendingMediaDuration;
                      i > 0 && (isNaN(t) || i > t) && (s.default.v(this.TAG, "Update MediaSource duration from " + t + " to " + i), this._mediaSource.duration = i), this._requireSetMediaDuration = !1, this._pendingMediaDuration = 0;
                    }
                  }, e.prototype._doRemoveRanges = function () {
                    for (var e in this._pendingRemoveRanges) if (this._sourceBuffers[e] && !this._sourceBuffers[e].updating) for (var t = this._sourceBuffers[e], i = this._pendingRemoveRanges[e]; i.length && !t.updating;) {
                      var n = i.shift();
                      t.remove(n.start, n.end);
                    }
                  }, e.prototype._doAppendSegments = function () {
                    var e = this._pendingSegments;

                    for (var t in e) if (this._sourceBuffers[t] && !this._sourceBuffers[t].updating && e[t].length > 0) {
                      var i = e[t].shift();

                      if (i.timestampOffset) {
                        var n = this._sourceBuffers[t].timestampOffset,
                            r = i.timestampOffset / 1e3;
                        Math.abs(n - r) > .1 && (s.default.v(this.TAG, "Update MPEG audio timestampOffset from " + n + " to " + r), this._sourceBuffers[t].timestampOffset = r), delete i.timestampOffset;
                      }

                      if (!i.data || 0 === i.data.byteLength) continue;

                      try {
                        this._sourceBuffers[t].appendBuffer(i.data), this._isBufferFull = !1, "video" === t && i.hasOwnProperty("info") && this._idrList.appendArray(i.info.syncPoints);
                      } catch (e) {
                        this._pendingSegments[t].unshift(i), 22 === e.code ? (this._isBufferFull || this._emitter.emit(a.default.BUFFER_FULL), this._isBufferFull = !0) : (s.default.e(this.TAG, e.message), this._emitter.emit(a.default.ERROR, {
                          code: e.code,
                          msg: e.message
                        }));
                      }
                    }
                  }, e.prototype._onSourceOpen = function () {
                    if (s.default.v(this.TAG, "MediaSource onSourceOpen"), this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen), this._pendingSourceBufferInit.length > 0) for (var e = this._pendingSourceBufferInit; e.length;) {
                      var t = e.shift();
                      this.appendInitSegment(t, !0);
                    }
                    this._hasPendingSegments() && this._doAppendSegments(), this._emitter.emit(a.default.SOURCE_OPEN);
                  }, e.prototype._onSourceEnded = function () {
                    s.default.v(this.TAG, "MediaSource onSourceEnded");
                  }, e.prototype._onSourceClose = function () {
                    s.default.v(this.TAG, "MediaSource onSourceClose"), this._mediaSource && null != this.e && (this._mediaSource.removeEventListener("sourceopen", this.e.onSourceOpen), this._mediaSource.removeEventListener("sourceended", this.e.onSourceEnded), this._mediaSource.removeEventListener("sourceclose", this.e.onSourceClose));
                  }, e.prototype._hasPendingSegments = function () {
                    var e = this._pendingSegments;
                    return e.video.length > 0 || e.audio.length > 0;
                  }, e.prototype._hasPendingRemoveRanges = function () {
                    var e = this._pendingRemoveRanges;
                    return e.video.length > 0 || e.audio.length > 0;
                  }, e.prototype._onSourceBufferUpdateEnd = function () {
                    this._requireSetMediaDuration ? this._updateMediaSourceDuration() : this._hasPendingRemoveRanges() ? this._doRemoveRanges() : this._hasPendingSegments() ? this._doAppendSegments() : this._hasPendingEos && this.endOfStream(), this._emitter.emit(a.default.UPDATE_END);
                  }, e.prototype._onSourceBufferError = function (e) {
                    s.default.e(this.TAG, "SourceBuffer Error: " + e);
                  }, e;
                }();
              },
              "./src/core/mse-events.js":
              /*!********************************!*\
              	  !*** ./src/core/mse-events.js ***!
              	  \********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });
                const n = {
                  ERROR: "error",
                  SOURCE_OPEN: "source_open",
                  UPDATE_END: "update_end",
                  BUFFER_FULL: "buffer_full"
                };
              },
              "./src/core/transmuxer.js":
              /*!********************************!*\
              	  !*** ./src/core/transmuxer.js ***!
              	  \********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => c
                });
                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! webworkify-webpack */
                "./node_modules/webworkify-webpack/index.js"),
                    o = i.n(s),
                    a = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    u = i(
                /*! ../utils/logging-control.js */
                "./src/utils/logging-control.js"),
                    l = i(
                /*! ./transmuxing-controller.js */
                "./src/core/transmuxing-controller.js"),
                    d = i(
                /*! ./transmuxing-events.js */
                "./src/core/transmuxing-events.js"),
                    h = i(
                /*! ./media-info.js */
                "./src/core/media-info.js");

                const c = function () {
                  function e(e, t) {
                    if (this.TAG = "Transmuxer", this._emitter = new (r())(), t.enableWorker && "undefined" != typeof Worker) try {
                      this._worker = o()(
                      /*! ./transmuxing-worker */
                      "./src/core/transmuxing-worker.js"), this._workerDestroying = !1, this._worker.addEventListener("message", this._onWorkerMessage.bind(this)), this._worker.postMessage({
                        cmd: "init",
                        param: [e, t]
                      }), this.e = {
                        onLoggingConfigChanged: this._onLoggingConfigChanged.bind(this)
                      }, u.default.registerListener(this.e.onLoggingConfigChanged), this._worker.postMessage({
                        cmd: "logging_config",
                        param: u.default.getConfig()
                      });
                    } catch (i) {
                      a.default.e(this.TAG, "Error while initialize transmuxing worker, fallback to inline transmuxing"), this._worker = null, this._controller = new l.default(e, t);
                    } else this._controller = new l.default(e, t);

                    if (this._controller) {
                      var i = this._controller;
                      i.on(d.default.IO_ERROR, this._onIOError.bind(this)), i.on(d.default.DEMUX_ERROR, this._onDemuxError.bind(this)), i.on(d.default.INIT_SEGMENT, this._onInitSegment.bind(this)), i.on(d.default.MEDIA_SEGMENT, this._onMediaSegment.bind(this)), i.on(d.default.LOADING_COMPLETE, this._onLoadingComplete.bind(this)), i.on(d.default.RECOVERED_EARLY_EOF, this._onRecoveredEarlyEof.bind(this)), i.on(d.default.MEDIA_INFO, this._onMediaInfo.bind(this)), i.on(d.default.METADATA_ARRIVED, this._onMetaDataArrived.bind(this)), i.on(d.default.SCRIPTDATA_ARRIVED, this._onScriptDataArrived.bind(this)), i.on(d.default.STATISTICS_INFO, this._onStatisticsInfo.bind(this)), i.on(d.default.RECOMMEND_SEEKPOINT, this._onRecommendSeekpoint.bind(this));
                    }
                  }

                  return e.prototype.destroy = function () {
                    this._worker ? this._workerDestroying || (this._workerDestroying = !0, this._worker.postMessage({
                      cmd: "destroy"
                    }), u.default.removeListener(this.e.onLoggingConfigChanged), this.e = null) : (this._controller.destroy(), this._controller = null), this._emitter.removeAllListeners(), this._emitter = null;
                  }, e.prototype.on = function (e, t) {
                    this._emitter.addListener(e, t);
                  }, e.prototype.off = function (e, t) {
                    this._emitter.removeListener(e, t);
                  }, e.prototype.hasWorker = function () {
                    return null != this._worker;
                  }, e.prototype.open = function () {
                    this._worker ? this._worker.postMessage({
                      cmd: "start"
                    }) : this._controller.start();
                  }, e.prototype.close = function () {
                    this._worker ? this._worker.postMessage({
                      cmd: "stop"
                    }) : this._controller.stop();
                  }, e.prototype.seek = function (e) {
                    this._worker ? this._worker.postMessage({
                      cmd: "seek",
                      param: e
                    }) : this._controller.seek(e);
                  }, e.prototype.pause = function () {
                    this._worker ? this._worker.postMessage({
                      cmd: "pause"
                    }) : this._controller.pause();
                  }, e.prototype.resume = function () {
                    this._worker ? this._worker.postMessage({
                      cmd: "resume"
                    }) : this._controller.resume();
                  }, e.prototype._onInitSegment = function (e, t) {
                    var i = this;
                    Promise.resolve().then(function () {
                      i._emitter.emit(d.default.INIT_SEGMENT, e, t);
                    });
                  }, e.prototype._onMediaSegment = function (e, t) {
                    var i = this;
                    Promise.resolve().then(function () {
                      i._emitter.emit(d.default.MEDIA_SEGMENT, e, t);
                    });
                  }, e.prototype._onLoadingComplete = function () {
                    var e = this;
                    Promise.resolve().then(function () {
                      e._emitter.emit(d.default.LOADING_COMPLETE);
                    });
                  }, e.prototype._onRecoveredEarlyEof = function () {
                    var e = this;
                    Promise.resolve().then(function () {
                      e._emitter.emit(d.default.RECOVERED_EARLY_EOF);
                    });
                  }, e.prototype._onMediaInfo = function (e) {
                    var t = this;
                    Promise.resolve().then(function () {
                      t._emitter.emit(d.default.MEDIA_INFO, e);
                    });
                  }, e.prototype._onMetaDataArrived = function (e) {
                    var t = this;
                    Promise.resolve().then(function () {
                      t._emitter.emit(d.default.METADATA_ARRIVED, e);
                    });
                  }, e.prototype._onScriptDataArrived = function (e) {
                    var t = this;
                    Promise.resolve().then(function () {
                      t._emitter.emit(d.default.SCRIPTDATA_ARRIVED, e);
                    });
                  }, e.prototype._onStatisticsInfo = function (e) {
                    var t = this;
                    Promise.resolve().then(function () {
                      t._emitter.emit(d.default.STATISTICS_INFO, e);
                    });
                  }, e.prototype._onIOError = function (e, t) {
                    var i = this;
                    Promise.resolve().then(function () {
                      i._emitter.emit(d.default.IO_ERROR, e, t);
                    });
                  }, e.prototype._onDemuxError = function (e, t) {
                    var i = this;
                    Promise.resolve().then(function () {
                      i._emitter.emit(d.default.DEMUX_ERROR, e, t);
                    });
                  }, e.prototype._onRecommendSeekpoint = function (e) {
                    var t = this;
                    Promise.resolve().then(function () {
                      t._emitter.emit(d.default.RECOMMEND_SEEKPOINT, e);
                    });
                  }, e.prototype._onLoggingConfigChanged = function (e) {
                    this._worker && this._worker.postMessage({
                      cmd: "logging_config",
                      param: e
                    });
                  }, e.prototype._onWorkerMessage = function (e) {
                    var t = e.data,
                        i = t.data;
                    if ("destroyed" === t.msg || this._workerDestroying) return this._workerDestroying = !1, this._worker.terminate(), void (this._worker = null);

                    switch (t.msg) {
                      case d.default.INIT_SEGMENT:
                      case d.default.MEDIA_SEGMENT:
                        this._emitter.emit(t.msg, i.type, i.data);

                        break;

                      case d.default.LOADING_COMPLETE:
                      case d.default.RECOVERED_EARLY_EOF:
                        this._emitter.emit(t.msg);

                        break;

                      case d.default.MEDIA_INFO:
                        Object.setPrototypeOf(i, h.default.prototype), this._emitter.emit(t.msg, i);
                        break;

                      case d.default.METADATA_ARRIVED:
                      case d.default.SCRIPTDATA_ARRIVED:
                      case d.default.STATISTICS_INFO:
                        this._emitter.emit(t.msg, i);

                        break;

                      case d.default.IO_ERROR:
                      case d.default.DEMUX_ERROR:
                        this._emitter.emit(t.msg, i.type, i.info);

                        break;

                      case d.default.RECOMMEND_SEEKPOINT:
                        this._emitter.emit(t.msg, i);

                        break;

                      case "logcat_callback":
                        a.default.emitter.emit("log", i.type, i.logcat);
                    }
                  }, e;
                }();
              },
              "./src/core/transmuxing-controller.js":
              /*!********************************************!*\
              	  !*** ./src/core/transmuxing-controller.js ***!
              	  \********************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => f
                });
                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    o = i(
                /*! ../utils/browser.js */
                "./src/utils/browser.js"),
                    a = i(
                /*! ./media-info.js */
                "./src/core/media-info.js"),
                    u = i(
                /*! ../demux/flv-demuxer.js */
                "./src/demux/flv-demuxer.js"),
                    l = i(
                /*! ../remux/mp4-remuxer.js */
                "./src/remux/mp4-remuxer.js"),
                    d = i(
                /*! ../demux/demux-errors.js */
                "./src/demux/demux-errors.js"),
                    h = i(
                /*! ../io/io-controller.js */
                "./src/io/io-controller.js"),
                    c = i(
                /*! ./transmuxing-events.js */
                "./src/core/transmuxing-events.js");

                const f = function () {
                  function e(e, t) {
                    this.TAG = "TransmuxingController", this._emitter = new (r())(), this._config = t, e.segments || (e.segments = [{
                      duration: e.duration,
                      filesize: e.filesize,
                      url: e.url
                    }]), "boolean" != typeof e.cors && (e.cors = !0), "boolean" != typeof e.withCredentials && (e.withCredentials = !1), this._mediaDataSource = e, this._currentSegmentIndex = 0;
                    var i = 0;
                    this._mediaDataSource.segments.forEach(function (n) {
                      n.timestampBase = i, i += n.duration, n.cors = e.cors, n.withCredentials = e.withCredentials, t.referrerPolicy && (n.referrerPolicy = t.referrerPolicy);
                    }), isNaN(i) || this._mediaDataSource.duration === i || (this._mediaDataSource.duration = i), this._mediaInfo = null, this._demuxer = null, this._remuxer = null, this._ioctl = null, this._pendingSeekTime = null, this._pendingResolveSeekPoint = null, this._statisticsReporter = null;
                  }

                  return e.prototype.destroy = function () {
                    this._mediaInfo = null, this._mediaDataSource = null, this._statisticsReporter && this._disableStatisticsReporter(), this._ioctl && (this._ioctl.destroy(), this._ioctl = null), this._demuxer && (this._demuxer.destroy(), this._demuxer = null), this._remuxer && (this._remuxer.destroy(), this._remuxer = null), this._emitter.removeAllListeners(), this._emitter = null;
                  }, e.prototype.on = function (e, t) {
                    this._emitter.addListener(e, t);
                  }, e.prototype.off = function (e, t) {
                    this._emitter.removeListener(e, t);
                  }, e.prototype.start = function () {
                    this._loadSegment(0), this._enableStatisticsReporter();
                  }, e.prototype._loadSegment = function (e, t) {
                    this._currentSegmentIndex = e;
                    var i = this._mediaDataSource.segments[e],
                        n = this._ioctl = new h.default(i, this._config, e);
                    n.onError = this._onIOException.bind(this), n.onSeeked = this._onIOSeeked.bind(this), n.onComplete = this._onIOComplete.bind(this), n.onRedirect = this._onIORedirect.bind(this), n.onRecoveredEarlyEof = this._onIORecoveredEarlyEof.bind(this), t ? this._demuxer.bindDataSource(this._ioctl) : n.onDataArrival = this._onInitChunkArrival.bind(this), n.open(t);
                  }, e.prototype.stop = function () {
                    this._internalAbort(), this._disableStatisticsReporter();
                  }, e.prototype._internalAbort = function () {
                    this._ioctl && (this._ioctl.destroy(), this._ioctl = null);
                  }, e.prototype.pause = function () {
                    this._ioctl && this._ioctl.isWorking() && (this._ioctl.pause(), this._disableStatisticsReporter());
                  }, e.prototype.resume = function () {
                    this._ioctl && this._ioctl.isPaused() && (this._ioctl.resume(), this._enableStatisticsReporter());
                  }, e.prototype.seek = function (e) {
                    if (null != this._mediaInfo && this._mediaInfo.isSeekable()) {
                      var t = this._searchSegmentIndexContains(e);

                      if (t === this._currentSegmentIndex) {
                        var i = this._mediaInfo.segments[t];
                        if (null == i) this._pendingSeekTime = e;else {
                          var n = i.getNearestKeyframe(e);
                          this._remuxer.seek(n.milliseconds), this._ioctl.seek(n.fileposition), this._pendingResolveSeekPoint = n.milliseconds;
                        }
                      } else {
                        var r = this._mediaInfo.segments[t];
                        null == r ? (this._pendingSeekTime = e, this._internalAbort(), this._remuxer.seek(), this._remuxer.insertDiscontinuity(), this._loadSegment(t)) : (n = r.getNearestKeyframe(e), this._internalAbort(), this._remuxer.seek(e), this._remuxer.insertDiscontinuity(), this._demuxer.resetMediaInfo(), this._demuxer.timestampBase = this._mediaDataSource.segments[t].timestampBase, this._loadSegment(t, n.fileposition), this._pendingResolveSeekPoint = n.milliseconds, this._reportSegmentMediaInfo(t));
                      }

                      this._enableStatisticsReporter();
                    }
                  }, e.prototype._searchSegmentIndexContains = function (e) {
                    for (var t = this._mediaDataSource.segments, i = t.length - 1, n = 0; n < t.length; n++) if (e < t[n].timestampBase) {
                      i = n - 1;
                      break;
                    }

                    return i;
                  }, e.prototype._onInitChunkArrival = function (e, t) {
                    var i = this,
                        n = null,
                        r = 0;
                    if (t > 0) this._demuxer.bindDataSource(this._ioctl), this._demuxer.timestampBase = this._mediaDataSource.segments[this._currentSegmentIndex].timestampBase, r = this._demuxer.parseChunks(e, t);else if ((n = u.default.probe(e)).match) {
                      this._demuxer = new u.default(n, this._config), this._remuxer || (this._remuxer = new l.default(this._config));
                      var o = this._mediaDataSource;
                      null == o.duration || isNaN(o.duration) || (this._demuxer.overridedDuration = o.duration), "boolean" == typeof o.hasAudio && (this._demuxer.overridedHasAudio = o.hasAudio), "boolean" == typeof o.hasVideo && (this._demuxer.overridedHasVideo = o.hasVideo), this._demuxer.timestampBase = o.segments[this._currentSegmentIndex].timestampBase, this._demuxer.onError = this._onDemuxException.bind(this), this._demuxer.onMediaInfo = this._onMediaInfo.bind(this), this._demuxer.onMetaDataArrived = this._onMetaDataArrived.bind(this), this._demuxer.onScriptDataArrived = this._onScriptDataArrived.bind(this), this._remuxer.bindDataSource(this._demuxer.bindDataSource(this._ioctl)), this._remuxer.onInitSegment = this._onRemuxerInitSegmentArrival.bind(this), this._remuxer.onMediaSegment = this._onRemuxerMediaSegmentArrival.bind(this), r = this._demuxer.parseChunks(e, t);
                    } else n = null, s.default.e(this.TAG, "Non-FLV, Unsupported media type!"), Promise.resolve().then(function () {
                      i._internalAbort();
                    }), this._emitter.emit(c.default.DEMUX_ERROR, d.default.FORMAT_UNSUPPORTED, "Non-FLV, Unsupported media type"), r = 0;
                    return r;
                  }, e.prototype._onMediaInfo = function (e) {
                    var t = this;
                    null == this._mediaInfo && (this._mediaInfo = Object.assign({}, e), this._mediaInfo.keyframesIndex = null, this._mediaInfo.segments = [], this._mediaInfo.segmentCount = this._mediaDataSource.segments.length, Object.setPrototypeOf(this._mediaInfo, a.default.prototype));
                    var i = Object.assign({}, e);
                    Object.setPrototypeOf(i, a.default.prototype), this._mediaInfo.segments[this._currentSegmentIndex] = i, this._reportSegmentMediaInfo(this._currentSegmentIndex), null != this._pendingSeekTime && Promise.resolve().then(function () {
                      var e = t._pendingSeekTime;
                      t._pendingSeekTime = null, t.seek(e);
                    });
                  }, e.prototype._onMetaDataArrived = function (e) {
                    this._emitter.emit(c.default.METADATA_ARRIVED, e);
                  }, e.prototype._onScriptDataArrived = function (e) {
                    this._emitter.emit(c.default.SCRIPTDATA_ARRIVED, e);
                  }, e.prototype._onIOSeeked = function () {
                    this._remuxer.insertDiscontinuity();
                  }, e.prototype._onIOComplete = function (e) {
                    var t = e + 1;
                    t < this._mediaDataSource.segments.length ? (this._internalAbort(), this._remuxer.flushStashedSamples(), this._loadSegment(t)) : (this._remuxer.flushStashedSamples(), this._emitter.emit(c.default.LOADING_COMPLETE), this._disableStatisticsReporter());
                  }, e.prototype._onIORedirect = function (e) {
                    var t = this._ioctl.extraData;
                    this._mediaDataSource.segments[t].redirectedURL = e;
                  }, e.prototype._onIORecoveredEarlyEof = function () {
                    this._emitter.emit(c.default.RECOVERED_EARLY_EOF);
                  }, e.prototype._onIOException = function (e, t) {
                    s.default.e(this.TAG, "IOException: type = " + e + ", code = " + t.code + ", msg = " + t.msg), this._emitter.emit(c.default.IO_ERROR, e, t), this._disableStatisticsReporter();
                  }, e.prototype._onDemuxException = function (e, t) {
                    s.default.e(this.TAG, "DemuxException: type = " + e + ", info = " + t), this._emitter.emit(c.default.DEMUX_ERROR, e, t);
                  }, e.prototype._onRemuxerInitSegmentArrival = function (e, t) {
                    this._emitter.emit(c.default.INIT_SEGMENT, e, t);
                  }, e.prototype._onRemuxerMediaSegmentArrival = function (e, t) {
                    if (null == this._pendingSeekTime && (this._emitter.emit(c.default.MEDIA_SEGMENT, e, t), null != this._pendingResolveSeekPoint && "video" === e)) {
                      var i = t.info.syncPoints,
                          n = this._pendingResolveSeekPoint;
                      this._pendingResolveSeekPoint = null, o.default.safari && i.length > 0 && i[0].originalDts === n && (n = i[0].pts), this._emitter.emit(c.default.RECOMMEND_SEEKPOINT, n);
                    }
                  }, e.prototype._enableStatisticsReporter = function () {
                    null == this._statisticsReporter && (this._statisticsReporter = self.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval));
                  }, e.prototype._disableStatisticsReporter = function () {
                    this._statisticsReporter && (self.clearInterval(this._statisticsReporter), this._statisticsReporter = null);
                  }, e.prototype._reportSegmentMediaInfo = function (e) {
                    var t = this._mediaInfo.segments[e],
                        i = Object.assign({}, t);
                    i.duration = this._mediaInfo.duration, i.segmentCount = this._mediaInfo.segmentCount, delete i.segments, delete i.keyframesIndex, this._emitter.emit(c.default.MEDIA_INFO, i);
                  }, e.prototype._reportStatisticsInfo = function () {
                    var e = {};
                    e.url = this._ioctl.currentURL, e.hasRedirect = this._ioctl.hasRedirect, e.hasRedirect && (e.redirectedURL = this._ioctl.currentRedirectedURL), e.speed = this._ioctl.currentSpeed, e.loaderType = this._ioctl.loaderType, e.currentSegmentIndex = this._currentSegmentIndex, e.totalSegmentCount = this._mediaDataSource.segments.length, this._emitter.emit(c.default.STATISTICS_INFO, e);
                  }, e;
                }();
              },
              "./src/core/transmuxing-events.js":
              /*!****************************************!*\
              	  !*** ./src/core/transmuxing-events.js ***!
              	  \****************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });
                const n = {
                  IO_ERROR: "io_error",
                  DEMUX_ERROR: "demux_error",
                  INIT_SEGMENT: "init_segment",
                  MEDIA_SEGMENT: "media_segment",
                  LOADING_COMPLETE: "loading_complete",
                  RECOVERED_EARLY_EOF: "recovered_early_eof",
                  MEDIA_INFO: "media_info",
                  METADATA_ARRIVED: "metadata_arrived",
                  SCRIPTDATA_ARRIVED: "scriptdata_arrived",
                  STATISTICS_INFO: "statistics_info",
                  RECOMMEND_SEEKPOINT: "recommend_seekpoint"
                };
              },
              "./src/core/transmuxing-worker.js":
              /*!****************************************!*\
              	  !*** ./src/core/transmuxing-worker.js ***!
              	  \****************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => a
                });
                var n = i(
                /*! ../utils/logging-control.js */
                "./src/utils/logging-control.js"),
                    r = i(
                /*! ../utils/polyfill.js */
                "./src/utils/polyfill.js"),
                    s = i(
                /*! ./transmuxing-controller.js */
                "./src/core/transmuxing-controller.js"),
                    o = i(
                /*! ./transmuxing-events.js */
                "./src/core/transmuxing-events.js");

                const a = function (e) {
                  var t = null,
                      i = function (t, i) {
                    e.postMessage({
                      msg: "logcat_callback",
                      data: {
                        type: t,
                        logcat: i
                      }
                    });
                  }.bind(this);

                  function a(t, i) {
                    var n = {
                      msg: o.default.INIT_SEGMENT,
                      data: {
                        type: t,
                        data: i
                      }
                    };
                    e.postMessage(n, [i.data]);
                  }

                  function u(t, i) {
                    var n = {
                      msg: o.default.MEDIA_SEGMENT,
                      data: {
                        type: t,
                        data: i
                      }
                    };
                    e.postMessage(n, [i.data]);
                  }

                  function l() {
                    var t = {
                      msg: o.default.LOADING_COMPLETE
                    };
                    e.postMessage(t);
                  }

                  function d() {
                    var t = {
                      msg: o.default.RECOVERED_EARLY_EOF
                    };
                    e.postMessage(t);
                  }

                  function h(t) {
                    var i = {
                      msg: o.default.MEDIA_INFO,
                      data: t
                    };
                    e.postMessage(i);
                  }

                  function c(t) {
                    var i = {
                      msg: o.default.METADATA_ARRIVED,
                      data: t
                    };
                    e.postMessage(i);
                  }

                  function f(t) {
                    var i = {
                      msg: o.default.SCRIPTDATA_ARRIVED,
                      data: t
                    };
                    e.postMessage(i);
                  }

                  function _(t) {
                    var i = {
                      msg: o.default.STATISTICS_INFO,
                      data: t
                    };
                    e.postMessage(i);
                  }

                  function p(t, i) {
                    e.postMessage({
                      msg: o.default.IO_ERROR,
                      data: {
                        type: t,
                        info: i
                      }
                    });
                  }

                  function m(t, i) {
                    e.postMessage({
                      msg: o.default.DEMUX_ERROR,
                      data: {
                        type: t,
                        info: i
                      }
                    });
                  }

                  function g(t) {
                    e.postMessage({
                      msg: o.default.RECOMMEND_SEEKPOINT,
                      data: t
                    });
                  }

                  r.default.install(), e.addEventListener("message", function (r) {
                    switch (r.data.cmd) {
                      case "init":
                        (t = new s.default(r.data.param[0], r.data.param[1])).on(o.default.IO_ERROR, p.bind(this)), t.on(o.default.DEMUX_ERROR, m.bind(this)), t.on(o.default.INIT_SEGMENT, a.bind(this)), t.on(o.default.MEDIA_SEGMENT, u.bind(this)), t.on(o.default.LOADING_COMPLETE, l.bind(this)), t.on(o.default.RECOVERED_EARLY_EOF, d.bind(this)), t.on(o.default.MEDIA_INFO, h.bind(this)), t.on(o.default.METADATA_ARRIVED, c.bind(this)), t.on(o.default.SCRIPTDATA_ARRIVED, f.bind(this)), t.on(o.default.STATISTICS_INFO, _.bind(this)), t.on(o.default.RECOMMEND_SEEKPOINT, g.bind(this));
                        break;

                      case "destroy":
                        t && (t.destroy(), t = null), e.postMessage({
                          msg: "destroyed"
                        });
                        break;

                      case "start":
                        t.start();
                        break;

                      case "stop":
                        t.stop();
                        break;

                      case "seek":
                        t.seek(r.data.param);
                        break;

                      case "pause":
                        t.pause();
                        break;

                      case "resume":
                        t.resume();
                        break;

                      case "logging_config":
                        var v = r.data.param;
                        n.default.applyConfig(v), !0 === v.enableCallback ? n.default.addLogListener(i) : n.default.removeLogListener(i);
                    }
                  });
                };
              },
              "./src/demux/amf-parser.js":
              /*!*********************************!*\
              	  !*** ./src/demux/amf-parser.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => u
                });
                var n,
                    r = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    s = i(
                /*! ../utils/utf8-conv.js */
                "./src/utils/utf8-conv.js"),
                    o = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    a = (n = new ArrayBuffer(2), new DataView(n).setInt16(0, 256, !0), 256 === new Int16Array(n)[0]);

                const u = function () {
                  function e() {}

                  return e.parseScriptData = function (t, i, n) {
                    var s = {};

                    try {
                      var o = e.parseValue(t, i, n),
                          a = e.parseValue(t, i + o.size, n - o.size);
                      s[o.data] = a.data;
                    } catch (e) {
                      r.default.e("AMF", e.toString());
                    }

                    return s;
                  }, e.parseObject = function (t, i, n) {
                    if (n < 3) throw new o.IllegalStateException("Data not enough when parse ScriptDataObject");
                    var r = e.parseString(t, i, n),
                        s = e.parseValue(t, i + r.size, n - r.size),
                        a = s.objectEnd;
                    return {
                      data: {
                        name: r.data,
                        value: s.data
                      },
                      size: r.size + s.size,
                      objectEnd: a
                    };
                  }, e.parseVariable = function (t, i, n) {
                    return e.parseObject(t, i, n);
                  }, e.parseString = function (e, t, i) {
                    if (i < 2) throw new o.IllegalStateException("Data not enough when parse String");
                    var n = new DataView(e, t, i).getUint16(0, !a);
                    return {
                      data: n > 0 ? (0, s.default)(new Uint8Array(e, t + 2, n)) : "",
                      size: 2 + n
                    };
                  }, e.parseLongString = function (e, t, i) {
                    if (i < 4) throw new o.IllegalStateException("Data not enough when parse LongString");
                    var n = new DataView(e, t, i).getUint32(0, !a);
                    return {
                      data: n > 0 ? (0, s.default)(new Uint8Array(e, t + 4, n)) : "",
                      size: 4 + n
                    };
                  }, e.parseDate = function (e, t, i) {
                    if (i < 10) throw new o.IllegalStateException("Data size invalid when parse Date");
                    var n = new DataView(e, t, i),
                        r = n.getFloat64(0, !a),
                        s = n.getInt16(8, !a);
                    return {
                      data: new Date(r += 60 * s * 1e3),
                      size: 10
                    };
                  }, e.parseValue = function (t, i, n) {
                    if (n < 1) throw new o.IllegalStateException("Data not enough when parse Value");
                    var s,
                        u = new DataView(t, i, n),
                        l = 1,
                        d = u.getUint8(0),
                        h = !1;

                    try {
                      switch (d) {
                        case 0:
                          s = u.getFloat64(1, !a), l += 8;
                          break;

                        case 1:
                          s = !!u.getUint8(1), l += 1;
                          break;

                        case 2:
                          var c = e.parseString(t, i + 1, n - 1);
                          s = c.data, l += c.size;
                          break;

                        case 3:
                          s = {};
                          var f = 0;

                          for (9 == (16777215 & u.getUint32(n - 4, !a)) && (f = 3); l < n - 4;) {
                            var _ = e.parseObject(t, i + l, n - l - f);

                            if (_.objectEnd) break;
                            s[_.data.name] = _.data.value, l += _.size;
                          }

                          l <= n - 3 && 9 == (16777215 & u.getUint32(l - 1, !a)) && (l += 3);
                          break;

                        case 8:
                          for (s = {}, l += 4, f = 0, 9 == (16777215 & u.getUint32(n - 4, !a)) && (f = 3); l < n - 8;) {
                            var p = e.parseVariable(t, i + l, n - l - f);
                            if (p.objectEnd) break;
                            s[p.data.name] = p.data.value, l += p.size;
                          }

                          l <= n - 3 && 9 == (16777215 & u.getUint32(l - 1, !a)) && (l += 3);
                          break;

                        case 9:
                          s = void 0, l = 1, h = !0;
                          break;

                        case 10:
                          s = [];
                          var m = u.getUint32(1, !a);
                          l += 4;

                          for (var g = 0; g < m; g++) {
                            var v = e.parseValue(t, i + l, n - l);
                            s.push(v.data), l += v.size;
                          }

                          break;

                        case 11:
                          var y = e.parseDate(t, i + 1, n - 1);
                          s = y.data, l += y.size;
                          break;

                        case 12:
                          var E = e.parseString(t, i + 1, n - 1);
                          s = E.data, l += E.size;
                          break;

                        default:
                          l = n, r.default.w("AMF", "Unsupported AMF value type " + d);
                      }
                    } catch (e) {
                      r.default.e("AMF", e.toString());
                    }

                    return {
                      data: s,
                      size: l,
                      objectEnd: h
                    };
                  }, e;
                }();
              },
              "./src/demux/demux-errors.js":
              /*!***********************************!*\
              	  !*** ./src/demux/demux-errors.js ***!
              	  \***********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });
                const n = {
                  OK: "OK",
                  FORMAT_ERROR: "FormatError",
                  FORMAT_UNSUPPORTED: "FormatUnsupported",
                  CODEC_UNSUPPORTED: "CodecUnsupported"
                };
              },
              "./src/demux/exp-golomb.js":
              /*!*********************************!*\
              	  !*** ./src/demux/exp-golomb.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => r
                });
                var n = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const r = function () {
                  function e(e) {
                    this.TAG = "ExpGolomb", this._buffer = e, this._buffer_index = 0, this._total_bytes = e.byteLength, this._total_bits = 8 * e.byteLength, this._current_word = 0, this._current_word_bits_left = 0;
                  }

                  return e.prototype.destroy = function () {
                    this._buffer = null;
                  }, e.prototype._fillCurrentWord = function () {
                    var e = this._total_bytes - this._buffer_index;
                    if (e <= 0) throw new n.IllegalStateException("ExpGolomb: _fillCurrentWord() but no bytes available");
                    var t = Math.min(4, e),
                        i = new Uint8Array(4);
                    i.set(this._buffer.subarray(this._buffer_index, this._buffer_index + t)), this._current_word = new DataView(i.buffer).getUint32(0, !1), this._buffer_index += t, this._current_word_bits_left = 8 * t;
                  }, e.prototype.readBits = function (e) {
                    if (e > 32) throw new n.InvalidArgumentException("ExpGolomb: readBits() bits exceeded max 32bits!");

                    if (e <= this._current_word_bits_left) {
                      var t = this._current_word >>> 32 - e;
                      return this._current_word <<= e, this._current_word_bits_left -= e, t;
                    }

                    var i = this._current_word_bits_left ? this._current_word : 0;
                    i >>>= 32 - this._current_word_bits_left;
                    var r = e - this._current_word_bits_left;

                    this._fillCurrentWord();

                    var s = Math.min(r, this._current_word_bits_left),
                        o = this._current_word >>> 32 - s;
                    return this._current_word <<= s, this._current_word_bits_left -= s, i = i << s | o;
                  }, e.prototype.readBool = function () {
                    return 1 === this.readBits(1);
                  }, e.prototype.readByte = function () {
                    return this.readBits(8);
                  }, e.prototype._skipLeadingZero = function () {
                    var e;

                    for (e = 0; e < this._current_word_bits_left; e++) if (0 != (this._current_word & 2147483648 >>> e)) return this._current_word <<= e, this._current_word_bits_left -= e, e;

                    return this._fillCurrentWord(), e + this._skipLeadingZero();
                  }, e.prototype.readUEG = function () {
                    var e = this._skipLeadingZero();

                    return this.readBits(e + 1) - 1;
                  }, e.prototype.readSEG = function () {
                    var e = this.readUEG();
                    return 1 & e ? e + 1 >>> 1 : -1 * (e >>> 1);
                  }, e;
                }();
              },
              "./src/demux/flv-demuxer.js":
              /*!**********************************!*\
              	  !*** ./src/demux/flv-demuxer.js ***!
              	  \**********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => l
                });
                var n = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    r = i(
                /*! ./amf-parser.js */
                "./src/demux/amf-parser.js"),
                    s = i(
                /*! ./sps-parser.js */
                "./src/demux/sps-parser.js"),
                    o = i(
                /*! ./demux-errors.js */
                "./src/demux/demux-errors.js"),
                    a = i(
                /*! ../core/media-info.js */
                "./src/core/media-info.js"),
                    u = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const l = function () {
                  function e(e, t) {
                    var i;
                    this.TAG = "FLVDemuxer", this._config = t, this._onError = null, this._onMediaInfo = null, this._onMetaDataArrived = null, this._onScriptDataArrived = null, this._onTrackMetadata = null, this._onDataAvailable = null, this._dataOffset = e.dataOffset, this._firstParse = !0, this._dispatch = !1, this._hasAudio = e.hasAudioTrack, this._hasVideo = e.hasVideoTrack, this._hasAudioFlagOverrided = !1, this._hasVideoFlagOverrided = !1, this._audioInitialMetadataDispatched = !1, this._videoInitialMetadataDispatched = !1, this._mediaInfo = new a.default(), this._mediaInfo.hasAudio = this._hasAudio, this._mediaInfo.hasVideo = this._hasVideo, this._metadata = null, this._audioMetadata = null, this._videoMetadata = null, this._prevVideoTagTimestamp = 0, this._prevAudioTagTimestamp = 0, this._naluLengthSize = 4, this._timestampBase = 0, this._timescale = 1e3, this._duration = 0, this._durationOverrided = !1, this._referenceFrameRate = {
                      fixed: !0,
                      fps: 23.976,
                      fps_num: 23976,
                      fps_den: 1e3
                    }, this._flvSoundRateTable = [5500, 11025, 22050, 44100, 48e3], this._mpegSamplingRates = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350], this._mpegAudioV10SampleRateTable = [44100, 48e3, 32e3, 0], this._mpegAudioV20SampleRateTable = [22050, 24e3, 16e3, 0], this._mpegAudioV25SampleRateTable = [11025, 12e3, 8e3, 0], this._mpegAudioL1BitRateTable = [0, 32, 64, 96, 128, 160, 192, 224, 256, 288, 320, 352, 384, 416, 448, -1], this._mpegAudioL2BitRateTable = [0, 32, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, 384, -1], this._mpegAudioL3BitRateTable = [0, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 256, 320, -1], this._videoTrack = {
                      type: "video",
                      id: 1,
                      sequenceNumber: 0,
                      samples: [],
                      length: 0
                    }, this._audioTrack = {
                      type: "audio",
                      id: 2,
                      sequenceNumber: 0,
                      samples: [],
                      length: 0
                    }, this._littleEndian = (i = new ArrayBuffer(2), new DataView(i).setInt16(0, 256, !0), 256 === new Int16Array(i)[0]);
                  }

                  return e.prototype.destroy = function () {
                    this._mediaInfo = null, this._metadata = null, this._audioMetadata = null, this._videoMetadata = null, this._videoTrack = null, this._audioTrack = null, this._prevVideoTagTimestamp = 0, this._prevAudioTagTimestamp = 0, this._onError = null, this._onMediaInfo = null, this._onMetaDataArrived = null, this._onScriptDataArrived = null, this._onTrackMetadata = null, this._onDataAvailable = null;
                  }, e.probe = function (e) {
                    var t = new Uint8Array(e),
                        i = {
                      match: !1
                    };
                    if (70 !== t[0] || 76 !== t[1] || 86 !== t[2] || 1 !== t[3]) return i;
                    var n,
                        r,
                        s = (4 & t[4]) >>> 2 != 0,
                        o = 0 != (1 & t[4]),
                        a = (n = t)[r = 5] << 24 | n[r + 1] << 16 | n[r + 2] << 8 | n[r + 3];
                    return a < 9 ? i : {
                      match: !0,
                      consumed: a,
                      dataOffset: a,
                      hasAudioTrack: s,
                      hasVideoTrack: o
                    };
                  }, e.prototype.bindDataSource = function (e) {
                    return e.onDataArrival = this.parseChunks.bind(this), this;
                  }, Object.defineProperty(e.prototype, "onTrackMetadata", {
                    get: function () {
                      return this._onTrackMetadata;
                    },
                    set: function (e) {
                      this._onTrackMetadata = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onMediaInfo", {
                    get: function () {
                      return this._onMediaInfo;
                    },
                    set: function (e) {
                      this._onMediaInfo = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onMetaDataArrived", {
                    get: function () {
                      return this._onMetaDataArrived;
                    },
                    set: function (e) {
                      this._onMetaDataArrived = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onScriptDataArrived", {
                    get: function () {
                      return this._onScriptDataArrived;
                    },
                    set: function (e) {
                      this._onScriptDataArrived = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onError", {
                    get: function () {
                      return this._onError;
                    },
                    set: function (e) {
                      this._onError = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onDataAvailable", {
                    get: function () {
                      return this._onDataAvailable;
                    },
                    set: function (e) {
                      this._onDataAvailable = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "timestampBase", {
                    get: function () {
                      return this._timestampBase;
                    },
                    set: function (e) {
                      this._timestampBase = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "overridedDuration", {
                    get: function () {
                      return this._duration;
                    },
                    set: function (e) {
                      this._durationOverrided = !0, this._duration = e, this._mediaInfo.duration = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "overridedHasAudio", {
                    set: function (e) {
                      this._hasAudioFlagOverrided = !0, this._hasAudio = e, this._mediaInfo.hasAudio = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "overridedHasVideo", {
                    set: function (e) {
                      this._hasVideoFlagOverrided = !0, this._hasVideo = e, this._mediaInfo.hasVideo = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype.resetMediaInfo = function () {
                    this._mediaInfo = new a.default();
                  }, e.prototype._isInitialMetadataDispatched = function () {
                    return this._hasAudio && this._hasVideo ? this._audioInitialMetadataDispatched && this._videoInitialMetadataDispatched : this._hasAudio && !this._hasVideo ? this._audioInitialMetadataDispatched : !(this._hasAudio || !this._hasVideo) && this._videoInitialMetadataDispatched;
                  }, e.prototype.parseChunks = function (t, i) {
                    if (!(this._onError && this._onMediaInfo && this._onTrackMetadata && this._onDataAvailable)) throw new u.IllegalStateException("Flv: onError & onMediaInfo & onTrackMetadata & onDataAvailable callback must be specified");
                    var r = 0,
                        s = this._littleEndian;

                    if (0 === i) {
                      if (!(t.byteLength > 13)) return 0;
                      r = e.probe(t).dataOffset;
                    }

                    for (this._firstParse && (this._firstParse = !1, i + r !== this._dataOffset && n.default.w(this.TAG, "First time parsing but chunk byteStart invalid!"), 0 !== (o = new DataView(t, r)).getUint32(0, !s) && n.default.w(this.TAG, "PrevTagSize0 !== 0 !!!"), r += 4); r < t.byteLength;) {
                      this._dispatch = !0;
                      var o = new DataView(t, r);
                      if (r + 11 + 4 > t.byteLength) break;
                      var a = o.getUint8(0),
                          l = 16777215 & o.getUint32(0, !s);
                      if (r + 11 + l + 4 > t.byteLength) break;

                      if (8 === a || 9 === a || 18 === a) {
                        var d = o.getUint8(4),
                            h = o.getUint8(5),
                            c = o.getUint8(6) | h << 8 | d << 16 | o.getUint8(7) << 24;

                        if (8 === a && c < this._prevAudioTagTimestamp || 9 === a && c < this._prevVideoTagTimestamp) {
                          var f = 8 === a ? this._prevAudioTagTimestamp : this._prevVideoTagTimestamp;
                          n.default.w(this.TAG, "Tag timestamp " + c + " is smaller than previous tag timestamp " + f + ", skipped"), r += 11 + l + 4;
                        } else {
                          0 != (16777215 & o.getUint32(7, !s)) && n.default.w(this.TAG, "Meet tag which has StreamID != 0!");

                          var _ = r + 11;

                          switch (a) {
                            case 8:
                              this._prevAudioTagTimestamp = c, this._parseAudioData(t, _, l, c);
                              break;

                            case 9:
                              this._prevVideoTagTimestamp = c, this._parseVideoData(t, _, l, c, i + r);
                              break;

                            case 18:
                              this._parseScriptData(t, _, l);

                          }

                          var p = o.getUint32(11 + l, !s);
                          p !== 11 + l && n.default.w(this.TAG, "Invalid PrevTagSize " + p), r += 11 + l + 4;
                        }
                      } else n.default.w(this.TAG, "Unsupported tag type " + a + ", skipped"), r += 11 + l + 4;
                    }

                    return this._isInitialMetadataDispatched() && this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack), r;
                  }, e.prototype._parseScriptData = function (e, t, i) {
                    var s = r.default.parseScriptData(e, t, i);

                    if (s.hasOwnProperty("onMetaData")) {
                      if (null == s.onMetaData || "object" != typeof s.onMetaData) return void n.default.w(this.TAG, "Invalid onMetaData structure!");
                      this._metadata && n.default.w(this.TAG, "Found another onMetaData tag!"), this._metadata = s;
                      var o = this._metadata.onMetaData;

                      if (this._onMetaDataArrived && this._onMetaDataArrived(Object.assign({}, o)), "boolean" == typeof o.hasAudio && !1 === this._hasAudioFlagOverrided && (this._hasAudio = o.hasAudio, this._mediaInfo.hasAudio = this._hasAudio), "boolean" == typeof o.hasVideo && !1 === this._hasVideoFlagOverrided && (this._hasVideo = o.hasVideo, this._mediaInfo.hasVideo = this._hasVideo), "number" == typeof o.audiodatarate && (this._mediaInfo.audioDataRate = o.audiodatarate), "number" == typeof o.videodatarate && (this._mediaInfo.videoDataRate = o.videodatarate), "number" == typeof o.width && (this._mediaInfo.width = o.width), "number" == typeof o.height && (this._mediaInfo.height = o.height), "number" == typeof o.duration) {
                        if (!this._durationOverrided) {
                          var a = Math.floor(o.duration * this._timescale);
                          this._duration = a, this._mediaInfo.duration = a;
                        }
                      } else this._mediaInfo.duration = 0;

                      if ("number" == typeof o.framerate) {
                        var u = Math.floor(1e3 * o.framerate);

                        if (u > 0) {
                          var l = u / 1e3;
                          this._referenceFrameRate.fixed = !0, this._referenceFrameRate.fps = l, this._referenceFrameRate.fps_num = u, this._referenceFrameRate.fps_den = 1e3, this._mediaInfo.fps = l;
                        }
                      }

                      if ("object" == typeof o.keyframes) {
                        this._mediaInfo.hasKeyframesIndex = !0;
                        var d = o.keyframes;
                        this._mediaInfo.keyframesIndex = this._parseKeyframesIndex(d), o.keyframes = null;
                      } else this._mediaInfo.hasKeyframesIndex = !1;

                      this._dispatch = !1, this._mediaInfo.metadata = o, n.default.v(this.TAG, "Parsed onMetaData"), this._mediaInfo.isComplete() && this._onMediaInfo(this._mediaInfo);
                    }

                    Object.keys(s).length > 0 && this._onScriptDataArrived && this._onScriptDataArrived(Object.assign({}, s));
                  }, e.prototype._parseKeyframesIndex = function (e) {
                    for (var t = [], i = [], n = 1; n < e.times.length; n++) {
                      var r = this._timestampBase + Math.floor(1e3 * e.times[n]);
                      t.push(r), i.push(e.filepositions[n]);
                    }

                    return {
                      times: t,
                      filepositions: i
                    };
                  }, e.prototype._parseAudioData = function (e, t, i, r) {
                    if (i <= 1) n.default.w(this.TAG, "Flv: Invalid audio packet, missing SoundData payload!");else if (!0 !== this._hasAudioFlagOverrided || !1 !== this._hasAudio) {
                      this._littleEndian;
                      var s = new DataView(e, t, i).getUint8(0),
                          a = s >>> 4;

                      if (2 === a || 10 === a) {
                        var u = 0,
                            l = (12 & s) >>> 2;

                        if (l >= 0 && l <= 4) {
                          u = this._flvSoundRateTable[l];
                          var d = 1 & s,
                              h = this._audioMetadata,
                              c = this._audioTrack;

                          if (h || (!1 === this._hasAudio && !1 === this._hasAudioFlagOverrided && (this._hasAudio = !0, this._mediaInfo.hasAudio = !0), (h = this._audioMetadata = {}).type = "audio", h.id = c.id, h.timescale = this._timescale, h.duration = this._duration, h.audioSampleRate = u, h.channelCount = 0 === d ? 1 : 2), 10 === a) {
                            var f = this._parseAACAudioData(e, t + 1, i - 1);

                            if (null == f) return;

                            if (0 === f.packetType) {
                              h.config && n.default.w(this.TAG, "Found another AudioSpecificConfig!");
                              var _ = f.data;
                              h.audioSampleRate = _.samplingRate, h.channelCount = _.channelCount, h.codec = _.codec, h.originalCodec = _.originalCodec, h.config = _.config, h.refSampleDuration = 1024 / h.audioSampleRate * h.timescale, n.default.v(this.TAG, "Parsed AudioSpecificConfig"), this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : this._audioInitialMetadataDispatched = !0, this._dispatch = !1, this._onTrackMetadata("audio", h), (g = this._mediaInfo).audioCodec = h.originalCodec, g.audioSampleRate = h.audioSampleRate, g.audioChannelCount = h.channelCount, g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"', g.isComplete() && this._onMediaInfo(g);
                            } else if (1 === f.packetType) {
                              var p = this._timestampBase + r,
                                  m = {
                                unit: f.data,
                                length: f.data.byteLength,
                                dts: p,
                                pts: p
                              };
                              c.samples.push(m), c.length += f.data.length;
                            } else n.default.e(this.TAG, "Flv: Unsupported AAC data type " + f.packetType);
                          } else if (2 === a) {
                            if (!h.codec) {
                              var g;
                              if (null == (_ = this._parseMP3AudioData(e, t + 1, i - 1, !0))) return;
                              h.audioSampleRate = _.samplingRate, h.channelCount = _.channelCount, h.codec = _.codec, h.originalCodec = _.originalCodec, h.refSampleDuration = 1152 / h.audioSampleRate * h.timescale, n.default.v(this.TAG, "Parsed MPEG Audio Frame Header"), this._audioInitialMetadataDispatched = !0, this._onTrackMetadata("audio", h), (g = this._mediaInfo).audioCodec = h.codec, g.audioSampleRate = h.audioSampleRate, g.audioChannelCount = h.channelCount, g.audioDataRate = _.bitRate, g.hasVideo ? null != g.videoCodec && (g.mimeType = 'video/x-flv; codecs="' + g.videoCodec + "," + g.audioCodec + '"') : g.mimeType = 'video/x-flv; codecs="' + g.audioCodec + '"', g.isComplete() && this._onMediaInfo(g);
                            }

                            var v = this._parseMP3AudioData(e, t + 1, i - 1, !1);

                            if (null == v) return;
                            p = this._timestampBase + r;
                            var y = {
                              unit: v,
                              length: v.byteLength,
                              dts: p,
                              pts: p
                            };
                            c.samples.push(y), c.length += v.length;
                          }
                        } else this._onError(o.default.FORMAT_ERROR, "Flv: Invalid audio sample rate idx: " + l);
                      } else this._onError(o.default.CODEC_UNSUPPORTED, "Flv: Unsupported audio codec idx: " + a);
                    }
                  }, e.prototype._parseAACAudioData = function (e, t, i) {
                    if (!(i <= 1)) {
                      var r = {},
                          s = new Uint8Array(e, t, i);
                      return r.packetType = s[0], 0 === s[0] ? r.data = this._parseAACAudioSpecificConfig(e, t + 1, i - 1) : r.data = s.subarray(1), r;
                    }

                    n.default.w(this.TAG, "Flv: Invalid AAC packet, missing AACPacketType or/and Data!");
                  }, e.prototype._parseAACAudioSpecificConfig = function (e, t, i) {
                    var n,
                        r,
                        s = new Uint8Array(e, t, i),
                        a = null,
                        u = 0,
                        l = null;
                    if (u = n = s[0] >>> 3, (r = (7 & s[0]) << 1 | s[1] >>> 7) < 0 || r >= this._mpegSamplingRates.length) this._onError(o.default.FORMAT_ERROR, "Flv: AAC invalid sampling frequency index!");else {
                      var d = this._mpegSamplingRates[r],
                          h = (120 & s[1]) >>> 3;

                      if (!(h < 0 || h >= 8)) {
                        5 === u && (l = (7 & s[1]) << 1 | s[2] >>> 7, s[2]);
                        var c = self.navigator.userAgent.toLowerCase();
                        return -1 !== c.indexOf("firefox") ? r >= 6 ? (u = 5, a = new Array(4), l = r - 3) : (u = 2, a = new Array(2), l = r) : -1 !== c.indexOf("android") ? (u = 2, a = new Array(2), l = r) : (u = 5, l = r, a = new Array(4), r >= 6 ? l = r - 3 : 1 === h && (u = 2, a = new Array(2), l = r)), a[0] = u << 3, a[0] |= (15 & r) >>> 1, a[1] = (15 & r) << 7, a[1] |= (15 & h) << 3, 5 === u && (a[1] |= (15 & l) >>> 1, a[2] = (1 & l) << 7, a[2] |= 8, a[3] = 0), {
                          config: a,
                          samplingRate: d,
                          channelCount: h,
                          codec: "mp4a.40." + u,
                          originalCodec: "mp4a.40." + n
                        };
                      }

                      this._onError(o.default.FORMAT_ERROR, "Flv: AAC invalid channel configuration");
                    }
                  }, e.prototype._parseMP3AudioData = function (e, t, i, r) {
                    if (!(i < 4)) {
                      this._littleEndian;
                      var s = new Uint8Array(e, t, i),
                          o = null;

                      if (r) {
                        if (255 !== s[0]) return;
                        var a = s[1] >>> 3 & 3,
                            u = (6 & s[1]) >> 1,
                            l = (240 & s[2]) >>> 4,
                            d = (12 & s[2]) >>> 2,
                            h = 3 != (s[3] >>> 6 & 3) ? 2 : 1,
                            c = 0,
                            f = 0;

                        switch (a) {
                          case 0:
                            c = this._mpegAudioV25SampleRateTable[d];
                            break;

                          case 2:
                            c = this._mpegAudioV20SampleRateTable[d];
                            break;

                          case 3:
                            c = this._mpegAudioV10SampleRateTable[d];
                        }

                        switch (u) {
                          case 1:
                            l < this._mpegAudioL3BitRateTable.length && (f = this._mpegAudioL3BitRateTable[l]);
                            break;

                          case 2:
                            l < this._mpegAudioL2BitRateTable.length && (f = this._mpegAudioL2BitRateTable[l]);
                            break;

                          case 3:
                            l < this._mpegAudioL1BitRateTable.length && (f = this._mpegAudioL1BitRateTable[l]);
                        }

                        o = {
                          bitRate: f,
                          samplingRate: c,
                          channelCount: h,
                          codec: "mp3",
                          originalCodec: "mp3"
                        };
                      } else o = s;

                      return o;
                    }

                    n.default.w(this.TAG, "Flv: Invalid MP3 packet, header missing!");
                  }, e.prototype._parseVideoData = function (e, t, i, r, s) {
                    if (i <= 1) n.default.w(this.TAG, "Flv: Invalid video packet, missing VideoData payload!");else if (!0 !== this._hasVideoFlagOverrided || !1 !== this._hasVideo) {
                      var a = new Uint8Array(e, t, i)[0],
                          u = (240 & a) >>> 4,
                          l = 15 & a;
                      7 === l ? this._parseAVCVideoPacket(e, t + 1, i - 1, r, s, u) : this._onError(o.default.CODEC_UNSUPPORTED, "Flv: Unsupported codec in video frame: " + l);
                    }
                  }, e.prototype._parseAVCVideoPacket = function (e, t, i, r, s, a) {
                    if (i < 4) n.default.w(this.TAG, "Flv: Invalid AVC packet, missing AVCPacketType or/and CompositionTime");else {
                      var u = this._littleEndian,
                          l = new DataView(e, t, i),
                          d = l.getUint8(0),
                          h = (16777215 & l.getUint32(0, !u)) << 8 >> 8;
                      if (0 === d) this._parseAVCDecoderConfigurationRecord(e, t + 4, i - 4);else if (1 === d) this._parseAVCVideoData(e, t + 4, i - 4, r, s, a, h);else if (2 !== d) return void this._onError(o.default.FORMAT_ERROR, "Flv: Invalid video packet type " + d);
                    }
                  }, e.prototype._parseAVCDecoderConfigurationRecord = function (e, t, i) {
                    if (i < 7) n.default.w(this.TAG, "Flv: Invalid AVCDecoderConfigurationRecord, lack of data!");else {
                      var r = this._videoMetadata,
                          a = this._videoTrack,
                          u = this._littleEndian,
                          l = new DataView(e, t, i);
                      r ? void 0 !== r.avcc && n.default.w(this.TAG, "Found another AVCDecoderConfigurationRecord!") : (!1 === this._hasVideo && !1 === this._hasVideoFlagOverrided && (this._hasVideo = !0, this._mediaInfo.hasVideo = !0), (r = this._videoMetadata = {}).type = "video", r.id = a.id, r.timescale = this._timescale, r.duration = this._duration);
                      var d = l.getUint8(0),
                          h = l.getUint8(1);
                      if (l.getUint8(2), l.getUint8(3), 1 === d && 0 !== h) {
                        if (this._naluLengthSize = 1 + (3 & l.getUint8(4)), 3 === this._naluLengthSize || 4 === this._naluLengthSize) {
                          var c = 31 & l.getUint8(5);

                          if (0 !== c) {
                            c > 1 && n.default.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: SPS Count = " + c);

                            for (var f = 6, _ = 0; _ < c; _++) {
                              var p = l.getUint16(f, !u);

                              if (f += 2, 0 !== p) {
                                var m = new Uint8Array(e, t + f, p);
                                f += p;
                                var g = s.default.parseSPS(m);

                                if (0 === _) {
                                  r.codecWidth = g.codec_size.width, r.codecHeight = g.codec_size.height, r.presentWidth = g.present_size.width, r.presentHeight = g.present_size.height, r.profile = g.profile_string, r.level = g.level_string, r.bitDepth = g.bit_depth, r.chromaFormat = g.chroma_format, r.sarRatio = g.sar_ratio, r.frameRate = g.frame_rate, !1 !== g.frame_rate.fixed && 0 !== g.frame_rate.fps_num && 0 !== g.frame_rate.fps_den || (r.frameRate = this._referenceFrameRate);
                                  var v = r.frameRate.fps_den,
                                      y = r.frameRate.fps_num;
                                  r.refSampleDuration = r.timescale * (v / y);

                                  for (var E = m.subarray(1, 4), b = "avc1.", S = 0; S < 3; S++) {
                                    var L = E[S].toString(16);
                                    L.length < 2 && (L = "0" + L), b += L;
                                  }

                                  r.codec = b;
                                  var A = this._mediaInfo;
                                  A.width = r.codecWidth, A.height = r.codecHeight, A.fps = r.frameRate.fps, A.profile = r.profile, A.level = r.level, A.refFrames = g.ref_frames, A.chromaFormat = g.chroma_format_string, A.sarNum = r.sarRatio.width, A.sarDen = r.sarRatio.height, A.videoCodec = b, A.hasAudio ? null != A.audioCodec && (A.mimeType = 'video/x-flv; codecs="' + A.videoCodec + "," + A.audioCodec + '"') : A.mimeType = 'video/x-flv; codecs="' + A.videoCodec + '"', A.isComplete() && this._onMediaInfo(A);
                                }
                              }
                            }

                            var R = l.getUint8(f);

                            if (0 !== R) {
                              for (R > 1 && n.default.w(this.TAG, "Flv: Strange AVCDecoderConfigurationRecord: PPS Count = " + R), f++, _ = 0; _ < R; _++) p = l.getUint16(f, !u), f += 2, 0 !== p && (f += p);

                              r.avcc = new Uint8Array(i), r.avcc.set(new Uint8Array(e, t, i), 0), n.default.v(this.TAG, "Parsed AVCDecoderConfigurationRecord"), this._isInitialMetadataDispatched() ? this._dispatch && (this._audioTrack.length || this._videoTrack.length) && this._onDataAvailable(this._audioTrack, this._videoTrack) : this._videoInitialMetadataDispatched = !0, this._dispatch = !1, this._onTrackMetadata("video", r);
                            } else this._onError(o.default.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No PPS");
                          } else this._onError(o.default.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord: No SPS");
                        } else this._onError(o.default.FORMAT_ERROR, "Flv: Strange NaluLengthSizeMinusOne: " + (this._naluLengthSize - 1));
                      } else this._onError(o.default.FORMAT_ERROR, "Flv: Invalid AVCDecoderConfigurationRecord");
                    }
                  }, e.prototype._parseAVCVideoData = function (e, t, i, r, s, o, a) {
                    for (var u = this._littleEndian, l = new DataView(e, t, i), d = [], h = 0, c = 0, f = this._naluLengthSize, _ = this._timestampBase + r, p = 1 === o; c < i;) {
                      if (c + 4 >= i) {
                        n.default.w(this.TAG, "Malformed Nalu near timestamp " + _ + ", offset = " + c + ", dataSize = " + i);
                        break;
                      }

                      var m = l.getUint32(c, !u);
                      if (3 === f && (m >>>= 8), m > i - f) return void n.default.w(this.TAG, "Malformed Nalus near timestamp " + _ + ", NaluSize > DataSize!");
                      var g = 31 & l.getUint8(c + f);
                      5 === g && (p = !0);
                      var v = new Uint8Array(e, t + c, f + m),
                          y = {
                        type: g,
                        data: v
                      };
                      d.push(y), h += v.byteLength, c += f + m;
                    }

                    if (d.length) {
                      var E = this._videoTrack,
                          b = {
                        units: d,
                        length: h,
                        isKeyframe: p,
                        dts: _,
                        cts: a,
                        pts: _ + a
                      };
                      p && (b.fileposition = s), E.samples.push(b), E.length += h;
                    }
                  }, e;
                }();
              },
              "./src/demux/sps-parser.js":
              /*!*********************************!*\
              	  !*** ./src/demux/sps-parser.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => r
                });
                var n = i(
                /*! ./exp-golomb.js */
                "./src/demux/exp-golomb.js");

                const r = function () {
                  function e() {}

                  return e._ebsp2rbsp = function (e) {
                    for (var t = e, i = t.byteLength, n = new Uint8Array(i), r = 0, s = 0; s < i; s++) s >= 2 && 3 === t[s] && 0 === t[s - 1] && 0 === t[s - 2] || (n[r] = t[s], r++);

                    return new Uint8Array(n.buffer, 0, r);
                  }, e.parseSPS = function (t) {
                    var i = e._ebsp2rbsp(t),
                        r = new n.default(i);

                    r.readByte();
                    var s = r.readByte();
                    r.readByte();
                    var o = r.readByte();
                    r.readUEG();
                    var a = e.getProfileString(s),
                        u = e.getLevelString(o),
                        l = 1,
                        d = 420,
                        h = 8;
                    if ((100 === s || 110 === s || 122 === s || 244 === s || 44 === s || 83 === s || 86 === s || 118 === s || 128 === s || 138 === s || 144 === s) && (3 === (l = r.readUEG()) && r.readBits(1), l <= 3 && (d = [0, 420, 422, 444][l]), h = r.readUEG() + 8, r.readUEG(), r.readBits(1), r.readBool())) for (var c = 3 !== l ? 8 : 12, f = 0; f < c; f++) r.readBool() && (f < 6 ? e._skipScalingList(r, 16) : e._skipScalingList(r, 64));
                    r.readUEG();

                    var _ = r.readUEG();

                    if (0 === _) r.readUEG();else if (1 === _) {
                      r.readBits(1), r.readSEG(), r.readSEG();
                      var p = r.readUEG();

                      for (f = 0; f < p; f++) r.readSEG();
                    }
                    var m = r.readUEG();
                    r.readBits(1);
                    var g = r.readUEG(),
                        v = r.readUEG(),
                        y = r.readBits(1);
                    0 === y && r.readBits(1), r.readBits(1);
                    var E = 0,
                        b = 0,
                        S = 0,
                        L = 0;
                    r.readBool() && (E = r.readUEG(), b = r.readUEG(), S = r.readUEG(), L = r.readUEG());
                    var A = 1,
                        R = 1,
                        w = 0,
                        T = !0,
                        O = 0,
                        k = 0;

                    if (r.readBool()) {
                      if (r.readBool()) {
                        var I = r.readByte();
                        I > 0 && I < 16 ? (A = [1, 12, 10, 16, 40, 24, 20, 32, 80, 18, 15, 64, 160, 4, 3, 2][I - 1], R = [1, 11, 11, 11, 33, 11, 11, 11, 33, 11, 11, 33, 99, 3, 2, 1][I - 1]) : 255 === I && (A = r.readByte() << 8 | r.readByte(), R = r.readByte() << 8 | r.readByte());
                      }

                      if (r.readBool() && r.readBool(), r.readBool() && (r.readBits(4), r.readBool() && r.readBits(24)), r.readBool() && (r.readUEG(), r.readUEG()), r.readBool()) {
                        var C = r.readBits(32),
                            D = r.readBits(32);
                        T = r.readBool(), w = (O = D) / (k = 2 * C);
                      }
                    }

                    var x = 1;
                    1 === A && 1 === R || (x = A / R);
                    var M = 0,
                        P = 0;
                    0 === l ? (M = 1, P = 2 - y) : (M = 3 === l ? 1 : 2, P = (1 === l ? 2 : 1) * (2 - y));
                    var B = 16 * (g + 1),
                        j = 16 * (v + 1) * (2 - y);
                    B -= (E + b) * M, j -= (S + L) * P;
                    var U = Math.ceil(B * x);
                    return r.destroy(), r = null, {
                      profile_string: a,
                      level_string: u,
                      bit_depth: h,
                      ref_frames: m,
                      chroma_format: d,
                      chroma_format_string: e.getChromaFormatString(d),
                      frame_rate: {
                        fixed: T,
                        fps: w,
                        fps_den: k,
                        fps_num: O
                      },
                      sar_ratio: {
                        width: A,
                        height: R
                      },
                      codec_size: {
                        width: B,
                        height: j
                      },
                      present_size: {
                        width: U,
                        height: j
                      }
                    };
                  }, e._skipScalingList = function (e, t) {
                    for (var i = 8, n = 8, r = 0; r < t; r++) 0 !== n && (n = (i + e.readSEG() + 256) % 256), i = 0 === n ? i : n;
                  }, e.getProfileString = function (e) {
                    switch (e) {
                      case 66:
                        return "Baseline";

                      case 77:
                        return "Main";

                      case 88:
                        return "Extended";

                      case 100:
                        return "High";

                      case 110:
                        return "High10";

                      case 122:
                        return "High422";

                      case 244:
                        return "High444";

                      default:
                        return "Unknown";
                    }
                  }, e.getLevelString = function (e) {
                    return (e / 10).toFixed(1);
                  }, e.getChromaFormatString = function (e) {
                    switch (e) {
                      case 420:
                        return "4:2:0";

                      case 422:
                        return "4:2:2";

                      case 444:
                        return "4:4:4";

                      default:
                        return "Unknown";
                    }
                  }, e;
                }();
              },
              "./src/flv.js":
              /*!********************!*\
              	  !*** ./src/flv.js ***!
              	  \********************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => f
                });
                var n = i(
                /*! ./utils/polyfill.js */
                "./src/utils/polyfill.js"),
                    r = i(
                /*! ./core/features.js */
                "./src/core/features.js"),
                    s = i(
                /*! ./io/loader.js */
                "./src/io/loader.js"),
                    o = i(
                /*! ./player/flv-player.js */
                "./src/player/flv-player.js"),
                    a = i(
                /*! ./player/native-player.js */
                "./src/player/native-player.js"),
                    u = i(
                /*! ./player/player-events.js */
                "./src/player/player-events.js"),
                    l = i(
                /*! ./player/player-errors.js */
                "./src/player/player-errors.js"),
                    d = i(
                /*! ./utils/logging-control.js */
                "./src/utils/logging-control.js"),
                    h = i(
                /*! ./utils/exception.js */
                "./src/utils/exception.js");
                n.default.install();
                var c = {
                  createPlayer: function (e, t) {
                    var i = e;
                    if (null == i || "object" != typeof i) throw new h.InvalidArgumentException("MediaDataSource must be an javascript object!");
                    if (!i.hasOwnProperty("type")) throw new h.InvalidArgumentException("MediaDataSource must has type field to indicate video file type!");

                    switch (i.type) {
                      case "flv":
                        return new o.default(i, t);

                      default:
                        return new a.default(i, t);
                    }
                  },
                  isSupported: function () {
                    return r.default.supportMSEH264Playback();
                  },
                  getFeatureList: function () {
                    return r.default.getFeatureList();
                  }
                };
                c.BaseLoader = s.BaseLoader, c.LoaderStatus = s.LoaderStatus, c.LoaderErrors = s.LoaderErrors, c.Events = u.default, c.ErrorTypes = l.ErrorTypes, c.ErrorDetails = l.ErrorDetails, c.FlvPlayer = o.default, c.NativePlayer = a.default, c.LoggingControl = d.default, Object.defineProperty(c, "version", {
                  enumerable: !0,
                  get: function () {
                    return "1.6.0";
                  }
                });
                const f = c;
              },
              "./src/index.js":
              /*!**********************!*\
              	  !*** ./src/index.js ***!
              	  \**********************/
              (e, t, i) => {
                e.exports = i(
                /*! ./flv.js */
                "./src/flv.js").default;
              },
              "./src/io/fetch-stream-loader.js":
              /*!***************************************!*\
              	  !*** ./src/io/fetch-stream-loader.js ***!
              	  \***************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => a
                });

                var n = i(
                /*! ../utils/browser.js */
                "./src/utils/browser.js"),
                    r = i(
                /*! ./loader.js */
                "./src/io/loader.js"),
                    s = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    o = function () {
                  var e = function (t, i) {
                    return (e = Object.setPrototypeOf || {
                      __proto__: []
                    } instanceof Array && function (e, t) {
                      e.__proto__ = t;
                    } || function (e, t) {
                      for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
                    })(t, i);
                  };

                  return function (t, i) {
                    if ("function" != typeof i && null !== i) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");

                    function n() {
                      this.constructor = t;
                    }

                    e(t, i), t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype, new n());
                  };
                }();

                const a = function (e) {
                  function t(t, i) {
                    var n = e.call(this, "fetch-stream-loader") || this;
                    return n.TAG = "FetchStreamLoader", n._seekHandler = t, n._config = i, n._needStash = !0, n._requestAbort = !1, n._contentLength = null, n._receivedLength = 0, n;
                  }

                  return o(t, e), t.isSupported = function () {
                    try {
                      var e = n.default.msedge && n.default.version.minor >= 15048,
                          t = !n.default.msedge || e;
                      return self.fetch && self.ReadableStream && t;
                    } catch (e) {
                      return !1;
                    }
                  }, t.prototype.destroy = function () {
                    this.isWorking() && this.abort(), e.prototype.destroy.call(this);
                  }, t.prototype.open = function (e, t) {
                    var i = this;
                    this._dataSource = e, this._range = t;
                    var n = e.url;
                    this._config.reuseRedirectedURL && null != e.redirectedURL && (n = e.redirectedURL);

                    var o = this._seekHandler.getConfig(n, t),
                        a = new self.Headers();

                    if ("object" == typeof o.headers) {
                      var u = o.headers;

                      for (var l in u) u.hasOwnProperty(l) && a.append(l, u[l]);
                    }

                    var d = {
                      method: "GET",
                      headers: a,
                      mode: "cors",
                      cache: "default",
                      referrerPolicy: "no-referrer-when-downgrade"
                    };
                    if ("object" == typeof this._config.headers) for (var l in this._config.headers) a.append(l, this._config.headers[l]);
                    !1 === e.cors && (d.mode = "same-origin"), e.withCredentials && (d.credentials = "include"), e.referrerPolicy && (d.referrerPolicy = e.referrerPolicy), self.AbortController && (this._abortController = new self.AbortController(), d.signal = this._abortController.signal), this._status = r.LoaderStatus.kConnecting, self.fetch(o.url, d).then(function (e) {
                      if (i._requestAbort) return i._status = r.LoaderStatus.kIdle, void e.body.cancel();

                      if (e.ok && e.status >= 200 && e.status <= 299) {
                        if (e.url !== o.url && i._onURLRedirect) {
                          var t = i._seekHandler.removeURLParameters(e.url);

                          i._onURLRedirect(t);
                        }

                        var n = e.headers.get("Content-Length");
                        return null != n && (i._contentLength = parseInt(n), 0 !== i._contentLength && i._onContentLengthKnown && i._onContentLengthKnown(i._contentLength)), i._pump.call(i, e.body.getReader());
                      }

                      if (i._status = r.LoaderStatus.kError, !i._onError) throw new s.RuntimeException("FetchStreamLoader: Http code invalid, " + e.status + " " + e.statusText);

                      i._onError(r.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
                        code: e.status,
                        msg: e.statusText
                      });
                    }).catch(function (e) {
                      if (!i._abortController || !i._abortController.signal.aborted) {
                        if (i._status = r.LoaderStatus.kError, !i._onError) throw e;

                        i._onError(r.LoaderErrors.EXCEPTION, {
                          code: -1,
                          msg: e.message
                        });
                      }
                    });
                  }, t.prototype.abort = function () {
                    if (this._requestAbort = !0, (this._status !== r.LoaderStatus.kBuffering || !n.default.chrome) && this._abortController) try {
                      this._abortController.abort();
                    } catch (e) {}
                  }, t.prototype._pump = function (e) {
                    var t = this;
                    return e.read().then(function (i) {
                      if (i.done) {
                        if (null !== t._contentLength && t._receivedLength < t._contentLength) {
                          t._status = r.LoaderStatus.kError;
                          var n = r.LoaderErrors.EARLY_EOF,
                              o = {
                            code: -1,
                            msg: "Fetch stream meet Early-EOF"
                          };
                          if (!t._onError) throw new s.RuntimeException(o.msg);

                          t._onError(n, o);
                        } else t._status = r.LoaderStatus.kComplete, t._onComplete && t._onComplete(t._range.from, t._range.from + t._receivedLength - 1);
                      } else {
                        if (t._abortController && t._abortController.signal.aborted) return void (t._status = r.LoaderStatus.kComplete);
                        if (!0 === t._requestAbort) return t._status = r.LoaderStatus.kComplete, e.cancel();
                        t._status = r.LoaderStatus.kBuffering;
                        var a = i.value.buffer,
                            u = t._range.from + t._receivedLength;
                        t._receivedLength += a.byteLength, t._onDataArrival && t._onDataArrival(a, u, t._receivedLength), t._pump(e);
                      }
                    }).catch(function (e) {
                      if (t._abortController && t._abortController.signal.aborted) t._status = r.LoaderStatus.kComplete;else if (11 !== e.code || !n.default.msedge) {
                        t._status = r.LoaderStatus.kError;
                        var i = 0,
                            o = null;
                        if (19 !== e.code && "network error" !== e.message || !(null === t._contentLength || null !== t._contentLength && t._receivedLength < t._contentLength) ? (i = r.LoaderErrors.EXCEPTION, o = {
                          code: e.code,
                          msg: e.message
                        }) : (i = r.LoaderErrors.EARLY_EOF, o = {
                          code: e.code,
                          msg: "Fetch stream meet Early-EOF"
                        }), !t._onError) throw new s.RuntimeException(o.msg);

                        t._onError(i, o);
                      }
                    });
                  }, t;
                }(r.BaseLoader);
              },
              "./src/io/io-controller.js":
              /*!*********************************!*\
              	  !*** ./src/io/io-controller.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => f
                });
                var n = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    r = i(
                /*! ./speed-sampler.js */
                "./src/io/speed-sampler.js"),
                    s = i(
                /*! ./loader.js */
                "./src/io/loader.js"),
                    o = i(
                /*! ./fetch-stream-loader.js */
                "./src/io/fetch-stream-loader.js"),
                    a = i(
                /*! ./xhr-moz-chunked-loader.js */
                "./src/io/xhr-moz-chunked-loader.js"),
                    u = i(
                /*! ./xhr-range-loader.js */
                "./src/io/xhr-range-loader.js"),
                    l = i(
                /*! ./websocket-loader.js */
                "./src/io/websocket-loader.js"),
                    d = i(
                /*! ./range-seek-handler.js */
                "./src/io/range-seek-handler.js"),
                    h = i(
                /*! ./param-seek-handler.js */
                "./src/io/param-seek-handler.js"),
                    c = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const f = function () {
                  function e(e, t, i) {
                    this.TAG = "IOController", this._config = t, this._extraData = i, this._stashInitialSize = 393216, null != t.stashInitialSize && t.stashInitialSize > 0 && (this._stashInitialSize = t.stashInitialSize), this._stashUsed = 0, this._stashSize = this._stashInitialSize, this._bufferSize = 3145728, this._stashBuffer = new ArrayBuffer(this._bufferSize), this._stashByteStart = 0, this._enableStash = !0, !1 === t.enableStashBuffer && (this._enableStash = !1), this._loader = null, this._loaderClass = null, this._seekHandler = null, this._dataSource = e, this._isWebSocketURL = /wss?:\/\/(.+?)/.test(e.url), this._refTotalLength = e.filesize ? e.filesize : null, this._totalLength = this._refTotalLength, this._fullRequestFlag = !1, this._currentRange = null, this._redirectedURL = null, this._speedNormalized = 0, this._speedSampler = new r.default(), this._speedNormalizeList = [64, 128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096], this._isEarlyEofReconnecting = !1, this._paused = !1, this._resumeFrom = 0, this._onDataArrival = null, this._onSeeked = null, this._onError = null, this._onComplete = null, this._onRedirect = null, this._onRecoveredEarlyEof = null, this._selectSeekHandler(), this._selectLoader(), this._createLoader();
                  }

                  return e.prototype.destroy = function () {
                    this._loader.isWorking() && this._loader.abort(), this._loader.destroy(), this._loader = null, this._loaderClass = null, this._dataSource = null, this._stashBuffer = null, this._stashUsed = this._stashSize = this._bufferSize = this._stashByteStart = 0, this._currentRange = null, this._speedSampler = null, this._isEarlyEofReconnecting = !1, this._onDataArrival = null, this._onSeeked = null, this._onError = null, this._onComplete = null, this._onRedirect = null, this._onRecoveredEarlyEof = null, this._extraData = null;
                  }, e.prototype.isWorking = function () {
                    return this._loader && this._loader.isWorking() && !this._paused;
                  }, e.prototype.isPaused = function () {
                    return this._paused;
                  }, Object.defineProperty(e.prototype, "status", {
                    get: function () {
                      return this._loader.status;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "extraData", {
                    get: function () {
                      return this._extraData;
                    },
                    set: function (e) {
                      this._extraData = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onDataArrival", {
                    get: function () {
                      return this._onDataArrival;
                    },
                    set: function (e) {
                      this._onDataArrival = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onSeeked", {
                    get: function () {
                      return this._onSeeked;
                    },
                    set: function (e) {
                      this._onSeeked = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onError", {
                    get: function () {
                      return this._onError;
                    },
                    set: function (e) {
                      this._onError = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onComplete", {
                    get: function () {
                      return this._onComplete;
                    },
                    set: function (e) {
                      this._onComplete = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onRedirect", {
                    get: function () {
                      return this._onRedirect;
                    },
                    set: function (e) {
                      this._onRedirect = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onRecoveredEarlyEof", {
                    get: function () {
                      return this._onRecoveredEarlyEof;
                    },
                    set: function (e) {
                      this._onRecoveredEarlyEof = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "currentURL", {
                    get: function () {
                      return this._dataSource.url;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "hasRedirect", {
                    get: function () {
                      return null != this._redirectedURL || null != this._dataSource.redirectedURL;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "currentRedirectedURL", {
                    get: function () {
                      return this._redirectedURL || this._dataSource.redirectedURL;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "currentSpeed", {
                    get: function () {
                      return this._loaderClass === u.default ? this._loader.currentSpeed : this._speedSampler.lastSecondKBps;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "loaderType", {
                    get: function () {
                      return this._loader.type;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype._selectSeekHandler = function () {
                    var e = this._config;
                    if ("range" === e.seekType) this._seekHandler = new d.default(this._config.rangeLoadZeroStart);else if ("param" === e.seekType) {
                      var t = e.seekParamStart || "bstart",
                          i = e.seekParamEnd || "bend";
                      this._seekHandler = new h.default(t, i);
                    } else {
                      if ("custom" !== e.seekType) throw new c.InvalidArgumentException("Invalid seekType in config: " + e.seekType);
                      if ("function" != typeof e.customSeekHandler) throw new c.InvalidArgumentException("Custom seekType specified in config but invalid customSeekHandler!");
                      this._seekHandler = new e.customSeekHandler();
                    }
                  }, e.prototype._selectLoader = function () {
                    if (null != this._config.customLoader) this._loaderClass = this._config.customLoader;else if (this._isWebSocketURL) this._loaderClass = l.default;else if (o.default.isSupported()) this._loaderClass = o.default;else if (a.default.isSupported()) this._loaderClass = a.default;else {
                      if (!u.default.isSupported()) throw new c.RuntimeException("Your browser doesn't support xhr with arraybuffer responseType!");
                      this._loaderClass = u.default;
                    }
                  }, e.prototype._createLoader = function () {
                    this._loader = new this._loaderClass(this._seekHandler, this._config), !1 === this._loader.needStashBuffer && (this._enableStash = !1), this._loader.onContentLengthKnown = this._onContentLengthKnown.bind(this), this._loader.onURLRedirect = this._onURLRedirect.bind(this), this._loader.onDataArrival = this._onLoaderChunkArrival.bind(this), this._loader.onComplete = this._onLoaderComplete.bind(this), this._loader.onError = this._onLoaderError.bind(this);
                  }, e.prototype.open = function (e) {
                    this._currentRange = {
                      from: 0,
                      to: -1
                    }, e && (this._currentRange.from = e), this._speedSampler.reset(), e || (this._fullRequestFlag = !0), this._loader.open(this._dataSource, Object.assign({}, this._currentRange));
                  }, e.prototype.abort = function () {
                    this._loader.abort(), this._paused && (this._paused = !1, this._resumeFrom = 0);
                  }, e.prototype.pause = function () {
                    this.isWorking() && (this._loader.abort(), 0 !== this._stashUsed ? (this._resumeFrom = this._stashByteStart, this._currentRange.to = this._stashByteStart - 1) : this._resumeFrom = this._currentRange.to + 1, this._stashUsed = 0, this._stashByteStart = 0, this._paused = !0);
                  }, e.prototype.resume = function () {
                    if (this._paused) {
                      this._paused = !1;
                      var e = this._resumeFrom;
                      this._resumeFrom = 0, this._internalSeek(e, !0);
                    }
                  }, e.prototype.seek = function (e) {
                    this._paused = !1, this._stashUsed = 0, this._stashByteStart = 0, this._internalSeek(e, !0);
                  }, e.prototype._internalSeek = function (e, t) {
                    this._loader.isWorking() && this._loader.abort(), this._flushStashBuffer(t), this._loader.destroy(), this._loader = null;
                    var i = {
                      from: e,
                      to: -1
                    };
                    this._currentRange = {
                      from: i.from,
                      to: -1
                    }, this._speedSampler.reset(), this._stashSize = this._stashInitialSize, this._createLoader(), this._loader.open(this._dataSource, i), this._onSeeked && this._onSeeked();
                  }, e.prototype.updateUrl = function (e) {
                    if (!e || "string" != typeof e || 0 === e.length) throw new c.InvalidArgumentException("Url must be a non-empty string!");
                    this._dataSource.url = e;
                  }, e.prototype._expandBuffer = function (e) {
                    for (var t = this._stashSize; t + 1048576 < e;) t *= 2;

                    if ((t += 1048576) !== this._bufferSize) {
                      var i = new ArrayBuffer(t);

                      if (this._stashUsed > 0) {
                        var n = new Uint8Array(this._stashBuffer, 0, this._stashUsed);
                        new Uint8Array(i, 0, t).set(n, 0);
                      }

                      this._stashBuffer = i, this._bufferSize = t;
                    }
                  }, e.prototype._normalizeSpeed = function (e) {
                    var t = this._speedNormalizeList,
                        i = t.length - 1,
                        n = 0,
                        r = 0,
                        s = i;
                    if (e < t[0]) return t[0];

                    for (; r <= s;) {
                      if ((n = r + Math.floor((s - r) / 2)) === i || e >= t[n] && e < t[n + 1]) return t[n];
                      t[n] < e ? r = n + 1 : s = n - 1;
                    }
                  }, e.prototype._adjustStashSize = function (e) {
                    var t = 0;
                    (t = this._config.isLive || e < 512 ? e : e >= 512 && e <= 1024 ? Math.floor(1.5 * e) : 2 * e) > 8192 && (t = 8192);
                    var i = 1024 * t + 1048576;
                    this._bufferSize < i && this._expandBuffer(i), this._stashSize = 1024 * t;
                  }, e.prototype._dispatchChunks = function (e, t) {
                    return this._currentRange.to = t + e.byteLength - 1, this._onDataArrival(e, t);
                  }, e.prototype._onURLRedirect = function (e) {
                    this._redirectedURL = e, this._onRedirect && this._onRedirect(e);
                  }, e.prototype._onContentLengthKnown = function (e) {
                    e && this._fullRequestFlag && (this._totalLength = e, this._fullRequestFlag = !1);
                  }, e.prototype._onLoaderChunkArrival = function (e, t, i) {
                    if (!this._onDataArrival) throw new c.IllegalStateException("IOController: No existing consumer (onDataArrival) callback!");

                    if (!this._paused) {
                      this._isEarlyEofReconnecting && (this._isEarlyEofReconnecting = !1, this._onRecoveredEarlyEof && this._onRecoveredEarlyEof()), this._speedSampler.addBytes(e.byteLength);
                      var n = this._speedSampler.lastSecondKBps;

                      if (0 !== n) {
                        var r = this._normalizeSpeed(n);

                        this._speedNormalized !== r && (this._speedNormalized = r, this._adjustStashSize(r));
                      }

                      if (this._enableStash) {
                        if (0 === this._stashUsed && 0 === this._stashByteStart && (this._stashByteStart = t), this._stashUsed + e.byteLength <= this._stashSize) (a = new Uint8Array(this._stashBuffer, 0, this._stashSize)).set(new Uint8Array(e), this._stashUsed), this._stashUsed += e.byteLength;else if (a = new Uint8Array(this._stashBuffer, 0, this._bufferSize), this._stashUsed > 0) {
                          var s = this._stashBuffer.slice(0, this._stashUsed);

                          (u = this._dispatchChunks(s, this._stashByteStart)) < s.byteLength ? u > 0 && (l = new Uint8Array(s, u), a.set(l, 0), this._stashUsed = l.byteLength, this._stashByteStart += u) : (this._stashUsed = 0, this._stashByteStart += u), this._stashUsed + e.byteLength > this._bufferSize && (this._expandBuffer(this._stashUsed + e.byteLength), a = new Uint8Array(this._stashBuffer, 0, this._bufferSize)), a.set(new Uint8Array(e), this._stashUsed), this._stashUsed += e.byteLength;
                        } else (u = this._dispatchChunks(e, t)) < e.byteLength && ((o = e.byteLength - u) > this._bufferSize && (this._expandBuffer(o), a = new Uint8Array(this._stashBuffer, 0, this._bufferSize)), a.set(new Uint8Array(e, u), 0), this._stashUsed += o, this._stashByteStart = t + u);
                      } else if (0 === this._stashUsed) {
                        var o;
                        (u = this._dispatchChunks(e, t)) < e.byteLength && ((o = e.byteLength - u) > this._bufferSize && this._expandBuffer(o), (a = new Uint8Array(this._stashBuffer, 0, this._bufferSize)).set(new Uint8Array(e, u), 0), this._stashUsed += o, this._stashByteStart = t + u);
                      } else {
                        var a, u;

                        if (this._stashUsed + e.byteLength > this._bufferSize && this._expandBuffer(this._stashUsed + e.byteLength), (a = new Uint8Array(this._stashBuffer, 0, this._bufferSize)).set(new Uint8Array(e), this._stashUsed), this._stashUsed += e.byteLength, (u = this._dispatchChunks(this._stashBuffer.slice(0, this._stashUsed), this._stashByteStart)) < this._stashUsed && u > 0) {
                          var l = new Uint8Array(this._stashBuffer, u);
                          a.set(l, 0);
                        }

                        this._stashUsed -= u, this._stashByteStart += u;
                      }
                    }
                  }, e.prototype._flushStashBuffer = function (e) {
                    if (this._stashUsed > 0) {
                      var t = this._stashBuffer.slice(0, this._stashUsed),
                          i = this._dispatchChunks(t, this._stashByteStart),
                          r = t.byteLength - i;

                      if (i < t.byteLength) {
                        if (!e) {
                          if (i > 0) {
                            var s = new Uint8Array(this._stashBuffer, 0, this._bufferSize),
                                o = new Uint8Array(t, i);
                            s.set(o, 0), this._stashUsed = o.byteLength, this._stashByteStart += i;
                          }

                          return 0;
                        }

                        n.default.w(this.TAG, r + " bytes unconsumed data remain when flush buffer, dropped");
                      }

                      return this._stashUsed = 0, this._stashByteStart = 0, r;
                    }

                    return 0;
                  }, e.prototype._onLoaderComplete = function (e, t) {
                    this._flushStashBuffer(!0), this._onComplete && this._onComplete(this._extraData);
                  }, e.prototype._onLoaderError = function (e, t) {
                    switch (n.default.e(this.TAG, "Loader error, code = " + t.code + ", msg = " + t.msg), this._flushStashBuffer(!1), this._isEarlyEofReconnecting && (this._isEarlyEofReconnecting = !1, e = s.LoaderErrors.UNRECOVERABLE_EARLY_EOF), e) {
                      case s.LoaderErrors.EARLY_EOF:
                        if (!this._config.isLive && this._totalLength) {
                          var i = this._currentRange.to + 1;
                          return void (i < this._totalLength && (n.default.w(this.TAG, "Connection lost, trying reconnect..."), this._isEarlyEofReconnecting = !0, this._internalSeek(i, !1)));
                        }

                        e = s.LoaderErrors.UNRECOVERABLE_EARLY_EOF;
                        break;

                      case s.LoaderErrors.UNRECOVERABLE_EARLY_EOF:
                      case s.LoaderErrors.CONNECTING_TIMEOUT:
                      case s.LoaderErrors.HTTP_STATUS_CODE_INVALID:
                      case s.LoaderErrors.EXCEPTION:
                    }

                    if (!this._onError) throw new c.RuntimeException("IOException: " + t.msg);

                    this._onError(e, t);
                  }, e;
                }();
              },
              "./src/io/loader.js":
              /*!**************************!*\
              	  !*** ./src/io/loader.js ***!
              	  \**************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  LoaderStatus: () => r,
                  LoaderErrors: () => s,
                  BaseLoader: () => o
                });

                var n = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    r = {
                  kIdle: 0,
                  kConnecting: 1,
                  kBuffering: 2,
                  kError: 3,
                  kComplete: 4
                },
                    s = {
                  OK: "OK",
                  EXCEPTION: "Exception",
                  HTTP_STATUS_CODE_INVALID: "HttpStatusCodeInvalid",
                  CONNECTING_TIMEOUT: "ConnectingTimeout",
                  EARLY_EOF: "EarlyEof",
                  UNRECOVERABLE_EARLY_EOF: "UnrecoverableEarlyEof"
                },
                    o = function () {
                  function e(e) {
                    this._type = e || "undefined", this._status = r.kIdle, this._needStash = !1, this._onContentLengthKnown = null, this._onURLRedirect = null, this._onDataArrival = null, this._onError = null, this._onComplete = null;
                  }

                  return e.prototype.destroy = function () {
                    this._status = r.kIdle, this._onContentLengthKnown = null, this._onURLRedirect = null, this._onDataArrival = null, this._onError = null, this._onComplete = null;
                  }, e.prototype.isWorking = function () {
                    return this._status === r.kConnecting || this._status === r.kBuffering;
                  }, Object.defineProperty(e.prototype, "type", {
                    get: function () {
                      return this._type;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "status", {
                    get: function () {
                      return this._status;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "needStashBuffer", {
                    get: function () {
                      return this._needStash;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onContentLengthKnown", {
                    get: function () {
                      return this._onContentLengthKnown;
                    },
                    set: function (e) {
                      this._onContentLengthKnown = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onURLRedirect", {
                    get: function () {
                      return this._onURLRedirect;
                    },
                    set: function (e) {
                      this._onURLRedirect = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onDataArrival", {
                    get: function () {
                      return this._onDataArrival;
                    },
                    set: function (e) {
                      this._onDataArrival = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onError", {
                    get: function () {
                      return this._onError;
                    },
                    set: function (e) {
                      this._onError = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onComplete", {
                    get: function () {
                      return this._onComplete;
                    },
                    set: function (e) {
                      this._onComplete = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype.open = function (e, t) {
                    throw new n.NotImplementedException("Unimplemented abstract function!");
                  }, e.prototype.abort = function () {
                    throw new n.NotImplementedException("Unimplemented abstract function!");
                  }, e;
                }();
              },
              "./src/io/param-seek-handler.js":
              /*!**************************************!*\
              	  !*** ./src/io/param-seek-handler.js ***!
              	  \**************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });

                const n = function () {
                  function e(e, t) {
                    this._startName = e, this._endName = t;
                  }

                  return e.prototype.getConfig = function (e, t) {
                    var i = e;

                    if (0 !== t.from || -1 !== t.to) {
                      var n = !0;
                      -1 === i.indexOf("?") && (i += "?", n = !1), n && (i += "&"), i += this._startName + "=" + t.from.toString(), -1 !== t.to && (i += "&" + this._endName + "=" + t.to.toString());
                    }

                    return {
                      url: i,
                      headers: {}
                    };
                  }, e.prototype.removeURLParameters = function (e) {
                    var t = e.split("?")[0],
                        i = void 0,
                        n = e.indexOf("?");
                    -1 !== n && (i = e.substring(n + 1));
                    var r = "";
                    if (null != i && i.length > 0) for (var s = i.split("&"), o = 0; o < s.length; o++) {
                      var a = s[o].split("="),
                          u = o > 0;
                      a[0] !== this._startName && a[0] !== this._endName && (u && (r += "&"), r += s[o]);
                    }
                    return 0 === r.length ? t : t + "?" + r;
                  }, e;
                }();
              },
              "./src/io/range-seek-handler.js":
              /*!**************************************!*\
              	  !*** ./src/io/range-seek-handler.js ***!
              	  \**************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });

                const n = function () {
                  function e(e) {
                    this._zeroStart = e || !1;
                  }

                  return e.prototype.getConfig = function (e, t) {
                    var i = {};

                    if (0 !== t.from || -1 !== t.to) {
                      var n = void 0;
                      n = -1 !== t.to ? "bytes=" + t.from.toString() + "-" + t.to.toString() : "bytes=" + t.from.toString() + "-", i.Range = n;
                    } else this._zeroStart && (i.Range = "bytes=0-");

                    return {
                      url: e,
                      headers: i
                    };
                  }, e.prototype.removeURLParameters = function (e) {
                    return e;
                  }, e;
                }();
              },
              "./src/io/speed-sampler.js":
              /*!*********************************!*\
              	  !*** ./src/io/speed-sampler.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });

                const n = function () {
                  function e() {
                    this._firstCheckpoint = 0, this._lastCheckpoint = 0, this._intervalBytes = 0, this._totalBytes = 0, this._lastSecondBytes = 0, self.performance && self.performance.now ? this._now = self.performance.now.bind(self.performance) : this._now = Date.now;
                  }

                  return e.prototype.reset = function () {
                    this._firstCheckpoint = this._lastCheckpoint = 0, this._totalBytes = this._intervalBytes = 0, this._lastSecondBytes = 0;
                  }, e.prototype.addBytes = function (e) {
                    0 === this._firstCheckpoint ? (this._firstCheckpoint = this._now(), this._lastCheckpoint = this._firstCheckpoint, this._intervalBytes += e, this._totalBytes += e) : this._now() - this._lastCheckpoint < 1e3 ? (this._intervalBytes += e, this._totalBytes += e) : (this._lastSecondBytes = this._intervalBytes, this._intervalBytes = e, this._totalBytes += e, this._lastCheckpoint = this._now());
                  }, Object.defineProperty(e.prototype, "currentKBps", {
                    get: function () {
                      this.addBytes(0);
                      var e = (this._now() - this._lastCheckpoint) / 1e3;
                      return 0 == e && (e = 1), this._intervalBytes / e / 1024;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "lastSecondKBps", {
                    get: function () {
                      return this.addBytes(0), 0 !== this._lastSecondBytes ? this._lastSecondBytes / 1024 : this._now() - this._lastCheckpoint >= 500 ? this.currentKBps : 0;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "averageKBps", {
                    get: function () {
                      var e = (this._now() - this._firstCheckpoint) / 1e3;
                      return this._totalBytes / e / 1024;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e;
                }();
              },
              "./src/io/websocket-loader.js":
              /*!************************************!*\
              	  !*** ./src/io/websocket-loader.js ***!
              	  \************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => o
                });

                var n = i(
                /*! ./loader.js */
                "./src/io/loader.js"),
                    r = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    s = function () {
                  var e = function (t, i) {
                    return (e = Object.setPrototypeOf || {
                      __proto__: []
                    } instanceof Array && function (e, t) {
                      e.__proto__ = t;
                    } || function (e, t) {
                      for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
                    })(t, i);
                  };

                  return function (t, i) {
                    if ("function" != typeof i && null !== i) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");

                    function n() {
                      this.constructor = t;
                    }

                    e(t, i), t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype, new n());
                  };
                }();

                const o = function (e) {
                  function t() {
                    var t = e.call(this, "websocket-loader") || this;
                    return t.TAG = "WebSocketLoader", t._needStash = !0, t._ws = null, t._requestAbort = !1, t._receivedLength = 0, t;
                  }

                  return s(t, e), t.isSupported = function () {
                    try {
                      return void 0 !== self.WebSocket;
                    } catch (e) {
                      return !1;
                    }
                  }, t.prototype.destroy = function () {
                    this._ws && this.abort(), e.prototype.destroy.call(this);
                  }, t.prototype.open = function (e) {
                    try {
                      var t = this._ws = new self.WebSocket(e.url);
                      t.binaryType = "arraybuffer", t.onopen = this._onWebSocketOpen.bind(this), t.onclose = this._onWebSocketClose.bind(this), t.onmessage = this._onWebSocketMessage.bind(this), t.onerror = this._onWebSocketError.bind(this), this._status = n.LoaderStatus.kConnecting;
                    } catch (e) {
                      this._status = n.LoaderStatus.kError;
                      var i = {
                        code: e.code,
                        msg: e.message
                      };
                      if (!this._onError) throw new r.RuntimeException(i.msg);

                      this._onError(n.LoaderErrors.EXCEPTION, i);
                    }
                  }, t.prototype.abort = function () {
                    var e = this._ws;
                    !e || 0 !== e.readyState && 1 !== e.readyState || (this._requestAbort = !0, e.close()), this._ws = null, this._status = n.LoaderStatus.kComplete;
                  }, t.prototype._onWebSocketOpen = function (e) {
                    this._status = n.LoaderStatus.kBuffering;
                  }, t.prototype._onWebSocketClose = function (e) {
                    !0 !== this._requestAbort ? (this._status = n.LoaderStatus.kComplete, this._onComplete && this._onComplete(0, this._receivedLength - 1)) : this._requestAbort = !1;
                  }, t.prototype._onWebSocketMessage = function (e) {
                    var t = this;
                    if (e.data instanceof ArrayBuffer) this._dispatchArrayBuffer(e.data);else if (e.data instanceof Blob) {
                      var i = new FileReader();
                      i.onload = function () {
                        t._dispatchArrayBuffer(i.result);
                      }, i.readAsArrayBuffer(e.data);
                    } else {
                      this._status = n.LoaderStatus.kError;
                      var s = {
                        code: -1,
                        msg: "Unsupported WebSocket message type: " + e.data.constructor.name
                      };
                      if (!this._onError) throw new r.RuntimeException(s.msg);

                      this._onError(n.LoaderErrors.EXCEPTION, s);
                    }
                  }, t.prototype._dispatchArrayBuffer = function (e) {
                    var t = e,
                        i = this._receivedLength;
                    this._receivedLength += t.byteLength, this._onDataArrival && this._onDataArrival(t, i, this._receivedLength);
                  }, t.prototype._onWebSocketError = function (e) {
                    this._status = n.LoaderStatus.kError;
                    var t = {
                      code: e.code,
                      msg: e.message
                    };
                    if (!this._onError) throw new r.RuntimeException(t.msg);

                    this._onError(n.LoaderErrors.EXCEPTION, t);
                  }, t;
                }(n.BaseLoader);
              },
              "./src/io/xhr-moz-chunked-loader.js":
              /*!******************************************!*\
              	  !*** ./src/io/xhr-moz-chunked-loader.js ***!
              	  \******************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => a
                });

                var n = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    r = i(
                /*! ./loader.js */
                "./src/io/loader.js"),
                    s = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    o = function () {
                  var e = function (t, i) {
                    return (e = Object.setPrototypeOf || {
                      __proto__: []
                    } instanceof Array && function (e, t) {
                      e.__proto__ = t;
                    } || function (e, t) {
                      for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
                    })(t, i);
                  };

                  return function (t, i) {
                    if ("function" != typeof i && null !== i) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");

                    function n() {
                      this.constructor = t;
                    }

                    e(t, i), t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype, new n());
                  };
                }();

                const a = function (e) {
                  function t(t, i) {
                    var n = e.call(this, "xhr-moz-chunked-loader") || this;
                    return n.TAG = "MozChunkedLoader", n._seekHandler = t, n._config = i, n._needStash = !0, n._xhr = null, n._requestAbort = !1, n._contentLength = null, n._receivedLength = 0, n;
                  }

                  return o(t, e), t.isSupported = function () {
                    try {
                      var e = new XMLHttpRequest();
                      return e.open("GET", "https://example.com", !0), e.responseType = "moz-chunked-arraybuffer", "moz-chunked-arraybuffer" === e.responseType;
                    } catch (e) {
                      return n.default.w("MozChunkedLoader", e.message), !1;
                    }
                  }, t.prototype.destroy = function () {
                    this.isWorking() && this.abort(), this._xhr && (this._xhr.onreadystatechange = null, this._xhr.onprogress = null, this._xhr.onloadend = null, this._xhr.onerror = null, this._xhr = null), e.prototype.destroy.call(this);
                  }, t.prototype.open = function (e, t) {
                    this._dataSource = e, this._range = t;
                    var i = e.url;
                    this._config.reuseRedirectedURL && null != e.redirectedURL && (i = e.redirectedURL);

                    var n = this._seekHandler.getConfig(i, t);

                    this._requestURL = n.url;
                    var s = this._xhr = new XMLHttpRequest();

                    if (s.open("GET", n.url, !0), s.responseType = "moz-chunked-arraybuffer", s.onreadystatechange = this._onReadyStateChange.bind(this), s.onprogress = this._onProgress.bind(this), s.onloadend = this._onLoadEnd.bind(this), s.onerror = this._onXhrError.bind(this), e.withCredentials && (s.withCredentials = !0), "object" == typeof n.headers) {
                      var o = n.headers;

                      for (var a in o) o.hasOwnProperty(a) && s.setRequestHeader(a, o[a]);
                    }

                    if ("object" == typeof this._config.headers) for (var a in o = this._config.headers) o.hasOwnProperty(a) && s.setRequestHeader(a, o[a]);
                    this._status = r.LoaderStatus.kConnecting, s.send();
                  }, t.prototype.abort = function () {
                    this._requestAbort = !0, this._xhr && this._xhr.abort(), this._status = r.LoaderStatus.kComplete;
                  }, t.prototype._onReadyStateChange = function (e) {
                    var t = e.target;

                    if (2 === t.readyState) {
                      if (null != t.responseURL && t.responseURL !== this._requestURL && this._onURLRedirect) {
                        var i = this._seekHandler.removeURLParameters(t.responseURL);

                        this._onURLRedirect(i);
                      }

                      if (0 !== t.status && (t.status < 200 || t.status > 299)) {
                        if (this._status = r.LoaderStatus.kError, !this._onError) throw new s.RuntimeException("MozChunkedLoader: Http code invalid, " + t.status + " " + t.statusText);

                        this._onError(r.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
                          code: t.status,
                          msg: t.statusText
                        });
                      } else this._status = r.LoaderStatus.kBuffering;
                    }
                  }, t.prototype._onProgress = function (e) {
                    if (this._status !== r.LoaderStatus.kError) {
                      null === this._contentLength && null !== e.total && 0 !== e.total && (this._contentLength = e.total, this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength));
                      var t = e.target.response,
                          i = this._range.from + this._receivedLength;
                      this._receivedLength += t.byteLength, this._onDataArrival && this._onDataArrival(t, i, this._receivedLength);
                    }
                  }, t.prototype._onLoadEnd = function (e) {
                    !0 !== this._requestAbort ? this._status !== r.LoaderStatus.kError && (this._status = r.LoaderStatus.kComplete, this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1)) : this._requestAbort = !1;
                  }, t.prototype._onXhrError = function (e) {
                    this._status = r.LoaderStatus.kError;
                    var t = 0,
                        i = null;
                    if (this._contentLength && e.loaded < this._contentLength ? (t = r.LoaderErrors.EARLY_EOF, i = {
                      code: -1,
                      msg: "Moz-Chunked stream meet Early-Eof"
                    }) : (t = r.LoaderErrors.EXCEPTION, i = {
                      code: -1,
                      msg: e.constructor.name + " " + e.type
                    }), !this._onError) throw new s.RuntimeException(i.msg);

                    this._onError(t, i);
                  }, t;
                }(r.BaseLoader);
              },
              "./src/io/xhr-range-loader.js":
              /*!************************************!*\
              	  !*** ./src/io/xhr-range-loader.js ***!
              	  \************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => u
                });

                var n = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    r = i(
                /*! ./speed-sampler.js */
                "./src/io/speed-sampler.js"),
                    s = i(
                /*! ./loader.js */
                "./src/io/loader.js"),
                    o = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js"),
                    a = function () {
                  var e = function (t, i) {
                    return (e = Object.setPrototypeOf || {
                      __proto__: []
                    } instanceof Array && function (e, t) {
                      e.__proto__ = t;
                    } || function (e, t) {
                      for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
                    })(t, i);
                  };

                  return function (t, i) {
                    if ("function" != typeof i && null !== i) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");

                    function n() {
                      this.constructor = t;
                    }

                    e(t, i), t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype, new n());
                  };
                }();

                const u = function (e) {
                  function t(t, i) {
                    var n = e.call(this, "xhr-range-loader") || this;
                    return n.TAG = "RangeLoader", n._seekHandler = t, n._config = i, n._needStash = !1, n._chunkSizeKBList = [128, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 5120, 6144, 7168, 8192], n._currentChunkSizeKB = 384, n._currentSpeedNormalized = 0, n._zeroSpeedChunkCount = 0, n._xhr = null, n._speedSampler = new r.default(), n._requestAbort = !1, n._waitForTotalLength = !1, n._totalLengthReceived = !1, n._currentRequestURL = null, n._currentRedirectedURL = null, n._currentRequestRange = null, n._totalLength = null, n._contentLength = null, n._receivedLength = 0, n._lastTimeLoaded = 0, n;
                  }

                  return a(t, e), t.isSupported = function () {
                    try {
                      var e = new XMLHttpRequest();
                      return e.open("GET", "https://example.com", !0), e.responseType = "arraybuffer", "arraybuffer" === e.responseType;
                    } catch (e) {
                      return n.default.w("RangeLoader", e.message), !1;
                    }
                  }, t.prototype.destroy = function () {
                    this.isWorking() && this.abort(), this._xhr && (this._xhr.onreadystatechange = null, this._xhr.onprogress = null, this._xhr.onload = null, this._xhr.onerror = null, this._xhr = null), e.prototype.destroy.call(this);
                  }, Object.defineProperty(t.prototype, "currentSpeed", {
                    get: function () {
                      return this._speedSampler.lastSecondKBps;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), t.prototype.open = function (e, t) {
                    this._dataSource = e, this._range = t, this._status = s.LoaderStatus.kConnecting;
                    var i = !1;
                    null != this._dataSource.filesize && 0 !== this._dataSource.filesize && (i = !0, this._totalLength = this._dataSource.filesize), this._totalLengthReceived || i ? this._openSubRange() : (this._waitForTotalLength = !0, this._internalOpen(this._dataSource, {
                      from: 0,
                      to: -1
                    }));
                  }, t.prototype._openSubRange = function () {
                    var e = 1024 * this._currentChunkSizeKB,
                        t = this._range.from + this._receivedLength,
                        i = t + e;
                    null != this._contentLength && i - this._range.from >= this._contentLength && (i = this._range.from + this._contentLength - 1), this._currentRequestRange = {
                      from: t,
                      to: i
                    }, this._internalOpen(this._dataSource, this._currentRequestRange);
                  }, t.prototype._internalOpen = function (e, t) {
                    this._lastTimeLoaded = 0;
                    var i = e.url;
                    this._config.reuseRedirectedURL && (null != this._currentRedirectedURL ? i = this._currentRedirectedURL : null != e.redirectedURL && (i = e.redirectedURL));

                    var n = this._seekHandler.getConfig(i, t);

                    this._currentRequestURL = n.url;
                    var r = this._xhr = new XMLHttpRequest();

                    if (r.open("GET", n.url, !0), r.responseType = "arraybuffer", r.onreadystatechange = this._onReadyStateChange.bind(this), r.onprogress = this._onProgress.bind(this), r.onload = this._onLoad.bind(this), r.onerror = this._onXhrError.bind(this), e.withCredentials && (r.withCredentials = !0), "object" == typeof n.headers) {
                      var s = n.headers;

                      for (var o in s) s.hasOwnProperty(o) && r.setRequestHeader(o, s[o]);
                    }

                    if ("object" == typeof this._config.headers) for (var o in s = this._config.headers) s.hasOwnProperty(o) && r.setRequestHeader(o, s[o]);
                    r.send();
                  }, t.prototype.abort = function () {
                    this._requestAbort = !0, this._internalAbort(), this._status = s.LoaderStatus.kComplete;
                  }, t.prototype._internalAbort = function () {
                    this._xhr && (this._xhr.onreadystatechange = null, this._xhr.onprogress = null, this._xhr.onload = null, this._xhr.onerror = null, this._xhr.abort(), this._xhr = null);
                  }, t.prototype._onReadyStateChange = function (e) {
                    var t = e.target;

                    if (2 === t.readyState) {
                      if (null != t.responseURL) {
                        var i = this._seekHandler.removeURLParameters(t.responseURL);

                        t.responseURL !== this._currentRequestURL && i !== this._currentRedirectedURL && (this._currentRedirectedURL = i, this._onURLRedirect && this._onURLRedirect(i));
                      }

                      if (t.status >= 200 && t.status <= 299) {
                        if (this._waitForTotalLength) return;
                        this._status = s.LoaderStatus.kBuffering;
                      } else {
                        if (this._status = s.LoaderStatus.kError, !this._onError) throw new o.RuntimeException("RangeLoader: Http code invalid, " + t.status + " " + t.statusText);

                        this._onError(s.LoaderErrors.HTTP_STATUS_CODE_INVALID, {
                          code: t.status,
                          msg: t.statusText
                        });
                      }
                    }
                  }, t.prototype._onProgress = function (e) {
                    if (this._status !== s.LoaderStatus.kError) {
                      if (null === this._contentLength) {
                        var t = !1;

                        if (this._waitForTotalLength) {
                          this._waitForTotalLength = !1, this._totalLengthReceived = !0, t = !0;
                          var i = e.total;
                          this._internalAbort(), null != i & 0 !== i && (this._totalLength = i);
                        }

                        if (-1 === this._range.to ? this._contentLength = this._totalLength - this._range.from : this._contentLength = this._range.to - this._range.from + 1, t) return void this._openSubRange();
                        this._onContentLengthKnown && this._onContentLengthKnown(this._contentLength);
                      }

                      var n = e.loaded - this._lastTimeLoaded;
                      this._lastTimeLoaded = e.loaded, this._speedSampler.addBytes(n);
                    }
                  }, t.prototype._normalizeSpeed = function (e) {
                    var t = this._chunkSizeKBList,
                        i = t.length - 1,
                        n = 0,
                        r = 0,
                        s = i;
                    if (e < t[0]) return t[0];

                    for (; r <= s;) {
                      if ((n = r + Math.floor((s - r) / 2)) === i || e >= t[n] && e < t[n + 1]) return t[n];
                      t[n] < e ? r = n + 1 : s = n - 1;
                    }
                  }, t.prototype._onLoad = function (e) {
                    if (this._status !== s.LoaderStatus.kError) if (this._waitForTotalLength) this._waitForTotalLength = !1;else {
                      this._lastTimeLoaded = 0;
                      var t = this._speedSampler.lastSecondKBps;

                      if (0 === t && (this._zeroSpeedChunkCount++, this._zeroSpeedChunkCount >= 3 && (t = this._speedSampler.currentKBps)), 0 !== t) {
                        var i = this._normalizeSpeed(t);

                        this._currentSpeedNormalized !== i && (this._currentSpeedNormalized = i, this._currentChunkSizeKB = i);
                      }

                      var n = e.target.response,
                          r = this._range.from + this._receivedLength;
                      this._receivedLength += n.byteLength;
                      var o = !1;
                      null != this._contentLength && this._receivedLength < this._contentLength ? this._openSubRange() : o = !0, this._onDataArrival && this._onDataArrival(n, r, this._receivedLength), o && (this._status = s.LoaderStatus.kComplete, this._onComplete && this._onComplete(this._range.from, this._range.from + this._receivedLength - 1));
                    }
                  }, t.prototype._onXhrError = function (e) {
                    this._status = s.LoaderStatus.kError;
                    var t = 0,
                        i = null;
                    if (this._contentLength && this._receivedLength > 0 && this._receivedLength < this._contentLength ? (t = s.LoaderErrors.EARLY_EOF, i = {
                      code: -1,
                      msg: "RangeLoader meet Early-Eof"
                    }) : (t = s.LoaderErrors.EXCEPTION, i = {
                      code: -1,
                      msg: e.constructor.name + " " + e.type
                    }), !this._onError) throw new o.RuntimeException(i.msg);

                    this._onError(t, i);
                  }, t;
                }(s.BaseLoader);
              },
              "./src/player/flv-player.js":
              /*!**********************************!*\
              	  !*** ./src/player/flv-player.js ***!
              	  \**********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => p
                });

                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    o = i(
                /*! ../utils/browser.js */
                "./src/utils/browser.js"),
                    a = i(
                /*! ./player-events.js */
                "./src/player/player-events.js"),
                    u = i(
                /*! ../core/transmuxer.js */
                "./src/core/transmuxer.js"),
                    l = i(
                /*! ../core/transmuxing-events.js */
                "./src/core/transmuxing-events.js"),
                    d = i(
                /*! ../core/mse-controller.js */
                "./src/core/mse-controller.js"),
                    h = i(
                /*! ../core/mse-events.js */
                "./src/core/mse-events.js"),
                    c = i(
                /*! ./player-errors.js */
                "./src/player/player-errors.js"),
                    f = i(
                /*! ../config.js */
                "./src/config.js"),
                    _ = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const p = function () {
                  function e(e, t) {
                    if (this.TAG = "FlvPlayer", this._type = "FlvPlayer", this._emitter = new (r())(), this._config = (0, f.createDefaultConfig)(), "object" == typeof t && Object.assign(this._config, t), "flv" !== e.type.toLowerCase()) throw new _.InvalidArgumentException("FlvPlayer requires an flv MediaDataSource input!");
                    !0 === e.isLive && (this._config.isLive = !0), this.e = {
                      onvLoadedMetadata: this._onvLoadedMetadata.bind(this),
                      onvSeeking: this._onvSeeking.bind(this),
                      onvCanPlay: this._onvCanPlay.bind(this),
                      onvStalled: this._onvStalled.bind(this),
                      onvProgress: this._onvProgress.bind(this)
                    }, self.performance && self.performance.now ? this._now = self.performance.now.bind(self.performance) : this._now = Date.now, this._pendingSeekTime = null, this._requestSetTime = !1, this._seekpointRecord = null, this._progressChecker = null, this._mediaDataSource = e, this._mediaElement = null, this._msectl = null, this._transmuxer = null, this._mseSourceOpened = !1, this._hasPendingLoad = !1, this._receivedCanPlay = !1, this._mediaInfo = null, this._statisticsInfo = null;
                    var i = o.default.chrome && (o.default.version.major < 50 || 50 === o.default.version.major && o.default.version.build < 2661);
                    this._alwaysSeekKeyframe = !!(i || o.default.msedge || o.default.msie), this._alwaysSeekKeyframe && (this._config.accurateSeek = !1);
                  }

                  return e.prototype.destroy = function () {
                    null != this._progressChecker && (window.clearInterval(this._progressChecker), this._progressChecker = null), this._transmuxer && this.unload(), this._mediaElement && this.detachMediaElement(), this.e = null, this._mediaDataSource = null, this._emitter.removeAllListeners(), this._emitter = null;
                  }, e.prototype.on = function (e, t) {
                    var i = this;
                    e === a.default.MEDIA_INFO ? null != this._mediaInfo && Promise.resolve().then(function () {
                      i._emitter.emit(a.default.MEDIA_INFO, i.mediaInfo);
                    }) : e === a.default.STATISTICS_INFO && null != this._statisticsInfo && Promise.resolve().then(function () {
                      i._emitter.emit(a.default.STATISTICS_INFO, i.statisticsInfo);
                    }), this._emitter.addListener(e, t);
                  }, e.prototype.off = function (e, t) {
                    this._emitter.removeListener(e, t);
                  }, e.prototype.attachMediaElement = function (e) {
                    var t = this;
                    if (this._mediaElement = e, e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata), e.addEventListener("seeking", this.e.onvSeeking), e.addEventListener("canplay", this.e.onvCanPlay), e.addEventListener("stalled", this.e.onvStalled), e.addEventListener("progress", this.e.onvProgress), this._msectl = new d.default(this._config), this._msectl.on(h.default.UPDATE_END, this._onmseUpdateEnd.bind(this)), this._msectl.on(h.default.BUFFER_FULL, this._onmseBufferFull.bind(this)), this._msectl.on(h.default.SOURCE_OPEN, function () {
                      t._mseSourceOpened = !0, t._hasPendingLoad && (t._hasPendingLoad = !1, t.load());
                    }), this._msectl.on(h.default.ERROR, function (e) {
                      t._emitter.emit(a.default.ERROR, c.ErrorTypes.MEDIA_ERROR, c.ErrorDetails.MEDIA_MSE_ERROR, e);
                    }), this._msectl.attachMediaElement(e), null != this._pendingSeekTime) try {
                      e.currentTime = this._pendingSeekTime, this._pendingSeekTime = null;
                    } catch (e) {}
                  }, e.prototype.detachMediaElement = function () {
                    this._mediaElement && (this._msectl.detachMediaElement(), this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata), this._mediaElement.removeEventListener("seeking", this.e.onvSeeking), this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay), this._mediaElement.removeEventListener("stalled", this.e.onvStalled), this._mediaElement.removeEventListener("progress", this.e.onvProgress), this._mediaElement = null), this._msectl && (this._msectl.destroy(), this._msectl = null);
                  }, e.prototype.load = function () {
                    var e = this;
                    if (!this._mediaElement) throw new _.IllegalStateException("HTMLMediaElement must be attached before load()!");
                    if (this._transmuxer) throw new _.IllegalStateException("FlvPlayer.load() has been called, please call unload() first!");
                    this._hasPendingLoad || (this._config.deferLoadAfterSourceOpen && !1 === this._mseSourceOpened ? this._hasPendingLoad = !0 : (this._mediaElement.readyState > 0 && (this._requestSetTime = !0, this._mediaElement.currentTime = 0), this._transmuxer = new u.default(this._mediaDataSource, this._config), this._transmuxer.on(l.default.INIT_SEGMENT, function (t, i) {
                      e._msectl.appendInitSegment(i);
                    }), this._transmuxer.on(l.default.MEDIA_SEGMENT, function (t, i) {
                      if (e._msectl.appendMediaSegment(i), e._config.lazyLoad && !e._config.isLive) {
                        var n = e._mediaElement.currentTime;
                        i.info.endDts >= 1e3 * (n + e._config.lazyLoadMaxDuration) && null == e._progressChecker && (s.default.v(e.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"), e._suspendTransmuxer());
                      }
                    }), this._transmuxer.on(l.default.LOADING_COMPLETE, function () {
                      e._msectl.endOfStream(), e._emitter.emit(a.default.LOADING_COMPLETE);
                    }), this._transmuxer.on(l.default.RECOVERED_EARLY_EOF, function () {
                      e._emitter.emit(a.default.RECOVERED_EARLY_EOF);
                    }), this._transmuxer.on(l.default.IO_ERROR, function (t, i) {
                      e._emitter.emit(a.default.ERROR, c.ErrorTypes.NETWORK_ERROR, t, i);
                    }), this._transmuxer.on(l.default.DEMUX_ERROR, function (t, i) {
                      e._emitter.emit(a.default.ERROR, c.ErrorTypes.MEDIA_ERROR, t, {
                        code: -1,
                        msg: i
                      });
                    }), this._transmuxer.on(l.default.MEDIA_INFO, function (t) {
                      e._mediaInfo = t, e._emitter.emit(a.default.MEDIA_INFO, Object.assign({}, t));
                    }), this._transmuxer.on(l.default.METADATA_ARRIVED, function (t) {
                      e._emitter.emit(a.default.METADATA_ARRIVED, t);
                    }), this._transmuxer.on(l.default.SCRIPTDATA_ARRIVED, function (t) {
                      e._emitter.emit(a.default.SCRIPTDATA_ARRIVED, t);
                    }), this._transmuxer.on(l.default.STATISTICS_INFO, function (t) {
                      e._statisticsInfo = e._fillStatisticsInfo(t), e._emitter.emit(a.default.STATISTICS_INFO, Object.assign({}, e._statisticsInfo));
                    }), this._transmuxer.on(l.default.RECOMMEND_SEEKPOINT, function (t) {
                      e._mediaElement && !e._config.accurateSeek && (e._requestSetTime = !0, e._mediaElement.currentTime = t / 1e3);
                    }), this._transmuxer.open()));
                  }, e.prototype.unload = function () {
                    this._mediaElement && this._mediaElement.pause(), this._msectl && this._msectl.seek(0), this._transmuxer && (this._transmuxer.close(), this._transmuxer.destroy(), this._transmuxer = null);
                  }, e.prototype.play = function () {
                    return this._mediaElement.play();
                  }, e.prototype.pause = function () {
                    this._mediaElement.pause();
                  }, Object.defineProperty(e.prototype, "type", {
                    get: function () {
                      return this._type;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "buffered", {
                    get: function () {
                      return this._mediaElement.buffered;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "duration", {
                    get: function () {
                      return this._mediaElement.duration;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "volume", {
                    get: function () {
                      return this._mediaElement.volume;
                    },
                    set: function (e) {
                      this._mediaElement.volume = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "muted", {
                    get: function () {
                      return this._mediaElement.muted;
                    },
                    set: function (e) {
                      this._mediaElement.muted = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "currentTime", {
                    get: function () {
                      return this._mediaElement ? this._mediaElement.currentTime : 0;
                    },
                    set: function (e) {
                      this._mediaElement ? this._internalSeek(e) : this._pendingSeekTime = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "mediaInfo", {
                    get: function () {
                      return Object.assign({}, this._mediaInfo);
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "statisticsInfo", {
                    get: function () {
                      return null == this._statisticsInfo && (this._statisticsInfo = {}), this._statisticsInfo = this._fillStatisticsInfo(this._statisticsInfo), Object.assign({}, this._statisticsInfo);
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype._fillStatisticsInfo = function (e) {
                    if (e.playerType = this._type, !(this._mediaElement instanceof HTMLVideoElement)) return e;
                    var t = !0,
                        i = 0,
                        n = 0;

                    if (this._mediaElement.getVideoPlaybackQuality) {
                      var r = this._mediaElement.getVideoPlaybackQuality();

                      i = r.totalVideoFrames, n = r.droppedVideoFrames;
                    } else null != this._mediaElement.webkitDecodedFrameCount ? (i = this._mediaElement.webkitDecodedFrameCount, n = this._mediaElement.webkitDroppedFrameCount) : t = !1;

                    return t && (e.decodedFrames = i, e.droppedFrames = n), e;
                  }, e.prototype._onmseUpdateEnd = function () {
                    if (this._config.lazyLoad && !this._config.isLive) {
                      for (var e = this._mediaElement.buffered, t = this._mediaElement.currentTime, i = 0, n = 0; n < e.length; n++) {
                        var r = e.start(n),
                            o = e.end(n);

                        if (r <= t && t < o) {
                          i = o;
                          break;
                        }
                      }

                      i >= t + this._config.lazyLoadMaxDuration && null == this._progressChecker && (s.default.v(this.TAG, "Maximum buffering duration exceeded, suspend transmuxing task"), this._suspendTransmuxer());
                    }
                  }, e.prototype._onmseBufferFull = function () {
                    s.default.v(this.TAG, "MSE SourceBuffer is full, suspend transmuxing task"), null == this._progressChecker && this._suspendTransmuxer();
                  }, e.prototype._suspendTransmuxer = function () {
                    this._transmuxer && (this._transmuxer.pause(), null == this._progressChecker && (this._progressChecker = window.setInterval(this._checkProgressAndResume.bind(this), 1e3)));
                  }, e.prototype._checkProgressAndResume = function () {
                    for (var e = this._mediaElement.currentTime, t = this._mediaElement.buffered, i = !1, n = 0; n < t.length; n++) {
                      var r = t.start(n),
                          o = t.end(n);

                      if (e >= r && e < o) {
                        e >= o - this._config.lazyLoadRecoverDuration && (i = !0);
                        break;
                      }
                    }

                    i && (window.clearInterval(this._progressChecker), this._progressChecker = null, i && (s.default.v(this.TAG, "Continue loading from paused position"), this._transmuxer.resume()));
                  }, e.prototype._isTimepointBuffered = function (e) {
                    for (var t = this._mediaElement.buffered, i = 0; i < t.length; i++) {
                      var n = t.start(i),
                          r = t.end(i);
                      if (e >= n && e < r) return !0;
                    }

                    return !1;
                  }, e.prototype._internalSeek = function (e) {
                    var t = this._isTimepointBuffered(e),
                        i = !1,
                        n = 0;

                    if (e < 1 && this._mediaElement.buffered.length > 0) {
                      var r = this._mediaElement.buffered.start(0);

                      (r < 1 && e < r || o.default.safari) && (i = !0, n = o.default.safari ? .1 : r);
                    }

                    if (i) this._requestSetTime = !0, this._mediaElement.currentTime = n;else if (t) {
                      if (this._alwaysSeekKeyframe) {
                        var s = this._msectl.getNearestKeyframe(Math.floor(1e3 * e));

                        this._requestSetTime = !0, this._mediaElement.currentTime = null != s ? s.dts / 1e3 : e;
                      } else this._requestSetTime = !0, this._mediaElement.currentTime = e;

                      null != this._progressChecker && this._checkProgressAndResume();
                    } else null != this._progressChecker && (window.clearInterval(this._progressChecker), this._progressChecker = null), this._msectl.seek(e), this._transmuxer.seek(Math.floor(1e3 * e)), this._config.accurateSeek && (this._requestSetTime = !0, this._mediaElement.currentTime = e);
                  }, e.prototype._checkAndApplyUnbufferedSeekpoint = function () {
                    if (this._seekpointRecord) if (this._seekpointRecord.recordTime <= this._now() - 100) {
                      var e = this._mediaElement.currentTime;
                      this._seekpointRecord = null, this._isTimepointBuffered(e) || (null != this._progressChecker && (window.clearTimeout(this._progressChecker), this._progressChecker = null), this._msectl.seek(e), this._transmuxer.seek(Math.floor(1e3 * e)), this._config.accurateSeek && (this._requestSetTime = !0, this._mediaElement.currentTime = e));
                    } else window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
                  }, e.prototype._checkAndResumeStuckPlayback = function (e) {
                    var t = this._mediaElement;

                    if (e || !this._receivedCanPlay || t.readyState < 2) {
                      var i = t.buffered;
                      i.length > 0 && t.currentTime < i.start(0) && (s.default.w(this.TAG, "Playback seems stuck at " + t.currentTime + ", seek to " + i.start(0)), this._requestSetTime = !0, this._mediaElement.currentTime = i.start(0), this._mediaElement.removeEventListener("progress", this.e.onvProgress));
                    } else this._mediaElement.removeEventListener("progress", this.e.onvProgress);
                  }, e.prototype._onvLoadedMetadata = function (e) {
                    null != this._pendingSeekTime && (this._mediaElement.currentTime = this._pendingSeekTime, this._pendingSeekTime = null);
                  }, e.prototype._onvSeeking = function (e) {
                    var t = this._mediaElement.currentTime,
                        i = this._mediaElement.buffered;
                    if (this._requestSetTime) this._requestSetTime = !1;else {
                      if (t < 1 && i.length > 0) {
                        var n = i.start(0);
                        if (n < 1 && t < n || o.default.safari) return this._requestSetTime = !0, void (this._mediaElement.currentTime = o.default.safari ? .1 : n);
                      }

                      if (this._isTimepointBuffered(t)) {
                        if (this._alwaysSeekKeyframe) {
                          var r = this._msectl.getNearestKeyframe(Math.floor(1e3 * t));

                          null != r && (this._requestSetTime = !0, this._mediaElement.currentTime = r.dts / 1e3);
                        }

                        null != this._progressChecker && this._checkProgressAndResume();
                      } else this._seekpointRecord = {
                        seekPoint: t,
                        recordTime: this._now()
                      }, window.setTimeout(this._checkAndApplyUnbufferedSeekpoint.bind(this), 50);
                    }
                  }, e.prototype._onvCanPlay = function (e) {
                    this._receivedCanPlay = !0, this._mediaElement.removeEventListener("canplay", this.e.onvCanPlay);
                  }, e.prototype._onvStalled = function (e) {
                    this._checkAndResumeStuckPlayback(!0);
                  }, e.prototype._onvProgress = function (e) {
                    this._checkAndResumeStuckPlayback();
                  }, e;
                }();
              },
              "./src/player/native-player.js":
              /*!*************************************!*\
              	  !*** ./src/player/native-player.js ***!
              	  \*************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => u
                });
                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! ./player-events.js */
                "./src/player/player-events.js"),
                    o = i(
                /*! ../config.js */
                "./src/config.js"),
                    a = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const u = function () {
                  function e(e, t) {
                    if (this.TAG = "NativePlayer", this._type = "NativePlayer", this._emitter = new (r())(), this._config = (0, o.createDefaultConfig)(), "object" == typeof t && Object.assign(this._config, t), "flv" === e.type.toLowerCase()) throw new a.InvalidArgumentException("NativePlayer does't support flv MediaDataSource input!");
                    if (e.hasOwnProperty("segments")) throw new a.InvalidArgumentException("NativePlayer(" + e.type + ") doesn't support multipart playback!");
                    this.e = {
                      onvLoadedMetadata: this._onvLoadedMetadata.bind(this)
                    }, this._pendingSeekTime = null, this._statisticsReporter = null, this._mediaDataSource = e, this._mediaElement = null;
                  }

                  return e.prototype.destroy = function () {
                    this._mediaElement && (this.unload(), this.detachMediaElement()), this.e = null, this._mediaDataSource = null, this._emitter.removeAllListeners(), this._emitter = null;
                  }, e.prototype.on = function (e, t) {
                    var i = this;
                    e === s.default.MEDIA_INFO ? null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then(function () {
                      i._emitter.emit(s.default.MEDIA_INFO, i.mediaInfo);
                    }) : e === s.default.STATISTICS_INFO && null != this._mediaElement && 0 !== this._mediaElement.readyState && Promise.resolve().then(function () {
                      i._emitter.emit(s.default.STATISTICS_INFO, i.statisticsInfo);
                    }), this._emitter.addListener(e, t);
                  }, e.prototype.off = function (e, t) {
                    this._emitter.removeListener(e, t);
                  }, e.prototype.attachMediaElement = function (e) {
                    if (this._mediaElement = e, e.addEventListener("loadedmetadata", this.e.onvLoadedMetadata), null != this._pendingSeekTime) try {
                      e.currentTime = this._pendingSeekTime, this._pendingSeekTime = null;
                    } catch (e) {}
                  }, e.prototype.detachMediaElement = function () {
                    this._mediaElement && (this._mediaElement.src = "", this._mediaElement.removeAttribute("src"), this._mediaElement.removeEventListener("loadedmetadata", this.e.onvLoadedMetadata), this._mediaElement = null), null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter), this._statisticsReporter = null);
                  }, e.prototype.load = function () {
                    if (!this._mediaElement) throw new a.IllegalStateException("HTMLMediaElement must be attached before load()!");
                    this._mediaElement.src = this._mediaDataSource.url, this._mediaElement.readyState > 0 && (this._mediaElement.currentTime = 0), this._mediaElement.preload = "auto", this._mediaElement.load(), this._statisticsReporter = window.setInterval(this._reportStatisticsInfo.bind(this), this._config.statisticsInfoReportInterval);
                  }, e.prototype.unload = function () {
                    this._mediaElement && (this._mediaElement.src = "", this._mediaElement.removeAttribute("src")), null != this._statisticsReporter && (window.clearInterval(this._statisticsReporter), this._statisticsReporter = null);
                  }, e.prototype.play = function () {
                    return this._mediaElement.play();
                  }, e.prototype.pause = function () {
                    this._mediaElement.pause();
                  }, Object.defineProperty(e.prototype, "type", {
                    get: function () {
                      return this._type;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "buffered", {
                    get: function () {
                      return this._mediaElement.buffered;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "duration", {
                    get: function () {
                      return this._mediaElement.duration;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "volume", {
                    get: function () {
                      return this._mediaElement.volume;
                    },
                    set: function (e) {
                      this._mediaElement.volume = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "muted", {
                    get: function () {
                      return this._mediaElement.muted;
                    },
                    set: function (e) {
                      this._mediaElement.muted = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "currentTime", {
                    get: function () {
                      return this._mediaElement ? this._mediaElement.currentTime : 0;
                    },
                    set: function (e) {
                      this._mediaElement ? this._mediaElement.currentTime = e : this._pendingSeekTime = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "mediaInfo", {
                    get: function () {
                      var e = {
                        mimeType: (this._mediaElement instanceof HTMLAudioElement ? "audio/" : "video/") + this._mediaDataSource.type
                      };
                      return this._mediaElement && (e.duration = Math.floor(1e3 * this._mediaElement.duration), this._mediaElement instanceof HTMLVideoElement && (e.width = this._mediaElement.videoWidth, e.height = this._mediaElement.videoHeight)), e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "statisticsInfo", {
                    get: function () {
                      var e = {
                        playerType: this._type,
                        url: this._mediaDataSource.url
                      };
                      if (!(this._mediaElement instanceof HTMLVideoElement)) return e;
                      var t = !0,
                          i = 0,
                          n = 0;

                      if (this._mediaElement.getVideoPlaybackQuality) {
                        var r = this._mediaElement.getVideoPlaybackQuality();

                        i = r.totalVideoFrames, n = r.droppedVideoFrames;
                      } else null != this._mediaElement.webkitDecodedFrameCount ? (i = this._mediaElement.webkitDecodedFrameCount, n = this._mediaElement.webkitDroppedFrameCount) : t = !1;

                      return t && (e.decodedFrames = i, e.droppedFrames = n), e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype._onvLoadedMetadata = function (e) {
                    null != this._pendingSeekTime && (this._mediaElement.currentTime = this._pendingSeekTime, this._pendingSeekTime = null), this._emitter.emit(s.default.MEDIA_INFO, this.mediaInfo);
                  }, e.prototype._reportStatisticsInfo = function () {
                    this._emitter.emit(s.default.STATISTICS_INFO, this.statisticsInfo);
                  }, e;
                }();
              },
              "./src/player/player-errors.js":
              /*!*************************************!*\
              	  !*** ./src/player/player-errors.js ***!
              	  \*************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  ErrorTypes: () => s,
                  ErrorDetails: () => o
                });
                var n = i(
                /*! ../io/loader.js */
                "./src/io/loader.js"),
                    r = i(
                /*! ../demux/demux-errors.js */
                "./src/demux/demux-errors.js"),
                    s = {
                  NETWORK_ERROR: "NetworkError",
                  MEDIA_ERROR: "MediaError",
                  OTHER_ERROR: "OtherError"
                },
                    o = {
                  NETWORK_EXCEPTION: n.LoaderErrors.EXCEPTION,
                  NETWORK_STATUS_CODE_INVALID: n.LoaderErrors.HTTP_STATUS_CODE_INVALID,
                  NETWORK_TIMEOUT: n.LoaderErrors.CONNECTING_TIMEOUT,
                  NETWORK_UNRECOVERABLE_EARLY_EOF: n.LoaderErrors.UNRECOVERABLE_EARLY_EOF,
                  MEDIA_MSE_ERROR: "MediaMSEError",
                  MEDIA_FORMAT_ERROR: r.default.FORMAT_ERROR,
                  MEDIA_FORMAT_UNSUPPORTED: r.default.FORMAT_UNSUPPORTED,
                  MEDIA_CODEC_UNSUPPORTED: r.default.CODEC_UNSUPPORTED
                };
              },
              "./src/player/player-events.js":
              /*!*************************************!*\
              	  !*** ./src/player/player-events.js ***!
              	  \*************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });
                const n = {
                  ERROR: "error",
                  LOADING_COMPLETE: "loading_complete",
                  RECOVERED_EARLY_EOF: "recovered_early_eof",
                  MEDIA_INFO: "media_info",
                  METADATA_ARRIVED: "metadata_arrived",
                  SCRIPTDATA_ARRIVED: "scriptdata_arrived",
                  STATISTICS_INFO: "statistics_info"
                };
              },
              "./src/remux/aac-silent.js":
              /*!*********************************!*\
              	  !*** ./src/remux/aac-silent.js ***!
              	  \*********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => n
                });

                const n = function () {
                  function e() {}

                  return e.getSilentFrame = function (e, t) {
                    if ("mp4a.40.2" === e) {
                      if (1 === t) return new Uint8Array([0, 200, 0, 128, 35, 128]);
                      if (2 === t) return new Uint8Array([33, 0, 73, 144, 2, 25, 0, 35, 128]);
                      if (3 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 142]);
                      if (4 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 128, 44, 128, 8, 2, 56]);
                      if (5 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 56]);
                      if (6 === t) return new Uint8Array([0, 200, 0, 128, 32, 132, 1, 38, 64, 8, 100, 0, 130, 48, 4, 153, 0, 33, 144, 2, 0, 178, 0, 32, 8, 224]);
                    } else {
                      if (1 === t) return new Uint8Array([1, 64, 34, 128, 163, 78, 230, 128, 186, 8, 0, 0, 0, 28, 6, 241, 193, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
                      if (2 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
                      if (3 === t) return new Uint8Array([1, 64, 34, 128, 163, 94, 230, 128, 186, 8, 0, 0, 0, 0, 149, 0, 6, 241, 161, 10, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 90, 94]);
                    }

                    return null;
                  }, e;
                }();
              },
              "./src/remux/mp4-generator.js":
              /*!************************************!*\
              	  !*** ./src/remux/mp4-generator.js ***!
              	  \************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => r
                });

                var n = function () {
                  function e() {}

                  return e.init = function () {
                    for (var t in e.types = {
                      avc1: [],
                      avcC: [],
                      btrt: [],
                      dinf: [],
                      dref: [],
                      esds: [],
                      ftyp: [],
                      hdlr: [],
                      mdat: [],
                      mdhd: [],
                      mdia: [],
                      mfhd: [],
                      minf: [],
                      moof: [],
                      moov: [],
                      mp4a: [],
                      mvex: [],
                      mvhd: [],
                      sdtp: [],
                      stbl: [],
                      stco: [],
                      stsc: [],
                      stsd: [],
                      stsz: [],
                      stts: [],
                      tfdt: [],
                      tfhd: [],
                      traf: [],
                      trak: [],
                      trun: [],
                      trex: [],
                      tkhd: [],
                      vmhd: [],
                      smhd: [],
                      ".mp3": []
                    }, e.types) e.types.hasOwnProperty(t) && (e.types[t] = [t.charCodeAt(0), t.charCodeAt(1), t.charCodeAt(2), t.charCodeAt(3)]);

                    var i = e.constants = {};
                    i.FTYP = new Uint8Array([105, 115, 111, 109, 0, 0, 0, 1, 105, 115, 111, 109, 97, 118, 99, 49]), i.STSD_PREFIX = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), i.STTS = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), i.STSC = i.STCO = i.STTS, i.STSZ = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]), i.HDLR_VIDEO = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0]), i.HDLR_AUDIO = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0]), i.DREF = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1]), i.SMHD = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0]), i.VMHD = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]);
                  }, e.box = function (e) {
                    for (var t = 8, i = null, n = Array.prototype.slice.call(arguments, 1), r = n.length, s = 0; s < r; s++) t += n[s].byteLength;

                    (i = new Uint8Array(t))[0] = t >>> 24 & 255, i[1] = t >>> 16 & 255, i[2] = t >>> 8 & 255, i[3] = 255 & t, i.set(e, 4);
                    var o = 8;

                    for (s = 0; s < r; s++) i.set(n[s], o), o += n[s].byteLength;

                    return i;
                  }, e.generateInitSegment = function (t) {
                    var i = e.box(e.types.ftyp, e.constants.FTYP),
                        n = e.moov(t),
                        r = new Uint8Array(i.byteLength + n.byteLength);
                    return r.set(i, 0), r.set(n, i.byteLength), r;
                  }, e.moov = function (t) {
                    var i = e.mvhd(t.timescale, t.duration),
                        n = e.trak(t),
                        r = e.mvex(t);
                    return e.box(e.types.moov, i, n, r);
                  }, e.mvhd = function (t, i) {
                    return e.box(e.types.mvhd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, t >>> 24 & 255, t >>> 16 & 255, t >>> 8 & 255, 255 & t, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255]));
                  }, e.trak = function (t) {
                    return e.box(e.types.trak, e.tkhd(t), e.mdia(t));
                  }, e.tkhd = function (t) {
                    var i = t.id,
                        n = t.duration,
                        r = t.presentWidth,
                        s = t.presentHeight;
                    return e.box(e.types.tkhd, new Uint8Array([0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 0, 0, 0, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, r >>> 8 & 255, 255 & r, 0, 0, s >>> 8 & 255, 255 & s, 0, 0]));
                  }, e.mdia = function (t) {
                    return e.box(e.types.mdia, e.mdhd(t), e.hdlr(t), e.minf(t));
                  }, e.mdhd = function (t) {
                    var i = t.timescale,
                        n = t.duration;
                    return e.box(e.types.mdhd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n, 85, 196, 0, 0]));
                  }, e.hdlr = function (t) {
                    var i = null;
                    return i = "audio" === t.type ? e.constants.HDLR_AUDIO : e.constants.HDLR_VIDEO, e.box(e.types.hdlr, i);
                  }, e.minf = function (t) {
                    var i = null;
                    return i = "audio" === t.type ? e.box(e.types.smhd, e.constants.SMHD) : e.box(e.types.vmhd, e.constants.VMHD), e.box(e.types.minf, i, e.dinf(), e.stbl(t));
                  }, e.dinf = function () {
                    return e.box(e.types.dinf, e.box(e.types.dref, e.constants.DREF));
                  }, e.stbl = function (t) {
                    return e.box(e.types.stbl, e.stsd(t), e.box(e.types.stts, e.constants.STTS), e.box(e.types.stsc, e.constants.STSC), e.box(e.types.stsz, e.constants.STSZ), e.box(e.types.stco, e.constants.STCO));
                  }, e.stsd = function (t) {
                    return "audio" === t.type ? "mp3" === t.codec ? e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp3(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.mp4a(t)) : e.box(e.types.stsd, e.constants.STSD_PREFIX, e.avc1(t));
                  }, e.mp3 = function (t) {
                    var i = t.channelCount,
                        n = t.audioSampleRate,
                        r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, 0, 0]);
                    return e.box(e.types[".mp3"], r);
                  }, e.mp4a = function (t) {
                    var i = t.channelCount,
                        n = t.audioSampleRate,
                        r = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, i, 0, 16, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, 0, 0]);
                    return e.box(e.types.mp4a, r, e.esds(t));
                  }, e.esds = function (t) {
                    var i = t.config || [],
                        n = i.length,
                        r = new Uint8Array([0, 0, 0, 0, 3, 23 + n, 0, 1, 0, 4, 15 + n, 64, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5].concat([n]).concat(i).concat([6, 1, 2]));
                    return e.box(e.types.esds, r);
                  }, e.avc1 = function (t) {
                    var i = t.avcc,
                        n = t.codecWidth,
                        r = t.codecHeight,
                        s = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, n >>> 8 & 255, 255 & n, r >>> 8 & 255, 255 & r, 0, 72, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 0, 1, 10, 120, 113, 113, 47, 102, 108, 118, 46, 106, 115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 255, 255]);
                    return e.box(e.types.avc1, s, e.box(e.types.avcC, i));
                  }, e.mvex = function (t) {
                    return e.box(e.types.mvex, e.trex(t));
                  }, e.trex = function (t) {
                    var i = t.id,
                        n = new Uint8Array([0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1]);
                    return e.box(e.types.trex, n);
                  }, e.moof = function (t, i) {
                    return e.box(e.types.moof, e.mfhd(t.sequenceNumber), e.traf(t, i));
                  }, e.mfhd = function (t) {
                    var i = new Uint8Array([0, 0, 0, 0, t >>> 24 & 255, t >>> 16 & 255, t >>> 8 & 255, 255 & t]);
                    return e.box(e.types.mfhd, i);
                  }, e.traf = function (t, i) {
                    var n = t.id,
                        r = e.box(e.types.tfhd, new Uint8Array([0, 0, 0, 0, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n])),
                        s = e.box(e.types.tfdt, new Uint8Array([0, 0, 0, 0, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i])),
                        o = e.sdtp(t),
                        a = e.trun(t, o.byteLength + 16 + 16 + 8 + 16 + 8 + 8);
                    return e.box(e.types.traf, r, s, a, o);
                  }, e.sdtp = function (t) {
                    for (var i = t.samples || [], n = i.length, r = new Uint8Array(4 + n), s = 0; s < n; s++) {
                      var o = i[s].flags;
                      r[s + 4] = o.isLeading << 6 | o.dependsOn << 4 | o.isDependedOn << 2 | o.hasRedundancy;
                    }

                    return e.box(e.types.sdtp, r);
                  }, e.trun = function (t, i) {
                    var n = t.samples || [],
                        r = n.length,
                        s = 12 + 16 * r,
                        o = new Uint8Array(s);
                    i += 8 + s, o.set([0, 0, 15, 1, r >>> 24 & 255, r >>> 16 & 255, r >>> 8 & 255, 255 & r, i >>> 24 & 255, i >>> 16 & 255, i >>> 8 & 255, 255 & i], 0);

                    for (var a = 0; a < r; a++) {
                      var u = n[a].duration,
                          l = n[a].size,
                          d = n[a].flags,
                          h = n[a].cts;
                      o.set([u >>> 24 & 255, u >>> 16 & 255, u >>> 8 & 255, 255 & u, l >>> 24 & 255, l >>> 16 & 255, l >>> 8 & 255, 255 & l, d.isLeading << 2 | d.dependsOn, d.isDependedOn << 6 | d.hasRedundancy << 4 | d.isNonSync, 0, 0, h >>> 24 & 255, h >>> 16 & 255, h >>> 8 & 255, 255 & h], 12 + 16 * a);
                    }

                    return e.box(e.types.trun, o);
                  }, e.mdat = function (t) {
                    return e.box(e.types.mdat, t);
                  }, e;
                }();

                n.init();
                const r = n;
              },
              "./src/remux/mp4-remuxer.js":
              /*!**********************************!*\
              	  !*** ./src/remux/mp4-remuxer.js ***!
              	  \**********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => l
                });
                var n = i(
                /*! ../utils/logger.js */
                "./src/utils/logger.js"),
                    r = i(
                /*! ./mp4-generator.js */
                "./src/remux/mp4-generator.js"),
                    s = i(
                /*! ./aac-silent.js */
                "./src/remux/aac-silent.js"),
                    o = i(
                /*! ../utils/browser.js */
                "./src/utils/browser.js"),
                    a = i(
                /*! ../core/media-segment-info.js */
                "./src/core/media-segment-info.js"),
                    u = i(
                /*! ../utils/exception.js */
                "./src/utils/exception.js");

                const l = function () {
                  function e(e) {
                    this.TAG = "MP4Remuxer", this._config = e, this._isLive = !0 === e.isLive, this._dtsBase = -1, this._dtsBaseInited = !1, this._audioDtsBase = 1 / 0, this._videoDtsBase = 1 / 0, this._audioNextDts = void 0, this._videoNextDts = void 0, this._audioStashedLastSample = null, this._videoStashedLastSample = null, this._audioMeta = null, this._videoMeta = null, this._audioSegmentInfoList = new a.MediaSegmentInfoList("audio"), this._videoSegmentInfoList = new a.MediaSegmentInfoList("video"), this._onInitSegment = null, this._onMediaSegment = null, this._forceFirstIDR = !(!o.default.chrome || !(o.default.version.major < 50 || 50 === o.default.version.major && o.default.version.build < 2661)), this._fillSilentAfterSeek = o.default.msedge || o.default.msie, this._mp3UseMpegAudio = !o.default.firefox, this._fillAudioTimestampGap = this._config.fixAudioTimestampGap;
                  }

                  return e.prototype.destroy = function () {
                    this._dtsBase = -1, this._dtsBaseInited = !1, this._audioMeta = null, this._videoMeta = null, this._audioSegmentInfoList.clear(), this._audioSegmentInfoList = null, this._videoSegmentInfoList.clear(), this._videoSegmentInfoList = null, this._onInitSegment = null, this._onMediaSegment = null;
                  }, e.prototype.bindDataSource = function (e) {
                    return e.onDataAvailable = this.remux.bind(this), e.onTrackMetadata = this._onTrackMetadataReceived.bind(this), this;
                  }, Object.defineProperty(e.prototype, "onInitSegment", {
                    get: function () {
                      return this._onInitSegment;
                    },
                    set: function (e) {
                      this._onInitSegment = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "onMediaSegment", {
                    get: function () {
                      return this._onMediaSegment;
                    },
                    set: function (e) {
                      this._onMediaSegment = e;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype.insertDiscontinuity = function () {
                    this._audioNextDts = this._videoNextDts = void 0;
                  }, e.prototype.seek = function (e) {
                    this._audioStashedLastSample = null, this._videoStashedLastSample = null, this._videoSegmentInfoList.clear(), this._audioSegmentInfoList.clear();
                  }, e.prototype.remux = function (e, t) {
                    if (!this._onMediaSegment) throw new u.IllegalStateException("MP4Remuxer: onMediaSegment callback must be specificed!");
                    this._dtsBaseInited || this._calculateDtsBase(e, t), this._remuxVideo(t), this._remuxAudio(e);
                  }, e.prototype._onTrackMetadataReceived = function (e, t) {
                    var i = null,
                        n = "mp4",
                        s = t.codec;
                    if ("audio" === e) this._audioMeta = t, "mp3" === t.codec && this._mp3UseMpegAudio ? (n = "mpeg", s = "", i = new Uint8Array()) : i = r.default.generateInitSegment(t);else {
                      if ("video" !== e) return;
                      this._videoMeta = t, i = r.default.generateInitSegment(t);
                    }
                    if (!this._onInitSegment) throw new u.IllegalStateException("MP4Remuxer: onInitSegment callback must be specified!");

                    this._onInitSegment(e, {
                      type: e,
                      data: i.buffer,
                      codec: s,
                      container: e + "/" + n,
                      mediaDuration: t.duration
                    });
                  }, e.prototype._calculateDtsBase = function (e, t) {
                    this._dtsBaseInited || (e.samples && e.samples.length && (this._audioDtsBase = e.samples[0].dts), t.samples && t.samples.length && (this._videoDtsBase = t.samples[0].dts), this._dtsBase = Math.min(this._audioDtsBase, this._videoDtsBase), this._dtsBaseInited = !0);
                  }, e.prototype.flushStashedSamples = function () {
                    var e = this._videoStashedLastSample,
                        t = this._audioStashedLastSample,
                        i = {
                      type: "video",
                      id: 1,
                      sequenceNumber: 0,
                      samples: [],
                      length: 0
                    };
                    null != e && (i.samples.push(e), i.length = e.length);
                    var n = {
                      type: "audio",
                      id: 2,
                      sequenceNumber: 0,
                      samples: [],
                      length: 0
                    };
                    null != t && (n.samples.push(t), n.length = t.length), this._videoStashedLastSample = null, this._audioStashedLastSample = null, this._remuxVideo(i, !0), this._remuxAudio(n, !0);
                  }, e.prototype._remuxAudio = function (e, t) {
                    if (null != this._audioMeta) {
                      var i,
                          u = e,
                          l = u.samples,
                          d = void 0,
                          h = -1,
                          c = this._audioMeta.refSampleDuration,
                          f = "mp3" === this._audioMeta.codec && this._mp3UseMpegAudio,
                          _ = this._dtsBaseInited && void 0 === this._audioNextDts,
                          p = !1;

                      if (l && 0 !== l.length && (1 !== l.length || t)) {
                        var m = 0,
                            g = null,
                            v = 0;
                        f ? (m = 0, v = u.length) : (m = 8, v = 8 + u.length);
                        var y = null;

                        if (l.length > 1 && (v -= (y = l.pop()).length), null != this._audioStashedLastSample) {
                          var E = this._audioStashedLastSample;
                          this._audioStashedLastSample = null, l.unshift(E), v += E.length;
                        }

                        null != y && (this._audioStashedLastSample = y);
                        var b = l[0].dts - this._dtsBase;
                        if (this._audioNextDts) d = b - this._audioNextDts;else if (this._audioSegmentInfoList.isEmpty()) d = 0, this._fillSilentAfterSeek && !this._videoSegmentInfoList.isEmpty() && "mp3" !== this._audioMeta.originalCodec && (p = !0);else {
                          var S = this._audioSegmentInfoList.getLastSampleBefore(b);

                          if (null != S) {
                            var L = b - (S.originalDts + S.duration);
                            L <= 3 && (L = 0), d = b - (S.dts + S.duration + L);
                          } else d = 0;
                        }

                        if (p) {
                          var A = b - d,
                              R = this._videoSegmentInfoList.getLastSegmentBefore(b);

                          if (null != R && R.beginDts < A) {
                            if (B = s.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount)) {
                              var w = R.beginDts,
                                  T = A - R.beginDts;
                              n.default.v(this.TAG, "InsertPrefixSilentAudio: dts: " + w + ", duration: " + T), l.unshift({
                                unit: B,
                                dts: w,
                                pts: w
                              }), v += B.byteLength;
                            }
                          } else p = !1;
                        }

                        for (var O = [], k = 0; k < l.length; k++) {
                          var I = (E = l[k]).unit,
                              C = E.dts - this._dtsBase,
                              D = (w = C, !1),
                              x = null,
                              M = 0;

                          if (!(C < -.001)) {
                            if ("mp3" !== this._audioMeta.codec) {
                              var P = C;

                              if (this._audioNextDts && (P = this._audioNextDts), (d = C - P) <= -3 * c) {
                                n.default.w(this.TAG, "Dropping 1 audio frame (originalDts: " + C + " ms ,curRefDts: " + P + " ms)  due to dtsCorrection: " + d + " ms overlap.");
                                continue;
                              }

                              if (d >= 3 * c && this._fillAudioTimestampGap && !o.default.safari) {
                                D = !0;
                                var B,
                                    j = Math.floor(d / c);
                                n.default.w(this.TAG, "Large audio timestamp gap detected, may cause AV sync to drift. Silent frames will be generated to avoid unsync.\noriginalDts: " + C + " ms, curRefDts: " + P + " ms, dtsCorrection: " + Math.round(d) + " ms, generate: " + j + " frames"), w = Math.floor(P), M = Math.floor(P + c) - w, null == (B = s.default.getSilentFrame(this._audioMeta.originalCodec, this._audioMeta.channelCount)) && (n.default.w(this.TAG, "Unable to generate silent frame for " + this._audioMeta.originalCodec + " with " + this._audioMeta.channelCount + " channels, repeat last frame"), B = I), x = [];

                                for (var U = 0; U < j; U++) {
                                  P += c;
                                  var N = Math.floor(P),
                                      F = Math.floor(P + c) - N,
                                      G = {
                                    dts: N,
                                    pts: N,
                                    cts: 0,
                                    unit: B,
                                    size: B.byteLength,
                                    duration: F,
                                    originalDts: C,
                                    flags: {
                                      isLeading: 0,
                                      dependsOn: 1,
                                      isDependedOn: 0,
                                      hasRedundancy: 0
                                    }
                                  };
                                  x.push(G), v += G.size;
                                }

                                this._audioNextDts = P + c;
                              } else w = Math.floor(P), M = Math.floor(P + c) - w, this._audioNextDts = P + c;
                            } else w = C - d, M = k !== l.length - 1 ? l[k + 1].dts - this._dtsBase - d - w : null != y ? y.dts - this._dtsBase - d - w : O.length >= 1 ? O[O.length - 1].duration : Math.floor(c), this._audioNextDts = w + M;

                            -1 === h && (h = w), O.push({
                              dts: w,
                              pts: w,
                              cts: 0,
                              unit: E.unit,
                              size: E.unit.byteLength,
                              duration: M,
                              originalDts: C,
                              flags: {
                                isLeading: 0,
                                dependsOn: 1,
                                isDependedOn: 0,
                                hasRedundancy: 0
                              }
                            }), D && O.push.apply(O, x);
                          }
                        }

                        if (0 === O.length) return u.samples = [], void (u.length = 0);

                        for (f ? g = new Uint8Array(v) : ((g = new Uint8Array(v))[0] = v >>> 24 & 255, g[1] = v >>> 16 & 255, g[2] = v >>> 8 & 255, g[3] = 255 & v, g.set(r.default.types.mdat, 4)), k = 0; k < O.length; k++) I = O[k].unit, g.set(I, m), m += I.byteLength;

                        var V = O[O.length - 1];
                        i = V.dts + V.duration;
                        var z = new a.MediaSegmentInfo();
                        z.beginDts = h, z.endDts = i, z.beginPts = h, z.endPts = i, z.originalBeginDts = O[0].originalDts, z.originalEndDts = V.originalDts + V.duration, z.firstSample = new a.SampleInfo(O[0].dts, O[0].pts, O[0].duration, O[0].originalDts, !1), z.lastSample = new a.SampleInfo(V.dts, V.pts, V.duration, V.originalDts, !1), this._isLive || this._audioSegmentInfoList.append(z), u.samples = O, u.sequenceNumber++;
                        var W = null;
                        W = f ? new Uint8Array() : r.default.moof(u, h), u.samples = [], u.length = 0;
                        var K = {
                          type: "audio",
                          data: this._mergeBoxes(W, g).buffer,
                          sampleCount: O.length,
                          info: z
                        };
                        f && _ && (K.timestampOffset = h), this._onMediaSegment("audio", K);
                      }
                    }
                  }, e.prototype._remuxVideo = function (e, t) {
                    if (null != this._videoMeta) {
                      var i,
                          n,
                          s = e,
                          o = s.samples,
                          u = void 0,
                          l = -1,
                          d = -1;

                      if (o && 0 !== o.length && (1 !== o.length || t)) {
                        var h = 8,
                            c = null,
                            f = 8 + e.length,
                            _ = null;

                        if (o.length > 1 && (f -= (_ = o.pop()).length), null != this._videoStashedLastSample) {
                          var p = this._videoStashedLastSample;
                          this._videoStashedLastSample = null, o.unshift(p), f += p.length;
                        }

                        null != _ && (this._videoStashedLastSample = _);
                        var m = o[0].dts - this._dtsBase;
                        if (this._videoNextDts) u = m - this._videoNextDts;else if (this._videoSegmentInfoList.isEmpty()) u = 0;else {
                          var g = this._videoSegmentInfoList.getLastSampleBefore(m);

                          if (null != g) {
                            var v = m - (g.originalDts + g.duration);
                            v <= 3 && (v = 0), u = m - (g.dts + g.duration + v);
                          } else u = 0;
                        }

                        for (var y = new a.MediaSegmentInfo(), E = [], b = 0; b < o.length; b++) {
                          var S = (p = o[b]).dts - this._dtsBase,
                              L = p.isKeyframe,
                              A = S - u,
                              R = p.cts,
                              w = A + R;
                          -1 === l && (l = A, d = w);
                          var T = 0;

                          if (T = b !== o.length - 1 ? o[b + 1].dts - this._dtsBase - u - A : null != _ ? _.dts - this._dtsBase - u - A : E.length >= 1 ? E[E.length - 1].duration : Math.floor(this._videoMeta.refSampleDuration), L) {
                            var O = new a.SampleInfo(A, w, T, p.dts, !0);
                            O.fileposition = p.fileposition, y.appendSyncPoint(O);
                          }

                          E.push({
                            dts: A,
                            pts: w,
                            cts: R,
                            units: p.units,
                            size: p.length,
                            isKeyframe: L,
                            duration: T,
                            originalDts: S,
                            flags: {
                              isLeading: 0,
                              dependsOn: L ? 2 : 1,
                              isDependedOn: L ? 1 : 0,
                              hasRedundancy: 0,
                              isNonSync: L ? 0 : 1
                            }
                          });
                        }

                        for ((c = new Uint8Array(f))[0] = f >>> 24 & 255, c[1] = f >>> 16 & 255, c[2] = f >>> 8 & 255, c[3] = 255 & f, c.set(r.default.types.mdat, 4), b = 0; b < E.length; b++) for (var k = E[b].units; k.length;) {
                          var I = k.shift().data;
                          c.set(I, h), h += I.byteLength;
                        }

                        var C = E[E.length - 1];

                        if (i = C.dts + C.duration, n = C.pts + C.duration, this._videoNextDts = i, y.beginDts = l, y.endDts = i, y.beginPts = d, y.endPts = n, y.originalBeginDts = E[0].originalDts, y.originalEndDts = C.originalDts + C.duration, y.firstSample = new a.SampleInfo(E[0].dts, E[0].pts, E[0].duration, E[0].originalDts, E[0].isKeyframe), y.lastSample = new a.SampleInfo(C.dts, C.pts, C.duration, C.originalDts, C.isKeyframe), this._isLive || this._videoSegmentInfoList.append(y), s.samples = E, s.sequenceNumber++, this._forceFirstIDR) {
                          var D = E[0].flags;
                          D.dependsOn = 2, D.isNonSync = 0;
                        }

                        var x = r.default.moof(s, l);
                        s.samples = [], s.length = 0, this._onMediaSegment("video", {
                          type: "video",
                          data: this._mergeBoxes(x, c).buffer,
                          sampleCount: E.length,
                          info: y
                        });
                      }
                    }
                  }, e.prototype._mergeBoxes = function (e, t) {
                    var i = new Uint8Array(e.byteLength + t.byteLength);
                    return i.set(e, 0), i.set(t, e.byteLength), i;
                  }, e;
                }();
              },
              "./src/utils/browser.js":
              /*!******************************!*\
              	  !*** ./src/utils/browser.js ***!
              	  \******************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => r
                });
                var n = {};
                !function () {
                  var e = self.navigator.userAgent.toLowerCase(),
                      t = /(edge)\/([\w.]+)/.exec(e) || /(opr)[\/]([\w.]+)/.exec(e) || /(chrome)[ \/]([\w.]+)/.exec(e) || /(iemobile)[\/]([\w.]+)/.exec(e) || /(version)(applewebkit)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+).*(version)[ \/]([\w.]+).*(safari)[ \/]([\w.]+)/.exec(e) || /(webkit)[ \/]([\w.]+)/.exec(e) || /(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e) || /(msie) ([\w.]+)/.exec(e) || e.indexOf("trident") >= 0 && /(rv)(?::| )([\w.]+)/.exec(e) || e.indexOf("compatible") < 0 && /(firefox)[ \/]([\w.]+)/.exec(e) || [],
                      i = /(ipad)/.exec(e) || /(ipod)/.exec(e) || /(windows phone)/.exec(e) || /(iphone)/.exec(e) || /(kindle)/.exec(e) || /(android)/.exec(e) || /(windows)/.exec(e) || /(mac)/.exec(e) || /(linux)/.exec(e) || /(cros)/.exec(e) || [],
                      r = {
                    browser: t[5] || t[3] || t[1] || "",
                    version: t[2] || t[4] || "0",
                    majorVersion: t[4] || t[2] || "0",
                    platform: i[0] || ""
                  },
                      s = {};

                  if (r.browser) {
                    s[r.browser] = !0;
                    var o = r.majorVersion.split(".");
                    s.version = {
                      major: parseInt(r.majorVersion, 10),
                      string: r.version
                    }, o.length > 1 && (s.version.minor = parseInt(o[1], 10)), o.length > 2 && (s.version.build = parseInt(o[2], 10));
                  }

                  if (r.platform && (s[r.platform] = !0), (s.chrome || s.opr || s.safari) && (s.webkit = !0), s.rv || s.iemobile) {
                    s.rv && delete s.rv;
                    var a = "msie";
                    r.browser = a, s.msie = !0;
                  }

                  if (s.edge) {
                    delete s.edge;
                    var u = "msedge";
                    r.browser = u, s.msedge = !0;
                  }

                  if (s.opr) {
                    var l = "opera";
                    r.browser = l, s.opera = !0;
                  }

                  if (s.safari && s.android) {
                    var d = "android";
                    r.browser = d, s.android = !0;
                  }

                  for (var h in s.name = r.browser, s.platform = r.platform, n) n.hasOwnProperty(h) && delete n[h];

                  Object.assign(n, s);
                }();
                const r = n;
              },
              "./src/utils/exception.js":
              /*!********************************!*\
              	  !*** ./src/utils/exception.js ***!
              	  \********************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  RuntimeException: () => r,
                  IllegalStateException: () => s,
                  InvalidArgumentException: () => o,
                  NotImplementedException: () => a
                });

                var n = function () {
                  var e = function (t, i) {
                    return (e = Object.setPrototypeOf || {
                      __proto__: []
                    } instanceof Array && function (e, t) {
                      e.__proto__ = t;
                    } || function (e, t) {
                      for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
                    })(t, i);
                  };

                  return function (t, i) {
                    if ("function" != typeof i && null !== i) throw new TypeError("Class extends value " + String(i) + " is not a constructor or null");

                    function n() {
                      this.constructor = t;
                    }

                    e(t, i), t.prototype = null === i ? Object.create(i) : (n.prototype = i.prototype, new n());
                  };
                }(),
                    r = function () {
                  function e(e) {
                    this._message = e;
                  }

                  return Object.defineProperty(e.prototype, "name", {
                    get: function () {
                      return "RuntimeException";
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e.prototype, "message", {
                    get: function () {
                      return this._message;
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.prototype.toString = function () {
                    return this.name + ": " + this.message;
                  }, e;
                }(),
                    s = function (e) {
                  function t(t) {
                    return e.call(this, t) || this;
                  }

                  return n(t, e), Object.defineProperty(t.prototype, "name", {
                    get: function () {
                      return "IllegalStateException";
                    },
                    enumerable: !1,
                    configurable: !0
                  }), t;
                }(r),
                    o = function (e) {
                  function t(t) {
                    return e.call(this, t) || this;
                  }

                  return n(t, e), Object.defineProperty(t.prototype, "name", {
                    get: function () {
                      return "InvalidArgumentException";
                    },
                    enumerable: !1,
                    configurable: !0
                  }), t;
                }(r),
                    a = function (e) {
                  function t(t) {
                    return e.call(this, t) || this;
                  }

                  return n(t, e), Object.defineProperty(t.prototype, "name", {
                    get: function () {
                      return "NotImplementedException";
                    },
                    enumerable: !1,
                    configurable: !0
                  }), t;
                }(r);
              },
              "./src/utils/logger.js":
              /*!*****************************!*\
              	  !*** ./src/utils/logger.js ***!
              	  \*****************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => o
                });

                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = function () {
                  function e() {}

                  return e.e = function (t, i) {
                    t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
                    var n = "[" + t + "] > " + i;
                    e.ENABLE_CALLBACK && e.emitter.emit("log", "error", n), e.ENABLE_ERROR && (console.error ? console.error(n) : console.warn ? console.warn(n) : console.log(n));
                  }, e.i = function (t, i) {
                    t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
                    var n = "[" + t + "] > " + i;
                    e.ENABLE_CALLBACK && e.emitter.emit("log", "info", n), e.ENABLE_INFO && (console.info ? console.info(n) : console.log(n));
                  }, e.w = function (t, i) {
                    t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
                    var n = "[" + t + "] > " + i;
                    e.ENABLE_CALLBACK && e.emitter.emit("log", "warn", n), e.ENABLE_WARN && (console.warn ? console.warn(n) : console.log(n));
                  }, e.d = function (t, i) {
                    t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
                    var n = "[" + t + "] > " + i;
                    e.ENABLE_CALLBACK && e.emitter.emit("log", "debug", n), e.ENABLE_DEBUG && (console.debug ? console.debug(n) : console.log(n));
                  }, e.v = function (t, i) {
                    t && !e.FORCE_GLOBAL_TAG || (t = e.GLOBAL_TAG);
                    var n = "[" + t + "] > " + i;
                    e.ENABLE_CALLBACK && e.emitter.emit("log", "verbose", n), e.ENABLE_VERBOSE && console.log(n);
                  }, e;
                }();

                s.GLOBAL_TAG = "flv.js", s.FORCE_GLOBAL_TAG = !1, s.ENABLE_ERROR = !0, s.ENABLE_INFO = !0, s.ENABLE_WARN = !0, s.ENABLE_DEBUG = !0, s.ENABLE_VERBOSE = !0, s.ENABLE_CALLBACK = !1, s.emitter = new (r())();
                const o = s;
              },
              "./src/utils/logging-control.js":
              /*!**************************************!*\
              	  !*** ./src/utils/logging-control.js ***!
              	  \**************************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => a
                });

                var n = i(
                /*! events */
                "./node_modules/events/events.js"),
                    r = i.n(n),
                    s = i(
                /*! ./logger.js */
                "./src/utils/logger.js"),
                    o = function () {
                  function e() {}

                  return Object.defineProperty(e, "forceGlobalTag", {
                    get: function () {
                      return s.default.FORCE_GLOBAL_TAG;
                    },
                    set: function (t) {
                      s.default.FORCE_GLOBAL_TAG = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "globalTag", {
                    get: function () {
                      return s.default.GLOBAL_TAG;
                    },
                    set: function (t) {
                      s.default.GLOBAL_TAG = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableAll", {
                    get: function () {
                      return s.default.ENABLE_VERBOSE && s.default.ENABLE_DEBUG && s.default.ENABLE_INFO && s.default.ENABLE_WARN && s.default.ENABLE_ERROR;
                    },
                    set: function (t) {
                      s.default.ENABLE_VERBOSE = t, s.default.ENABLE_DEBUG = t, s.default.ENABLE_INFO = t, s.default.ENABLE_WARN = t, s.default.ENABLE_ERROR = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableDebug", {
                    get: function () {
                      return s.default.ENABLE_DEBUG;
                    },
                    set: function (t) {
                      s.default.ENABLE_DEBUG = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableVerbose", {
                    get: function () {
                      return s.default.ENABLE_VERBOSE;
                    },
                    set: function (t) {
                      s.default.ENABLE_VERBOSE = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableInfo", {
                    get: function () {
                      return s.default.ENABLE_INFO;
                    },
                    set: function (t) {
                      s.default.ENABLE_INFO = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableWarn", {
                    get: function () {
                      return s.default.ENABLE_WARN;
                    },
                    set: function (t) {
                      s.default.ENABLE_WARN = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), Object.defineProperty(e, "enableError", {
                    get: function () {
                      return s.default.ENABLE_ERROR;
                    },
                    set: function (t) {
                      s.default.ENABLE_ERROR = t, e._notifyChange();
                    },
                    enumerable: !1,
                    configurable: !0
                  }), e.getConfig = function () {
                    return {
                      globalTag: s.default.GLOBAL_TAG,
                      forceGlobalTag: s.default.FORCE_GLOBAL_TAG,
                      enableVerbose: s.default.ENABLE_VERBOSE,
                      enableDebug: s.default.ENABLE_DEBUG,
                      enableInfo: s.default.ENABLE_INFO,
                      enableWarn: s.default.ENABLE_WARN,
                      enableError: s.default.ENABLE_ERROR,
                      enableCallback: s.default.ENABLE_CALLBACK
                    };
                  }, e.applyConfig = function (e) {
                    s.default.GLOBAL_TAG = e.globalTag, s.default.FORCE_GLOBAL_TAG = e.forceGlobalTag, s.default.ENABLE_VERBOSE = e.enableVerbose, s.default.ENABLE_DEBUG = e.enableDebug, s.default.ENABLE_INFO = e.enableInfo, s.default.ENABLE_WARN = e.enableWarn, s.default.ENABLE_ERROR = e.enableError, s.default.ENABLE_CALLBACK = e.enableCallback;
                  }, e._notifyChange = function () {
                    var t = e.emitter;

                    if (t.listenerCount("change") > 0) {
                      var i = e.getConfig();
                      t.emit("change", i);
                    }
                  }, e.registerListener = function (t) {
                    e.emitter.addListener("change", t);
                  }, e.removeListener = function (t) {
                    e.emitter.removeListener("change", t);
                  }, e.addLogListener = function (t) {
                    s.default.emitter.addListener("log", t), s.default.emitter.listenerCount("log") > 0 && (s.default.ENABLE_CALLBACK = !0, e._notifyChange());
                  }, e.removeLogListener = function (t) {
                    s.default.emitter.removeListener("log", t), 0 === s.default.emitter.listenerCount("log") && (s.default.ENABLE_CALLBACK = !1, e._notifyChange());
                  }, e;
                }();

                o.emitter = new (r())();
                const a = o;
              },
              "./src/utils/polyfill.js":
              /*!*******************************!*\
              	  !*** ./src/utils/polyfill.js ***!
              	  \*******************************/
              (e, t, i) => {
                i.r(t), i.d(t, {
                  default: () => r
                });

                var n = function () {
                  function e() {}

                  return e.install = function () {
                    Object.setPrototypeOf = Object.setPrototypeOf || function (e, t) {
                      return e.__proto__ = t, e;
                    }, Object.assign = Object.assign || function (e) {
                      if (null == e) throw new TypeError("Cannot convert undefined or null to object");

                      for (var t = Object(e), i = 1; i < arguments.length; i++) {
                        var n = arguments[i];
                        if (null != n) for (var r in n) n.hasOwnProperty(r) && (t[r] = n[r]);
                      }

                      return t;
                    }, "function" != typeof self.Promise && i(
                    /*! es6-promise */
                    "./node_modules/es6-promise/dist/es6-promise.js").polyfill();
                  }, e;
                }();

                n.install();
                const r = n;
              },
              "./src/utils/utf8-conv.js":
              /*!********************************!*\
              	  !*** ./src/utils/utf8-conv.js ***!
              	  \********************************/
              (e, t, i) => {
                function n(e, t, i) {
                  var n = e;

                  if (t + i < n.length) {
                    for (; i--;) if (128 != (192 & n[++t])) return !1;

                    return !0;
                  }

                  return !1;
                }

                i.r(t), i.d(t, {
                  default: () => r
                });

                const r = function (e) {
                  for (var t = [], i = e, r = 0, s = e.length; r < s;) if (i[r] < 128) t.push(String.fromCharCode(i[r])), ++r;else {
                    if (i[r] < 192) ;else if (i[r] < 224) {
                      if (n(i, r, 1) && (o = (31 & i[r]) << 6 | 63 & i[r + 1]) >= 128) {
                        t.push(String.fromCharCode(65535 & o)), r += 2;
                        continue;
                      }
                    } else if (i[r] < 240) {
                      if (n(i, r, 2) && (o = (15 & i[r]) << 12 | (63 & i[r + 1]) << 6 | 63 & i[r + 2]) >= 2048 && 55296 != (63488 & o)) {
                        t.push(String.fromCharCode(65535 & o)), r += 3;
                        continue;
                      }
                    } else if (i[r] < 248) {
                      var o;

                      if (n(i, r, 3) && (o = (7 & i[r]) << 18 | (63 & i[r + 1]) << 12 | (63 & i[r + 2]) << 6 | 63 & i[r + 3]) > 65536 && o < 1114112) {
                        o -= 65536, t.push(String.fromCharCode(o >>> 10 | 55296)), t.push(String.fromCharCode(1023 & o | 56320)), r += 4;
                        continue;
                      }
                    }
                    t.push(String.fromCharCode(65533)), ++r;
                  }

                  return t.join("");
                };
              }
            },
                t = {};

            function i(n) {
              var r = t[n];
              if (void 0 !== r) return r.exports;
              var s = t[n] = {
                exports: {}
              };
              return e[n].call(s.exports, s, s.exports, i), s.exports;
            }

            return i.m = e, i.n = e => {
              var t = e && e.__esModule ? () => e.default : () => e;
              return i.d(t, {
                a: t
              }), t;
            }, i.d = (e, t) => {
              for (var n in t) i.o(t, n) && !i.o(e, n) && Object.defineProperty(e, n, {
                enumerable: !0,
                get: t[n]
              });
            }, i.g = function () {
              if ("object" == typeof globalThis) return globalThis;

              try {
                return this || new Function("return this")();
              } catch (e) {
                if ("object" == typeof window) return window;
              }
            }(), i.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), i.r = e => {
              "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
                value: "Module"
              }), Object.defineProperty(e, "__esModule", {
                value: !0
              });
            }, i("./src/index.js");
          })();
        }, e.exports = i();
      }(t);

      var i = e(t.exports),
          n = function () {
        function e() {}

        return e.MessageType = {
          login: 100,
          getStream: 102,
          heartBeat: 103,
          getRoom: 104
        }, e.EventType = {
          LOGIN: "LOGIN",
          GET_ROOM_LIST: "GET_ROOM_LIST",
          GET_STREAM_LIST: "GET_STREAM_LIST",
          CLOSE_CONNECT: "CLOSE_CONNECT"
        }, e;
      }(),
          r = function () {
        function e() {}

        return e._getDate = function (e) {
          return e.getFullYear() + "-" + ((e.getMonth() + 1 < 10 ? "0" + (e.getMonth() + 1) : e.getMonth() + 1) + "-") + (e.getDate() + " ") + (e.getHours() + ":") + ((e.getMinutes() < 10 ? "0" + e.getMinutes() : e.getMinutes()) + ":") + e.getSeconds();
        }, e.info = function (e) {
          var t = new Date();
          console.log(this._getDate(t) + " -> |Info| -> " + e);
        }, e.error = function (e) {
          var t = new Date();
          console.log(this._getDate(t) + " -> |Error| -> " + e);
        }, e.warn = function (e) {
          var t = new Date();
          console.log(this._getDate(t) + " -> |Warn| -> " + e);
        }, e;
      }(),
          s = function (e, t) {
        return (s = Object.setPrototypeOf || {
          __proto__: []
        } instanceof Array && function (e, t) {
          e.__proto__ = t;
        } || function (e, t) {
          for (var i in t) Object.prototype.hasOwnProperty.call(t, i) && (e[i] = t[i]);
        })(e, t);
      };

      function o(e, t) {
        if ("function" != typeof t && null !== t) throw new TypeError("Class extends value " + String(t) + " is not a constructor or null");

        function i() {
          this.constructor = e;
        }

        s(e, t), e.prototype = null === t ? Object.create(t) : (i.prototype = t.prototype, new i());
      }

      var a = function () {
        return (a = Object.assign || function (e) {
          for (var t, i = 1, n = arguments.length; i < n; i++) for (var r in t = arguments[i]) Object.prototype.hasOwnProperty.call(t, r) && (e[r] = t[r]);

          return e;
        }).apply(this, arguments);
      };

      function u(e, t, i, n) {
        return new (i || (i = Promise))(function (r, s) {
          function o(e) {
            try {
              u(n.next(e));
            } catch (e) {
              s(e);
            }
          }

          function a(e) {
            try {
              u(n.throw(e));
            } catch (e) {
              s(e);
            }
          }

          function u(e) {
            var t;
            e.done ? r(e.value) : (t = e.value, t instanceof i ? t : new i(function (e) {
              e(t);
            })).then(o, a);
          }

          u((n = n.apply(e, t || [])).next());
        });
      }

      function l(e, t) {
        var i,
            n,
            r,
            s,
            o = {
          label: 0,
          sent: function () {
            if (1 & r[0]) throw r[1];
            return r[1];
          },
          trys: [],
          ops: []
        };
        return s = {
          next: a(0),
          throw: a(1),
          return: a(2)
        }, "function" == typeof Symbol && (s[Symbol.iterator] = function () {
          return this;
        }), s;

        function a(s) {
          return function (a) {
            return function (s) {
              if (i) throw new TypeError("Generator is already executing.");

              for (; o;) try {
                if (i = 1, n && (r = 2 & s[0] ? n.return : s[0] ? n.throw || ((r = n.return) && r.call(n), 0) : n.next) && !(r = r.call(n, s[1])).done) return r;

                switch (n = 0, r && (s = [2 & s[0], r.value]), s[0]) {
                  case 0:
                  case 1:
                    r = s;
                    break;

                  case 4:
                    return o.label++, {
                      value: s[1],
                      done: !1
                    };

                  case 5:
                    o.label++, n = s[1], s = [0];
                    continue;

                  case 7:
                    s = o.ops.pop(), o.trys.pop();
                    continue;

                  default:
                    if (!(r = o.trys, (r = r.length > 0 && r[r.length - 1]) || 6 !== s[0] && 2 !== s[0])) {
                      o = 0;
                      continue;
                    }

                    if (3 === s[0] && (!r || s[1] > r[0] && s[1] < r[3])) {
                      o.label = s[1];
                      break;
                    }

                    if (6 === s[0] && o.label < r[1]) {
                      o.label = r[1], r = s;
                      break;
                    }

                    if (r && o.label < r[2]) {
                      o.label = r[2], o.ops.push(s);
                      break;
                    }

                    r[2] && o.ops.pop(), o.trys.pop();
                    continue;
                }

                s = t.call(e, o);
              } catch (e) {
                s = [6, e], n = 0;
              } finally {
                i = r = 0;
              }

              if (5 & s[0]) throw s[1];
              return {
                value: s[0] ? s[1] : void 0,
                done: !0
              };
            }([s, a]);
          };
        }
      }

      var d = h;

      function h() {}

      h.mixin = function (e) {
        var t = e.prototype || e;
        t.isWildEmitter = !0, t.on = function (e, t, i) {
          this.callbacks = this.callbacks || {};
          var n = 3 === arguments.length,
              r = n ? arguments[1] : void 0,
              s = n ? arguments[2] : arguments[1];
          return s._groupName = r, (this.callbacks[e] = this.callbacks[e] || []).push(s), this;
        }, t.once = function (e, t, i) {
          var n = this,
              r = 3 === arguments.length,
              s = r ? arguments[1] : void 0,
              o = r ? arguments[2] : arguments[1];

          function a() {
            n.off(e, a), o.apply(this, arguments);
          }

          return this.on(e, s, a), this;
        }, t.releaseGroup = function (e) {
          var t, i, n, r;

          for (t in this.callbacks = this.callbacks || {}, this.callbacks) for (i = 0, n = (r = this.callbacks[t]).length; i < n; i++) r[i]._groupName === e && (r.splice(i, 1), i--, n--);

          return this;
        }, t.off = function (e, t) {
          this.callbacks = this.callbacks || {};
          var i,
              n = this.callbacks[e];
          return n ? 1 === arguments.length ? (delete this.callbacks[e], this) : (-1 !== (i = n.indexOf(t)) && (n.splice(i, 1), 0 === n.length && delete this.callbacks[e]), this) : this;
        }, t.emit = function (e) {
          this.callbacks = this.callbacks || {};
          var t,
              i,
              n,
              r = [].slice.call(arguments, 1),
              s = this.callbacks[e],
              o = this.getWildcardCallbacks(e);
          if (s) for (t = 0, i = (n = s.slice()).length; t < i && n[t]; ++t) n[t].apply(this, r);
          if (o) for (i = o.length, t = 0, i = (n = o.slice()).length; t < i && n[t]; ++t) n[t].apply(this, [e].concat(r));
          return this;
        }, t.getWildcardCallbacks = function (e) {
          this.callbacks = this.callbacks || {};
          var t,
              i,
              n = [];

          for (t in this.callbacks) i = t.split("*"), ("*" === t || 2 === i.length && e.slice(0, i[0].length) === i[0]) && (n = n.concat(this.callbacks[t]));

          return n;
        };
      }, h.mixin(h);

      var c = function (e) {
        function t() {
          var i = e.call(this) || this;
          return t._instance ? t._instance : t._instance = i;
        }

        return o(t, e), Object.defineProperty(t, "instance", {
          get: function () {
            return t._instance || (t._instance = new t());
          },
          enumerable: !1,
          configurable: !0
        }), t._instance = null, t;
      }(d),
          f = function () {
        function e(e) {
          this._heartBeatInterval = null, this._session = void 0, this._webSocketLink = e, this._signalWebSocket = null;
        }

        return e.prototype.init = function () {
          var e = this;
          return new Promise(function (t, i) {
            r.info("Start to connect webSocket"), e._signalWebSocket = new WebSocket(e._webSocketLink), e._signalWebSocket.onopen = function () {
              r.info("WebSocket is connected"), t();
            }, e._signalWebSocket.onerror = function () {
              r.error("WebSocket failed to init!"), i(), c.instance.emit("init:fail");
            }, e._signalWebSocket.onmessage = function (t) {
              e._onReceiveMessage(t);
            }, e._signalWebSocket.onclose = function () {
              r.info("WebSocket is closed，you need destroy the client"), c.instance.emit(n.EventType.CLOSE_CONNECT), c.instance.off(n.EventType.CLOSE_CONNECT);
            };
          });
        }, e.prototype.login = function (e, t) {
          var i = this;
          return new Promise(function (s, o) {
            try {
              r.info("Start to login in "), i._sendMessage({
                msg_type: n.MessageType.login,
                data: {
                  app_key: t,
                  app_id: e
                }
              }), c.instance.on(n.EventType.LOGIN, function (e) {
                s(e);
              });
            } catch (e) {
              o(e);
            }
          });
        }, e.prototype.asyncGetRoomList = function (e) {
          var t = this;
          return new Promise(function (i, r) {
            try {
              t._sendMessage({
                msg_type: n.MessageType.getRoom,
                data: {
                  session: e
                }
              }), c.instance.on(n.EventType.GET_ROOM_LIST, function (e) {
                i(e);
              });
            } catch (e) {
              r(e);
            }
          });
        }, e.prototype.asyncGetStreamList = function (e, t, i) {
          var r = this;
          return new Promise(function (s, o) {
            try {
              r._sendMessage({
                msg_type: n.MessageType.getStream,
                data: {
                  session: e,
                  room_id: t,
                  user_id: i
                }
              }), c.instance.on(n.EventType.GET_STREAM_LIST, function (e) {
                s(e);
              });
            } catch (e) {
              o(e);
            }
          });
        }, e.prototype._sendMessage = function (e) {
          var t;

          try {
            null === (t = this._signalWebSocket) || void 0 === t || t.send(JSON.stringify(e));
          } catch (e) {
            throw r.error("Failed to send message to server!,errorMessage:" + e.message), new Error("Failed to send message to server!,errorMessage:" + e.message);
          }
        }, e.prototype._onReceiveMessage = function (e) {
          var t = this,
              i = JSON.parse(e.data);
          if (0 !== i.code) throw r.error("There is something wrong with your request:" + i.data), new Error("error:" + i.data);

          switch (i.msg_type) {
            case n.MessageType.login:
              r.info("Login room successfully"), this._session = i.data.session, this._heartBeatInterval = setInterval(function () {
                t._sendMessage({
                  msg_type: n.MessageType.heartBeat,
                  data: {
                    session: t._session
                  }
                });
              }, 5e3), c.instance.emit(n.EventType.LOGIN, i.data.session);
              break;

            case n.MessageType.getStream:
              r.info("Get stream url successfully!"), c.instance.emit(n.EventType.GET_STREAM_LIST, i.data);
              break;

            case n.MessageType.getRoom:
              r.info("Get room list successfully!"), c.instance.emit(n.EventType.GET_ROOM_LIST, i.data.room_list);
          }
        }, e.prototype._reset = function () {
          this._signalWebSocket = null, this._heartBeatInterval = null, this._webSocketLink = "", c.instance.off(n.EventType.LOGIN), c.instance.off(n.EventType.GET_ROOM_LIST), c.instance.off(n.EventType.GET_STREAM_LIST);
        }, e.prototype.destroySignalWebSocket = function () {
          var e;
          this._heartBeatInterval && clearInterval(this._heartBeatInterval), null === (e = this._signalWebSocket) || void 0 === e || e.close(), this._reset();
        }, e;
      }(),
          _ = function (e) {
        function t() {
          var t = e.call(this) || this;
          return t._handlePlay = function () {
            var e;
            t._status && t._currentPlayer && (t._status = !1, t._currentPlayer.currentTime = (null === (e = t._currentPlayer) || void 0 === e ? void 0 : e.buffered.end(0)) - .5);
          }, t._handlePause = function () {
            t._status = !0;
          }, t._currentPlayer = null, t._currentPlayerId = "", t._videoElement = null, t._fixInterval = null, t._inInit = !1, t._status = !1, t;
        }

        return o(t, e), t.prototype.saveVideoElement = function (e) {
          this._videoElement = e, this._videoElement.addEventListener("pause", this._handlePause), this._videoElement.addEventListener("play", this._handlePlay);
        }, t.prototype.saveCurrentPlayer = function (e, t) {
          this._currentPlayer = e, this._currentPlayerId = t;
        }, t.prototype.getCurrentPlayer = function () {
          return this._currentPlayerId;
        }, t.prototype.fixDelayInterval = function () {
          var e = this;
          this._fixInterval = setInterval(function () {
            var t, i;

            if (null === (t = e._currentPlayer) || void 0 === t ? void 0 : t.buffered.length) {
              var n = e._currentPlayer.buffered.end(0) - (null === (i = e._currentPlayer) || void 0 === i ? void 0 : i.currentTime);
              n >= 1 && e._videoElement && !e._status ? (console.log("diff", n), r.info("player delay > 1, try to play faster to reach the live player"), e._videoElement.playbackRate = 1.2) : n < .5 && e._videoElement && !e._status && (console.log("diff", n), r.info("player delay < 0.5, try to play normal to keep the live player"), e._videoElement.playbackRate = 1);
            }
          }, 2e3);
        }, t.prototype.setInitStatus = function (e) {
          this._inInit = e;
        }, t.prototype.isInit = function () {
          return this._inInit;
        }, t.prototype.destroyPlayer = function () {
          var e, t;
          return u(this, void 0, void 0, function () {
            return l(this, function (i) {
              return null != this._currentPlayer && (r.info("destroyPlayer:" + this._currentPlayerId), this._fixInterval && clearInterval(this._fixInterval), this._currentPlayer.unload(), this._currentPlayer.detachMediaElement(), this._currentPlayer.destroy(), this._currentPlayer = null, this._fixInterval = null, null === (e = this._videoElement) || void 0 === e || e.removeEventListener("pause", this._handlePause), null === (t = this._videoElement) || void 0 === t || t.removeEventListener("play", this._handlePlay)), [2];
            });
          });
        }, t;
      }(d),
          p = function (e) {
        function t(t, i, n, r, s) {
          var o = e.call(this) || this;
          return o._player = null, o._videoElement = n, o._type = r, o._mediaSource = t, o._config = i, o._controller = s, o;
        }

        return o(t, e), t.prototype._attachMediaElement = function (e) {
          this._player && this._videoElement && (this._player.attachMediaElement(this._videoElement), this._controller.saveCurrentPlayer(this._player, e));
        }, t.prototype.startPlay = function () {
          var e, t, n, s;
          return u(this, void 0, void 0, function () {
            return l(this, function (o) {
              switch (o.label) {
                case 0:
                  return this._player = i.createPlayer(this._mediaSource, this._config), this._type === this._controller.getCurrentPlayer() ? [2] : this._controller.getCurrentPlayer() ? this._type === this._controller.getCurrentPlayer() ? [3, 2] : (r.info("the player stream has changed"), [4, this._controller.destroyPlayer()]) : (this._attachMediaElement(this._type), null === (e = this._player) || void 0 === e || e.load(), null === (t = this._player) || void 0 === t || t.play(), this._controller.fixDelayInterval(), [2]);

                case 1:
                  o.sent(), this._attachMediaElement(this._type), null === (n = this._player) || void 0 === n || n.load(), null === (s = this._player) || void 0 === s || s.play(), this._controller.fixDelayInterval(), o.label = 2;

                case 2:
                  return [2];
              }
            });
          });
        }, t;
      }(d),
          m = {
        type: "flv",
        isLive: !0
      },
          g = {
        deferLoadAfterSourceOpen: !0,
        enableStashBuffer: !1,
        autoCleanupSourceBuffer: !0
      },
          v = function () {
        function e(e) {
          this._videoElement = e, this._controller = new _();
        }

        return e.prototype.createPlayClient = function (e, t) {
          if (this._videoElement) return new p(a(a({}, m), {
            url: e
          }), g, this._videoElement, t, this._controller);
        }, e;
      }(),
          y = "1.0.2";

      return function () {
        function e(e, t) {
          this._signalWebSocket = null, this._app_id = e, this._app_key = t;
        }

        return e.isSupported = function () {
          return i.isSupported();
        }, e.sdkVersion = function () {
          return y;
        }, e.prototype.init = function (e) {
          var t = this;
          return new Promise(function (i, n) {
            t._signalWebSocket = new f(e), t._signalWebSocket.init().then(function () {
              i();
            }).catch(function (e) {
              n(e);
            });
          });
        }, e.prototype.login = function () {
          var e = this;
          return new Promise(function (t, i) {
            var n;
            null === (n = e._signalWebSocket) || void 0 === n || n.login(e._app_id, e._app_key).then(function (e) {
              t(e);
            }).catch(function (e) {
              i(e);
            });
          });
        }, e.prototype.getRoomList = function (e) {
          var t = this;
          return new Promise(function (i, n) {
            var r;
            null === (r = t._signalWebSocket) || void 0 === r || r.asyncGetRoomList(e).then(function (e) {
              i(e);
            }).catch(function (e) {
              n(e);
            });
          });
        }, e.prototype.getStreamList = function (e, t, i) {
          var n = this;
          return new Promise(function (r, s) {
            var o;
            null === (o = n._signalWebSocket) || void 0 === o || o.asyncGetStreamList(e, t, i).then(function (e) {
              r(e);
            }).catch(function (e) {
              s(e);
            });
          });
        }, e.prototype.createPlayerGroup = function (e) {
          return new v(e);
        }, e.prototype.destroyClient = function () {
          var e;
          null === (e = this._signalWebSocket) || void 0 === e || e.destroySignalWebSocket(), this._signalWebSocket = null;
        }, e.prototype.onClose = function (e) {
          c.instance.on(n.EventType.CLOSE_CONNECT, e);
        }, e;
      }();
    });
  }).call(root);
})( // The environment-specific global.
function () {
  if (typeof globalThis !== 'undefined') return globalThis;
  if (typeof self !== 'undefined') return self;
  if (typeof window !== 'undefined') return window;
  if (typeof global !== 'undefined') return global;
  if (typeof this !== 'undefined') return this;
  return {};
}.call(this));