@enegelai/bot-widget 1.16.3 → 1.16.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import { css as J, LitElement as Fe, html as u, nothing as Ae, svg as me } from "lit";
2
2
  import { property as x, customElement as K, query as xe, state as Ha, queryAll as Va, eventOptions as sa } from "lit/decorators.js";
3
- import { unsafeHTML as Y } from "lit-html/directives/unsafe-html.js";
4
3
  import { when as W } from "lit/directives/when.js";
5
- import { registerIconLibrary as zi } from "@shoelace-style/shoelace";
4
+ import { unsafeHTML as Y } from "lit-html/directives/unsafe-html.js";
5
+ import { registerIconLibrary as Oi } from "@shoelace-style/shoelace";
6
6
  import "@shoelace-style/shoelace/dist/components/button/button.js";
7
7
  import "@shoelace-style/shoelace/dist/components/avatar/avatar.js";
8
8
  import "@shoelace-style/shoelace/dist/components/input/input.js";
@@ -23,12 +23,12 @@ import "@shoelace-style/shoelace/dist/components/progress-bar/progress-bar.js";
23
23
  import "@shoelace-style/shoelace/dist/components/badge/badge.js";
24
24
  import { repeat as et } from "lit/directives/repeat.js";
25
25
  import { until as Xt } from "lit-html/directives/until.js";
26
- import Oi from "markdown-it";
27
- import Bi from "markdown-it-link-attributes";
26
+ import qi from "markdown-it";
27
+ import Di from "markdown-it-link-attributes";
28
28
  import Ut from "highlight.js";
29
29
  import "@shoelace-style/shoelace/dist/components/popup/popup.js";
30
30
  import "@shoelace-style/shoelace/dist/components/rating/rating.js";
31
- import { createRef as qi, ref as At } from "lit/directives/ref.js";
31
+ import { createRef as Fi, ref as At } from "lit/directives/ref.js";
32
32
  function Ua(a) {
33
33
  return typeof a == "function" ? a() : a;
34
34
  }
@@ -45,7 +45,7 @@ const jt = class jt extends Event {
45
45
  };
46
46
  jt.eventName = "lit-state-changed";
47
47
  let at = jt;
