text: /*!
   * Pusher JavaScript Library v5.1.1
   * https://pusher.com/
   *
   * Copyright 2017, Pusher
   * Released under the MIT licence.
   */
  !function (t, e) {
      "object" == typeof exports && "object" == typeof module ? module.exports = e() : "function" == typeof define && define.amd ? define([], e) : "object" == typeof exports ? exports.Pusher = e() : t.Pusher = e()
  }(window, (function () {
      return function (t) {
          var e = {};
  
          function n(r) {
              if (e[r]) return e[r].exports;
              var o = e[r] = {i: r, l: !1, exports: {}};
              return t[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports
          }
  
          return n.m = t, n.c = e, n.d = function (t, e, r) {
              n.o(t, e) || Object.defineProperty(t, e, {enumerable: !0, get: r})
          }, n.r = function (t) {
              "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(t, Symbol.toStringTag, {value: "Module"}), Object.defineProperty(t, "__esModule", {value: !0})
          }, n.t = function (t, e) {
              if (1 & e && (t = n(t)), 8 & e) return t;
              if (4 & e && "object" == typeof t && t && t.__esModule) return t;
              var r = Object.create(null);
              if (n.r(r), Object.defineProperty(r, "default", {
                  enumerable: !0,
                  value: t
              }), 2 & e && "string" != typeof t) for (var o in t) n.d(r, o, function (e) {
                  return t[e]
              }.bind(null, o));
              return r
          }, n.n = function (t) {
              var e = t && t.__esModule ? function () {
                  return t.default
              } : function () {
                  return t
              };
              return n.d(e, "a", e), e
          }, n.o = function (t, e) {
              return Object.prototype.hasOwnProperty.call(t, e)
          }, n.p = "", n(n.s = 2)
      }([function (t, e, n) {
          !function (t) {
              "use strict";
              var e = function (t) {
                  var e, n = new Float64Array(16);
                  if (t) for (e = 0; e < t.length; e++) n[e] = t[e];
                  return n
              }, r = function () {
                  throw new Error("no PRNG")
              }, o = new Uint8Array(16), i = new Uint8Array(32);
              i[0] = 9;
              var s = e(), c = e([1]), a = e([56129, 1]),
                  u = e([30883, 4953, 19914, 30187, 55467, 16705, 2637, 112, 59544, 30585, 16505, 36039, 65139, 11119, 27886, 20995]),
                  h = e([61785, 9906, 39828, 60374, 45398, 33411, 5274, 224, 53552, 61171, 33010, 6542, 64743, 22239, 55772, 9222]),
                  p = e([54554, 36645, 11616, 51542, 42930, 38181, 51040, 26924, 56412, 64982, 57905, 49316, 21502, 52590, 14035, 8553]),
                  f = e([26200, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214, 26214]),
                  l = e([41136, 18958, 6951, 50414, 58488, 44335, 6150, 12099, 55207, 15867, 153, 11085, 57099, 20417, 9344, 11139]);
  
              function d(t, e, n, r) {
                  t[e] = n >> 24 & 255, t[e + 1] = n >> 16 & 255, t[e + 2] = n >> 8 & 255, t[e + 3] = 255 & n, t[e + 4] = r >> 24 & 255, t[e + 5] = r >> 16 & 255, t[e + 6] = r >> 8 & 255, t[e + 7] = 255 & r
              }
  
              function y(t, e, n, r, o) {
                  var i, s = 0;
                  for (i = 0; i < o; i++) s |= t[e + i] ^ n[r + i];
                  return (1 & s - 1 >>> 8) - 1
              }
  
              function v(t, e, n, r) {
                  return y(t, e, n, r, 16)
              }
  
              function g(t, e, n, r) {
                  return y(t, e, n, r, 32)
              }
  
              function b(t, e, n, r) {
                  !function (t, e, n, r) {
                      for (var o, i = 255 & r[0] | (255 & r[1]) << 8 | (255 & r[2]) << 16 | (255 & r[3]) << 24, s = 255 & n[0] | (255 & n[1]) << 8 | (255 & n[2]) << 16 | (255 & n[3]) << 24, c = 255 & n[4] | (255 & n[5]) << 8 | (255 & n[6]) << 16 | (255 & n[7]) << 24, a = 255 & n[8] | (255 & n[9]) << 8 | (255 & n[10]) << 16 | (255 & n[11]) << 24, u = 255 & n[12] | (255 & n[13]) << 8 | (255 & n[14]) << 16 | (255 & n[15]) << 24, h = 255 & r[4] | (255 & r[5]) << 8 | (255 & r[6]) << 16 | (255 & r[7]) << 24, p = 255 & e[0] | (255 & e[1]) << 8 | (255 & e[2]) << 16 | (255 & e[3]) << 24, f = 255 & e[4] | (255 & e[5]) << 8 | (255 & e[6]) << 16 | (255 & e[7]) << 24, l = 255 & e[8] | (255 & e[9]) << 8 | (255 & e[10]) << 16 | (255 & e[11]) << 24, d = 255 & e[12] | (255 & e[13]) << 8 | (255 & e[14]) << 16 | (255 & e[15]) << 24, y = 255 & r[8] | (255 & r[9]) << 8 | (255 & r[10]) << 16 | (255 & r[11]) << 24, v = 255 & n[16] | (255 & n[17]) << 8 | (255 & n[18]) << 16 | (255 & n[19]) << 24, g = 255 & n[20] | (255 & n[21]) << 8 | (255 & n[22]) << 16 | (255 & n[23]) << 24, b = 255 & n[24] | (255 & n[25]) << 8 | (255 & n[26]) << 16 | (255 & n[27]) << 24, m = 255 & n[28] | (255 & n[29]) << 8 | (255 & n[30]) << 16 | (255 & n[31]) << 24, w = 255 & r[12] | (255 & r[13]) << 8 | (255 & r[14]) << 16 | (255 & r[15]) << 24, _ = i, S = s, k = c, T = a, O = u, C = h, A = p, E = f, P = l, x = d, L = y, R = v, U = g, M = b, j = m, I = w, N = 0; N < 20; N += 2) _ ^= (o = (U ^= (o = (P ^= (o = (O ^= (o = _ + U | 0) << 7 | o >>> 25) + _ | 0) << 9 | o >>> 23) + O | 0) << 13 | o >>> 19) + P | 0) << 18 | o >>> 14, C ^= (o = (S ^= (o = (M ^= (o = (x ^= (o = C + S | 0) << 7 | o >>> 25) + C | 0) << 9 | o >>> 23) + x | 0) << 13 | o >>> 19) + M | 0) << 18 | o >>> 14, L ^= (o = (A ^= (o = (k ^= (o = (j ^= (o = L + A | 0) << 7 | o >>> 25) + L | 0) << 9 | o >>> 23) + j | 0) << 13 | o >>> 19) + k | 0) << 18 | o >>> 14, I ^= (o = (R ^= (o = (E ^= (o = (T ^= (o = I + R | 0) << 7 | o >>> 25) + I | 0) << 9 | o >>> 23) + T | 0) << 13 | o >>> 19) + E | 0) << 18 | o >>> 14, _ ^= (o = (T ^= (o = (k ^= (o = (S ^= (o = _ + T | 0) << 7 | o >>> 25) + _ | 0) << 9 | o >>> 23) + S | 0) << 13 | o >>> 19) + k | 0) << 18 | o >>> 14, C ^= (o = (O ^= (o = (E ^= (o = (A ^= (o = C + O | 0) << 7 | o >>> 25) + C | 0) << 9 | o >>> 23) + A | 0) << 13 | o >>> 19) + E | 0) << 18 | o >>> 14, L ^= (o = (x ^= (o = (P ^= (o = (R ^= (o = L + x | 0) << 7 | o >>> 25) + L | 0) << 9 | o >>> 23) + R | 0) << 13 | o >>> 19) + P | 0) << 18 | o >>> 14, I ^= (o = (j ^= (o = (M ^= (o = (U ^= (o = I + j | 0) << 7 | o >>> 25) + I | 0) << 9 | o >>> 23) + U | 0) << 13 | o >>> 19) + M | 0) << 18 | o >>> 14;
                      _ = _ + i | 0, S = S + s | 0, k = k + c | 0, T = T + a | 0, O = O + u | 0, C = C + h | 0, A = A + p | 0, E = E + f | 0, P = P + l | 0, x = x + d | 0, L = L + y | 0, R = R + v | 0, U = U + g | 0, M = M + b | 0, j = j + m | 0, I = I + w | 0, t[0] = _ >>> 0 & 255, t[1] = _ >>> 8 & 255, t[2] = _ >>> 16 & 255, t[3] = _ >>> 24 & 255, t[4] = S >>> 0 & 255, t[5] = S >>> 8 & 255, t[6] = S >>> 16 & 255, t[7] = S >>> 24 & 255, t[8] = k >>> 0 & 255, t[9] = k >>> 8 & 255, t[10] = k >>> 16 & 255, t[11] = k >>> 24 & 255, t[12] = T >>> 0 & 255, t[13] = T >>> 8 & 255, t[14] = T >>> 16 & 255, t[15] = T >>> 24 & 255, t[16] = O >>> 0 & 255, t[17] = O >>> 8 & 255, t[18] = O >>> 16 & 255, t[19] = O >>> 24 & 255, t[20] = C >>> 0 & 255, t[21] = C >>> 8 & 255, t[22] = C >>> 16 & 255, t[23] = C >>> 24 & 255, t[24] = A >>> 0 & 255, t[25] = A >>> 8 & 255, t[26] = A >>> 16 & 255, t[27] = A >>> 24 & 255, t[28] = E >>> 0 & 255, t[29] = E >>> 8 & 255, t[30] = E >>> 16 & 255, t[31] = E >>> 24 & 255, t[32] = P >>> 0 & 255, t[33] = P >>> 8 & 255, t[34] = P >>> 16 & 255, t[35] = P >>> 24 & 255, t[36] = x >>> 0 & 255, t[37] = x >>> 8 & 255, t[38] = x >>> 16 & 255, t[39] = x >>> 24 & 255, t[40] = L >>> 0 & 255, t[41] = L >>> 8 & 255, t[42] = L >>> 16 & 255, t[43] = L >>> 24 & 255, t[44] = R >>> 0 & 255, t[45] = R >>> 8 & 255, t[46] = R >>> 16 & 255, t[47] = R >>> 24 & 255, t[48] = U >>> 0 & 255, t[49] = U >>> 8 & 255, t[50] = U >>> 16 & 255, t[51] = U >>> 24 & 255, t[52] = M >>> 0 & 255, t[53] = M >>> 8 & 255, t[54] = M >>> 16 & 255, t[55] = M >>> 24 & 255, t[56] = j >>> 0 & 255, t[57] = j >>> 8 & 255, t[58] = j >>> 16 & 255, t[59] = j >>> 24 & 255, t[60] = I >>> 0 & 255, t[61] = I >>> 8 & 255, t[62] = I >>> 16 & 255, t[63] = I >>> 24 & 255
                  }(t, e, n, r)
              }
  
              function m(t, e, n, r) {
                  !function (t, e, n, r) {
                      for (var o, i = 255 & r[0] | (255 & r[1]) << 8 | (255 & r[2]) << 16 | (255 & r[3]) << 24, s = 255 & n[0] | (255 & n[1]) << 8 | (255 & n[2]) << 16 | (255 & n[3]) << 24, c = 255 & n[4] | (255 & n[5]) << 8 | (255 & n[6]) << 16 | (255 & n[7]) << 24, a = 255 & n[8] | (255 & n[9]) << 8 | (255 & n[10]) << 16 | (255 & n[11]) << 24, u = 255 & n[12] | (255 & n[13]) << 8 | (255 & n[14]) << 16 | (255 & n[15]) << 24, h = 255 & r[4] | (255 & r[5]) << 8 | (255 & r[6]) << 16 | (255 & r[7]) << 24, p = 255 & e[0] | (255 & e[1]) << 8 | (255 & e[2]) << 16 | (255 & e[3]) << 24, f = 255 & e[4] | (255 & e[5]) << 8 | (255 & e[6]) << 16 | (255 & e[7]) << 24, l = 255 & e[8] | (255 & e[9]) << 8 | (255 & e[10]) << 16 | (255 & e[11]) << 24, d = 255 & e[12] | (255 & e[13]) << 8 | (255 & e[14]) << 16 | (255 & e[15]) << 24, y = 255 & r[8] | (255 & r[9]) << 8 | (255 & r[10]) << 16 | (255 & r[11]) << 24, v = 255 & n[16] | (255 & n[17]) << 8 | (255 & n[18]) << 16 | (255 & n[19]) << 24, g = 255 & n[20] | (255 & n[21]) << 8 | (255 & n[22]) << 16 | (255 & n[23]) << 24, b = 255 & n[24] | (255 & n[25]) << 8 | (255 & n[26]) << 16 | (255 & n[27]) << 24, m = 255 & n[28] | (255 & n[29]) << 8 | (255 & n[30]) << 16 | (255 & n[31]) << 24, w = 255 & r[12] | (255 & r[13]) << 8 | (255 & r[14]) << 16 | (255 & r[15]) << 24, _ = 0; _ < 20; _ += 2) i ^= (o = (g ^= (o = (l ^= (o = (u ^= (o = i + g | 0) << 7 | o >>> 25) + i | 0) << 9 | o >>> 23) + u | 0) << 13 | o >>> 19) + l | 0) << 18 | o >>> 14, h ^= (o = (s ^= (o = (b ^= (o = (d ^= (o = h + s | 0) << 7 | o >>> 25) + h | 0) << 9 | o >>> 23) + d | 0) << 13 | o >>> 19) + b | 0) << 18 | o >>> 14, y ^= (o = (p ^= (o = (c ^= (o = (m ^= (o = y + p | 0) << 7 | o >>> 25) + y | 0) << 9 | o >>> 23) + m | 0) << 13 | o >>> 19) + c | 0) << 18 | o >>> 14, w ^= (o = (v ^= (o = (f ^= (o = (a ^= (o = w + v | 0) << 7 | o >>> 25) + w | 0) << 9 | o >>> 23) + a | 0) << 13 | o >>> 19) + f | 0) << 18 | o >>> 14, i ^= (o = (a ^= (o = (c ^= (o = (s ^= (o = i + a | 0) << 7 | o >>> 25) + i | 0) << 9 | o >>> 23) + s | 0) << 13 | o >>> 19) + c | 0) << 18 | o >>> 14, h ^= (o = (u ^= (o = (f ^= (o = (p ^= (o = h + u | 0) << 7 | o >>> 25) + h | 0) << 9 | o >>> 23) + p | 0) << 13 | o >>> 19) + f | 0) << 18 | o >>> 14, y ^= (o = (d ^= (o = (l ^= (o = (v ^= (o = y + d | 0) << 7 | o >>> 25) + y | 0) << 9 | o >>> 23) + v | 0) << 13 | o >>> 19) + l | 0) << 18 | o >>> 14, w ^= (o = (m ^= (o = (b ^= (o = (g ^= (o = w + m | 0) << 7 | o >>> 25) + w | 0) << 9 | o >>> 23) + g | 0) << 13 | o >>> 19) + b | 0) << 18 | o >>> 14;
                      t[0] = i >>> 0 & 255, t[1] = i >>> 8 & 255, t[2] = i >>> 16 & 255, t[3] = i >>> 24 & 255, t[4] = h >>> 0 & 255, t[5] = h >>> 8 & 255, t[6] = h >>> 16 & 255, t[7] = h >>> 24 & 255, t[8] = y >>> 0 & 255, t[9] = y >>> 8 & 255, t[10] = y >>> 16 & 255, t[11] = y >>> 24 & 255, t[12] = w >>> 0 & 255, t[13] = w >>> 8 & 255, t[14] = w >>> 16 & 255, t[15] = w >>> 24 & 255, t[16] = p >>> 0 & 255, t[17] = p >>> 8 & 255, t[18] = p >>> 16 & 255, t[19] = p >>> 24 & 255, t[20] = f >>> 0 & 255, t[21] = f >>> 8 & 255, t[22] = f >>> 16 & 255, t[23] = f >>> 24 & 255, t[24] = l >>> 0 & 255, t[25] = l >>> 8 & 255, t[26] = l >>> 16 & 255, t[27] = l >>> 24 & 255, t[28] = d >>> 0 & 255, t[29] = d >>> 8 & 255, t[30] = d >>> 16 & 255, t[31] = d >>> 24 & 255
                  }(t, e, n, r)
              }
  
              var w = new Uint8Array([101, 120, 112, 97, 110, 100, 32, 51, 50, 45, 98, 121, 116, 101, 32, 107]);
  
              function _(t, e, n, r, o, i, s) {
                  var c, a, u = new Uint8Array(16), h = new Uint8Array(64);
                  for (a = 0; a < 16; a++) u[a] = 0;
                  for (a = 0; a < 8; a++) u[a] = i[a];
                  for (; o >= 64;) {
                      for (b(h, u, s, w), a = 0; a < 64; a++) t[e + a] = n[r + a] ^ h[a];
                      for (c = 1, a = 8; a < 16; a++) c = c + (255 & u[a]) | 0, u[a] = 255 & c, c >>>= 8;
                      o -= 64, e += 64, r += 64
                  }
                  if (o > 0) for (b(h, u, s, w), a = 0; a < o; a++) t[e + a] = n[r + a] ^ h[a];
                  return 0
              }
  
              function S(t, e, n, r, o) {
                  var i, s, c = new Uint8Array(16), a = new Uint8Array(64);
                  for (s = 0; s < 16; s++) c[s] = 0;
                  for (s = 0; s < 8; s++) c[s] = r[s];
                  for (; n >= 64;) {
                      for (b(a, c, o, w), s = 0; s < 64; s++) t[e + s] = a[s];
                      for (i = 1, s = 8; s < 16; s++) i = i + (255 & c[s]) | 0, c[s] = 255 & i, i >>>= 8;
                      n -= 64, e += 64
                  }
                  if (n > 0) for (b(a, c, o, w), s = 0; s < n; s++) t[e + s] = a[s];
                  return 0
              }
  
              function k(t, e, n, r, o) {
                  var i = new Uint8Array(32);
                  m(i, r, o, w);
                  for (var s = new Uint8Array(8), c = 0; c < 8; c++) s[c] = r[c + 16];
                  return S(t, e, n, s, i)
              }
  
              function T(t, e, n, r, o, i, s) {
                  var c = new Uint8Array(32);
                  m(c, i, s, w);
                  for (var a = new Uint8Array(8), u = 0; u < 8; u++) a[u] = i[u + 16];
                  return _(t, e, n, r, o, a, c)
              }
  
              var O = function (t) {
                  var e, n, r, o, i, s, c, a;
                  this.buffer = new Uint8Array(16), this.r = new Uint16Array(10), this.h = new Uint16Array(10), this.pad = new Uint16Array(8), this.leftover = 0, this.fin = 0, e = 255 & t[0] | (255 & t[1]) << 8, this.r[0] = 8191 & e, n = 255 & t[2] | (255 & t[3]) << 8, this.r[1] = 8191 & (e >>> 13 | n << 3), r = 255 & t[4] | (255 & t[5]) << 8, this.r[2] = 7939 & (n >>> 10 | r << 6), o = 255 & t[6] | (255 & t[7]) << 8, this.r[3] = 8191 & (r >>> 7 | o << 9), i = 255 & t[8] | (255 & t[9]) << 8, this.r[4] = 255 & (o >>> 4 | i << 12), this.r[5] = i >>> 1 & 8190, s = 255 & t[10] | (255 & t[11]) << 8, this.r[6] = 8191 & (i >>> 14 | s << 2), c = 255 & t[12] | (255 & t[13]) << 8, this.r[7] = 8065 & (s >>> 11 | c << 5), a = 255 & t[14] | (255 & t[15]) << 8, this.r[8] = 8191 & (c >>> 8 | a << 8), this.r[9] = a >>> 5 & 127, this.pad[0] = 255 & t[16] | (255 & t[17]) << 8, this.pad[1] = 255 & t[18] | (255 & t[19]) << 8, this.pad[2] = 255 & t[20] | (255 & t[21]) << 8, this.pad[3] = 255 & t[22] | (255 & t[23]) << 8, this.pad[4] = 255 & t[24] | (255 & t[25]) << 8, this.pad[5] = 255 & t[26] | (255 & t[27]) << 8, this.pad[6] = 255 & t[28] | (255 & t[29]) << 8, this.pad[7] = 255 & t[30] | (255 & t[31]) << 8
              };
  
              function C(t, e, n, r, o, i) {
                  var s = new O(i);
                  return s.update(n, r, o), s.finish(t, e), 0
              }
  
              function A(t, e, n, r, o, i) {
                  var s = new Uint8Array(16);
                  return C(s, 0, n, r, o, i), v(t, e, s, 0)
              }
  
              function E(t, e, n, r, o) {
                  var i;
                  if (n < 32) return -1;
                  for (T(t, 0, e, 0, n, r, o), C(t, 16, t, 32, n - 32, t), i = 0; i < 16; i++) t[i] = 0;
                  return 0
              }
  
              function P(t, e, n, r, o) {
                  var i, s = new Uint8Array(32);
                  if (n < 32) return -1;
                  if (k(s, 0, 32, r, o), 0 !== A(e, 16, e, 32, n - 32, s)) return -1;
                  for (T(t, 0, e, 0, n, r, o), i = 0; i < 32; i++) t[i] = 0;
                  return 0
              }
  
              function x(t, e) {
                  var n;
                  for (n = 0; n < 16; n++) t[n] = 0 | e[n]
              }
  
              function L(t) {
                  var e, n, r = 1;
                  for (e = 0; e < 16; e++) n = t[e] + r + 65535, r = Math.floor(n / 65536), t[e] = n - 65536 * r;
                  t[0] += r - 1 + 37 * (r - 1)
              }
  
              function R(t, e, n) {
                  for (var r, o = ~(n - 1), i = 0; i < 16; i++) r = o & (t[i] ^ e[i]), t[i] ^= r, e[i] ^= r
              }
  
              function U(t, n) {
                  var r, o, i, s = e(), c = e();
                  for (r = 0; r < 16; r++) c[r] = n[r];
                  for (L(c), L(c), L(c), o = 0; o < 2; o++) {
                      for (s[0] = c[0] - 65517, r = 1; r < 15; r++) s[r] = c[r] - 65535 - (s[r - 1] >> 16 & 1), s[r - 1] &= 65535;
                      s[15] = c[15] - 32767 - (s[14] >> 16 & 1), i = s[15] >> 16 & 1, s[14] &= 65535, R(c, s, 1 - i)
                  }
                  for (r = 0; r < 16; r++) t[2 * r] = 255 & c[r], t[2 * r + 1] = c[r] >> 8
              }
  
              function M(t, e) {
                  var n = new Uint8Array(32), r = new Uint8Array(32);
                  return U(n, t), U(r, e), g(n, 0, r, 0)
              }
  
              function j(t) {
                  var e = new Uint8Array(32);
                  return U(e, t), 1 & e[0]
              }
  
              function I(t, e) {
                  var n;
                  for (n = 0; n < 16; n++) t[n] = e[2 * n] + (e[2 * n + 1] << 8);
                  t[15] &= 32767
              }
  
              function N(t, e, n) {
                  for (var r = 0; r < 16; r++) t[r] = e[r] + n[r]
              }
  
              function B(t, e, n) {
                  for (var r = 0; r < 16; r++) t[r] = e[r] - n[r]
              }
  
              function D(t, e, n) {
                  var r, o, i = 0, s = 0, c = 0, a = 0, u = 0, h = 0, p = 0, f = 0, l = 0, d = 0, y = 0, v = 0, g = 0,
                      b = 0, m = 0, w = 0, _ = 0, S = 0, k = 0, T = 0, O = 0, C = 0, A = 0, E = 0, P = 0, x = 0, L = 0,
                      R = 0, U = 0, M = 0, j = 0, I = n[0], N = n[1], B = n[2], D = n[3], z = n[4], H = n[5], q = n[6],
                      F = n[7], X = n[8], J = n[9], Y = n[10], K = n[11], W = n[12], G = n[13], Z = n[14], V = n[15];
                  i += (r = e[0]) * I, s += r * N, c += r * B, a += r * D, u += r * z, h += r * H, p += r * q, f += r * F, l += r * X, d += r * J, y += r * Y, v += r * K, g += r * W, b += r * G, m += r * Z, w += r * V, s += (r = e[1]) * I, c += r * N, a += r * B, u += r * D, h += r * z, p += r * H, f += r * q, l += r * F, d += r * X, y += r * J, v += r * Y, g += r * K, b += r * W, m += r * G, w += r * Z, _ += r * V, c += (r = e[2]) * I, a += r * N, u += r * B, h += r * D, p += r * z, f += r * H, l += r * q, d += r * F, y += r * X, v += r * J, g += r * Y, b += r * K, m += r * W, w += r * G, _ += r * Z, S += r * V, a += (r = e[3]) * I, u += r * N, h += r * B, p += r * D, f += r * z, l += r * H, d += r * q, y += r * F, v += r * X, g += r * J, b += r * Y, m += r * K, w += r * W, _ += r * G, S += r * Z, k += r * V, u += (r = e[4]) * I, h += r * N, p += r * B, f += r * D, l += r * z, d += r * H, y += r * q, v += r * F, g += r * X, b += r * J, m += r * Y, w += r * K, _ += r * W, S += r * G, k += r * Z, T += r * V, h += (r = e[5]) * I, p += r * N, f += r * B, l += r * D, d += r * z, y += r * H, v += r * q, g += r * F, b += r * X, m += r * J, w += r * Y, _ += r * K, S += r * W, k += r * G, T += r * Z, O += r * V, p += (r = e[6]) * I, f += r * N, l += r * B, d += r * D, y += r * z,v += r * H,g += r * q,b += r * F,m += r * X,w += r * J,_ += r * Y,S += r * K,k += r * W,T += r * G,O += r * Z,C += r * V,f += (r = e[7]) * I,l += r * N,d += r * B,y += r * D,v += r * z,g += r * H,b += r * q,m += r * F,w += r * X,_ += r * J,S += r * Y,k += r * K,T += r * W,O += r * G,C += r * Z,A += r * V,l += (r = e[8]) * I,d += r * N,y += r * B,v += r * D,g += r * z,b += r * H,m += r * q,w += r * F,_ += r * X,S += r * J,k += r * Y,T += r * K,O += r * W,C += r * G,A += r * Z,E += r * V,d += (r = e[9]) * I,y += r * N,v += r * B,g += r * D,b += r * z,m += r * H,w += r * q,_ += r * F,S += r * X,k += r * J,T += r * Y,O += r * K,C += r * W,A += r * G,E += r * Z,P += r * V,y += (r = e[10]) * I,v += r * N,g += r * B,b += r * D,m += r * z,w += r * H,_ += r * q,S += r * F,k += r * X,T += r * J,O += r * Y,C += r * K,A += r * W,E += r * G,P += r * Z,x += r * V,v += (r = e[11]) * I,g += r * N,b += r * B,m += r * D,w += r * z,_ += r * H,S += r * q,k += r * F,T += r * X,O += r * J,C += r * Y,A += r * K,E += r * W,P += r * G,x += r * Z,L += r * V,g += (r = e[12]) * I,b += r * N,m += r * B,w += r * D,_ += r * z,S += r * H,k += r * q,T += r * F,O += r * X,C += r * J,A += r * Y,E += r * K,P += r * W,x += r * G,L += r * Z,R += r * V,b += (r = e[13]) * I,m += r * N,w += r * B,_ += r * D,S += r * z,k += r * H,T += r * q,O += r * F,C += r * X,A += r * J,E += r * Y,P += r * K,x += r * W,L += r * G,R += r * Z,U += r * V,m += (r = e[14]) * I,w += r * N,_ += r * B,S += r * D,k += r * z,T += r * H,O += r * q,C += r * F,A += r * X,E += r * J,P += r * Y,x += r * K,L += r * W,R += r * G,U += r * Z,M += r * V,w += (r = e[15]) * I,s += 38 * (S += r * B),c += 38 * (k += r * D),a += 38 * (T += r * z),u += 38 * (O += r * H),h += 38 * (C += r * q),p += 38 * (A += r * F),f += 38 * (E += r * X),l += 38 * (P += r * J),d += 38 * (x += r * Y),y += 38 * (L += r * K),v += 38 * (R += r * W),g += 38 * (U += r * G),b += 38 * (M += r * Z),m += 38 * (j += r * V),i = (r = (i += 38 * (_ += r * N)) + (o = 1) + 65535) - 65536 * (o = Math.floor(r / 65536)),s = (r = s + o + 65535) - 65536 * (o = Math.floor(r / 65536)),c = (r = c + o + 65535) - 65536 * (o = Math.floor(r / 65536)),a = (r = a + o + 65535) - 65536 * (o = Math.floor(r / 65536)),u = (r = u + o + 65535) - 65536 * (o = Math.floor(r / 65536)),h = (r = h + o + 65535) - 65536 * (o = Math.floor(r / 65536)),p = (r = p + o + 65535) - 65536 * (o = Math.floor(r / 65536)),f = (r = f + o + 65535) - 65536 * (o = Math.floor(r / 65536)),l = (r = l + o + 65535) - 65536 * (o = Math.floor(r / 65536)),d = (r = d + o + 65535) - 65536 * (o = Math.floor(r / 65536)),y = (r = y + o + 65535) - 65536 * (o = Math.floor(r / 65536)),v = (r = v + o + 65535) - 65536 * (o = Math.floor(r / 65536)),g = (r = g + o + 65535) - 65536 * (o = Math.floor(r / 65536)),b = (r = b + o + 65535) - 65536 * (o = Math.floor(r / 65536)),m = (r = m + o + 65535) - 65536 * (o = Math.floor(r / 65536)),w = (r = w + o + 65535) - 65536 * (o = Math.floor(r / 65536)),i = (r = (i += o - 1 + 37 * (o - 1)) + (o = 1) + 65535) - 65536 * (o = Math.floor(r / 65536)),s = (r = s + o + 65535) - 65536 * (o = Math.floor(r / 65536)),c = (r = c + o + 65535) - 65536 * (o = Math.floor(r / 65536)),a = (r = a + o + 65535) - 65536 * (o = Math.floor(r / 65536)),u = (r = u + o + 65535) - 65536 * (o = Math.floor(r / 65536)),h = (r = h + o + 65535) - 65536 * (o = Math.floor(r / 65536)),p = (r = p + o + 65535) - 65536 * (o = Math.floor(r / 65536)),f = (r = f + o + 65535) - 65536 * (o = Math.floor(r / 65536)),l = (r = l + o + 65535) - 65536 * (o = Math.floor(r / 65536)),d = (r = d + o + 65535) - 65536 * (o = Math.floor(r / 65536)),y = (r = y + o + 65535) - 65536 * (o = Math.floor(r / 65536)),v = (r = v + o + 65535) - 65536 * (o = Math.floor(r / 65536)),g = (r = g + o + 65535) - 65536 * (o = Math.floor(r / 65536)),b = (r = b + o + 65535) - 65536 * (o = Math.floor(r / 65536)),m = (r = m + o + 65535) - 65536 * (o = Math.floor(r / 65536)),w = (r = w + o + 65535) - 65536 * (o = Math.floor(r / 65536)),i += o - 1 + 37 * (o - 1),t[0] = i,t[1] = s,t[2] = c,t[3] = a,t[4] = u,t[5] = h,t[6] = p,t[7] = f,t[8] = l,t[9] = d,t[10] = y,t[11] = v,t[12] = g,t[13] = b,t[14] = m,t[15] = w
              }
  
              function z(t, e) {
                  D(t, e, e)
              }
  
              function H(t, n) {
                  var r, o = e();
                  for (r = 0; r < 16; r++) o[r] = n[r];
                  for (r = 253; r >= 0; r--) z(o, o), 2 !== r && 4 !== r && D(o, o, n);
                  for (r = 0; r < 16; r++) t[r] = o[r]
              }
  
              function q(t, n) {
                  var r, o = e();
                  for (r = 0; r < 16; r++) o[r] = n[r];
                  for (r = 250; r >= 0; r--) z(o, o), 1 !== r && D(o, o, n);
                  for (r = 0; r < 16; r++) t[r] = o[r]
              }
  
              function F(t, n, r) {
                  var o, i, s = new Uint8Array(32), c = new Float64Array(80), u = e(), h = e(), p = e(), f = e(), l = e(),
                      d = e();
                  for (i = 0; i < 31; i++) s[i] = n[i];
                  for (s[31] = 127 & n[31] | 64, s[0] &= 248, I(c, r), i = 0; i < 16; i++) h[i] = c[i], f[i] = u[i] = p[i] = 0;
                  for (u[0] = f[0] = 1, i = 254; i >= 0; --i) R(u, h, o = s[i >>> 3] >>> (7 & i) & 1), R(p, f, o), N(l, u, p), B(u, u, p), N(p, h, f), B(h, h, f), z(f, l), z(d, u), D(u, p, u), D(p, h, l), N(l, u, p), B(u, u, p), z(h, u), B(p, f, d), D(u, p, a), N(u, u, f), D(p, p, u), D(u, f, d), D(f, h, c), z(h, l), R(u, h, o), R(p, f, o);
                  for (i = 0; i < 16; i++) c[i + 16] = u[i], c[i + 32] = p[i], c[i + 48] = h[i], c[i + 64] = f[i];
                  var y = c.subarray(32), v = c.subarray(16);
                  return H(y, y), D(v, v, y), U(t, v), 0
              }
  
              function X(t, e) {
                  return F(t, e, i)
              }
  
              function J(t, e) {
                  return r(e, 32), X(t, e)
              }
  
              function Y(t, e, n) {
                  var r = new Uint8Array(32);
                  return F(r, n, e), m(t, o, r, w)
              }
  
              O.prototype.blocks = function (t, e, n) {
                  for (var r, o, i, s, c, a, u, h, p, f, l, d, y, v, g, b, m, w, _, S = this.fin ? 0 : 2048, k = this.h[0], T = this.h[1], O = this.h[2], C = this.h[3], A = this.h[4], E = this.h[5], P = this.h[6], x = this.h[7], L = this.h[8], R = this.h[9], U = this.r[0], M = this.r[1], j = this.r[2], I = this.r[3], N = this.r[4], B = this.r[5], D = this.r[6], z = this.r[7], H = this.r[8], q = this.r[9]; n >= 16;) f = p = 0, f += (k += 8191 & (r = 255 & t[e + 0] | (255 & t[e + 1]) << 8)) * U, f += (T += 8191 & (r >>> 13 | (o = 255 & t[e + 2] | (255 & t[e + 3]) << 8) << 3)) * (5 * q), f += (O += 8191 & (o >>> 10 | (i = 255 & t[e + 4] | (255 & t[e + 5]) << 8) << 6)) * (5 * H), f += (C += 8191 & (i >>> 7 | (s = 255 & t[e + 6] | (255 & t[e + 7]) << 8) << 9)) * (5 * z), p = (f += (A += 8191 & (s >>> 4 | (c = 255 & t[e + 8] | (255 & t[e + 9]) << 8) << 12)) * (5 * D)) >>> 13, f &= 8191, f += (E += c >>> 1 & 8191) * (5 * B), f += (P += 8191 & (c >>> 14 | (a = 255 & t[e + 10] | (255 & t[e + 11]) << 8) << 2)) * (5 * N), f += (x += 8191 & (a >>> 11 | (u = 255 & t[e + 12] | (255 & t[e + 13]) << 8) << 5)) * (5 * I), f += (L += 8191 & (u >>> 8 | (h = 255 & t[e + 14] | (255 & t[e + 15]) << 8) << 8)) * (5 * j), l = p += (f += (R += h >>> 5 | S) * (5 * M)) >>> 13, l += k * M, l += T * U, l += O * (5 * q), l += C * (5 * H), p = (l += A * (5 * z)) >>> 13, l &= 8191, l += E * (5 * D), l += P * (5 * B), l += x * (5 * N), l += L * (5 * I), p += (l += R * (5 * j)) >>> 13, l &= 8191, d = p, d += k * j, d += T * M, d += O * U, d += C * (5 * q), p = (d += A * (5 * H)) >>> 13, d &= 8191, d += E * (5 * z), d += P * (5 * D), d += x * (5 * B), d += L * (5 * N), y = p += (d += R * (5 * I)) >>> 13, y += k * I, y += T * j, y += O * M, y += C * U, p = (y += A * (5 * q)) >>> 13, y &= 8191, y += E * (5 * H), y += P * (5 * z), y += x * (5 * D), y += L * (5 * B), v = p += (y += R * (5 * N)) >>> 13, v += k * N, v += T * I, v += O * j, v += C * M, p = (v += A * U) >>> 13, v &= 8191, v += E * (5 * q), v += P * (5 * H), v += x * (5 * z), v += L * (5 * D), g = p += (v += R * (5 * B)) >>> 13, g += k * B, g += T * N, g += O * I, g += C * j, p = (g += A * M) >>> 13, g &= 8191, g += E * U, g += P * (5 * q), g += x * (5 * H), g += L * (5 * z), b = p += (g += R * (5 * D)) >>> 13, b += k * D, b += T * B, b += O * N, b += C * I, p = (b += A * j) >>> 13, b &= 8191, b += E * M, b += P * U, b += x * (5 * q), b += L * (5 * H), m = p += (b += R * (5 * z)) >>> 13, m += k * z, m += T * D, m += O * B, m += C * N, p = (m += A * I) >>> 13, m &= 8191, m += E * j, m += P * M, m += x * U, m += L * (5 * q), w = p += (m += R * (5 * H)) >>> 13, w += k * H, w += T * z, w += O * D, w += C * B, p = (w += A * N) >>> 13, w &= 8191, w += E * I, w += P * j, w += x * M, w += L * U,_ = p += (w += R * (5 * q)) >>> 13,_ += k * q,_ += T * H,_ += O * z,_ += C * D,p = (_ += A * B) >>> 13,_ &= 8191,_ += E * N,_ += P * I,_ += x * j,_ += L * M,k = f = 8191 & (p = (p = ((p += (_ += R * U) >>> 13) << 2) + p | 0) + (f &= 8191) | 0),T = l += p >>>= 13,O = d &= 8191,C = y &= 8191,A = v &= 8191,E = g &= 8191,P = b &= 8191,x = m &= 8191,L = w &= 8191,R = _ &= 8191,e += 16,n -= 16;
                  this.h[0] = k, this.h[1] = T, this.h[2] = O, this.h[3] = C, this.h[4] = A, this.h[5] = E, this.h[6] = P, this.h[7] = x, this.h[8] = L, this.h[9] = R
              }, O.prototype.finish = function (t, e) {
                  var n, r, o, i, s = new Uint16Array(10);
                  if (this.leftover) {
                      for (i = this.leftover, this.buffer[i++] = 1; i < 16; i++) this.buffer[i] = 0;
                      this.fin = 1, this.blocks(this.buffer, 0, 16)
                  }
                  for (n = this.h[1] >>> 13, this.h[1] &= 8191, i = 2; i < 10; i++) this.h[i] += n, n = this.h[i] >>> 13, this.h[i] &= 8191;
                  for (this.h[0] += 5 * n, n = this.h[0] >>> 13, this.h[0] &= 8191, this.h[1] += n, n = this.h[1] >>> 13, this.h[1] &= 8191, this.h[2] += n, s[0] = this.h[0] + 5, n = s[0] >>> 13, s[0] &= 8191, i = 1; i < 10; i++) s[i] = this.h[i] + n, n = s[i] >>> 13, s[i] &= 8191;
                  for (s[9] -= 8192, r = (1 ^ n) - 1, i = 0; i < 10; i++) s[i] &= r;
                  for (r = ~r, i = 0; i < 10; i++) this.h[i] = this.h[i] & r | s[i];
                  for (this.h[0] = 65535 & (this.h[0] | this.h[1] << 13), this.h[1] = 65535 & (this.h[1] >>> 3 | this.h[2] << 10), this.h[2] = 65535 & (this.h[2] >>> 6 | this.h[3] << 7), this.h[3] = 65535 & (this.h[3] >>> 9 | this.h[4] << 4), this.h[4] = 65535 & (this.h[4] >>> 12 | this.h[5] << 1 | this.h[6] << 14), this.h[5] = 65535 & (this.h[6] >>> 2 | this.h[7] << 11), this.h[6] = 65535 & (this.h[7] >>> 5 | this.h[8] << 8), this.h[7] = 65535 & (this.h[8] >>> 8 | this.h[9] << 5), o = this.h[0] + this.pad[0], this.h[0] = 65535 & o, i = 1; i < 8; i++) o = (this.h[i] + this.pad[i] | 0) + (o >>> 16) | 0, this.h[i] = 65535 & o;
                  t[e + 0] = this.h[0] >>> 0 & 255, t[e + 1] = this.h[0] >>> 8 & 255, t[e + 2] = this.h[1] >>> 0 & 255, t[e + 3] = this.h[1] >>> 8 & 255, t[e + 4] = this.h[2] >>> 0 & 255, t[e + 5] = this.h[2] >>> 8 & 255, t[e + 6] = this.h[3] >>> 0 & 255, t[e + 7] = this.h[3] >>> 8 & 255, t[e + 8] = this.h[4] >>> 0 & 255, t[e + 9] = this.h[4] >>> 8 & 255, t[e + 10] = this.h[5] >>> 0 & 255, t[e + 11] = this.h[5] >>> 8 & 255, t[e + 12] = this.h[6] >>> 0 & 255, t[e + 13] = this.h[6] >>> 8 & 255, t[e + 14] = this.h[7] >>> 0 & 255, t[e + 15] = this.h[7] >>> 8 & 255
              }, O.prototype.update = function (t, e, n) {
                  var r, o;
                  if (this.leftover) {
                      for ((o = 16 - this.leftover) > n && (o = n), r = 0; r < o; r++) this.buffer[this.leftover + r] = t[e + r];
                      if (n -= o, e += o, this.leftover += o, this.leftover < 16) return;
                      this.blocks(this.buffer, 0, 16), this.leftover = 0
                  }
                  if (n >= 16 && (o = n - n % 16, this.blocks(t, e, o), e += o, n -= o), n) {
                      for (r = 0; r < n; r++) this.buffer[this.leftover + r] = t[e + r];
                      this.leftover += n
                  }
              };
              var K = E, W = P;
              var G = [1116352408, 3609767458, 1899447441, 602891725, 3049323471, 3964484399, 3921009573, 2173295548, 961987163, 4081628472, 1508970993, 3053834265, 2453635748, 2937671579, 2870763221, 3664609560, 3624381080, 2734883394, 310598401, 1164996542, 607225278, 1323610764, 1426881987, 3590304994, 1925078388, 4068182383, 2162078206, 991336113, 2614888103, 633803317, 3248222580, 3479774868, 3835390401, 2666613458, 4022224774, 944711139, 264347078, 2341262773, 604807628, 2007800933, 770255983, 1495990901, 1249150122, 1856431235, 1555081692, 3175218132, 1996064986, 2198950837, 2554220882, 3999719339, 2821834349, 766784016, 2952996808, 2566594879, 3210313671, 3203337956, 3336571891, 1034457026, 3584528711, 2466948901, 113926993, 3758326383, 338241895, 168717936, 666307205, 1188179964, 773529912, 1546045734, 1294757372, 1522805485, 1396182291, 2643833823, 1695183700, 2343527390, 1986661051, 1014477480, 2177026350, 1206759142, 2456956037, 344077627, 2730485921, 1290863460, 2820302411, 3158454273, 3259730800, 3505952657, 3345764771, 106217008, 3516065817, 3606008344, 3600352804, 1432725776, 4094571909, 1467031594, 275423344, 851169720, 430227734, 3100823752, 506948616, 1363258195, 659060556, 3750685593, 883997877, 3785050280, 958139571, 3318307427, 1322822218, 3812723403, 1537002063, 2003034995, 1747873779, 3602036899, 1955562222, 1575990012, 2024104815, 1125592928, 2227730452, 2716904306, 2361852424, 442776044, 2428436474, 593698344, 2756734187, 3733110249, 3204031479, 2999351573, 3329325298, 3815920427, 3391569614, 3928383900, 3515267271, 566280711, 3940187606, 3454069534, 4118630271, 4000239992, 116418474, 1914138554, 174292421, 2731055270, 289380356, 3203993006, 460393269, 320620315, 685471733, 587496836, 852142971, 1086792851, 1017036298, 365543100, 1126000580, 2618297676, 1288033470, 3409855158, 1501505948, 4234509866, 1607167915, 987167468, 1816402316, 1246189591];
  
              function Z(t, e, n, r) {
                  for (var o, i, s, c, a, u, h, p, f, l, d, y, v, g, b, m, w, _, S, k, T, O, C, A, E, P, x = new Int32Array(16), L = new Int32Array(16), R = t[0], U = t[1], M = t[2], j = t[3], I = t[4], N = t[5], B = t[6], D = t[7], z = e[0], H = e[1], q = e[2], F = e[3], X = e[4], J = e[5], Y = e[6], K = e[7], W = 0; r >= 128;) {
                      for (S = 0; S < 16; S++) k = 8 * S + W, x[S] = n[k + 0] << 24 | n[k + 1] << 16 | n[k + 2] << 8 | n[k + 3], L[S] = n[k + 4] << 24 | n[k + 5] << 16 | n[k + 6] << 8 | n[k + 7];
                      for (S = 0; S < 80; S++) if (o = R, i = U, s = M, c = j, a = I, u = N, h = B, D, f = z, l = H, d = q, y = F, v = X, g = J, b = Y, K, C = 65535 & (O = K), A = O >>> 16, E = 65535 & (T = D), P = T >>> 16, C += 65535 & (O = (X >>> 14 | I << 18) ^ (X >>> 18 | I << 14) ^ (I >>> 9 | X << 23)), A += O >>> 16, E += 65535 & (T = (I >>> 14 | X << 18) ^ (I >>> 18 | X << 14) ^ (X >>> 9 | I << 23)), P += T >>> 16, C += 65535 & (O = X & J ^ ~X & Y), A += O >>> 16, E += 65535 & (T = I & N ^ ~I & B), P += T >>> 16, C += 65535 & (O = G[2 * S + 1]), A += O >>> 16, E += 65535 & (T = G[2 * S]), P += T >>> 16, T = x[S % 16], A += (O = L[S % 16]) >>> 16, E += 65535 & T, P += T >>> 16, E += (A += (C += 65535 & O) >>> 16) >>> 16, C = 65535 & (O = _ = 65535 & C | A << 16), A = O >>> 16, E = 65535 & (T = w = 65535 & E | (P += E >>> 16) << 16), P = T >>> 16, C += 65535 & (O = (z >>> 28 | R << 4) ^ (R >>> 2 | z << 30) ^ (R >>> 7 | z << 25)), A += O >>> 16, E += 65535 & (T = (R >>> 28 | z << 4) ^ (z >>> 2 | R << 30) ^ (z >>> 7 | R << 25)), P += T >>> 16, A += (O = z & H ^ z & q ^ H & q) >>> 16, E += 65535 & (T = R & U ^ R & M ^ U & M), P += T >>> 16, p = 65535 & (E += (A += (C += 65535 & O) >>> 16) >>> 16) | (P += E >>> 16) << 16, m = 65535 & C | A << 16, C = 65535 & (O = y), A = O >>> 16, E = 65535 & (T = c), P = T >>> 16, A += (O = _) >>> 16, E += 65535 & (T = w), P += T >>> 16, U = o, M = i, j = s, I = c = 65535 & (E += (A += (C += 65535 & O) >>> 16) >>> 16) | (P += E >>> 16) << 16, N = a, B = u, D = h, R = p, H = f, q = l, F = d, X = y = 65535 & C | A << 16, J = v, Y = g, K = b, z = m, S % 16 == 15) for (k = 0; k < 16; k++) T = x[k], C = 65535 & (O = L[k]), A = O >>> 16, E = 65535 & T, P = T >>> 16, T = x[(k + 9) % 16], C += 65535 & (O = L[(k + 9) % 16]), A += O >>> 16, E += 65535 & T, P += T >>> 16, w = x[(k + 1) % 16], C += 65535 & (O = ((_ = L[(k + 1) % 16]) >>> 1 | w << 31) ^ (_ >>> 8 | w << 24) ^ (_ >>> 7 | w << 25)), A += O >>> 16, E += 65535 & (T = (w >>> 1 | _ << 31) ^ (w >>> 8 | _ << 24) ^ w >>> 7), P += T >>> 16, w = x[(k + 14) % 16], A += (O = ((_ = L[(k + 14) % 16]) >>> 19 | w << 13) ^ (w >>> 29 | _ << 3) ^ (_ >>> 6 | w << 26)) >>> 16, E += 65535 & (T = (w >>> 19 | _ << 13) ^ (_ >>> 29 | w << 3) ^ w >>> 6), P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, x[k] = 65535 & E | P << 16, L[k] = 65535 & C | A << 16;
                      C = 65535 & (O = z), A = O >>> 16, E = 65535 & (T = R), P = T >>> 16, T = t[0], A += (O = e[0]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[0] = R = 65535 & E | P << 16, e[0] = z = 65535 & C | A << 16, C = 65535 & (O = H), A = O >>> 16, E = 65535 & (T = U), P = T >>> 16, T = t[1], A += (O = e[1]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[1] = U = 65535 & E | P << 16, e[1] = H = 65535 & C | A << 16, C = 65535 & (O = q), A = O >>> 16, E = 65535 & (T = M), P = T >>> 16, T = t[2], A += (O = e[2]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[2] = M = 65535 & E | P << 16, e[2] = q = 65535 & C | A << 16, C = 65535 & (O = F), A = O >>> 16, E = 65535 & (T = j), P = T >>> 16, T = t[3], A += (O = e[3]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[3] = j = 65535 & E | P << 16, e[3] = F = 65535 & C | A << 16, C = 65535 & (O = X), A = O >>> 16, E = 65535 & (T = I), P = T >>> 16, T = t[4], A += (O = e[4]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[4] = I = 65535 & E | P << 16, e[4] = X = 65535 & C | A << 16, C = 65535 & (O = J), A = O >>> 16, E = 65535 & (T = N), P = T >>> 16, T = t[5], A += (O = e[5]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[5] = N = 65535 & E | P << 16, e[5] = J = 65535 & C | A << 16, C = 65535 & (O = Y), A = O >>> 16, E = 65535 & (T = B), P = T >>> 16, T = t[6], A += (O = e[6]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[6] = B = 65535 & E | P << 16, e[6] = Y = 65535 & C | A << 16, C = 65535 & (O = K), A = O >>> 16, E = 65535 & (T = D), P = T >>> 16, T = t[7], A += (O = e[7]) >>> 16, E += 65535 & T, P += T >>> 16, P += (E += (A += (C += 65535 & O) >>> 16) >>> 16) >>> 16, t[7] = D = 65535 & E | P << 16, e[7] = K = 65535 & C | A << 16, W += 128, r -= 128
                  }
                  return r
              }
  
              function V(t, e, n) {
                  var r, o = new Int32Array(8), i = new Int32Array(8), s = new Uint8Array(256), c = n;
                  for (o[0] = 1779033703, o[1] = 3144134277, o[2] = 1013904242, o[3] = 2773480762, o[4] = 1359893119, o[5] = 2600822924, o[6] = 528734635, o[7] = 1541459225, i[0] = 4089235720, i[1] = 2227873595, i[2] = 4271175723, i[3] = 1595750129, i[4] = 2917565137, i[5] = 725511199, i[6] = 4215389547, i[7] = 327033209, Z(o, i, e, n), n %= 128, r = 0; r < n; r++) s[r] = e[c - n + r];
                  for (s[n] = 128, s[(n = 256 - 128 * (n < 112 ? 1 : 0)) - 9] = 0, d(s, n - 8, c / 536870912 | 0, c << 3), Z(o, i, s, n), r = 0; r < 8; r++) d(t, 8 * r, o[r], i[r]);
                  return 0
              }
  
              function Q(t, n) {
                  var r = e(), o = e(), i = e(), s = e(), c = e(), a = e(), u = e(), p = e(), f = e();
                  B(r, t[1], t[0]), B(f, n[1], n[0]), D(r, r, f), N(o, t[0], t[1]), N(f, n[0], n[1]), D(o, o, f), D(i, t[3], n[3]), D(i, i, h), D(s, t[2], n[2]), N(s, s, s), B(c, o, r), B(a, s, i), N(u, s, i), N(p, o, r), D(t[0], c, a), D(t[1], p, u), D(t[2], u, a), D(t[3], c, p)
              }
  
              function $(t, e, n) {
                  var r;
                  for (r = 0; r < 4; r++) R(t[r], e[r], n)
              }
  
              function tt(t, n) {
                  var r = e(), o = e(), i = e();
                  H(i, n[2]), D(r, n[0], i), D(o, n[1], i), U(t, o), t[31] ^= j(r) << 7
              }
  
              function et(t, e, n) {
                  var r, o;
                  for (x(t[0], s), x(t[1], c), x(t[2], c), x(t[3], s), o = 255; o >= 0; --o) $(t, e, r = n[o / 8 | 0] >> (7 & o) & 1), Q(e, t), Q(t, t), $(t, e, r)
              }
  
              function nt(t, n) {
                  var r = [e(), e(), e(), e()];
                  x(r[0], p), x(r[1], f), x(r[2], c), D(r[3], p, f), et(t, r, n)
              }
  
              function rt(t, n, o) {
                  var i, s = new Uint8Array(64), c = [e(), e(), e(), e()];
                  for (o || r(n, 32), V(s, n, 32), s[0] &= 248, s[31] &= 127, s[31] |= 64, nt(c, s), tt(t, c), i = 0; i < 32; i++) n[i + 32] = t[i];
                  return 0
              }
  
              var ot = new Float64Array([237, 211, 245, 92, 26, 99, 18, 88, 214, 156, 247, 162, 222, 249, 222, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16]);
  
              function it(t, e) {
                  var n, r, o, i;
                  for (r = 63; r >= 32; --r) {
                      for (n = 0, o = r - 32, i = r - 12; o < i; ++o) e[o] += n - 16 * e[r] * ot[o - (r - 32)], n = e[o] + 128 >> 8, e[o] -= 256 * n;
                      e[o] += n, e[r] = 0
                  }
                  for (n = 0, o = 0; o < 32; o++) e[o] += n - (e[31] >> 4) * ot[o], n = e[o] >> 8, e[o] &= 255;
                  for (o = 0; o < 32; o++) e[o] -= n * ot[o];
                  for (r = 0; r < 32; r++) e[r + 1] += e[r] >> 8, t[r] = 255 & e[r]
              }
  
              function st(t) {
                  var e, n = new Float64Array(64);
                  for (e = 0; e < 64; e++) n[e] = t[e];
                  for (e = 0; e < 64; e++) t[e] = 0;
                  it(t, n)
              }
  
              function ct(t, n, r, o) {
                  var i, s, c = new Uint8Array(64), a = new Uint8Array(64), u = new Uint8Array(64),
                      h = new Float64Array(64), p = [e(), e(), e(), e()];
                  V(c, o, 32), c[0] &= 248, c[31] &= 127, c[31] |= 64;
                  var f = r + 64;
                  for (i = 0; i < r; i++) t[64 + i] = n[i];
                  for (i = 0; i < 32; i++) t[32 + i] = c[32 + i];
                  for (V(u, t.subarray(32), r + 32), st(u), nt(p, u), tt(t, p), i = 32; i < 64; i++) t[i] = o[i];
                  for (V(a, t, r + 64), st(a), i = 0; i < 64; i++) h[i] = 0;
                  for (i = 0; i < 32; i++) h[i] = u[i];
                  for (i = 0; i < 32; i++) for (s = 0; s < 32; s++) h[i + s] += a[i] * c[s];
                  return it(t.subarray(32), h), f
              }
  
              function at(t, n, r, o) {
                  var i, a = new Uint8Array(32), h = new Uint8Array(64), p = [e(), e(), e(), e()],
                      f = [e(), e(), e(), e()];
                  if (r < 64) return -1;
                  if (function (t, n) {
                      var r = e(), o = e(), i = e(), a = e(), h = e(), p = e(), f = e();
                      return x(t[2], c), I(t[1], n), z(i, t[1]), D(a, i, u), B(i, i, t[2]), N(a, t[2], a), z(h, a), z(p, h), D(f, p, h), D(r, f, i), D(r, r, a), q(r, r), D(r, r, i), D(r, r, a), D(r, r, a), D(t[0], r, a), z(o, t[0]), D(o, o, a), M(o, i) && D(t[0], t[0], l), z(o, t[0]), D(o, o, a), M(o, i) ? -1 : (j(t[0]) === n[31] >> 7 && B(t[0], s, t[0]), D(t[3], t[0], t[1]), 0)
                  }(f, o)) return -1;
                  for (i = 0; i < r; i++) t[i] = n[i];
                  for (i = 0; i < 32; i++) t[i + 32] = o[i];
                  if (V(h, t, r), st(h), et(p, f, h), nt(f, n.subarray(32)), Q(p, f), tt(a, p), r -= 64, g(n, 0, a, 0)) {
                      for (i = 0; i < r; i++) t[i] = 0;
                      return -1
                  }
                  for (i = 0; i < r; i++) t[i] = n[i + 64];
                  return r
              }
  
              function ut(t, e) {
                  if (32 !== t.length) throw new Error("bad key size");
                  if (24 !== e.length) throw new Error("bad nonce size")
              }
  
              function ht() {
                  for (var t = 0; t < arguments.length; t++) if (!(arguments[t] instanceof Uint8Array)) throw new TypeError("unexpected type, use Uint8Array")
              }
  
              function pt(t) {
                  for (var e = 0; e < t.length; e++) t[e] = 0
              }
  
              t.lowlevel = {
                  crypto_core_hsalsa20: m,
                  crypto_stream_xor: T,
                  crypto_stream: k,
                  crypto_stream_salsa20_xor: _,
                  crypto_stream_salsa20: S,
                  crypto_onetimeauth: C,
                  crypto_onetimeauth_verify: A,
                  crypto_verify_16: v,
                  crypto_verify_32: g,
                  crypto_secretbox: E,
                  crypto_secretbox_open: P,
                  crypto_scalarmult: F,
                  crypto_scalarmult_base: X,
                  crypto_box_beforenm: Y,
                  crypto_box_afternm: K,
                  crypto_box: function (t, e, n, r, o, i) {
                      var s = new Uint8Array(32);
                      return Y(s, o, i), K(t, e, n, r, s)
                  },
                  crypto_box_open: function (t, e, n, r, o, i) {
                      var s = new Uint8Array(32);
                      return Y(s, o, i), W(t, e, n, r, s)
                  },
                  crypto_box_keypair: J,
                  crypto_hash: V,
                  crypto_sign: ct,
                  crypto_sign_keypair: rt,
                  crypto_sign_open: at,
                  crypto_secretbox_KEYBYTES: 32,
                  crypto_secretbox_NONCEBYTES: 24,
                  crypto_secretbox_ZEROBYTES: 32,
                  crypto_secretbox_BOXZEROBYTES: 16,
                  crypto_scalarmult_BYTES: 32,
                  crypto_scalarmult_SCALARBYTES: 32,
                  crypto_box_PUBLICKEYBYTES: 32,
                  crypto_box_SECRETKEYBYTES: 32,
                  crypto_box_BEFORENMBYTES: 32,
                  crypto_box_NONCEBYTES: 24,
                  crypto_box_ZEROBYTES: 32,
                  crypto_box_BOXZEROBYTES: 16,
                  crypto_sign_BYTES: 64,
                  crypto_sign_PUBLICKEYBYTES: 32,
                  crypto_sign_SECRETKEYBYTES: 64,
                  crypto_sign_SEEDBYTES: 32,
                  crypto_hash_BYTES: 64,
                  gf: e,
                  D: u,
                  L: ot,
                  pack25519: U,
                  unpack25519: I,
                  M: D,
                  A: N,
                  S: z,
                  Z: B,
                  pow2523: q,
                  add: Q,
                  set25519: x,
                  modL: it,
                  scalarmult: et,
                  scalarbase: nt
              }, t.randomBytes = function (t) {
                  var e = new Uint8Array(t);
                  return r(e, t), e
              }, t.secretbox = function (t, e, n) {
                  ht(t, e, n), ut(n, e);
                  for (var r = new Uint8Array(32 + t.length), o = new Uint8Array(r.length), i = 0; i < t.length; i++) r[i + 32] = t[i];
                  return E(o, r, r.length, e, n), o.subarray(16)
              }, t.secretbox.open = function (t, e, n) {
                  ht(t, e, n), ut(n, e);
                  for (var r = new Uint8Array(16 + t.length), o = new Uint8Array(r.length), i = 0; i < t.length; i++) r[i + 16] = t[i];
                  return r.length < 32 ? null : 0 !== P(o, r, r.length, e, n) ? null : o.subarray(32)
              }, t.secretbox.keyLength = 32, t.secretbox.nonceLength = 24, t.secretbox.overheadLength = 16, t.scalarMult = function (t, e) {
                  if (ht(t, e), 32 !== t.length) throw new Error("bad n size");
                  if (32 !== e.length) throw new Error("bad p size");
                  var n = new Uint8Array(32);
                  return F(n, t, e), n
              }, t.scalarMult.base = function (t) {
                  if (ht(t), 32 !== t.length) throw new Error("bad n size");
                  var e = new Uint8Array(32);
                  return X(e, t), e
              }, t.scalarMult.scalarLength = 32, t.scalarMult.groupElementLength = 32, t.box = function (e, n, r, o) {
                  var i = t.box.before(r, o);
                  return t.secretbox(e, n, i)
              }, t.box.before = function (t, e) {
                  ht(t, e), function (t, e) {
                      if (32 !== t.length) throw new Error("bad public key size");
                      if (32 !== e.length) throw new Error("bad secret key size")
                  }(t, e);
                  var n = new Uint8Array(32);
                  return Y(n, t, e), n
              }, t.box.after = t.secretbox, t.box.open = function (e, n, r, o) {
                  var i = t.box.before(r, o);
                  return t.secretbox.open(e, n, i)
              }, t.box.open.after = t.secretbox.open, t.box.keyPair = function () {
                  var t = new Uint8Array(32), e = new Uint8Array(32);
                  return J(t, e), {publicKey: t, secretKey: e}
              }, t.box.keyPair.fromSecretKey = function (t) {
                  if (ht(t), 32 !== t.length) throw new Error("bad secret key size");
                  var e = new Uint8Array(32);
                  return X(e, t), {publicKey: e, secretKey: new Uint8Array(t)}
              }, t.box.publicKeyLength = 32, t.box.secretKeyLength = 32, t.box.sharedKeyLength = 32, t.box.nonceLength = 24, t.box.overheadLength = t.secretbox.overheadLength, t.sign = function (t, e) {
                  if (ht(t, e), 64 !== e.length) throw new Error("bad secret key size");
                  var n = new Uint8Array(64 + t.length);
                  return ct(n, t, t.length, e), n
              }, t.sign.open = function (t, e) {
                  if (ht(t, e), 32 !== e.length) throw new Error("bad public key size");
                  var n = new Uint8Array(t.length), r = at(n, t, t.length, e);
                  if (r < 0) return null;
                  for (var o = new Uint8Array(r), i = 0; i < o.length; i++) o[i] = n[i];
                  return o
              }, t.sign.detached = function (e, n) {
                  for (var r = t.sign(e, n), o = new Uint8Array(64), i = 0; i < o.length; i++) o[i] = r[i];
                  return o
              }, t.sign.detached.verify = function (t, e, n) {
                  if (ht(t, e, n), 64 !== e.length) throw new Error("bad signature size");
                  if (32 !== n.length) throw new Error("bad public key size");
                  var r, o = new Uint8Array(64 + t.length), i = new Uint8Array(64 + t.length);
                  for (r = 0; r < 64; r++) o[r] = e[r];
                  for (r = 0; r < t.length; r++) o[r + 64] = t[r];
                  return at(i, o, o.length, n) >= 0
              }, t.sign.keyPair = function () {
                  var t = new Uint8Array(32), e = new Uint8Array(64);
                  return rt(t, e), {publicKey: t, secretKey: e}
              }, t.sign.keyPair.fromSecretKey = function (t) {
                  if (ht(t), 64 !== t.length) throw new Error("bad secret key size");
                  for (var e = new Uint8Array(32), n = 0; n < e.length; n++) e[n] = t[32 + n];
                  return {publicKey: e, secretKey: new Uint8Array(t)}
              }, t.sign.keyPair.fromSeed = function (t) {
                  if (ht(t), 32 !== t.length) throw new Error("bad seed size");
                  for (var e = new Uint8Array(32), n = new Uint8Array(64), r = 0; r < 32; r++) n[r] = t[r];
                  return rt(e, n, !0), {publicKey: e, secretKey: n}
              }, t.sign.publicKeyLength = 32, t.sign.secretKeyLength = 64, t.sign.seedLength = 32, t.sign.signatureLength = 64, t.hash = function (t) {
                  ht(t);
                  var e = new Uint8Array(64);
                  return V(e, t, t.length), e
              }, t.hash.hashLength = 64, t.verify = function (t, e) {
                  return ht(t, e), 0 !== t.length && 0 !== e.length && (t.length === e.length && 0 === y(t, 0, e, 0, t.length))
              }, t.setPRNG = function (t) {
                  r = t
              }, function () {
                  var e = "undefined" != typeof self ? self.crypto || self.msCrypto : null;
                  if (e && e.getRandomValues) {
                      t.setPRNG((function (t, n) {
                          var r, o = new Uint8Array(n);
                          for (r = 0; r < n; r += 65536) e.getRandomValues(o.subarray(r, r + Math.min(n - r, 65536)));
                          for (r = 0; r < n; r++) t[r] = o[r];
                          pt(o)
                      }))
                  } else (e = n(3)) && e.randomBytes && t.setPRNG((function (t, n) {
                      var r, o = e.randomBytes(n);
                      for (r = 0; r < n; r++) t[r] = o[r];
                      pt(o)
                  }))
              }()
          }(t.exports ? t.exports : self.nacl = self.nacl || {})
      }, function (t, e, n) {
          !function (e, n) {
              "use strict";
              t.exports ? t.exports = n() : e.nacl ? e.nacl.util = n() : (e.nacl = {}, e.nacl.util = n())
          }(this, (function () {
              "use strict";
              var t = {};
  
              function e(t) {
                  if (!/^(?:[A-Za-z0-9+\/]{2}[A-Za-z0-9+\/]{2})*(?:[A-Za-z0-9+\/]{2}==|[A-Za-z0-9+\/]{3}=)?$/.test(t)) throw new TypeError("invalid encoding")
              }
  
              return t.decodeUTF8 = function (t) {
                  if ("string" != typeof t) throw new TypeError("expected string");
                  var e, n = unescape(encodeURIComponent(t)), r = new Uint8Array(n.length);
                  for (e = 0; e < n.length; e++) r[e] = n.charCodeAt(e);
                  return r
              }, t.encodeUTF8 = function (t) {
                  var e, n = [];
                  for (e = 0; e < t.length; e++) n.push(String.fromCharCode(t[e]));
                  return decodeURIComponent(escape(n.join("")))
              }, "undefined" == typeof atob ? void 0 !== Buffer.from ? (t.encodeBase64 = function (t) {
                  return Buffer.from(t).toString("base64")
              }, t.decodeBase64 = function (t) {
                  return e(t), new Uint8Array(Array.prototype.slice.call(Buffer.from(t, "base64"), 0))
              }) : (t.encodeBase64 = function (t) {
                  return new Buffer(t).toString("base64")
              }, t.decodeBase64 = function (t) {
                  return e(t), new Uint8Array(Array.prototype.slice.call(new Buffer(t, "base64"), 0))
              }) : (t.encodeBase64 = function (t) {
                  var e, n = [], r = t.length;
                  for (e = 0; e < r; e++) n.push(String.fromCharCode(t[e]));
                  return btoa(n.join(""))
              }, t.decodeBase64 = function (t) {
                  e(t);
                  var n, r = atob(t), o = new Uint8Array(r.length);
                  for (n = 0; n < r.length; n++) o[n] = r.charCodeAt(n);
                  return o
              }), t
          }))
      }, function (t, e, n) {
          t.exports = n(4).default
      }, function (t, e) {
      }, function (t, e, n) {
          "use strict";
          n.r(e);
          var r = function () {
              function t(t, e) {
                  this.lastId = 0, this.prefix = t, this.name = e
              }
  
              return t.prototype.create = function (t) {
                  this.lastId++;
                  var e = this.lastId, n = this.prefix + e, r = this.name + "[" + e + "]", o = !1, i = function () {
                      o || (t.apply(null, arguments), o = !0)
                  };
                  return this[e] = i, {number: e, id: n, name: r, callback: i}
              }, t.prototype.remove = function (t) {
                  delete this[t.number]
              }, t
          }(), o = new r("_pusher_script_", "Pusher.ScriptReceivers"), i = {
              VERSION: "5.1.1",
              PROTOCOL: 7,
              host: "ws.pusherapp.com",
              ws_port: 80,
              wss_port: 443,
              ws_path: "",
              sockjs_host: "sockjs.pusher.com",
              sockjs_http_port: 80,
              sockjs_https_port: 443,
              sockjs_path: "/pusher",
              stats_host: "stats.pusher.com",
              channel_auth_endpoint: "/pusher/auth",
              channel_auth_transport: "ajax",
              activity_timeout: 12e4,
              pong_timeout: 3e4,
              unavailable_timeout: 1e4,
              cdn_http: "http://js.pusher.com",
              cdn_https: "https://js.pusher.com",
              dependency_suffix: ""
          }, s = function () {
              function t(t) {
                  this.options = t, this.receivers = t.receivers || o, this.loading = {}
              }
  
              return t.prototype.load = function (t, e, n) {
                  var r = this;
                  if (r.loading[t] && r.loading[t].length > 0) r.loading[t].push(n); else {
                      r.loading[t] = [n];
                      var o = we.createScriptRequest(r.getPath(t, e)), i = r.receivers.create((function (e) {
                          if (r.receivers.remove(i), r.loading[t]) {
                              var n = r.loading[t];
                              delete r.loading[t];
                              for (var s = function (t) {
                                  t || o.cleanup()
                              }, c = 0; c < n.length; c++) n[c](e, s)
                          }
                      }));
                      o.send(i)
                  }
              }, t.prototype.getRoot = function (t) {
                  var e = we.getDocument().location.protocol;
                  return (t && t.useTLS || "https:" === e ? this.options.cdn_https : this.options.cdn_http).replace(/\/*$/, "") + "/" + this.options.version
              }, t.prototype.getPath = function (t, e) {
                  return this.getRoot(e) + "/" + t + this.options.suffix + ".js"
              }, t
          }(), c = new r("_pusher_dependencies", "Pusher.DependenciesReceivers"), a = new s({
              cdn_http: i.cdn_http,
              cdn_https: i.cdn_https,
              version: i.VERSION,
              suffix: i.dependency_suffix,
              receivers: c
          });
          for (var u = String.fromCharCode, h = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", p = {}, f = 0, l = h.length; f < l; f++) p[h.charAt(f)] = f;
          var d, y = function (t) {
              var e = t.charCodeAt(0);
              return e < 128 ? t : e < 2048 ? u(192 | e >>> 6) + u(128 | 63 & e) : u(224 | e >>> 12 & 15) + u(128 | e >>> 6 & 63) + u(128 | 63 & e)
          }, v = function (t) {
              return t.replace(/[^\x00-\x7F]/g, y)
          }, g = function (t) {
              var e = [0, 2, 1][t.length % 3],
                  n = t.charCodeAt(0) << 16 | (t.length > 1 ? t.charCodeAt(1) : 0) << 8 | (t.length > 2 ? t.charCodeAt(2) : 0);
              return [h.charAt(n >>> 18), h.charAt(n >>> 12 & 63), e >= 2 ? "=" : h.charAt(n >>> 6 & 63), e >= 1 ? "=" : h.charAt(63 & n)].join("")
          }, b = window.btoa || function (t) {
              return t.replace(/[\s\S]{1,3}/g, g)
          }, m = function () {
              function t(t, e, n, r) {
                  var o = this;
                  this.clear = e, this.timer = t((function () {
                      o.timer && (o.timer = r(o.timer))
                  }), n)
              }
  
              return t.prototype.isRunning = function () {
                  return null !== this.timer
              }, t.prototype.ensureAborted = function () {
                  this.timer && (this.clear(this.timer), this.timer = null)
              }, t
          }(), w = (d = function (t, e) {
              return (d = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                  t.__proto__ = e
              } || function (t, e) {
                  for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
              })(t, e)
          }, function (t, e) {
              function n() {
                  this.constructor = t
              }
  
              d(t, e), t.prototype = null === e ? Object.create(e) : (n.prototype = e.prototype, new n)
          });
  
          function _(t) {
              window.clearTimeout(t)
          }
  
          function S(t) {
              window.clearInterval(t)
          }
  
          var k = function (t) {
              function e(e, n) {
                  return t.call(this, setTimeout, _, e, (function (t) {
                      return n(), null
                  })) || this
              }
  
              return w(e, t), e
          }(m), T = function (t) {
              function e(e, n) {
                  return t.call(this, setInterval, S, e, (function (t) {
                      return n(), t
                  })) || this
              }
  
              return w(e, t), e
          }(m), O = {
              now: function () {
                  return Date.now ? Date.now() : (new Date).valueOf()
              }, defer: function (t) {
                  return new k(0, t)
              }, method: function (t) {
                  for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
                  var r = Array.prototype.slice.call(arguments, 1);
                  return function (e) {
                      return e[t].apply(e, r.concat(arguments))
                  }
              }
          };
  
          function C(t) {
              for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
              for (var r = 0; r < e.length; r++) {
                  var o = e[r];
                  for (var i in o) o[i] && o[i].constructor && o[i].constructor === Object ? t[i] = C(t[i] || {}, o[i]) : t[i] = o[i]
              }
              return t
          }
  
          function A() {
              for (var t = ["Pusher"], e = 0; e < arguments.length; e++) "string" == typeof arguments[e] ? t.push(arguments[e]) : t.push(B(arguments[e]));
              return t.join(" : ")
          }
  
          function E(t, e) {
              var n = Array.prototype.indexOf;
              if (null === t) return -1;
              if (n && t.indexOf === n) return t.indexOf(e);
              for (var r = 0, o = t.length; r < o; r++) if (t[r] === e) return r;
              return -1
          }
  
          function P(t, e) {
              for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && e(t[n], n, t)
          }
  
          function x(t) {
              var e = [];
              return P(t, (function (t, n) {
                  e.push(n)
              })), e
          }
  
          function L(t, e, n) {
              for (var r = 0; r < t.length; r++) e.call(n || window, t[r], r, t)
          }
  
          function R(t, e) {
              for (var n = [], r = 0; r < t.length; r++) n.push(e(t[r], r, t, n));
              return n
          }
  
          function U(t, e) {
              e = e || function (t) {
                  return !!t
              };
              for (var n = [], r = 0; r < t.length; r++) e(t[r], r, t, n) && n.push(t[r]);
              return n
          }
  
          function M(t, e) {
              var n = {};
              return P(t, (function (r, o) {
                  (e && e(r, o, t, n) || Boolean(r)) && (n[o] = r)
              })), n
          }
  
          function j(t, e) {
              for (var n = 0; n < t.length; n++) if (e(t[n], n, t)) return !0;
              return !1
          }
  
          function I(t) {
              return e = function (t) {
                  return "object" == typeof t && (t = B(t)), encodeURIComponent((e = t.toString(), b(v(e))));
                  var e
              }, n = {}, P(t, (function (t, r) {
                  n[r] = e(t)
              })), n;
              var e, n
          }
  
          function N(t) {
              var e, n, r = M(t, (function (t) {
                  return void 0 !== t
              }));
              return R((e = I(r), n = [], P(e, (function (t, e) {
                  n.push([e, t])
              })), n), O.method("join", "=")).join("&")
          }
  
          function B(t) {
              try {
                  return JSON.stringify(t)
              } catch (r) {
                  return JSON.stringify((e = [], n = [], function t(r, o) {
                      var i, s, c;
                      switch (typeof r) {
                          case"object":
                              if (!r) return null;
                              for (i = 0; i < e.length; i += 1) if (e[i] === r) return {$ref: n[i]};
                              if (e.push(r), n.push(o), "[object Array]" === Object.prototype.toString.apply(r)) for (c = [], i = 0; i < r.length; i += 1) c[i] = t(r[i], o + "[" + i + "]"); else for (s in c = {}, r) Object.prototype.hasOwnProperty.call(r, s) && (c[s] = t(r[s], o + "[" + JSON.stringify(s) + "]"));
                              return c;
                          case"number":
                          case"string":
                          case"boolean":
                              return r
                      }
                  }(t, "$")))
              }
              var e, n
          }
  
          var D = new (function () {
              function t() {
                  this.globalLog = function (t) {
                      //window.console && window.console.log && window.console.log(t)
                  }
              }
  
              return t.prototype.debug = function () {
                  for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
                  this.log(this.globalLog, t)
              }, t.prototype.warn = function () {
                  for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
                  this.log(this.globalLogWarn, t)
              }, t.prototype.error = function () {
                  for (var t = [], e = 0; e < arguments.length; e++) t[e] = arguments[e];
                  this.log(this.globalLogError, t)
              }, t.prototype.globalLogWarn = function (t) {
                  window.console && window.console.warn ? window.console.warn(t) : this.globalLog(t)
              }, t.prototype.globalLogError = function (t) {
                  window.console && window.console.error ? window.console.error(t) : this.globalLogWarn(t)
              }, t.prototype.log = function (t) {
                  for (var e = [], n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
                  var r = A.apply(this, arguments);
                  if (Pe.log) Pe.log(r); else if (Pe.logToConsole) {
                      var o = t.bind(this);
                      o(r)
                  }
              }, t
          }()), z = {
              baseUrl: "https://pusher.com",
              urls: {
                  authenticationEndpoint: {path: "/docs/authenticating_users"},
                  javascriptQuickStart: {path: "/docs/javascript_quick_start"},
                  triggeringClientEvents: {path: "/docs/client_api_guide/client_events#trigger-events"}
              }
          }, H = function (t) {
              var e, n = z.urls[t];
              return n ? (n.fullUrl ? e = n.fullUrl : n.path && (e = z.baseUrl + n.path), e ? "See: " + e : "") : ""
          }, q = function (t, e, n) {
              var r, o = this;
              for (var i in (r = we.createXHR()).open("POST", o.options.authEndpoint, !0), r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"), this.authOptions.headers) r.setRequestHeader(i, this.authOptions.headers[i]);
              return r.onreadystatechange = function () {
                  if (4 === r.readyState) if (200 === r.status) {
                      var t, e = !1;
                      try {
                          t = JSON.parse(r.responseText), e = !0
                      } catch (t) {
                          n(!0, "JSON returned from auth endpoint was invalid, yet status code was 200. Data was: " + r.responseText)
                      }
                      e && n(!1, t)
                  } else {
                      var i = H("authenticationEndpoint");
                      D.error("Unable to retrieve auth string from auth endpoint - received status " + r.status + " from " + o.options.authEndpoint + ". Clients must be authenticated to join private or presence channels. " + i), n(!0, r.status)
                  }
              }, r.send(this.composeQuery(e)), r
          }, F = function (t, e, n) {
              void 0 !== this.authOptions.headers && D.warn("To send headers with the auth request, you must use AJAX, rather than JSONP.");
              var r = t.nextAuthCallbackID.toString();
              t.nextAuthCallbackID++;
              var o = t.getDocument(), i = o.createElement("script");
              t.auth_callbacks[r] = function (t) {
                  n(!1, t)
              };
              var s = "Pusher.auth_callbacks['" + r + "']";
              i.src = this.options.authEndpoint + "?callback=" + encodeURIComponent(s) + "&" + this.composeQuery(e);
              var c = o.getElementsByTagName("head")[0] || o.documentElement;
              c.insertBefore(i, c.firstChild)
          }, X = function () {
              function t(t) {
                  this.src = t
              }
  
              return t.prototype.send = function (t) {
                  var e = this, n = "Error loading " + e.src;
                  e.script = document.createElement("script"), e.script.id = t.id, e.script.src = e.src, e.script.type = "text/javascript", e.script.charset = "UTF-8", e.script.addEventListener ? (e.script.onerror = function () {
                      t.callback(n)
                  }, e.script.onload = function () {
                      t.callback(null)
                  }) : e.script.onreadystatechange = function () {
                      "loaded" !== e.script.readyState && "complete" !== e.script.readyState || t.callback(null)
                  }, void 0 === e.script.async && document.attachEvent && /opera/i.test(navigator.userAgent) ? (e.errorScript = document.createElement("script"), e.errorScript.id = t.id + "_error", e.errorScript.text = t.name + "('" + n + "');", e.script.async = e.errorScript.async = !1) : e.script.async = !0;
                  var r = document.getElementsByTagName("head")[0];
                  r.insertBefore(e.script, r.firstChild), e.errorScript && r.insertBefore(e.errorScript, e.script.nextSibling)
              }, t.prototype.cleanup = function () {
                  this.script && (this.script.onload = this.script.onerror = null, this.script.onreadystatechange = null), this.script && this.script.parentNode && this.script.parentNode.removeChild(this.script), this.errorScript && this.errorScript.parentNode && this.errorScript.parentNode.removeChild(this.errorScript), this.script = null, this.errorScript = null
              }, t
          }(), J = function () {
              function t(t, e) {
                  this.url = t, this.data = e
              }
  
              return t.prototype.send = function (t) {
                  if (!this.request) {
                      var e = N(this.data), n = this.url + "/" + t.number + "?" + e;
                      this.request = we.createScriptRequest(n), this.request.send(t)
                  }
              }, t.prototype.cleanup = function () {
                  this.request && this.request.cleanup()
              }, t
          }(), Y = {
              name: "jsonp", getAgent: function (t, e) {
                  return function (n, r) {
                      var i = "http" + (e ? "s" : "") + "://" + (t.host || t.options.host) + t.options.path,
                          s = we.createJSONPRequest(i, n), c = we.ScriptReceivers.create((function (e, n) {
                              o.remove(c), s.cleanup(), n && n.host && (t.host = n.host), r && r(e, n)
                          }));
                      s.send(c)
                  }
              }
          };
  
          function K(t, e, n) {
              return t + (e.useTLS ? "s" : "") + "://" + (e.useTLS ? e.hostTLS : e.hostNonTLS) + n
          }
  
          function W(t, e) {
              return "/app/" + t + ("?protocol=" + i.PROTOCOL + "&client=js&version=" + i.VERSION + (e ? "&" + e : ""))
          }
  
          var G = {
              getInitial: function (t, e) {
                  return K("ws", e, (e.httpPath || "") + W(t, "flash=false"))
              }
          }, Z = {
              getInitial: function (t, e) {
                  return K("http", e, (e.httpPath || "/pusher") + W(t))
              }
          }, V = {
              getInitial: function (t, e) {
                  return K("http", e, e.httpPath || "/pusher")
              }, getPath: function (t, e) {
                  return W(t)
              }
          }, Q = function () {
              function t() {
                  this._callbacks = {}
              }
  
              return t.prototype.get = function (t) {
                  return this._callbacks[$(t)]
              }, t.prototype.add = function (t, e, n) {
                  var r = $(t);
                  this._callbacks[r] = this._callbacks[r] || [], this._callbacks[r].push({fn: e, context: n})
              }, t.prototype.remove = function (t, e, n) {
                  if (t || e || n) {
                      var r = t ? [$(t)] : x(this._callbacks);
                      e || n ? this.removeCallback(r, e, n) : this.removeAllCallbacks(r)
                  } else this._callbacks = {}
              }, t.prototype.removeCallback = function (t, e, n) {
                  L(t, (function (t) {
                      this._callbacks[t] = U(this._callbacks[t] || [], (function (t) {
                          return e && e !== t.fn || n && n !== t.context
                      })), 0 === this._callbacks[t].length && delete this._callbacks[t]
                  }), this)
              }, t.prototype.removeAllCallbacks = function (t) {
                  L(t, (function (t) {
                      delete this._callbacks[t]
                  }), this)
              }, t
          }();
  
          function $(t) {
              return "_" + t
          }
  
          var tt = function () {
              function t(t) {
                  this.callbacks = new Q, this.global_callbacks = [], this.failThrough = t
              }
  
              return t.prototype.bind = function (t, e, n) {
                  return this.callbacks.add(t, e, n), this
              }, t.prototype.bind_global = function (t) {
                  return this.global_callbacks.push(t), this
              }, t.prototype.unbind = function (t, e, n) {
                  return this.callbacks.remove(t, e, n), this
              }, t.prototype.unbind_global = function (t) {
                  return t ? (this.global_callbacks = U(this.global_callbacks || [], (function (e) {
                      return e !== t
                  })), this) : (this.global_callbacks = [], this)
              }, t.prototype.unbind_all = function () {
                  return this.unbind(), this.unbind_global(), this
              }, t.prototype.emit = function (t, e, n) {
                  for (var r = 0; r < this.global_callbacks.length; r++) this.global_callbacks[r](t, e);
                  var o = this.callbacks.get(t), i = [];
                  if (n ? i.push(e, n) : e && i.push(e), o && o.length > 0) for (r = 0; r < o.length; r++) o[r].fn.apply(o[r].context || window, i); else this.failThrough && this.failThrough(t, e);
                  return this
              }, t
          }(), et = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), nt = function (t) {
              function e(e, n, r, o, i) {
                  var s = t.call(this) || this;
                  return s.initialize = we.transportConnectionInitializer, s.hooks = e, s.name = n, s.priority = r, s.key = o, s.options = i, s.state = "new", s.timeline = i.timeline, s.activityTimeout = i.activityTimeout, s.id = s.timeline.generateUniqueID(), s
              }
  
              return et(e, t), e.prototype.handlesActivityChecks = function () {
                  return Boolean(this.hooks.handlesActivityChecks)
              }, e.prototype.supportsPing = function () {
                  return Boolean(this.hooks.supportsPing)
              }, e.prototype.connect = function () {
                  var t = this;
                  if (this.socket || "initialized" !== this.state) return !1;
                  var e = this.hooks.urls.getInitial(this.key, this.options);
                  try {
                      this.socket = this.hooks.getSocket(e, this.options)
                  } catch (e) {
                      return O.defer((function () {
                          t.onError(e), t.changeState("closed")
                      })), !1
                  }
                  return this.bindListeners(), D.debug("Connecting", {
                      transport: this.name,
                      url: e
                  }), this.changeState("connecting"), !0
              }, e.prototype.close = function () {
                  return !!this.socket && (this.socket.close(), !0)
              }, e.prototype.send = function (t) {
                  var e = this;
                  return "open" === this.state && (O.defer((function () {
                      e.socket && e.socket.send(t)
                  })), !0)
              }, e.prototype.ping = function () {
                  "open" === this.state && this.supportsPing() && this.socket.ping()
              }, e.prototype.onOpen = function () {
                  this.hooks.beforeOpen && this.hooks.beforeOpen(this.socket, this.hooks.urls.getPath(this.key, this.options)), this.changeState("open"), this.socket.onopen = void 0
              }, e.prototype.onError = function (t) {
                  this.emit("error", {
                      type: "WebSocketError",
                      error: t
                  }), this.timeline.error(this.buildTimelineMessage({error: t.toString()}))
              }, e.prototype.onClose = function (t) {
                  t ? this.changeState("closed", {
                      code: t.code,
                      reason: t.reason,
                      wasClean: t.wasClean
                  }) : this.changeState("closed"), this.unbindListeners(), this.socket = void 0
              }, e.prototype.onMessage = function (t) {
                  this.emit("message", t)
              }, e.prototype.onActivity = function () {
                  this.emit("activity")
              }, e.prototype.bindListeners = function () {
                  var t = this;
                  this.socket.onopen = function () {
                      t.onOpen()
                  }, this.socket.onerror = function (e) {
                      t.onError(e)
                  }, this.socket.onclose = function (e) {
                      t.onClose(e)
                  }, this.socket.onmessage = function (e) {
                      t.onMessage(e)
                  }, this.supportsPing() && (this.socket.onactivity = function () {
                      t.onActivity()
                  })
              }, e.prototype.unbindListeners = function () {
                  this.socket && (this.socket.onopen = void 0, this.socket.onerror = void 0, this.socket.onclose = void 0, this.socket.onmessage = void 0, this.supportsPing() && (this.socket.onactivity = void 0))
              }, e.prototype.changeState = function (t, e) {
                  this.state = t, this.timeline.info(this.buildTimelineMessage({state: t, params: e})), this.emit(t, e)
              }, e.prototype.buildTimelineMessage = function (t) {
                  return C({cid: this.id}, t)
              }, e
          }(tt), rt = function () {
              function t(t) {
                  this.hooks = t
              }
  
              return t.prototype.isSupported = function (t) {
                  return this.hooks.isSupported(t)
              }, t.prototype.createConnection = function (t, e, n, r) {
                  return new nt(this.hooks, t, e, n, r)
              }, t
          }(), ot = new rt({
              urls: G, handlesActivityChecks: !1, supportsPing: !1, isInitialized: function () {
                  return Boolean(we.getWebSocketAPI())
              }, isSupported: function () {
                  return Boolean(we.getWebSocketAPI())
              }, getSocket: function (t) {
                  return we.createWebSocket(t)
              }
          }), it = {
              urls: Z, handlesActivityChecks: !1, supportsPing: !0, isInitialized: function () {
                  return !0
              }
          }, st = C({
              getSocket: function (t) {
                  return we.HTTPFactory.createStreamingSocket(t)
              }
          }, it), ct = C({
              getSocket: function (t) {
                  return we.HTTPFactory.createPollingSocket(t)
              }
          }, it), at = {
              isSupported: function () {
                  return we.isXHRSupported()
              }
          }, ut = {ws: ot, xhr_streaming: new rt(C({}, st, at)), xhr_polling: new rt(C({}, ct, at))}, ht = new rt({
              file: "sockjs",
              urls: V,
              handlesActivityChecks: !0,
              supportsPing: !1,
              isSupported: function () {
                  return !0
              },
              isInitialized: function () {
                  return void 0 !== window.SockJS
              },
              getSocket: function (t, e) {
                  return new window.SockJS(t, null, {
                      js_path: a.getPath("sockjs", {useTLS: e.useTLS}),
                      ignore_null_origin: e.ignoreNullOrigin
                  })
              },
              beforeOpen: function (t, e) {
                  t.send(JSON.stringify({path: e}))
              }
          }), pt = {
              isSupported: function (t) {
                  return we.isXDRSupported(t.useTLS)
              }
          }, ft = new rt(C({}, st, pt)), lt = new rt(C({}, ct, pt));
          ut.xdr_streaming = ft, ut.xdr_polling = lt, ut.sockjs = ht;
          var dt = ut, yt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), vt = new (function (t) {
              function e() {
                  var e = t.call(this) || this, n = e;
                  return void 0 !== window.addEventListener && (window.addEventListener("online", (function () {
                      n.emit("online")
                  }), !1), window.addEventListener("offline", (function () {
                      n.emit("offline")
                  }), !1)), e
              }
  
              return yt(e, t), e.prototype.isOnline = function () {
                  return void 0 === window.navigator.onLine || window.navigator.onLine
              }, e
          }(tt)), gt = function () {
              function t(t, e, n) {
                  this.manager = t, this.transport = e, this.minPingDelay = n.minPingDelay, this.maxPingDelay = n.maxPingDelay, this.pingDelay = void 0
              }
  
              return t.prototype.createConnection = function (t, e, n, r) {
                  var o = this;
                  r = C({}, r, {activityTimeout: this.pingDelay});
                  var i = this.transport.createConnection(t, e, n, r), s = null, c = function () {
                      i.unbind("open", c), i.bind("closed", a), s = O.now()
                  }, a = function (t) {
                      if (i.unbind("closed", a), 1002 === t.code || 1003 === t.code) o.manager.reportDeath(); else if (!t.wasClean && s) {
                          var e = O.now() - s;
                          e < 2 * o.maxPingDelay && (o.manager.reportDeath(), o.pingDelay = Math.max(e / 2, o.minPingDelay))
                      }
                  };
                  return i.bind("open", c), i
              }, t.prototype.isSupported = function (t) {
                  return this.manager.isAlive() && this.transport.isSupported(t)
              }, t
          }(), bt = {
              decodeMessage: function (t) {
                  try {
                      var e = JSON.parse(t.data), n = e.data;
                      if ("string" == typeof n) try {
                          n = JSON.parse(e.data)
                      } catch (t) {
                      }
                      var r = {event: e.event, channel: e.channel, data: n};
                      return e.user_id && (r.user_id = e.user_id), r
                  } catch (e) {
                      throw{type: "MessageParseError", error: e, data: t.data}
                  }
              }, encodeMessage: function (t) {
                  return JSON.stringify(t)
              }, processHandshake: function (t) {
                  var e = bt.decodeMessage(t);
                  if ("pusher:connection_established" === e.event) {
                      if (!e.data.activity_timeout) throw"No activity timeout specified in handshake";
                      return {action: "connected", id: e.data.socket_id, activityTimeout: 1e3 * e.data.activity_timeout}
                  }
                  if ("pusher:error" === e.event) return {
                      action: this.getCloseAction(e.data),
                      error: this.getCloseError(e.data)
                  };
                  throw"Invalid handshake"
              }, getCloseAction: function (t) {
                  return t.code < 4e3 ? t.code >= 1002 && t.code <= 1004 ? "backoff" : null : 4e3 === t.code ? "tls_only" : t.code < 4100 ? "refused" : t.code < 4200 ? "backoff" : t.code < 4300 ? "retry" : "refused"
              }, getCloseError: function (t) {
                  return 1e3 !== t.code && 1001 !== t.code ? {
                      type: "PusherError",
                      data: {code: t.code, message: t.reason || t.message}
                  } : null
              }
          }, mt = bt, wt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), _t = function (t) {
              function e(e, n) {
                  var r = t.call(this) || this;
                  return r.id = e, r.transport = n, r.activityTimeout = n.activityTimeout, r.bindListeners(), r
              }
  
              return wt(e, t), e.prototype.handlesActivityChecks = function () {
                  return this.transport.handlesActivityChecks()
              }, e.prototype.send = function (t) {
                  return this.transport.send(t)
              }, e.prototype.send_event = function (t, e, n) {
                  var r = {event: t, data: e};
                  return n && (r.channel = n), D.debug("Event sent", r), this.send(mt.encodeMessage(r))
              }, e.prototype.ping = function () {
                  this.transport.supportsPing() ? this.transport.ping() : this.send_event("pusher:ping", {})
              }, e.prototype.close = function () {
                  this.transport.close()
              }, e.prototype.bindListeners = function () {
                  var t = this, e = {
                      message: function (e) {
                          var n;
                          try {
                              n = mt.decodeMessage(e)
                          } catch (n) {
                              t.emit("error", {type: "MessageParseError", error: n, data: e.data})
                          }
                          if (void 0 !== n) {
                              switch (D.debug("Event recd", n), n.event) {
                                  case"pusher:error":
                                      t.emit("error", {type: "PusherError", data: n.data});
                                      break;
                                  case"pusher:ping":
                                      t.emit("ping");
                                      break;
                                  case"pusher:pong":
                                      t.emit("pong")
                              }
                              t.emit("message", n)
                          }
                      }, activity: function () {
                          t.emit("activity")
                      }, error: function (e) {
                          t.emit("error", {type: "WebSocketError", error: e})
                      }, closed: function (e) {
                          n(), e && e.code && t.handleCloseEvent(e), t.transport = null, t.emit("closed")
                      }
                  }, n = function () {
                      P(e, (function (e, n) {
                          t.transport.unbind(n, e)
                      }))
                  };
                  P(e, (function (e, n) {
                      t.transport.bind(n, e)
                  }))
              }, e.prototype.handleCloseEvent = function (t) {
                  var e = mt.getCloseAction(t), n = mt.getCloseError(t);
                  n && this.emit("error", n), e && this.emit(e, {action: e, error: n})
              }, e
          }(tt), St = function () {
              function t(t, e) {
                  this.transport = t, this.callback = e, this.bindListeners()
              }
  
              return t.prototype.close = function () {
                  this.unbindListeners(), this.transport.close()
              }, t.prototype.bindListeners = function () {
                  var t = this;
                  this.onMessage = function (e) {
                      var n;
                      t.unbindListeners();
                      try {
                          n = mt.processHandshake(e)
                      } catch (e) {
                          return t.finish("error", {error: e}), void t.transport.close()
                      }
                      "connected" === n.action ? t.finish("connected", {
                          connection: new _t(n.id, t.transport),
                          activityTimeout: n.activityTimeout
                      }) : (t.finish(n.action, {error: n.error}), t.transport.close())
                  }, this.onClosed = function (e) {
                      t.unbindListeners();
                      var n = mt.getCloseAction(e) || "backoff", r = mt.getCloseError(e);
                      t.finish(n, {error: r})
                  }, this.transport.bind("message", this.onMessage), this.transport.bind("closed", this.onClosed)
              }, t.prototype.unbindListeners = function () {
                  this.transport.unbind("message", this.onMessage), this.transport.unbind("closed", this.onClosed)
              }, t.prototype.finish = function (t, e) {
                  this.callback(C({transport: this.transport, action: t}, e))
              }, t
          }(), kt = function () {
              function t(t, e) {
                  this.channel = t;
                  var n = e.authTransport;
                  if (void 0 === we.getAuthorizers()[n]) throw"'" + n + "' is not a recognized auth transport";
                  this.type = n, this.options = e, this.authOptions = (e || {}).auth || {}
              }
  
              return t.prototype.composeQuery = function (t) {
                  var e = "socket_id=" + encodeURIComponent(t) + "&channel_name=" + encodeURIComponent(this.channel.name);
                  for (var n in this.authOptions.params) e += "&" + encodeURIComponent(n) + "=" + encodeURIComponent(this.authOptions.params[n]);
                  return e
              }, t.prototype.authorize = function (e, n) {
                  t.authorizers = t.authorizers || we.getAuthorizers(), t.authorizers[this.type].call(this, we, e, n)
              }, t
          }(), Tt = function () {
              function t(t, e) {
                  this.timeline = t, this.options = e || {}
              }
  
              return t.prototype.send = function (t, e) {
                  this.timeline.isEmpty() || this.timeline.send(we.TimelineTransport.getAgent(this, t), e)
              }, t
          }(), Ot = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), Ct = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), At = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), Et = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), Pt = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), xt = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), Lt = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), Rt = function (t) {
              function e(e) {
                  var n = this.constructor, r = t.call(this, e) || this;
                  return Object.setPrototypeOf(r, n.prototype), r
              }
  
              return Ot(e, t), e
          }(Error), Ut = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), Mt = function (t) {
              function e(e, n) {
                  var r = t.call(this, (function (t, n) {
                      D.debug("No callbacks on " + e + " for " + t)
                  })) || this;
                  return r.name = e, r.pusher = n, r.subscribed = !1, r.subscriptionPending = !1, r.subscriptionCancelled = !1, r
              }
  
              return Ut(e, t), e.prototype.authorize = function (t, e) {
                  return e(!1, {auth: ""})
              }, e.prototype.trigger = function (t, e) {
                  if (0 !== t.indexOf("client-")) throw new Ct("Event '" + t + "' does not start with 'client-'");
                  if (!this.subscribed) {
                      var n = H("triggeringClientEvents");
                      D.warn("Client event triggered before channel 'subscription_succeeded' event . " + n)
                  }
                  return this.pusher.send_event(t, e, this.name)
              }, e.prototype.disconnect = function () {
                  this.subscribed = !1, this.subscriptionPending = !1
              }, e.prototype.handleEvent = function (t) {
                  var e = t.event, n = t.data;
                  if ("pusher_internal:subscription_succeeded" === e) this.handleSubscriptionSucceededEvent(t); else if (0 !== e.indexOf("pusher_internal:")) {
                      this.emit(e, n, {})
                  }
              }, e.prototype.handleSubscriptionSucceededEvent = function (t) {
                  this.subscriptionPending = !1, this.subscribed = !0, this.subscriptionCancelled ? this.pusher.unsubscribe(this.name) : this.emit("pusher:subscription_succeeded", t.data)
              }, e.prototype.subscribe = function () {
                  var t = this;
                  this.subscribed || (this.subscriptionPending = !0, this.subscriptionCancelled = !1, this.authorize(this.pusher.connection.socket_id, (function (e, n) {
                      e ? (D.error(n), t.emit("pusher:subscription_error", n)) : (n = n, t.pusher.send_event("pusher:subscribe", {
                          auth: n.auth,
                          channel_data: n.channel_data,
                          channel: t.name
                      }))
                  })))
              }, e.prototype.unsubscribe = function () {
                  this.subscribed = !1, this.pusher.send_event("pusher:unsubscribe", {channel: this.name})
              }, e.prototype.cancelSubscription = function () {
                  this.subscriptionCancelled = !0
              }, e.prototype.reinstateSubscription = function () {
                  this.subscriptionCancelled = !1
              }, e
          }(tt), jt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), It = function (t) {
              function e() {
                  return null !== t && t.apply(this, arguments) || this
              }
  
              return jt(e, t), e.prototype.authorize = function (t, e) {
                  return Kt.createAuthorizer(this, this.pusher.config).authorize(t, e)
              }, e
          }(Mt), Nt = function () {
              function t() {
                  this.reset()
              }
  
              return t.prototype.get = function (t) {
                  return Object.prototype.hasOwnProperty.call(this.members, t) ? {id: t, info: this.members[t]} : null
              }, t.prototype.each = function (t) {
                  var e = this;
                  P(this.members, (function (n, r) {
                      t(e.get(r))
                  }))
              }, t.prototype.setMyID = function (t) {
                  this.myID = t
              }, t.prototype.onSubscription = function (t) {
                  this.members = t.presence.hash, this.count = t.presence.count, this.me = this.get(this.myID)
              }, t.prototype.addMember = function (t) {
                  return null === this.get(t.user_id) && this.count++, this.members[t.user_id] = t.user_info, this.get(t.user_id)
              }, t.prototype.removeMember = function (t) {
                  var e = this.get(t.user_id);
                  return e && (delete this.members[t.user_id], this.count--), e
              }, t.prototype.reset = function () {
                  this.members = {}, this.count = 0, this.myID = null, this.me = null
              }, t
          }(), Bt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), Dt = function (t) {
              function e(e, n) {
                  var r = t.call(this, e, n) || this;
                  return r.members = new Nt, r
              }
  
              return Bt(e, t), e.prototype.authorize = function (e, n) {
                  var r = this;
                  t.prototype.authorize.call(this, e, (function (t, e) {
                      if (!t) {
                          if (void 0 === (e = e).channel_data) {
                              var o = H("authenticationEndpoint");
                              return D.error("Invalid auth response for channel '" + r.name + "',expected 'channel_data' field. " + o), void n("Invalid auth response")
                          }
                          var i = JSON.parse(e.channel_data);
                          r.members.setMyID(i.user_id)
                      }
                      n(t, e)
                  }))
              }, e.prototype.handleEvent = function (t) {
                  var e = t.event;
                  if (0 === e.indexOf("pusher_internal:")) this.handleInternalEvent(t); else {
                      var n = t.data, r = {};
                      t.user_id && (r.user_id = t.user_id), this.emit(e, n, r)
                  }
              }, e.prototype.handleInternalEvent = function (t) {
                  var e = t.event, n = t.data;
                  switch (e) {
                      case"pusher_internal:subscription_succeeded":
                          this.handleSubscriptionSucceededEvent(t);
                          break;
                      case"pusher_internal:member_added":
                          var r = this.members.addMember(n);
                          this.emit("pusher:member_added", r);
                          break;
                      case"pusher_internal:member_removed":
                          var o = this.members.removeMember(n);
                          o && this.emit("pusher:member_removed", o)
                  }
              }, e.prototype.handleSubscriptionSucceededEvent = function (t) {
                  this.subscriptionPending = !1, this.subscribed = !0, this.subscriptionCancelled ? this.pusher.unsubscribe(this.name) : (this.members.onSubscription(t.data), this.emit("pusher:subscription_succeeded", this.members))
              }, e.prototype.disconnect = function () {
                  this.members.reset(), t.prototype.disconnect.call(this)
              }, e
          }(It), zt = n(0), Ht = n(1), qt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), Ft = function (t) {
              function e() {
                  var e = null !== t && t.apply(this, arguments) || this;
                  return e.key = null, e
              }
  
              return qt(e, t), e.prototype.authorize = function (e, n) {
                  var r = this;
                  t.prototype.authorize.call(this, e, (function (t, e) {
                      if (t) n(!0, e); else {
                          var o = e.shared_secret;
                          if (o) r.key = Object(Ht.decodeBase64)(o), delete e.shared_secret, n(!1, e); else {
                              var i = "No shared_secret key in auth payload for encrypted channel: " + r.name;
                              n(!0, i)
                          }
                      }
                  }))
              }, e.prototype.trigger = function (t, e) {
                  throw new xt("Client events are not currently supported for encrypted channels")
              }, e.prototype.handleEvent = function (e) {
                  var n = e.event, r = e.data;
                  0 !== n.indexOf("pusher_internal:") && 0 !== n.indexOf("pusher:") ? this.handleEncryptedEvent(n, r) : t.prototype.handleEvent.call(this, e)
              }, e.prototype.handleEncryptedEvent = function (t, e) {
                  var n = this;
                  if (this.key) if (e.ciphertext && e.nonce) {
                      var r = Object(Ht.decodeBase64)(e.ciphertext);
                      if (r.length < zt.secretbox.overheadLength) D.error("Expected encrypted event ciphertext length to be " + zt.secretbox.overheadLength + ", got: " + r.length); else {
                          var o = Object(Ht.decodeBase64)(e.nonce);
                          if (o.length < zt.secretbox.nonceLength) D.error("Expected encrypted event nonce length to be " + zt.secretbox.nonceLength + ", got: " + o.length); else {
                              var i = zt.secretbox.open(r, o, this.key);
                              if (null === i) return D.debug("Failed to decrypt an event, probably because it was encrypted with a different key. Fetching a new key from the authEndpoint..."), void this.authorize(this.pusher.connection.socket_id, (function (e, s) {
                                  e ? D.error("Failed to make a request to the authEndpoint: " + s + ". Unable to fetch new key, so dropping encrypted event") : null !== (i = zt.secretbox.open(r, o, n.key)) ? n.emitJSON(t, Object(Ht.encodeUTF8)(i)) : D.error("Failed to decrypt event with new key. Dropping encrypted event")
                              }));
                              this.emitJSON(t, Object(Ht.encodeUTF8)(i))
                          }
                      }
                  } else D.error("Unexpected format for encrypted event, expected object with `ciphertext` and `nonce` fields, got: " + e); else D.debug("Received encrypted event before key has been retrieved from the authEndpoint")
              }, e.prototype.emitJSON = function (t, e) {
                  try {
                      this.emit(t, JSON.parse(e))
                  } catch (n) {
                      this.emit(t, e)
                  }
                  return this
              }, e
          }(It), Xt = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), Jt = function (t) {
              function e(e, n) {
                  var r = t.call(this) || this;
                  r.key = e, r.options = n || {}, r.state = "initialized", r.connection = null, r.usingTLS = !!n.useTLS, r.timeline = r.options.timeline, r.errorCallbacks = r.buildErrorCallbacks(), r.connectionCallbacks = r.buildConnectionCallbacks(r.errorCallbacks), r.handshakeCallbacks = r.buildHandshakeCallbacks(r.errorCallbacks);
                  var o = we.getNetwork();
                  return o.bind("online", (function () {
                      r.timeline.info({netinfo: "online"}), "connecting" !== r.state && "unavailable" !== r.state || r.retryIn(0)
                  })), o.bind("offline", (function () {
                      r.timeline.info({netinfo: "offline"}), r.connection && r.sendActivityCheck()
                  })), r.updateStrategy(), r
              }
  
              return Xt(e, t), e.prototype.connect = function () {
                  this.connection || this.runner || (this.strategy.isSupported() ? (this.updateState("connecting"), this.startConnecting(), this.setUnavailableTimer()) : this.updateState("failed"))
              }, e.prototype.send = function (t) {
                  return !!this.connection && this.connection.send(t)
              }, e.prototype.send_event = function (t, e, n) {
                  return !!this.connection && this.connection.send_event(t, e, n)
              }, e.prototype.disconnect = function () {
                  this.disconnectInternally(), this.updateState("disconnected")
              }, e.prototype.isUsingTLS = function () {
                  return this.usingTLS
              }, e.prototype.startConnecting = function () {
                  var t = this, e = function (n, r) {
                      n ? t.runner = t.strategy.connect(0, e) : "error" === r.action ? (t.emit("error", {
                          type: "HandshakeError",
                          error: r.error
                      }), t.timeline.error({handshakeError: r.error})) : (t.abortConnecting(), t.handshakeCallbacks[r.action](r))
                  };
                  this.runner = this.strategy.connect(0, e)
              }, e.prototype.abortConnecting = function () {
                  this.runner && (this.runner.abort(), this.runner = null)
              }, e.prototype.disconnectInternally = function () {
                  (this.abortConnecting(), this.clearRetryTimer(), this.clearUnavailableTimer(), this.connection) && this.abandonConnection().close()
              }, e.prototype.updateStrategy = function () {
                  this.strategy = this.options.getStrategy({
                      key: this.key,
                      timeline: this.timeline,
                      useTLS: this.usingTLS
                  })
              }, e.prototype.retryIn = function (t) {
                  var e = this;
                  this.timeline.info({
                      action: "retry",
                      delay: t
                  }), t > 0 && this.emit("connecting_in", Math.round(t / 1e3)), this.retryTimer = new k(t || 0, (function () {
                      e.disconnectInternally(), e.connect()
                  }))
              }, e.prototype.clearRetryTimer = function () {
                  this.retryTimer && (this.retryTimer.ensureAborted(), this.retryTimer = null)
              }, e.prototype.setUnavailableTimer = function () {
                  var t = this;
                  this.unavailableTimer = new k(this.options.unavailableTimeout, (function () {
                      t.updateState("unavailable")
                  }))
              }, e.prototype.clearUnavailableTimer = function () {
                  this.unavailableTimer && this.unavailableTimer.ensureAborted()
              }, e.prototype.sendActivityCheck = function () {
                  var t = this;
                  this.stopActivityCheck(), this.connection.ping(), this.activityTimer = new k(this.options.pongTimeout, (function () {
                      t.timeline.error({pong_timed_out: t.options.pongTimeout}), t.retryIn(0)
                  }))
              }, e.prototype.resetActivityCheck = function () {
                  var t = this;
                  this.stopActivityCheck(), this.connection && !this.connection.handlesActivityChecks() && (this.activityTimer = new k(this.activityTimeout, (function () {
                      t.sendActivityCheck()
                  })))
              }, e.prototype.stopActivityCheck = function () {
                  this.activityTimer && this.activityTimer.ensureAborted()
              }, e.prototype.buildConnectionCallbacks = function (t) {
                  var e = this;
                  return C({}, t, {
                      message: function (t) {
                          e.resetActivityCheck(), e.emit("message", t)
                      }, ping: function () {
                          e.send_event("pusher:pong", {})
                      }, activity: function () {
                          e.resetActivityCheck()
                      }, error: function (t) {
                          e.emit("error", {type: "WebSocketError", error: t})
                      }, closed: function () {
                          e.abandonConnection(), e.shouldRetry() && e.retryIn(1e3)
                      }
                  })
              }, e.prototype.buildHandshakeCallbacks = function (t) {
                  var e = this;
                  return C({}, t, {
                      connected: function (t) {
                          e.activityTimeout = Math.min(e.options.activityTimeout, t.activityTimeout, t.connection.activityTimeout || 1 / 0), e.clearUnavailableTimer(), e.setConnection(t.connection), e.socket_id = e.connection.id, e.updateState("connected", {socket_id: e.socket_id})
                      }
                  })
              }, e.prototype.buildErrorCallbacks = function () {
                  var t = this, e = function (e) {
                      return function (n) {
                          n.error && t.emit("error", {type: "WebSocketError", error: n.error}), e(n)
                      }
                  };
                  return {
                      tls_only: e((function () {
                          t.usingTLS = !0, t.updateStrategy(), t.retryIn(0)
                      })), refused: e((function () {
                          t.disconnect()
                      })), backoff: e((function () {
                          t.retryIn(1e3)
                      })), retry: e((function () {
                          t.retryIn(0)
                      }))
                  }
              }, e.prototype.setConnection = function (t) {
                  for (var e in this.connection = t, this.connectionCallbacks) this.connection.bind(e, this.connectionCallbacks[e]);
                  this.resetActivityCheck()
              }, e.prototype.abandonConnection = function () {
                  if (this.connection) {
                      for (var t in this.stopActivityCheck(), this.connectionCallbacks) this.connection.unbind(t, this.connectionCallbacks[t]);
                      var e = this.connection;
                      return this.connection = null, e
                  }
              }, e.prototype.updateState = function (t, e) {
                  var n = this.state;
                  if (this.state = t, n !== t) {
                      var r = t;
                      "connected" === r && (r += " with new socket ID " + e.socket_id), D.debug("State changed", n + " -> " + r), this.timeline.info({
                          state: t,
                          params: e
                      }), this.emit("state_change", {previous: n, current: t}), this.emit(t, e)
                  }
              }, e.prototype.shouldRetry = function () {
                  return "connecting" === this.state || "connected" === this.state
              }, e
          }(tt), Yt = function () {
              function t() {
                  this.channels = {}
              }
  
              return t.prototype.add = function (t, e) {
                  return this.channels[t] || (this.channels[t] = function (t, e) {
                      return 0 === t.indexOf("private-encrypted-") ? Kt.createEncryptedChannel(t, e) : 0 === t.indexOf("private-") ? Kt.createPrivateChannel(t, e) : 0 === t.indexOf("presence-") ? Kt.createPresenceChannel(t, e) : Kt.createChannel(t, e)
                  }(t, e)), this.channels[t]
              }, t.prototype.all = function () {
                  return function (t) {
                      var e = [];
                      return P(t, (function (t) {
                          e.push(t)
                      })), e
                  }(this.channels)
              }, t.prototype.find = function (t) {
                  return this.channels[t]
              }, t.prototype.remove = function (t) {
                  var e = this.channels[t];
                  return delete this.channels[t], e
              }, t.prototype.disconnect = function () {
                  P(this.channels, (function (t) {
                      t.disconnect()
                  }))
              }, t
          }();
          var Kt = {
              createChannels: function () {
                  return new Yt
              }, createConnectionManager: function (t, e) {
                  return new Jt(t, e)
              }, createChannel: function (t, e) {
                  return new Mt(t, e)
              }, createPrivateChannel: function (t, e) {
                  return new It(t, e)
              }, createPresenceChannel: function (t, e) {
                  return new Dt(t, e)
              }, createEncryptedChannel: function (t, e) {
                  return new Ft(t, e)
              }, createTimelineSender: function (t, e) {
                  return new Tt(t, e)
              }, createAuthorizer: function (t, e) {
                  return e.authorizer ? e.authorizer(t, e) : new kt(t, e)
              }, createHandshake: function (t, e) {
                  return new St(t, e)
              }, createAssistantToTheTransportManager: function (t, e, n) {
                  return new gt(t, e, n)
              }
          }, Wt = function () {
              function t(t) {
                  this.options = t || {}, this.livesLeft = this.options.lives || 1 / 0
              }
  
              return t.prototype.getAssistant = function (t) {
                  return Kt.createAssistantToTheTransportManager(this, t, {
                      minPingDelay: this.options.minPingDelay,
                      maxPingDelay: this.options.maxPingDelay
                  })
              }, t.prototype.isAlive = function () {
                  return this.livesLeft > 0
              }, t.prototype.reportDeath = function () {
                  this.livesLeft -= 1
              }, t
          }(), Gt = function () {
              function t(t, e) {
                  this.strategies = t, this.loop = Boolean(e.loop), this.failFast = Boolean(e.failFast), this.timeout = e.timeout, this.timeoutLimit = e.timeoutLimit
              }
  
              return t.prototype.isSupported = function () {
                  return j(this.strategies, O.method("isSupported"))
              }, t.prototype.connect = function (t, e) {
                  var n = this, r = this.strategies, o = 0, i = this.timeout, s = null, c = function (a, u) {
                      u ? e(null, u) : (o += 1, n.loop && (o %= r.length), o < r.length ? (i && (i *= 2, n.timeoutLimit && (i = Math.min(i, n.timeoutLimit))), s = n.tryStrategy(r[o], t, {
                          timeout: i,
                          failFast: n.failFast
                      }, c)) : e(!0))
                  };
                  return s = this.tryStrategy(r[o], t, {timeout: i, failFast: this.failFast}, c), {
                      abort: function () {
                          s.abort()
                      }, forceMinPriority: function (e) {
                          t = e, s && s.forceMinPriority(e)
                      }
                  }
              }, t.prototype.tryStrategy = function (t, e, n, r) {
                  var o = null, i = null;
                  return n.timeout > 0 && (o = new k(n.timeout, (function () {
                      i.abort(), r(!0)
                  }))), i = t.connect(e, (function (t, e) {
                      t && o && o.isRunning() && !n.failFast || (o && o.ensureAborted(), r(t, e))
                  })), {
                      abort: function () {
                          o && o.ensureAborted(), i.abort()
                      }, forceMinPriority: function (t) {
                          i.forceMinPriority(t)
                      }
                  }
              }, t
          }(), Zt = function () {
              function t(t) {
                  this.strategies = t
              }
  
              return t.prototype.isSupported = function () {
                  return j(this.strategies, O.method("isSupported"))
              }, t.prototype.connect = function (t, e) {
                  return function (t, e, n) {
                      var r = R(t, (function (t, r, o, i) {
                          return t.connect(e, n(r, i))
                      }));
                      return {
                          abort: function () {
                              L(r, Vt)
                          }, forceMinPriority: function (t) {
                              L(r, (function (e) {
                                  e.forceMinPriority(t)
                              }))
                          }
                      }
                  }(this.strategies, t, (function (t, n) {
                      return function (r, o) {
                          n[t].error = r, r ? function (t) {
                              return function (t, e) {
                                  for (var n = 0; n < t.length; n++) if (!e(t[n], n, t)) return !1;
                                  return !0
                              }(t, (function (t) {
                                  return Boolean(t.error)
                              }))
                          }(n) && e(!0) : (L(n, (function (t) {
                              t.forceMinPriority(o.transport.priority)
                          })), e(null, o))
                      }
                  }))
              }, t
          }();
  
          function Vt(t) {
              t.error || t.aborted || (t.abort(), t.aborted = !0)
          }
  
          var Qt = function () {
              function t(t, e, n) {
                  this.strategy = t, this.transports = e, this.ttl = n.ttl || 18e5, this.usingTLS = n.useTLS, this.timeline = n.timeline
              }
  
              return t.prototype.isSupported = function () {
                  return this.strategy.isSupported()
              }, t.prototype.connect = function (t, e) {
                  var n = this.usingTLS, r = function (t) {
                      var e = we.getLocalStorage();
                      if (e) try {
                          var n = e[$t(t)];
                          if (n) return JSON.parse(n)
                      } catch (e) {
                          te(t)
                      }
                      return null
                  }(n), o = [this.strategy];
                  if (r && r.timestamp + this.ttl >= O.now()) {
                      var i = this.transports[r.transport];
                      i && (this.timeline.info({
                          cached: !0,
                          transport: r.transport,
                          latency: r.latency
                      }), o.push(new Gt([i], {timeout: 2 * r.latency + 1e3, failFast: !0})))
                  }
                  var s = O.now(), c = o.pop().connect(t, (function r(i, a) {
                      i ? (te(n), o.length > 0 ? (s = O.now(), c = o.pop().connect(t, r)) : e(i)) : (!function (t, e, n) {
                          var r = we.getLocalStorage();
                          if (r) try {
                              r[$t(t)] = B({timestamp: O.now(), transport: e, latency: n})
                          } catch (t) {
                          }
                      }(n, a.transport.name, O.now() - s), e(null, a))
                  }));
                  return {
                      abort: function () {
                          c.abort()
                      }, forceMinPriority: function (e) {
                          t = e, c && c.forceMinPriority(e)
                      }
                  }
              }, t
          }();
  
          function $t(t) {
              return "pusherTransport" + (t ? "TLS" : "NonTLS")
          }
  
          function te(t) {
              var e = we.getLocalStorage();
              if (e) try {
                  delete e[$t(t)]
              } catch (t) {
              }
          }
  
          var ee = function () {
              function t(t, e) {
                  var n = e.delay;
                  this.strategy = t, this.options = {delay: n}
              }
  
              return t.prototype.isSupported = function () {
                  return this.strategy.isSupported()
              }, t.prototype.connect = function (t, e) {
                  var n, r = this.strategy, o = new k(this.options.delay, (function () {
                      n = r.connect(t, e)
                  }));
                  return {
                      abort: function () {
                          o.ensureAborted(), n && n.abort()
                      }, forceMinPriority: function (e) {
                          t = e, n && n.forceMinPriority(e)
                      }
                  }
              }, t
          }(), ne = function () {
              function t(t, e, n) {
                  this.test = t, this.trueBranch = e, this.falseBranch = n
              }
  
              return t.prototype.isSupported = function () {
                  return (this.test() ? this.trueBranch : this.falseBranch).isSupported()
              }, t.prototype.connect = function (t, e) {
                  return (this.test() ? this.trueBranch : this.falseBranch).connect(t, e)
              }, t
          }(), re = function () {
              function t(t) {
                  this.strategy = t
              }
  
              return t.prototype.isSupported = function () {
                  return this.strategy.isSupported()
              }, t.prototype.connect = function (t, e) {
                  var n = this.strategy.connect(t, (function (t, r) {
                      r && n.abort(), e(t, r)
                  }));
                  return n
              }, t
          }();
  
          function oe(t) {
              return function () {
                  return t.isSupported()
              }
          }
  
          var ie, se = function (t, e) {
              var n = {};
  
              function r(r, o, i, s, c) {
                  var a = e(t, r, o, i, s, c);
                  return n[r] = a, a
              }
  
              var o, i = {hostNonTLS: t.wsHost + ":" + t.wsPort, hostTLS: t.wsHost + ":" + t.wssPort, httpPath: t.wsPath},
                  s = C({}, i, {useTLS: !0}), c = {
                      hostNonTLS: t.httpHost + ":" + t.httpPort,
                      hostTLS: t.httpHost + ":" + t.httpsPort,
                      httpPath: t.httpPath
                  }, a = {loop: !0, timeout: 15e3, timeoutLimit: 6e4},
                  u = new Wt({lives: 2, minPingDelay: 1e4, maxPingDelay: t.activity_timeout}),
                  h = new Wt({lives: 2, minPingDelay: 1e4, maxPingDelay: t.activity_timeout}), p = r("ws", "ws", 3, i, u),
                  f = r("wss", "ws", 3, s, u), l = r("sockjs", "sockjs", 1, c),
                  d = r("xhr_streaming", "xhr_streaming", 1, c, h), y = r("xdr_streaming", "xdr_streaming", 1, c, h),
                  v = r("xhr_polling", "xhr_polling", 1, c), g = r("xdr_polling", "xdr_polling", 1, c),
                  b = new Gt([p], a), m = new Gt([f], a), w = new Gt([l], a), _ = new Gt([new ne(oe(d), d, y)], a),
                  S = new Gt([new ne(oe(v), v, g)], a),
                  k = new Gt([new ne(oe(_), new Zt([_, new ee(S, {delay: 4e3})]), S)], a), T = new ne(oe(k), k, w);
              return o = t.useTLS ? new Zt([b, new ee(T, {delay: 2e3})]) : new Zt([b, new ee(m, {delay: 2e3}), new ee(T, {delay: 5e3})]), new Qt(new re(new ne(oe(p), o, T)), n, {
                  ttl: 18e5,
                  timeline: t.timeline,
                  useTLS: t.useTLS
              })
          }, ce = {
              getRequest: function (t) {
                  var e = new window.XDomainRequest;
                  return e.ontimeout = function () {
                      t.emit("error", new At), t.close()
                  }, e.onerror = function (e) {
                      t.emit("error", e), t.close()
                  }, e.onprogress = function () {
                      e.responseText && e.responseText.length > 0 && t.onChunk(200, e.responseText)
                  }, e.onload = function () {
                      e.responseText && e.responseText.length > 0 && t.onChunk(200, e.responseText), t.emit("finished", 200), t.close()
                  }, e
              }, abortRequest: function (t) {
                  t.ontimeout = t.onerror = t.onprogress = t.onload = null, t.abort()
              }
          }, ae = function () {
              var t = function (e, n) {
                  return (t = Object.setPrototypeOf || {__proto__: []} instanceof Array && function (t, e) {
                      t.__proto__ = e
                  } || function (t, e) {
                      for (var n in e) e.hasOwnProperty(n) && (t[n] = e[n])
                  })(e, n)
              };
              return function (e, n) {
                  function r() {
                      this.constructor = e
                  }
  
                  t(e, n), e.prototype = null === n ? Object.create(n) : (r.prototype = n.prototype, new r)
              }
          }(), ue = function (t) {
              function e(e, n, r) {
                  var o = t.call(this) || this;
                  return o.hooks = e, o.method = n, o.url = r, o
              }
  
              return ae(e, t), e.prototype.start = function (t) {
                  var e = this;
                  this.position = 0, this.xhr = this.hooks.getRequest(this), this.unloader = function () {
                      e.close()
                  }, we.addUnloadListener(this.unloader), this.xhr.open(this.method, this.url, !0), this.xhr.setRequestHeader && this.xhr.setRequestHeader("Content-Type", "application/json"), this.xhr.send(t)
              }, e.prototype.close = function () {
                  this.unloader && (we.removeUnloadListener(this.unloader), this.unloader = null), this.xhr && (this.hooks.abortRequest(this.xhr), this.xhr = null)
              }, e.prototype.onChunk = function (t, e) {
                  for (; ;) {
                      var n = this.advanceBuffer(e);
                      if (!n) break;
                      this.emit("chunk", {status: t, data: n})
                  }
                  this.isBufferTooLong(e) && this.emit("buffer_too_long")
              }, e.prototype.advanceBuffer = function (t) {
                  var e = t.slice(this.position), n = e.indexOf("\n");
                  return -1 !== n ? (this.position += n + 1, e.slice(0, n)) : null
              }, e.prototype.isBufferTooLong = function (t) {
                  return this.position === t.length && t.length > 262144
              }, e
          }(tt);
          !function (t) {
              t[t.CONNECTING = 0] = "CONNECTING", t[t.OPEN = 1] = "OPEN", t[t.CLOSED = 3] = "CLOSED"
          }(ie || (ie = {}));
          var he = ie, pe = 1;
  
          function fe(t) {
              var e = -1 === t.indexOf("?") ? "?" : "&";
              return t + e + "t=" + +new Date + "&n=" + pe++
          }
  
          function le(t) {
              return Math.floor(Math.random() * t)
          }
  
          var de, ye = function () {
              function t(t, e) {
                  this.hooks = t, this.session = le(1e3) + "/" + function (t) {
                      for (var e = [], n = 0; n < t; n++) e.push(le(32).toString(32));
                      return e.join("")
                  }(8), this.location = function (t) {
                      var e = /([^\?]*)\/*(\??.*)/.exec(t);
                      return {base: e[1], queryString: e[2]}
                  }(e), this.readyState = he.CONNECTING, this.openStream()
              }
  
              return t.prototype.send = function (t) {
                  return this.sendRaw(JSON.stringify([t]))
              }, t.prototype.ping = function () {
                  this.hooks.sendHeartbeat(this)
              }, t.prototype.close = function (t, e) {
                  this.onClose(t, e, !0)
              }, t.prototype.sendRaw = function (t) {
                  if (this.readyState !== he.OPEN) return !1;
                  try {
                      return we.createSocketRequest("POST", fe((e = this.location, n = this.session, e.base + "/" + n + "/xhr_send"))).start(t), !0
                  } catch (t) {
                      return !1
                  }
                  var e, n
              }, t.prototype.reconnect = function () {
                  this.closeStream(), this.openStream()
              }, t.prototype.onClose = function (t, e, n) {
                  this.closeStream(), this.readyState = he.CLOSED, this.onclose && this.onclose({
                      code: t,
                      reason: e,
                      wasClean: n
                  })
              }, t.prototype.onChunk = function (t) {
                  var e;
                  if (200 === t.status) switch (this.readyState === he.OPEN && this.onActivity(), t.data.slice(0, 1)) {
                      case"o":
                          e = JSON.parse(t.data.slice(1) || "{}"), this.onOpen(e);
                          break;
                      case"a":
                          e = JSON.parse(t.data.slice(1) || "[]");
                          for (var n = 0; n < e.length; n++) this.onEvent(e[n]);
                          break;
                      case"m":
                          e = JSON.parse(t.data.slice(1) || "null"), this.onEvent(e);
                          break;
                      case"h":
                          this.hooks.onHeartbeat(this);
                          break;
                      case"c":
                          e = JSON.parse(t.data.slice(1) || "[]"), this.onClose(e[0], e[1], !0)
                  }
              }, t.prototype.onOpen = function (t) {
                  var e, n, r;
                  this.readyState === he.CONNECTING ? (t && t.hostname && (this.location.base = (e = this.location.base, n = t.hostname, (r = /(https?:\/\/)([^\/:]+)((\/|:)?.*)/.exec(e))[1] + n + r[3])), this.readyState = he.OPEN, this.onopen && this.onopen()) : this.onClose(1006, "Server lost session", !0)
              }, t.prototype.onEvent = function (t) {
                  this.readyState === he.OPEN && this.onmessage && this.onmessage({data: t})
              }, t.prototype.onActivity = function () {
                  this.onactivity && this.onactivity()
              }, t.prototype.onError = function (t) {
                  this.onerror && this.onerror(t)
              }, t.prototype.openStream = function () {
                  var t = this;
                  this.stream = we.createSocketRequest("POST", fe(this.hooks.getReceiveURL(this.location, this.session))), this.stream.bind("chunk", (function (e) {
                      t.onChunk(e)
                  })), this.stream.bind("finished", (function (e) {
                      t.hooks.onFinished(t, e)
                  })), this.stream.bind("buffer_too_long", (function () {
                      t.reconnect()
                  }));
                  try {
                      this.stream.start()
                  } catch (e) {
                      O.defer((function () {
                          t.onError(e), t.onClose(1006, "Could not start streaming", !1)
                      }))
                  }
              }, t.prototype.closeStream = function () {
                  this.stream && (this.stream.unbind_all(), this.stream.close(), this.stream = null)
              }, t
          }(), ve = {
              getReceiveURL: function (t, e) {
                  return t.base + "/" + e + "/xhr_streaming" + t.queryString
              }, onHeartbeat: function (t) {
                  t.sendRaw("[]")
              }, sendHeartbeat: function (t) {
                  t.sendRaw("[]")
              }, onFinished: function (t, e) {
                  t.onClose(1006, "Connection interrupted (" + e + ")", !1)
              }
          }, ge = {
              getReceiveURL: function (t, e) {
                  return t.base + "/" + e + "/xhr" + t.queryString
              }, onHeartbeat: function () {
              }, sendHeartbeat: function (t) {
                  t.sendRaw("[]")
              }, onFinished: function (t, e) {
                  200 === e ? t.reconnect() : t.onClose(1006, "Connection interrupted (" + e + ")", !1)
              }
          }, be = {
              getRequest: function (t) {
                  var e = new (we.getXHRAPI());
                  return e.onreadystatechange = e.onprogress = function () {
                      switch (e.readyState) {
                          case 3:
                              e.responseText && e.responseText.length > 0 && t.onChunk(e.status, e.responseText);
                              break;
                          case 4:
                              e.responseText && e.responseText.length > 0 && t.onChunk(e.status, e.responseText), t.emit("finished", e.status), t.close()
                      }
                  }, e
              }, abortRequest: function (t) {
                  t.onreadystatechange = null, t.abort()
              }
          }, me = {
              createStreamingSocket: function (t) {
                  return this.createSocket(ve, t)
              }, createPollingSocket: function (t) {
                  return this.createSocket(ge, t)
              }, createSocket: function (t, e) {
                  return new ye(t, e)
              }, createXHR: function (t, e) {
                  return this.createRequest(be, t, e)
              }, createRequest: function (t, e, n) {
                  return new ue(t, e, n)
              }, createXDR: function (t, e) {
                  return this.createRequest(ce, t, e)
              }
          }, we = {
              nextAuthCallbackID: 1,
              auth_callbacks: {},
              ScriptReceivers: o,
              DependenciesReceivers: c,
              getDefaultStrategy: se,
              Transports: dt,
              transportConnectionInitializer: function () {
                  var t = this;
                  t.timeline.info(t.buildTimelineMessage({transport: t.name + (t.options.useTLS ? "s" : "")})), t.hooks.isInitialized() ? t.changeState("initialized") : t.hooks.file ? (t.changeState("initializing"), a.load(t.hooks.file, {useTLS: t.options.useTLS}, (function (e, n) {
                      t.hooks.isInitialized() ? (t.changeState("initialized"), n(!0)) : (e && t.onError(e), t.onClose(), n(!1))
                  }))) : t.onClose()
              },
              HTTPFactory: me,
              TimelineTransport: Y,
              getXHRAPI: function () {
                  return window.XMLHttpRequest
              },
              getWebSocketAPI: function () {
                  return window.WebSocket || window.MozWebSocket
              },
              setup: function (t) {
                  var e = this;
                  window.Pusher = t;
                  var n = function () {
                      e.onDocumentBody(t.ready)
                  };
                  window.JSON ? n() : a.load("json2", {}, n)
              },
              getDocument: function () {
                  return document
              },
              getProtocol: function () {
                  return this.getDocument().location.protocol
              },
              getAuthorizers: function () {
                  return {ajax: q, jsonp: F}
              },
              onDocumentBody: function (t) {
                  var e = this;
                  document.body ? t() : setTimeout((function () {
                      e.onDocumentBody(t)
                  }), 0)
              },
              createJSONPRequest: function (t, e) {
                  return new J(t, e)
              },
              createScriptRequest: function (t) {
                  return new X(t)
              },
              getLocalStorage: function () {
                  try {
                      return window.localStorage
                  } catch (t) {
                      return
                  }
              },
              createXHR: function () {
                  return this.getXHRAPI() ? this.createXMLHttpRequest() : this.createMicrosoftXHR()
              },
              createXMLHttpRequest: function () {
                  return new (this.getXHRAPI())
              },
              createMicrosoftXHR: function () {
                  return new ActiveXObject("Microsoft.XMLHTTP")
              },
              getNetwork: function () {
                  return vt
              },
              createWebSocket: function (t) {
                  return new (this.getWebSocketAPI())(t)
              },
              createSocketRequest: function (t, e) {
                  if (this.isXHRSupported()) return this.HTTPFactory.createXHR(t, e);
                  if (this.isXDRSupported(0 === e.indexOf("https:"))) return this.HTTPFactory.createXDR(t, e);
                  throw"Cross-origin HTTP requests are not supported"
              },
              isXHRSupported: function () {
                  var t = this.getXHRAPI();
                  return Boolean(t) && void 0 !== (new t).withCredentials
              },
              isXDRSupported: function (t) {
                  var e = t ? "https:" : "http:", n = this.getProtocol();
                  return Boolean(window.XDomainRequest) && n === e
              },
              addUnloadListener: function (t) {
                  void 0 !== window.addEventListener ? window.addEventListener("unload", t, !1) : void 0 !== window.attachEvent && window.attachEvent("onunload", t)
              },
              removeUnloadListener: function (t) {
                  void 0 !== window.addEventListener ? window.removeEventListener("unload", t, !1) : void 0 !== window.detachEvent && window.detachEvent("onunload", t)
              }
          };
          !function (t) {
              t[t.ERROR = 3] = "ERROR", t[t.INFO = 6] = "INFO", t[t.DEBUG = 7] = "DEBUG"
          }(de || (de = {}));
          var _e = de, Se = function () {
              function t(t, e, n) {
                  this.key = t, this.session = e, this.events = [], this.options = n || {}, this.sent = 0, this.uniqueID = 0
              }
  
              return t.prototype.log = function (t, e) {
                  t <= this.options.level && (this.events.push(C({}, e, {timestamp: O.now()})), this.options.limit && this.events.length > this.options.limit && this.events.shift())
              }, t.prototype.error = function (t) {
                  this.log(_e.ERROR, t)
              }, t.prototype.info = function (t) {
                  this.log(_e.INFO, t)
              }, t.prototype.debug = function (t) {
                  this.log(_e.DEBUG, t)
              }, t.prototype.isEmpty = function () {
                  return 0 === this.events.length
              }, t.prototype.send = function (t, e) {
                  var n = this, r = C({
                      session: this.session,
                      bundle: this.sent + 1,
                      key: this.key,
                      lib: "js",
                      version: this.options.version,
                      cluster: this.options.cluster,
                      features: this.options.features,
                      timeline: this.events
                  }, this.options.params);
                  return this.events = [], t(r, (function (t, r) {
                      t || n.sent++, e && e(t, r)
                  })), !0
              }, t.prototype.generateUniqueID = function () {
                  return this.uniqueID++, this.uniqueID
              }, t
          }(), ke = function () {
              function t(t, e, n, r) {
                  this.name = t, this.priority = e, this.transport = n, this.options = r || {}
              }
  
              return t.prototype.isSupported = function () {
                  return this.transport.isSupported({useTLS: this.options.useTLS})
              }, t.prototype.connect = function (t, e) {
                  var n = this;
                  if (!this.isSupported()) return Te(new Rt, e);
                  if (this.priority < t) return Te(new Et, e);
                  var r = !1,
                      o = this.transport.createConnection(this.name, this.priority, this.options.key, this.options),
                      i = null, s = function () {
                          o.unbind("initialized", s), o.connect()
                      }, c = function () {
                          i = Kt.createHandshake(o, (function (t) {
                              r = !0, h(), e(null, t)
                          }))
                      }, a = function (t) {
                          h(), e(t)
                      }, u = function () {
                          var t;
                          h(), t = B(o), e(new Pt(t))
                      }, h = function () {
                          o.unbind("initialized", s), o.unbind("open", c), o.unbind("error", a), o.unbind("closed", u)
                      };
                  return o.bind("initialized", s), o.bind("open", c), o.bind("error", a), o.bind("closed", u), o.initialize(), {
                      abort: function () {
                          r || (h(), i ? i.close() : o.close())
                      }, forceMinPriority: function (t) {
                          r || n.priority < t && (i ? i.close() : o.close())
                      }
                  }
              }, t
          }();
  
          function Te(t, e) {
              return O.defer((function () {
                  e(t)
              })), {
                  abort: function () {
                  }, forceMinPriority: function () {
                  }
              }
          }
  
          var Oe = we.Transports, Ce = function (t, e, n, r, o, i) {
              var s = Oe[n];
              if (!s) throw new Lt(n);
              return !(t.enabledTransports && -1 === E(t.enabledTransports, e) || t.disabledTransports && -1 !== E(t.disabledTransports, e)) ? new ke(e, r, i ? i.getAssistant(s) : s, C({
                  key: t.key,
                  useTLS: t.useTLS,
                  timeline: t.timeline,
                  ignoreNullOrigin: t.ignoreNullOrigin
              }, o)) : Ae
          }, Ae = {
              isSupported: function () {
                  return !1
              }, connect: function (t, e) {
                  var n = O.defer((function () {
                      e(new Rt)
                  }));
                  return {
                      abort: function () {
                          n.ensureAborted()
                      }, forceMinPriority: function () {
                      }
                  }
              }
          }, Ee = function () {
              function t(e, n) {
                  var r, o = this;
                  if (function (t) {
                      if (null == t) throw"You must pass your app key when you instantiate Pusher."
                  }(e), !(n = n || {}).cluster && !n.wsHost && !n.httpHost) {
                      var s = H("javascriptQuickStart");
                      D.warn("You should always specify a cluster when connecting. " + s)
                  }
                  "disableStats" in n && (D.warn("The disableStats option is deprecated in favor of enableStats"), "enableStats" in n || (n.enableStats = !n.disableStats)), this.key = e, this.config = C({
                      wsHost: i.host,
                      wsPort: i.ws_port,
                      wssPort: i.wss_port,
                      wsPath: i.ws_path,
                      httpHost: i.sockjs_host,
                      httpPort: i.sockjs_http_port,
                      httpsPort: i.sockjs_https_port,
                      httpPath: i.sockjs_path,
                      statsHost: i.stats_host,
                      authEndpoint: i.channel_auth_endpoint,
                      authTransport: i.channel_auth_transport,
                      activity_timeout: i.activity_timeout,
                      pong_timeout: i.pong_timeout,
                      unavailable_timeout: i.unavailable_timeout
                  }, n.cluster ? {
                      wsHost: "ws-" + (r = n.cluster) + ".pusher.com",
                      httpHost: "sockjs-" + r + ".pusher.com"
                  } : {}, n), this.channels = Kt.createChannels(), this.global_emitter = new tt, this.sessionID = Math.floor(1e9 * Math.random()), this.timeline = new Se(this.key, this.sessionID, {
                      cluster: this.config.cluster,
                      features: t.getClientFeatures(),
                      params: this.config.timelineParams || {},
                      limit: 50,
                      level: _e.INFO,
                      version: i.VERSION
                  }), this.config.enableStats && (this.timelineSender = Kt.createTimelineSender(this.timeline, {
                      host: this.config.statsHost,
                      path: "/timeline/v2/" + we.TimelineTransport.name
                  }));
                  this.connection = Kt.createConnectionManager(this.key, C({
                      getStrategy: function (t) {
                          var e = C({}, o.config, t);
                          return we.getDefaultStrategy(e, Ce)
                      },
                      timeline: this.timeline,
                      activityTimeout: this.config.activity_timeout,
                      pongTimeout: this.config.pong_timeout,
                      unavailableTimeout: this.config.unavailable_timeout
                  }, this.config, {useTLS: this.shouldUseTLS()})), this.connection.bind("connected", (function () {
                      o.subscribeAll(), o.timelineSender && o.timelineSender.send(o.connection.isUsingTLS())
                  })), this.connection.bind("message", (function (t) {
                      var e = 0 === t.event.indexOf("pusher_internal:");
                      if (t.channel) {
                          var n = o.channel(t.channel);
                          n && n.handleEvent(t)
                      }
                      e || o.global_emitter.emit(t.event, t.data)
                  })), this.connection.bind("connecting", (function () {
                      o.channels.disconnect()
                  })), this.connection.bind("disconnected", (function () {
                      o.channels.disconnect()
                  })), this.connection.bind("error", (function (t) {
                      D.warn(t)
                  })), t.instances.push(this), this.timeline.info({instances: t.instances.length}), t.isReady && this.connect()
              }
  
              return t.ready = function () {
                  t.isReady = !0;
                  for (var e = 0, n = t.instances.length; e < n; e++) t.instances[e].connect()
              }, t.getClientFeatures = function () {
                  return x(M({ws: we.Transports.ws}, (function (t) {
                      return t.isSupported({})
                  })))
              }, t.prototype.channel = function (t) {
                  return this.channels.find(t)
              }, t.prototype.allChannels = function () {
                  return this.channels.all()
              }, t.prototype.connect = function () {
                  if (this.connection.connect(), this.timelineSender && !this.timelineSenderTimer) {
                      var t = this.connection.isUsingTLS(), e = this.timelineSender;
                      this.timelineSenderTimer = new T(6e4, (function () {
                          e.send(t)
                      }))
                  }
              }, t.prototype.disconnect = function () {
                  this.connection.disconnect(), this.timelineSenderTimer && (this.timelineSenderTimer.ensureAborted(), this.timelineSenderTimer = null)
              }, t.prototype.bind = function (t, e, n) {
                  return this.global_emitter.bind(t, e, n), this
              }, t.prototype.unbind = function (t, e, n) {
                  return this.global_emitter.unbind(t, e, n), this
              }, t.prototype.bind_global = function (t) {
                  return this.global_emitter.bind_global(t), this
              }, t.prototype.unbind_global = function (t) {
                  return this.global_emitter.unbind_global(t), this
              }, t.prototype.unbind_all = function (t) {
                  return this.global_emitter.unbind_all(), this
              }, t.prototype.subscribeAll = function () {
                  var t;
                  for (t in this.channels.channels) this.channels.channels.hasOwnProperty(t) && this.subscribe(t)
              }, t.prototype.subscribe = function (t) {
                  var e = this.channels.add(t, this);
                  return e.subscriptionPending && e.subscriptionCancelled ? e.reinstateSubscription() : e.subscriptionPending || "connected" !== this.connection.state || e.subscribe(), e
              }, t.prototype.unsubscribe = function (t) {
                  var e = this.channels.find(t);
                  e && e.subscriptionPending ? e.cancelSubscription() : (e = this.channels.remove(t)) && "connected" === this.connection.state && e.unsubscribe()
              }, t.prototype.send_event = function (t, e, n) {
                  return this.connection.send_event(t, e, n)
              }, t.prototype.shouldUseTLS = function () {
                  return "https:" === we.getProtocol() || (!0 === this.config.forceTLS || Boolean(this.config.encrypted))
              }, t.instances = [], t.isReady = !1, t.logToConsole = !1, t.Runtime = we, t.ScriptReceivers = we.ScriptReceivers, t.DependenciesReceivers = we.DependenciesReceivers, t.auth_callbacks = we.auth_callbacks, t
          }(), Pe = e.default = Ee;
          we.setup(Ee)
      }])
  }));
  