function T(m, W) {
  return W.forEach(function(p) {
    p && typeof p != "string" && !Array.isArray(p) && Object.keys(p).forEach(function(g) {
      if (g !== "default" && !(g in m)) {
        var a = Object.getOwnPropertyDescriptor(p, g);
        Object.defineProperty(m, g, a.get ? a : {
          enumerable: !0,
          get: function() {
            return p[g];
          }
        });
      }
    });
  }), Object.freeze(m);
}
var j = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function R(m) {
  return m && m.__esModule && Object.prototype.hasOwnProperty.call(m, "default") ? m.default : m;
}
var M = { exports: {} };
(function(m, W) {
  (function(p, g) {
    m.exports = g();
  })(j, function() {
    return function(p) {
      function g(h) {
        if (a[h]) return a[h].exports;
        var c = a[h] = { exports: {}, id: h, loaded: !1 };
        return p[h].call(c.exports, c, c.exports, g), c.loaded = !0, c.exports;
      }
      var a = {};
      return g.m = p, g.c = a, g.p = "", g(0);
    }([function(p, g, a) {
      var h, c, v = function(s, t) {
        function u() {
          this.constructor = s;
        }
        for (var d in t) y.call(t, d) && (s[d] = t[d]);
        return u.prototype = t.prototype, s.prototype = new u(), s.__super__ = t.prototype, s;
      }, y = {}.hasOwnProperty, i = [].indexOf || function(s) {
        for (var t = 0, u = this.length; t < u; t++) if (t in this && this[t] === s) return t;
        return -1;
      };
      h = a(1).EventEmitter, a(2), c = function(s) {
        function t(e) {
          var r, n, o;
          this.running = !1, this.options = {}, this.frames = [], this.groups = /* @__PURE__ */ new Map(), this.freeWorkers = [], this.activeWorkers = [], this.setOptions(e);
          for (n in u) o = u[n], (r = this.options)[n] == null && (r[n] = o);
        }
        var u, d;
        return v(t, s), u = { workerScript: "gif.worker.js", workers: 2, repeat: 0, background: "#fff", quality: 10, width: null, height: null, transparent: null, debug: !1 }, d = { delay: 500, copy: !1 }, t.prototype.setOption = function(e, r) {
          if (this.options[e] = r, this._canvas != null && (e === "width" || e === "height")) return this._canvas[e] = r;
        }, t.prototype.setOptions = function(e) {
          var r, n, o;
          n = [];
          for (r in e) y.call(e, r) && (o = e[r], n.push(this.setOption(r, o)));
          return n;
        }, t.prototype.addFrame = function(e, r) {
          var n, o, l;
          r == null && (r = {}), n = {}, n.transparent = this.options.transparent;
          for (l in d) n[l] = r[l] || d[l];
          if (this.options.width == null && this.setOption("width", e.width), this.options.height == null && this.setOption("height", e.height), typeof ImageData < "u" && ImageData !== null && e instanceof ImageData) n.data = e.data;
          else if (typeof CanvasRenderingContext2D < "u" && CanvasRenderingContext2D !== null && e instanceof CanvasRenderingContext2D || typeof WebGLRenderingContext < "u" && WebGLRenderingContext !== null && e instanceof WebGLRenderingContext) r.copy ? n.data = this.getContextData(e) : n.context = e;
          else {
            if (e.childNodes == null) throw new Error("Invalid image");
            r.copy ? n.data = this.getImageData(e) : n.image = e;
          }
          return o = this.frames.length, o > 0 && n.data && (this.groups.has(n.data) ? this.groups.get(n.data).push(o) : this.groups.set(n.data, [o])), this.frames.push(n);
        }, t.prototype.render = function() {
          var e, r, n;
          if (this.running) throw new Error("Already running");
          if (this.options.width == null || this.options.height == null) throw new Error("Width and height must be set prior to rendering");
          if (this.running = !0, this.nextFrame = 0, this.finishedFrames = 0, this.imageParts = function() {
            var o, l, f;
            for (f = [], o = 0, l = this.frames.length; 0 <= l ? o < l : o > l; 0 <= l ? ++o : --o) f.push(null);
            return f;
          }.call(this), r = this.spawnWorkers(), this.options.globalPalette === !0) this.renderNextFrame();
          else for (e = 0, n = r; 0 <= n ? e < n : e > n; 0 <= n ? ++e : --e) this.renderNextFrame();
          return this.emit("start"), this.emit("progress", 0);
        }, t.prototype.abort = function() {
          for (var e; e = this.activeWorkers.shift(), e != null; )
            this.log("killing active worker"), e.terminate();
          return this.running = !1, this.emit("abort");
        }, t.prototype.spawnWorkers = function() {
          var e, r, n;
          return e = Math.min(this.options.workers, this.frames.length), function() {
            n = [];
            for (var o = r = this.freeWorkers.length; r <= e ? o < e : o > e; r <= e ? o++ : o--) n.push(o);
            return n;
          }.apply(this).forEach(/* @__PURE__ */ function(o) {
            return function(l) {
              var f;
              return o.log("spawning worker " + l), f = new Worker(o.options.workerScript), f.onmessage = function(_) {
                return o.activeWorkers.splice(o.activeWorkers.indexOf(f), 1), o.freeWorkers.push(f), o.frameFinished(_.data, !1);
              }, o.freeWorkers.push(f);
            };
          }(this)), e;
        }, t.prototype.frameFinished = function(e, r) {
          var n, o, l, f;
          if (this.finishedFrames++, r ? (n = this.frames.indexOf(e), o = this.groups.get(e.data)[0], this.log("frame " + (n + 1) + " is duplicate of " + o + " - " + this.activeWorkers.length + " active"), this.imageParts[n] = { indexOfFirstInGroup: o }) : (this.log("frame " + (e.index + 1) + " finished - " + this.activeWorkers.length + " active"), this.emit("progress", this.finishedFrames / this.frames.length), this.imageParts[e.index] = e), this.options.globalPalette === !0 && !r && (this.options.globalPalette = e.globalPalette, this.log("global palette analyzed"), this.frames.length > 2)) for (l = 1, f = this.freeWorkers.length; 1 <= f ? l < f : l > f; 1 <= f ? ++l : --l) this.renderNextFrame();
          return i.call(this.imageParts, null) >= 0 ? this.renderNextFrame() : this.finishRendering();
        }, t.prototype.finishRendering = function() {
          var e, r, n, o, l, f, _, x, w, C, P, D, I, b, k, A, L, E, O, F;
          for (L = this.imageParts, l = f = 0, C = L.length; f < C; l = ++f) r = L[l], r.indexOfFirstInGroup && (this.imageParts[l] = this.imageParts[r.indexOfFirstInGroup]);
          for (w = 0, E = this.imageParts, _ = 0, P = E.length; _ < P; _++) r = E[_], w += (r.data.length - 1) * r.pageSize + r.cursor;
          for (w += r.pageSize - r.cursor, this.log("rendering finished - filesize " + Math.round(w / 1e3) + "kb"), e = new Uint8Array(w), k = 0, O = this.imageParts, x = 0, D = O.length; x < D; x++) for (r = O[x], F = r.data, n = b = 0, I = F.length; b < I; n = ++b) A = F[n], e.set(A, k), k += n === r.data.length - 1 ? r.cursor : r.pageSize;
          return o = new Blob([e], { type: "image/gif" }), this.emit("finished", o, e);
        }, t.prototype.renderNextFrame = function() {
          var e, r, n, o;
          if (this.freeWorkers.length === 0) throw new Error("No free workers");
          if (!(this.nextFrame >= this.frames.length)) return e = this.frames[this.nextFrame++], r = this.frames.indexOf(e), r > 0 && this.groups.has(e.data) && this.groups.get(e.data)[0] !== r ? void setTimeout(/* @__PURE__ */ function(l) {
            return function() {
              return l.frameFinished(e, !0);
            };
          }(this), 0) : (o = this.freeWorkers.shift(), n = this.getTask(e), this.log("starting frame " + (n.index + 1) + " of " + this.frames.length), this.activeWorkers.push(o), o.postMessage(n));
        }, t.prototype.getContextData = function(e) {
          return e.getImageData(0, 0, this.options.width, this.options.height).data;
        }, t.prototype.getImageData = function(e) {
          var r;
          return this._canvas == null && (this._canvas = document.createElement("canvas"), this._canvas.width = this.options.width, this._canvas.height = this.options.height), r = this._canvas.getContext("2d"), r.setFill = this.options.background, r.fillRect(0, 0, this.options.width, this.options.height), r.drawImage(e, 0, 0), this.getContextData(r);
        }, t.prototype.getTask = function(e) {
          var r, n;
          if (r = this.frames.indexOf(e), n = { index: r, last: r === this.frames.length - 1, delay: e.delay, transparent: e.transparent, width: this.options.width, height: this.options.height, quality: this.options.quality, dither: this.options.dither, globalPalette: this.options.globalPalette, repeat: this.options.repeat, canTransfer: !0 }, e.data != null) n.data = e.data;
          else if (e.context != null) n.data = this.getContextData(e.context);
          else {
            if (e.image == null) throw new Error("Invalid frame");
            n.data = this.getImageData(e.image);
          }
          return n;
        }, t.prototype.log = function(e) {
          if (this.options.debug) return console.log(e);
        }, t;
      }(h), p.exports = c;
    }, function(p, g) {
      function a() {
        this._events = this._events || {}, this._maxListeners = this._maxListeners || void 0;
      }
      function h(i) {
        return typeof i == "function";
      }
      function c(i) {
        return typeof i == "number";
      }
      function v(i) {
        return typeof i == "object" && i !== null;
      }
      function y(i) {
        return i === void 0;
      }
      p.exports = a, a.EventEmitter = a, a.prototype._events = void 0, a.prototype._maxListeners = void 0, a.defaultMaxListeners = 10, a.prototype.setMaxListeners = function(i) {
        if (!c(i) || i < 0 || isNaN(i)) throw TypeError("n must be a positive number");
        return this._maxListeners = i, this;
      }, a.prototype.emit = function(i) {
        var s, t, u, d, e, r;
        if (this._events || (this._events = {}), i === "error" && (!this._events.error || v(this._events.error) && !this._events.error.length)) {
          if (s = arguments[1], s instanceof Error) throw s;
          var n = new Error('Uncaught, unspecified "error" event. (' + s + ")");
          throw n.context = s, n;
        }
        if (t = this._events[i], y(t)) return !1;
        if (h(t)) switch (arguments.length) {
          case 1:
            t.call(this);
            break;
          case 2:
            t.call(this, arguments[1]);
            break;
          case 3:
            t.call(this, arguments[1], arguments[2]);
            break;
          default:
            d = Array.prototype.slice.call(arguments, 1), t.apply(this, d);
        }
        else if (v(t)) for (d = Array.prototype.slice.call(arguments, 1), r = t.slice(), u = r.length, e = 0; e < u; e++) r[e].apply(this, d);
        return !0;
      }, a.prototype.addListener = function(i, s) {
        var t;
        if (!h(s)) throw TypeError("listener must be a function");
        return this._events || (this._events = {}), this._events.newListener && this.emit("newListener", i, h(s.listener) ? s.listener : s), this._events[i] ? v(this._events[i]) ? this._events[i].push(s) : this._events[i] = [this._events[i], s] : this._events[i] = s, v(this._events[i]) && !this._events[i].warned && (t = y(this._maxListeners) ? a.defaultMaxListeners : this._maxListeners, t && t > 0 && this._events[i].length > t && (this._events[i].warned = !0, console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.", this._events[i].length), typeof console.trace == "function" && console.trace())), this;
      }, a.prototype.on = a.prototype.addListener, a.prototype.once = function(i, s) {
        function t() {
          this.removeListener(i, t), u || (u = !0, s.apply(this, arguments));
        }
        if (!h(s)) throw TypeError("listener must be a function");
        var u = !1;
        return t.listener = s, this.on(i, t), this;
      }, a.prototype.removeListener = function(i, s) {
        var t, u, d, e;
        if (!h(s)) throw TypeError("listener must be a function");
        if (!this._events || !this._events[i]) return this;
        if (t = this._events[i], d = t.length, u = -1, t === s || h(t.listener) && t.listener === s) delete this._events[i], this._events.removeListener && this.emit("removeListener", i, s);
        else if (v(t)) {
          for (e = d; e-- > 0; ) if (t[e] === s || t[e].listener && t[e].listener === s) {
            u = e;
            break;
          }
          if (u < 0) return this;
          t.length === 1 ? (t.length = 0, delete this._events[i]) : t.splice(u, 1), this._events.removeListener && this.emit("removeListener", i, s);
        }
        return this;
      }, a.prototype.removeAllListeners = function(i) {
        var s, t;
        if (!this._events) return this;
        if (!this._events.removeListener) return arguments.length === 0 ? this._events = {} : this._events[i] && delete this._events[i], this;
        if (arguments.length === 0) {
          for (s in this._events) s !== "removeListener" && this.removeAllListeners(s);
          return this.removeAllListeners("removeListener"), this._events = {}, this;
        }
        if (t = this._events[i], h(t)) this.removeListener(i, t);
        else if (t) for (; t.length; ) this.removeListener(i, t[t.length - 1]);
        return delete this._events[i], this;
      }, a.prototype.listeners = function(i) {
        return this._events && this._events[i] ? h(this._events[i]) ? [this._events[i]] : this._events[i].slice() : [];
      }, a.prototype.listenerCount = function(i) {
        if (this._events) {
          var s = this._events[i];
          if (h(s)) return 1;
          if (s) return s.length;
        }
        return 0;
      }, a.listenerCount = function(i, s) {
        return i.listenerCount(s);
      };
    }, function(p, g) {
      var a, h, c, v, y;
      y = navigator.userAgent.toLowerCase(), v = navigator.platform.toLowerCase(), a = y.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [null, "unknown", 0], c = a[1] === "ie" && document.documentMode, h = { name: a[1] === "version" ? a[3] : a[1], version: c || parseFloat(a[1] === "opera" && a[4] ? a[4] : a[2]), platform: { name: y.match(/ip(?:ad|od|hone)/) ? "ios" : (y.match(/(?:webos|android)/) || v.match(/mac|win|linux/) || ["other"])[0] } }, h[h.name] = !0, h[h.name + parseInt(h.version, 10)] = !0, h.platform[h.platform.name] = !0, p.exports = h;
    }]);
  });
})(M);
var N = M.exports, G = /* @__PURE__ */ R(N), z = /* @__PURE__ */ T({
  __proto__: null,
  default: G
}, [N]);
export {
  z as g
};