48
- const Di = (a, e) => e !== a && (e === e || a === a), ha = class ha extends EventTarget {
48
+ const ji = (a, e) => e !== a && (e === e || a === a), ha = class ha extends EventTarget {
49
49
  static initPropertyMap() {
50
50
  this.propertyMap || (this.propertyMap = /* @__PURE__ */ new Map());
51
51
  }
@@ -78,7 +78,7 @@ const Di = (a, e) => e !== a && (e === e || a === a), ha = class ha extends Even
78
78
  Object.defineProperty(this.prototype, e, s);
79
79
  }
80
80
  static getPropertyDescriptor(e, t, i) {
81
- const s = i?.hasChanged || Di;
81
+ const s = i?.hasChanged || ji;
82
82
  return {
83
83
  get() {
84
84
  return this[t];
@@ -132,7 +132,7 @@ class it {
132
132
  this.state.removeEventListener(at.eventName, this.callback);
133
133
  }
134
134
  }
135
- function O(a) {
135
+ function z(a) {
136
136
  return (e, t) => {
137
137
  if (Object.getOwnPropertyDescriptor(e, t))
138
138
  throw new Error("@property must be called before all state decorators");
@@ -146,7 +146,7 @@ function O(a) {
146
146
  }), i.createProperty(t, a), s ? Object.getOwnPropertyDescriptor(e, t) : void 0;
147
147
  };
148
148
  }
149
- function Fi(a, e) {
149
+ function Hi(a, e) {
150
150
  if (a !== null && (e === Boolean || e === Number || e === Array || e === Object))
151
151
  try {
152
152
  a = JSON.parse(a);
@@ -156,18 +156,18 @@ function Fi(a, e) {
156
156
  return a;
157
157
  }
158
158
  new URL(location.href);
159
- const ji = {
159
+ const Vi = {
160
160
  prefix: "_ls"
161
161
  };
162
- function fe(a) {
163
- return a = { ...ji, ...a }, (e, t) => {
162
+ function ce(a) {
163
+ return a = { ...Vi, ...a }, (e, t) => {
164
164
  const i = Object.getOwnPropertyDescriptor(e, t);
165
165
  if (!i)
166
166
  throw new Error("@local-storage decorator need to be called after @property");
167
167
  const s = `${a?.prefix || ""}_${a?.key || String(t)}`, r = e.constructor, o = r.propertyMap.get(t), f = o?.type;
168
168
  if (o) {
169
169
  const w = o.initialValue;
170
- o.initialValue = () => Fi(localStorage.getItem(s), f) ?? Ua(w), r.propertyMap.set(t, { ...o, ...a });
170
+ o.initialValue = () => Hi(localStorage.getItem(s), f) ?? Ua(w), r.propertyMap.set(t, { ...o, ...a });
171
171
  }
172
172
  const p = i?.set, k = {
173
173
  ...i,
@@ -181,12 +181,12 @@ function fe(a) {
181
181
  function Na(a) {
182
182
  return a && a.__esModule && Object.prototype.hasOwnProperty.call(a, "default") ? a.default : a;
183
183
  }
184
- var Pt = { exports: {} }, Hi = Pt.exports, ka;
185
- function Vi() {
184
+ var Pt = { exports: {} }, Ui = Pt.exports, ka;
185
+ function Ni() {
186
186
  return ka || (ka = 1, (function(a) {
187
187
  (function(e, t) {
188
188
  a.exports ? a.exports = t() : e.log = t();
189
- })(Hi, function() {
189
+ })(Ui, function() {
190
190
  var e = function() {
191
191
  }, t = "undefined", i = typeof window !== t && typeof window.navigator !== t && /Trident\/|MSIE /.test(window.navigator.userAgent), s = [
192
192
  "trace",
@@ -329,8 +329,8 @@ function Vi() {
329
329
  });
330
330
  })(Pt)), Pt.exports;
331
331
  }
332
- var Ui = Vi();
333
- const Je = /* @__PURE__ */ Na(Ui), Ni = J`
332
+ var Wi = Ni();
333
+ const Je = /* @__PURE__ */ Na(Wi), Gi = J`
334
334
  :host {
335
335
  --enegelai-bot-width: 420px;
336
336
  --enegelai-bot-base-font-size: 16px;
@@ -385,6 +385,14 @@ const Je = /* @__PURE__ */ Na(Ui), Ni = J`
385
385
  --symbol-size: 1.2em;
386
386
  }
387
387
 
388
+ .cb-new-conversation-wrapper {
389
+ width: 100%;
390
+ display: flex;
391
+ align-items: center;
392
+ justify-content: center;
393
+ margin: 10px 0px;
394
+ }
395
+
388
396
  @keyframes fadeIn {
389
397
  from {
390
398
  opacity: 0;
@@ -655,10 +663,10 @@ const Je = /* @__PURE__ */ Na(Ui), Ni = J`
655
663
  color: white;
656
664
  }
657
665
  `;
658
- var Wi = Object.defineProperty, Gi = Object.getOwnPropertyDescriptor, na = (a, e, t, i) => {
659
- for (var s = i > 1 ? void 0 : i ? Gi(e, t) : e, r = a.length - 1, o; r >= 0; r--)
666
+ var Xi = Object.defineProperty, Yi = Object.getOwnPropertyDescriptor, na = (a, e, t, i) => {
667
+ for (var s = i > 1 ? void 0 : i ? Yi(e, t) : e, r = a.length - 1, o; r >= 0; r--)
660
668
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
661
- return i && s && Wi(e, t, s), s;
669
+ return i && s && Xi(e, t, s), s;
662
670
  };
663
671
  let ut = class extends Fe {
664
672
  constructor() {
@@ -678,7 +686,7 @@ na([
678
686
  ut = na([
679
687
  K("cb-icon")
680
688
  ], ut);
681
- let Xi = (a) => crypto.getRandomValues(new Uint8Array(a)), Yi = (a, e, t) => {
689
+ let Ji = (a) => crypto.getRandomValues(new Uint8Array(a)), Ki = (a, e, t) => {
682
690
  let i = (2 << Math.log2(a.length - 1)) - 1, s = -~(1.6 * i * e / a.length);
683
691
  return (r = e) => {
684
692
  let o = "";
@@ -688,12 +696,12 @@ let Xi = (a) => crypto.getRandomValues(new Uint8Array(a)), Yi = (a, e, t) => {
688
696
  if (o += a[f[p] & i] || "", o.length >= r) return o;
689
697
  }
690
698
  };
691
- }, Ji = (a, e = 21) => Yi(a, e | 0, Xi);
692
- const Ki = Ji("1234567890abcdefghijklmnopqrstuvwxyz", 10);
693
- function de(a = 10) {
694
- return Ki(a);
699
+ }, Zi = (a, e = 21) => Ki(a, e | 0, Ji);
700
+ const Qi = Zi("1234567890abcdefghijklmnopqrstuvwxyz", 10);
701
+ function fe(a = 10) {
702
+ return Qi(a);
695
703
  }
696
- function Zi(a) {
704
+ function es(a) {
697
705
  return new Promise((e, t) => {
698
706
  try {
699
707
  navigator.clipboard.writeText(a).then(() => {
@@ -704,19 +712,19 @@ function Zi(a) {
704
712
  }
705
713
  });
706
714
  }
707
- function Ga(a = !0) {
708
- return new Promise((e) => {
709
- const t = document.createElement("input");
710
- t.type = "file", a && (t.multiple = !0), t.style.display = "none", t.addEventListener("change", () => {
711
- const i = Array.prototype.slice.call(t.files);
712
- e(i);
713
- }), t.click();
715
+ function Ga(a = !0, e = null) {
716
+ return new Promise((t) => {
717
+ const i = document.createElement("input");
718
+ i.type = "file", a && (i.multiple = !0), i.accept = e || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", i.style.display = "none", i.addEventListener("change", () => {
719
+ const s = Array.prototype.slice.call(i.files);
720
+ t(s);
721
+ }), i.click();
714
722
  });
715
723
  }
716
724
  const se = Je.noConflict();
717
725
  se.setLevel("info");
718
726
  const _a = 3e4;
719
- class Qi {
727
+ class ts {
720
728
  constructor(e = {}) {
721
729
  this.id = 0, this.url = e?.url || null, this.orgId = e?.orgId || null, this.botId = e?.botId || null, this.convId = e?.convId || null, this._options = e || {}, this._ws = null, this.started = !1, this.connected = !1, this.connecting = !1, this.suspendDetected = !1, this.onMessage = e?.onMessage || null, this.onConnecting = e?.onConnecting || null, this.onConnectError = e?.onConnectError || null, this.onClose = e?.onClose || null, this.queue = e?.queue || [], this.pause = (t) => new Promise((i) => setTimeout(i, t)), this.lastTickTs = 0, this.lastAckTs = 0, this.tickInterval = null, se.info(`WSC: Created, url: ${this.url}`);
722
730
  }
@@ -776,7 +784,7 @@ class Qi {
776
784
  this.connecting !== e && (this.connecting = e, this.onConnecting && typeof this.onConnecting == "function" && this.onConnecting(this.connecting));
777
785
  }
778
786
  pingConnection() {
779
- this._ws && this._ws.readyState === WebSocket.OPEN && this._ws.send(JSON.stringify({ type: "heartbeat", id: de() }));
787
+ this._ws && this._ws.readyState === WebSocket.OPEN && this._ws.send(JSON.stringify({ type: "heartbeat", id: fe() }));
780
788
  }
781
789
  tick() {
782
790
  this.pingConnection(), this.lastTickTs = Date.now();
@@ -811,7 +819,7 @@ class Qi {
811
819
  sendClientInfoMessage() {
812
820
  const e = {
813
821
  type: "clientInfo",
814
- id: de(),
822
+ id: fe(),
815
823
  data: {
816
824
  referrer: window.location.href,
817
825
  userAgent: window.navigator.userAgent
@@ -877,7 +885,7 @@ class Qi {
877
885
  });
878
886
  }*/
879
887
  }
880
- class es {
888
+ class as {
881
889
  constructor(e = {}) {
882
890
  this.name = e.name || "EventEmitter", this.events = {};
883
891
  }
@@ -1024,7 +1032,7 @@ const Sa = [
1024
1032
  7040,
1025
1033
  7458.62,
1026
1034
  7902.13
1027
- ], ts = [
1035
+ ], is = [
1028
1036
  "C",
1029
1037
  "C#",
1030
1038
  "D",
@@ -1041,9 +1049,9 @@ const Sa = [
1041
1049
  for (let a = 1; a <= 8; a++)
1042
1050
  for (let e = 0; e < Sa.length; e++) {
1043
1051
  const t = Sa[e];
1044
- We.push(t / Math.pow(2, 8 - a)), ra.push(ts[e] + a);
1052
+ We.push(t / Math.pow(2, 8 - a)), ra.push(is[e] + a);
1045
1053
  }
1046
- const Rt = [32, 2e3], Ca = We.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]), as = ra.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]);
1054
+ const Rt = [32, 2e3], Ca = We.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]), ss = ra.filter((a, e) => We[e] > Rt[0] && We[e] < Rt[1]);
1047
1055
  class lt {
1048
1056
  /**
1049
1057
  * Retrieves frequency domain data from an AnalyserNode adjusted to a decibel range
@@ -1070,7 +1078,7 @@ class lt {
1070
1078
  break;
1071
1079
  }
1072
1080
  }
1073
- v = M, k = s === "voice" ? Ca : We, w = s === "voice" ? as : ra;
1081
+ v = M, k = s === "voice" ? Ca : We, w = s === "voice" ? ss : ra;
1074
1082
  } else
1075
1083
  v = Array.from(i), k = v.map((I, M) => p * M), w = k.map((I) => `${I.toFixed(2)} Hz`);
1076
1084
  const _ = v.map((I) => Math.max(
@@ -1146,7 +1154,7 @@ class lt {
1146
1154
  }
1147
1155
  }
1148
1156
  globalThis.AudioAnalysis = lt;
1149
- const is = `
1157
+ const ns = `
1150
1158
  class StreamProcessor extends AudioWorkletProcessor {
1151
1159
  constructor() {
1152
1160
  super();
@@ -1235,17 +1243,17 @@ class StreamProcessor extends AudioWorkletProcessor {
1235
1243
  }
1236
1244
 
1237
1245
  registerProcessor('stream_processor', StreamProcessor);
1238
- `, ss = new Blob([is], {
1246
+ `, rs = new Blob([ns], {
1239
1247
  type: "application/javascript"
1240
- }), ns = URL.createObjectURL(ss), rs = ns;
1241
- class os {
1248
+ }), os = URL.createObjectURL(rs), cs = os;
1249
+ class ls {
1242
1250
  /**
1243
1251
  * Creates a new WavStreamPlayer instance
1244
1252
  * @param {{sampleRate?: number}} options
1245
1253
  * @returns {WavStreamPlayer}
1246
1254
  */
1247
1255
  constructor({ sampleRate: e = 44100, onPlaybackEnded: t = null } = {}) {
1248
- this.scriptSrc = rs, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
1256
+ this.scriptSrc = cs, this.sampleRate = e, this.context = null, this.stream = null, this.analyser = null, this.trackSampleOffsets = {}, this.interruptedTrackIds = {}, this.onPlaybackEnded = t && typeof t == "function" ? t : null;
1249
1257
  }
1250
1258
  /**
1251
1259
  * Connects the audio context and enables output to speakers
@@ -1340,8 +1348,8 @@ class os {
1340
1348
  return this.getTrackSampleOffset(!0);
1341
1349
  }
1342
1350
  }
1343
- globalThis.WavStreamPlayer = os;
1344
- const cs = URL.createObjectURL(
1351
+ globalThis.WavStreamPlayer = ls;
1352
+ const ds = URL.createObjectURL(
1345
1353
  new Blob([`
1346
1354
  class UpsampleStreamPCM extends AudioWorkletProcessor {
1347
1355
  constructor(options) {
@@ -1558,7 +1566,7 @@ class Xa {
1558
1566
  /** Build the WebAudio graph. Always audible via direct path; loopback ref is optional and non-critical. */
1559
1567
  async connect() {
1560
1568
  if (this.context) return !0;
1561
- if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(cs), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
1569
+ if (this.context = new (window.AudioContext || window.webkitAudioContext)({ latencyHint: "interactive" }), this.context.state === "suspended" && await this.context.resume(), await this.context.audioWorklet.addModule(ds), this._worklet = new AudioWorkletNode(this.context, "upsample-stream-pcm", {
1562
1570
  processorOptions: {
1563
1571
  sourceSampleRate: this.inputSampleRate,
1564
1572
  prerollSrc: Math.round(this.inputSampleRate * 0.02)
@@ -1687,7 +1695,7 @@ class Xa {
1687
1695
  }
1688
1696
  }
1689
1697
  globalThis.WavStreamPlayerV2 = Xa;
1690
- const ls = `
1698
+ const fs = `
1691
1699
  class AudioProcessor extends AudioWorkletProcessor {
1692
1700
 
1693
1701
  constructor() {
@@ -1894,17 +1902,17 @@ class AudioProcessor extends AudioWorkletProcessor {
1894
1902
  }
1895
1903
 
1896
1904
  registerProcessor('audio_processor', AudioProcessor);
1897
- `, ds = new Blob([ls], {
1905
+ `, hs = new Blob([fs], {
1898
1906
  type: "application/javascript"
1899
- }), fs = URL.createObjectURL(ds), hs = fs;
1900
- class bs {
1907
+ }), bs = URL.createObjectURL(hs), us = bs;
1908
+ class ps {
1901
1909
  /**
1902
1910
  * Create a new WavRecorder instance
1903
1911
  * @param {{sampleRate?: number, outputToSpeakers?: boolean, debug?: boolean}} [options]
1904
1912
  * @returns {WavRecorder}
1905
1913
  */
1906
1914
  constructor({ sampleRate: e = 44100, outputToSpeakers: t = !1, debug: i = !1 } = {}) {
1907
- this.scriptSrc = hs, this.sampleRate = e, this.outputToSpeakers = t, this.debug = !!i, this._deviceChangeCallback = null, this._devices = [], this.stream = null, this.processor = null, this.source = null, this.node = null, this.recording = !1, this._lastEventId = 0, this.eventReceipts = {}, this.eventTimeout = 5e3, this._chunkProcessor = () => {
1915
+ this.scriptSrc = us, this.sampleRate = e, this.outputToSpeakers = t, this.debug = !!i, this._deviceChangeCallback = null, this._devices = [], this.stream = null, this.processor = null, this.source = null, this.node = null, this.recording = !1, this._lastEventId = 0, this.eventReceipts = {}, this.eventTimeout = 5e3, this._chunkProcessor = () => {
1908
1916
  }, this._chunkProcessorSize = void 0, this._chunkProcessorBuffer = {
1909
1917
  raw: new ArrayBuffer(0),
1910
1918
  mono: new ArrayBuffer(0)
@@ -2233,8 +2241,8 @@ use only for debugging`), o.connect(t.destination)), this.source = i, this.node
2233
2241
  return this.listenForDeviceChange(null), this.processor && await this.end(), !0;
2234
2242
  }
2235
2243
  }
2236
- globalThis.WavRecorder = bs;
2237
- const us = URL.createObjectURL(
2244
+ globalThis.WavRecorder = ps;
2245
+ const gs = URL.createObjectURL(
2238
2246
  new Blob([`
2239
2247
  class DownsampleRecorder extends AudioWorkletProcessor {
2240
2248
  constructor(options) {
@@ -2455,7 +2463,7 @@ class ot {
2455
2463
  echoCancellationType: this.captureInfo.trackSettings?.echoCancellationType ?? null
2456
2464
  }, this._log("Granted track settings:", this.captureInfo.trackSettings), this.audioCtx = new (window.AudioContext || window.webkitAudioContext)({
2457
2465
  latencyHint: "interactive"
2458
- }), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(us);
2466
+ }), this.captureInfo.contextSampleRate = this.audioCtx.sampleRate, this.source = this.audioCtx.createMediaStreamSource(this.stream), await this.audioCtx.audioWorklet.addModule(gs);
2459
2467
  const s = Math.round(this.targetSampleRate * this.chunkMs / 1e3);
2460
2468
  return this.node = new AudioWorkletNode(this.audioCtx, "downsample-recorder", {
2461
2469
  processorOptions: {
@@ -2531,7 +2539,7 @@ class ot {
2531
2539
  }
2532
2540
  }
2533
2541
  globalThis.WavRecorderV2 = ot;
2534
- class ps {
2542
+ class ms {
2535
2543
  constructor(e = {}) {
2536
2544
  this.sr = Math.max(8e3, e.sampleRate || 24e3), this.floor = Aa(e.floor ?? 0.12), this.attackSamples = Ce(e.attackMs ?? 12, this.sr), this.releaseSamples = Ce(e.releaseMs ?? 150, this.sr), this.escapeAttackSamples = Ce(e.escapeAttackMs ?? 10, this.sr), this.defaultGuardSamples = Ce(e.defaultGuardMs ?? 0, this.sr), this.gain = 1, this.target = 1, this.rampRemain = 0, this._step = 0, this.duckActive = !1, this.guardRemain = 0, this.vadEnabled = e.vadEnabled !== !1;
2537
2545
  const t = Math.max(2, e.vadFastMs ?? 10), i = Math.max(t + 20, e.vadSlowMs ?? 250);
@@ -2604,7 +2612,7 @@ function Ta(a, e) {
2604
2612
  const t = Math.max(1, a * e / 1e3);
2605
2613
  return Math.exp(-1 / t);
2606
2614
  }
2607
- class gs {
2615
+ class ys {
2608
2616
  /**
2609
2617
  * @param {object} opts
2610
2618
  * @param {number} opts.sampleRate - Hz of your PCM (e.g., 24000)
@@ -2759,7 +2767,7 @@ class gs {
2759
2767
  return o;
2760
2768
  }
2761
2769
  }
2762
- class ms {
2770
+ class vs {
2763
2771
  /**
2764
2772
  * @param {object} opts
2765
2773
  * @param {number} opts.sampleRate - PCM sample rate (e.g., 24000)
@@ -2896,7 +2904,7 @@ class ms {
2896
2904
  return o;
2897
2905
  }
2898
2906
  }
2899
- class ys {
2907
+ class ws {
2900
2908
  /**
2901
2909
  * @param {object} opts
2902
2910
  * @param {number} opts.sampleRate - Mic PCM sample rate (e.g., 24000)
@@ -2941,7 +2949,7 @@ class ys {
2941
2949
  }
2942
2950
  const Ne = Je.noConflict();
2943
2951
  Ne.setLevel("info");
2944
- class pt extends es {
2952
+ class pt extends as {
2945
2953
  constructor(e = {}) {
2946
2954
  super({ name: "WebAudioProcessorV2" }), this.options = e, this.muted = !1, this.audioRecorder = new ot({
2947
2955
  targetSampleRate: 24e3,
@@ -2953,14 +2961,14 @@ class pt extends es {
2953
2961
  primeMs: 200,
2954
2962
  // keep or remove; it’s harmless
2955
2963
  debug: !!e.debug
2956
- }), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new ys({
2964
+ }), this.audioRecorderAnalyzer = null, this.audioPlayerAnalyzer = null, this.firstTurnDropMs = e.firstTurnDropMs ?? 1500, this.firstTurnGate = new ws({
2957
2965
  sampleRate: 24e3,
2958
2966
  windowMs: this.firstTurnDropMs,
2959
2967
  partialPass: !0,
2960
2968
  // pass remainder of crossing frame
2961
2969
  hardDrop: !0
2962
2970
  // set true if you prefer simpler "drop whole frame"
2963
- }), this.ducker = new ps({
2971
+ }), this.ducker = new ms({
2964
2972
  sampleRate: 24e3,
2965
2973
  floor: 0.12,
2966
2974
  attackMs: 12,
@@ -2975,7 +2983,7 @@ class pt extends es {
2975
2983
  vadSlowMs: 250,
2976
2984
  vadAttackMs: 18,
2977
2985
  vadHangMs: 120
2978
- }), this.mixMinus = new gs({
2986
+ }), this.mixMinus = new ys({
2979
2987
  sampleRate: 24e3,
2980
2988
  bufferMs: 1e3,
2981
2989
  threshold: 0.3,
@@ -2984,7 +2992,7 @@ class pt extends es {
2984
2992
  hop: 64,
2985
2993
  downsampleFactor: 3,
2986
2994
  minCorrLenMs: 15
2987
- }), this.mixMinusSmooth = new ms({
2995
+ }), this.mixMinusSmooth = new vs({
2988
2996
  sampleRate: 24e3,
2989
2997
  bufferMs: 800,
2990
2998
  lowThresh: 0.25,
@@ -3159,6 +3167,220 @@ class pt extends es {
3159
3167
  }
3160
3168
  }
3161
3169
  globalThis.WebAudioProcessorV2 = pt;
3170
+ var xs = Object.defineProperty, ks = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
3171
+ for (var s = i > 1 ? void 0 : i ? ks(e, t) : e, r = a.length - 1, o; r >= 0; r--)
3172
+ (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
3173
+ return i && s && xs(e, t, s), s;
3174
+ };
3175
+ const Mt = "cb-toast-outlet", Ia = "cb-toast-outlet-style";
3176
+ function _s() {
3177
+ let a = document.getElementById(Mt);
3178
+ if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(Ia)) {
3179
+ const e = document.createElement("style");
3180
+ e.id = Ia, e.textContent = `
3181
+ /* Global outlet that holds all toasts */
3182
+ #${Mt} {
3183
+ position: fixed;
3184
+ right: 40px;
3185
+ bottom: 55px;
3186
+ display: flex;
3187
+ flex-direction: column;
3188
+ gap: 10px;
3189
+ z-index: 2147483646; /* below very-top overlays if any */
3190
+ align-items: flex-end;
3191
+ pointer-events: none; /* clicks pass through except on toast itself */
3192
+ }
3193
+ @media (max-width: 600px) {
3194
+ #${Mt} {
3195
+ left: 8px;
3196
+ right: 8px;
3197
+ align-items: stretch; /* stretch toasts to full width on mobile */
3198
+ }
3199
+ }
3200
+ `, document.head.appendChild(e);
3201
+ }
3202
+ return a;
3203
+ }
3204
+ function Ya(a) {
3205
+ const e = _s(), t = document.createElement("cb-toast");
3206
+ return t.message = a.message, t.variant = a.variant ?? "success", t.duration = typeof a.duration == "number" ? a.duration : 3e3, t.closeable = !!a.closeable, t.icon = a.icon ?? "", t.ariaLive = a.ariaLive ?? "polite", e.appendChild(t), t;
3207
+ }
3208
+ let qe = class extends Fe {
3209
+ constructor() {
3210
+ super(...arguments), this.message = "", this.variant = "success", this.duration = 3e3, this.closeable = !1, this.icon = "", this.ariaLive = "polite", this._open = !1, this._closing = !1, this._defaultIcons = {
3211
+ success: "✓",
3212
+ danger: "❌",
3213
+ warning: "⚠️",
3214
+ info: "ℹ️",
3215
+ neutral: "💬",
3216
+ primary: "⭐"
3217
+ };
3218
+ }
3219
+ connectedCallback() {
3220
+ super.connectedCallback(), queueMicrotask(() => this.open());
3221
+ }
3222
+ disconnectedCallback() {
3223
+ super.disconnectedCallback(), this._clearTimer();
3224
+ }
3225
+ render() {
3226
+ const a = ["toast", this.variant, this._open ? "open" : "", this._closing ? "closing" : ""].filter(Boolean).join(" "), e = this.icon || this._defaultIcons[this.variant] || this._defaultIcons.success;
3227
+ return u`
3228
+ <div
3229
+ class=${a}
3230
+ role="status"
3231
+ aria-live=${this.ariaLive}
3232
+ >
3233
+ ${u`<span class="icon" aria-hidden="true">${this._renderIcon(e)}</span>`}
3234
+ <div class="msg">
3235
+ ${this.message ? u`${this.message}` : u`<slot></slot>`}
3236
+ </div>
3237
+ ${this.closeable ? u`<button class="close" @click=${this.close} aria-label="Close">×</button>` : Ae}
3238
+ </div>
3239
+ `;
3240
+ }
3241
+ /** Programmatic API */
3242
+ open() {
3243
+ this._open || (this._open = !0, this.requestUpdate(), this.duration > 0 && (this._timer = window.setTimeout(() => this.close(), this.duration)));
3244
+ }
3245
+ async close() {
3246
+ this._closing || (this._closing = !0, this.requestUpdate(), await new Promise((a) => setTimeout(() => a(), 200)), this.remove());
3247
+ }
3248
+ _clearTimer() {
3249
+ this._timer && (clearTimeout(this._timer), this._timer = void 0);
3250
+ }
3251
+ _renderIcon(a) {
3252
+ return a.trim().startsWith("<") ? u`${Y(a)}` : a;
3253
+ }
3254
+ };
3255
+ qe.styles = J`
3256
+ :host {
3257
+ display: block;
3258
+ pointer-events: auto; /* receive pointer events within toast */
3259
+ contain: content;
3260
+ font-size: var(--enegelai-bot-base-font-size, 16px);
3261
+ font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
3262
+ }
3263
+
3264
+ .toast {
3265
+ --_bg: var(--sl-color-success-600, #2f9e44);
3266
+ --_fg: #fff;
3267
+ --_border: transparent;
3268
+
3269
+ display: grid;
3270
+ grid-template-columns: auto 1fr auto;
3271
+ align-items: center;
3272
+ gap: 10px;
3273
+
3274
+ font-size: 0.7em;
3275
+ font-weight: 400;
3276
+
3277
+ max-width: min(420px, 92vw);
3278
+ padding: 16px 20px;
3279
+ border-radius: 12px;
3280
+ border: 1px solid var(--_border);
3281
+ background: var(--_bg);
3282
+ background: color-mix(in srgb, var(--_bg) 85%, transparent);
3283
+ color: var(--_fg);
3284
+ box-shadow:
3285
+ 0 10px 15px -3px rgba(0,0,0,.1),
3286
+ 0 4px 6px -4px rgba(0,0,0,.08);
3287
+
3288
+ opacity: 0;
3289
+ transform: translateY(6px);
3290
+ transition: opacity 1s ease, transform 1s ease, filter 1s ease;
3291
+ }
3292
+
3293
+ .toast.open {
3294
+ opacity: 1;
3295
+ transform: translateY(0);
3296
+ }
3297
+
3298
+ .toast.closing {
3299
+ opacity: 0;
3300
+ transform: translateY(6px);
3301
+ filter: saturate(.9) brightness(.98);
3302
+ }
3303
+
3304
+ .icon {
3305
+ display: inline-flex;
3306
+ align-items: center;
3307
+ justify-content: center;
3308
+ width: 22px;
3309
+ height: 22px;
3310
+ line-height: 1;
3311
+ font-size: 22px;
3312
+ user-select: none;
3313
+ background: transparent; /* ensure transparent background */
3314
+ }
3315
+
3316
+ .msg {
3317
+ font-size: 1.5em;
3318
+ line-height: 1.25;
3319
+ word-break: break-word;
3320
+ }
3321
+
3322
+ .close {
3323
+ appearance: none;
3324
+ background: transparent;
3325
+ border: none;
3326
+ color: inherit;
3327
+ font: inherit;
3328
+ font-size: 20px;
3329
+ cursor: pointer;
3330
+ opacity: .9;
3331
+ width: 28px;
3332
+ height: 28px;
3333
+ border-radius: 50%;
3334
+ display: inline-flex;
3335
+ align-items: center;
3336
+ justify-content: center;
3337
+ transition: background 1s ease, transform 1s ease;
3338
+ }
3339
+ .close:hover { background: color-mix(in srgb, #000 10%, transparent); }
3340
+ .close:active { transform: scale(.94); }
3341
+ .close:focus-visible {
3342
+ outline: none;
3343
+ box-shadow: 0 0 0 3px color-mix(in srgb, #fff 60%, transparent);
3344
+ }
3345
+
3346
+ /* Variants — keep parity with your button palette */
3347
+ .toast.success { --_bg: var(--sl-color-success-600, #2f9e44); --_fg: #fff; }
3348
+ .toast.info { --_bg: var(--sl-color-info-600, #0b7285); --_fg: #fff; }
3349
+ .toast.warning { --_bg: var(--sl-color-warning-600, #f08c00); --_fg: #212529; }
3350
+ .toast.danger { --_bg: var(--sl-color-danger-600, #c92a2a); --_fg: #fff; }
3351
+ .toast.primary { --_bg: var(--sl-color-primary-600, hsl(200.4 98% 39.4%)); --_fg: #fff; }
3352
+ .toast.neutral {
3353
+ --_bg: var(--sl-color-neutral-50, hsl(0 0% 97.5%));
3354
+ --_fg: var(--sl-color-neutral-900, hsl(240 5.9% 10%));
3355
+ --_border: var(--sl-color-neutral-300, #d1d5db);
3356
+ }
3357
+
3358
+ /* Mobile fine-tuning: give a bit more padding */
3359
+ @media (max-width: 600px) {
3360
+ .toast { padding: 12px; }
3361
+ }
3362
+ `;
3363
+ st([
3364
+ x({ type: String })
3365
+ ], qe.prototype, "message", 2);
3366
+ st([
3367
+ x({ type: String })
3368
+ ], qe.prototype, "variant", 2);
3369
+ st([
3370
+ x({ type: Number })
3371
+ ], qe.prototype, "duration", 2);
3372
+ st([
3373
+ x({ type: Boolean })
3374
+ ], qe.prototype, "closeable", 2);
3375
+ st([
3376
+ x({ type: String })
3377
+ ], qe.prototype, "icon", 2);
3378
+ st([
3379
+ x({ type: String })
3380
+ ], qe.prototype, "ariaLive", 2);
3381
+ qe = st([
3382
+ K("cb-toast")
3383
+ ], qe);
3162
3384
  function Q(a) {
3163
3385
  return a != null && typeof a == "object" && a["@@functional/placeholder"] === !0;
3164
3386
  }
@@ -3185,7 +3407,7 @@ function Ze(a) {
3185
3407
  }
3186
3408
  };
3187
3409
  }
3188
- function vs(a) {
3410
+ function Ss(a) {
3189
3411
  return function e(t, i, s) {
3190
3412
  switch (arguments.length) {
3191
3413
  case 0:
@@ -3219,45 +3441,45 @@ function vs(a) {
3219
3441
  }
3220
3442
  };
3221
3443
  }
3222
- const ws = Number.isInteger || function(e) {
3444
+ const Cs = Number.isInteger || function(e) {
3223
3445
  return e << 0 === e;
3224
3446
  };
3225
- function xs(a, e) {
3447
+ function As(a, e) {
3226
3448
  var t = a < 0 ? e.length + a : a;
3227
3449
  return e[t];
3228
3450
  }
3229
- var ks = /* @__PURE__ */ Ze(function(e, t) {
3451
+ var Ms = /* @__PURE__ */ Ze(function(e, t) {
3230
3452
  return t == null || t !== t ? e : t;
3231
3453
  });
3232
- function _s(a, e) {
3454
+ function Ts(a, e) {
3233
3455
  for (var t = e, i = 0; i < a.length; i += 1) {
3234
3456
  if (t == null)
3235
3457
  return;
3236
3458
  var s = a[i];
3237
- ws(s) ? t = xs(s, t) : t = t[s];
3459
+ Cs(s) ? t = As(s, t) : t = t[s];
3238
3460
  }
3239
3461
  return t;
3240
3462
  }
3241
- var Nt = /* @__PURE__ */ vs(function(e, t, i) {
3242
- return ks(e, _s(t, i));
3463
+ var Nt = /* @__PURE__ */ Ss(function(e, t, i) {
3464
+ return Ms(e, Ts(t, i));
3243
3465
  });
3244
- const Ss = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
3245
- var Cs = Object.defineProperty, B = (a, e, t, i) => {
3466
+ const Is = "fffbd0c40003a861a6f64deb05ce8fbd1dc1ee6979000bf3230f3195138b950cbe3649439256307747d31c26065d09cfae70d799f0a043c6a90008c0101188082314680d008619c9079b61dc806a921a220095277a60d4131e44143d53814e10f4d06ba6491eb478900a8d59016632a23e0fa358875c770146cc650c1c499dcb9b0965d7500106c321427219428febbdafb2b5d76979a75ae40018d025f96f71bad4b0257666051808e5b74c34bf2db9660bb0e24b2a35886616f617013a24104242304600910b1130dc7b4e81750bb1216e880432ac0d75b0a2a1834f45e8e9a279a9c6c22cc9a7e3ac01cc5335e8c0d97180c960bad7998ce9ac025a2f1a0c888e02c46508045a96a20a60c91980100828a917425f96ddc64bc2ea19146c50b00bde68319005d85d10e462314ae197f0b48c74bfe986ced9dac3a9bbfad7e8f7ac2a525253c6e36cad4dd7c20e2ec4842dba61cbf30f0f7d628635005a66e63ec63560f22a48c694034a695617e603c12c05077310c0923018053379a48d1e921e409b28546c46619d8fa6c9b019ea20762d318e34c6291699d98662a61861204fda2a7933d57c1d023391f8605262a1598449c1ca332e084cb25a3198ac94666361b99f05c67c1aba0151b18d456ec8e0b4c667924153ba632409114cc587c7867ca8c047dcd7a834bc8d2a033a141df48ab82a803bd1a8651a215e356c6161b062114cb841dd89589b05f0d10ad255c4d70d8ad245e4abcd6b33fca8d6af5cc3db8d9244511ab2206a56c885690ad12cc1ba16308528d539daa40b22baf35eb61a7044a988132e926b754d82ea8ca85199ad5c42c0d62d35eb8d7301d56ef5b26c451748198c2a22c319b24ab67a246b186c8af0d54354c0957c342d9a2a4d7b3245e585c4d7254e107501450bb46abbfa38b2331996d9bae08953352c48af43d5c7b08b6572a44e0b11775fd8cbb2b0b0343230c6c5add2ca5ac8d549765977ff78e59659ca49adde749c6789409753bcff43d1a8d46a532da5a5a5a5a5a5a5a6a6a6a6a6a6a6a6a6ab671c71c71c6ae4141414140a0a0a0a0c2b06e0b039c1829859998b165991a5d2aa598e0a714183727471921e5721a1037a9c2fb7a1b9c0dc99c6ab19b821219de39219b82a521908908987d2ab1aab194159219cb31211fffbd2c42383f4bda0d20ffba7c624b3dd01eee938b82f149f14b82951c14d290908c90d294c90a598b0948572ce584a434a54a52b4a42c3829592199219219a52921160908d295294b1c79b70dc9b72dc9b70dc15b71e6dc37058e3cdb8e34db9e3cadb82c37056dc95f1e7c6f1e58e3cadb8f2c4845721f96242f2c485e7214865721f962422c484721c845890cb121f9c872116242f2b908e4390bfcae432b908ae43f390e432c486721c85e5890cae432b90ce42908b121f9c8721962432c484721c865890ce4290bcae432b90bcae43390a432c485e58908e4290bcb121f95c86721c865890cae432b90cae42ff390e422b90cae422b90fcb121795c865721795c86721487e721c87e58908ae422b90bcb12195c845721796242f2c48658908ae43ff390e43fff390e422c4865890cb121ff9c872196243f2b90bcae42fff2c48458908b12116243f2b90ffcae43fff2c485e5890bfffcae422c485fe5721796243f2b90bfcae42ffff2b90ffcae432c48460a40a6618626a61ce3d466883d6645657458106350e2d6321a39532150c231a421532413d3399952b690e8430cc534d4ad0638ad993418742c24072f7385897cae5e348120397e5e348521397e5e2b734cd8364b06c160d93364d82c0ea6838ea63a0e863a8e9e581d4ca0283cd5d284b050795942650143e6e1c1b87058706e5c95b9370e4dcb92c382b706e1c15d22c522ba7e574cae9f9d2a458a474a995d32c52ff2ba4574cb148b14bfcb14cb148ae99629795d22c532c533a74cae995d2f3a74ce9533a74cb148e9d2f3a74ce9d22ba474e99d2a458a674a99d3a65748ae9f9d2a474a91629962995d23a748e9522c53f3a74bce9d3f2ba65748afa9f5ea57d4b1d3cafa963a163a7963a163a1f5ebfe57d3fcfa742bea7d7a15f42bea7d7a1f5e9e7d3af963a9f4ea57d4fa752c74f2c75f2c743ebd3fcafaf963a7ff963a79f4e9fe57d7ce9d22c532ba474a91d3a674a97962996297f9d2a658a458a658a458a4574cae916299d2a474a995d22c522c533a54bcae915d32c522c52f3a548ae99629795d3f30c6831b320f483c329501f8331a98f233a001f9342646273295483d326307f03331098c307e52ae3189883d3186475630e704da30e744db320f0627329501f831040411307e4fffbd2c42383f3fdacd40ff6b68668b3dc81eeed7841031044a54318984112a8c4e641e83f26208082260fc0822560fc183f041e183f00fc183f20fc983f20fc983f20fc95896e60bf863460bf86365805f8c17e0c68ac31b2b5f8f1bc68d7fc68d7f5fcaf1b35f97e35f97e2c2fc585fcb0bf9e36bf9617e2b5f8d7f5f8ad7f2c2fc6bfafe56bf9e34bf79617f3c6f1bf2b5fcb0bf9afcbf95afc585f8d7e5fcb0bf611fc419f8f08fe7833f1e0cfcf847f308fe7833f1f067e3c19f9067e308fe7c23f8c23f9067e40ff3f8067e20cfc047f00cfc611fc81fe3f207f9fc033f211fcc0ff1f903fc7e423f803fcfe423f903fcfe00ff3f8833f011fc847f211fc047f303fc7e211fc01fe3f211fc033f011fc7067e40ff3f908fe023f808fe00ff1f903fcfe019f803fc7e419f808fe019f9067e40ff1f9067e211fc01fe3f3c19f8e0cfcc23f9067e40ff3f8067e023f808fe60cfcc19f8c19f9847f211fc047f011fc033f1067e60cfcf833f25808830881d435e33e33263062346d46d31d427b31d41d4346d3c633201d5308827a308846d351212e32267a39ea7a34b92f3221d537552f32252e2b4b8dd5c80c88c84e7a4bcb0ea9ba9e315a5e697baa644cf473da5e58220c894bcb0449a5e449612ff2c110584bcb0447991044191244160892b4bfcc88224ac882b2a4d0a114ca8114c44114ac442c089e562279588856c458633e362f3e362362623e3e3f2be23e3e32b633e263f2b88fffff2c44f95c47f96227ce2224e2620b11071310713105889389882c44f95c41c44496220ae23cae20e2627cb1127111257105889f2c449c4c416220ae24e2224e2620ae24b1105713e588838988389892c44f9c44416224e2220ae20e2223cae27cae23ce2220e2620b1105711e5712571271111e57127131257127111271313fe713125712588938988388892c4479c4c41c44416224ae24e2220ae20e2620b11058882c44ffff95c4795c4ff95c415c416220ae20ae20b11271310571271313e58882c44f95c49c4c4ff95c416224e2627fce2224e2220e2220ae20b111e57107111071111fe5888ff389882c03a18838cc99ca16b996b8501ad09db99db86c161e34cb0c730c6641d4c664f7cc570e54c570570cb08734d2b4b08ac360cb5c284c86c574c57428fffbd2c41e03f239a2e40f7370c65fb39cc1eeed980c364364c360730c364edcc360364db2d936c734f9bcd3e6b60db0d82c734db3cd36cb60adb27068399d732588319d20e7068399d20de5850f9d75405850796140575c3535335252353c32c611e1291a9e11614cd4d4cf0d4cf0948e8684e8684b14074140574058a12c509d0d09d0d09d0509d0501d050796363fcaf64af67ffcb1b257b1fe58d8f2b74375742b742c3a9baba15ba161d0dd1d4add0b0e9e6eaea56ea56ea5874374752c5096280e8680b14057405743e57407414058a12ba12ba02c50f96280b141e58a12ba12c5096280add0dd1d0dd1d0dd5d3cb0ea6eaea6e8ea58752b7537574374742b74374752b752c3a95ba15ba9baba1ba3a161d0dd1d4b0ea58742c3a7ffff96367ffffffffffffffffffffffcb0e856ebe5874f2c3a961d4dd1d7fcadd4b0e9e6e8ea58752b752c3af961d4add3cb0e86e8ebfe6e8ea587537474f2c3a161d7cdd5d4dd1d0dd5d4add3cc388588c9e8220c4b91b4c989388c58898cc5b4740c2a48c8c58c38ccb8898cc9ec220cc84c80c4b84bcc224754d4491b4c62988c63588ce2b88d2e224d2e224b0449f8f3d1a5c9719104499124415a5e6971106973aa58750d2e220d2e220d898cf8d8cd8d8cd898cd8d88ad8cd898cd8988b1c7e586336363f2c711b1311b1319618cd8d8cb0c6586236262363632c319618ccb8b8cbcbcb05c565c582e32e2e32f2f32f2e32f2f32f2f32f2f2c1796220ae24ae20b113e71313fe71111e5888388892b882c449b1b115b11b1311b13116188d898fcb0c66c6c45862363632b632b63ff2c319b1b1796224ae24b111e711125711e5713e5713e58882b882c441c4c4f9c4c4ff9c4c4f9c44495c49c4c416224ae24e2224e2627fcae20b1105711e5711fe7111071111fe57125713e57106c6c46c6c45863f2c3195b115b19b131796188ad8bcd8988b0c45862363632c319b1b19b131f9618bcad8fcd898cad8bcb112571257125888f2c44ff95c495c4ff95c47f96220e2624b11258882c441c444ffff96224b112571257105711e588838989f2c44d3045045310b0a932632e232630623562062316226236620e32c1b198850229885919194a88598220e81fc431160623589e23588622b18cde2988de3788c63588fefffbd2c42083f3559ee80f774bc682b4dcc1eee9782388c6278cb0b1161623388e32b588ac62398d633188632c0c46318c66319c46710c66310c66b1ac66318c46310c46310c46710c6563118c431f98c63199c63118c631960e3f318862f2c0c7e6310c45818cb031960622bc678f1163196319e3c658c478b1163179e2c658c65788f1623c58cb188f1622bc678b115e33c788f1623c58caf195e32bc5e71221c5885710e24438914ae29c58a71621c48a588a5714b110e2c438910e245f38b13ce2442b8a71621c58a5889e5714ae295c42c442b8a5713cae29c48858885714b110e24538910af115e22bc658c478b17f95e33c588af1ff9e2c678b19e2c678f1163179e2c478b1ff95e3f2c62f3c78fcb18bcaf196317f95e22bc7e5788f163f2c632bc5fe58c678f195e22c62f3c78bfcaf1163196317f95e32c622c633c58caf11e3c4578caf1f95e32c633c78bfcf1622c632c633c588b188af19e3c5e58c658c678f11e3c678f17ff96319829829986109a99a6b1319ef03a19ef0cc99150cc195d8cc99a683a18730f598ca89e99a615d995d2819fbecc9d755d95c54698a626980d26559dc71520c68357471520c6cc33075d8ea63a0ea68345468320e63a0e875d20c683a0c63aa0fe5841cd98664b0831a0e8318ea3a95a0e563a160752c20e63a8e86838e858418b03a160753148523309353148c22b14cb02918a42918a629160522b14cc5314cfaf52bea7d7a163a963a1f4ebe7d7a95f53ebd4faf43ebd0afa795f53ebd4afa963a1f5e87d3a963a15f43e9d0afa79f4e858e858e858ea57d0afa963a9f4ea7d7a9f4ea7d3a9f4e857d0afaff9f4e9fe7d3af95f52be858e857d4faf53ebd0faf53ebd4afa1f5e857d4b1d0afa9f5ea7d3a7963a15f43e9d0faf52be87d3a163a163af95f52be858ea57d4faf5f2bea58ebe58e87d7a15f42c742bea58ebe57d7ffcfaf52be9e7d7af95f5ffff2c75ff2be857d7ffcb1d0faf52c742c742c753e9d4afa95f52bea57d3cb1d4afa95f52c742bea57d0afaff963a95f43e9d0afa7f95f53ebd7fcfa753ebd3cafa15f42c743ebd4afaf95f5f2c752be857d7fcb1d5508000160382b0e0d954f0d94654deb7acc397acce7d10dea4f0d4b2c4cb02c4d311a0ad3134c0aa34c4ef33b8ab3059193460b03fffbd2c41a01f0c5a2f0aeeb34c619359dc1dde6682c04b32403834f43832403932443930e03932403932413c3240392c070648072561c9870489a7a48161c1b972587258726e5c9b87265e51ca2c65cb9cb2e65fe1cb94565ce59634a94ad21a44a584869529a4485694ad216129a54865cb1972e72e51962c65cb1972c565cb05ccbcb32e5ccb162b2c56b79acb1acb1aeb9acb1aeb9acb1aeb15ac6bae56b15ac56b15ca72485894e590e490b1295ca5894ae52b90ae539252c49e724a5897ce494b121cb2f9cb21cb29cb21c9215ca5890e497ce597cae42c4a57215c85894ae42b97cf9e4f9e3cb1c15f1e57c796393e38ff2be0f9e7caf92be0f8e4af92be0b1cff96392be0f9e0b1c15f058e0b1c796382c71e7cf3e7c7257c95f258e4b1c95f1e58e0af92be4b1c1639f2be7ce493cb127f9c9215c9e5721c9215cbfe72ca5893fcb1279c921cb29cb2f9cb29cb21cb29cb295c85890ae42b90ae42b93cb12795c857298701c1609034f2413901eb3094683091733344d033e0d132acaa34c4ee30957434c1313244382b398d3c4f0ace730e13d34f53d37ac3937ac3830e4382c07261c870648a786ca27a580e4ce244e44e4ace4ce0e4ce240ce240b072723226727058382b90339392b382b382c1c99c1c9c89c960e0ce4e0ce4e0b07067273e6727258392b38ff2c1c19c1c960e4b070670705838f2c1c19c1c99c9c19c1c159c159c960e4ace3ce44e0ce4e3fcce0e0b07058382b38339382b3933839396439252c4872ca72ca72ca57295c872485890ae53964f3965f39242c4be58e4af92be0b1cf96383e783e383e382c727c707cf07c727c73e58e0b1cf9f1c15f058e4f9e0b1c16382c727c7257c95f07cf27c707c727cf257c9f3c95f258e3caf83e792c73e58e0b1cf96392be0af92c7057c9f1cff95f058e0b1c16382be4f8e3ffcaf82be4b1c795f057c16383e392be0af82be4af82c71e57c796393e392be4f9e7fcaf9f2be4b1c795f3fe7c7258e7caf93e392be0b1c79f3cf95f257cf95f1fe57c79639ffff2c70a0800079603ecd71612cb09de71381f66aac420687e4226650cdc6176680617668061769dc58268332932930fb211343e211355621032115563328328343f0fa30fb0fb33280fb321021032112102b43e32112112b329fffbd2c42b01f3f1acdeaf777286a1355cc1eeecf82c1f467d1f5e7084207081f456c895977e65db2265d32265db207081f4583e8cfb3efccfa3e8b07d960fa33ecfb3fbfa2bfb2bfa3fbfa3fafa3fafb3fafb3fafb2bfa3fbfb3fafb3fafa2c7d963efcafe8fefe8b1f5e58fb3fafbf2c5d1dddd9dd5d1dddd162ecaeecb1747777477574577458ba3bbbb3bbbb2c5dff963ebfcb1f657f5e57f457f5e57f5e58fbfff3fafbf2bfa2bfa3fafaf3fafbff2bfbffff2c7d963ecfefe8fefeffffcb177e577658bb2c5d7962e8eeeebfcb17458bb2c5d1dd5d962ecaeecaeecb176577458ba2bbb2c5dff95dd15dd95dd1dddd7f95dd162e8aee8b17658ba3babb3baba3babb3baba3baba2bbb2bba2bba2c5d9dd5d15dd1dddd162e8eeee8b177e7f5f7fe58fa2bfa2bfbff3fafaf2bfbfff2bfa2c7d9fd7d7963ecb1f47f5f658fb2c7d163ecafebfcfefe8afebfffcfefecb1f5e57f457f7e58faff3fbfaf30e326333624e333632e231d546d312e1d530a8233323210b36ac7a31ec7a2c4f46eaba86318c46f18c67719c47315c6631ac46f19c658754c89224dd4c84f204bcc894bcd2f4bcd2f224e7a4b8ad2f34b8893220882c11056441a5e44191297160882c112644113e711125712588938989389893898838889f38889f388882b8838989f2b882c447f9618cb0c46c4c658633626336262363622b632b633636236263362622c319b1b19b1b19b1b195b179b131f9b1311b1311b17196188ad8cd8f88b1c656c65862363622c3195b115b196188d8d88ad8fcd898cad8cb0c45862363622c3195c415c495c416227ffcb11258892b8838989389892c441c4c416224ae20ae23ffce2620d8d8cad88b0c656c456c658632c31f95b19618cad88b0c5e6c4c66c4c7e5863362632c319b1b1f95b11b1319618cd8d88b11058882b892c4416224e2220b113e5889ffff2c4479c44415c415c4ff96224e2620b11257125710713125712571057105713e58892b88f38988388892c441c4c4796224b111e58882b882c44f95c416227ce2624b1105711fe58882b882c44795c4ff96223cae20ae23ffcae26f331e433b76dc30b95e3a3df73449133dd72835791335782f30bd1236a87a37d8c730b8c630bc7a331c2e357df730b82f31ec7a30bc2f30b87b344daa3fffbd2c41e83f005a0ee0eeb3706ce341c42bdd0003187a31e8c730b82e2b44ccc60b8cc61e8c7a31cdaa1e8b03d960c731ecc731ec7a30bc2f2b1e8c2e1e8b03d1ae5c6bbd16171ae5e6bbd15ae35cb8d72e2b5e7e97161795ae35ebcd7af2b5c6b979af5c6b97161795ae2c2f35cbffcd7ae2b5c56b8b0bcad715af2c2f35eb8d7af35ebcd72f35cbcd7ae35ebcb0b8b0bcb0b8ad79ae5e585e56bcb0b8ad79ae5e56bfcad796179ae5c585e6bbdff9af5c6b971af5c6bd7962e2bb8eebceeb8aeff2bbcaef2bbcb1795de58b8eebceeb8efbcaeffff2bbceeb8efbcaeef2bbbcaee3bef3beeffff2bb8b171df7962f2c5c58bfcaeff3bee3baeff3baf2bbceebcb171df795dc775c58bbcb17962ef2c5c77de58b8aef3bae3bae2bbcaee3bae3baf3baf3baf3bee2c5e77dde58bcaefffff2bbffcaef2bbfcaeef2c5e577ff9df7962f2bbfcaeef2c5de577162ef2bbcb17fff95de577960360c731e34da20e50cb58e4cd688b08d2b0734e5d9e30c730360b03306576576658639a61ae76c639a76c6b40958561b2695a76c561b0639a5847db58458360adcd2c58666c9b07615846e6d8658364dcc730dcc730cd8730acd83364d8f3361cc2c1b256e6959b258360acd92c1b1fe66c9b06e69b066c1b258364c741d4c751d0ad0631d47431d074f2c0ea63a8ea63a8e8563a160d83360d92b360acd82c1b2566cf99b06c99b26cf99b06c99b06c98e83a1607431d10631d4742b1d7cc751d0c751d0c741d3cac752b1d0ac752b1d0ac752c20e63a0ebe63a0e8563a18ea3a98e83a158e8563a958e863a8ea581d4b03a958e863a8ea63a8ea65094058284aca0f2b284ca1287fcca1287caca1ff3280a13284a1f2b280ca0280ca0280b0501594058280aca02c1405650960a02b284ca0280ca0280b050160a1f3280a03280a03280a1ff3284a1f2c14265014258284aca1ff3284a1fffff2c1b3e58363fffffffffffffffcacd8ff2c1425650194050799425095942565079940509594258284aca12b283caca13284a0ff2b284b050160a1f2c1405650194250960a0f2b284aca12b283cca1287fcaca12b284b050da03028040204010140a02010080300640ae302500803053c24f30d7c2a930ca42cf31c4921a300f0001300c4005305cc04f303cc03e34620fffbd2c41c003485d91db9ff00062e346243bfd000a9035bccab50300ac600d80006071010c603180c6611a82666027812018002a546032072608a05e690660a6330a28160074dc46f0c033306302b302a06234f02603428582329635f2eb1698880854e0c110038c168038c094064c008008d454d7cc660a5cca5c1d4c4f03899c459a1b8ef3180e80e98018048b009ba542604818c60701ba620e09e60de09e0d024120006cca729e4ca5b2baf182ea7acba030220082203b14028160104972b0109332164c5a76aafeb228dc6dd359e5dba0a2ff2c00c182d01c182d03d180c00c980c801c4eebff1779ae3fb76efa7ba8ca8927c39707a7a27c79803803958039803803980380398030031583a983a04c1583a45e2f14a771593bcf4b7e24f32e789492ebff72f45ee5ebc61540c4603207e180afe17007f53b0c00e4c44c60c00c8c50fd0fffd050d050d1c65d6a2ffffa251aa27c567d0fffffa219580133ba3f75e3292edc1863a4ea46dd474fffffffffffffffffffffffffffffffd4f980d0090981280b6984e00481848a1621869a25d18f32518198f263d19bd283d1a7d2d1b1b0fcf639bcf8c85987b8ff61db16c151d0749fb9cd72df399c764769881e1d19834809d9862389858ce9c5ca99b38cc9a0c149986cd1bcf161d83ce1ea3a91bc8f1997c611a16ce1bcaf21c32d31ade9b19160f191c9a9a68b599fa7d1986450b14e60e03a6271126471166450aa62a03a60e03a60e8a464698867d9f867f99062a83660d0403a0e98300e98a029983e0d2439810069810029810069818068602a8ab8ab3a01500a912a95c5987095b948b016d5fdb3ff4b0ee54255006ed19788c17050c2d0b8c49128c320c41c18a6f1728b945ca4e29eeef1fe56c8a800980801980402d79dc7a4a01980002980804980c03980c02df30180530902530880542c301402309446311448311c4830982528014c03000c23098c05008c05022b592500e2b477b0ffcea5d66d967ffffffff94b20c5dcb0cc4989356a6d779ddeb2ad6b755f57765b2996dda596d3bf38d6869da96d9d53434ef4ba1a7fa3384aa5d6bf2ab19a6ea300c013730b805f33126021130cb4230301a424a304f4122302905f9309b01e5308bc0253115c16431c9c4aa319809b1348b010e360fddfffbd2c41b83e62974fe0ff1f1056daadc81ff69e01033cce9a13e9998033720c8e03095404e3043c257309e00bd30074315306a01b93964c434b07666b9b5a486915398b4c4670561abd5a6ab341a9c58670859b40ea6965b8aa08c26b43291e438b21c5630e828906a18255402a4302824c4020012f82a2415279830b466f22268084188a8850f8238c0276895daa096a1e4406a530a427eb58491f081545ea7a311caba0d9712c06c2245b452039921093ca2624399cb1b2c29eb96a1f6c6b339233293c2e2af1b85c542519395617227c748270778c241b5976196923c2e27c2ba5fc4c49b6b75f582ca7ea3735ffffe0ab665746b4266378e2dfd7fffffffffce36c31231de4bfd191ff117fb8c19504f0c09013dcc8583304ca622984cb0e2c3cd17e039c8a86738190f763626173e280ca4e36eeb34d7401280e67a692ccc6a3708d58face8f60fa0b0e9df6268c2ee3714d7e9284d281eb4c64d280d7ecbbcac398c654a60c39c654c650e70d285280c650650cbbc650b032a63283286532530632a1ce61cc32a561cc61ce32863281ce612012061221206072070607207058038f2b03930390903d094d26834fa4ad216349a44a7a741e9d06952f95a42b485694b090ad2ff9a548695214492c25f34893cd3a62aa434a93cad29a548584869529e8485694d2a434890d22534a94b090b094d2242c2534a90d3252b4a5690b090d2a52b4a691215a534890d224f372e7fcb0e0b0e7ffcadc161c7fff95b92b73fffe56e3cadc7e5dffff372e3ffcb0e7cb0e3ffcb0e7fffcadc161cf95b82c382c382b70587058726e5c95b9ff370e3cdcb8f2b7058725873dff2c38ef9b871fd3a21dfffff65f302a03bf3183c6d2327a41d139209453312084833623919f370206d535458e2633ec4e26388c9fe23a48b6a13da898f333712b75337150153ed089223371145331208dc430be454831cd84203042842030be442035b23231156d2c15065408a685216685088685216568515a14685a1665408856541888549950229a1622959715bd15bd95bd9973d961eccbcb8cbcbcea510b08858452ba8345453444434444345a9345452c2296114d1114ad14d1110d1514d1110ad10d1514b08a575258442c549a2541a2221a2a29a22296110d1114b08868888584434fffbd2c46c83f3bd56de0ff77085de2a1ac1fe6e4054534445344452c2215a21a22215a29a22279a2221a2229d4a296110ad10b08a68a8a5844f345442ba82c2296113cd1110b08a568a68a8be58442b45f345452c22f9a2229a2a2f9a2a296110d1114d1514d1514b0886888a58442b44f345442b442c229a2a296117fcb089e68a8a5844f2b442b453454434545345443a844345453454434444344a834445345452b443a94534444344452c221a2221a25416114d1510ad10d1514b08868889fe568be68888568868b5256886888a568a68889fbf9dbbf45c58018cc0620d8cc4e31388c3620d88c5630d8ccde23388e1e2878ce6e33d88d1e32788d3e24f88c660a18cdae32788c9e2358cd7625d8ce1e2358cef62e58cd0e2438cc6e2358cd762438cc6e33588c9e31b8cc3620d8cc162178cb00b1182c60b1182c40b11f8dc456e33f1388b1e3371b88ad8cf8b88f8f8caf88d8f88f8d88b0c65862363e32c719b13195f196388f8d8fcf8988b1c65863363632c3195f115b196188ad88d898bcd8d88d898cb0c458e32be32c3195f19b1b19b1b19618cd898cb0c47c4c456c66c6c65862f36362363632c3115b115b115f11b1b19b1b115b11b1319618cd8d8cd8d88ad8cd898cad8cd8d88d8d88a310b0c46c7c66c4c456c66c6c47c6c66c6c7e6c6c458632b63362622b633636336363363e2f363623626336363ffd15b1f9558cb0c47c4c66c6c458632c31ff9b1b17f95b11b1b17f9618fcb0c458622b632c319b131f9b1b115b115b17ffff9b13196188d8988d8d88ad8ffcad8bffcb0c7fffa363622b622b62fecf95ff2aaf2c084258217cce061080c9c9655cd3ae3270dd952720e33eed24e068381cc4203dc0d957381cce0781a4e33eb494f70aed24cf704eb8cf701080cf702cc8c6f45a0cc2b7217cc9c81bd0c58b0ad8c58a0adcb02109829a2101829815b188400a61d6ca69a9b5b9554c35314c35314d2b3eccfa3e8cfa840e103ecb07d99f47d19f67d962102b3eccfa3e8cfb3ecacfa33e8fa2c1f6582efccba2e8b05d960ba32e8ba2b2e8acba32ecbb2b2ecb05d9597665d17665d177e582ecb05d19745d15974582e8cbb2e8acbbf32208832252f32208932252f32208932248834b88832252e2c11064411064491264425e64411206bfffbd2c47903eab9a2d20ff6b3471eaa5801ff5a38ac804576115d84577062ee0c5d81ae97606ba5d8457581ae976115d01ae9740c5d40df4fb037d3ec22fa063ef08bec22fb063e818fb063e818fae06fb7d01bedf606fa7d845f406fb7df06533c194cfae11a6ffffc234d81d369947ffffffffffff06110c1f907e0c1f81044d4c44abce14c8534d8f25314c1f820f0f62f7cd8ce8395f0d2af6c24df37e970f2038d90c413a6a0e14fc808e9a763d4f204c80ce3642950ce821038ce801044c4114abcc40e1898c4101040c1f91040d89f1acf1a9898c7e5898d89c7e4ae0f0f1aa0f0e0f5044ae0f0e0f5044d0420f0c7e5040c7e07e4b0823e63f282056c4e5541134101f834111f831f91f82b1f934114102b1f834114112aa08941f898fc2089607e4ac7e0d0407e7cc7e1044b03f05682056823e68203f0581f831f81f92c20818fc8fc98fc208f98fc0fc1a080fc98fc8fc95a0879607e4d0407e4c7e1040c7e47e4b03f263f03f0563f263f23f0563f0563f063f082063f03f063f03f063f23f263f23f0581f831f81f92c0fc1607e4b03f068223f263f23f268203f3e63f03f0584102c20898fc0fc019f93f00c3f2e113f2113f3033f27e0227e4187e4227e4227e4187e00e089f908c11061f9061f806410033f27e2067e0fc819f83f1819f93f0067e4fc830fc830fc419040187e3033f27e40cfc1f8061f9c227e00cfc9f9061f8061f8091f9033f27e4187e40cfc1f9033f27e2113f0067e2084187e2113f2113f00c823830fc830fc7f7061f8844fcaffffdc9d9fffffd75f317f31b37f117f34b7b29398c65434b665534da7572c30c9a6dbab1a6d12f1b2acc61b2ad949bf832a198d32a1b2a6629d947fe9b2a0bf98bf25b192f30c99ce12f989092f192f12f1612d8cc68c6cacc68cc6c5fccc685f8b06366636634663496e66362fc6bf2fc6bfe346bfafc6bf2fc6bf2fc585f8d20978ae5f3485202c4be690a406904bc5690f961213979212c24272f240690242569096121348521348521397d203481203485202c24258480ad203485212b484ad203485202c4bc56909a429095cbe5897cd21480d21484d21487cd20978e5f484d21480d20484ad203485202b480ad212c242569015a40690a40690a42690a4058484ad20ff348520348fffbd2c48183f27178ce0f76b545f6b61a01ee57205212c24258480ad213485212b480237e065f8237f81dfafc077fbf4237ec197e832fc0cbf832fc11bf611bf032fc11bf832fe0cbf832fc077fbfc237e065fc237fc197e03bfdf8237e832fe11bf01dfeff065f8237f832fd03bfdf8237e846fe11bf832fe11bf846ff065fa077ebf81dfefe0cbf832fdc0eff7f065f8197fc197f065fc237e08dfe0cbf60cbffffc197e2c0bf18bf0bf9bf859418bfa5b9d9418d15d941a6da6d9a6d44a18bf8bf1598d1961ad0986cad01890a6d9b0c9ce992f3ab9596198e69619a5606c18bf18d961954cc6d2dcb096c62fe2fc696c63462fe2fe62fe96e62fc96e696c2fc66342fe5663466342fe61b039865861b0561b261b239a63981b2581cc31201202b1202b1202c09018908909589015890992f0901f35b0586c1b65b26d86c9b61b06d86c95b63cadb26d96c1d72ba6a1ae95a87cd40a13aea80eb8a12b501a854275d5095a84d42a12b6c9b61b056d82b6c161b06d96c15f33cdb2d836c364db0d92b6c9b65b056d8390484e4120390c80ae427209095c83fcb120390c80b120390484e4121f2b901c86425890162405721390480e41202b90f95c80ae407209015c80ae405890f962425720390484ae40720901c86405720390c860cbf846ff846fe11bf846ff832fc11bfc237fc197e846ff81dfefe11bf832ff832fdc237e03bfdfbc197ef846fe11bf832fffc237fff832ff81dfefdfffff065fff08dfa0cbf2af2c1611a561619ad086c1bc6256986c0e698e61db186c2d0991503a991528199ca96bf995d8cc183a95d98cc883959ca996b0ae18500ae18ae8ae18ae10d99ca05098ae0ae158e6186c06c996186c186c06c186c86c1586c98e686c186c86c986c1611d71406a1501a86b858501a82ba56a02b501a854258509d71405850161426a0509a8543e6d86c161b256d836c363cb0d8ff2c363cace9e5883f99d0ea583a959d0cea7433a1d4cea7533a1d0ad43e585095a84d40a12c280b0a02b5095a83cad41e56a12c280d42a1350280d42a0350283cb0a0350a80b0a0350280d40a02c284b0a0350a87cd42a02c284b0a12b3a19d0ea7073a99d0e8583a99d0ea6743af99d4e86753a99d0ea567533a1d3cce8752b3a160e86743a160e9e6743ac1fffbd0c49001aae194d80f72b58554b59a95eed5a08d808b600db0d9c22d906367831b1c22d8c22d8fc18d808b620c6cf063660c6cf036cb66116c01b65b2116c7fff08b67831b3ffffc18d8720624024262422406caa96c696efe06634fe0696e2fe584b6f32c269733b61cd32c30d831cc2c2375639c339c120339d4da2bb08ec2364dcd360e5e480e5f978f9c97cd2197cb0901f3a909f39ce15cbc6904be7cef386904be572f1cbc909cbc909cbe90961202c24258480d21480232106484192108c80192008c800e4320064840db1cc036c36418d981b65b2116c7845b006d86c831b20c6c045b0116c81b65b2116c01f31b00c6c0339a0c6ce0c90046401190e0720900464184642119001c86400c6c831b2116c831b00ce6045b006d96c01b65b2116c81b61b006d86c831b006d86c031b206d86c81b65b006d96c045b00c6cc0db0d881b65b006d96c01b61b20c6c845b006d86cc0db2d90636606d86c031b308b6022d8036c363f06487fc1921846400c90c192084643e0c907c1921ff064842321fc2320c1921c2320e0c9083241c1920e1190ff0648383241ffe1190552b188b0719f7f4a1eb57c15bc66b19c46e821474a4645719988ab69bc4b11ac4311dc4b11cc47198c4b198882219502296045338ce33589622b388d62188c6338cc6318cc63588b071195222995222195022160a832a04532a0452b110ac4432a0442c08862208a78b1f95e23c58fcf1633c78bcae2162215c42c442b8a588a588be71221c58a716295c538b14b110b114e2442b8be5714e2c538b10e24538b10ae21c48871227f9c58a7162162216221c5885888712216229af5de585e6b9715ae2c2e35cbcd72e2c2e2c2f3f4b8b0b8ad715ae2c2e2b5e6bd715c42b885710b114ae29c48a588a588a58887122ff95c42c442c45f2b89e5710e2442b8bc238e11c611c5e11c5f08e3f83310331ffff8471047160cc708e3c198c238c19881988238c198e0cc7833103318471e0cc508e3f8331c0f1e3e0cc611c7847103314198e0cc5066308e3e0cc41f2c1e6a5119a1af08bc29b0f2a7b986cca7b194d8c3c98dd06f719b1a90d9a4346c69a4366c619b1a47f1ef71b39b74ef71ef76f71a08e3598fce351a08a081bc6bc61f9a79a953cd4de33cd7cde31e34a79a8de37cdfffbd2c4d083a94daee40eea974694295845ff597a0d1c3634ad1c0e3ff630e3f91c0d1c11c0dba0d98cd9a9b0cd98d98dba0d98cd9cd9ccd9cd98b0dd3e566cfe66cc6ce586e9f36e9367362741136271f831f81f9f34101f82c20898fc8fc1a080fc1a088fc18fc8fc04638846380323884638c191c0231c4191c40e38c71064700647108c7003530a640d4c29903530a600d4c54d08a9803532a6418a600d4c54d03532a600d4c29981a98532075314cc22d980db3367831b3831b381b666cc0c6cc06d9db381b666cc06d9db3045b3845b381b666cc116ce0c6ce06d9db3c0e384708463804638e118e0118e0118e2071c63881c718e0118e3f08c70038e11c00e38c7108c7008b66036ccd9c0db3b67c18d9822d980db336608b6608b6708b67036ccd9818d9818d9c0db3b670636706366036ced9c0db3b6606366845b381b676cfc191c2071c238f08c71f846380323801c718e384638c191c3c82bb45762bd6a189200a0f3144ca433d6cc69c36b368403455f43b3455ab8137c0e4323674ca4235040d5636b2cd573290d4a32a9ee6553dc8df03144ca294533f88be230f8d3e330f8c7e333dc8a4333dcd9d332908a4332908a423144ca423144ca433290851231448513314494a231448f7233dcc5133290c5122c0a24587e3d95bf1960f8ccf8cf88b07c4583e32b3e22b3e333e23e333e37e333e23e333e33e32c1f199f19f1160f8ccf88f88cf8cf8ccf8cf8cb07c4567c6583e333e23e237e23e284e898328981d13a2611a240ca2611a2508d1281d12a260744a8981be27c6117c4117c606f8df101be27c60c7c407f89f181be37c606f8df101be37c6117c6117c5063e208be281be37c5063e3037c6f8a117c581be27c7831f181be27c5063e2ff81be37c5f831f1781be27c4117c6117c40c7c4117c406f8df1c18f880df13e2063e2063e208be308be2845f1c0df13e2063e2037c4f8b08be3037c4f8fc1944c2344ffe11a27ff06513e11a270aa27fff08d1303a2544bff06512f065128468980001f961a0f32f89be330f8cbe22b674cd4a3528ccf727c08d4a25288c923183cc9221838b0ce9194867b9997c67f118fc69f198fc63f19b07b071c914919b07c91963f88a1f1cdf88f8cef88f8f46d3baae7aacd386d39aae6a254867487486fffbd2c4f0002ff59cc10ffad486bcb35849ff59b3574846a24a26574866fc67c667c67c667c6fc6583e233e23e22b3e332f82f832f92f9360f60f32f92f92c17c7960be3ccbe183cb05f265f2c1e65f25f065f0c1c56c1c582f832f860e32f82f932f82f8035f0be40d7ce0f035f0be7062f8062f9062f808af981af95f2115f006f8df1c22f8822f880df1be3037c4f8818f8c0df13e208be2037c6f880df13e2037c4f8822f8c18f8c22f8c0df1be3037c4f8a117c6117c40c7c60c7c708be208be208be2063e3063e308be208be3063e38317c8457c40d7c2f808af808af808af9062f9035f0be422be018be00d7caf9062f98457c81af85f1035f0be422be206f8df1031f1845f1045f1831f1045f101be27c7831f1031f101be27c7037c4f8c29f1818f8e06f89f1831f101be27c7037c4f8822f8c0df1be3ffc1944e0ca25f065120651284689fc1944cde666d451e74c692cb86aed3354ea7b2cc5691998436ef2c2dbe749e0b946bc1af0868cdd2784d19c1de4b1aa9bad88cd958dd05853d0c4716ce4cd8c23fcdd6d2ec8cbb275b4cbb31728c3671ba0c3671ba0c3661ba0c36545ccc36445ccd1731ba0c6e90d98b03c619e6a79a98f183c616078b2c2335af2a0b96565d91c7fa38144701611c0d1c51c3cd1c51c4d1c11c4ae3fb9e568e1fe58471336636636e9366e959b3f99b31b3959b399b31b3959b399b31b30323840e384700647108c700647006470c231c4231c606d99b3c0db3b6608b67036ccd9c0db336606367036ccd9c18d9c0db3366036ccd9c22d9c19ba40db3367064710647008c708323840e38c7081c718e0071c23803238832388463881c718e20c8e00c8e308c7108c7106470038e31c00e38471038e11c00e38c71038e31c60c8e20c8e0071c23881c708e0118e0118e20c8e0118e108c700647108c70038e31c70647108c7108c7008c710647106471064710647108c710647181c708e30647008c70c231c00e3847006470038e31c3065cafc1972ff832e5ff846e5419e3613f1bffffe11f19ffc19e33c23e340cf2c13a66bc22f044e35599b1a90d1bf8cb549bad85d91af091aa938d5665d997666b549b1866c6ad5268ce233468cd233651785150bb22b172cd19b5e10cf343cd4ad6de33cd4f3533cd078c2aa78064efffbd2c4f003b1c9a8c00ffad4867d2b97c9ff5eba9a783a34f013c12a93a6513c0993a64e9993a49e09549d32bbb235cbbb32b5ca2c2e515ae595ae59a38c7f1a382381a38a381c7fa381a38a389611c4a238fcb08e2584702c47f1a38a381a382389a38a3895a389c7f47f79a38238960a64ca61530ca65534ca64a60d531534b053058298354d29932982992b29932982992b2992b4712c2389611c4d1c11c0ad1c0d1c51c0d1c11c4ad1c4d1c11c0d1c51c4b08e068e28e268e28e0568e0568e068e28e2584702c2389a3823895a389611c4d1c51c7cd1c11c4b08e3e568e0584712b4702b47034714712b5ca35cb5ca2b5cb2b5cb35ca5ca2b5ca2b5cb35ca5cb2b5cbff2b5ca2c2e59ae52e57f95ae5161728b0b9456b9656b94585cbf2b5ca2b5ca2b5ca2b5ca2b5cb2b5cb35ca5ca35cb5cb2b5cb2b5cbff35cb5cbff2aae56cb0b95fe56b95fecaba05d4123552674e3bad48a9d373031554e1127497febaf30f887e332f18e2831290966285e38c9662f1cc5622b8ccae51ce0cc394994ac60e30e385623158838d3158c90e3243c90e31588563312904a53090c2422b1290c3e21f88c7e20f8cc3e33f8cc3e32f88b0307958c1c617c8c1c56307187c41f19607e230f8c3e230f883e32b0f88b01219848625215848658090cb0121160243f3e3db92c71e586e0db96e0adb936e38e2c371e56dc1b72dc1b72dc79b70dc15f1a586e4b0dc95b7056a69a9aa69a9b5b9a9aa69a98a61a9aa61614c3ad94d3532b63adab735314d3532b636e5b836e1b8f2c3706dcb706dc37056dcf9b72dc15b70586e4adb92b6e0b0dc1b72dc9b72dc95b726dc370586e0adb92b6e0b0dc95b73e6dcb706dcb726dc373e6dcb70586e7cb0dc1b70dc9b72dc15b73e56dc1b72dc7961b82c37256dc79b70dc161b82b6e4adb8f2c370586e4adb92b6e4db96e4adb82b6e4adb82c370586e0b0dc95b726dcb70586e0db86e3cadb92c3726dcb726dcb726dc37056dc1b72dc961b936e5b9f2c3706dc37256dc7fffffff063e30bcc78d1e34c5cca4f0c5cb8d54de87b760cf3598c4e3555e08dd6c172cd6dd3cd4de8698c0db374868c4716cdcc5ca75b0c5cb1728d19a4668cd8c23fca1b1b323fd6a932ecd19a2c0b946bc1233462e5233a71fc8e271fe8e268e11fc68e2fffbd2c4f081f03160cc0ff6d7863fb5d7d5ff5a2a8e27e69e6be56f1a7e69e69e6f1af1a57e6bc2b78dff3471471347147034704703471470347147134704703470471347147134714712c2389a38c7f1611c0d1c51c4b11fc68e28e0584712c2389a382381ae52e51ae5ae51ae5ae59ae5ae5945cb9ae52e596172cd729728d729728b0b9456b95e157280772ae5846e5046e5c1972c19728237281972bc0ee5dcb832388463881c708e2118e0071c23801c708e0071c63801c708e2071c23801c718e0118e00c8e2071c23801c718e2071c23804638e11f1bc19e330af1bee0cf1bc23e3423e31a0cb940cb95c23728197281972b03b9772ab065cb08dcb065cb708dcb08dca581dcab940cb940772ae57d5fe0cf1908f8de0cf1a15e3411f1a15e35fd55423e3611f1b5419e317f5e11f19f08f8d0678c833c6423e33f0678d81f8df1b5f33a38e8f3e1d21d43b49168319d0eceb83d0ece2c92270d155ae00e1856b28c69d355ccf736748c513290cda0f8b20eb808b24a844e99ee65219a9462891b3a65211c59044e9b41e44e96115532275155d151d3a33a38e8e33a3ce8f35a08b3232cccb3228599ccb322ccca8b419bf1df119f11f199f13f11bf13f1143e2161f88b113a5589d389c89d2c44e162270a44e3cae270da75a70da71a74b0d3a6d38d3a6d3ad386d3ad3856d3be56d3856d386d3baae56d39e56d386d38d386d3ad3a5355c56d386d38d39e6d38d3a5869d369c69cfef95b4e161a77a56d39e5869d28d3af2b69c2bd56f369c69d2b69c2b69d2ab4e1b4e34e1469c1b4e34e95b4e79b4eb4e961a77cda71a70da71a730369c69d2b69c2c34e7961a70b0d3851a706d3ad3a56d3a56d386d38d3a5869df2b69c3d5669c28d3b2c34e961a77ffcada73cada70a34ef45869c2b69cf2b69c2c34e95b4efe8ada70da71a74b0d3bb2c34ef961a77ca8d385869c2c34eecb0d3857665ffe58b322c599fecb16645766658b32ffe73fcb166657665e7665666766766458b32f2bb32e313316f31e1f6ee56bfff9beaf3144a96237c0851329f118e4335288e4333dccd9d35288d9d22908cc38248ccf4e183cd4a32908d4a3a588d4a33dc8c5132908c513528cca42528cca433dc8cf72290cca425288ca43290cdf03290cd4a2290cc5133dc8c512fffbd2c4ff03f49152ba0fffc5c651b59801ff5a901448cf72290ccf733dccb07b999484a511948428998a242891948628916144ce90e908ad448d44d44cd44d448ad448a2894b0a27e585123513a432ba42d95a8916144fcd44d448a8a246a24a266a24a2452909e58513f849f1c22f8a117c406f8df1831f1031f101be37c607f89f1845f1831f181be37c6117c606f89f101be37c606f8df1031f101be37c508be2037c4f8e117c6117c508d1308d1203a274482344b0651306513065138468941944c2344c2344a0ca260744a8901d12a270651383289c0e89d12f83289e0ca258468941944c1944a0ca2508d138468904689b8468941944e11a278328901d13a260ca2583289e11a2781d12a24f83289832890468984689032898328942344c1944e11a2706513f83289c2344f06512a8234481944a0ca260ca258468941944b8328976e11a2584689feae11a244c414d45332e313030aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaf2aa8207219b3a45243318a27c791a946a519a4c849198c1c7a7997c65f119fc47f19486126d651aae67f1a7c6517e21587c4617c1244661c9246661c124666ab9aac66ab0d3a66ab35966a082822634e2820566ab19aaca0896069d2b355cc69c5040acd563355cd562c0d3a574845144a56a24748748656a2658a4337e23e233e33e22c1f1159f119f11f1959f199f13f11bf13f11d21289161448b14847486a246a26a27e51449e585132c28981d13a2611a2411a260744e89832890328901d13a2708d1303a2544d82344e0ca240744e8981d13a2411a25846890328981d12a260744a890468903289e0ca2611a240ca2611a270651283289784689c2344c2344c234482344c1944c0e89513f8328981d13a2783289c0e89d1206512ef0669d8334e78474ec0f4e69de0cd3a11d3807a774ee11d3abc19a77ea7c19a760cd3bb419a7019a73ffff8474e8474effffc19a77ff08e9db3ffffd6bf9913a8aa1f9eb1631445566a510a2472198a24777c28226d65359675c09138644e11387163570651a0f9c59044e1a2a88aa14455e67b9948667b93e066ce98a26644ec592644e913a6d0722aa51a0f142274644e22aa644e913868aa1138644e341c644e113a552274aa44e1a2a844fffbd2c4e581eb5da6c00ffad4867d3597d5fb5f98e18d3834e19aac34e18d3834e18d3a34e958d3a581a74ac89c2b2274aa8aa9913a44e15913bfe644e113a634e0d3a634e0d38634e1aade5634e798d3834e158d3a581a70ac69d2c0a2662890a2456289958a245628998a2628998a24289958a27fe65210a27e0744e89046890468942344c2344c1944825448234481944c2344e11a2503a2544c234480e8951206512832898328901d12a240ca240ca270651306513065136e11d38c11d3811d390669c08e9c03d39a7019a7207a774ec23a740f4ee9cc19a7423a7607a734e0474e8334ee11d3a0cd3811d3a07a774e419a740f4ee9d03d39a7611d3bc19a7019a7023a7207a734e01e9cd3908e9cfe0c22742244ef83089c7089139f06113bf088d39fc1834e42234ebc1834e60c1a77f060d39e111a77c1834e84469df6c2244e550000001fcb08e06636ca8663496e6fe26366634fe069b4c32673aeae673a9b6586192b1cc33b73b63411a5531f94112b410383d62731f86263626626331b31a34b731a317e17e34b64b732982992c2a69594c194c94c795a089a0831318fca081a088fc9625e3979212b484ad2134825ef2be70ad203979203485203481213481203485212c24256d93e6b64db2d92c364db2d836c364af9856d82c360f9ad92b6c79b65b06d9e61b61b26d96c15f30db2d93e6b64db0d82b6c161b0589079c8243e7219015c80ae40720901c82407219079c8240720909c864056d92b6c1b65b056d8f36c360db0d836cb64b0d82c360adb056d82b6c9b6798586c961b056d92b9095c84e43202b9016243ffe589095c84e4121f2c480e4121390c84ae4057212c484b120ff2b907f95c87cb121390c84ae42589095c84ae425720390c80ae43e58909c86407219016240589095c87ce4320390484b120f2bbfff962fe577ef2c5ffcb17ef2c5f8aefc58bf9dfafde58bf962fde58bf1dfefe77ebf15dfcaefc577ef2c5fcb97d859c2ab88e7fa3cb0599194842891be04a51998724911aaf47a799fc43f19a7c4ff11978c122992ce71415948456a5119fc61f19553e232f8cbe232488c393248cc393183c60e31a70d5631a70d563355c69c3355cd573144c5123144851333dc8512314485122844e4d1554550a11383227089d2b2270afffbd2c4ff83f1c956d46f779446f42a9881ff7690d448d44e908d449448d44d44cd44d44cd44d448cf8df88cf8cf8ccf8cf8ccf8cf8cacf8ccf89f8cb07c6583e232f82f9360f2f92b2f832f92f932f92f82c17c960be4cbe4be0acbe3cef9be0ef8be4ef8be0ef9be0ef8be0ef8be4b17c15df258be0b17c1df37c1df17c9fc7f11fc5f115fc457f19fc7f1163e23f8fe2f2c7c47f1fc457f1963e32bf8fcaef82c5f277c5f277cdf277cdf058be4b17c79df17c15df077cdf077cdf058be4ef9be3cef8be4aef9f3f8be22c7c5e57f115fc457f1963e3f2bf8cfe2f8cb1f1163e33f8fe3f3f8fe33f8fe32bf88b1f115fc457f1963e32bf88afe22c7c458f8cfe3f8cb1f1795fc5e58f8cb1f115fc67f17c7e7f1fc458f8cb1f1163e22c7c657f179fc7f115fc457f17963e32bf8cb1f19fc5f19fc7f179fc5f1963e22c7c658f88b1f195fc47f17c457f115fc67f17c658f8bfcafe32c7c7e57f195fc658f8d5f2a2944630705f26c472af66abd8c1a661c9872693205f069320c1c510881978e4b3192463071a4ca49199e9e7a71987017c18c1e17c19c62b198dc2b118dcab11d21a891d2152179d21d2195df1160f88cf8cf88df89f88b14867ee4a25fe56a246a26a25e6a25485e6a26a27e67c47c5e67c47c667c67c6567c5e583e32b3e3324324232422432b243324324232422432c12199211219921252992112116090cac908c90c908c908908c90c908c90c90cac90cc90c90cc90c908c90c90cc90c908b048664844840c5f2115f00c5f108af8035f2be2115f18457c6115f20690d210452101a4294a1148406909218312140d21a4308a4208a420624281a424861148406909210452101a4348508af9c22be206be57c0317c8457c8457c422be60c5f2115f20c5f1035f0be418be2115f20690d2181a424840c4840c4840c4840690921e11486114841148606909210452181a43484114860c4870348490c229080d21a4208a430624208a4308a428317c0457c422be40d7caf9062f9062f9035f2be40d7caf8f062f98317c8457c0457c6115f3035f0be018be422be3fffff08d12f2c3d10653614da6a7ba2e442a7a1a9eea7b9a3362e518b971aa9445cc6374b0f2564019957055c1437be63748dd2653694d863c68f1863c6adbc6b6f8f1a53cdfffbd2c4f103f43180ca0ffacdc623b25881ff59f847e6be687e68f1a57e6857e687e6af187e6be687e69e6a6f1af145478a3f3578c378d78c378c78d378cf352c3c61478d1bc63c6961e34ade30adba4dba0d9bcaadd2566cc583672b36633676e834704712b8fe38fe4702c2389611c4ad1c4d1c11c0ad1c0d1c51c0ad1c0d1c11c0d1c51c0d1c11c4d1c11c4d1c11c7cb08e3e584702c2389a382389611c4b06cc583672c1b319b39b399b31b3f959b399b31b3959b3960d9ccd9cd98b06ce66cc6ce66ce6ce118e2071c238c191c4191c7038e11c40e38c70038e11c4191c4191c40e38c70064710647006470038e11c0191c40e3847084638e0c8e0118e00c8e00c8e20c8e308c718323804638046388463881c708e20c8e2118e20c8e2071c238c191c0191c0191c0231c40e38470c0e38c7008c708323804638c0e3847108c7108c7006470606470c231c60cf1bf57ffffdffffff846e5e0cb94a00002f30be4c3831084420332746f434224bc73259824431839265263070b039c183701c6961c14d2938a4eb9158cdce0e30eb95588eb8ce3cd58ce3cd589588cbe648cd83cbe0d83f0e0e48a48cc90c90cc909c14c909c14d295290cbe248ccbe1838d83cbe0cbe183cd83cbe0cbe1838cbe4be0cbe4be3cacbe0b05f2569485648664844845694a64864846486487fe6dc3706dc3706dcb706dc37256dc9638f2c370586e4db86e3cf8f6e0f8e6e4f8f6e4db96e7cb0dc1b72dc161b82b6e3cdb86e0db86e3cadb836e1b82b6e0b0dc9b72dc961b936e1b836e1b82b6e4db86e4db86e4b0dc1b71c71a9aa61d6ea615a9856a69d6ca61a9aa695a9856a69a9aa6f95d6e56a61a98a69a98a69614d2c29a56a67962432b90fffcb121f962422c485e572196242f2b908e43908b12115c87e572115c865890bcb121f95c845721ff9c8521162432b90bce4290ce4390bcb12116242f2b90cb12196243f2b90fce42908ae432b90ce4290cb1211c85211c87211c8721f95c85fe5890ce4390cae432c485e572115c87fe572195c87e58908e42908e43908ae43ffdbf587ccf8af88c7054224d7aa4ba8d7e30f8ccfe21f88d57a248cc2f80be4ce281294b04b319c5097518e0a4b3197cfa79fa7e1c197c97c9fa7307997c17c197c61c9df1df119f11f19df15fffbd2c4f303b38556ce4ffba9d6c3a41945eff822f199f15f199f1bf199f19f19df15f1160f8cdf8cf88ef8cf88cf88f8cb07c467c4fc66c1e5f065f05f265f0c1c6c1c5f265f25f265f05f265f05f065f25f065f25f26c1e5f256c1fe582f832f860f31b838d31b91b931b91b931b81b82b1b931b81b92b1b831b938e2c0dc18dc1c695a5279921921992112116090fcd295290c908908b048464864865824332434a531b81b831b81b931b81b92b38f2c1c7160e34b0372563705838f2b1b831b81b831b91b82c0dc9606e4c90c90bcb04845824232432432b24332422432b2422b2422b24332432432b2422c1219921121f960908c908908b04846484485e64864845648658242f2c121959211592116090bcac90cc90c90cb048664844866484486564866486484564846484484671c3706ac6371e637071c6372370637237063723726372372637237063723706370372581b931b81b82b1b82b1b831b91b82b1b92b1b82c0dc959c7158dc98dc8dc98dc8dc79606e7ffffeef34bdd4378ce2398c633b8a623188e23d8a62338ae23578c737dd5f2c1c65771985e3d98f6d59abc17163c634bd2f32248939ed2e32232137512e3751d5375488f34bdd534bd2f32208939e92f32212f32248934bc892b4bcc88224d2f220ac882c11269711058882c4495c41c44495c41c4c415c415c4162a0ea514ad14ad14b0887508a68a8bfe75088584434545344a8345a82c221a2a21a2a29a2229a2a29a2221d4a29d4229a2a21a2a29a2a215a21d4221a2a29a22295a279a2229a2229a2a29a22216114ad14ad10ad14d1114d1513cd1110ad14b15268a8a56885689e5844345442b442b4534544345452c229a2a29a2a296114d1517cd1110ad13cd1114ad14ad14b08a68a88568a568be68a885688588938988f2b88f2b88f2b892b89f2c447fff95c496220ae24ae23cae20e2624ae27cb11056c5e5863363622c3115b115b19b1319b13115b19b1b11b13195b116188b0c5e5863f36263f2c3195b11b1317f96188b0c60c44ffff84513fe0c4404513e0c44fc188908a2708a27cc484e74d866254aec44c97d36cd860484dd5ce74b073a64bf12a69b424265841b261ac9585825e312039c325e894339d757312025f2b619312139c3120120325f4db31201213121fffbd2c4e403eff9ace40eeeb7c67f361b01ee56f01203120120312125e3121120325e25f325e4da2c12f192f1ce18909ce996106c160730b01b063981b063981b0580d9f2b909c8240721909624058901c8640721901b679a586c1b61b056d92c363cb0d92b6c795b63cb120390484b121f2c484b121f2b9095c84ae4058901c86405721ff2c484e4121f390484b1212c484b120f2b909624056d82c364db2d936c360db2d92c360db0d936c364db2d82b6c95b64b0d8f2c360db0d92b6c95f34b0d82c360b0d82c364db0d936cb64db0d8f36cb64db0d82b6c7961b2586c15b60b0d92c360db0d936cb64adb2586c15b60db2d82b6c79b65b056d92b6c7fff961b3e56d936cb64db2d92c364b0d82b6c161b3fe6d96c95b60adb211907846400c90c192006482072190c232106484232006483e0c90c1921c0e4120064802321c19218464308c841920f846401190c1920064861190846400c9060c908324384641c192106483f08c842321af3210329369d2693340190343f32830fa66d366d89d35569b2332843e355643f35569b2389d66c327a1d4346c27a33c746c2882d31910ba2b26937840fa321055630fb210343f32832103292b3292b3292b32830fb210321043e3210211321121030fa0fb3843282b3e8f28840cfa3eccfb3eccfa840b10819f47d99f67d99f70899f47d19f67d15c2267d9f7e7081f467d1f5e567d99f47d159f667d9f6583ecacfaff2c1f4583ecae1133ecfa2c1f6567d159f467d9f667d9f6583efcafefcafecafe8b1f458fb2c7d9fd7d15fdf95fd163e8b1f457f657f657f7e57f658fb2c7d963e8b1f458fa2bfb2bfa2bfa2bfa2bfaff2c7d95fd95fd7ff95fd163e8febe8afe8afebcafecfebebfffcfebebfcfefebcb1f458fa2c7d15fd15fd1fd7dff9fd7d163e8fefecb1f458fb2c7d15fd163ebcfebeffffcafecfefe8afecfebecafecb1f658fb2bfbff2bfb2c7d95fd9fdfdff9fd7d1fd7d1fd7d95fdffffff95fdff9fdfd963ecafecafe8febebcafebfffcb1f657f47f5f5e7f5f7fe57f67f5f47f5f5e57f7e58fbff2c7d15fd163ebfcb1f657f7fe58fb2bfa2c7dffff9fdfd95fd985e171611230b82f3a39f7357a8e30b91337c8cc31649334495e331d13324c583248cd30bc7a37d8c630b8c73248cd33301d31fffbd2c4eb83f475b2d80f7774c5b935dd81dd66d8609331e8c630bd1230bc7b30b87a31ec2e2b578c7a44cd130bcb063985c3d9602f30bc2e2c05c63d8f666305e61705e563d985c17985e179aef456bcd7ae2bf46b97961795ae35eb8b070ec1d33a70b070b070b073cb070ced9ff2b5c56bcd7ae2b5c585c6bd7ff9af5c56bcb0b8ad796179617f95af35eb8d72e2c2e2c2f35eb8d72f2b5de6bbd962e3bae2c5e577f9df79dd7162f3bee3bee2bbbffffcefb8b17f9df779dd7962f2c5e577ffff9dd795de57715de57715de58b8eeb8eebcefb8aee2bbcefbbcb177f95de58b8efbceebbfcb1795dfe77dde77dc5777f962f2bb8b17162f2c5de77de775fe58bcaee2c5e77dc775c77de57715de5771dd7962e2c5e58bcaefff2c5e58bffcb17795ddfe58bffcefbfcb17f9dd715dde57715dfffffe58bcb177ffffffff95de5777ff95de577962f2c5c57715dff31a71aca3861eef93355daca37c0a43335288f7337c094a12b3dc8c2f91838c92255e8eef81a70d4118610c2f83d38cf4e248cd26530e4a0a27285214d9d22908a86ab1a822a08160d5636b28d5631a75acb3355d41033558d572b1a70c69c1a74d4111a74b034ef98d3a34e9d21289f9d21a891d212899a892899a89a89f99f11f1962f88cf88f88acf88cf88f8cadf8bfcdf8cf88cf8cf88acf88df88f88acf8ccf8df8bccf8cf8cacf8ccf8cf8ccf8cf88acf8ccf8df88cf8cf8bccf88f8fccf8cf8ccf8cf8cacf88cf8cf8e117c414f8a06f8bf101be37c6117c4137c4117c6117c7063e3063e2063e2037c4f8c23f8823f8e117c406f8df1845f1845f101be27c4117c40c7c508be2063e3037c4f8c19f8822f8c0df1be20651203a2744a0744a89c194480e89d13065130651203a2544c1944eb81d13a260ca240744e89f853e3418f8818f8818f8c22f8823f8c0df13e381be27c606f89f160c7c6117c7037c4f8c0df1be2037c6f8c0df1be281be27c606f89f1831f181be27c40ca2611a240744e8983289046898468903289419448194480e89513832890328983289c0e895120651281d13a240744a890468983289c23448234480e89d13d0eaf5c19a76dea8474e8334e2bffef0669dfffffd5e6498b0751af860e372684a86587c8ccdd48c59074cb41b8c6e358ccc160d08070fffbd0c4fa03fa5daac20ffad4c5bcb45e01dd62d0d43164ad433164933165092b24cd09248c58164c93420c59164c1c160d09160ac923420923164583074cc2c03860e0b2562c79601d3070593070932b074c1d070ac5839614d4282b506a029840a61429cb0a585264489608990225644c8bd32040c8912b206408991225644b0f4c81032240c81032240ac816081608191205640b044afa7de796387de7963be7de95f4af858e7f96225703840e302c44b11f38c3cb1038c4e312b8f962070895c4b1d3e70b1c3e74fbd3ef4fbc3e74b1c3e74b1d3e70f9dff2c73caf9e58e79f79e7def95f7cafa58e95f0b1d2be16387ce95f7cafbe58e95f4b1d2be163a7de7f9f3857d2be963a57c2be95f0afa7ce15f4afa7ce1f7857cff2bef9f3be57dff3ef0b1d2c74afa58e963858e963858e963857c2be1f7a57cfff2be95f0b1c2be1639e57c2c70b1cf3ef4afa58e95f0afa58e9639e7ce163858e963a7de15f4b1cf312012035a04ac34ad1cd31cd3b635a05a0322b47131991992c09a982989a960398c650398c3612b0cb08edcc730730cd34418c1d4660c1d4664c48097cce70e70ce74484c480480c360360c734364c730364b039a65841b265841b2561b0580d92b0d93831d4acea7063a19d0ea707cc99d4ea63948958e0c703831c39bcc723931c244c703832994cb05232994cb052ff2c14cca6c3f2b29160ea56742b3a19d0ea6753a159d0acea56752c1d4cea7533a9d0cea74fff2b5015a80ad41e5850f9a8541ffe5850959d4b074f2c1d4ce8752b3a99d0e8570633a9d0ace8583a959d7cce874f2b3a99d4ebe56ea6e8ea56ebe56e86e8e86e8e86eaea6eae9e587537474375752b7537575374742b742b74f375752c3a1babaf9baba95ba961d0dd1d0add4add7cb0e856e858752b742c3afff9ba3a1ba3a79baba9ba3a161d4add0e8280b1427434258a02ba02ba1f2c501d050796280b14058a03a1a12c50796284ae80e8687fcae83cb14058a0f2ba1fff2c5095d016287cae87fcb1405741e74343fe74143e5741e74141fe58a1ffff2c5095d0f96283cb143fe574258a1f2c28206c48311e6abd8c1e65f197c667f137c67e36a8226d65a82263f197c661f11fc667b99ee662899ee64d41099aaea089b5966ab98fc63f11a7c63f118fc4fffbd2c4f003f3f1a2e20f7375467ab55881ff5a685f198d3834e18d3ad6618d3ad6518d3a6ab99aae34e959aae66aba820634e1aac57aac58d57369cd56cca34e4b0d3856d386d3ad39fc2c34e1b07b07997cb07197c3071c91307997c17c160be0b05f2565f26a26a26585122c28915a89f95a896bfcd44d44cc90890cac90cc90c90cd294908b04865648456484648448656486582423242242324224333e33e233e33e32b3e32c1f119f11f1160f8cacf88cf8cf88cf88f8cacf8cb07c667c67c467c67c6583e3037c4f8c18f8a06f89f1031f101be27c6117c7063e2845f1418f8a06f89f101be37c4117c60744a890328960ca2411a240744a89046898328981d12a240744e8904689c0e89d1284689708d1308d1283289e0ca27c0e89d12c2344f8328984689032897f81be27c40c7c406f89f1845f1845f17063e308be3063e3037c6f8c18f8822f8818f8822f8818f8f063e3831f101be37c60c7c406f8df1611d3bff8474eefffff7fc23a77fff42af314d42032684ee3268340355666c332966d3328556332832830fb43e2c21f1a1f9081908a1f1a771a019341a01a7705d99348c898c80c819341341a1015b98a68a698a615b9ac515b190887d187d07d987d108190819479595b995b8a698a68a61595b15aecad746bb5d95aecd76ba2b5d9ae976585d1ae974579035d2e8d74bb35daecd74bb344220d112f344220b088344a20b088344220e5e89344a20d12893e2e22c311f1b11f1311b13195b196388f8b88d8d8cad8cd8d8cd8988e2624e2620e2624e2220b113e5710711127131271113e58893898838988388883888938989f2b88ff388882b89389882b89388882b8938889389882c449c4c415dd7962ebceeeecb17477776775747757658bb2bba2c5d1dddd15dd962efcb1745777e577458ba2c5d9ddddf9dd5d95dd95dd162e8eeae8b176577458bafff2bba2bbb3bbbb2c5d9dd5d795dd1dd5d1dd5df95dd162e8eeaebfcb17458ba2bba2bba3babb3baba2bbb2bbb3babb2c5d15dd962e8b17658baf2c5d15dd7962efffceeeebcc3e21f88ccb92b88d23a48e8c85e162ca10bc31838f4ed9a4ca17c9924617c987c67f119fc43f1187c63f11613e231f8cbe2309087042b259cc7050908cfe21f8cac7e230f883e332f88be230f8cbfffbd2c4e803f01956de0f73748691b259c1fedab8e231f887e32c07c6503e3987c63f1187c41f1987c41f1187c61f19587c7e7f17c657f19fc5f179fc7f115fc458f8bcafe22bf8bfcb1f11c852195c865890cb1211c872116242390a43390a42f390e432b90fcae42390e42f390a43390e42390a42f2c4865890ce43908b0dc961b836e1b836e5b92c370586e4db96e0adb936e5b92c37256dc1b72dc9b70dc161b836e5b836e5b82b6e0b0dc1b72dc161b92c372586e0db86e7cb0dc95b7056dc961b92c3726dcb70586e7cb121962422b90cae422b90cae43390e43390a432b90cb121f9c8521f9c87219c8521f95c86721487e572116243390a42f2c4865721ff95c8458908e4390bfcae43390a43390a432b90cb1211c872116242390a432c485e72148658908e4390c1890e0c48508a4284521c1890a0c484114840c484069092181a4348508a4383121422908189082290a0c4850624308af808af8ffe0c5f1fff8457c0457c5500002f317f4b633b769735a12c23ffd655317f7f1331bb28365417f312125f325e619317f98c331a17e317e31b3b294b62c18d19611611a5616199db0e698bf8bf9a5b8bf1a5b25b998d98d18bf0bf998da5b18bf18d98bf25b198d98d98bf18d1a5b18d958bf95a5b9afcbf9afcbf79617f2b5fcf1a5f8d7f5f8d7e5fcb0bf95afe6bfafe56bf1afebf1631b2b480b0901625f2c24269024072fa40690242690a42690a40690a406902406904bc58483cd2097cad202b483cd20484ad203481212b480d20484ad21f397920f2b487cb0909a429015a4256901a42901cbc901a429095b9be66c1b066c9b2566c19b0e6960d82b364cd9360dcd360cd8360b06c159b058364cd9363cb06cc237ec197ee11bf60cbf046fde11bf60cbf846401190846400c9081c86420c90046420721900464007219081c86400c9003243039048607219060720900464306484192106480237e832ff065fe11bf40efd7e08dfc0eff7f08dfc197f81dfefc0cbf81dfafc11bf40efd7f065fb065fc197fffffabfffff065f90403cc4102950c62707e0d6dd07e4c83d1044ce8107e0cc6a2954c6271898cc6a1044c41120f4c6541950c7f00c68c411189cc62620f4cc6b20f0d2ddfc4d9505f8cc68c68ad044c7e2950e0f47e4e0f20f0b0c4fffbd2c4ec813099a4d64f76b556e6315a95ff71bac56c4e56c4e63f23f25682068223f263f28226c4c3f2581f8341141131f91f92c0fc16189cc7e1040ac7e0ac7e4c7e07e0c7e07e7cb0821e563f0563f062422426240240624224256240581202b12131201212c090960480c480480ac484c484978c480484ac480c484978c484487cc480484b02425825ff2b1212bbff9dfefe77fbf95dfcb17e3bfdffcefd7f2c5ffcaefc77ebf1dfafe58909c824258907f9c86425720390c80ae4058901c86425720390480ae4057212b90f95c84e4321f2b90962427209095c80e41202b901c86427209016240720909c864257202b909c82405721390480b1212c480b17e2c5fcefd7f2bbf95dfceff7e2bbf162fe577eff2c5fbcefd7f2c5fcaeffe58bf95dfffcefd7e2c5f8b17e2bbf9c8243e589096241e5890962427209016240720901c864057202b9016243fe589096242721909c8642589095c83ce41212b9015c80e41212c7e3fcaff3fffffffffffe57f9ffffffff2c7e55f314d6f4319169c334141731d5320308946c341734134170ba33211d5332112f2c0b198f18711897990984413d984493d9a0b85d98c80c818c81349a995b1a98a69a98a6962b633ea1133ecfa2c1f467d9f458537cd4d534aeb62b534c894b8c894b8d2e4b8b0441a5c44f9b1b11b1311b13115b11b1f11b1b11b1f19b1711a2d41a2a279d42295a21a2a296110ea510ea510d1510d8d8cb0c4586336263363632c311b1319b13115b11618cd898bcae20ae27ffcae23fce2223ce2224b111e71311e577658baff2c5d95dd962ecb17458ba2c5d95ddf962e8aee8b17458bb363622b63362632b63362632b63362622b632b622c311b1b11b1b11f1b115b11b1b195b179b13196188b0c66c6c67131058892c44795c495c41c4c495c49c44496224ae23fce2623cb11258882b892b89ff2b88fff2c441c4441c4c416224e2624b112571057107131271311ffe5712571258883888938989f2b892b89ff38889389892c449c4c4f96119a39a1cdee361e4a6d3914c8ff336348ff31534d6c2b563cc6191d5cc4db0978ca5507e4d09920f0c8022ae4cd6c1534c2980a60cdef1ba0c3660d98c3671ba4de31e28aaf187e68f1a6f1af1a54a6d33663672b6e936e836734714712b8ff38fffbd2c4e483ecd556e20f776ec706aad981ff75f8ff47038ff4712c47f1594c194caa6194c94c994c14c194caa6194c94c15a08958fc18fc0fc1a080fc9b132089a08a081a088fc158fc98fc8fc98fc8fc98fc0fcf98fc8fc9607e4c7e07e4b03f0563f2581f934101f831f91f92b41031f841031f91f82c0fc1607e4c7e5044c7e47e4ac7e0ac7e0d0407e4c7e47e4d0447e7cd0447e0c7e07e0ac7e0c7e07e0c7e47e4b03f2563f263f23f063f03f0581f9ff2c3f2587e0adf82b7e7cdf97e0b0fc1bf0fc1bf0fc9bf2fc795bf056fc961f837e1f937e1f9f2c53258a64e99a67ce99a64ae992c53274c53258a64e99a64e99a60b14c1d314c95d3274c53074c53074cd32574c95d3274cd3258d9bcb1b3963672bd9fcaf662c6cc7b36ce7b3ece57b3ff9ecdb316367f2c6cc57b3795ecc58d98b1b315ece57b315ecc57b395ecc58d9cb1b3963672c6cc58d98b1b31ecfb3ff95ece58d98af66ff3d9f663d9b662c6ce58d9bcb1b395ecc58d9caf66f2bd995f31a74d5738745265324902f836f8cfe233f8d3e33674ca43367494a23248c2f930be02f831f893e334f8c7e232488c392a0c1c661c124657ee67484a267485ee46a25ee47ee4a2457484748548656fc667c6fc456fc4587e23512a422c5211a89d211a892899a89a8919f1bf1943e2f99f19f1160f88acf88df8df8fcb07c66fc47c7e583e22c1f1f9a52121192125219219219a5225299219211921a52f9a521219a521211a52121997c97c960be4cbe5838cbe0be4acbe4acbe0cbe4be4acbe0cbe4be0b05f265f05f3e577c1df17c1df37c15df1e77cdf058be7cef9be4ef9be4ef9be4b17c962f92c5f2577c95df058be4ef8be4b17c1df17c79df37c962f83be6f83be2f82bbe4b17c795df0577c962f8f2c7c47f17c7e58f8bcb1f115fc7e58f8bcafe22c7c47f1fc7fe7f1fc657f1f963e33f8be33f8fe22bf8cafe32bf8ffcfe2f88afe22bf8bcfe3f88fe3f8cfe2f88afe32bf8bcb1f1163e32bf88b1f17963e2fff3f8fe32bf8cb1f11fc7f1963e3ff2c7c5e7f17c5fffffe7f1fc7fe7f17c657f1f963e3ff2bf8cb1f179a08f40992f5881a6d30c9b137401a08a089545f8b131a56ca8731afe2696ecaa73182fe68234aa63f10787078c4e74a83f0563f063f0c4e70798d674a8820fffbd2c4e783f1f556c80ffbadc667b3da41ee572078d43f06822820682082056c4fe682082063f23f0584112c0fc158fcf98bf0bf18bf8bf198d8bf960c68acc6cac5fffcd0447e4c7e07e3fcc7e5044b03f27f8fc163f057f93fc7e7cb1f92bfcff9fe3f27f9fc9fe7f257f82c7e4b1f83fc7e0aff3ffe58fc1fe3f2577f2c5f8eff7f2c5f8efd7e3bf5f8eff7f3bfdffcb17f2c5fceff7f3bf5fbcff1f82bfc1fe7f258fc1fe3f058fc9fe7f07f8fc79fe3f3e7f8fc15fe0b1f92c7e3ffcb17f3bf5fcefd7e3bfdfceff7eff3bfdfceff7ef2c5f8efd7f3bf5f8aefc58bf162fc77ebf95dfcaefc58bf60cfc047f207f8fc833f1067e211fcc0ff3f9c23f9067e611fc033f011fcc19f808fe60cfc033f108fe419f9c0ff1f9847f007f8fc847f011fcc19f803fcfe419f8c0ff3f9c19f8067e60cfc047f303fcfe703fc7e607f8fc423f808fe3847f00cfc033f211fc047f007f9fc847f381fe3f3833f00cfc833f3c23f9833f103fcfe40ff1f85f34b617e36544b7317e7f1378c69630d95a03b2898d331b7f02b39c325e619325e121375712131cd3b732c20d931cc697315c0a02c16b990d8ae198da5b98bf25b998db2a18bf18d9a43ce9a432f9a40901a412f9f39ce9f3b2f9f392f1a42901612034839d2c24269024072fcbc690242690a406d96c9b65b26d86c95b60db0d836c360db2d92c360f98d82be695b60b1cd36cb63cb0d936cb64b0d82b6c1a814056a1350283cebaa12b5015d73cad426a0509a814275cae1624057212c483fcb1212c483cb121fff2c483cd42a0350a80d415d350a80d42a0350570b0a0f3ae574ad4258509a85426a15015a84d42a0350574b0a02c364db2d836c364db0d936c360db0d82b6c1b61b06d96c961b3e6d96c1b65b06d86cf95b64db0d836c360b0d836cb64adb258e6961b1e586c95b64db2d92b6c15b64adb26d86c961b26d96c95b64b0d92b6c961b06d86c795b60b0d92b6c961b2586c9b65b1e589016241e5720390480b1202c484e4120390c83cb120390c84b120390c80e43212c480b1202c484e43212b909c864057212c484b1212c483ce4321000fe62a690046401957256d7c1a044401990048111a046401158532620814aa56208987383ab184bc3ab986343f81931a32a9863432a98c4e41e9907fffbd2c4ea03b2f156da0f7790863b335a4dff5618a2081882220898a9a14c9900655c985328111853214cf9c014019aa694c994c94c194c14c994c14c1aa62a6194c94c960a64c7e47e4ac7e3fcd0447e4b08225825e325e121312025f2b121325f25f2c090960978c4844860cfc847f211fc01fe3f011fc81fe7f20cfc01fe7f00cfc047f20cfc01fe7f00cfc833f20cfc847f103fc7e60cfc047f207219001c86420721900324108c800e432108c84192006480232103904840e4121833f011fc01fe7f103fc7e3e0cfc033f007f9fc047f011fc01fe7f007f8fc419f908fe308fe211fc047f00cfc847f207f9fc847f20cfcc0ff3f8067e7067e023f808fe40ff1f9067e211fc033f011fc833f3833f303fcfe3067e00ff3f908fe019f9833f20cfcc23f903fc7e019f808fe023f8e07f8fc40ff3f8833f1067e423f9847f207f8fcc19f9847f207f8fc033f211fc847f00cfc033f1a99d67fa933ccc957f313fea3d51f6a55f31a7069c3183d26534990c3934f8d3e236f88fe235f8a7e232f88fe331ce038c31588cb934a59673bc724235635633739738338f90f34a470437054a5324324237e3be32b7e333e2be337e27e32b3e333e23e333e33e233e37e22c2899a895211a89d21f0b0a2456484648648456484648694a648648456484582422c1211921a52159211592199219211592119211211fc5f17f95fc457f195fc5fe7f1fc658f88ef9be0b17c1df37c1df37c1df17c9df17c15df2577c15df277cdf277c5f277cdf3e577c962f93be2f9fff2bbe4ef9be4aef93be2f8ff2bbe0db96e0adb836e5b836e38e36e78d36e1b82b6e4db96e3cdb86e4f8f6e4db96e4db96e4db96e0adb836e1b92b6e0e4390cb12115c84721c84572179c87211c852195c84721486721c86721486572195c865890cb12179c87219c87219c872115c8477c5f0577c15df2577c95df077cdf0577c95df258be7cef8be4ef8be7ffcaef83be2f9f3be6f82bbe4b17c962f82c5f1e577c15c867214845890bfce4290fce43908e4390ce4390cb1219c85219c85219c872116242390a43390a42f2b90bfcb121ff95c87e721487e62898a2462891ee462890a26541f88c3e27f88c5121444f3c2144ccf4f0be4c2f93d3ccf72674cc5133dccd57a4990b061c985f217c9ff1fffbd2c4ee03f47d56cc0ffba9c6beb5d901ff59b0bf19df11f11bf1df19c9117c94922997c97c1c91b07645144c74874847ee6a25c3a4251335125133a4251335135132c5f19bf1bf19bf11f199f11f11bf19f199f19f195b07997c17c997c97c9b07307960be0cbe0be0cbe4be0b05f3e67c47c467c47c6567c667c47c4583e22b3e32b3e22b3e333e33e28457cc22be40d7caf98457c01af85f211c1e115f0b062f903c1ebe018be418be00d7c2f8062f9035f2be018be40d7c2f908af908af8062f9062f881af85f0115f006be57c8317c01af85f2115f2115f20783d7c0317c0457c0317c8457cc198380d7caf9035f0be606be17c40df13e3063e2037c6f8f08be2c0df13e3037c6f8a0c7c406f89f1031f16117c5037c4f8818f8c0e89d12c2344819448194482344a11a260ca2411a260744a894234482344e11a240744a89f06512c1944e117c606f8df1845f1845f140df13e3063e2f063e308be3063e3037c4f8f063e2063e3063e2063e308be2831f1031f142344aaf83289ff06512846897fffff08d130651354c414d45332e313030555555f2c113a6ce9be046f81a9467a1d687668aaa2a87e79a2a86d07341e6491924469329244513e39afc65f199484f8199ee6a5118a262899a94428999ee628918a262891be062891a94452118a2452199486a51191388aa1913844e9a2aa44e9913844e9a2aa44e1a2a844e9913a44e9511542b2270a1f14aef8cacf88a1f17cb0fc4585122b5123a43a43f2b513f35125132c28981d13a240744a8904e8981d12a25c0e89d1308d1203a2744c2344c1944819448194480e89d1275c2344b03a2744c0e89d1208d120651284689e0ca2703a2544c1944a0744e89c1944c1944e11a240ca2411a260ca260744e894194482344a0ca2708d120651208d1206513df03a2544e0ca260ca2613a2508d1203a2544982344fc23449ffc19a770669ce11d3b08e9c08e9c08e9c8474ef68334e230669cf8334ee11d3bedfe0cd39ff84b4e0474e3c19a737fc19a774fb7ffd1a8ac5ca3172d7853ebdc5cb2b5e0cd19b4668a2f083bc90bb3285d90ca6d29b0d1730d98e3545e10d7855e08c47023f8db3711c4a11fc32ec8bb23466cbb234668bb23172978328bc20ad7853466d19d32eccbb334674bb22c233450bb2fffbd2c4d583e9c98ec40ffad44632b35881ff5a9879a3345d915a336562e5128b9671fc8e068e28e068e08e068e31fc568e271fe8e25836733666e82c1b3959b3159b3159b39b749b3160d9cacd9ccd9cd9fcb06cc566cc566cc66cc6cffe566ce566cc566cc66ce6ce5836633666e93366367336736636e83662b36636e86e82c1b3960d98231c4231c4231c0191c4191c4231c0191c4191c0231c58191c20c8e2118e20c8e00c8e1038e11c0231c4231c4231c40e38471c191c6071c638846388463840e38c70038e31c00e38c70038e11c0231c40e3847108c71c0e3847181c718e00c8e2e0c8e2118e00c8e18323881c708e0118e211b940cb97f03b9572c2372af065ca81dcab97f832e5f03b9572c0ee5dca08dca03b9772c2372f81dcbb9411b940cb97fc1972e11b940cb94e11b940cb95ededde0cb956846e5fff09dcae12b960000001fcc2994b64d58f35b0cd6f1530d2d835b0d0220a60c31b2ca4c17e05f8c4b605fcb00bf18c303ab18eac30c98822208960c6b31040a55319544b630c6831b3195031b3200c29831534ab830a648022a0532581534c2990a60ac54c2c0532562a69602982c0a98614c05305640116031b305fc4b72b0c68b018d16031b305fc17ff2b7e3cadf92c3f0587e0df87e4df87e4f1b5fcb0bf1afcbf79617eff2c2fe6bfafc56bf95a42690a4072fa4272fa40690242690a42690242690240572f9a40901a409015a42690a40690a40690cbe690a4269024256901a40901a40909a42909a412f1a41ce9a42909a4090961202c5f8aefc77ebff9dfafde577ff3bf5f8efd7e2c5fbcefd7f2c5f8b17ef2bbf15df8efd7f3bf5fbcb17e2c5f8eff7f3bfdfcaefe77fbf162fc77fbf1dfefc58bf795dfcaefe77ebf1dfafe77fbf9dfefc58fc1fe7f057f93fcfe4b1f82c7e4aff1fe58fc95fe0aff258fcf9fe3f258fcff95fe0aff1e58fc95fe0b1f92bfc1fe3f257f83fc7e0ff1f8f2bfc9fe7f3e58fc9fe7f257f82c7e3cff3f92c7e4b1f83fcfe7cb1f8f2c7e0ff3f82bfc9fe7f257f9ffffcbf79dde6bf76bb87ef58ffffef3cf9bfdd65909587c663f127c65455e4d2641838c9224994c9221830c66c0ca4c0fa0ca4cae20e34c5632438cbc71290cbc638a4ad2642c05f0617c8c1c787124465f2c1fe7485485d3f72fffbd2c4ff83b74592d26ff796ce783199c1ff75a8a433f73512314c4212c15b9a1095b195b15b960be4cbe0be4cbe5838d838be4d838be0c6e4e30ce386e4d58ce38b071e563706370372582422c252960908c90d297cac90cc908908ac90cadb936e1b936e38c36e1b82c37056dc1b71c61b72dc9b70dc9b70dc162f9f2bbe4ef9be7caef92c5f3e577c15df058be0aef8390a422b908ae422b90cb12196242f2c4845890fce43908e4390ce4290ce43908db86e0db96e4db86e4b0dc9b72dc161b936e5b836e5b936e5b936e1b92c370586e0b0dc1b72dc95b7256dc1b70dc1b72dc9b72dc1b70dc95b7056dc9b70dcff9b72dcf9b70dc9b72dc15b70586e0b0dc1b70dc95b726dcb71e586e4b0dc7fffffffff95fc658f8fffffffcafe2ffffff390a43390e42f2b90ce43908b12195c86721c86721c85e5721796243f2c4845890cae422b908e4390ce4290cae422b908e4390cb1217fffff962f92c5f3fffffffffe58be7ffffffffcb17cd5f2c0a266f813e066289b3a462529c5265e39c50512651a4ca61c96096631294bc632f1cbc731294bc630e30ae532b8c90f3158c38f32438ae33158c1b82b0e34a8491985f04929924630798c1e3079978c71498948121184847141589486289948665210a2462898a26581448aca432c0a2462890a2456289958a27e58144cb1f17ff963e23f8fe3f2c7c5e6dc3726dcb726dc370586e4db86e4db96e4b1c79b70dc9b72dc1b72dc1b72dc9b70dc1b72dc9b72dcf9b72dcf9b72dc95b70586e0db96e0b121162432b908b12115c865890cae43fff2c486572195c85e6dcb706dcb706dcb726dc37256dc15b7256dc9b70dc161b92c372586e4adb8ff36e1b936e5b8ff390a422b908ae422b908ae432b908e4390ce42908e4290ffcb1211c8521962422c484721486721c86572196242ff2bbe3cb17c15df058be4aef82bbe4b17c95df258be0b17c9df17c79df37c95df277cdf258be3fcef8be3caef82bbe7ce4390ce42908ae42390e43ff2c48457211c8721962432c485e721c845890bce43908e42908ae43f2b90cae422b908ae43f390e432b90cb121e11a244c8532310ce157e3496d8d93103fcc48c61f831931cad5270ae8192a1276cb51950b27064a9958b034403a095cd245b3b7114c8a46353c2ce1fffbd2c4ea83f37d5cce0ff6d7c60934de41cd6691444353298d52a832342b64c8a324908d5644353aa8444a1cf46b3f9a6506a968b563fea8af41bb1a648798f1e63c898c266f07155e133b3428486c913c33670cf9a295866cf19e39485681a081a081a1e129c677e57e1a07cacd338ad120ecd23499f1de8cc44d0f8ce46e19e819c990a0fe52909c5101a089f871a3e54287b64d19551340e34117fed19e91222672049f133f1b24748b928d4a8f709b9371d2478a3a26e891e375d22fc75f375b28f33ce909bd76cecbc9301f81dc82ceab0a9713b93676594f58edb49da3bef3c2f3bb03b6b1cbdf772e8cf0b4730257481e26ecdc70de789b62ab46d344ae916a6e3981b8f916a586c6b29d8d916c6f3a6eb84df9bed5b98379ee61f52c72bd3d3dc87e821ca177e00791c393b87227f2cd69c7ddc7a067703cc3b0ee47dafcbe61fbad63ee01800661f807c0111c7079e00600181e7819600647aa47e30c10cc641634bbb8df69a30a24cd04093289c8cae19347bb8e0aea368b28d8ea232684cca8573291ccd40a33350ecc624a30995cd890738837cd083103010c969c366b18d326230e03d1b0c1a1c317908ca25031f8502c0b2c898684248150e4120d48b4e061269366e3a6e4269a868803069b4e9c149d4e930374461238afa008c638402091a80889ac8840afd213404097154d5215a622b3ded69d6804b9a641a640282a5500d598d64c98100a470c870a802590fcd274de84d350cb014ba7df57e00281aa52ce5e2c55733dceccb1da81986f825237da3552354c4d752de4b60161a862611a68063251aa618a71c381bcaa78ad160060880a19d761ac460168cb38280a22ba4826407294a76971400b370db81204d8111b8f344f102a8e2e36a8dae0369545055d5692f2ca619932e67782e235a17eb5aa3a58661da90d3b4ca588b5d4e50214d093204b8ac74401342cd035225f635d0f3639a0ba51c4e648a6f9554c0b385ced7393cb8cf34a6970a6b5ba5a6ed5a5a5d534bad56954bad5594cb6f5694cb795a354dda58cd3674b19b3a954bad56954bad5594cb7095592028b51774bdc5f541a2a0287884f4281658d330cc64c37028f90c0237c00d19e686807c2e76e46b7a60fc415882830e5341837c7077c6a1e61ac1664858156418b18fffbd2c4f28234520cec0e67178619bf8c199c3fa82898c416f157c0b2aa1a08eb2a42498c798ab00190bb440d8a34055cca2823337443517315c0a3e43008df023463a6680c44a04145d541a56555050f50c51751550e50d5165655505575344d90148c4b04b844f2580cbc28c30941d0128808c0c28a9890e38611942802e5abb7325d56e5d9a765618b8414088443052520e8c4002e3913005532a0c5b0af083a29c02e4d0e01ac3546c3805c20892c065e166015260121a3178ad6bb7265da54a5c10a804031921214708210972048e1862c885c42852520e8c4422dda0115e3427f6028360882dea6429528dc91a8ec94a92891e98050305180050a985124a81d488085970e60634c20061c54c4871c3084a5a82dfa5123ea732c0a8f2db5805575e0d11b0ae972bcbb522ad2a5c49513d288a9280bb96c32d04749fc894c24d10a7523635c282d52c08ee9955ca55d2fae14ec0c70e94c414d45332e3130305555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555";
3467
+ var Es = Object.defineProperty, B = (a, e, t, i) => {
3246
3468
  for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
3247
3469
  (o = a[r]) && (s = o(e, t, s) || s);
3248
- return s && Cs(e, t, s), s;
3470
+ return s && Es(e, t, s), s;
3249
3471
  };
3250
- const $ = Je.noConflict();
3251
- $.setLevel("info");
3252
- const re = "cb_", As = (a) => new Promise((e) => setTimeout(e, a));
3472
+ const E = Je.noConflict();
3473
+ E.setLevel("info");
3474
+ const ne = "cb_", $s = (a) => new Promise((e) => setTimeout(e, a));
3253
3475
  class R extends Yt {
3254
3476
  constructor() {
3255
3477
  super(), this.actionIdCounter = 0, this.currentLoadContext = {}, this.prefilledFormValues = {}, this.wsClient = null, this.webAudioProcessor = null, this.webAudioTrackId = null, this.webAudioCurrentMark = null, this.replyMessage = null, this.streamingResponseInProgress = !1, this.streamingResponseLastText = null, this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null, this.tabsBroadcastChannel = new BroadcastChannel("c7o-bot-tabs"), this.tabId = "c7o-bot-tab-" + (self.crypto?.randomUUID?.() || Math.random().toString(36).slice(2)), this.tabsBroadcastChannel.addEventListener("message", this.handleBroadcastMessage.bind(this)), console.log(`c7o: AppState: created, tabId=${this.tabId}`);
3256
3478
  }
3257
3479
  // this is called at startup
3258
3480
  setSetting(e) {
3259
- $.info("appState: Startup: setSetting", e), this.setting = e, this.initBot().catch((t) => {
3260
- $.info(`Exception during bot initialization: ${t.message}`);
3481
+ E.info("appState: Startup: setSetting", e), this.setting = e, this.initBot().catch((t) => {
3482
+ E.info(`Exception during bot initialization: ${t.message}`);
3261
3483
  });
3262
3484
  }
3263
3485
  // set language
@@ -3272,7 +3494,7 @@ class R extends Yt {
3272
3494
  async initBot() {
3273
3495
  if (!this.botSettingsInitialized) {
3274
3496
  const i = `${this.setting.url.startsWith("localhost") ? "http" : "https"}://${this.setting.url}/api/bot/settings/${this.setting.orgId}/${this.setting.botId}`;
3275
- $.info(`Getting bot settings at ${i} ...`);
3497
+ E.info(`Getting bot settings at ${i} ...`);
3276
3498
  let s = null, r = null;
3277
3499
  try {
3278
3500
  s = await fetch(i, {
@@ -3282,13 +3504,13 @@ class R extends Yt {
3282
3504
  "X-Enegel-Signature": this.setting.botId
3283
3505
  //"ngrok-skip-browser-warning": "1",
3284
3506
  }
3285
- }), !s.ok || s.status !== 200 ? $.error(`Failed to get bot ${this.setting.botId} settings: ${s.status} ${s.statusText}`) : r = await s.json();
3507
+ }), !s.ok || s.status !== 200 ? E.error(`Failed to get bot ${this.setting.botId} settings: ${s.status} ${s.statusText}`) : r = await s.json();
3286
3508
  } catch (o) {
3287
- $.error(`Failed to get bot ${this.setting.botId} settings: ${o.message}`), r = null;
3509
+ E.error(`Failed to get bot ${this.setting.botId} settings: ${o.message}`), r = null;
3288
3510
  }
3289
3511
  if (this.botSettingsInitialized = !0, this.botSettings = r, !r) {
3290
- if ($.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
3291
- $.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
3512
+ if (E.error(`Unable to retrieve bot settings - bot disabled. Retry in ${this.botSettingsRetryTimeout} seconds.`), this.disabled = !0, this.botSettingsRetryTimeout > 80) {
3513
+ E.error("Failed to retrieve bot settings - bot disabled. Retries exhausted. Refresh page to attempt again.");
3292
3514
  return;
3293
3515
  }
3294
3516
  this.botSettingsInitialized = !1, setTimeout(async () => {
@@ -3296,17 +3518,17 @@ class R extends Yt {
3296
3518
  }, this.botSettingsRetryTimeout * 1e3), this.botSettingsRetryTimeout = this.botSettingsRetryTimeout * 2;
3297
3519
  return;
3298
3520
  }
3299
- $.info("Got bot settings - bot is enabled", r), this.disabled = !1, this.setting.welcomeMessage = r?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = r?.disclaimerMessage && r.disclaimerMessage !== "" ? r.disclaimerMessage : null, this.setting.engageMessage = r?.engageMessage || "How can I help ?", this.setting.engageTimeout = r?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in r ? r.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in r ? r.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in r ? r.uploadImages : !1, this.setting.newConversationTimeoutInSec = r?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in r ? r.enableNotificationSound : !0, this.setting.botAdvancedSettings = r?.botAdvancedSettings ?? {}, this.setting.startFeedbackFromMessage = "startFeedbackFromMessage" in this.setting.botAdvancedSettings ? this.setting.botAdvancedSettings.startFeedbackFromMessage : 1, this.setting.enableMultiModalConnection = this.setting.botAdvancedSettings?.enableMultiModalConnection ?? !1, this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
3521
+ E.info("Got bot settings - bot is enabled", r), this.disabled = !1, this.setting.welcomeMessage = r?.welcomeMessage || "How can I help ?", this.setting.disclaimerMessage = r?.disclaimerMessage && r.disclaimerMessage !== "" ? r.disclaimerMessage : null, this.setting.engageMessage = r?.engageMessage || "How can I help ?", this.setting.engageTimeout = r?.engageTimeout || 5, this.setting.splitMessagesAtBreak = "splitMessagesAtBreak" in r ? r.splitMessagesAtBreak : !1, this.setting.feedbackEnabled = "feedbackEnabled" in r ? r.feedbackEnabled : !1, this.setting.uploadImages = "uploadImages" in r ? r.uploadImages : !1, this.setting.newConversationTimeoutInSec = r?.newConversationTimeoutInSec || 86400, this.setting.enableNotificationSound = "enableNotificationSound" in r ? r.enableNotificationSound : !0, this.setting.botAdvancedSettings = r?.botAdvancedSettings ?? {}, this.setting.startFeedbackFromMessage = "startFeedbackFromMessage" in this.setting.botAdvancedSettings ? this.setting.botAdvancedSettings.startFeedbackFromMessage : 1, this.setting.enableMultiModalConnection = this.setting.botAdvancedSettings?.enableMultiModalConnection ?? !1, this.setting.fileUploadEnabledExtensions = this.setting.botAdvancedSettings?.fileUploadEnabledExtensions || ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3", this.setting.fileUploadMaxFileSizeMB = this.setting.botAdvancedSettings?.fileUploadMaxFileSizeMB || 30, this.setting.enableMultiModalConnection ? this.setting.enableAudio = !0 : this.setting.enableAudio = !1, this.initConversation(), this.shouldEngage === "true" && setTimeout(() => {
3300
3522
  this.showEngagePopup();
3301
3523
  }, this.setting.engageTimeout * 1e3);
3302
3524
  }
3303
3525
  const e = new URLSearchParams(window.location.search);
3304
3526
  if (e.has("c7o_bot_open")) {
3305
3527
  const t = e.get("c7o_bot_open");
3306
- this.open = t !== "false" && t !== "no" && t !== "0", $.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
3528
+ this.open = t !== "false" && t !== "no" && t !== "0", E.info(`C7O-BOT:INIT: Force open=${this.open} from query parameter c7o_bot_open=${e.get("c7o_bot_open")}`);
3307
3529
  }
3308
- this.connectWs === "true" && ($.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
3309
- $.error(`Exception during ws client startup: ${t.message}`);
3530
+ this.connectWs === "true" && (E.info("appState: connectWs is true"), this.getWsClient().catch((t) => {
3531
+ E.error(`Exception during ws client startup: ${t.message}`);
3310
3532
  })), setTimeout(() => {
3311
3533
  window.dispatchEvent(
3312
3534
  new CustomEvent("c7o:bot:stateEvent", {
@@ -3329,7 +3551,7 @@ class R extends Yt {
3329
3551
  this.initStartupForm();
3330
3552
  }
3331
3553
  async clearConversation(e = !0) {
3332
- await this.stopAudio(), this.mediaStartedAudio = !1, this.wsClient && e && (await this.wsClient.stop(), this.wsClient = null), this.connected = !1, this.conversationId = de(), this.lastConversationUpdate = Date.now(), e && (this.connectWs = "false", this.shouldEngage = "true"), this.messages = [], this.unreadMessages = 0, this.actions = [], this.context = this.currentLoadContext, this.form = null, this.addMessage({
3554
+ await this.stopAudio(), this.mediaStartedAudio = !1, this.wsClient && e && (await this.wsClient.stop(), this.wsClient = null), this.connected = !1, this.conversationId = fe(), this.lastConversationUpdate = Date.now(), e && (this.connectWs = "false", this.shouldEngage = "true"), this.messages = [], this.unreadMessages = 0, this.actions = [], this.showNewConversation = !1, this.context = this.currentLoadContext, this.form = null, this.addMessage({
3333
3555
  author: "assistant",
3334
3556
  type: "text",
3335
3557
  data: {
@@ -3337,6 +3559,19 @@ class R extends Yt {
3337
3559
  }
3338
3560
  }), this.initStartupForm();
3339
3561
  }
3562
+ // AGENT // ////////////////////////////////////////////////////
3563
+ async handleAgentDisconnected(e) {
3564
+ E.info(`c7o: Agent disconnected ${this.webAudioCurrentMark}`, e), this.addMessage({
3565
+ id: e?.id || null,
3566
+ author: "assistant",
3567
+ type: "text",
3568
+ data: {
3569
+ text: "_Left chat_",
3570
+ ...e.userName && { userName: e.userName },
3571
+ ...e.userAvatar && { userAvatar: e.userAvatar }
3572
+ }
3573
+ }), this.showNewConversation = !0;
3574
+ }
3340
3575
  // BROADCAST // ///////////////////////////////////////////////////
3341
3576
  async handleBroadcastMessage(e) {
3342
3577
  const t = e?.data || null;
@@ -3356,7 +3591,7 @@ class R extends Yt {
3356
3591
  // we will start actual audio capture only after we receive mediaStarted confirmation from server
3357
3592
  async startAudio() {
3358
3593
  this.mediaStartAudioRequested || (this.webAudioProcessor || (this.webAudioProcessor = new pt(), this.webAudioProcessor.on("audio", this.onAudioChunkCaptured.bind(this)), this.webAudioProcessor.on("playbackEnded", this.onPlaybackEnded.bind(this)), this.webAudioProcessor.on("terminate", this.onWebAudioTerminate.bind(this))), await this.sendEvent({
3359
- id: de(),
3594
+ id: fe(),
3360
3595
  type: "mediaStart",
3361
3596
  mediaType: "audio",
3362
3597
  mimeType: "audio/L16",
@@ -3370,7 +3605,7 @@ class R extends Yt {
3370
3605
  }
3371
3606
  async stopAudio() {
3372
3607
  this.webAudioProcessor && (this.webAudioProcessor.removeAllListeners(), await this.stopWebAudio(), this.webAudioProcessor = null, await this.sendEvent({
3373
- id: de(),
3608
+ id: fe(),
3374
3609
  type: "mediaStop",
3375
3610
  mediaType: "audio"
3376
3611
  }), this.postBroadcastMessage({
@@ -3394,7 +3629,7 @@ class R extends Yt {
3394
3629
  }
3395
3630
  async onAudioChunkCaptured(e) {
3396
3631
  !e || !e.audio || await this.sendEvent({
3397
- id: de(),
3632
+ id: fe(),
3398
3633
  type: "media",
3399
3634
  mediaType: "audio",
3400
3635
  media: {
@@ -3404,8 +3639,8 @@ class R extends Yt {
3404
3639
  }
3405
3640
  // When finished playing audio, clear trackId and send mark message
3406
3641
  async onPlaybackEnded() {
3407
- this.webAudioCurrentMark && ($.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
3408
- id: de(),
3642
+ this.webAudioCurrentMark && (E.info(`c7o: mark ${this.webAudioCurrentMark} completed`), await this.sendEvent({
3643
+ id: fe(),
3409
3644
  type: "mediaMark",
3410
3645
  mark: {
3411
3646
  name: this.webAudioCurrentMark
@@ -3413,7 +3648,7 @@ class R extends Yt {
3413
3648
  }), this.webAudioCurrentMark = null, this.webAudioTrackId = null);
3414
3649
  }
3415
3650
  async onWebAudioTerminate() {
3416
- $.info("c7o: terminating audio"), await this.stopAudio();
3651
+ E.info("c7o: terminating audio"), await this.stopAudio();
3417
3652
  }
3418
3653
  // Confirmation from server that media started
3419
3654
  // {"type":"mediaStarted","mediaType":"audio","mediaTransport":"webmedia","webmedia":{"mimeType":"audio/L16","mediaSpec":{"sampleRate":24000,"channels":1}}}
@@ -3432,16 +3667,16 @@ class R extends Yt {
3432
3667
  if (!e || e?.type !== "media" || !e?.media || e?.mediaType !== "audio" || !e?.media?.payload || !this.webAudioProcessor || !this.webAudioStarted)
3433
3668
  return;
3434
3669
  const t = e.media.payload;
3435
- this.webAudioTrackId || (this.webAudioTrackId = de()), $.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
3670
+ this.webAudioTrackId || (this.webAudioTrackId = fe()), E.info(`${Date.now()}: Playing audio: ${t.length} bytes, trackId: ${this.webAudioTrackId}`), await this.webAudioProcessor.playAudio(t, this.webAudioTrackId);
3436
3671
  }
3437
3672
  // {"type": "mediaMark","mark": {"name": "1757277902935"}}
3438
3673
  async handleMediaMark(e) {
3439
- !this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, $.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
3674
+ !this.webAudioProcessor || !this.webAudioStarted || (this.webAudioCurrentMark = e?.mark?.name || null, E.info(`c7o: Current media mark set to ${this.webAudioCurrentMark}`, e));
3440
3675
  }
3441
3676
  // Confirmation from server that media stopped
3442
3677
  //{"type":"mediaClear","mediaType":"audio"}
3443
3678
  async handleMediaClear(e) {
3444
- $.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
3679
+ E.info("c7o: Got mediaClear, clearing buffered media", e), this.mediaStartedAudio = !1, !(!this.webAudioProcessor || !this.webAudioStarted) && (this.webAudioTrackId = null, await this.webAudioProcessor.interruptAudio());
3445
3680
  }
3446
3681
  // ////////////////////////////////////////////////////////////
3447
3682
  setPrefilledFormFields(e) {
@@ -3464,15 +3699,15 @@ class R extends Yt {
3464
3699
  return;
3465
3700
  const e = await this.getWsClient();
3466
3701
  if (!e) {
3467
- $.error("Error - failed to obtain ws client");
3702
+ E.error("Error - failed to obtain ws client");
3468
3703
  return;
3469
3704
  }
3470
3705
  const t = {
3471
- id: de(),
3706
+ id: fe(),
3472
3707
  type: "setContext",
3473
3708
  contextData: this.context
3474
3709
  };
3475
- e.sendMessage(t), $.info("Sent context:", this.context);
3710
+ e.sendMessage(t), E.info("Sent context:", this.context);
3476
3711
  }
3477
3712
  getContext() {
3478
3713
  return this.context;
@@ -3487,7 +3722,7 @@ class R extends Yt {
3487
3722
  }
3488
3723
  const e = Nt(null, ["startupForm"], this.botSettings);
3489
3724
  if (!e || !e?.name) {
3490
- $.info("Startup form not present");
3725
+ E.info("Startup form not present");
3491
3726
  return;
3492
3727
  }
3493
3728
  this.initForm(e);
@@ -3498,20 +3733,20 @@ class R extends Yt {
3498
3733
  return;
3499
3734
  const s = Nt(null, ["fields"], e);
3500
3735
  if (!Array.isArray(s) || s.length <= 0) {
3501
- $.info("form has no fields", e);
3736
+ E.info("form has no fields", e);
3502
3737
  return;
3503
3738
  }
3504
- const r = `${re}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
3739
+ const r = `${ne}${this.setting.botId}.${this.conversationId}.form.${i}`, o = localStorage.getItem(r);
3505
3740
  if (o) {
3506
3741
  let f = null;
3507
3742
  try {
3508
3743
  f = JSON.parse(o);
3509
3744
  } catch (p) {
3510
- $.error(`Failed to parse stored form data: ${p.message}`), f = null;
3745
+ E.error(`Failed to parse stored form data: ${p.message}`), f = null;
3511
3746
  }
3512
3747
  if (f) {
3513
3748
  this.sendFormData(i, f).catch((p) => {
3514
- $.error(`Error when submitting form: ${p.message}`);
3749
+ E.error(`Error when submitting form: ${p.message}`);
3515
3750
  });
3516
3751
  return;
3517
3752
  }
@@ -3522,7 +3757,7 @@ class R extends Yt {
3522
3757
  this.engage = !1, this.shouldEngage = "false";
3523
3758
  }
3524
3759
  showEngagePopup() {
3525
- this.open || ($.info("Engaging User !"), this.engage = !0, this.playAudioNotification());
3760
+ this.open || (E.info("Engaging User !"), this.engage = !0, this.playAudioNotification());
3526
3761
  }
3527
3762
  playAudioNotification() {
3528
3763
  if (!this.setting.enableNotificationSound)
@@ -3533,7 +3768,7 @@ class R extends Yt {
3533
3768
  o[f] = parseInt(r.substr(f * 2, 2), 16);
3534
3769
  return o;
3535
3770
  };
3536
- let t = new Blob([e(Ss)], { type: "application/octet-stream" });
3771
+ let t = new Blob([e(Is)], { type: "application/octet-stream" });
3537
3772
  const i = URL.createObjectURL(t);
3538
3773
  new Audio(i).play();
3539
3774
  }
@@ -3546,7 +3781,7 @@ class R extends Yt {
3546
3781
  if (this.wsClient)
3547
3782
  return this.wsClient;
3548
3783
  let t = `${this.setting.url.startsWith("localhost") ? "ws" : "wss"}://${this.setting.url}/api/bot/connect/${this.setting.orgId}/${this.setting.botId}/${this.conversationId}`;
3549
- return this.setting.enableMultiModalConnection && (t += "?multiModal=true", $.info("MultiModal connection enabled - adding multiModal=true parameter")), $.info(`Initiating ws connection to ${t} ...`), this.wsClient = new Qi({
3784
+ return this.setting.enableMultiModalConnection && (t += "?multiModal=true", E.info("MultiModal connection enabled - adding multiModal=true parameter")), E.info(`Initiating ws connection to ${t} ...`), this.wsClient = new ts({
3550
3785
  url: t,
3551
3786
  orgId: this.setting.orgId,
3552
3787
  botId: this.setting.botId,
@@ -3566,11 +3801,11 @@ class R extends Yt {
3566
3801
  }), await this.wsClient.start(), this.connectWs = "true", this.wsClient;
3567
3802
  }
3568
3803
  handleWscClose(e) {
3569
- $.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
3804
+ E.info(`WSC: connection closed, connected: ${this.wsClient?.connected}`, e), this.stopWebAudio().catch((t) => {
3570
3805
  }), this.connected = !1;
3571
3806
  }
3572
3807
  async handleWscConnectError(e) {
3573
- $.info("WSC: connect error - resetting conversation", e);
3808
+ E.info("WSC: connect error - resetting conversation", e);
3574
3809
  const t = this.wsClient?.url || null;
3575
3810
  if (this.wsClient)
3576
3811
  try {
@@ -3596,15 +3831,15 @@ class R extends Yt {
3596
3831
  const s = t.includes("?"), [r, o] = s ? t.split("?") : [t, ""], f = r.split("/");
3597
3832
  f[f.length - 1] = this.conversationId;
3598
3833
  const p = f.join("/"), v = o ? `${p}?${o}` : p;
3599
- this.wsClient.url = v, await As(1e3), await this.wsClient.start(), $.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
3834
+ this.wsClient.url = v, await $s(1e3), await this.wsClient.start(), E.info(`WSC: started new conversation, conversationId=${this.conversationId}`);
3600
3835
  } catch (i) {
3601
- $.error(`WSC: failed to reset conversation: ${i.message}`, i);
3836
+ E.error(`WSC: failed to reset conversation: ${i.message}`, i);
3602
3837
  }
3603
3838
  }
3604
3839
  handleWscConnecting(e) {
3605
- $.info(`WSC: on connecting(${e}), connected: ${this.wsClient?.connected}`), this.connecting = e, !this.connecting && this.wsClient?.connected ? (this.connected = !0, this.context && typeof this.context == "object" && Object.keys(this.context).length > 0 && this.wsClient.queueMessage(
3840
+ E.info(`WSC: on connecting(${e}), connected: ${this.wsClient?.connected}`), this.connecting = e, !this.connecting && this.wsClient?.connected ? (this.connected = !0, this.context && typeof this.context == "object" && Object.keys(this.context).length > 0 && this.wsClient.queueMessage(
3606
3841
  {
3607
- id: de(),
3842
+ id: fe(),
3608
3843
  type: "setContext",
3609
3844
  contextData: this.context
3610
3845
  },
@@ -3619,7 +3854,7 @@ class R extends Yt {
3619
3854
  }
3620
3855
  // Update typing state based on received message
3621
3856
  updateTypingState(e) {
3622
- this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, $.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, $.info("c7o: typing started"));
3857
+ this.typingActive ? e && ["message", "message-chunk", "media", "typing-stopped"].includes(e?.type) && (this.typingActive = !1, E.info("c7o: typing stopped")) : e && e?.type === "typing" && (this.typingActive = !0, E.info("c7o: typing started"));
3623
3858
  }
3624
3859
  handleWscMessage(e) {
3625
3860
  if (e?.type === "ack")
@@ -3692,22 +3927,14 @@ class R extends Yt {
3692
3927
  break;
3693
3928
  }
3694
3929
  case "agent-disconnected": {
3695
- this.addMessage({
3696
- id: e?.id || null,
3697
- author: "assistant",
3698
- type: "text",
3699
- data: {
3700
- text: "_Left chat_",
3701
- ...e.userName && { userName: e.userName },
3702
- ...e.userAvatar && { userAvatar: e.userAvatar }
3703
- }
3930
+ this.handleAgentDisconnected(e).catch((i) => {
3704
3931
  });
3705
3932
  break;
3706
3933
  }
3707
3934
  //{"type":"agent-connected","author":"assistant","userName":"SF DEV ADMIN"}
3708
3935
  //{"type":"agent-disconnected","author":"assistant","userName":"SF DEV ADMIN"}
3709
3936
  case "form": {
3710
- if ($.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
3937
+ if (E.info("Got form:", e), this.replyMessage && this.replyMessage.id) {
3711
3938
  const i = this.replyMessage.data?.text || "";
3712
3939
  (this.replyMessage.isThinking || i.trim() === "") && (this.removeMessage(this.replyMessage.id), this.replyMessage = null);
3713
3940
  }
@@ -3753,7 +3980,7 @@ class R extends Yt {
3753
3980
  if (e !== -1)
3754
3981
  if (this.setting.splitMessagesAtBreak) {
3755
3982
  const t = this.streamingResponseBuffer.substring(0, e).trim(), i = this.streamingResponseBuffer.substring(e + 4).trim();
3756
- (t !== "" || this.replyMessage?.data?.text !== "") && ($.info(`BREAK: Splitting the message: ${this.streamingResponseBuffer} >>> prev: ${t} next: ${i}`), this.replyMessage = this.updateMessage(this.replyMessage, t), this.replyMessage = { author: "assistant", type: "text", isThinking: !1, data: { text: i } }, this.addMessage(this.replyMessage));
3983
+ (t !== "" || this.replyMessage?.data?.text !== "") && (E.info(`BREAK: Splitting the message: ${this.streamingResponseBuffer} >>> prev: ${t} next: ${i}`), this.replyMessage = this.updateMessage(this.replyMessage, t), this.replyMessage = { author: "assistant", type: "text", isThinking: !1, data: { text: i } }, this.addMessage(this.replyMessage));
3757
3984
  } else
3758
3985
  this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer);
3759
3986
  this.streamingResponseBuffer = null, this.streamingResponseTagStartPos = 0, this.streamingResponseCurrentTag = null;
@@ -3762,11 +3989,11 @@ class R extends Yt {
3762
3989
  if (!this.streamingResponseBuffer || !this.replyMessage)
3763
3990
  return;
3764
3991
  if (this.streamingResponseBuffer.indexOf("![") === -1) {
3765
- $.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
3992
+ E.info(`NOT IMG TAG: ${this.streamingResponseBuffer}`), this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null;
3766
3993
  return;
3767
3994
  }
3768
3995
  const e = this.streamingResponseBuffer.lastIndexOf("]"), t = this.streamingResponseBuffer.lastIndexOf(")");
3769
- e === -1 || t === -1 || e > t || ($.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
3996
+ e === -1 || t === -1 || e > t || (E.info(`IMG TAG END: ${this.streamingResponseBuffer}`), this.isValidImageLink(this.streamingResponseBuffer) && (this.replyMessage = this.updateMessage(this.replyMessage, this.streamingResponseBuffer)), this.streamingResponseBuffer = null, this.streamingResponseCurrentTag = null);
3770
3997
  }
3771
3998
  isValidImageLink(e = "") {
3772
3999
  return !(e.indexOf("example.com") !== -1 || e.indexOf("imgur.com") !== -1 || e.indexOf("attachment:") !== -1);
@@ -3786,7 +4013,7 @@ class R extends Yt {
3786
4013
  this.streamingResponseBuffer = e, this.streamingResponseTagStartPos = e.indexOf("<"), this.streamingResponseCurrentTag = "br";
3787
4014
  return;
3788
4015
  } else if (e.indexOf("![") !== -1 || e.endsWith("!")) {
3789
- this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", $.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
4016
+ this.streamingResponseBuffer = e, this.streamingResponseCurrentTag = "img", E.info(`IMG TAG START: ${this.streamingResponseBuffer}`);
3790
4017
  return;
3791
4018
  }
3792
4019
  this.streamingResponseLastText = t, this.replyMessage = this.updateMessage(this.replyMessage, t);
@@ -3842,7 +4069,7 @@ class R extends Yt {
3842
4069
  detail: f
3843
4070
  })
3844
4071
  ), this.sendActionCompleted(f).catch((p) => {
3845
- $.error(`Error: failed to send action completed: ${p.message}`);
4072
+ E.error(`Error: failed to send action completed: ${p.message}`);
3846
4073
  });
3847
4074
  }
3848
4075
  this.actions.splice(s, 1);
@@ -3860,10 +4087,10 @@ class R extends Yt {
3860
4087
  }
3861
4088
  }
3862
4089
  async sendMessage(e) {
3863
- e = this.formatMessage(e), $.info("Send Message:", e), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
4090
+ e = this.formatMessage(e), E.info("Send Message:", e), this.showNewConversation && (this.showNewConversation = !1), this.messages = this.messages.concat([e]), this.lastConversationUpdate = Date.now();
3864
4091
  const t = await this.getWsClient();
3865
4092
  if (!t) {
3866
- $.error("Error - failed to obtain ws client"), this.replyMessage = null;
4093
+ E.error("Error - failed to obtain ws client"), this.replyMessage = null;
3867
4094
  return;
3868
4095
  }
3869
4096
  t.sendMessage({
@@ -3874,7 +4101,7 @@ class R extends Yt {
3874
4101
  }
3875
4102
  // TODO revisit below
3876
4103
  formatMessage(e) {
3877
- return e.id || (e.id = de()), e.timestamp || (e.timestamp = Date.now()), e.author === "assistant" && !e.replyId && (e.replyId = this.messages.findLast((t) => t.author === "user")?.id || void 0), e;
4104
+ return e.id || (e.id = fe()), e.timestamp || (e.timestamp = Date.now()), e.author === "assistant" && !e.replyId && (e.replyId = this.messages.findLast((t) => t.author === "user")?.id || void 0), e;
3878
4105
  }
3879
4106
  // add message
3880
4107
  addMessage(e) {
@@ -3909,16 +4136,16 @@ class R extends Yt {
3909
4136
  // Submit current form data
3910
4137
  async submitForm(e) {
3911
4138
  if (!this.form) {
3912
- $.info("submitForm: No form is active - ignored");
4139
+ E.info("submitForm: No form is active - ignored");
3913
4140
  return;
3914
4141
  }
3915
- const t = `${re}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
4142
+ const t = `${ne}${this.setting.botId}.${this.conversationId}.form.${this.form.name}`;
3916
4143
  await this.sendFormData(this.form.name, e), localStorage.setItem(t, JSON.stringify(e)), "name" in e && (this.feedbackName = e.name), "email" in e && (this.feedbackEmail = e.email), this.form = null;
3917
4144
  }
3918
4145
  async sendFormData(e, t) {
3919
4146
  const i = await this.getWsClient();
3920
4147
  if (!i) {
3921
- $.error("Error - failed to obtain ws client");
4148
+ E.error("Error - failed to obtain ws client");
3922
4149
  return;
3923
4150
  }
3924
4151
  i.sendMessage({
@@ -3930,7 +4157,7 @@ class R extends Yt {
3930
4157
  async sendActionCompleted(e) {
3931
4158
  const t = await this.getWsClient();
3932
4159
  if (!t) {
3933
- $.error("Error - failed to obtain ws client");
4160
+ E.error("Error - failed to obtain ws client");
3934
4161
  return;
3935
4162
  }
3936
4163
  t.sendMessage({
@@ -3941,7 +4168,7 @@ class R extends Yt {
3941
4168
  async sendEvent(e) {
3942
4169
  const t = await this.getWsClient();
3943
4170
  if (!t) {
3944
- $.error("Error - failed to obtain ws client");
4171
+ E.error("Error - failed to obtain ws client");
3945
4172
  return;
3946
4173
  }
3947
4174
  t.sendMessage(e);
@@ -3954,14 +4181,14 @@ class R extends Yt {
3954
4181
  this.feedbackMessages.push(t), this.feedbackUserMessage = this.messages.findLast((i) => i.id === t.replyId)?.data?.text || "", this.feedbackAnswer = t?.data.text || "", this.feedbackAnswerMessageId = t?.id || "", this.feedbackAnswerUserName = t?.data.userName || "", this.feedback = !0;
3955
4182
  }
3956
4183
  async submitFeedback(e, t, i) {
3957
- $.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
4184
+ E.info(`submitFeedback: ${this.feedbackScore}`), this.feedbackName = e, this.feedbackEmail = t;
3958
4185
  const s = await this.getWsClient();
3959
4186
  if (!s) {
3960
- $.error("Error - failed to obtain ws client"), this.replyMessage = null;
4187
+ E.error("Error - failed to obtain ws client"), this.replyMessage = null;
3961
4188
  return;
3962
4189
  }
3963
4190
  s.sendMessage({
3964
- id: de(),
4191
+ id: fe(),
3965
4192
  type: "feedback",
3966
4193
  score: this.feedbackScore,
3967
4194
  userMessage: this.feedbackUserMessage,
@@ -3998,76 +4225,88 @@ class R extends Yt {
3998
4225
  }
3999
4226
  async uploadFiles(e) {
4000
4227
  if (!e?.length) return;
4001
- const t = await this.filesToBase64(e);
4002
- $.info("Uploading files:", t);
4003
- const i = await this.getWsClient();
4004
- if (!i) {
4005
- $.error("Error - failed to obtain ws client");
4228
+ const t = b.setting.fileUploadMaxFileSizeMB || 30, i = t * 1024 * 1024, s = e?.find((v) => v.size > i);
4229
+ if (s) {
4230
+ E.error(
4231
+ `File "${s.name}" exceeds the ${t} MB limit and will not be uploaded.`
4232
+ ), Ya({
4233
+ message: `File is larger than ${t} MB`,
4234
+ variant: "danger",
4235
+ duration: 3800,
4236
+ closeable: !0
4237
+ });
4006
4238
  return;
4007
4239
  }
4008
- const s = de();
4009
- i.sendMessage({
4010
- id: s,
4240
+ const r = await this.filesToBase64(e);
4241
+ E.info("Uploading files:", r);
4242
+ const o = await this.getWsClient();
4243
+ if (!o) {
4244
+ E.error("Error - failed to obtain ws client");
4245
+ return;
4246
+ }
4247
+ const f = fe();
4248
+ o.sendMessage({
4249
+ id: f,
4011
4250
  type: "upload",
4012
- files: t
4251
+ files: r
4013
4252
  });
4014
- const r = {
4015
- id: s,
4253
+ const p = {
4254
+ id: f,
4016
4255
  timestamp: Date.now(),
4017
4256
  author: "user",
4018
4257
  type: "upload",
4019
4258
  data: {
4020
- uploadedFiles: t
4259
+ uploadedFiles: r
4021
4260
  }
4022
4261
  };
4023
- this.addMessage(r);
4262
+ this.addMessage(p);
4024
4263
  }
4025
4264
  notifyWidgetOpenState() {
4026
4265
  this.wsClient && this.wsClient.sendMessage({
4027
- id: de(),
4266
+ id: fe(),
4028
4267
  type: "widgetState",
4029
4268
  open: this.open
4030
4269
  });
4031
4270
  }
4032
4271
  }
4033
4272
  B([
4034
- fe({ prefix: re }),
4035
- O({ value: "en" })
4273
+ ce({ prefix: ne }),
4274
+ z({ value: "en" })
4036
4275
  ], R.prototype, "language");
4037
4276
  B([
4038
- fe({ prefix: re }),
4039
- O({ value: "light" })
4277
+ ce({ prefix: ne }),
4278
+ z({ value: "light" })
4040
4279
  ], R.prototype, "theme");
4041
4280
  B([
4042
- fe({ prefix: re }),
4043
- O({ type: Boolean, value: !1 })
4281
+ ce({ prefix: ne }),
4282
+ z({ type: Boolean, value: !1 })
4044
4283
  ], R.prototype, "open");
4045
4284
  B([
4046
- O({ type: Boolean, value: !1 })
4285
+ z({ type: Boolean, value: !1 })
4047
4286
  ], R.prototype, "alwaysOpen");
4048
4287
  B([
4049
- fe({ prefix: re }),
4050
- O({ value: "false" })
4288
+ ce({ prefix: ne }),
4289
+ z({ value: "false" })
4051
4290
  ], R.prototype, "connectWs");
4052
4291
  B([
4053
- fe({ prefix: re }),
4054
- O({ value: de() })
4292
+ ce({ prefix: ne }),
4293
+ z({ value: fe() })
4055
4294
  ], R.prototype, "conversationId");
4056
4295
  B([
4057
- fe({ prefix: re }),
4058
- O({ value: 0 })
4296
+ ce({ prefix: ne }),
4297
+ z({ value: 0 })
4059
4298
  ], R.prototype, "lastConversationUpdate");
4060
4299
  B([
4061
- fe({ prefix: re }),
4062
- O({ type: Array, value: [] })
4300
+ ce({ prefix: ne }),
4301
+ z({ type: Array, value: [] })
4063
4302
  ], R.prototype, "messages");
4064
4303
  B([
4065
- fe({ prefix: re }),
4066
- O({ value: 0 })
4304
+ ce({ prefix: ne }),
4305
+ z({ value: 0 })
4067
4306
  ], R.prototype, "unreadMessages");
4068
4307
  B([
4069
- fe({ prefix: re }),
4070
- O({
4308
+ ce({ prefix: ne }),
4309
+ z({
4071
4310
  type: Array,
4072
4311
  value: []
4073
4312
  /*
@@ -4111,40 +4350,44 @@ B([
4111
4350
  })
4112
4351
  ], R.prototype, "actions");
4113
4352
  B([
4114
- fe({ prefix: re }),
4115
- O({ type: Object, value: null })
4353
+ ce({ prefix: ne }),
4354
+ z({ type: Object, value: null })
4116
4355
  ], R.prototype, "form");
4117
4356
  B([
4118
- O({ type: Boolean, value: !1 })
4357
+ z({ type: Boolean, value: !1 })
4119
4358
  ], R.prototype, "botSettingsInitialized");
4120
4359
  B([
4121
- O({ type: Number, value: 5 })
4360
+ z({ type: Number, value: 5 })
4122
4361
  ], R.prototype, "botSettingsRetryTimeout");
4123
4362
  B([
4124
- O({ type: Object, value: null })
4363
+ z({ type: Object, value: null })
4125
4364
  ], R.prototype, "botSettings");
4126
4365
  B([
4127
- O({ type: Boolean, value: !0 })
4366
+ z({ type: Boolean, value: !0 })
4128
4367
  ], R.prototype, "disabled");
4129
4368
  B([
4130
- O({ type: Boolean, value: !1 })
4369
+ z({ type: Boolean, value: !1 })
4131
4370
  ], R.prototype, "connecting");
4132
4371
  B([
4133
- O({ type: Boolean, value: !1 })
4372
+ z({ type: Boolean, value: !1 })
4134
4373
  ], R.prototype, "connected");
4135
4374
  B([
4136
- fe({ prefix: re }),
4137
- O({ value: "true" })
4375
+ ce({ prefix: ne }),
4376
+ z({ value: "true" })
4138
4377
  ], R.prototype, "shouldEngage");
4139
4378
  B([
4140
- O({ type: Boolean, value: !1 })
4379
+ z({ type: Boolean, value: !1 })
4141
4380
  ], R.prototype, "engage");
4142
4381
  B([
4143
- O({ type: Boolean, value: !1 })
4382
+ ce({ prefix: ne }),
4383
+ z({ type: Boolean, value: !1 })
4384
+ ], R.prototype, "showNewConversation");
4385
+ B([
4386
+ z({ type: Boolean, value: !1 })
4144
4387
  ], R.prototype, "typingActive");
4145
4388
  B([
4146
- fe({ prefix: re }),
4147
- O({
4389
+ ce({ prefix: ne }),
4390
+ z({
4148
4391
  type: Object,
4149
4392
  value: {
4150
4393
  orgId: null,
@@ -4159,65 +4402,67 @@ B([
4159
4402
  newConversationTimeoutInSec: 86400,
4160
4403
  enableNotificationSound: !0,
4161
4404
  botAdvancedOptions: null,
4162
- enableMultiModalConnection: !1
4405
+ enableMultiModalConnection: !1,
4406
+ fileUploadEnabledExtensions: ".jpeg,.jpg,.png,.pdf,.txt,.har,.zip,.mov,.mp4,.mp3",
4407
+ fileUploadMaxFileSizeMB: 30
4163
4408
  }
4164
4409
  })
4165
4410
  ], R.prototype, "setting");
4166
4411
  B([
4167
- fe({ prefix: re }),
4168
- O({ type: Object, value: {} })
4412
+ ce({ prefix: ne }),
4413
+ z({ type: Object, value: {} })
4169
4414
  ], R.prototype, "context");
4170
4415
  B([
4171
- O({ type: String, value: "top-end" })
4416
+ z({ type: String, value: "top-end" })
4172
4417
  ], R.prototype, "appearanceAnchorPopupPosition");
4173
4418
  B([
4174
- O({ type: String, value: "danger" })
4419
+ z({ type: String, value: "danger" })
4175
4420
  ], R.prototype, "appearanceAnchorBadgeVariant");
4176
4421
  B([
4177
- O({ type: String, value: "right" })
4422
+ z({ type: String, value: "right" })
4178
4423
  ], R.prototype, "appearanceUserMessageAvatarPosition");
4179
4424
  B([
4180
- O({ type: Boolean, value: !1 })
4425
+ z({ type: Boolean, value: !1 })
4181
4426
  ], R.prototype, "feedback");
4182
4427
  B([
4183
- O({ type: Number, value: 5 })
4428
+ z({ type: Number, value: 5 })
4184
4429
  ], R.prototype, "feedbackScore");
4185
4430
  B([
4186
- O({ type: String, value: "" })
4431
+ z({ type: String, value: "" })
4187
4432
  ], R.prototype, "feedbackUserMessage");
4188
4433
  B([
4189
- O({ type: String, value: "" })
4434
+ z({ type: String, value: "" })
4190
4435
  ], R.prototype, "feedbackAnswerMessageId");
4191
4436
  B([
4192
- O({ type: String, value: "" })
4437
+ z({ type: String, value: "" })
4193
4438
  ], R.prototype, "feedbackAnswer");
4194
4439
  B([
4195
- O({ type: String, value: "" })
4440
+ z({ type: String, value: "" })
4196
4441
  ], R.prototype, "feedbackAnswerUserName");
4197
4442
  B([
4198
- O({ type: Array, value: [] })
4443
+ z({ type: Array, value: [] })
4199
4444
  ], R.prototype, "feedbackMessages");
4200
4445
  B([
4201
- fe({ prefix: re }),
4202
- O({ type: String, value: "" })
4446
+ ce({ prefix: ne }),
4447
+ z({ type: String, value: "" })
4203
4448
  ], R.prototype, "feedbackName");
4204
4449
  B([
4205
- fe({ prefix: re }),
4206
- O({ type: String, value: "" })
4450
+ ce({ prefix: ne }),
4451
+ z({ type: String, value: "" })
4207
4452
  ], R.prototype, "feedbackEmail");
4208
4453
  B([
4209
- O({ type: Boolean, value: !1 })
4454
+ z({ type: Boolean, value: !1 })
4210
4455
  ], R.prototype, "mediaStartAudioRequested");
4211
4456
  B([
4212
- O({ type: Boolean, value: !1 })
4457
+ z({ type: Boolean, value: !1 })
4213
4458
  ], R.prototype, "mediaStartedAudio");
4214
4459
  B([
4215
- O({ type: Boolean, value: !1 })
4460
+ z({ type: Boolean, value: !1 })
4216
4461
  ], R.prototype, "webAudioStarted");
4217
4462
  B([
4218
- O({ type: Boolean, value: !1 })
4463
+ z({ type: Boolean, value: !1 })
4219
4464
  ], R.prototype, "webAudioMuted");
4220
- const b = new R(), Ms = J`
4465
+ const b = new R(), Ps = J`
4221
4466
  ${ke}
4222
4467
  :host {
4223
4468
  position: relative;
@@ -4292,12 +4537,12 @@ const b = new R(), Ms = J`
4292
4537
  display: inline;
4293
4538
  }
4294
4539
  `;
4295
- var Ts = Object.defineProperty, Is = (a, e, t, i) => {
4540
+ var Ls = Object.defineProperty, Rs = (a, e, t, i) => {
4296
4541
  for (var s = void 0, r = a.length - 1, o; r >= 0; r--)
4297
4542
  (o = a[r]) && (s = o(e, t, s) || s);
4298
- return s && Ts(e, t, s), s;
4543
+ return s && Ls(e, t, s), s;
4299
4544
  };
4300
- zi("system", {
4545
+ Oi("system", {
4301
4546
  resolver: (a) => ""
4302
4547
  });
4303
4548
  (() => {
@@ -4307,7 +4552,7 @@ zi("system", {
4307
4552
  return !1;
4308
4553
  }
4309
4554
  })();
4310
- class ne extends Fe {
4555
+ class re extends Fe {
4311
4556
  constructor() {
4312
4557
  super(...arguments), this.lang = "en";
4313
4558
  }
@@ -4334,16 +4579,16 @@ class ne extends Fe {
4334
4579
  return this.dispatchEvent(i), i;
4335
4580
  }
4336
4581
  }
4337
- Is([
4582
+ Rs([
4338
4583
  x({ type: String })
4339
- ], ne.prototype, "lang");
4340
- var Es = Object.defineProperty, $s = Object.getOwnPropertyDescriptor, Ya = (a, e, t, i) => {
4341
- for (var s = i > 1 ? void 0 : i ? $s(e, t) : e, r = a.length - 1, o; r >= 0; r--)
4584
+ ], re.prototype, "lang");
4585
+ var zs = Object.defineProperty, Bs = Object.getOwnPropertyDescriptor, Ja = (a, e, t, i) => {
4586
+ for (var s = i > 1 ? void 0 : i ? Bs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
4342
4587
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
4343
- return i && s && Es(e, t, s), s;
4588
+ return i && s && zs(e, t, s), s;
4344
4589
  };
4345
- const Ps = '<svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>';
4346
- let zt = class extends ne {
4590
+ const Os = '<svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"></path></svg>';
4591
+ let zt = class extends re {
4347
4592
  constructor() {
4348
4593
  super(...arguments), this.title = "ChatBot";
4349
4594
  }
@@ -4363,7 +4608,7 @@ let zt = class extends ne {
4363
4608
  ${W(
4364
4609
  b.alwaysOpen,
4365
4610
  () => u``,
4366
- () => u`<div class="cb-header-close" part="header-close">${Y(Ps)}</div>`
4611
+ () => u`<div class="cb-header-close" part="header-close">${Y(Os)}</div>`
4367
4612
  )}
4368
4613
  </header>`;
4369
4614
  }
@@ -4405,14 +4650,14 @@ let zt = class extends ne {
4405
4650
  });
4406
4651
  }
4407
4652
  };
4408
- zt.styles = Ms;
4409
- Ya([
4653
+ zt.styles = Ps;
4654
+ Ja([
4410
4655
  x({ type: String, attribute: "title" })
4411
4656
  ], zt.prototype, "title", 2);
4412
- zt = Ya([
4657
+ zt = Ja([
4413
4658
  K("cb-header")
4414
4659
  ], zt);
4415
- const Ls = J`
4660
+ const qs = J`
4416
4661
  ${ke}
4417
4662
  .cb-footer {
4418
4663
  line-height: 60px;
@@ -4427,12 +4672,12 @@ const Ls = J`
4427
4672
  color: var(--primary-color);
4428
4673
  }
4429
4674
  `;
4430
- var Rs = Object.getOwnPropertyDescriptor, zs = (a, e, t, i) => {
4431
- for (var s = i > 1 ? void 0 : i ? Rs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
4675
+ var Ds = Object.getOwnPropertyDescriptor, Fs = (a, e, t, i) => {
4676
+ for (var s = i > 1 ? void 0 : i ? Ds(e, t) : e, r = a.length - 1, o; r >= 0; r--)
4432
4677
  (o = a[r]) && (s = o(s) || s);
4433
4678
  return s;
4434
4679
  };
4435
- let Jt = class extends ne {
4680
+ let Jt = class extends re {
4436
4681
  constructor() {
4437
4682
  super(...arguments), this.year = (/* @__PURE__ */ new Date()).getFullYear();
4438
4683
  }
@@ -4467,11 +4712,11 @@ let Jt = class extends ne {
4467
4712
  `;
4468
4713
  }
4469
4714
  };
4470
- Jt.styles = Ls;
4471
- Jt = zs([
4715
+ Jt.styles = qs;
4716
+ Jt = Fs([
4472
4717
  K("cb-footer")
4473
4718
  ], Jt);
4474
- const Os = J`
4719
+ const js = J`
4475
4720
  ${ke}
4476
4721
 
4477
4722
  :host {
@@ -4672,7 +4917,7 @@ const Os = J`
4672
4917
  background-size: 100%;
4673
4918
  transition: background 0s;
4674
4919
  }
4675
- `, Bs = J`
4920
+ `, Ka = J`
4676
4921
  :host {
4677
4922
  --primary-color: var(--sl-color-primary-600);
4678
4923
  }
@@ -4826,7 +5071,7 @@ const Os = J`
4826
5071
  .card-btn[aria-disabled="true"]:focus-visible {
4827
5072
  box-shadow: none;
4828
5073
  }
4829
- `, Ja = J`
5074
+ `, Za = J`
4830
5075
  :host {
4831
5076
  --primary-color: var(--sl-color-primary-600);
4832
5077
  }
@@ -4917,10 +5162,10 @@ const Os = J`
4917
5162
  }
4918
5163
  .split-btn[aria-expanded="true"] .split-btn__caret { transform: rotate(180deg); }
4919
5164
  `;
4920
- var qs = Object.defineProperty, Ds = Object.getOwnPropertyDescriptor, je = (a, e, t, i) => {
4921
- for (var s = i > 1 ? void 0 : i ? Ds(e, t) : e, r = a.length - 1, o; r >= 0; r--)
5165
+ var Hs = Object.defineProperty, Vs = Object.getOwnPropertyDescriptor, je = (a, e, t, i) => {
5166
+ for (var s = i > 1 ? void 0 : i ? Vs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
4922
5167
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
4923
- return i && s && qs(e, t, s), s;
5168
+ return i && s && Hs(e, t, s), s;
4924
5169
  };
4925
5170
  let gt = class extends Fe {
4926
5171
  constructor() {
@@ -5101,7 +5346,7 @@ let Ge = class extends Fe {
5101
5346
  this._onDocPointerDown && (document.removeEventListener("pointerdown", this._onDocPointerDown, { capture: !0 }), this._onDocPointerDown = void 0), this._onKeydown && (document.removeEventListener("keydown", this._onKeydown, { capture: !0 }), this._onKeydown = void 0);
5102
5347
  }
5103
5348
  };
5104
- Ge.styles = Ja;
5349
+ Ge.styles = Za;
5105
5350
  je([
5106
5351
  x({ type: String })
5107
5352
  ], Ge.prototype, "variant", 2);
@@ -5120,220 +5365,6 @@ je([
5120
5365
  Ge = je([
5121
5366
  K("cb-split-button")
5122
5367
  ], Ge);
5123
- var Fs = Object.defineProperty, js = Object.getOwnPropertyDescriptor, st = (a, e, t, i) => {
5124
- for (var s = i > 1 ? void 0 : i ? js(e, t) : e, r = a.length - 1, o; r >= 0; r--)
5125
- (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
5126
- return i && s && Fs(e, t, s), s;
5127
- };
5128
- const Mt = "cb-toast-outlet", Ia = "cb-toast-outlet-style";
5129
- function Hs() {
5130
- let a = document.getElementById(Mt);
5131
- if (a || (a = document.createElement("div"), a.id = Mt, document.body.appendChild(a)), !document.getElementById(Ia)) {
5132
- const e = document.createElement("style");
5133
- e.id = Ia, e.textContent = `
5134
- /* Global outlet that holds all toasts */
5135
- #${Mt} {
5136
- position: fixed;
5137
- right: 40px;
5138
- bottom: 55px;
5139
- display: flex;
5140
- flex-direction: column;
5141
- gap: 10px;
5142
- z-index: 2147483646; /* below very-top overlays if any */
5143
- align-items: flex-end;
5144
- pointer-events: none; /* clicks pass through except on toast itself */
5145
- }
5146
- @media (max-width: 600px) {
5147
- #${Mt} {
5148
- left: 8px;
5149
- right: 8px;
5150
- align-items: stretch; /* stretch toasts to full width on mobile */
5151
- }
5152
- }
5153
- `, document.head.appendChild(e);
5154
- }
5155
- return a;
5156
- }
5157
- function Vs(a) {
5158
- const e = Hs(), t = document.createElement("cb-toast");
5159
- return t.message = a.message, t.variant = a.variant ?? "success", t.duration = typeof a.duration == "number" ? a.duration : 3e3, t.closeable = !0, t.icon = a.icon ?? "", t.ariaLive = a.ariaLive ?? "polite", e.appendChild(t), t;
5160
- }
5161
- let qe = class extends Fe {
5162
- constructor() {
5163
- super(...arguments), this.message = "", this.variant = "success", this.duration = 3e3, this.closeable = !1, this.icon = "", this.ariaLive = "polite", this._open = !1, this._closing = !1, this._defaultIcons = {
5164
- success: "✓",
5165
- danger: "❌",
5166
- warning: "⚠️",
5167
- info: "ℹ️",
5168
- neutral: "💬",
5169
- primary: "⭐"
5170
- };
5171
- }
5172
- connectedCallback() {
5173
- super.connectedCallback(), queueMicrotask(() => this.open());
5174
- }
5175
- disconnectedCallback() {
5176
- super.disconnectedCallback(), this._clearTimer();
5177
- }
5178
- render() {
5179
- const a = ["toast", this.variant, this._open ? "open" : "", this._closing ? "closing" : ""].filter(Boolean).join(" "), e = this.icon || this._defaultIcons[this.variant] || this._defaultIcons.success;
5180
- return u`
5181
- <div
5182
- class=${a}
5183
- role="status"
5184
- aria-live=${this.ariaLive}
5185
- >
5186
- ${u`<span class="icon" aria-hidden="true">${this._renderIcon(e)}</span>`}
5187
- <div class="msg">
5188
- ${this.message ? u`${this.message}` : u`<slot></slot>`}
5189
- </div>
5190
- ${this.closeable ? u`<button class="close" @click=${this.close} aria-label="Close">×</button>` : Ae}
5191
- </div>
5192
- `;
5193
- }
5194
- /** Programmatic API */
5195
- open() {
5196
- this._open || (this._open = !0, this.requestUpdate(), this.duration > 0 && (this._timer = window.setTimeout(() => this.close(), this.duration)));
5197
- }
5198
- async close() {
5199
- this._closing || (this._closing = !0, this.requestUpdate(), await new Promise((a) => setTimeout(() => a(), 200)), this.remove());
5200
- }
5201
- _clearTimer() {
5202
- this._timer && (clearTimeout(this._timer), this._timer = void 0);
5203
- }
5204
- _renderIcon(a) {
5205
- return a.trim().startsWith("<") ? u`${Y(a)}` : a;
5206
- }
5207
- };
5208
- qe.styles = J`
5209
- :host {
5210
- display: block;
5211
- pointer-events: auto; /* receive pointer events within toast */
5212
- contain: content;
5213
- font-size: var(--enegelai-bot-base-font-size, 16px);
5214
- font-family: system-ui, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol';
5215
- }
5216
-
5217
- .toast {
5218
- --_bg: var(--sl-color-success-600, #2f9e44);
5219
- --_fg: #fff;
5220
- --_border: transparent;
5221
-
5222
- display: grid;
5223
- grid-template-columns: auto 1fr auto;
5224
- align-items: center;
5225
- gap: 10px;
5226
-
5227
- font-size: 0.7em;
5228
- font-weight: 400;
5229
-
5230
- max-width: min(420px, 92vw);
5231
- padding: 16px 20px;
5232
- border-radius: 12px;
5233
- border: 1px solid var(--_border);
5234
- background: var(--_bg);
5235
- background: color-mix(in srgb, var(--_bg) 85%, transparent);
5236
- color: var(--_fg);
5237
- box-shadow:
5238
- 0 10px 15px -3px rgba(0,0,0,.1),
5239
- 0 4px 6px -4px rgba(0,0,0,.08);
5240
-
5241
- opacity: 0;
5242
- transform: translateY(6px);
5243
- transition: opacity 1s ease, transform 1s ease, filter 1s ease;
5244
- }
5245
-
5246
- .toast.open {
5247
- opacity: 1;
5248
- transform: translateY(0);
5249
- }
5250
-
5251
- .toast.closing {
5252
- opacity: 0;
5253
- transform: translateY(6px);
5254
- filter: saturate(.9) brightness(.98);
5255
- }
5256
-
5257
- .icon {
5258
- display: inline-flex;
5259
- align-items: center;
5260
- justify-content: center;
5261
- width: 22px;
5262
- height: 22px;
5263
- line-height: 1;
5264
- font-size: 22px;
5265
- user-select: none;
5266
- background: transparent; /* ensure transparent background */
5267
- }
5268
-
5269
- .msg {
5270
- font-size: 1.5em;
5271
- line-height: 1.25;
5272
- word-break: break-word;
5273
- }
5274
-
5275
- .close {
5276
- appearance: none;
5277
- background: transparent;
5278
- border: none;
5279
- color: inherit;
5280
- font: inherit;
5281
- font-size: 20px;
5282
- cursor: pointer;
5283
- opacity: .9;
5284
- width: 28px;
5285
- height: 28px;
5286
- border-radius: 50%;
5287
- display: inline-flex;
5288
- align-items: center;
5289
- justify-content: center;
5290
- transition: background 1s ease, transform 1s ease;
5291
- }
5292
- .close:hover { background: color-mix(in srgb, #000 10%, transparent); }
5293
- .close:active { transform: scale(.94); }
5294
- .close:focus-visible {
5295
- outline: none;
5296
- box-shadow: 0 0 0 3px color-mix(in srgb, #fff 60%, transparent);
5297
- }
5298
-
5299
- /* Variants — keep parity with your button palette */
5300
- .toast.success { --_bg: var(--sl-color-success-600, #2f9e44); --_fg: #fff; }
5301
- .toast.info { --_bg: var(--sl-color-info-600, #0b7285); --_fg: #fff; }
5302
- .toast.warning { --_bg: var(--sl-color-warning-600, #f08c00); --_fg: #212529; }
5303
- .toast.danger { --_bg: var(--sl-color-danger-600, #c92a2a); --_fg: #fff; }
5304
- .toast.primary { --_bg: var(--sl-color-primary-600, hsl(200.4 98% 39.4%)); --_fg: #fff; }
5305
- .toast.neutral {
5306
- --_bg: var(--sl-color-neutral-50, hsl(0 0% 97.5%));
5307
- --_fg: var(--sl-color-neutral-900, hsl(240 5.9% 10%));
5308
- --_border: var(--sl-color-neutral-300, #d1d5db);
5309
- }
5310
-
5311
- /* Mobile fine-tuning: give a bit more padding */
5312
- @media (max-width: 600px) {
5313
- .toast { padding: 12px; }
5314
- }
5315
- `;
5316
- st([
5317
- x({ type: String })
5318
- ], qe.prototype, "message", 2);
5319
- st([
5320
- x({ type: String })
5321
- ], qe.prototype, "variant", 2);
5322
- st([
5323
- x({ type: Number })
5324
- ], qe.prototype, "duration", 2);
5325
- st([
5326
- x({ type: Boolean })
5327
- ], qe.prototype, "closeable", 2);
5328
- st([
5329
- x({ type: String })
5330
- ], qe.prototype, "icon", 2);
5331
- st([
5332
- x({ type: String })
5333
- ], qe.prototype, "ariaLive", 2);
5334
- qe = st([
5335
- K("cb-toast")
5336
- ], qe);
5337
5368
  var Us = Object.defineProperty, Ns = Object.getOwnPropertyDescriptor, wt = (a, e, t, i) => {
5338
5369
  for (var s = i > 1 ? void 0 : i ? Ns(e, t) : e, r = a.length - 1, o; r >= 0; r--)
5339
5370
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
@@ -5659,17 +5690,18 @@ let Me = class extends Fe {
5659
5690
  body: JSON.stringify(r)
5660
5691
  });
5661
5692
  if (!o.ok) {
5662
- Tt.error("c7o: cart/add.js failed"), Vs({
5693
+ Tt.error("c7o: cart/add.js failed"), Ya({
5663
5694
  message: "Unable to add item to cart.",
5664
5695
  variant: "danger",
5665
- duration: 2800
5696
+ duration: 2800,
5697
+ closeable: !0
5666
5698
  });
5667
5699
  return;
5668
5700
  }
5669
5701
  await o.json(), Tt.info("c7o: cart/add.js - cart updated"), Tt.info("c7o: reloading window after cart update"), window.location.reload();
5670
5702
  }
5671
5703
  };
5672
- Me.styles = [Ws, Bs, Ja];
5704
+ Me.styles = [Ws, Ka, Za];
5673
5705
  Me.DRAG_THRESHOLD_PX = 10;
5674
5706
  wt([
5675
5707
  x({ type: Object })
@@ -5686,12 +5718,12 @@ wt([
5686
5718
  Me = wt([
5687
5719
  K("cb-block")
5688
5720
  ], Me);
5689
- var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor, Ka = (a, e, t, i) => {
5721
+ var Gs = Object.defineProperty, Xs = Object.getOwnPropertyDescriptor, Qa = (a, e, t, i) => {
5690
5722
  for (var s = i > 1 ? void 0 : i ? Xs(e, t) : e, r = a.length - 1, o; r >= 0; r--)
5691
5723
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
5692
5724
  return i && s && Gs(e, t, s), s;
5693
5725
  };
5694
- let Ot = class extends Fe {
5726
+ let Bt = class extends Fe {
5695
5727
  constructor() {
5696
5728
  super(...arguments), this.blocks = [];
5697
5729
  }
@@ -5703,7 +5735,7 @@ let Ot = class extends Fe {
5703
5735
  `;
5704
5736
  }
5705
5737
  };
5706
- Ot.styles = J`
5738
+ Bt.styles = J`
5707
5739
  :host {
5708
5740
  display: block;
5709
5741
  }
@@ -5714,12 +5746,12 @@ Ot.styles = J`
5714
5746
  gap: 0.75em; /* vertical rhythm between blocks */
5715
5747
  }
5716
5748
  `;
5717
- Ka([
5749
+ Qa([
5718
5750
  x({ type: Array })
5719
- ], Ot.prototype, "blocks", 2);
5720
- Ot = Ka([
5751
+ ], Bt.prototype, "blocks", 2);
5752
+ Bt = Qa([
5721
5753
  K("cb-blocks")
5722
- ], Ot);
5754
+ ], Bt);
5723
5755
  var Lt = { exports: {} }, Ys = Lt.exports, $a;
5724
5756
  function Js() {
5725
5757
  return $a || ($a = 1, (function(a, e) {
@@ -5785,19 +5817,19 @@ function Js() {
5785
5817
  })), h;
5786
5818
  }
5787
5819
  function w(n) {
5788
- var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, T = arguments.length > 2 ? arguments[2] : void 0, E = l || [];
5789
- function z(q) {
5790
- F(d) && d.call(T, q, this), y && z.destroy();
5820
+ var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, l = c.onElement, d = c.withCallback, h = c.avoidDuplicate, m = h === void 0 || h, g = c.once, y = g !== void 0 && g, A = c.useCapture, S = A !== void 0 && A, T = arguments.length > 2 ? arguments[2] : void 0, $ = l || [];
5821
+ function O(q) {
5822
+ F(d) && d.call(T, q, this), y && O.destroy();
5791
5823
  }
5792
- return j(E) && (E = document.querySelectorAll(E)), z.destroy = function() {
5793
- v(E, (function(q) {
5794
- var D = k(q, n, z);
5795
- D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n, z, S);
5824
+ return j($) && ($ = document.querySelectorAll($)), O.destroy = function() {
5825
+ v($, (function(q) {
5826
+ var D = k(q, n, O);
5827
+ D.found && D.all.splice(D.evt, 1), q.removeEventListener && q.removeEventListener(n, O, S);
5796
5828
  }));
5797
- }, v(E, (function(q) {
5798
- var D = k(q, n, z);
5799
- (q.addEventListener && m && !D.found || !m) && (q.addEventListener(n, z, S), D.all.push({ eventName: n, fn: z }));
5800
- })), z;
5829
+ }, v($, (function(q) {
5830
+ var D = k(q, n, O);
5831
+ (q.addEventListener && m && !D.found || !m) && (q.addEventListener(n, O, S), D.all.push({ eventName: n, fn: O }));
5832
+ })), O;
5801
5833
  }
5802
5834
  function _(n, c) {
5803
5835
  v(c.split(" "), (function(l) {
@@ -5955,7 +5987,7 @@ function Js() {
5955
5987
  })), g = m.sort()[0];
5956
5988
  return document.querySelector('.gbtn[data-taborder="'.concat(g, '"]'));
5957
5989
  }
5958
- function mi(n) {
5990
+ function vi(n) {
5959
5991
  if (n.events.hasOwnProperty("keyboard")) return !1;
5960
5992
  n.events.keyboard = w("keydown", { onElement: window, withCallback: function(c, l) {
5961
5993
  var d = (c = c || window.event).keyCode;
@@ -5978,7 +6010,7 @@ function Js() {
5978
6010
  d == 39 && n.nextSlide(), d == 37 && n.prevSlide(), d == 27 && n.close();
5979
6011
  } });
5980
6012
  }
5981
- var yi = s((function n(c, l) {
6013
+ var wi = s((function n(c, l) {
5982
6014
  var d = this, h = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : null;
5983
6015
  if (t(this, n), this.img = c, this.slide = l, this.onclose = h, this.img.setZoomEvents) return !1;
5984
6016
  this.active = !1, this.zoomedIn = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.img.addEventListener("mousedown", (function(m) {
@@ -6023,13 +6055,13 @@ function Js() {
6023
6055
  } }]), pa = s((function n() {
6024
6056
  var c = this, l = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
6025
6057
  t(this, n);
6026
- var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, T = l.instance, E = T === void 0 ? null : T;
6027
- this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = E, this.el.addEventListener("mousedown", (function(z) {
6028
- return c.dragStart(z);
6029
- }), !1), this.el.addEventListener("mouseup", (function(z) {
6030
- return c.dragEnd(z);
6031
- }), !1), this.el.addEventListener("mousemove", (function(z) {
6032
- return c.drag(z);
6058
+ var d = l.dragEl, h = l.toleranceX, m = h === void 0 ? 40 : h, g = l.toleranceY, y = g === void 0 ? 65 : g, A = l.slide, S = A === void 0 ? null : A, T = l.instance, $ = T === void 0 ? null : T;
6059
+ this.el = d, this.active = !1, this.dragging = !1, this.currentX = null, this.currentY = null, this.initialX = null, this.initialY = null, this.xOffset = 0, this.yOffset = 0, this.direction = null, this.lastDirection = null, this.toleranceX = m, this.toleranceY = y, this.toleranceReached = !1, this.dragContainer = this.el, this.slide = S, this.instance = $, this.el.addEventListener("mousedown", (function(O) {
6060
+ return c.dragStart(O);
6061
+ }), !1), this.el.addEventListener("mouseup", (function(O) {
6062
+ return c.dragEnd(O);
6063
+ }), !1), this.el.addEventListener("mousemove", (function(O) {
6064
+ return c.drag(O);
6033
6065
  }), !1);
6034
6066
  }), [{ key: "dragStart", value: function(n) {
6035
6067
  if (this.slide.classList.contains("zoomed")) this.active = !1;
@@ -6072,26 +6104,26 @@ function Js() {
6072
6104
  var d = arguments.length > 3 && arguments[3] !== void 0 && arguments[3];
6073
6105
  n.style.transition = d ? "all .2s ease" : "", n.style.transform = "translate3d(".concat(c, "px, ").concat(l, "px, 0)");
6074
6106
  } }]);
6075
- function vi(n, c, l, d) {
6107
+ function xi(n, c, l, d) {
6076
6108
  var h = n.querySelector(".gslide-media"), m = new Image(), g = "gSlideTitle_" + l, y = "gSlideDesc_" + l;
6077
6109
  m.addEventListener("load", (function() {
6078
6110
  F(d) && d();
6079
6111
  }), !1), m.src = c.href, c.sizes != "" && c.srcset != "" && (m.sizes = c.sizes, m.srcset = c.srcset), m.alt = "", be(c.alt) || c.alt === "" || (m.alt = c.alt), c.title !== "" && m.setAttribute("aria-labelledby", g), c.description !== "" && m.setAttribute("aria-describedby", y), c.hasOwnProperty("_hasCustomWidth") && c._hasCustomWidth && (m.style.width = c.width), c.hasOwnProperty("_hasCustomHeight") && c._hasCustomHeight && (m.style.height = c.height), h.insertBefore(m, h.firstChild);
6080
6112
  }
6081
- function wi(n, c, l, d) {
6113
+ function ki(n, c, l, d) {
6082
6114
  var h = this, m = n.querySelector(".ginner-container"), g = "gvideo" + l, y = n.querySelector(".gslide-media"), A = this.getAllPlayers();
6083
6115
  _(m, "gvideo-container"), y.insertBefore(G('<div class="gvideo-wrapper"></div>'), y.firstChild);
6084
6116
  var S = n.querySelector(".gvideo-wrapper");
6085
6117
  he(this.settings.plyr.css, "Plyr");
6086
- var T = c.href, E = c?.videoProvider, z = !1;
6118
+ var T = c.href, $ = c?.videoProvider, O = !1;
6087
6119
  y.style.maxWidth = c.width, he(this.settings.plyr.js, "Plyr", (function() {
6088
- if (!E && T.match(/vimeo\.com\/([0-9]*)/) && (E = "vimeo"), !E && (T.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || T.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)) && (E = "youtube"), E === "local" || !E) {
6089
- E = "local";
6120
+ if (!$ && T.match(/vimeo\.com\/([0-9]*)/) && ($ = "vimeo"), !$ && (T.match(/(youtube\.com|youtube-nocookie\.com)\/watch\?v=([a-zA-Z0-9\-_]+)/) || T.match(/youtu\.be\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/embed\/([a-zA-Z0-9\-_]+)/) || T.match(/(youtube\.com|youtube-nocookie\.com)\/shorts\/([a-zA-Z0-9\-_]+)/)) && ($ = "youtube"), $ === "local" || !$) {
6121
+ $ = "local";
6090
6122
  var q = '<video id="' + g + '" ';
6091
- q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(T, '">'), z = G(q += "</video>");
6123
+ q += 'style="background:#000; max-width: '.concat(c.width, ';" '), q += 'preload="metadata" ', q += 'x-webkit-airplay="allow" ', q += "playsinline ", q += "controls ", q += 'class="gvideo-local">', q += '<source src="'.concat(T, '">'), O = G(q += "</video>");
6092
6124
  }
6093
- var D = z || G('<div id="'.concat(g, '" data-plyr-provider="').concat(E, '" data-plyr-embed-id="').concat(T, '"></div>'));
6094
- _(S, "".concat(E, "-video gvideo")), S.appendChild(D), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
6125
+ var D = O || G('<div id="'.concat(g, '" data-plyr-provider="').concat($, '" data-plyr-embed-id="').concat(T, '"></div>'));
6126
+ _(S, "".concat($, "-video gvideo")), S.appendChild(D), S.setAttribute("data-id", g), S.setAttribute("data-index", l);
6095
6127
  var ee = ie(h.settings.plyr, "config") ? h.settings.plyr.config : {}, ge = new Plyr("#" + g, ee);
6096
6128
  ge.on("ready", (function(ue) {
6097
6129
  A[g] = ue.detail.plyr, F(d) && d();
@@ -6106,7 +6138,7 @@ function Js() {
6106
6138
  var c = M(n.target, ".gslide-media");
6107
6139
  n.type === "enterfullscreen" && _(c, "fullscreen"), n.type === "exitfullscreen" && P(c, "fullscreen");
6108
6140
  }
6109
- function xi(n, c, l, d) {
6141
+ function _i(n, c, l, d) {
6110
6142
  var h, m = this, g = n.querySelector(".gslide-media"), y = !(!ie(c, "href") || !c.href) && c.href.split("#").pop().trim(), A = !(!ie(c, "content") || !c.content) && c.content;
6111
6143
  if (A && (j(A) && (h = G('<div class="ginlined-content">'.concat(A, "</div>"))), V(A))) {
6112
6144
  A.style.display == "none" && (A.style.display = "block");
@@ -6116,24 +6148,24 @@ function Js() {
6116
6148
  if (y) {
6117
6149
  var T = document.getElementById(y);
6118
6150
  if (!T) return !1;
6119
- var E = T.cloneNode(!0);
6120
- E.style.height = c.height, E.style.maxWidth = c.width, _(E, "ginlined-content"), h = E;
6151
+ var $ = T.cloneNode(!0);
6152
+ $.style.height = c.height, $.style.maxWidth = c.width, _($, "ginlined-content"), h = $;
6121
6153
  }
6122
6154
  if (!h) return console.error("Unable to append inline slide content", c), !1;
6123
- g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(z) {
6124
- z.preventDefault(), m.close();
6155
+ g.style.height = c.height, g.style.width = c.width, g.appendChild(h), this.events["inlineclose" + y] = w("click", { onElement: g.querySelectorAll(".gtrigger-close"), withCallback: function(O) {
6156
+ O.preventDefault(), m.close();
6125
6157
  } }), F(d) && d();
6126
6158
  }
6127
- function ki(n, c, l, d) {
6159
+ function Si(n, c, l, d) {
6128
6160
  var h = n.querySelector(".gslide-media"), m = (function(g) {
6129
- var y = g.url, A = g.allow, S = g.callback, T = g.appendTo, E = document.createElement("iframe");
6130
- return E.className = "vimeo-video gvideo", E.src = y, E.style.width = "100%", E.style.height = "100%", A && E.setAttribute("allow", A), E.onload = function() {
6131
- E.onload = null, _(E, "node-ready"), F(S) && S();
6132
- }, T && T.appendChild(E), E;
6161
+ var y = g.url, A = g.allow, S = g.callback, T = g.appendTo, $ = document.createElement("iframe");
6162
+ return $.className = "vimeo-video gvideo", $.src = y, $.style.width = "100%", $.style.height = "100%", A && $.setAttribute("allow", A), $.onload = function() {
6163
+ $.onload = null, _($, "node-ready"), F(S) && S();
6164
+ }, T && T.appendChild($), $;
6133
6165
  })({ url: c.href, callback: d });
6134
6166
  h.parentNode.style.maxWidth = c.width, h.parentNode.style.height = c.height, h.appendChild(m);
6135
6167
  }
6136
- var _i = s((function n() {
6168
+ var Ci = s((function n() {
6137
6169
  var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
6138
6170
  t(this, n), this.defaults = { href: "", sizes: "", srcset: "", title: "", type: "", videoProvider: "", description: "", alt: "", descPosition: "bottom", effect: "", width: "", height: "", content: !1, zoomable: !0, draggable: !0 }, Ve(c) && (this.defaults = p(this.defaults, c));
6139
6171
  }), [{ key: "sourceType", value: function(n) {
@@ -6173,17 +6205,17 @@ function Js() {
6173
6205
  }));
6174
6206
  }
6175
6207
  if (d.description && d.description.substring(0, 1) === ".") {
6176
- var E;
6208
+ var $;
6177
6209
  try {
6178
- E = document.querySelector(d.description).innerHTML;
6210
+ $ = document.querySelector(d.description).innerHTML;
6179
6211
  } catch (q) {
6180
6212
  if (!(q instanceof DOMException)) throw q;
6181
6213
  }
6182
- E && (d.description = E);
6214
+ $ && (d.description = $);
6183
6215
  }
6184
6216
  if (!d.description) {
6185
- var z = n.querySelector(".glightbox-desc");
6186
- z && (d.description = z.innerHTML);
6217
+ var O = n.querySelector(".glightbox-desc");
6218
+ O && (d.description = O.innerHTML);
6187
6219
  }
6188
6220
  return this.setSize(d, c, n), this.slideConfig = d, d;
6189
6221
  } }, { key: "setSize", value: function(n, c) {
@@ -6200,18 +6232,18 @@ function Js() {
6200
6232
  if (I(c, "loaded")) return !1;
6201
6233
  var d = this.instance.settings, h = this.slideConfig, m = pe();
6202
6234
  F(d.beforeSlideLoad) && d.beforeSlideLoad({ index: this.index, slide: c, player: !1 });
6203
- var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), T = c.querySelector(".gslide-desc"), E = c.querySelector(".gdesc-inner"), z = l, q = "gSlideTitle_" + this.index, D = "gSlideDesc_" + this.index;
6204
- if (F(d.afterSlideLoad) && (z = function() {
6235
+ var g = h.type, y = h.descPosition, A = c.querySelector(".gslide-media"), S = c.querySelector(".gslide-title"), T = c.querySelector(".gslide-desc"), $ = c.querySelector(".gdesc-inner"), O = l, q = "gSlideTitle_" + this.index, D = "gSlideDesc_" + this.index;
6236
+ if (F(d.afterSlideLoad) && (O = function() {
6205
6237
  F(l) && l(), d.afterSlideLoad({ index: n.index, slide: c, player: n.instance.getSlidePlayerInstance(n.index) });
6206
- }), h.title == "" && h.description == "" ? E && E.parentNode.parentNode.removeChild(E.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S), T && h.description !== "" ? (T.id = D, m && d.moreLength > 0 ? (h.smallDescription = this.slideShortDesc(h.description, d.moreLength, d.moreText), T.innerHTML = h.smallDescription, this.descriptionEvents(T, h)) : T.innerHTML = h.description) : T.parentNode.removeChild(T), _(A.parentNode, "desc-".concat(y)), _(E.parentNode, "description-".concat(y))), _(A, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
6207
- if (g !== "external") return g === "inline" ? (xi.apply(this.instance, [c, h, this.index, z]), void (h.draggable && new pa({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? F(z) && z() : vi(c, h, this.index, (function() {
6238
+ }), h.title == "" && h.description == "" ? $ && $.parentNode.parentNode.removeChild($.parentNode) : (S && h.title !== "" ? (S.id = q, S.innerHTML = h.title) : S.parentNode.removeChild(S), T && h.description !== "" ? (T.id = D, m && d.moreLength > 0 ? (h.smallDescription = this.slideShortDesc(h.description, d.moreLength, d.moreText), T.innerHTML = h.smallDescription, this.descriptionEvents(T, h)) : T.innerHTML = h.description) : T.parentNode.removeChild(T), _(A.parentNode, "desc-".concat(y)), _($.parentNode, "description-".concat(y))), _(A, "gslide-".concat(g)), _(c, "loaded"), g !== "video") {
6239
+ if (g !== "external") return g === "inline" ? (_i.apply(this.instance, [c, h, this.index, O]), void (h.draggable && new pa({ dragEl: c.querySelector(".gslide-inline"), toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: this.instance }))) : void (g !== "image" ? F(O) && O() : xi(c, h, this.index, (function() {
6208
6240
  var ee = c.querySelector("img");
6209
- h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new yi(ee, c, (function() {
6241
+ h.draggable && new pa({ dragEl: ee, toleranceX: d.dragToleranceX, toleranceY: d.dragToleranceY, slide: c, instance: n.instance }), h.zoomable && ee.naturalWidth > ee.offsetWidth && (_(ee, "zoomable"), new wi(ee, c, (function() {
6210
6242
  n.instance.resize();
6211
- }))), F(z) && z();
6243
+ }))), F(O) && O();
6212
6244
  })));
6213
- ki.apply(this, [c, h, this.index, z]);
6214
- } else wi.apply(this.instance, [c, h, this.index, z]);
6245
+ Si.apply(this, [c, h, this.index, O]);
6246
+ } else ki.apply(this.instance, [c, h, this.index, O]);
6215
6247
  } }, { key: "slideShortDesc", value: function(n) {
6216
6248
  var c = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 50, l = arguments.length > 2 && arguments[2] !== void 0 && arguments[2], d = document.createElement("div");
6217
6249
  d.innerHTML = n;
@@ -6237,13 +6269,13 @@ function Js() {
6237
6269
  return G(this.instance.settings.slideHTML);
6238
6270
  } }, { key: "getConfig", value: function() {
6239
6271
  V(this.element) || this.element.hasOwnProperty("draggable") || (this.element.draggable = this.instance.settings.draggable);
6240
- var n = new _i(this.instance.settings.slideExtraAttributes);
6272
+ var n = new Ci(this.instance.settings.slideExtraAttributes);
6241
6273
  return this.slideConfig = n.parseConfig(this.element, this.instance.settings), this.slideConfig;
6242
6274
  } }]);
6243
6275
  function _t(n) {
6244
6276
  return Math.sqrt(n.x * n.x + n.y * n.y);
6245
6277
  }
6246
- function Si(n, c) {
6278
+ function Ai(n, c) {
6247
6279
  var l = (function(d, h) {
6248
6280
  var m = _t(d) * _t(h);
6249
6281
  if (m === 0) return 0;
@@ -6256,7 +6288,7 @@ function Js() {
6256
6288
  return d.x * h.y - h.x * d.y;
6257
6289
  })(n, c) > 0 && (l *= -1), 180 * l / Math.PI;
6258
6290
  }
6259
- var Ci = s((function n(c) {
6291
+ var Mi = s((function n(c) {
6260
6292
  t(this, n), this.handlers = [], this.el = c;
6261
6293
  }), [{ key: "add", value: function(n) {
6262
6294
  this.handlers.push(n);
@@ -6269,15 +6301,15 @@ function Js() {
6269
6301
  typeof l == "function" && l.apply(this.el, arguments);
6270
6302
  }
6271
6303
  } }]);
6272
- function ce(n, c) {
6273
- var l = new Ci(n);
6304
+ function le(n, c) {
6305
+ var l = new Mi(n);
6274
6306
  return l.add(c), l;
6275
6307
  }
6276
- var Ai = s((function n(c, l) {
6308
+ var Ti = s((function n(c, l) {
6277
6309
  t(this, n), this.element = typeof c == "string" ? document.querySelector(c) : c, this.start = this.start.bind(this), this.move = this.move.bind(this), this.end = this.end.bind(this), this.cancel = this.cancel.bind(this), this.element.addEventListener("touchstart", this.start, !1), this.element.addEventListener("touchmove", this.move, !1), this.element.addEventListener("touchend", this.end, !1), this.element.addEventListener("touchcancel", this.cancel, !1), this.preV = { x: null, y: null }, this.pinchStartLen = null, this.zoom = 1, this.isDoubleTap = !1;
6278
6310
  var d = function() {
6279
6311
  };
6280
- this.rotate = ce(this.element, l.rotate || d), this.touchStart = ce(this.element, l.touchStart || d), this.multipointStart = ce(this.element, l.multipointStart || d), this.multipointEnd = ce(this.element, l.multipointEnd || d), this.pinch = ce(this.element, l.pinch || d), this.swipe = ce(this.element, l.swipe || d), this.tap = ce(this.element, l.tap || d), this.doubleTap = ce(this.element, l.doubleTap || d), this.longTap = ce(this.element, l.longTap || d), this.singleTap = ce(this.element, l.singleTap || d), this.pressMove = ce(this.element, l.pressMove || d), this.twoFingerPressMove = ce(this.element, l.twoFingerPressMove || d), this.touchMove = ce(this.element, l.touchMove || d), this.touchEnd = ce(this.element, l.touchEnd || d), this.touchCancel = ce(this.element, l.touchCancel || d), this.translateContainer = this.element, this._cancelAllHandler = this.cancelAll.bind(this), window.addEventListener("scroll", this._cancelAllHandler), this.delta = null, this.last = null, this.now = null, this.tapTimeout = null, this.singleTapTimeout = null, this.longTapTimeout = null, this.swipeTimeout = null, this.x1 = this.x2 = this.y1 = this.y2 = null, this.preTapPosition = { x: null, y: null };
6312
+ this.rotate = le(this.element, l.rotate || d), this.touchStart = le(this.element, l.touchStart || d), this.multipointStart = le(this.element, l.multipointStart || d), this.multipointEnd = le(this.element, l.multipointEnd || d), this.pinch = le(this.element, l.pinch || d), this.swipe = le(this.element, l.swipe || d), this.tap = le(this.element, l.tap || d), this.doubleTap = le(this.element, l.doubleTap || d), this.longTap = le(this.element, l.longTap || d), this.singleTap = le(this.element, l.singleTap || d), this.pressMove = le(this.element, l.pressMove || d), this.twoFingerPressMove = le(this.element, l.twoFingerPressMove || d), this.touchMove = le(this.element, l.touchMove || d), this.touchEnd = le(this.element, l.touchEnd || d), this.touchCancel = le(this.element, l.touchCancel || d), this.translateContainer = this.element, this._cancelAllHandler = this.cancelAll.bind(this), window.addEventListener("scroll", this._cancelAllHandler), this.delta = null, this.last = null, this.now = null, this.tapTimeout = null, this.singleTapTimeout = null, this.longTapTimeout = null, this.swipeTimeout = null, this.x1 = this.x2 = this.y1 = this.y2 = null, this.preTapPosition = { x: null, y: null };
6281
6313
  }), [{ key: "start", value: function(n) {
6282
6314
  if (n.touches) if (n.target && n.target.nodeName && ["a", "button", "input"].indexOf(n.target.nodeName.toLowerCase()) >= 0) console.log("ignore drag for this touched element", n.target.nodeName.toLowerCase());
6283
6315
  else {
@@ -6297,7 +6329,7 @@ function Js() {
6297
6329
  var c = this.preV, l = n.touches.length, d = n.touches[0].pageX, h = n.touches[0].pageY;
6298
6330
  if (this.isDoubleTap = !1, l > 1) {
6299
6331
  var m = n.touches[1].pageX, g = n.touches[1].pageY, y = { x: n.touches[1].pageX - d, y: n.touches[1].pageY - h };
6300
- c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = Si(y, c), this.rotate.dispatch(n, this.element)), c.x = y.x, c.y = y.y, this.x2 !== null && this.sx2 !== null ? (n.deltaX = (d - this.x2 + m - this.sx2) / 2, n.deltaY = (h - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
6332
+ c.x !== null && (this.pinchStartLen > 0 && (n.zoom = _t(y) / this.pinchStartLen, this.pinch.dispatch(n, this.element)), n.angle = Ai(y, c), this.rotate.dispatch(n, this.element)), c.x = y.x, c.y = y.y, this.x2 !== null && this.sx2 !== null ? (n.deltaX = (d - this.x2 + m - this.sx2) / 2, n.deltaY = (h - this.y2 + g - this.sy2) / 2) : (n.deltaX = 0, n.deltaY = 0), this.twoFingerPressMove.dispatch(n, this.element), this.sx2 = m, this.sy2 = g;
6301
6333
  } else {
6302
6334
  if (this.x2 !== null) {
6303
6335
  n.deltaX = d - this.x2, n.deltaY = h - this.y2;
@@ -6346,9 +6378,9 @@ function Js() {
6346
6378
  P(d, "greset");
6347
6379
  } }), d.style.opacity = "", m && (m.style.opacity = "");
6348
6380
  }
6349
- function Mi(n) {
6381
+ function Ii(n) {
6350
6382
  if (n.events.hasOwnProperty("touch")) return !1;
6351
- var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, T = null, E = !1, z = 1, q = 1, D = !1, ee = !1, ge = null, ue = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, wa = 0, xa = 0, Ei = document.getElementById("glightbox-slider"), St = document.querySelector(".goverlay"), $i = new Ai(Ei, { touchStart: function(X) {
6383
+ var c, l, d, h = te(), m = h.width, g = h.height, y = !1, A = null, S = null, T = null, $ = !1, O = 1, q = 1, D = !1, ee = !1, ge = null, ue = null, Le = null, oe = null, Re = 0, ze = 0, ht = !1, rt = !1, _e = {}, Se = {}, wa = 0, xa = 0, Pi = document.getElementById("glightbox-slider"), St = document.querySelector(".goverlay"), Li = new Ti(Pi, { touchStart: function(X) {
6352
6384
  if (y = !0, (I(X.targetTouches[0].target, "ginner-container") || M(X.targetTouches[0].target, ".gslide-desc") || X.targetTouches[0].target.nodeName.toLowerCase() == "a") && (y = !1), M(X.targetTouches[0].target, ".gslide-inline") && !I(X.targetTouches[0].target.parentNode, "gslide-inline") && (y = !1), y) {
6353
6385
  if (Se = X.targetTouches[0], _e.pageX = X.targetTouches[0].pageX, _e.pageY = X.targetTouches[0].pageY, wa = X.targetTouches[0].clientX, xa = X.targetTouches[0].clientY, A = n.activeSlide, S = A.querySelector(".gslide-media"), d = A.querySelector(".gslide-inline"), T = null, I(S, "gslide-image") && (T = S.querySelector("img")), (window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth) > 769 && (S = A.querySelector(".ginner-container")), P(St, "greset"), X.pageX > 20 && X.pageX < window.innerWidth - 20) return;
6354
6386
  X.preventDefault();
@@ -6356,19 +6388,19 @@ function Js() {
6356
6388
  }, touchMove: function(X) {
6357
6389
  if (y && (Se = X.targetTouches[0], !D && !ee)) {
6358
6390
  if (d && d.offsetHeight > g) {
6359
- var le = _e.pageX - Se.pageX;
6360
- if (Math.abs(le) <= 13) return !1;
6391
+ var de = _e.pageX - Se.pageX;
6392
+ if (Math.abs(de) <= 13) return !1;
6361
6393
  }
6362
- E = !0;
6363
- var Ue, Ct = X.targetTouches[0].clientX, Pi = X.targetTouches[0].clientY, Li = wa - Ct, Ri = xa - Pi;
6364
- if (Math.abs(Li) > Math.abs(Ri) ? (ht = !1, rt = !0) : (rt = !1, ht = !0), c = Se.pageX - _e.pageX, Re = 100 * c / m, l = Se.pageY - _e.pageY, ze = 100 * l / g, ht && T && (Ue = 1 - Math.abs(l) / g, St.style.opacity = Ue, n.settings.touchFollowAxis && (Re = 0)), rt && (Ue = 1 - Math.abs(c) / m, S.style.opacity = Ue, n.settings.touchFollowAxis && (ze = 0)), !T) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
6394
+ $ = !0;
6395
+ var Ue, Ct = X.targetTouches[0].clientX, Ri = X.targetTouches[0].clientY, zi = wa - Ct, Bi = xa - Ri;
6396
+ if (Math.abs(zi) > Math.abs(Bi) ? (ht = !1, rt = !0) : (rt = !1, ht = !0), c = Se.pageX - _e.pageX, Re = 100 * c / m, l = Se.pageY - _e.pageY, ze = 100 * l / g, ht && T && (Ue = 1 - Math.abs(l) / g, St.style.opacity = Ue, n.settings.touchFollowAxis && (Re = 0)), rt && (Ue = 1 - Math.abs(c) / m, S.style.opacity = Ue, n.settings.touchFollowAxis && (ze = 0)), !T) return C(S, "translate3d(".concat(Re, "%, 0, 0)"));
6365
6397
  C(S, "translate3d(".concat(Re, "%, ").concat(ze, "%, 0)"));
6366
6398
  }
6367
6399
  }, touchEnd: function() {
6368
6400
  if (y) {
6369
- if (E = !1, ee || D) return Le = ge, void (oe = ue);
6370
- var X = Math.abs(parseInt(ze)), le = Math.abs(parseInt(Re));
6371
- if (!(X > 29 && T)) return X < 29 && le < 25 ? (_(St, "greset"), St.style.opacity = 1, Vt(S)) : void 0;
6401
+ if ($ = !1, ee || D) return Le = ge, void (oe = ue);
6402
+ var X = Math.abs(parseInt(ze)), de = Math.abs(parseInt(Re));
6403
+ if (!(X > 29 && T)) return X < 29 && de < 25 ? (_(St, "greset"), St.style.opacity = 1, Vt(S)) : void 0;
6372
6404
  n.close();
6373
6405
  }
6374
6406
  }, multipointEnd: function() {
@@ -6376,18 +6408,18 @@ function Js() {
6376
6408
  D = !1;
6377
6409
  }), 50);
6378
6410
  }, multipointStart: function() {
6379
- D = !0, z = q || 1;
6411
+ D = !0, O = q || 1;
6380
6412
  }, pinch: function(X) {
6381
- if (!T || E) return !1;
6382
- D = !0, T.scaleX = T.scaleY = z * X.zoom;
6383
- var le = z * X.zoom;
6384
- if (ee = !0, le <= 1) return ee = !1, le = 1, oe = null, Le = null, ge = null, ue = null, void T.setAttribute("style", "");
6385
- le > 4.5 && (le = 4.5), T.style.transform = "scale3d(".concat(le, ", ").concat(le, ", 1)"), q = le;
6413
+ if (!T || $) return !1;
6414
+ D = !0, T.scaleX = T.scaleY = O * X.zoom;
6415
+ var de = O * X.zoom;
6416
+ if (ee = !0, de <= 1) return ee = !1, de = 1, oe = null, Le = null, ge = null, ue = null, void T.setAttribute("style", "");
6417
+ de > 4.5 && (de = 4.5), T.style.transform = "scale3d(".concat(de, ", ").concat(de, ", 1)"), q = de;
6386
6418
  }, pressMove: function(X) {
6387
6419
  if (ee && !D) {
6388
- var le = Se.pageX - _e.pageX, Ue = Se.pageY - _e.pageY;
6389
- Le && (le += Le), oe && (Ue += oe), ge = le, ue = Ue;
6390
- var Ct = "translate3d(".concat(le, "px, ").concat(Ue, "px, 0)");
6420
+ var de = Se.pageX - _e.pageX, Ue = Se.pageY - _e.pageY;
6421
+ Le && (de += Le), oe && (Ue += oe), ge = de, ue = Ue;
6422
+ var Ct = "translate3d(".concat(de, "px, ").concat(Ue, "px, 0)");
6391
6423
  q && (Ct += " scale3d(".concat(q, ", ").concat(q, ", 1)")), C(T, Ct);
6392
6424
  }
6393
6425
  }, swipe: function(X) {
@@ -6403,9 +6435,9 @@ function Js() {
6403
6435
  }
6404
6436
  }
6405
6437
  } });
6406
- n.events.touch = $i;
6438
+ n.events.touch = Li;
6407
6439
  }
6408
- var ma = pe(), ya = pe() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, va = document.getElementsByTagName("html")[0], Ti = { selector: ".glightbox", elements: null, skin: "clean", theme: "clean", closeButton: !0, startAt: null, autoplayVideos: !0, autofocusVideos: !0, descPosition: "bottom", width: "900px", height: "506px", videosWidth: "960px", beforeSlideChange: null, afterSlideChange: null, beforeSlideLoad: null, afterSlideLoad: null, slideInserted: null, slideRemoved: null, slideExtraAttributes: null, onOpen: null, onClose: null, loop: !1, zoomable: !0, draggable: !0, dragAutoSnap: !1, dragToleranceX: 40, dragToleranceY: 65, preload: !0, oneSlidePerOpen: !1, touchNavigation: !0, touchFollowAxis: !0, keyboardNavigation: !0, closeOnOutsideClick: !0, plugins: !1, plyr: { css: "https://cdn.plyr.io/3.6.12/plyr.css", js: "https://cdn.plyr.io/3.6.12/plyr.js", config: { ratio: "16:9", fullscreen: { enabled: !0, iosNative: !0 }, youtube: { noCookie: !0, rel: 0, showinfo: 0, iv_load_policy: 3 }, vimeo: { byline: !1, portrait: !1, title: !1, transparent: !1 } } }, openEffect: "zoom", closeEffect: "zoom", slideEffect: "slide", moreText: "See more", moreLength: 60, cssEfects: { fade: { in: "fadeIn", out: "fadeOut" }, zoom: { in: "zoomIn", out: "zoomOut" }, slide: { in: "slideInRight", out: "slideOutLeft" }, slideBack: { in: "slideInLeft", out: "slideOutRight" }, none: { in: "none", out: "none" } }, svg: { close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' }, slideHTML: `<div class="gslide">
6440
+ var ma = pe(), ya = pe() !== null || document.createTouch !== void 0 || "ontouchstart" in window || "onmsgesturechange" in window || navigator.msMaxTouchPoints, va = document.getElementsByTagName("html")[0], Ei = { selector: ".glightbox", elements: null, skin: "clean", theme: "clean", closeButton: !0, startAt: null, autoplayVideos: !0, autofocusVideos: !0, descPosition: "bottom", width: "900px", height: "506px", videosWidth: "960px", beforeSlideChange: null, afterSlideChange: null, beforeSlideLoad: null, afterSlideLoad: null, slideInserted: null, slideRemoved: null, slideExtraAttributes: null, onOpen: null, onClose: null, loop: !1, zoomable: !0, draggable: !0, dragAutoSnap: !1, dragToleranceX: 40, dragToleranceY: 65, preload: !0, oneSlidePerOpen: !1, touchNavigation: !0, touchFollowAxis: !0, keyboardNavigation: !0, closeOnOutsideClick: !0, plugins: !1, plyr: { css: "https://cdn.plyr.io/3.6.12/plyr.css", js: "https://cdn.plyr.io/3.6.12/plyr.js", config: { ratio: "16:9", fullscreen: { enabled: !0, iosNative: !0 }, youtube: { noCookie: !0, rel: 0, showinfo: 0, iv_load_policy: 3 }, vimeo: { byline: !1, portrait: !1, title: !1, transparent: !1 } } }, openEffect: "zoom", closeEffect: "zoom", slideEffect: "slide", moreText: "See more", moreLength: 60, cssEfects: { fade: { in: "fadeIn", out: "fadeOut" }, zoom: { in: "zoomIn", out: "zoomOut" }, slide: { in: "slideInRight", out: "slideOutLeft" }, slideBack: { in: "slideInLeft", out: "slideOutRight" }, none: { in: "none", out: "none" } }, svg: { close: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" xml:space="preserve"><g><g><path d="M505.943,6.058c-8.077-8.077-21.172-8.077-29.249,0L6.058,476.693c-8.077,8.077-8.077,21.172,0,29.249C10.096,509.982,15.39,512,20.683,512c5.293,0,10.586-2.019,14.625-6.059L505.943,35.306C514.019,27.23,514.019,14.135,505.943,6.058z"/></g></g><g><g><path d="M505.942,476.694L35.306,6.059c-8.076-8.077-21.172-8.077-29.248,0c-8.077,8.076-8.077,21.171,0,29.248l470.636,470.636c4.038,4.039,9.332,6.058,14.625,6.058c5.293,0,10.587-2.019,14.624-6.057C514.018,497.866,514.018,484.771,505.942,476.694z"/></g></g></svg>', next: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"> <g><path d="M360.731,229.075l-225.1-225.1c-5.3-5.3-13.8-5.3-19.1,0s-5.3,13.8,0,19.1l215.5,215.5l-215.5,215.5c-5.3,5.3-5.3,13.8,0,19.1c2.6,2.6,6.1,4,9.5,4c3.4,0,6.9-1.3,9.5-4l225.1-225.1C365.931,242.875,365.931,234.275,360.731,229.075z"/></g></svg>', prev: '<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 477.175 477.175" xml:space="preserve"><g><path d="M145.188,238.575l215.5-215.5c5.3-5.3,5.3-13.8,0-19.1s-13.8-5.3-19.1,0l-225.1,225.1c-5.3,5.3-5.3,13.8,0,19.1l225.1,225c2.6,2.6,6.1,4,9.5,4s6.9-1.3,9.5-4c5.3-5.3,5.3-13.8,0-19.1L145.188,238.575z"/></g></svg>' }, slideHTML: `<div class="gslide">
6409
6441
  <div class="gslide-inner-content">
6410
6442
  <div class="ginner-container">
6411
6443
  <div class="gslide-media">
@@ -6427,9 +6459,9 @@ function Js() {
6427
6459
  <button class="gprev gbtn" aria-label="Previous" data-taborder="2">{prevSVG}</button>
6428
6460
  <button class="gnext gbtn" aria-label="Next" data-taborder="1">{nextSVG}</button>
6429
6461
  </div>
6430
- </div>` }, Ii = s((function n() {
6462
+ </div>` }, $i = s((function n() {
6431
6463
  var c = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
6432
- t(this, n), this.customOptions = c, this.settings = p(Ti, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
6464
+ t(this, n), this.customOptions = c, this.settings = p(Ei, c), this.effectsClasses = this.getAnimationClasses(), this.videoPlayers = {}, this.apiEvents = [], this.fullElementsList = !1;
6433
6465
  }), [{ key: "init", value: function() {
6434
6466
  var n = this, c = this.getSelector();
6435
6467
  c && (this.baseEvents = w("click", { onElement: c, withCallback: function(l, d) {
@@ -6450,7 +6482,7 @@ function Js() {
6450
6482
  var g = document.createElement("style");
6451
6483
  g.type = "text/css", g.className = "gcss-styles", g.innerText = ".gscrollbar-fixer {margin-right: ".concat(m, "px}"), document.head.appendChild(g), _(h, "gscrollbar-fixer");
6452
6484
  }
6453
- _(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation && Mi(this), this.settings.keyboardNavigation && mi(this);
6485
+ _(h, "glightbox-open"), _(va, "glightbox-open"), ma && (_(document.body, "glightbox-mobile"), this.settings.slideEffect = "slide"), this.showSlide(l, !0), this.elements.length === 1 ? (_(this.prevButton, "glightbox-button-hidden"), _(this.nextButton, "glightbox-button-hidden")) : (P(this.prevButton, "glightbox-button-hidden"), P(this.nextButton, "glightbox-button-hidden")), this.lightboxOpen = !0, this.trigger("open"), F(this.settings.onOpen) && this.settings.onOpen(), ya && this.settings.touchNavigation && Ii(this), this.settings.keyboardNavigation && vi(this);
6454
6486
  } }, { key: "openAt", value: function() {
6455
6487
  var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 0;
6456
6488
  this.open(null, n);
@@ -6649,8 +6681,8 @@ function Js() {
6649
6681
  if (h && (I(h, "description-bottom") || I(h, "description-top")) && !I(h, "gabsolute") && (y = !0), d) {
6650
6682
  if (m <= 768) d.querySelector("img");
6651
6683
  else if (y) {
6652
- var A, S, T = h.offsetHeight, E = d.querySelector("img"), z = (A = this.elements[this.index]) === null || A === void 0 ? void 0 : A.node, q = "100vh";
6653
- z && (q = (S = z.getAttribute("data-height")) !== null && S !== void 0 ? S : q), E.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(T, "px)")), h.setAttribute("style", "max-width: ".concat(E.offsetWidth, "px;"));
6684
+ var A, S, T = h.offsetHeight, $ = d.querySelector("img"), O = (A = this.elements[this.index]) === null || A === void 0 ? void 0 : A.node, q = "100vh";
6685
+ O && (q = (S = O.getAttribute("data-height")) !== null && S !== void 0 ? S : q), $.setAttribute("style", "max-height: calc(".concat(q, " - ").concat(T, "px)")), h.setAttribute("style", "max-width: ".concat($.offsetWidth, "px;"));
6654
6686
  }
6655
6687
  }
6656
6688
  if (l) {
@@ -6719,7 +6751,7 @@ function Js() {
6719
6751
  return "3.3.1";
6720
6752
  } }]);
6721
6753
  return function() {
6722
- var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new Ii(n);
6754
+ var n = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {}, c = new $i(n);
6723
6755
  return c.init(), c;
6724
6756
  };
6725
6757
  }));
@@ -6778,12 +6810,12 @@ Kt.styles = J`
6778
6810
  Kt = en([
6779
6811
  K("cb-thinking")
6780
6812
  ], Kt);
6781
- var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor, Za = (a, e, t, i) => {
6813
+ var tn = Object.defineProperty, an = Object.getOwnPropertyDescriptor, ei = (a, e, t, i) => {
6782
6814
  for (var s = i > 1 ? void 0 : i ? an(e, t) : e, r = a.length - 1, o; r >= 0; r--)
6783
6815
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
6784
6816
  return i && s && tn(e, t, s), s;
6785
6817
  };
6786
- let Bt = class extends ne {
6818
+ let Ot = class extends re {
6787
6819
  constructor() {
6788
6820
  super(...arguments), this.files = [];
6789
6821
  }
@@ -6799,7 +6831,7 @@ let Bt = class extends ne {
6799
6831
  </div>`;
6800
6832
  }
6801
6833
  };
6802
- Bt.styles = J`
6834
+ Ot.styles = J`
6803
6835
  .cb-uploading {
6804
6836
  text-align: left;
6805
6837
  }
@@ -6817,12 +6849,12 @@ Bt.styles = J`
6817
6849
  margin-right: 5px;
6818
6850
  }
6819
6851
  `;
6820
- Za([
6852
+ ei([
6821
6853
  x({ type: Array })
6822
- ], Bt.prototype, "files", 2);
6823
- Bt = Za([
6854
+ ], Ot.prototype, "files", 2);
6855
+ Ot = ei([
6824
6856
  K("cb-uploading")
6825
- ], Bt);
6857
+ ], Ot);
6826
6858
  const sn = J`
6827
6859
  ${ke}
6828
6860
  :host {
@@ -6918,7 +6950,7 @@ const Pa = {
6918
6950
  doc: hn,
6919
6951
  docx: bn
6920
6952
  };
6921
- let yt = class extends ne {
6953
+ let yt = class extends re {
6922
6954
  constructor() {
6923
6955
  super(...arguments), this.filename = "", this.url = "";
6924
6956
  }
@@ -6957,7 +6989,7 @@ ca([
6957
6989
  yt = ca([
6958
6990
  K("cb-file")
6959
6991
  ], yt);
6960
- const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', La = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>', Qa = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M5 9v12H1V9zm4 12a2 2 0 0 1-2-2V9c0-.55.22-1.05.59-1.41L14.17 1l1.06 1.06c.27.27.44.64.44 1.05l-.03.32L14.69 8H21a2 2 0 0 1 2 2v2c0 .26-.05.5-.14.73l-3.02 7.05C19.54 20.5 18.83 21 18 21zm0-2h9.03L21 12v-2h-8.79l1.13-5.32L9 9.03z"/></svg>', ei = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M19 15V3h4v12zM15 3a2 2 0 0 1 2 2v10c0 .55-.22 1.05-.59 1.41L9.83 23l-1.06-1.06c-.27-.27-.44-.64-.44-1.06l.03-.31l.95-4.57H3a2 2 0 0 1-2-2v-2c0-.26.05-.5.14-.73l3.02-7.05C4.46 3.5 5.17 3 6 3zm0 2H5.97L3 12v2h8.78l-1.13 5.32L15 14.97z"/></svg>', mn = J`
6992
+ const gn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M5.5 5.5A.5.5 0 0 1 6 6v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m2.5 0a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-1 0V6a.5.5 0 0 1 .5-.5m3 .5a.5.5 0 0 0-1 0v6a.5.5 0 0 0 1 0z"/><path d="M14.5 3a1 1 0 0 1-1 1H13v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V4h-.5a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1H6a1 1 0 0 1 1-1h2a1 1 0 0 1 1 1h3.5a1 1 0 0 1 1 1zM4.118 4L4 4.059V13a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1V4.059L11.882 4zM2.5 3h11V2h-11z"/></g></svg>', La = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M8 8a3 3 0 1 0 0-6a3 3 0 0 0 0 6m2-3a2 2 0 1 1-4 0a2 2 0 0 1 4 0m4 8c0 1-1 1-1 1H3s-1 0-1-1s1-4 6-4s6 3 6 4m-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10s-3.516.68-4.168 1.332c-.678.678-.83 1.418-.832 1.664z"/></svg>', ti = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M5 9v12H1V9zm4 12a2 2 0 0 1-2-2V9c0-.55.22-1.05.59-1.41L14.17 1l1.06 1.06c.27.27.44.64.44 1.05l-.03.32L14.69 8H21a2 2 0 0 1 2 2v2c0 .26-.05.5-.14.73l-3.02 7.05C19.54 20.5 18.83 21 18 21zm0-2h9.03L21 12v-2h-8.79l1.13-5.32L9 9.03z"/></svg>', ai = '<svg viewBox="0 0 24 24" width="1.2em" height="1.2em" ><path fill="currentColor" d="M19 15V3h4v12zM15 3a2 2 0 0 1 2 2v10c0 .55-.22 1.05-.59 1.41L9.83 23l-1.06-1.06c-.27-.27-.44-.64-.44-1.06l.03-.31l.95-4.57H3a2 2 0 0 1-2-2v-2c0-.26.05-.5.14-.73l3.02-7.05C4.46 3.5 5.17 3 6 3zm0 2H5.97L3 12v2h8.78l-1.13 5.32L15 14.97z"/></svg>', mn = J`
6961
6993
  pre code.hljs {
6962
6994
  display: block;
6963
6995
  overflow-x: auto;
@@ -8410,7 +8442,7 @@ function Ra(a, e) {
8410
8442
  return `<pre class="code-block-wrapper"><div class="code-block-header"><span class="code-block-header__lang">${e}</span><span class="code-block-header__copy">Copy</span></div><code class="hljs code-block-body ${e}">${a}</code></pre>`;
8411
8443
  }
8412
8444
  function vn() {
8413
- const a = new Oi({
8445
+ const a = new qi({
8414
8446
  html: !0,
8415
8447
  breaks: !0,
8416
8448
  linkify: !0,
@@ -8422,7 +8454,7 @@ function vn() {
8422
8454
  return Ra(Ut.highlightAuto(e).value, "");
8423
8455
  }
8424
8456
  });
8425
- return a.use(Bi, { attrs: { target: "_blank", rel: "noopener" } }), a;
8457
+ return a.use(Di, { attrs: { target: "_blank", rel: "noopener" } }), a;
8426
8458
  }
8427
8459
  async function Zt(a) {
8428
8460
  const t = vn().render(a);
@@ -8433,7 +8465,7 @@ var wn = Object.defineProperty, xn = Object.getOwnPropertyDescriptor, nt = (a, e
8433
8465
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
8434
8466
  return i && s && wn(e, t, s), s;
8435
8467
  };
8436
- let De = class extends ne {
8468
+ let De = class extends re {
8437
8469
  constructor() {
8438
8470
  super(...arguments), this.store = new it(this, b), this.type = "assistant", this.suppressFeedback = !1, this.lightbox = Zs({
8439
8471
  touchNavigation: !0,
@@ -8500,7 +8532,7 @@ let De = class extends ne {
8500
8532
  this.copyBtns.forEach((a) => {
8501
8533
  a.addEventListener("click", () => {
8502
8534
  const e = a.parentElement?.nextElementSibling?.textContent;
8503
- e && Zi(e).then(() => {
8535
+ e && es(e).then(() => {
8504
8536
  a.textContent = "Success", setTimeout(() => {
8505
8537
  a.textContent = "Copy";
8506
8538
  }, 500);
@@ -8612,8 +8644,8 @@ let De = class extends ne {
8612
8644
  renderBotMessageFeedback(a) {
8613
8645
  return this.suppressFeedback || !b.setting.feedbackEnabled || this.index < b.setting.startFeedbackFromMessage * 2 ? null : u`
8614
8646
  <div class="cb-message-feedback-tools" part="feedback-wrapper">
8615
- <div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${me`${Y(Qa)}`}</div>
8616
- <div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${me`${Y(ei)}`}</div>
8647
+ <div class="cb-message-feedback-icon cb-feedback-up" part="feedback-up" @click="${() => this.startFeedback(!0, a)}">${me`${Y(ti)}`}</div>
8648
+ <div class="cb-message-feedback-icon cb-feedback-down" part="feedback-down" @click="${() => this.startFeedback(!1, a)}">${me`${Y(ai)}`}</div>
8617
8649
  </div>
8618
8650
  `;
8619
8651
  }
@@ -8692,9 +8724,9 @@ var kn = Object.defineProperty, _n = Object.getOwnPropertyDescriptor, Te = (a, e
8692
8724
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
8693
8725
  return i && s && kn(e, t, s), s;
8694
8726
  };
8695
- const Oe = Je.noConflict();
8696
- Oe.setLevel("info");
8697
- let ye = class extends ne {
8727
+ const Be = Je.noConflict();
8728
+ Be.setLevel("info");
8729
+ let ye = class extends re {
8698
8730
  constructor() {
8699
8731
  super(...arguments), this.messages = [], this.actions = [], this.form = null, this.suppressFeedback = !1, this.calendlyInjected = !1, this.activeCalendlyAction = -1, this.hubspotMeetingInjected = !1, this.activeHubspotMeetingAction = -1, this._lastScrollTop = 0, this._scrollThrottle = !1, this._userInterruptedAutoScroll = !1, this._userInterruptedMessagesLength = 0;
8700
8732
  }
@@ -8829,13 +8861,13 @@ let ye = class extends ne {
8829
8861
  }
8830
8862
  }
8831
8863
  b.submitForm(e).then(() => {
8832
- Oe.info("Form submitted", e), this.emit("form:submit", {
8864
+ Be.info("Form submitted", e), this.emit("form:submit", {
8833
8865
  detail: {
8834
8866
  formData: e
8835
8867
  }
8836
8868
  });
8837
8869
  }).catch((t) => {
8838
- Oe.error(`Error when submitting form: ${t.message}`);
8870
+ Be.error(`Error when submitting form: ${t.message}`);
8839
8871
  });
8840
8872
  }
8841
8873
  /* Form sample
@@ -8880,7 +8912,7 @@ let ye = class extends ne {
8880
8912
  return null;
8881
8913
  }
8882
8914
  handleCalendlyEvent(a) {
8883
- switch (Oe.info("Got Calendly Event:", a.data), a.data.event) {
8915
+ switch (Be.info("Got Calendly Event:", a.data), a.data.event) {
8884
8916
  case "calendly.event_scheduled": {
8885
8917
  const e = this.activeCalendlyAction;
8886
8918
  e >= 0 && (b.removeAction(e, !0, a.data), b.addSystemMessage("Your meeting has been scheduled!"), this.activeCalendlyAction = -1);
@@ -8888,10 +8920,10 @@ let ye = class extends ne {
8888
8920
  }
8889
8921
  }
8890
8922
  invokeLinkAction(a = {}) {
8891
- Oe.info("invokeLinkAction:", a), window.open(a.url, "_blank");
8923
+ Be.info("invokeLinkAction:", a), window.open(a.url, "_blank");
8892
8924
  }
8893
8925
  invokeCalendlyAction(a = {}) {
8894
- return Oe.info("invokeCalendlyAction:", a), "Calendly" in window && (this.activeCalendlyAction = a.internalId, window.Calendly.initPopupWidget({ url: a.url })), !1;
8926
+ return Be.info("invokeCalendlyAction:", a), "Calendly" in window && (this.activeCalendlyAction = a.internalId, window.Calendly.initPopupWidget({ url: a.url })), !1;
8895
8927
  }
8896
8928
  renderCalendlyAction(a) {
8897
8929
  if (!("Calendly" in window) && !this.calendlyInjected) {
@@ -8937,10 +8969,10 @@ let ye = class extends ne {
8937
8969
  invokeHubspotMeetingAction(a = {}) {
8938
8970
  const e = Date.now();
8939
8971
  if (this.activeHubspotMeetingAction !== -1) {
8940
- Oe.info(`invokeHubspotMeetingAction: action ${this.activeHubspotMeetingAction} is already active - ignored`);
8972
+ Be.info(`invokeHubspotMeetingAction: action ${this.activeHubspotMeetingAction} is already active - ignored`);
8941
8973
  return;
8942
8974
  }
8943
- if (Oe.info("invokeHubspotMeetingAction:", a), "hbspt" in window && typeof window.hbspt?.meetings?.create == "function") {
8975
+ if (Be.info("invokeHubspotMeetingAction:", a), "hbspt" in window && typeof window.hbspt?.meetings?.create == "function") {
8944
8976
  const t = document.getElementById("enegelai-bot-hubspot-meeting-container"), i = document.querySelector(".enegelai-bot-hubspot-meeting-widget");
8945
8977
  if (t && i) {
8946
8978
  const s = a.url + "?embed=true";
@@ -8952,7 +8984,7 @@ let ye = class extends ne {
8952
8984
  return !1;
8953
8985
  }
8954
8986
  handleHubspotEvent(a) {
8955
- if (Oe.info("Got Hubspot Event:", a.data), !(a?.data?.meetingBookSucceeded || !1))
8987
+ if (Be.info("Got Hubspot Event:", a.data), !(a?.data?.meetingBookSucceeded || !1))
8956
8988
  return;
8957
8989
  const t = this.activeHubspotMeetingAction;
8958
8990
  if (t >= 0) {
@@ -9004,7 +9036,7 @@ let ye = class extends ne {
9004
9036
  `;
9005
9037
  }
9006
9038
  };
9007
- ye.styles = Os;
9039
+ ye.styles = js;
9008
9040
  Te([
9009
9041
  x({ type: Array })
9010
9042
  ], ye.prototype, "messages", 2);
@@ -9077,13 +9109,13 @@ const Sn = J`
9077
9109
  align-items: center;
9078
9110
  margin: 6px 2px;
9079
9111
  }
9080
- `, ti = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>', ai = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></svg>', ii = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"/></svg>', la = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"/></svg>';
9112
+ `, ii = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M15.854.146a.5.5 0 0 1 .11.54l-5.819 14.547a.75.75 0 0 1-1.329.124l-3.178-4.995L.643 7.184a.75.75 0 0 1 .124-1.33L15.314.037a.5.5 0 0 1 .54.11ZM6.636 10.07l2.761 4.338L14.13 2.576zm6.787-8.201L1.591 6.602l4.339 2.76z"/></svg>', si = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M4.5 3a2.5 2.5 0 0 1 5 0v9a1.5 1.5 0 0 1-3 0V5a.5.5 0 0 1 1 0v7a.5.5 0 0 0 1 0V3a1.5 1.5 0 1 0-3 0v9a2.5 2.5 0 0 0 5 0V5a.5.5 0 0 1 1 0v7a3.5 3.5 0 1 1-7 0z"/></svg>', ni = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M12 14c1.66 0 2.99-1.34 2.99-3L15 5c0-1.66-1.34-3-3-3S9 3.34 9 5v6c0 1.66 1.34 3 3 3m5.3-3c0 3-2.54 5.1-5.3 5.1S6.7 14 6.7 11H5c0 3.41 2.72 6.23 6 6.72V21h2v-3.28c3.28-.48 6-3.3 6-6.72z"/></svg>', la = '<svg viewBox="0 0 24 24" width="26px" height="26px" ><path fill="currentColor" d="M19 6.41L17.59 5L12 10.59L6.41 5L5 6.41L10.59 12L5 17.59L6.41 19L12 13.41L17.59 19L19 17.59L13.41 12z"/></svg>';
9081
9113
  var Cn = Object.defineProperty, An = Object.getOwnPropertyDescriptor, Ie = (a, e, t, i) => {
9082
9114
  for (var s = i > 1 ? void 0 : i ? An(e, t) : e, r = a.length - 1, o; r >= 0; r--)
9083
9115
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9084
9116
  return i && s && Cn(e, t, s), s;
9085
9117
  };
9086
- let ve = class extends ne {
9118
+ let ve = class extends re {
9087
9119
  constructor() {
9088
9120
  super(...arguments), this.store = new it(this, b), this.placeholder = "Type a message...", this.sendButtonLabel = "Send", this.enableFileUpload = !1, this.enableAudio = !1, this.value = "", this.loading = !1, this.disabled = !1, this.currentKey = "";
9089
9121
  }
@@ -9118,7 +9150,7 @@ let ve = class extends ne {
9118
9150
  });
9119
9151
  }
9120
9152
  async _sendFileHandler() {
9121
- const a = await Ga(!1);
9153
+ const a = await Ga(!1, b.setting.fileUploadEnabledExtensions);
9122
9154
  this.emit("message:send:file", {
9123
9155
  detail: {
9124
9156
  files: a
@@ -9157,7 +9189,7 @@ let ve = class extends ne {
9157
9189
  ${W(
9158
9190
  b.setting.sendIconSvg !== "",
9159
9191
  () => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
9160
- () => u`<cb-icon part="user-input-send-icon" svg="${ti}"></cb-icon>`
9192
+ () => u`<cb-icon part="user-input-send-icon" svg="${ii}"></cb-icon>`
9161
9193
  )}
9162
9194
  </sl-button>
9163
9195
  ${W(
@@ -9167,7 +9199,7 @@ let ve = class extends ne {
9167
9199
  ${W(
9168
9200
  b.setting.attachIconSvg !== "",
9169
9201
  () => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
9170
- () => u`<cb-icon part="user-input-attach-icon" svg="${ai}"></cb-icon>`
9202
+ () => u`<cb-icon part="user-input-attach-icon" svg="${si}"></cb-icon>`
9171
9203
  )}
9172
9204
  <!-- select file input -->
9173
9205
  <input type="file" id="file" name="file" class="file-input" />
@@ -9182,7 +9214,7 @@ let ve = class extends ne {
9182
9214
  ${W(
9183
9215
  b.webAudioStarted,
9184
9216
  () => u`<cb-icon svg="${la}"></cb-icon>`,
9185
- () => u`<cb-icon svg="${ii}"></cb-icon>`
9217
+ () => u`<cb-icon svg="${ni}"></cb-icon>`
9186
9218
  )}
9187
9219
  </sl-button>
9188
9220
  `,
@@ -9291,7 +9323,7 @@ var En = Object.defineProperty, $n = Object.getOwnPropertyDescriptor, Ee = (a, e
9291
9323
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9292
9324
  return i && s && En(e, t, s), s;
9293
9325
  };
9294
- let we = class extends ne {
9326
+ let we = class extends re {
9295
9327
  constructor() {
9296
9328
  super(...arguments), this.store = new it(this, b), this.placeholder = "Type a message...", this.sendButtonLabel = "Send", this.enableFileUpload = !1, this.enableAudio = !1, this.value = "", this.loading = !1, this.disabled = !1, this.currentKey = "";
9297
9329
  }
@@ -9332,7 +9364,7 @@ let we = class extends ne {
9332
9364
  });
9333
9365
  }
9334
9366
  async _sendFileHandler() {
9335
- const a = await Ga(!1);
9367
+ const a = await Ga(!1, b.setting.fileUploadEnabledExtensions);
9336
9368
  this.emit("message:send:file", {
9337
9369
  detail: {
9338
9370
  files: a
@@ -9437,7 +9469,7 @@ let we = class extends ne {
9437
9469
  ${W(
9438
9470
  b.setting.sendIconSvg !== "",
9439
9471
  () => u`<cb-icon part="user-input-send-icon" svg="${b.setting.sendIconSvg}"></cb-icon>`,
9440
- () => u`<cb-icon part="user-input-send-icon" svg="${ti}"></cb-icon>`
9472
+ () => u`<cb-icon part="user-input-send-icon" svg="${ii}"></cb-icon>`
9441
9473
  )}
9442
9474
  </sl-button>
9443
9475
  ${W(
@@ -9447,7 +9479,7 @@ let we = class extends ne {
9447
9479
  ${W(
9448
9480
  b.setting.attachIconSvg !== "",
9449
9481
  () => u`<cb-icon part="user-input-attach-icon" svg="${b.setting.attachIconSvg}"></cb-icon>`,
9450
- () => u`<cb-icon part="user-input-attach-icon" svg="${ai}"></cb-icon>`
9482
+ () => u`<cb-icon part="user-input-attach-icon" svg="${si}"></cb-icon>`
9451
9483
  )}
9452
9484
  <!-- select file input -->
9453
9485
  <input type="file" id="file" name="file" class="file-input" />
@@ -9462,7 +9494,7 @@ let we = class extends ne {
9462
9494
  ${W(
9463
9495
  b.webAudioStarted,
9464
9496
  () => u`<cb-icon svg="${la}"></cb-icon>`,
9465
- () => u`<cb-icon svg="${ii}"></cb-icon>`
9497
+ () => u`<cb-icon svg="${ni}"></cb-icon>`
9466
9498
  )}
9467
9499
  </sl-button>
9468
9500
  `,
@@ -9507,7 +9539,7 @@ Ee([
9507
9539
  we = Ee([
9508
9540
  K("cb-user-input-mm")
9509
9541
  ], we);
9510
- const si = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', Pn = J`
9542
+ const ri = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><path fill="currentColor" d="M2.146 2.854a.5.5 0 1 1 .708-.708L8 7.293l5.146-5.147a.5.5 0 0 1 .708.708L8.707 8l5.147 5.146a.5.5 0 0 1-.708.708L8 8.707l-5.146 5.147a.5.5 0 0 1-.708-.708L7.293 8z"/></svg>', Pn = J`
9511
9543
  ${ke}
9512
9544
 
9513
9545
  sl-dialog::part(base) {
@@ -9547,7 +9579,7 @@ var Ln = Object.defineProperty, Rn = Object.getOwnPropertyDescriptor, Ht = (a, e
9547
9579
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9548
9580
  return i && s && Ln(e, t, s), s;
9549
9581
  };
9550
- let ct = class extends ne {
9582
+ let ct = class extends re {
9551
9583
  constructor() {
9552
9584
  super(...arguments), this.open = !1, this.label = "Dialog", this.zindex = 100;
9553
9585
  }
@@ -9578,7 +9610,7 @@ let ct = class extends ne {
9578
9610
  <cb-icon
9579
9611
  color="default"
9580
9612
  style="font-size: 1em;"
9581
- svg="${si}"
9613
+ svg="${ri}"
9582
9614
  ></cb-icon>
9583
9615
  </sl-button>
9584
9616
  </header>
@@ -9604,12 +9636,12 @@ Ht([
9604
9636
  ct = Ht([
9605
9637
  K("cb-dialog")
9606
9638
  ], ct);
9607
- var zn = Object.defineProperty, On = Object.getOwnPropertyDescriptor, ni = (a, e, t, i) => {
9608
- for (var s = i > 1 ? void 0 : i ? On(e, t) : e, r = a.length - 1, o; r >= 0; r--)
9639
+ var zn = Object.defineProperty, Bn = Object.getOwnPropertyDescriptor, oi = (a, e, t, i) => {
9640
+ for (var s = i > 1 ? void 0 : i ? Bn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
9609
9641
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9610
9642
  return i && s && zn(e, t, s), s;
9611
9643
  };
9612
- let qt = class extends ne {
9644
+ let qt = class extends re {
9613
9645
  constructor() {
9614
9646
  super(...arguments), this.open = !1;
9615
9647
  }
@@ -9651,13 +9683,13 @@ qt.styles = J`
9651
9683
  z-index: 1000;
9652
9684
  }
9653
9685
  `;
9654
- ni([
9686
+ oi([
9655
9687
  x({ type: Boolean })
9656
9688
  ], qt.prototype, "open", 2);
9657
- qt = ni([
9689
+ qt = oi([
9658
9690
  K("cb-clear-message-dialog")
9659
9691
  ], qt);
9660
- const Bn = J`
9692
+ const On = J`
9661
9693
  :host {
9662
9694
  // width: 380px;
9663
9695
 
@@ -9722,7 +9754,7 @@ var qn = Object.defineProperty, Dn = Object.getOwnPropertyDescriptor, dt = (a, e
9722
9754
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9723
9755
  return i && s && qn(e, t, s), s;
9724
9756
  };
9725
- let Xe = class extends ne {
9757
+ let Xe = class extends re {
9726
9758
  constructor() {
9727
9759
  super(...arguments), this.open = !1, this.clearMessageDialogOpen = !1, this.customRequest = !1;
9728
9760
  }
@@ -9841,7 +9873,7 @@ let Xe = class extends ne {
9841
9873
  });
9842
9874
  }
9843
9875
  };
9844
- Xe.styles = Bn;
9876
+ Xe.styles = On;
9845
9877
  dt([
9846
9878
  x({ type: Boolean })
9847
9879
  ], Xe.prototype, "open", 2);
@@ -9974,12 +10006,12 @@ const Fn = J`
9974
10006
  margin: 4px 4px 0px 0px;
9975
10007
  }
9976
10008
  `;
9977
- var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor, ri = (a, e, t, i) => {
10009
+ var jn = Object.defineProperty, Hn = Object.getOwnPropertyDescriptor, ci = (a, e, t, i) => {
9978
10010
  for (var s = i > 1 ? void 0 : i ? Hn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
9979
10011
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
9980
10012
  return i && s && jn(e, t, s), s;
9981
10013
  };
9982
- let Dt = class extends ne {
10014
+ let Dt = class extends re {
9983
10015
  constructor() {
9984
10016
  super(...arguments), this.store = new it(this, b), this.open = !1;
9985
10017
  }
@@ -10030,7 +10062,7 @@ let Dt = class extends ne {
10030
10062
  )}
10031
10063
  </sl-button>
10032
10064
  <div class="cb-engage-popup">
10033
- <div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${me`${Y(si)}`}</div>
10065
+ <div class="cb-engage-popup-close" @click=${this._engageClickHandler.bind(this)}>${me`${Y(ri)}`}</div>
10034
10066
  <div class="cb-engage-popup-content">
10035
10067
  ${this.renderPopupLogo()}
10036
10068
  <div>${b.setting.engageMessage}</div>
@@ -10042,28 +10074,28 @@ let Dt = class extends ne {
10042
10074
  }
10043
10075
  };
10044
10076
  Dt.styles = Fn;
10045
- ri([
10077
+ ci([
10046
10078
  x({ type: Boolean })
10047
10079
  ], Dt.prototype, "open", 2);
10048
- Dt = ri([
10080
+ Dt = ci([
10049
10081
  K("cb-anchor")
10050
10082
  ], Dt);
10051
10083
  const Vn = J`
10052
10084
  ${ke}
10053
- `, Oa = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Nn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764a.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0a5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293L5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></g></svg>', Wn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588l-2.29.287l-.082.38l.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319c.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246c-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0"/></g></svg>';
10054
- var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor, oi = (a, e, t, i) => {
10085
+ `, Ba = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M4.54.146A.5.5 0 0 1 4.893 0h6.214a.5.5 0 0 1 .353.146l4.394 4.394a.5.5 0 0 1 .146.353v6.214a.5.5 0 0 1-.146.353l-4.394 4.394a.5.5 0 0 1-.353.146H4.893a.5.5 0 0 1-.353-.146L.146 11.46A.5.5 0 0 1 0 11.107V4.893a.5.5 0 0 1 .146-.353zM5.1 1L1 5.1v5.8L5.1 15h5.8l4.1-4.1V5.1L10.9 1z"/><path d="M7.002 11a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 4.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Un = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M7.938 2.016A.13.13 0 0 1 8.002 2a.13.13 0 0 1 .063.016a.15.15 0 0 1 .054.057l6.857 11.667c.036.06.035.124.002.183a.2.2 0 0 1-.054.06a.1.1 0 0 1-.066.017H1.146a.1.1 0 0 1-.066-.017a.2.2 0 0 1-.054-.06a.18.18 0 0 1 .002-.183L7.884 2.073a.15.15 0 0 1 .054-.057m1.044-.45a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767z"/><path d="M7.002 12a1 1 0 1 1 2 0a1 1 0 0 1-2 0M7.1 5.995a.905.905 0 1 1 1.8 0l-.35 3.507a.552.552 0 0 1-1.1 0z"/></g></svg>', Nn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M2.5 8a5.5 5.5 0 0 1 8.25-4.764a.5.5 0 0 0 .5-.866A6.5 6.5 0 1 0 14.5 8a.5.5 0 0 0-1 0a5.5 5.5 0 1 1-11 0"/><path d="M15.354 3.354a.5.5 0 0 0-.708-.708L8 9.293L5.354 6.646a.5.5 0 1 0-.708.708l3 3a.5.5 0 0 0 .708 0z"/></g></svg>', Wn = '<svg viewBox="0 0 16 16" width="1.2em" height="1.2em" ><g fill="currentColor"><path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14m0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16"/><path d="m8.93 6.588l-2.29.287l-.082.38l.45.083c.294.07.352.176.288.469l-.738 3.468c-.194.897.105 1.319.808 1.319c.545 0 1.178-.252 1.465-.598l.088-.416c-.2.176-.492.246-.686.246c-.275 0-.375-.193-.304-.533zM9 4.5a1 1 0 1 1-2 0a1 1 0 0 1 2 0"/></g></svg>';
10086
+ var Gn = Object.defineProperty, Xn = Object.getOwnPropertyDescriptor, li = (a, e, t, i) => {
10055
10087
  for (var s = i > 1 ? void 0 : i ? Xn(e, t) : e, r = a.length - 1, o; r >= 0; r--)
10056
10088
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
10057
10089
  return i && s && Gn(e, t, s), s;
10058
10090
  };
10059
- const Ba = {
10091
+ const Oa = {
10060
10092
  error: {
10061
10093
  variant: "danger",
10062
- icon: Oa
10094
+ icon: Ba
10063
10095
  },
10064
10096
  danger: {
10065
10097
  variant: "danger",
10066
- icon: Oa
10098
+ icon: Ba
10067
10099
  },
10068
10100
  warning: {
10069
10101
  variant: "warning",
@@ -10078,20 +10110,20 @@ const Ba = {
10078
10110
  icon: Wn
10079
10111
  }
10080
10112
  };
10081
- let Ft = class extends ne {
10113
+ let Ft = class extends re {
10082
10114
  constructor() {
10083
10115
  super(...arguments), this.status = "info";
10084
10116
  }
10085
10117
  render() {
10086
- const { variant: a, icon: e } = Ba[this.status] || Ba.info;
10118
+ const { variant: a, icon: e } = Oa[this.status] || Oa.info;
10087
10119
  return u`<cb-icon svg=${e} color="${a}"></cb-icon>`;
10088
10120
  }
10089
10121
  };
10090
10122
  Ft.styles = Wa;
10091
- oi([
10123
+ li([
10092
10124
  x({ type: String })
10093
10125
  ], Ft.prototype, "status", 2);
10094
- Ft = oi([
10126
+ Ft = li([
10095
10127
  K("cb-status-icon")
10096
10128
  ], Ft);
10097
10129
  var Yn = Object.getOwnPropertyDescriptor, Jn = (a, e, t, i) => {
@@ -10099,7 +10131,7 @@ var Yn = Object.getOwnPropertyDescriptor, Jn = (a, e, t, i) => {
10099
10131
  (o = a[r]) && (s = o(s) || s);
10100
10132
  return s;
10101
10133
  };
10102
- let Qt = class extends ne {
10134
+ let Qt = class extends re {
10103
10135
  render() {
10104
10136
  return u` <sl-alert variant="danger" open>
10105
10137
  <cb-status-icon status="error" slot="icon"></cb-status-icon>
@@ -10209,7 +10241,7 @@ var Zn = Object.defineProperty, Qn = Object.getOwnPropertyDescriptor, ft = (a, e
10209
10241
  return i && s && Zn(e, t, s), s;
10210
10242
  };
10211
10243
  const qa = Je.noConflict(), er = '<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-star-fill" viewBox="0 0 16 16"><path d="M3.612 15.443c-.386.198-.824-.149-.746-.592l.83-4.73L.173 6.765c-.329-.314-.158-.888.283-.95l4.898-.696L7.538.792c.197-.39.73-.39.927 0l2.184 4.327 4.898.696c.441.062.612.636.282.95l-3.522 3.356.83 4.73c.078.443-.36.79-.746.592L8 13.187l-4.389 2.256z"/></svg>';
10212
- let Ye = class extends ne {
10244
+ let Ye = class extends re {
10213
10245
  constructor() {
10214
10246
  super(...arguments), this.store = new it(this, b), this.zindex = 100;
10215
10247
  }
@@ -10242,7 +10274,7 @@ let Ye = class extends ne {
10242
10274
  b.feedbackScore = 0;
10243
10275
  }}"
10244
10276
  >
10245
- ${me`${Y(ei)}`}
10277
+ ${me`${Y(ai)}`}
10246
10278
  </div>
10247
10279
  <sl-rating id="cb-feedback-rating-el" class="cb-feedback-rating" @sl-change="${this._ratingChangeHandler}" label="Rating" precision="1" .value=${b.feedbackScore}></sl-rating>
10248
10280
  <div
@@ -10251,7 +10283,7 @@ let Ye = class extends ne {
10251
10283
  b.feedbackScore = 5;
10252
10284
  }}"
10253
10285
  >
10254
- ${me`${Y(Qa)}`}
10286
+ ${me`${Y(ti)}`}
10255
10287
  </div>
10256
10288
  </div>
10257
10289
  <div style="display: flex">
@@ -10599,7 +10631,7 @@ class ar extends HTMLElement {
10599
10631
  }
10600
10632
  customElements.get("volume-visualizer") || customElements.define("volume-visualizer", ar);
10601
10633
  const da = 1, Da = 2;
10602
- class ci extends HTMLElement {
10634
+ class di extends HTMLElement {
10603
10635
  constructor() {
10604
10636
  super(), this.attachShadow({ mode: "open" }), this._analyserInput = null, this._dataArrayInput = null, this._analyserOutput = null, this._dataArrayOutput = null, this._thinking = !1, this._muted = !1, this._fftSize = 512, this._smoothingTimeConstant = 0.55, this._canvas = null, this._context = null, this._lastTime = 0, this._render();
10605
10637
  }
@@ -10681,7 +10713,7 @@ class ci extends HTMLElement {
10681
10713
  this._stop(), this._analyserInput = null, this._analyserOutput = null;
10682
10714
  }
10683
10715
  }
10684
- class ir extends ci {
10716
+ class ir extends di {
10685
10717
  constructor() {
10686
10718
  super(), this._ribbons = [], this._lastTime = 0, this._ribbons.push(
10687
10719
  new It(
@@ -10784,7 +10816,7 @@ class It {
10784
10816
  }
10785
10817
  }
10786
10818
  }
10787
- class sr extends ci {
10819
+ class sr extends di {
10788
10820
  constructor() {
10789
10821
  super(), this._numBars = 32, this._renderHeights = Array(this._numBars).fill(0), this._targetHeights = Array(this._numBars).fill(0), this._velocity = Array(this._numBars).fill(0), this._springStrength = 25, this._damping = 0.75, this._inputColor = { r: 255, g: 126, b: 103 }, this._outputColor = { r: 99, g: 193, b: 208 }, this._currentColor = { ...this._outputColor }, this._thinkingPhase = 0;
10790
10822
  }
@@ -10841,12 +10873,12 @@ var rr = Object.getOwnPropertyDescriptor, or = (a, e, t, i) => {
10841
10873
  };
10842
10874
  const bt = Je.noConflict();
10843
10875
  bt.setLevel("info");
10844
- let ea = class extends ne {
10876
+ let ea = class extends re {
10845
10877
  constructor() {
10846
10878
  super(...arguments), this.store = new it(this, b), this.unsubscribeTypingActive = b.subscribe(
10847
10879
  this._handleTypingActiveChanged.bind(this),
10848
10880
  ["typingActive"]
10849
- ), this.volumeVisualizerRef = qi(), this.volumeVisualizerInitialized = !1;
10881
+ ), this.volumeVisualizerRef = Fi(), this.volumeVisualizerInitialized = !1;
10850
10882
  }
10851
10883
  /*
10852
10884
  createRenderRoot() {
@@ -10954,7 +10986,7 @@ class ta extends Error {
10954
10986
  super(`Request failed with ${f}: ${t.method} ${t.url}`), this.name = "HTTPError", this.response = e, this.request = t, this.options = i;
10955
10987
  }
10956
10988
  }
10957
- class li extends Error {
10989
+ class fi extends Error {
10958
10990
  name = "NonError";
10959
10991
  value;
10960
10992
  constructor(e) {
@@ -10972,7 +11004,7 @@ class Wt extends Error {
10972
11004
  code;
10973
11005
  customRequest;
10974
11006
  constructor(e) {
10975
- const t = e?.cause ? e.cause instanceof Error ? e.cause : new li(e.cause) : void 0;
11007
+ const t = e?.cause ? e.cause instanceof Error ? e.cause : new fi(e.cause) : void 0;
10976
11008
  super(e?.code ? `Forced retry: ${e.code}` : "Forced retry", t ? { cause: t } : void 0), this.customDelay = e?.delay, this.code = e?.code, this.customRequest = e?.request;
10977
11009
  }
10978
11010
  }
@@ -10995,7 +11027,7 @@ const Fa = (() => {
10995
11027
  throw s;
10996
11028
  }
10997
11029
  return a && !e;
10998
- })(), cr = typeof globalThis.AbortController == "function", di = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", lr = typeof globalThis.ReadableStream == "function", dr = typeof globalThis.FormData == "function", fi = ["get", "post", "put", "patch", "head", "delete"], fr = {
11030
+ })(), cr = typeof globalThis.AbortController == "function", hi = typeof globalThis.AbortSignal == "function" && typeof globalThis.AbortSignal.any == "function", lr = typeof globalThis.ReadableStream == "function", dr = typeof globalThis.FormData == "function", bi = ["get", "post", "put", "patch", "head", "delete"], fr = {
10999
11031
  json: "application/json",
11000
11032
  text: "text/*",
11001
11033
  formData: "multipart/form-data",
@@ -11004,14 +11036,14 @@ const Fa = (() => {
11004
11036
  // Supported in modern Fetch implementations (for example, browsers and recent Node.js/undici).
11005
11037
  // We still feature-check at runtime before exposing the shortcut.
11006
11038
  bytes: "*/*"
11007
- }, Gt = 2147483647, hr = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, hi = Symbol("stop");
11008
- class bi {
11039
+ }, Gt = 2147483647, hr = new TextEncoder().encode("------WebKitFormBoundaryaxpyiPgbbPti10Rw").length, ui = Symbol("stop");
11040
+ class pi {
11009
11041
  options;
11010
11042
  constructor(e) {
11011
11043
  this.options = e;
11012
11044
  }
11013
11045
  }
11014
- const br = (a) => new bi(a), ur = {
11046
+ const br = (a) => new pi(a), ur = {
11015
11047
  json: !0,
11016
11048
  parseJson: !0,
11017
11049
  stringifyJson: !0,
@@ -11070,7 +11102,7 @@ const br = (a) => new bi(a), ur = {
11070
11102
  return 0;
11071
11103
  }
11072
11104
  return 0;
11073
- }, ui = (a, e, t) => {
11105
+ }, gi = (a, e, t) => {
11074
11106
  let i, s = 0;
11075
11107
  return a.pipeThrough(new TransformStream({
11076
11108
  transform(r, o) {
@@ -11095,7 +11127,7 @@ const br = (a) => new bi(a), ur = {
11095
11127
  headers: a.headers
11096
11128
  });
11097
11129
  const t = Math.max(0, Number(a.headers.get("content-length")) || 0);
11098
- return new Response(ui(a.body, t, e), {
11130
+ return new Response(gi(a.body, t, e), {
11099
11131
  status: a.status,
11100
11132
  statusText: a.statusText,
11101
11133
  headers: a.headers
@@ -11107,14 +11139,14 @@ const br = (a) => new bi(a), ur = {
11107
11139
  return new Request(a, {
11108
11140
  // @ts-expect-error - Types are outdated.
11109
11141
  duplex: "half",
11110
- body: ui(a.body, i, e)
11142
+ body: gi(a.body, i, e)
11111
11143
  });
11112
11144
  }, Qe = (a) => a !== null && typeof a == "object", Et = (...a) => {
11113
11145
  for (const e of a)
11114
11146
  if ((!Qe(e) || Array.isArray(e)) && e !== void 0)
11115
11147
  throw new TypeError("The `options` argument must be an object");
11116
11148
  return fa({}, ...a);
11117
- }, pi = (a = {}, e = {}) => {
11149
+ }, mi = (a = {}, e = {}) => {
11118
11150
  const t = new globalThis.Headers(a), i = e instanceof globalThis.Headers, s = new globalThis.Headers(e);
11119
11151
  for (const [r, o] of s.entries())
11120
11152
  i && o === "undefined" || o === void 0 ? t.delete(r) : t.set(r, o);
@@ -11123,7 +11155,7 @@ const br = (a) => new bi(a), ur = {
11123
11155
  function $t(a, e, t) {
11124
11156
  return Object.hasOwn(e, t) && e[t] === void 0 ? [] : fa(a[t] ?? [], e[t] ?? []);
11125
11157
  }
11126
- const gi = (a = {}, e = {}) => ({
11158
+ const yi = (a = {}, e = {}) => ({
11127
11159
  beforeRequest: $t(a, e, "beforeRequest"),
11128
11160
  beforeRetry: $t(a, e, "beforeRetry"),
11129
11161
  afterResponse: $t(a, e, "afterResponse"),
@@ -11177,10 +11209,10 @@ const gi = (a = {}, e = {}) => ({
11177
11209
  }
11178
11210
  Qe(p) && f in e && (p = fa(e[f], p)), e = { ...e, [f]: p };
11179
11211
  }
11180
- Qe(o.hooks) && (i = gi(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = pi(t, o.headers), e.headers = t);
11212
+ Qe(o.hooks) && (i = yi(i, o.hooks), e.hooks = i), Qe(o.headers) && (t = mi(t, o.headers), e.headers = t);
11181
11213
  }
11182
- return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : di ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
11183
- }, xr = (a) => fi.includes(a) ? a.toUpperCase() : a, kr = ["get", "put", "head", "delete", "options", "trace"], _r = [408, 413, 429, 500, 502, 503, 504], Sr = [413, 429, 503], ja = {
11214
+ return s !== void 0 && (e.searchParams = s), r.length > 0 && (r.length === 1 ? e.signal = r[0] : hi ? e.signal = AbortSignal.any(r) : e.signal = r.at(-1)), e.context === void 0 && (e.context = {}), e;
11215
+ }, xr = (a) => bi.includes(a) ? a.toUpperCase() : a, kr = ["get", "put", "head", "delete", "options", "trace"], _r = [408, 413, 429, 500, 502, 503, 504], Sr = [413, 429, 503], ja = {
11184
11216
  limit: 2,
11185
11217
  methods: kr,
11186
11218
  statusCodes: _r,
@@ -11253,7 +11285,7 @@ class vt {
11253
11285
  let o = await i.#p();
11254
11286
  for (const f of i.#e.hooks.afterResponse) {
11255
11287
  const p = i.#d(o.clone()), v = await f(i.request, i.#o(), p, { retryCount: i.#a });
11256
- if (v instanceof globalThis.Response && (o = v), v instanceof bi)
11288
+ if (v instanceof globalThis.Response && (o = v), v instanceof pi)
11257
11289
  throw await Promise.all([
11258
11290
  p.body?.cancel(),
11259
11291
  o.body?.cancel()
@@ -11308,8 +11340,8 @@ class vt {
11308
11340
  constructor(e, t = {}) {
11309
11341
  if (this.#t = e, this.#e = {
11310
11342
  ...t,
11311
- headers: pi(this.#t.headers, t.headers),
11312
- hooks: gi({
11343
+ headers: mi(this.#t.headers, t.headers),
11344
+ hooks: yi({
11313
11345
  beforeRequest: [],
11314
11346
  beforeRetry: [],
11315
11347
  beforeError: [],
@@ -11330,7 +11362,7 @@ class vt {
11330
11362
  throw new Error("`input` must not begin with a slash when using `prefixUrl`");
11331
11363
  this.#e.prefixUrl.endsWith("/") || (this.#e.prefixUrl += "/"), this.#t = this.#e.prefixUrl + this.#t;
11332
11364
  }
11333
- cr && di && (this.#s = this.#e.signal ?? this.#t.signal, this.#i = new globalThis.AbortController(), this.#e.signal = this.#s ? AbortSignal.any([this.#s, this.#i.signal]) : this.#i.signal), Fa && (this.#e.duplex = "half"), this.#e.json !== void 0 && (this.#e.body = this.#e.stringifyJson?.(this.#e.json) ?? JSON.stringify(this.#e.json), this.#e.headers.set("content-type", this.#e.headers.get("content-type") ?? "application/json"));
11365
+ cr && hi && (this.#s = this.#e.signal ?? this.#t.signal, this.#i = new globalThis.AbortController(), this.#e.signal = this.#s ? AbortSignal.any([this.#s, this.#i.signal]) : this.#i.signal), Fa && (this.#e.duplex = "half"), this.#e.json !== void 0 && (this.#e.body = this.#e.stringifyJson?.(this.#e.json) ?? JSON.stringify(this.#e.json), this.#e.headers.set("content-type", this.#e.headers.get("content-type") ?? "application/json"));
11334
11366
  const i = t.headers && new globalThis.Headers(t.headers).has("content-type");
11335
11367
  if (this.#t instanceof globalThis.Request && (dr && this.#e.body instanceof globalThis.FormData || this.#e.body instanceof URLSearchParams) && !i && this.#e.headers.delete("content-type"), this.request = new globalThis.Request(this.#t, this.#e), Ir(this.#e.searchParams)) {
11336
11368
  const r = "?" + (typeof this.#e.searchParams == "string" ? this.#e.searchParams.replace(/^\?/, "") : new URLSearchParams(vt.#b(this.#e.searchParams)).toString()), o = this.request.url.replace(/(?:\?.*?)?(?=#|$)/, r);
@@ -11352,7 +11384,7 @@ class vt {
11352
11384
  async #u(e) {
11353
11385
  if (this.#a++, this.#a > this.#e.retry.limit)
11354
11386
  throw e;
11355
- const t = e instanceof Error ? e : new li(e);
11387
+ const t = e instanceof Error ? e : new fi(e);
11356
11388
  if (t instanceof Wt)
11357
11389
  return t.customDelay ?? this.#c();
11358
11390
  if (!this.#e.retry.methods.includes(this.request.method.toLowerCase()))
@@ -11408,7 +11440,7 @@ class vt {
11408
11440
  }
11409
11441
  if (r instanceof globalThis.Response)
11410
11442
  return r;
11411
- if (r === hi)
11443
+ if (r === ui)
11412
11444
  return;
11413
11445
  }
11414
11446
  return this.#f(e);
@@ -11444,9 +11476,9 @@ class vt {
11444
11476
  }
11445
11477
  const ia = (a) => {
11446
11478
  const e = (t, i) => vt.create(t, Et(a, i));
11447
- for (const t of fi)
11479
+ for (const t of bi)
11448
11480
  e[t] = (i, s) => vt.create(i, Et(a, s, { method: t }));
11449
- return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop = hi, e.retry = br, e;
11481
+ return e.create = (t) => ia(Et(t)), e.extend = (t) => (typeof t == "function" && (t = t(a ?? {})), ia(Et(a, t))), e.stop = ui, e.retry = br, e;
11450
11482
  }, Pr = ia();
11451
11483
  Pr.extend({
11452
11484
  hooks: {
@@ -11482,9 +11514,9 @@ var Rr = Object.defineProperty, zr = Object.getOwnPropertyDescriptor, U = (a, e,
11482
11514
  (o = a[r]) && (s = (i ? o(e, t, s) : o(s)) || s);
11483
11515
  return i && s && Rr(e, t, s), s;
11484
11516
  };
11485
- const Be = Je.noConflict();
11486
- Be.setLevel("info");
11487
- let H = class extends ne {
11517
+ const Oe = Je.noConflict();
11518
+ Oe.setLevel("info");
11519
+ let H = class extends re {
11488
11520
  constructor() {
11489
11521
  super(...arguments), this.store = new it(this, b), this.displayLicense = !1, this.name = "ChatBot", this.orgId = "", this.botId = "", this.url = "ws://localhost:3070", this.logoUrl = "", this.logoSvg = `<svg width="24" height="24" viewBox="0 0 203 200" fill="none" xmlns="http://www.w3.org/2000/svg">
11490
11522
  <path d="M100.438 0C155.665 0 200.438 44.7723 200.438 100C200.438 155.228 155.665 200 100.438 200C45.2098 200 0.4375 155.228 0.4375 100C0.4375 44.7723 45.2098 0 100.438 0ZM130.093 60.6063C120.409 60.6063 115.205 61.458 109.344 65.0325C100.122 70.6592 95.629 80.1958 94.2273 93.877C94.1468 94.5544 93.8048 97.2571 93.4091 100.349C93.3152 101.06 93.2281 101.771 93.1409 102.455C92.7318 105.573 92.3093 108.739 92.0142 110.408C90.8808 117.041 89.2914 123.761 83.8927 126.759C83.6915 126.873 83.4702 126.967 83.2556 127.067C78.6013 129.093 72.2905 128.898 72.2905 128.898C72.2905 128.898 69.1988 128.885 69.1787 128.885C69.172 128.885 69.1921 128.885 69.1921 128.898L68.1057 143.632C87.7824 143.666 93.0537 139.213 93.0537 139.213C102.275 133.586 106.768 124.049 108.17 110.368C108.251 109.677 108.593 106.894 109.002 103.735C109.096 103.004 109.196 102.273 109.283 101.576C109.679 98.5246 110.095 95.4798 110.383 93.8435C111.517 87.2108 113.106 80.4842 118.505 77.4931C118.706 77.3791 118.921 77.2852 119.135 77.1846C123.756 75.1727 130.107 75.3471 130.107 75.3471C132.494 75.3269 133.219 75.4007 133.286 75.4074L134.292 60.6264C132.783 60.6264 130.107 60.6264 130.107 60.6264L130.093 60.6063Z" fill="#010101" style="fill:#010101;fill:color(display-p3 0.0039 0.0039 0.0039);fill-opacity:1;"/>
@@ -11547,8 +11579,8 @@ let H = class extends ne {
11547
11579
  b.addActions(a);
11548
11580
  }
11549
11581
  render() {
11550
- return b.disabled && !this.alwaysOpen ? (Be.info("Bot is disabled until settings are loaded"), null) : u`
11551
- <div class="cb-wrapper${b.open ? " cb-open" : ""}" part="wrapper${b.open ? " open" : ""}" exportparts="wrapper${b.open ? " open" : ""}">
11582
+ return b.disabled && !this.alwaysOpen ? (Oe.info("Bot is disabled until settings are loaded"), null) : u`
11583
+ <div class="cb-wrapper${b.open ? " cb-open" : ""}" part="wrapper${b.open ? " open" : ""}" exportparts="new-conversation-wrapper new-conversation-button wrapper${b.open ? " open" : ""}">
11552
11584
  <cb-header title="${this.name}" exportparts="header, header-logo, header-title, header-close"></cb-header>
11553
11585
  <cb-message-list
11554
11586
  .messages=${b.messages}
@@ -11556,6 +11588,15 @@ let H = class extends ne {
11556
11588
  .form=${b.form}
11557
11589
  exportparts="bot-message-list, disclaimer-message, bot-message, cb-message, bot-message-content, user-message-content, user-avatar, assistant-avatar, feedback-wrapper,feedback-up,feedback-down,form, form-title, form-input, form-submit"
11558
11590
  ></cb-message-list>
11591
+ ${W(
11592
+ b.showNewConversation,
11593
+ () => u`
11594
+ <div class="cb-new-conversation-wrapper" part="new-conversation-wrapper">
11595
+ <button type="button" class="card-btn info" part="new-conversation-button" @click=${this.clearConversation}>Start New Conversation</button>
11596
+ </div>
11597
+ `,
11598
+ () => u``
11599
+ )}
11559
11600
  <cb-audio-controls exportparts="audio-controls-wrapper, audio-controls, audio-mute-button, audio-unmute-button, audio-end-button, audio-controls-viz"></cb-audio-controls>
11560
11601
  ${this.renderUserInput()} ${this.renderFeedbackDialog()}
11561
11602
  </div>
@@ -11588,7 +11629,7 @@ let H = class extends ne {
11588
11629
  ></cb-user-input>`;
11589
11630
  }
11590
11631
  connectedCallback() {
11591
- super.connectedCallback(), Be.info("connectedCallback"), this.initCssVariables(), addEventListener("c7o:bot:stateEvent", this.handleStateEvent), addEventListener("message:send", this.handleAddMessage), addEventListener("chatbot:toggle", this.handleToggleEvent), addEventListener("form:submit", this.handleFormSubmitEvent), addEventListener("message:send:file", this._uploadFileHandler), addEventListener("audio:toggle", this._audioToggleHandler);
11632
+ super.connectedCallback(), Oe.info("connectedCallback"), this.initCssVariables(), addEventListener("c7o:bot:stateEvent", this.handleStateEvent), addEventListener("message:send", this.handleAddMessage), addEventListener("chatbot:toggle", this.handleToggleEvent), addEventListener("form:submit", this.handleFormSubmitEvent), addEventListener("message:send:file", this._uploadFileHandler), addEventListener("audio:toggle", this._audioToggleHandler);
11592
11633
  }
11593
11634
  extractCssVariable(a, e, t) {
11594
11635
  let i = a.getPropertyValue(e).trim();
@@ -11617,26 +11658,26 @@ let H = class extends ne {
11617
11658
 
11618
11659
  */
11619
11660
  disconnectedCallback() {
11620
- Be.info("disconnectedCallback"), super.disconnectedCallback(), window.removeEventListener("c7o:bot:stateEvent", this.handleStateEvent), window.removeEventListener("message:send", this.handleAddMessage), window.removeEventListener("chatbot:toggle", this.handleToggleEvent), window.removeEventListener("form:submit", this.handleFormSubmitEvent), window.removeEventListener("message:send:file", this._uploadFileHandler), window.removeEventListener("audio:toggle", this._audioToggleHandler);
11661
+ Oe.info("disconnectedCallback"), super.disconnectedCallback(), window.removeEventListener("c7o:bot:stateEvent", this.handleStateEvent), window.removeEventListener("message:send", this.handleAddMessage), window.removeEventListener("chatbot:toggle", this.handleToggleEvent), window.removeEventListener("form:submit", this.handleFormSubmitEvent), window.removeEventListener("message:send:file", this._uploadFileHandler), window.removeEventListener("audio:toggle", this._audioToggleHandler);
11621
11662
  }
11622
11663
  // This is called when component is loaded, with all the settings (props) values
11623
11664
  // Use to initialize
11624
11665
  // This is also called when state changes - ??? - i.e. when message added to the array
11625
11666
  updated(a) {
11626
- super.updated(a), a.size > 0 && (Be.info("updated,_changedProperties:", a), this._initSetting()), !this._scrollToBottomTimeout && (this._scrollToBottomTimeout = setTimeout(() => {
11667
+ super.updated(a), a.size > 0 && (Oe.info("updated,_changedProperties:", a), this._initSetting()), !this._scrollToBottomTimeout && (this._scrollToBottomTimeout = setTimeout(() => {
11627
11668
  this._scrollToBottom(), this._scrollToBottomTimeout = void 0;
11628
11669
  }, 200));
11629
11670
  }
11630
11671
  // initialize setting
11631
11672
  _initSetting() {
11632
- Be.info("_initSetting");
11673
+ Oe.info("_initSetting");
11633
11674
  const a = b.setting;
11634
11675
  a.orgId = this.orgId, a.botId = this.botId, a.url = this.url, a.logoUrl = this.logoUrl, a.logoSvg = this.logoSvg, a.closeSvg = this.closeSvg, a.popupLogoSvg = this.popupLogoSvg, a.popupLogoUrl = this.popupLogoUrl, a.botIconSvg = this.botIconSvg, a.userIconSvg = this.userIconSvg, a.systemIconSvg = this.systemIconSvg, a.agentIconSvg = this.agentIconSvg, a.anchorOpenSvg = this.anchorOpenSvg, a.anchorCloseSvg = this.anchorCloseSvg, a.sendIconSvg = this.sendIconSvg, a.attachIconSvg = this.attachIconSvg, b.setSetting(a);
11635
11676
  let e = {};
11636
11677
  try {
11637
11678
  e = JSON.parse(this.prefilledFormFields);
11638
11679
  } catch (t) {
11639
- Be.error(`Failed to parse prefilled-form-fields attribute value, error: ${t?.message || ""}`), e = {};
11680
+ Oe.error(`Failed to parse prefilled-form-fields attribute value, error: ${t?.message || ""}`), e = {};
11640
11681
  }
11641
11682
  b.setPrefilledFormFields(e), this.open && (b.open = !0), this.alwaysOpen && (b.open = !0, b.alwaysOpen = !0);
11642
11683
  }
@@ -11671,7 +11712,7 @@ let H = class extends ne {
11671
11712
  // for example, user profile, current product user is viewing on the web page, etc.
11672
11713
  setContext(a = {}) {
11673
11714
  b.setContext(a).catch((e) => {
11674
- Be.error(`Failed to set context, error: ${e?.message || ""}`);
11715
+ Oe.error(`Failed to set context, error: ${e?.message || ""}`);
11675
11716
  });
11676
11717
  }
11677
11718
  getContext() {
@@ -11736,6 +11777,11 @@ let H = class extends ne {
11736
11777
  };
11737
11778
  return this._processSendMessage(e);
11738
11779
  }
11780
+ // [sv2] for testing only
11781
+ processAgentDisconnected(a) {
11782
+ b.handleAgentDisconnected(a).catch((e) => {
11783
+ });
11784
+ }
11739
11785
  _processSendMessage(a) {
11740
11786
  if (!a.data.text || typeof a.data.text != "string" || a.data.text.trim() === "") {
11741
11787
  console.log("_processSendMessage: input text is empty, ignored", a);
@@ -11769,7 +11815,7 @@ let H = class extends ne {
11769
11815
  await b.uploadFiles(e.files);
11770
11816
  }
11771
11817
  async _audioToggleHandler(a) {
11772
- Be.info("_audioToggleHandler called"), await b.toggleAudio();
11818
+ Oe.info("_audioToggleHandler called"), await b.toggleAudio();
11773
11819
  }
11774
11820
  // setting confirm handler
11775
11821
  _settingConfirmHandler(a) {
@@ -11787,7 +11833,7 @@ let H = class extends ne {
11787
11833
  this._messageList?.scrollToBottom();
11788
11834
  }
11789
11835
  };
11790
- H.styles = Ni;
11836
+ H.styles = [Gi, Ka];
11791
11837
  U([
11792
11838
  x({ type: Boolean, attribute: "display-license" })
11793
11839
  ], H.prototype, "displayLicense", 2);