pkg-pr-new 0.0.41 → 0.0.43

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.js CHANGED
@@ -8,12 +8,25 @@ var __export = (target, all) => {
8
8
  __defProp(target, name, { get: all[name], enumerable: true });
9
9
  };
10
10
 
11
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/core.mjs
12
- function isObject(value) {
13
- return value !== null && typeof value === "object";
11
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/core.mjs
12
+ function isPlainObject$1(value) {
13
+ if (value === null || typeof value !== "object") {
14
+ return false;
15
+ }
16
+ const prototype = Object.getPrototypeOf(value);
17
+ if (prototype !== null && prototype !== Object.prototype && Object.getPrototypeOf(prototype) !== null) {
18
+ return false;
19
+ }
20
+ if (Symbol.iterator in value) {
21
+ return false;
22
+ }
23
+ if (Symbol.toStringTag in value) {
24
+ return Object.prototype.toString.call(value) === "[object Module]";
25
+ }
26
+ return true;
14
27
  }
15
28
  function _defu(baseObject, defaults2, namespace = ".", merger) {
16
- if (!isObject(defaults2)) {
29
+ if (!isPlainObject$1(defaults2)) {
17
30
  return _defu(baseObject, {}, namespace, merger);
18
31
  }
19
32
  const object = Object.assign({}, defaults2);
@@ -30,7 +43,7 @@ function _defu(baseObject, defaults2, namespace = ".", merger) {
30
43
  }
31
44
  if (Array.isArray(value) && Array.isArray(object[key])) {
32
45
  object[key] = [...value, ...object[key]];
33
- } else if (isObject(value) && isObject(object[key])) {
46
+ } else if (isPlainObject$1(value) && isPlainObject$1(object[key])) {
34
47
  object[key] = _defu(
35
48
  value,
36
49
  object[key],
@@ -46,7 +59,7 @@ function _defu(baseObject, defaults2, namespace = ".", merger) {
46
59
  function createDefu(merger) {
47
60
  return (...arguments_) => (
48
61
  // eslint-disable-next-line unicorn/no-array-reduce
49
- arguments_.reduce((p2, c2) => _defu(p2, c2, "", merger), {})
62
+ arguments_.reduce((p3, c3) => _defu(p3, c3, "", merger), {})
50
63
  );
51
64
  }
52
65
  function isPlainObject(obj) {
@@ -81,7 +94,7 @@ function createConsola(options = {}) {
81
94
  }
82
95
  var LogLevels, LogTypes, defu, paused, queue, Consola;
83
96
  var init_core = __esm({
84
- "../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/core.mjs"() {
97
+ "../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/core.mjs"() {
85
98
  "use strict";
86
99
  LogLevels = {
87
100
  silent: Number.NEGATIVE_INFINITY,
@@ -155,6 +168,14 @@ var init_core = __esm({
155
168
  paused = false;
156
169
  queue = [];
157
170
  Consola = class _Consola {
171
+ options;
172
+ _lastLog;
173
+ _mockFn;
174
+ /**
175
+ * Creates an instance of Consola with specified options or defaults.
176
+ *
177
+ * @param {Partial<ConsolaOptions>} [options={}] - Configuration options for the Consola instance.
178
+ */
158
179
  constructor(options = {}) {
159
180
  const types = options.types || LogTypes;
160
181
  this.options = defu(
@@ -192,9 +213,19 @@ var init_core = __esm({
192
213
  }
193
214
  this._lastLog = {};
194
215
  }
216
+ /**
217
+ * Gets the current log level of the Consola instance.
218
+ *
219
+ * @returns {number} The current log level.
220
+ */
195
221
  get level() {
196
222
  return this.options.level;
197
223
  }
224
+ /**
225
+ * Sets the minimum log level that will be output by the instance.
226
+ *
227
+ * @param {number} level - The new log level to set.
228
+ */
198
229
  set level(level) {
199
230
  this.options.level = _normalizeLogLevel(
200
231
  level,
@@ -202,12 +233,27 @@ var init_core = __esm({
202
233
  this.options.level
203
234
  );
204
235
  }
236
+ /**
237
+ * Displays a prompt to the user and returns the response.
238
+ * Throw an error if `prompt` is not supported by the current configuration.
239
+ *
240
+ * @template T
241
+ * @param {string} message - The message to display in the prompt.
242
+ * @param {T} [opts] - Optional options for the prompt. See {@link PromptOptions}.
243
+ * @returns {promise<T>} A promise that infer with the prompt options. See {@link PromptOptions}.
244
+ */
205
245
  prompt(message, opts) {
206
246
  if (!this.options.prompt) {
207
247
  throw new Error("prompt is not supported!");
208
248
  }
209
249
  return this.options.prompt(message, opts);
210
250
  }
251
+ /**
252
+ * Creates a new instance of Consola, inheriting options from the current instance, with possible overrides.
253
+ *
254
+ * @param {Partial<ConsolaOptions>} options - Optional overrides for the new instance. See {@link ConsolaOptions}.
255
+ * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
256
+ */
211
257
  create(options) {
212
258
  const instance = new _Consola({
213
259
  ...this.options,
@@ -218,6 +264,12 @@ var init_core = __esm({
218
264
  }
219
265
  return instance;
220
266
  }
267
+ /**
268
+ * Creates a new Consola instance with the specified default log object properties.
269
+ *
270
+ * @param {InputLogObject} defaults - Default properties to include in any log from the new instance. See {@link InputLogObject}.
271
+ * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
272
+ */
221
273
  withDefaults(defaults2) {
222
274
  return this.create({
223
275
  ...this.options,
@@ -227,26 +279,52 @@ var init_core = __esm({
227
279
  }
228
280
  });
229
281
  }
282
+ /**
283
+ * Creates a new Consola instance with a specified tag, which will be included in every log.
284
+ *
285
+ * @param {string} tag - The tag to include in each log of the new instance.
286
+ * @returns {ConsolaInstance} A new Consola instance. See {@link ConsolaInstance}.
287
+ */
230
288
  withTag(tag) {
231
289
  return this.withDefaults({
232
290
  tag: this.options.defaults.tag ? this.options.defaults.tag + ":" + tag : tag
233
291
  });
234
292
  }
293
+ /**
294
+ * Adds a custom reporter to the Consola instance.
295
+ * Reporters will be called for each log message, depending on their implementation and log level.
296
+ *
297
+ * @param {ConsolaReporter} reporter - The reporter to add. See {@link ConsolaReporter}.
298
+ * @returns {Consola} The current Consola instance.
299
+ */
235
300
  addReporter(reporter) {
236
301
  this.options.reporters.push(reporter);
237
302
  return this;
238
303
  }
304
+ /**
305
+ * Removes a custom reporter from the Consola instance.
306
+ * If no reporter is specified, all reporters will be removed.
307
+ *
308
+ * @param {ConsolaReporter} reporter - The reporter to remove. See {@link ConsolaReporter}.
309
+ * @returns {Consola} The current Consola instance.
310
+ */
239
311
  removeReporter(reporter) {
240
312
  if (reporter) {
241
- const i = this.options.reporters.indexOf(reporter);
242
- if (i >= 0) {
243
- return this.options.reporters.splice(i, 1);
313
+ const i2 = this.options.reporters.indexOf(reporter);
314
+ if (i2 !== -1) {
315
+ return this.options.reporters.splice(i2, 1);
244
316
  }
245
317
  } else {
246
318
  this.options.reporters.splice(0);
247
319
  }
248
320
  return this;
249
321
  }
322
+ /**
323
+ * Replaces all reporters of the Consola instance with the specified array of reporters.
324
+ *
325
+ * @param {ConsolaReporter[]} reporters - The new reporters to set. See {@link ConsolaReporter}.
326
+ * @returns {Consola} The current Consola instance.
327
+ */
250
328
  setReporters(reporters) {
251
329
  this.options.reporters = Array.isArray(reporters) ? reporters : [reporters];
252
330
  return this;
@@ -259,6 +337,9 @@ var init_core = __esm({
259
337
  this.restoreConsole();
260
338
  this.restoreStd();
261
339
  }
340
+ /**
341
+ * Overrides console methods with Consola logging methods for consistent logging.
342
+ */
262
343
  wrapConsole() {
263
344
  for (const type in this.options.types) {
264
345
  if (!console["__" + type]) {
@@ -267,6 +348,9 @@ var init_core = __esm({
267
348
  console[type] = this[type].raw;
268
349
  }
269
350
  }
351
+ /**
352
+ * Restores the original console methods, removing Consola overrides.
353
+ */
270
354
  restoreConsole() {
271
355
  for (const type in this.options.types) {
272
356
  if (console["__" + type]) {
@@ -275,6 +359,9 @@ var init_core = __esm({
275
359
  }
276
360
  }
277
361
  }
362
+ /**
363
+ * Overrides standard output and error streams to redirect them through Consola.
364
+ */
278
365
  wrapStd() {
279
366
  this._wrapStream(this.options.stdout, "log");
280
367
  this._wrapStream(this.options.stderr, "log");
@@ -290,6 +377,9 @@ var init_core = __esm({
290
377
  this[type].raw(String(data).trim());
291
378
  };
292
379
  }
380
+ /**
381
+ * Restores the original standard output and error streams, removing the Consola redirection.
382
+ */
293
383
  restoreStd() {
294
384
  this._restoreStream(this.options.stdout);
295
385
  this._restoreStream(this.options.stderr);
@@ -303,9 +393,15 @@ var init_core = __esm({
303
393
  delete stream.__write;
304
394
  }
305
395
  }
396
+ /**
397
+ * Pauses logging, queues incoming logs until resumed.
398
+ */
306
399
  pauseLogs() {
307
400
  paused = true;
308
401
  }
402
+ /**
403
+ * Resumes logging, processing any queued logs.
404
+ */
309
405
  resumeLogs() {
310
406
  paused = false;
311
407
  const _queue = queue.splice(0);
@@ -313,6 +409,11 @@ var init_core = __esm({
313
409
  item[0]._logFn(item[1], item[2]);
314
410
  }
315
411
  }
412
+ /**
413
+ * Replaces logging methods with mocks if a mock function is provided.
414
+ *
415
+ * @param {ConsolaOptions["mockFn"]} mockFn - The function to use for mocking logging methods. See {@link ConsolaOptions["mockFn"]}.
416
+ */
316
417
  mockTypes(mockFn) {
317
418
  const _mockFn = mockFn || this.options.mockFn;
318
419
  this._mockFn = _mockFn;
@@ -421,12 +522,12 @@ var init_core = __esm({
421
522
  }
422
523
  });
423
524
 
424
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/shared/consola.06ad8a64.mjs
525
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.Cs5FdtHD.mjs
425
526
  import { formatWithOptions } from "node:util";
426
527
  import { sep } from "node:path";
427
528
  function parseStack(stack) {
428
529
  const cwd = process.cwd() + sep;
429
- const lines = stack.split("\n").splice(1).map((l2) => l2.trim().replace("file://", "").replace(cwd, ""));
530
+ const lines = stack.split("\n").splice(1).map((l3) => l3.trim().replace("file://", "").replace(cwd, ""));
430
531
  return lines;
431
532
  }
432
533
  function writeStream(data, stream) {
@@ -434,18 +535,28 @@ function writeStream(data, stream) {
434
535
  return write.call(stream, data);
435
536
  }
436
537
  var bracket, BasicReporter;
437
- var init_consola_06ad8a64 = __esm({
438
- "../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/shared/consola.06ad8a64.mjs"() {
538
+ var init_consola_Cs5FdtHD = __esm({
539
+ "../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.Cs5FdtHD.mjs"() {
439
540
  "use strict";
440
- bracket = (x) => x ? `[${x}]` : "";
541
+ bracket = (x2) => x2 ? `[${x2}]` : "";
441
542
  BasicReporter = class {
442
543
  formatStack(stack, opts) {
443
- return " " + parseStack(stack).join("\n ");
544
+ const indent = " ".repeat((opts?.errorLevel || 0) + 1);
545
+ return indent + parseStack(stack).join(`
546
+ ${indent}`);
547
+ }
548
+ formatError(err, opts) {
549
+ const message = err.message ?? formatWithOptions(opts, err);
550
+ const stack = err.stack ? this.formatStack(err.stack, opts) : "";
551
+ const level = opts?.errorLevel || 0;
552
+ const causedPrefix = level > 0 ? `${" ".repeat(level)}[cause]: ` : "";
553
+ const causedError = err.cause ? "\n\n" + this.formatError(err.cause, { ...opts, errorLevel: level + 1 }) : "";
554
+ return causedPrefix + message + "\n" + stack + causedError;
444
555
  }
445
556
  formatArgs(args, opts) {
446
557
  const _args = args.map((arg) => {
447
558
  if (arg && typeof arg.stack === "string") {
448
- return arg.message + "\n" + this.formatStack(arg.stack, opts);
559
+ return this.formatError(arg, opts);
449
560
  }
450
561
  return arg;
451
562
  });
@@ -464,7 +575,7 @@ var init_consola_06ad8a64 = __esm({
464
575
  bracket(logObj.tag),
465
576
  logObj.title && logObj.title,
466
577
  ...message.split("\n")
467
- ].filter(Boolean).map((l2) => " > " + l2).join("\n") + "\n";
578
+ ].filter(Boolean).map((l3) => " > " + l3).join("\n") + "\n";
468
579
  }
469
580
  return this.filterAndJoin([
470
581
  bracket(logObj.type),
@@ -486,7 +597,7 @@ var init_consola_06ad8a64 = __esm({
486
597
  }
487
598
  });
488
599
 
489
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/utils.mjs
600
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.CBi6Nm9s.mjs
490
601
  import * as tty from "node:tty";
491
602
  function replaceClose(index, string, close, replace, head = string.slice(0, Math.max(0, index)) + replace, tail = string.slice(Math.max(0, index + close.length)), next = tail.indexOf(close)) {
492
603
  return head + (next < 0 ? tail : replaceClose(next, tail, close, replace));
@@ -545,6 +656,7 @@ function box(text2, _opts = {}) {
545
656
  boxLines.push("".repeat(opts.style.marginTop));
546
657
  }
547
658
  if (opts.title) {
659
+ const title = _color ? _color(opts.title) : opts.title;
548
660
  const left = borderStyle.h.repeat(
549
661
  Math.floor((width - stripAnsi(opts.title).length) / 2)
550
662
  );
@@ -552,7 +664,7 @@ function box(text2, _opts = {}) {
552
664
  width - stripAnsi(opts.title).length - stripAnsi(left).length + paddingOffset
553
665
  );
554
666
  boxLines.push(
555
- `${leftSpace}${borderStyle.tl}${left}${opts.title}${right}${borderStyle.tr}`
667
+ `${leftSpace}${borderStyle.tl}${left}${title}${right}${borderStyle.tr}`
556
668
  );
557
669
  } else {
558
670
  boxLines.push(
@@ -560,13 +672,13 @@ function box(text2, _opts = {}) {
560
672
  );
561
673
  }
562
674
  const valignOffset = opts.style.valign === "center" ? Math.floor((height - textLines.length) / 2) : opts.style.valign === "top" ? height - textLines.length - paddingOffset : height - textLines.length;
563
- for (let i = 0; i < height; i++) {
564
- if (i < valignOffset || i >= valignOffset + textLines.length) {
675
+ for (let i2 = 0; i2 < height; i2++) {
676
+ if (i2 < valignOffset || i2 >= valignOffset + textLines.length) {
565
677
  boxLines.push(
566
678
  `${leftSpace}${borderStyle.v}${" ".repeat(widthOffset)}${borderStyle.v}`
567
679
  );
568
680
  } else {
569
- const line = textLines[i - valignOffset];
681
+ const line = textLines[i2 - valignOffset];
570
682
  const left = " ".repeat(paddingOffset);
571
683
  const right = " ".repeat(width - stripAnsi(line).length);
572
684
  boxLines.push(
@@ -583,8 +695,8 @@ function box(text2, _opts = {}) {
583
695
  return boxLines.join("\n");
584
696
  }
585
697
  var env, argv, platform, isDisabled, isForced, isWindows, isDumbTerminal, isCompatibleTerminal, isCI, isColorSupported, colorDefs, colors, ansiRegex, boxStylePresets, defaultStyle;
586
- var init_utils = __esm({
587
- "../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/utils.mjs"() {
698
+ var init_consola_CBi6Nm9s = __esm({
699
+ "../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.CBi6Nm9s.mjs"() {
588
700
  "use strict";
589
701
  ({
590
702
  env = {},
@@ -643,8 +755,8 @@ var init_utils = __esm({
643
755
  };
644
756
  colors = createColors();
645
757
  ansiRegex = [
646
- "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
647
- "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
758
+ String.raw`[\u001B\u009B][[\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\d\/#&.:=?%@~_]+)*|[a-zA-Z\d]+(?:;[-a-zA-Z\d\/#&.:=?%@~_]*)*)?\u0007)`,
759
+ String.raw`(?:(?:\d{1,4}(?:;\d{0,4})*)?[\dA-PR-TZcf-nq-uy=><~]))`
648
760
  ].join("|");
649
761
  boxStylePresets = {
650
762
  solid: {
@@ -724,124 +836,277 @@ var init_utils = __esm({
724
836
  }
725
837
  });
726
838
 
727
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/chunks/prompt.mjs
839
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/chunks/prompt.mjs
728
840
  var prompt_exports = {};
729
841
  __export(prompt_exports, {
842
+ kCancel: () => kCancel,
730
843
  prompt: () => prompt
731
844
  });
732
845
  import { stdin, stdout } from "node:process";
733
- import f from "node:readline";
846
+ import g from "node:readline";
734
847
  import { WriteStream } from "node:tty";
735
- import require$$0 from "tty";
736
- function z({ onlyFirst: t = false } = {}) {
737
- const u = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"].join("|");
738
- return new RegExp(u, t ? void 0 : "g");
739
- }
740
- function $(t) {
741
- if (typeof t != "string")
742
- throw new TypeError(`Expected a \`string\`, got \`${typeof t}\``);
743
- return t.replace(z(), "");
744
- }
745
- function c(t, u = {}) {
746
- if (typeof t != "string" || t.length === 0 || (u = { ambiguousIsNarrow: true, ...u }, t = $(t), t.length === 0))
747
- return 0;
748
- t = t.replace(Y(), " ");
749
- const F = u.ambiguousIsNarrow ? 1 : 2;
750
- let e = 0;
751
- for (const s3 of t) {
752
- const C = s3.codePointAt(0);
753
- if (C <= 31 || C >= 127 && C <= 159 || C >= 768 && C <= 879)
754
- continue;
755
- switch (K2.eastAsianWidth(s3)) {
848
+ function getDefaultExportFromCjs(x2) {
849
+ return x2 && x2.__esModule && Object.prototype.hasOwnProperty.call(x2, "default") ? x2["default"] : x2;
850
+ }
851
+ function requireSrc() {
852
+ if (hasRequiredSrc) return src;
853
+ hasRequiredSrc = 1;
854
+ const ESC = "\x1B";
855
+ const CSI = `${ESC}[`;
856
+ const beep = "\x07";
857
+ const cursor = {
858
+ to(x2, y3) {
859
+ if (!y3) return `${CSI}${x2 + 1}G`;
860
+ return `${CSI}${y3 + 1};${x2 + 1}H`;
861
+ },
862
+ move(x2, y3) {
863
+ let ret = "";
864
+ if (x2 < 0) ret += `${CSI}${-x2}D`;
865
+ else if (x2 > 0) ret += `${CSI}${x2}C`;
866
+ if (y3 < 0) ret += `${CSI}${-y3}A`;
867
+ else if (y3 > 0) ret += `${CSI}${y3}B`;
868
+ return ret;
869
+ },
870
+ up: (count = 1) => `${CSI}${count}A`,
871
+ down: (count = 1) => `${CSI}${count}B`,
872
+ forward: (count = 1) => `${CSI}${count}C`,
873
+ backward: (count = 1) => `${CSI}${count}D`,
874
+ nextLine: (count = 1) => `${CSI}E`.repeat(count),
875
+ prevLine: (count = 1) => `${CSI}F`.repeat(count),
876
+ left: `${CSI}G`,
877
+ hide: `${CSI}?25l`,
878
+ show: `${CSI}?25h`,
879
+ save: `${ESC}7`,
880
+ restore: `${ESC}8`
881
+ };
882
+ const scroll = {
883
+ up: (count = 1) => `${CSI}S`.repeat(count),
884
+ down: (count = 1) => `${CSI}T`.repeat(count)
885
+ };
886
+ const erase = {
887
+ screen: `${CSI}2J`,
888
+ up: (count = 1) => `${CSI}1J`.repeat(count),
889
+ down: (count = 1) => `${CSI}J`.repeat(count),
890
+ line: `${CSI}2K`,
891
+ lineEnd: `${CSI}K`,
892
+ lineStart: `${CSI}1K`,
893
+ lines(count) {
894
+ let clear = "";
895
+ for (let i2 = 0; i2 < count; i2++)
896
+ clear += this.line + (i2 < count - 1 ? cursor.up() : "");
897
+ if (count)
898
+ clear += cursor.left;
899
+ return clear;
900
+ }
901
+ };
902
+ src = { cursor, scroll, erase, beep };
903
+ return src;
904
+ }
905
+ function requirePicocolors() {
906
+ if (hasRequiredPicocolors) return picocolors.exports;
907
+ hasRequiredPicocolors = 1;
908
+ let p3 = process || {}, argv2 = p3.argv || [], env2 = p3.env || {};
909
+ let isColorSupported2 = !(!!env2.NO_COLOR || argv2.includes("--no-color")) && (!!env2.FORCE_COLOR || argv2.includes("--color") || p3.platform === "win32" || (p3.stdout || {}).isTTY && env2.TERM !== "dumb" || !!env2.CI);
910
+ let formatter = (open, close, replace = open) => (input) => {
911
+ let string = "" + input, index = string.indexOf(close, open.length);
912
+ return ~index ? open + replaceClose2(string, close, replace, index) + close : open + string + close;
913
+ };
914
+ let replaceClose2 = (string, close, replace, index) => {
915
+ let result = "", cursor = 0;
916
+ do {
917
+ result += string.substring(cursor, index) + replace;
918
+ cursor = index + close.length;
919
+ index = string.indexOf(close, cursor);
920
+ } while (~index);
921
+ return result + string.substring(cursor);
922
+ };
923
+ let createColors2 = (enabled = isColorSupported2) => {
924
+ let f = enabled ? formatter : () => String;
925
+ return {
926
+ isColorSupported: enabled,
927
+ reset: f("\x1B[0m", "\x1B[0m"),
928
+ bold: f("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m"),
929
+ dim: f("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m"),
930
+ italic: f("\x1B[3m", "\x1B[23m"),
931
+ underline: f("\x1B[4m", "\x1B[24m"),
932
+ inverse: f("\x1B[7m", "\x1B[27m"),
933
+ hidden: f("\x1B[8m", "\x1B[28m"),
934
+ strikethrough: f("\x1B[9m", "\x1B[29m"),
935
+ black: f("\x1B[30m", "\x1B[39m"),
936
+ red: f("\x1B[31m", "\x1B[39m"),
937
+ green: f("\x1B[32m", "\x1B[39m"),
938
+ yellow: f("\x1B[33m", "\x1B[39m"),
939
+ blue: f("\x1B[34m", "\x1B[39m"),
940
+ magenta: f("\x1B[35m", "\x1B[39m"),
941
+ cyan: f("\x1B[36m", "\x1B[39m"),
942
+ white: f("\x1B[37m", "\x1B[39m"),
943
+ gray: f("\x1B[90m", "\x1B[39m"),
944
+ bgBlack: f("\x1B[40m", "\x1B[49m"),
945
+ bgRed: f("\x1B[41m", "\x1B[49m"),
946
+ bgGreen: f("\x1B[42m", "\x1B[49m"),
947
+ bgYellow: f("\x1B[43m", "\x1B[49m"),
948
+ bgBlue: f("\x1B[44m", "\x1B[49m"),
949
+ bgMagenta: f("\x1B[45m", "\x1B[49m"),
950
+ bgCyan: f("\x1B[46m", "\x1B[49m"),
951
+ bgWhite: f("\x1B[47m", "\x1B[49m"),
952
+ blackBright: f("\x1B[90m", "\x1B[39m"),
953
+ redBright: f("\x1B[91m", "\x1B[39m"),
954
+ greenBright: f("\x1B[92m", "\x1B[39m"),
955
+ yellowBright: f("\x1B[93m", "\x1B[39m"),
956
+ blueBright: f("\x1B[94m", "\x1B[39m"),
957
+ magentaBright: f("\x1B[95m", "\x1B[39m"),
958
+ cyanBright: f("\x1B[96m", "\x1B[39m"),
959
+ whiteBright: f("\x1B[97m", "\x1B[39m"),
960
+ bgBlackBright: f("\x1B[100m", "\x1B[49m"),
961
+ bgRedBright: f("\x1B[101m", "\x1B[49m"),
962
+ bgGreenBright: f("\x1B[102m", "\x1B[49m"),
963
+ bgYellowBright: f("\x1B[103m", "\x1B[49m"),
964
+ bgBlueBright: f("\x1B[104m", "\x1B[49m"),
965
+ bgMagentaBright: f("\x1B[105m", "\x1B[49m"),
966
+ bgCyanBright: f("\x1B[106m", "\x1B[49m"),
967
+ bgWhiteBright: f("\x1B[107m", "\x1B[49m")
968
+ };
969
+ };
970
+ picocolors.exports = createColors2();
971
+ picocolors.exports.createColors = createColors2;
972
+ return picocolors.exports;
973
+ }
974
+ function J({ onlyFirst: e = false } = {}) {
975
+ const F2 = ["[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?(?:\\u0007|\\u001B\\u005C|\\u009C))", "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"].join("|");
976
+ return new RegExp(F2, e ? void 0 : "g");
977
+ }
978
+ function T(e) {
979
+ if (typeof e != "string") throw new TypeError(`Expected a \`string\`, got \`${typeof e}\``);
980
+ return e.replace(Q, "");
981
+ }
982
+ function O(e) {
983
+ return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
984
+ }
985
+ function p(e, u2 = {}) {
986
+ if (typeof e != "string" || e.length === 0 || (u2 = { ambiguousIsNarrow: true, ...u2 }, e = T(e), e.length === 0)) return 0;
987
+ e = e.replace(FD(), " ");
988
+ const F2 = u2.ambiguousIsNarrow ? 1 : 2;
989
+ let t2 = 0;
990
+ for (const s3 of e) {
991
+ const i2 = s3.codePointAt(0);
992
+ if (i2 <= 31 || i2 >= 127 && i2 <= 159 || i2 >= 768 && i2 <= 879) continue;
993
+ switch (DD.eastAsianWidth(s3)) {
756
994
  case "F":
757
995
  case "W":
758
- e += 2;
996
+ t2 += 2;
759
997
  break;
760
998
  case "A":
761
- e += F;
999
+ t2 += F2;
762
1000
  break;
763
1001
  default:
764
- e += 1;
1002
+ t2 += 1;
765
1003
  }
766
1004
  }
767
- return e;
768
- }
769
- function U() {
770
- const t = /* @__PURE__ */ new Map();
771
- for (const [u, F] of Object.entries(r)) {
772
- for (const [e, s3] of Object.entries(F))
773
- r[e] = { open: `\x1B[${s3[0]}m`, close: `\x1B[${s3[1]}m` }, F[e] = r[e], t.set(s3[0], s3[1]);
774
- Object.defineProperty(r, u, { value: F, enumerable: false });
775
- }
776
- return Object.defineProperty(r, "codes", { value: t, enumerable: false }), r.color.close = "\x1B[39m", r.bgColor.close = "\x1B[49m", r.color.ansi = L(), r.color.ansi256 = M(), r.color.ansi16m = T(), r.bgColor.ansi = L(v), r.bgColor.ansi256 = M(v), r.bgColor.ansi16m = T(v), Object.defineProperties(r, { rgbToAnsi256: { value: (u, F, e) => u === F && F === e ? u < 8 ? 16 : u > 248 ? 231 : Math.round((u - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(u / 255 * 5) + 6 * Math.round(F / 255 * 5) + Math.round(e / 255 * 5), enumerable: false }, hexToRgb: { value: (u) => {
777
- const F = /[a-f\d]{6}|[a-f\d]{3}/i.exec(u.toString(16));
778
- if (!F)
779
- return [0, 0, 0];
780
- let [e] = F;
781
- e.length === 3 && (e = [...e].map((C) => C + C).join(""));
782
- const s3 = Number.parseInt(e, 16);
1005
+ return t2;
1006
+ }
1007
+ function sD() {
1008
+ const e = /* @__PURE__ */ new Map();
1009
+ for (const [u2, F2] of Object.entries(r)) {
1010
+ for (const [t2, s3] of Object.entries(F2)) r[t2] = { open: `\x1B[${s3[0]}m`, close: `\x1B[${s3[1]}m` }, F2[t2] = r[t2], e.set(s3[0], s3[1]);
1011
+ Object.defineProperty(r, u2, { value: F2, enumerable: false });
1012
+ }
1013
+ return Object.defineProperty(r, "codes", { value: e, enumerable: false }), r.color.close = "\x1B[39m", r.bgColor.close = "\x1B[49m", r.color.ansi = L(), r.color.ansi256 = W2(), r.color.ansi16m = N(), r.bgColor.ansi = L(m), r.bgColor.ansi256 = W2(m), r.bgColor.ansi16m = N(m), Object.defineProperties(r, { rgbToAnsi256: { value: (u2, F2, t2) => u2 === F2 && F2 === t2 ? u2 < 8 ? 16 : u2 > 248 ? 231 : Math.round((u2 - 8) / 247 * 24) + 232 : 16 + 36 * Math.round(u2 / 255 * 5) + 6 * Math.round(F2 / 255 * 5) + Math.round(t2 / 255 * 5), enumerable: false }, hexToRgb: { value: (u2) => {
1014
+ const F2 = /[a-f\d]{6}|[a-f\d]{3}/i.exec(u2.toString(16));
1015
+ if (!F2) return [0, 0, 0];
1016
+ let [t2] = F2;
1017
+ t2.length === 3 && (t2 = [...t2].map((i2) => i2 + i2).join(""));
1018
+ const s3 = Number.parseInt(t2, 16);
783
1019
  return [s3 >> 16 & 255, s3 >> 8 & 255, s3 & 255];
784
- }, enumerable: false }, hexToAnsi256: { value: (u) => r.rgbToAnsi256(...r.hexToRgb(u)), enumerable: false }, ansi256ToAnsi: { value: (u) => {
785
- if (u < 8)
786
- return 30 + u;
787
- if (u < 16)
788
- return 90 + (u - 8);
789
- let F, e, s3;
790
- if (u >= 232)
791
- F = ((u - 232) * 10 + 8) / 255, e = F, s3 = F;
1020
+ }, enumerable: false }, hexToAnsi256: { value: (u2) => r.rgbToAnsi256(...r.hexToRgb(u2)), enumerable: false }, ansi256ToAnsi: { value: (u2) => {
1021
+ if (u2 < 8) return 30 + u2;
1022
+ if (u2 < 16) return 90 + (u2 - 8);
1023
+ let F2, t2, s3;
1024
+ if (u2 >= 232) F2 = ((u2 - 232) * 10 + 8) / 255, t2 = F2, s3 = F2;
792
1025
  else {
793
- u -= 16;
794
- const i = u % 36;
795
- F = Math.floor(u / 36) / 5, e = Math.floor(i / 6) / 5, s3 = i % 6 / 5;
1026
+ u2 -= 16;
1027
+ const C2 = u2 % 36;
1028
+ F2 = Math.floor(u2 / 36) / 5, t2 = Math.floor(C2 / 6) / 5, s3 = C2 % 6 / 5;
796
1029
  }
797
- const C = Math.max(F, e, s3) * 2;
798
- if (C === 0)
799
- return 30;
800
- let D = 30 + (Math.round(s3) << 2 | Math.round(e) << 1 | Math.round(F));
801
- return C === 2 && (D += 60), D;
802
- }, enumerable: false }, rgbToAnsi: { value: (u, F, e) => r.ansi256ToAnsi(r.rgbToAnsi256(u, F, e)), enumerable: false }, hexToAnsi: { value: (u) => r.ansi256ToAnsi(r.hexToAnsi256(u)), enumerable: false } }), r;
803
- }
804
- function P(t, u, F) {
805
- return String(t).normalize().replace(/\r\n/g, `
1030
+ const i2 = Math.max(F2, t2, s3) * 2;
1031
+ if (i2 === 0) return 30;
1032
+ let D2 = 30 + (Math.round(s3) << 2 | Math.round(t2) << 1 | Math.round(F2));
1033
+ return i2 === 2 && (D2 += 60), D2;
1034
+ }, enumerable: false }, rgbToAnsi: { value: (u2, F2, t2) => r.ansi256ToAnsi(r.rgbToAnsi256(u2, F2, t2)), enumerable: false }, hexToAnsi: { value: (u2) => r.ansi256ToAnsi(r.hexToAnsi256(u2)), enumerable: false } }), r;
1035
+ }
1036
+ function G(e, u2, F2) {
1037
+ return String(e).normalize().replace(/\r\n/g, `
806
1038
  `).split(`
807
- `).map((e) => uD(e, u, F)).join(`
1039
+ `).map((t2) => oD(t2, u2, F2)).join(`
808
1040
  `);
809
1041
  }
810
- function FD(t, u) {
811
- if (t === u)
812
- return;
813
- const F = t.split(`
814
- `), e = u.split(`
1042
+ function k(e, u2) {
1043
+ if (typeof e == "string") return A.aliases.get(e) === u2;
1044
+ for (const F2 of e) if (F2 !== void 0 && k(F2, u2)) return true;
1045
+ return false;
1046
+ }
1047
+ function hD(e, u2) {
1048
+ if (e === u2) return;
1049
+ const F2 = e.split(`
1050
+ `), t2 = u2.split(`
815
1051
  `), s3 = [];
816
- for (let C = 0; C < Math.max(F.length, e.length); C++)
817
- F[C] !== e[C] && s3.push(C);
1052
+ for (let i2 = 0; i2 < Math.max(F2.length, t2.length); i2++) F2[i2] !== t2[i2] && s3.push(i2);
818
1053
  return s3;
819
1054
  }
820
- function g(t, u) {
821
- t.isTTY && t.setRawMode(u);
1055
+ function d(e, u2) {
1056
+ const F2 = e;
1057
+ F2.isTTY && F2.setRawMode(u2);
822
1058
  }
823
1059
  async function prompt(message, opts = {}) {
1060
+ const handleCancel = (value) => {
1061
+ if (typeof value !== "symbol" || value.toString() !== "Symbol(clack:cancel)") {
1062
+ return value;
1063
+ }
1064
+ switch (opts.cancel) {
1065
+ case "reject": {
1066
+ const error = new Error("Prompt cancelled.");
1067
+ error.name = "ConsolaPromptCancelledError";
1068
+ if (Error.captureStackTrace) {
1069
+ Error.captureStackTrace(error, prompt);
1070
+ }
1071
+ throw error;
1072
+ }
1073
+ case "undefined": {
1074
+ return void 0;
1075
+ }
1076
+ case "null": {
1077
+ return null;
1078
+ }
1079
+ case "symbol": {
1080
+ return kCancel;
1081
+ }
1082
+ default:
1083
+ case "default": {
1084
+ return opts.default ?? opts.initial;
1085
+ }
1086
+ }
1087
+ };
824
1088
  if (!opts.type || opts.type === "text") {
825
1089
  return await text({
826
1090
  message,
827
1091
  defaultValue: opts.default,
828
1092
  placeholder: opts.placeholder,
829
1093
  initialValue: opts.initial
830
- });
1094
+ }).then(handleCancel);
831
1095
  }
832
1096
  if (opts.type === "confirm") {
833
1097
  return await confirm({
834
1098
  message,
835
1099
  initialValue: opts.initial
836
- });
1100
+ }).then(handleCancel);
837
1101
  }
838
1102
  if (opts.type === "select") {
839
1103
  return await select({
840
1104
  message,
841
1105
  options: opts.options.map(
842
1106
  (o) => typeof o === "string" ? { value: o, label: o } : o
843
- )
844
- });
1107
+ ),
1108
+ initialValue: opts.initial
1109
+ }).then(handleCancel);
845
1110
  }
846
1111
  if (opts.type === "multiselect") {
847
1112
  return await multiselect({
@@ -849,353 +1114,264 @@ async function prompt(message, opts = {}) {
849
1114
  options: opts.options.map(
850
1115
  (o) => typeof o === "string" ? { value: o, label: o } : o
851
1116
  ),
852
- required: opts.required
853
- });
1117
+ required: opts.required,
1118
+ initialValues: opts.initial
1119
+ }).then(handleCancel);
854
1120
  }
855
1121
  throw new Error(`Unknown prompt type: ${opts.type}`);
856
1122
  }
857
- var ESC, CSI, beep, cursor, scroll, erase, src, picocolors, tty2, isColorSupported2, formatter, replaceClose2, createColors2, picocolorsExports, l, m, G, K2, Y, v, L, M, T, r, Z, H2, q, p, J, b, W2, Q, I, w, N, j, X, _, DD, uD, R, V, tD, h, sD, iD, ED, oD, unicode, s, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_BAR, S_BAR_END, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_CHECKBOX_ACTIVE, S_CHECKBOX_SELECTED, S_CHECKBOX_INACTIVE, symbol, text, confirm, select, multiselect;
1123
+ var src, hasRequiredSrc, srcExports, picocolors, hasRequiredPicocolors, picocolorsExports, c, Q, P, X, DD, uD, FD, m, L, W2, N, r, eD, tD, iD, v, CD, w, I, rD, R, y, V, z, ED, _, nD, oD, aD, A, $, AD, pD, l, x, fD, bD, mD, Y, wD, $D, SD, q, jD, PD, LD, WD, ND, unicode, s, S_STEP_ACTIVE, S_STEP_CANCEL, S_STEP_ERROR, S_STEP_SUBMIT, S_BAR, S_BAR_END, S_RADIO_ACTIVE, S_RADIO_INACTIVE, S_CHECKBOX_ACTIVE, S_CHECKBOX_SELECTED, S_CHECKBOX_INACTIVE, symbol, text, confirm, select, multiselect, kCancel;
858
1124
  var init_prompt = __esm({
859
- "../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/chunks/prompt.mjs"() {
1125
+ "../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/chunks/prompt.mjs"() {
860
1126
  "use strict";
861
- init_consola_36c0034f();
862
- init_utils();
1127
+ init_consola_D4JK3RCK();
1128
+ init_consola_CBi6Nm9s();
863
1129
  init_core();
864
- init_consola_06ad8a64();
865
- ESC = "\x1B";
866
- CSI = `${ESC}[`;
867
- beep = "\x07";
868
- cursor = {
869
- to(x, y) {
870
- if (!y)
871
- return `${CSI}${x + 1}G`;
872
- return `${CSI}${y + 1};${x + 1}H`;
873
- },
874
- move(x, y) {
875
- let ret = "";
876
- if (x < 0)
877
- ret += `${CSI}${-x}D`;
878
- else if (x > 0)
879
- ret += `${CSI}${x}C`;
880
- if (y < 0)
881
- ret += `${CSI}${-y}A`;
882
- else if (y > 0)
883
- ret += `${CSI}${y}B`;
884
- return ret;
885
- },
886
- up: (count = 1) => `${CSI}${count}A`,
887
- down: (count = 1) => `${CSI}${count}B`,
888
- forward: (count = 1) => `${CSI}${count}C`,
889
- backward: (count = 1) => `${CSI}${count}D`,
890
- nextLine: (count = 1) => `${CSI}E`.repeat(count),
891
- prevLine: (count = 1) => `${CSI}F`.repeat(count),
892
- left: `${CSI}G`,
893
- hide: `${CSI}?25l`,
894
- show: `${CSI}?25h`,
895
- save: `${ESC}7`,
896
- restore: `${ESC}8`
897
- };
898
- scroll = {
899
- up: (count = 1) => `${CSI}S`.repeat(count),
900
- down: (count = 1) => `${CSI}T`.repeat(count)
901
- };
902
- erase = {
903
- screen: `${CSI}2J`,
904
- up: (count = 1) => `${CSI}1J`.repeat(count),
905
- down: (count = 1) => `${CSI}J`.repeat(count),
906
- line: `${CSI}2K`,
907
- lineEnd: `${CSI}K`,
908
- lineStart: `${CSI}1K`,
909
- lines(count) {
910
- let clear = "";
911
- for (let i = 0; i < count; i++)
912
- clear += this.line + (i < count - 1 ? cursor.up() : "");
913
- if (count)
914
- clear += cursor.left;
915
- return clear;
916
- }
917
- };
918
- src = { cursor, scroll, erase, beep };
1130
+ init_consola_Cs5FdtHD();
1131
+ srcExports = requireSrc();
919
1132
  picocolors = { exports: {} };
920
- tty2 = require$$0;
921
- isColorSupported2 = !("NO_COLOR" in process.env || process.argv.includes("--no-color")) && ("FORCE_COLOR" in process.env || process.argv.includes("--color") || process.platform === "win32" || tty2.isatty(1) && process.env.TERM !== "dumb" || "CI" in process.env);
922
- formatter = (open, close, replace = open) => (input) => {
923
- let string = "" + input;
924
- let index = string.indexOf(close, open.length);
925
- return ~index ? open + replaceClose2(string, close, replace, index) + close : open + string + close;
926
- };
927
- replaceClose2 = (string, close, replace, index) => {
928
- let start = string.substring(0, index) + replace;
929
- let end = string.substring(index + close.length);
930
- let nextIndex = end.indexOf(close);
931
- return ~nextIndex ? start + replaceClose2(end, close, replace, nextIndex) : start + end;
932
- };
933
- createColors2 = (enabled = isColorSupported2) => ({
934
- isColorSupported: enabled,
935
- reset: enabled ? (s3) => `\x1B[0m${s3}\x1B[0m` : String,
936
- bold: enabled ? formatter("\x1B[1m", "\x1B[22m", "\x1B[22m\x1B[1m") : String,
937
- dim: enabled ? formatter("\x1B[2m", "\x1B[22m", "\x1B[22m\x1B[2m") : String,
938
- italic: enabled ? formatter("\x1B[3m", "\x1B[23m") : String,
939
- underline: enabled ? formatter("\x1B[4m", "\x1B[24m") : String,
940
- inverse: enabled ? formatter("\x1B[7m", "\x1B[27m") : String,
941
- hidden: enabled ? formatter("\x1B[8m", "\x1B[28m") : String,
942
- strikethrough: enabled ? formatter("\x1B[9m", "\x1B[29m") : String,
943
- black: enabled ? formatter("\x1B[30m", "\x1B[39m") : String,
944
- red: enabled ? formatter("\x1B[31m", "\x1B[39m") : String,
945
- green: enabled ? formatter("\x1B[32m", "\x1B[39m") : String,
946
- yellow: enabled ? formatter("\x1B[33m", "\x1B[39m") : String,
947
- blue: enabled ? formatter("\x1B[34m", "\x1B[39m") : String,
948
- magenta: enabled ? formatter("\x1B[35m", "\x1B[39m") : String,
949
- cyan: enabled ? formatter("\x1B[36m", "\x1B[39m") : String,
950
- white: enabled ? formatter("\x1B[37m", "\x1B[39m") : String,
951
- gray: enabled ? formatter("\x1B[90m", "\x1B[39m") : String,
952
- bgBlack: enabled ? formatter("\x1B[40m", "\x1B[49m") : String,
953
- bgRed: enabled ? formatter("\x1B[41m", "\x1B[49m") : String,
954
- bgGreen: enabled ? formatter("\x1B[42m", "\x1B[49m") : String,
955
- bgYellow: enabled ? formatter("\x1B[43m", "\x1B[49m") : String,
956
- bgBlue: enabled ? formatter("\x1B[44m", "\x1B[49m") : String,
957
- bgMagenta: enabled ? formatter("\x1B[45m", "\x1B[49m") : String,
958
- bgCyan: enabled ? formatter("\x1B[46m", "\x1B[49m") : String,
959
- bgWhite: enabled ? formatter("\x1B[47m", "\x1B[49m") : String
960
- });
961
- picocolors.exports = createColors2();
962
- picocolors.exports.createColors = createColors2;
963
- picocolorsExports = picocolors.exports;
964
- l = /* @__PURE__ */ getDefaultExportFromCjs(picocolorsExports);
965
- m = {};
966
- G = { get exports() {
967
- return m;
968
- }, set exports(t) {
969
- m = t;
970
- } };
971
- (function(t) {
972
- var u = {};
973
- t.exports = u, u.eastAsianWidth = function(e) {
974
- var s3 = e.charCodeAt(0), C = e.length == 2 ? e.charCodeAt(1) : 0, D = s3;
975
- return 55296 <= s3 && s3 <= 56319 && 56320 <= C && C <= 57343 && (s3 &= 1023, C &= 1023, D = s3 << 10 | C, D += 65536), D == 12288 || 65281 <= D && D <= 65376 || 65504 <= D && D <= 65510 ? "F" : D == 8361 || 65377 <= D && D <= 65470 || 65474 <= D && D <= 65479 || 65482 <= D && D <= 65487 || 65490 <= D && D <= 65495 || 65498 <= D && D <= 65500 || 65512 <= D && D <= 65518 ? "H" : 4352 <= D && D <= 4447 || 4515 <= D && D <= 4519 || 4602 <= D && D <= 4607 || 9001 <= D && D <= 9002 || 11904 <= D && D <= 11929 || 11931 <= D && D <= 12019 || 12032 <= D && D <= 12245 || 12272 <= D && D <= 12283 || 12289 <= D && D <= 12350 || 12353 <= D && D <= 12438 || 12441 <= D && D <= 12543 || 12549 <= D && D <= 12589 || 12593 <= D && D <= 12686 || 12688 <= D && D <= 12730 || 12736 <= D && D <= 12771 || 12784 <= D && D <= 12830 || 12832 <= D && D <= 12871 || 12880 <= D && D <= 13054 || 13056 <= D && D <= 19903 || 19968 <= D && D <= 42124 || 42128 <= D && D <= 42182 || 43360 <= D && D <= 43388 || 44032 <= D && D <= 55203 || 55216 <= D && D <= 55238 || 55243 <= D && D <= 55291 || 63744 <= D && D <= 64255 || 65040 <= D && D <= 65049 || 65072 <= D && D <= 65106 || 65108 <= D && D <= 65126 || 65128 <= D && D <= 65131 || 110592 <= D && D <= 110593 || 127488 <= D && D <= 127490 || 127504 <= D && D <= 127546 || 127552 <= D && D <= 127560 || 127568 <= D && D <= 127569 || 131072 <= D && D <= 194367 || 177984 <= D && D <= 196605 || 196608 <= D && D <= 262141 ? "W" : 32 <= D && D <= 126 || 162 <= D && D <= 163 || 165 <= D && D <= 166 || D == 172 || D == 175 || 10214 <= D && D <= 10221 || 10629 <= D && D <= 10630 ? "Na" : D == 161 || D == 164 || 167 <= D && D <= 168 || D == 170 || 173 <= D && D <= 174 || 176 <= D && D <= 180 || 182 <= D && D <= 186 || 188 <= D && D <= 191 || D == 198 || D == 208 || 215 <= D && D <= 216 || 222 <= D && D <= 225 || D == 230 || 232 <= D && D <= 234 || 236 <= D && D <= 237 || D == 240 || 242 <= D && D <= 243 || 247 <= D && D <= 250 || D == 252 || D == 254 || D == 257 || D == 273 || D == 275 || D == 283 || 294 <= D && D <= 295 || D == 299 || 305 <= D && D <= 307 || D == 312 || 319 <= D && D <= 322 || D == 324 || 328 <= D && D <= 331 || D == 333 || 338 <= D && D <= 339 || 358 <= D && D <= 359 || D == 363 || D == 462 || D == 464 || D == 466 || D == 468 || D == 470 || D == 472 || D == 474 || D == 476 || D == 593 || D == 609 || D == 708 || D == 711 || 713 <= D && D <= 715 || D == 717 || D == 720 || 728 <= D && D <= 731 || D == 733 || D == 735 || 768 <= D && D <= 879 || 913 <= D && D <= 929 || 931 <= D && D <= 937 || 945 <= D && D <= 961 || 963 <= D && D <= 969 || D == 1025 || 1040 <= D && D <= 1103 || D == 1105 || D == 8208 || 8211 <= D && D <= 8214 || 8216 <= D && D <= 8217 || 8220 <= D && D <= 8221 || 8224 <= D && D <= 8226 || 8228 <= D && D <= 8231 || D == 8240 || 8242 <= D && D <= 8243 || D == 8245 || D == 8251 || D == 8254 || D == 8308 || D == 8319 || 8321 <= D && D <= 8324 || D == 8364 || D == 8451 || D == 8453 || D == 8457 || D == 8467 || D == 8470 || 8481 <= D && D <= 8482 || D == 8486 || D == 8491 || 8531 <= D && D <= 8532 || 8539 <= D && D <= 8542 || 8544 <= D && D <= 8555 || 8560 <= D && D <= 8569 || D == 8585 || 8592 <= D && D <= 8601 || 8632 <= D && D <= 8633 || D == 8658 || D == 8660 || D == 8679 || D == 8704 || 8706 <= D && D <= 8707 || 8711 <= D && D <= 8712 || D == 8715 || D == 8719 || D == 8721 || D == 8725 || D == 8730 || 8733 <= D && D <= 8736 || D == 8739 || D == 8741 || 8743 <= D && D <= 8748 || D == 8750 || 8756 <= D && D <= 8759 || 8764 <= D && D <= 8765 || D == 8776 || D == 8780 || D == 8786 || 8800 <= D && D <= 8801 || 8804 <= D && D <= 8807 || 8810 <= D && D <= 8811 || 8814 <= D && D <= 8815 || 8834 <= D && D <= 8835 || 8838 <= D && D <= 8839 || D == 8853 || D == 8857 || D == 8869 || D == 8895 || D == 8978 || 9312 <= D && D <= 9449 || 9451 <= D && D <= 9547 || 9552 <= D && D <= 9587 || 9600 <= D && D <= 9615 || 9618 <= D && D <= 9621 || 9632 <= D && D <= 9633 || 9635 <= D && D <= 9641 || 9650 <= D && D <= 9651 || 9654 <= D && D <= 9655 || 9660 <= D && D <= 9661 || 9664 <= D && D <= 9665 || 9670 <= D && D <= 9672 || D == 9675 || 9678 <= D && D <= 9681 || 9698 <= D && D <= 9701 || D == 9711 || 9733 <= D && D <= 9734 || D == 9737 || 9742 <= D && D <= 9743 || 9748 <= D && D <= 9749 || D == 9756 || D == 9758 || D == 9792 || D == 9794 || 9824 <= D && D <= 9825 || 9827 <= D && D <= 9829 || 9831 <= D && D <= 9834 || 9836 <= D && D <= 9837 || D == 9839 || 9886 <= D && D <= 9887 || 9918 <= D && D <= 9919 || 9924 <= D && D <= 9933 || 9935 <= D && D <= 9953 || D == 9955 || 9960 <= D && D <= 9983 || D == 10045 || D == 10071 || 10102 <= D && D <= 10111 || 11093 <= D && D <= 11097 || 12872 <= D && D <= 12879 || 57344 <= D && D <= 63743 || 65024 <= D && D <= 65039 || D == 65533 || 127232 <= D && D <= 127242 || 127248 <= D && D <= 127277 || 127280 <= D && D <= 127337 || 127344 <= D && D <= 127386 || 917760 <= D && D <= 917999 || 983040 <= D && D <= 1048573 || 1048576 <= D && D <= 1114109 ? "A" : "N";
976
- }, u.characterLength = function(e) {
977
- var s3 = this.eastAsianWidth(e);
1133
+ picocolorsExports = /* @__PURE__ */ requirePicocolors();
1134
+ c = /* @__PURE__ */ getDefaultExportFromCjs(picocolorsExports);
1135
+ Q = J();
1136
+ P = { exports: {} };
1137
+ (function(e) {
1138
+ var u2 = {};
1139
+ e.exports = u2, u2.eastAsianWidth = function(t2) {
1140
+ var s3 = t2.charCodeAt(0), i2 = t2.length == 2 ? t2.charCodeAt(1) : 0, D2 = s3;
1141
+ return 55296 <= s3 && s3 <= 56319 && 56320 <= i2 && i2 <= 57343 && (s3 &= 1023, i2 &= 1023, D2 = s3 << 10 | i2, D2 += 65536), D2 == 12288 || 65281 <= D2 && D2 <= 65376 || 65504 <= D2 && D2 <= 65510 ? "F" : D2 == 8361 || 65377 <= D2 && D2 <= 65470 || 65474 <= D2 && D2 <= 65479 || 65482 <= D2 && D2 <= 65487 || 65490 <= D2 && D2 <= 65495 || 65498 <= D2 && D2 <= 65500 || 65512 <= D2 && D2 <= 65518 ? "H" : 4352 <= D2 && D2 <= 4447 || 4515 <= D2 && D2 <= 4519 || 4602 <= D2 && D2 <= 4607 || 9001 <= D2 && D2 <= 9002 || 11904 <= D2 && D2 <= 11929 || 11931 <= D2 && D2 <= 12019 || 12032 <= D2 && D2 <= 12245 || 12272 <= D2 && D2 <= 12283 || 12289 <= D2 && D2 <= 12350 || 12353 <= D2 && D2 <= 12438 || 12441 <= D2 && D2 <= 12543 || 12549 <= D2 && D2 <= 12589 || 12593 <= D2 && D2 <= 12686 || 12688 <= D2 && D2 <= 12730 || 12736 <= D2 && D2 <= 12771 || 12784 <= D2 && D2 <= 12830 || 12832 <= D2 && D2 <= 12871 || 12880 <= D2 && D2 <= 13054 || 13056 <= D2 && D2 <= 19903 || 19968 <= D2 && D2 <= 42124 || 42128 <= D2 && D2 <= 42182 || 43360 <= D2 && D2 <= 43388 || 44032 <= D2 && D2 <= 55203 || 55216 <= D2 && D2 <= 55238 || 55243 <= D2 && D2 <= 55291 || 63744 <= D2 && D2 <= 64255 || 65040 <= D2 && D2 <= 65049 || 65072 <= D2 && D2 <= 65106 || 65108 <= D2 && D2 <= 65126 || 65128 <= D2 && D2 <= 65131 || 110592 <= D2 && D2 <= 110593 || 127488 <= D2 && D2 <= 127490 || 127504 <= D2 && D2 <= 127546 || 127552 <= D2 && D2 <= 127560 || 127568 <= D2 && D2 <= 127569 || 131072 <= D2 && D2 <= 194367 || 177984 <= D2 && D2 <= 196605 || 196608 <= D2 && D2 <= 262141 ? "W" : 32 <= D2 && D2 <= 126 || 162 <= D2 && D2 <= 163 || 165 <= D2 && D2 <= 166 || D2 == 172 || D2 == 175 || 10214 <= D2 && D2 <= 10221 || 10629 <= D2 && D2 <= 10630 ? "Na" : D2 == 161 || D2 == 164 || 167 <= D2 && D2 <= 168 || D2 == 170 || 173 <= D2 && D2 <= 174 || 176 <= D2 && D2 <= 180 || 182 <= D2 && D2 <= 186 || 188 <= D2 && D2 <= 191 || D2 == 198 || D2 == 208 || 215 <= D2 && D2 <= 216 || 222 <= D2 && D2 <= 225 || D2 == 230 || 232 <= D2 && D2 <= 234 || 236 <= D2 && D2 <= 237 || D2 == 240 || 242 <= D2 && D2 <= 243 || 247 <= D2 && D2 <= 250 || D2 == 252 || D2 == 254 || D2 == 257 || D2 == 273 || D2 == 275 || D2 == 283 || 294 <= D2 && D2 <= 295 || D2 == 299 || 305 <= D2 && D2 <= 307 || D2 == 312 || 319 <= D2 && D2 <= 322 || D2 == 324 || 328 <= D2 && D2 <= 331 || D2 == 333 || 338 <= D2 && D2 <= 339 || 358 <= D2 && D2 <= 359 || D2 == 363 || D2 == 462 || D2 == 464 || D2 == 466 || D2 == 468 || D2 == 470 || D2 == 472 || D2 == 474 || D2 == 476 || D2 == 593 || D2 == 609 || D2 == 708 || D2 == 711 || 713 <= D2 && D2 <= 715 || D2 == 717 || D2 == 720 || 728 <= D2 && D2 <= 731 || D2 == 733 || D2 == 735 || 768 <= D2 && D2 <= 879 || 913 <= D2 && D2 <= 929 || 931 <= D2 && D2 <= 937 || 945 <= D2 && D2 <= 961 || 963 <= D2 && D2 <= 969 || D2 == 1025 || 1040 <= D2 && D2 <= 1103 || D2 == 1105 || D2 == 8208 || 8211 <= D2 && D2 <= 8214 || 8216 <= D2 && D2 <= 8217 || 8220 <= D2 && D2 <= 8221 || 8224 <= D2 && D2 <= 8226 || 8228 <= D2 && D2 <= 8231 || D2 == 8240 || 8242 <= D2 && D2 <= 8243 || D2 == 8245 || D2 == 8251 || D2 == 8254 || D2 == 8308 || D2 == 8319 || 8321 <= D2 && D2 <= 8324 || D2 == 8364 || D2 == 8451 || D2 == 8453 || D2 == 8457 || D2 == 8467 || D2 == 8470 || 8481 <= D2 && D2 <= 8482 || D2 == 8486 || D2 == 8491 || 8531 <= D2 && D2 <= 8532 || 8539 <= D2 && D2 <= 8542 || 8544 <= D2 && D2 <= 8555 || 8560 <= D2 && D2 <= 8569 || D2 == 8585 || 8592 <= D2 && D2 <= 8601 || 8632 <= D2 && D2 <= 8633 || D2 == 8658 || D2 == 8660 || D2 == 8679 || D2 == 8704 || 8706 <= D2 && D2 <= 8707 || 8711 <= D2 && D2 <= 8712 || D2 == 8715 || D2 == 8719 || D2 == 8721 || D2 == 8725 || D2 == 8730 || 8733 <= D2 && D2 <= 8736 || D2 == 8739 || D2 == 8741 || 8743 <= D2 && D2 <= 8748 || D2 == 8750 || 8756 <= D2 && D2 <= 8759 || 8764 <= D2 && D2 <= 8765 || D2 == 8776 || D2 == 8780 || D2 == 8786 || 8800 <= D2 && D2 <= 8801 || 8804 <= D2 && D2 <= 8807 || 8810 <= D2 && D2 <= 8811 || 8814 <= D2 && D2 <= 8815 || 8834 <= D2 && D2 <= 8835 || 8838 <= D2 && D2 <= 8839 || D2 == 8853 || D2 == 8857 || D2 == 8869 || D2 == 8895 || D2 == 8978 || 9312 <= D2 && D2 <= 9449 || 9451 <= D2 && D2 <= 9547 || 9552 <= D2 && D2 <= 9587 || 9600 <= D2 && D2 <= 9615 || 9618 <= D2 && D2 <= 9621 || 9632 <= D2 && D2 <= 9633 || 9635 <= D2 && D2 <= 9641 || 9650 <= D2 && D2 <= 9651 || 9654 <= D2 && D2 <= 9655 || 9660 <= D2 && D2 <= 9661 || 9664 <= D2 && D2 <= 9665 || 9670 <= D2 && D2 <= 9672 || D2 == 9675 || 9678 <= D2 && D2 <= 9681 || 9698 <= D2 && D2 <= 9701 || D2 == 9711 || 9733 <= D2 && D2 <= 9734 || D2 == 9737 || 9742 <= D2 && D2 <= 9743 || 9748 <= D2 && D2 <= 9749 || D2 == 9756 || D2 == 9758 || D2 == 9792 || D2 == 9794 || 9824 <= D2 && D2 <= 9825 || 9827 <= D2 && D2 <= 9829 || 9831 <= D2 && D2 <= 9834 || 9836 <= D2 && D2 <= 9837 || D2 == 9839 || 9886 <= D2 && D2 <= 9887 || 9918 <= D2 && D2 <= 9919 || 9924 <= D2 && D2 <= 9933 || 9935 <= D2 && D2 <= 9953 || D2 == 9955 || 9960 <= D2 && D2 <= 9983 || D2 == 10045 || D2 == 10071 || 10102 <= D2 && D2 <= 10111 || 11093 <= D2 && D2 <= 11097 || 12872 <= D2 && D2 <= 12879 || 57344 <= D2 && D2 <= 63743 || 65024 <= D2 && D2 <= 65039 || D2 == 65533 || 127232 <= D2 && D2 <= 127242 || 127248 <= D2 && D2 <= 127277 || 127280 <= D2 && D2 <= 127337 || 127344 <= D2 && D2 <= 127386 || 917760 <= D2 && D2 <= 917999 || 983040 <= D2 && D2 <= 1048573 || 1048576 <= D2 && D2 <= 1114109 ? "A" : "N";
1142
+ }, u2.characterLength = function(t2) {
1143
+ var s3 = this.eastAsianWidth(t2);
978
1144
  return s3 == "F" || s3 == "W" || s3 == "A" ? 2 : 1;
979
1145
  };
980
- function F(e) {
981
- return e.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
982
- }
983
- u.length = function(e) {
984
- for (var s3 = F(e), C = 0, D = 0; D < s3.length; D++)
985
- C = C + this.characterLength(s3[D]);
986
- return C;
987
- }, u.slice = function(e, s3, C) {
988
- textLen = u.length(e), s3 = s3 || 0, C = C || 1, s3 < 0 && (s3 = textLen + s3), C < 0 && (C = textLen + C);
989
- for (var D = "", i = 0, o = F(e), E = 0; E < o.length; E++) {
990
- var a = o[E], n = u.length(a);
991
- if (i >= s3 - (n == 2 ? 1 : 0))
992
- if (i + n <= C)
993
- D += a;
994
- else
995
- break;
996
- i += n;
997
- }
998
- return D;
1146
+ function F2(t2) {
1147
+ return t2.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
1148
+ }
1149
+ u2.length = function(t2) {
1150
+ for (var s3 = F2(t2), i2 = 0, D2 = 0; D2 < s3.length; D2++) i2 = i2 + this.characterLength(s3[D2]);
1151
+ return i2;
1152
+ }, u2.slice = function(t2, s3, i2) {
1153
+ textLen = u2.length(t2), s3 = s3 || 0, i2 = i2 || 1, s3 < 0 && (s3 = textLen + s3), i2 < 0 && (i2 = textLen + i2);
1154
+ for (var D2 = "", C2 = 0, o = F2(t2), E = 0; E < o.length; E++) {
1155
+ var a2 = o[E], n2 = u2.length(a2);
1156
+ if (C2 >= s3 - (n2 == 2 ? 1 : 0)) if (C2 + n2 <= i2) D2 += a2;
1157
+ else break;
1158
+ C2 += n2;
1159
+ }
1160
+ return D2;
999
1161
  };
1000
- })(G);
1001
- K2 = m;
1002
- Y = function() {
1162
+ })(P);
1163
+ X = P.exports;
1164
+ DD = O(X);
1165
+ uD = function() {
1003
1166
  return /\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62(?:\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73|\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74|\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67)\uDB40\uDC7F|(?:\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFE])|(?:\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|(?:\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1|\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D(?:\uD83D[\uDC68\uDC69]))(?:\uD83C[\uDFFC-\uDFFF])|\uD83D\uDC68(?:\uD83C\uDFFB(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFC-\uDFFF])|[\u2695\u2696\u2708]\uFE0F|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))?|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFF]))|\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D)?\uD83D\uDC68|(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFE])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB-\uDFFD\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83E\uDD1D\u200D\uD83D\uDC68(?:\uD83C[\uDFFB\uDFFD-\uDFFF])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])\uFE0F|\u200D(?:(?:\uD83D[\uDC68\uDC69])\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D[\uDC66\uDC67])|\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC)?|(?:\uD83D\uDC69(?:\uD83C\uDFFB\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|(?:\uD83C[\uDFFC-\uDFFF])\u200D\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69]))|\uD83E\uDDD1(?:\uD83C[\uDFFB-\uDFFF])\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1)(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67]))|\uD83D\uDC69(?:\u200D(?:\u2764\uFE0F\u200D(?:\uD83D\uDC8B\u200D(?:\uD83D[\uDC68\uDC69])|\uD83D[\uDC68\uDC69])|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83E\uDDD1(?:\u200D(?:\uD83E\uDD1D\u200D\uD83E\uDDD1|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFF\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFE\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFD\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFC\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C\uDFFB\u200D(?:\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD]))|\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66|\uD83D\uDC69\u200D\uD83D\uDC69\u200D(?:\uD83D[\uDC66\uDC67])|\uD83D\uDC69\u200D\uD83D\uDC67\u200D(?:\uD83D[\uDC66\uDC67])|(?:\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8|\uD83E\uDDD1(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDC69(?:\uD83C\uDFFF\u200D[\u2695\u2696\u2708]|\uD83C\uDFFE\u200D[\u2695\u2696\u2708]|\uD83C\uDFFD\u200D[\u2695\u2696\u2708]|\uD83C\uDFFC\u200D[\u2695\u2696\u2708]|\uD83C\uDFFB\u200D[\u2695\u2696\u2708]|\u200D[\u2695\u2696\u2708])|\uD83D\uDE36\u200D\uD83C\uDF2B|\uD83C\uDFF3\uFE0F\u200D\u26A7|\uD83D\uDC3B\u200D\u2744|(?:(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF])\u200D[\u2640\u2642]|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])\u200D[\u2640\u2642]|\uD83C\uDFF4\u200D\u2620|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])\u200D[\u2640\u2642]|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u2600-\u2604\u260E\u2611\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26B0\u26B1\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0\u26F1\u26F4\u26F7\u26F8\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u3030\u303D\u3297\u3299]|\uD83C[\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]|\uD83D[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3])\uFE0F|\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08|\uD83D\uDC69\u200D\uD83D\uDC67|\uD83D\uDC69\u200D\uD83D\uDC66|\uD83D\uDE35\u200D\uD83D\uDCAB|\uD83D\uDE2E\u200D\uD83D\uDCA8|\uD83D\uDC15\u200D\uD83E\uDDBA|\uD83E\uDDD1(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83D\uDC69(?:\uD83C\uDFFF|\uD83C\uDFFE|\uD83C\uDFFD|\uD83C\uDFFC|\uD83C\uDFFB)?|\uD83C\uDDFD\uD83C\uDDF0|\uD83C\uDDF6\uD83C\uDDE6|\uD83C\uDDF4\uD83C\uDDF2|\uD83D\uDC08\u200D\u2B1B|\u2764\uFE0F\u200D(?:\uD83D\uDD25|\uD83E\uDE79)|\uD83D\uDC41\uFE0F|\uD83C\uDFF3\uFE0F|\uD83C\uDDFF(?:\uD83C[\uDDE6\uDDF2\uDDFC])|\uD83C\uDDFE(?:\uD83C[\uDDEA\uDDF9])|\uD83C\uDDFC(?:\uD83C[\uDDEB\uDDF8])|\uD83C\uDDFB(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA])|\uD83C\uDDFA(?:\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF])|\uD83C\uDDF9(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF])|\uD83C\uDDF8(?:\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF])|\uD83C\uDDF7(?:\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC])|\uD83C\uDDF5(?:\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE])|\uD83C\uDDF3(?:\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF])|\uD83C\uDDF2(?:\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF])|\uD83C\uDDF1(?:\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE])|\uD83C\uDDF0(?:\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF])|\uD83C\uDDEF(?:\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5])|\uD83C\uDDEE(?:\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9])|\uD83C\uDDED(?:\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA])|\uD83C\uDDEC(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE])|\uD83C\uDDEB(?:\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7])|\uD83C\uDDEA(?:\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA])|\uD83C\uDDE9(?:\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF])|\uD83C\uDDE8(?:\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF])|\uD83C\uDDE7(?:\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF])|\uD83C\uDDE6(?:\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF])|[#\*0-9]\uFE0F\u20E3|\u2764\uFE0F|(?:\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD])(?:\uD83C[\uDFFB-\uDFFF])|(?:\u26F9|\uD83C[\uDFCB\uDFCC]|\uD83D\uDD75)(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|\uD83C\uDFF4|(?:[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5])(?:\uD83C[\uDFFB-\uDFFF])|(?:[\u261D\u270C\u270D]|\uD83D[\uDD74\uDD90])(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])|[\u270A\u270B]|\uD83C[\uDF85\uDFC2\uDFC7]|\uD83D[\uDC08\uDC15\uDC3B\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE2E\uDE35\uDE36\uDE4C\uDE4F\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1C\uDD1E\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5]|\uD83C[\uDFC3\uDFC4\uDFCA]|\uD83D[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6]|\uD83E[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD]|\uD83D\uDC6F|\uD83E[\uDD3C\uDDDE\uDDDF]|[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0D\uDD0E\uDD10-\uDD17\uDD1D\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78\uDD7A-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCB\uDDD0\uDDE0-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6]|(?:[\u231A\u231B\u23E9-\u23EC\u23F0\u23F3\u25FD\u25FE\u2614\u2615\u2648-\u2653\u267F\u2693\u26A1\u26AA\u26AB\u26BD\u26BE\u26C4\u26C5\u26CE\u26D4\u26EA\u26F2\u26F3\u26F5\u26FA\u26FD\u2705\u270A\u270B\u2728\u274C\u274E\u2753-\u2755\u2757\u2795-\u2797\u27B0\u27BF\u2B1B\u2B1C\u2B50\u2B55]|\uD83C[\uDC04\uDCCF\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF93\uDFA0-\uDFCA\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF4\uDFF8-\uDFFF]|\uD83D[\uDC00-\uDC3E\uDC40\uDC42-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDD7A\uDD95\uDD96\uDDA4\uDDFB-\uDE4F\uDE80-\uDEC5\uDECC\uDED0-\uDED2\uDED5-\uDED7\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])|(?:[#\*0-9\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23E9-\u23F3\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB-\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u261D\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692-\u2697\u2699\u269B\u269C\u26A0\u26A1\u26A7\u26AA\u26AB\u26B0\u26B1\u26BD\u26BE\u26C4\u26C5\u26C8\u26CE\u26CF\u26D1\u26D3\u26D4\u26E9\u26EA\u26F0-\u26F5\u26F7-\u26FA\u26FD\u2702\u2705\u2708-\u270D\u270F\u2712\u2714\u2716\u271D\u2721\u2728\u2733\u2734\u2744\u2747\u274C\u274E\u2753-\u2755\u2757\u2763\u2764\u2795-\u2797\u27A1\u27B0\u27BF\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B50\u2B55\u3030\u303D\u3297\u3299]|\uD83C[\uDC04\uDCCF\uDD70\uDD71\uDD7E\uDD7F\uDD8E\uDD91-\uDD9A\uDDE6-\uDDFF\uDE01\uDE02\uDE1A\uDE2F\uDE32-\uDE3A\uDE50\uDE51\uDF00-\uDF21\uDF24-\uDF93\uDF96\uDF97\uDF99-\uDF9B\uDF9E-\uDFF0\uDFF3-\uDFF5\uDFF7-\uDFFF]|\uD83D[\uDC00-\uDCFD\uDCFF-\uDD3D\uDD49-\uDD4E\uDD50-\uDD67\uDD6F\uDD70\uDD73-\uDD7A\uDD87\uDD8A-\uDD8D\uDD90\uDD95\uDD96\uDDA4\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA-\uDE4F\uDE80-\uDEC5\uDECB-\uDED2\uDED5-\uDED7\uDEE0-\uDEE5\uDEE9\uDEEB\uDEEC\uDEF0\uDEF3-\uDEFC\uDFE0-\uDFEB]|\uD83E[\uDD0C-\uDD3A\uDD3C-\uDD45\uDD47-\uDD78\uDD7A-\uDDCB\uDDCD-\uDDFF\uDE70-\uDE74\uDE78-\uDE7A\uDE80-\uDE86\uDE90-\uDEA8\uDEB0-\uDEB6\uDEC0-\uDEC2\uDED0-\uDED6])\uFE0F|(?:[\u261D\u26F9\u270A-\u270D]|\uD83C[\uDF85\uDFC2-\uDFC4\uDFC7\uDFCA-\uDFCC]|\uD83D[\uDC42\uDC43\uDC46-\uDC50\uDC66-\uDC78\uDC7C\uDC81-\uDC83\uDC85-\uDC87\uDC8F\uDC91\uDCAA\uDD74\uDD75\uDD7A\uDD90\uDD95\uDD96\uDE45-\uDE47\uDE4B-\uDE4F\uDEA3\uDEB4-\uDEB6\uDEC0\uDECC]|\uD83E[\uDD0C\uDD0F\uDD18-\uDD1F\uDD26\uDD30-\uDD39\uDD3C-\uDD3E\uDD77\uDDB5\uDDB6\uDDB8\uDDB9\uDDBB\uDDCD-\uDDCF\uDDD1-\uDDDD])/g;
1004
1167
  };
1005
- v = 10;
1006
- L = (t = 0) => (u) => `\x1B[${u + t}m`;
1007
- M = (t = 0) => (u) => `\x1B[${38 + t};5;${u}m`;
1008
- T = (t = 0) => (u, F, e) => `\x1B[${38 + t};2;${u};${F};${e}m`;
1168
+ FD = O(uD);
1169
+ m = 10;
1170
+ L = (e = 0) => (u2) => `\x1B[${u2 + e}m`;
1171
+ W2 = (e = 0) => (u2) => `\x1B[${38 + e};5;${u2}m`;
1172
+ N = (e = 0) => (u2, F2, t2) => `\x1B[${38 + e};2;${u2};${F2};${t2}m`;
1009
1173
  r = { modifier: { reset: [0, 0], bold: [1, 22], dim: [2, 22], italic: [3, 23], underline: [4, 24], overline: [53, 55], inverse: [7, 27], hidden: [8, 28], strikethrough: [9, 29] }, color: { black: [30, 39], red: [31, 39], green: [32, 39], yellow: [33, 39], blue: [34, 39], magenta: [35, 39], cyan: [36, 39], white: [37, 39], blackBright: [90, 39], gray: [90, 39], grey: [90, 39], redBright: [91, 39], greenBright: [92, 39], yellowBright: [93, 39], blueBright: [94, 39], magentaBright: [95, 39], cyanBright: [96, 39], whiteBright: [97, 39] }, bgColor: { bgBlack: [40, 49], bgRed: [41, 49], bgGreen: [42, 49], bgYellow: [43, 49], bgBlue: [44, 49], bgMagenta: [45, 49], bgCyan: [46, 49], bgWhite: [47, 49], bgBlackBright: [100, 49], bgGray: [100, 49], bgGrey: [100, 49], bgRedBright: [101, 49], bgGreenBright: [102, 49], bgYellowBright: [103, 49], bgBlueBright: [104, 49], bgMagentaBright: [105, 49], bgCyanBright: [106, 49], bgWhiteBright: [107, 49] } };
1010
1174
  Object.keys(r.modifier);
1011
- Z = Object.keys(r.color);
1012
- H2 = Object.keys(r.bgColor);
1013
- [...Z, ...H2];
1014
- q = U();
1015
- p = /* @__PURE__ */ new Set(["\x1B", "\x9B"]);
1016
- J = 39;
1017
- b = "\x07";
1018
- W2 = "[";
1019
- Q = "]";
1020
- I = "m";
1021
- w = `${Q}8;;`;
1022
- N = (t) => `${p.values().next().value}${W2}${t}${I}`;
1023
- j = (t) => `${p.values().next().value}${w}${t}${b}`;
1024
- X = (t) => t.split(" ").map((u) => c(u));
1025
- _ = (t, u, F) => {
1026
- const e = [...u];
1027
- let s3 = false, C = false, D = c($(t[t.length - 1]));
1028
- for (const [i, o] of e.entries()) {
1029
- const E = c(o);
1030
- if (D + E <= F ? t[t.length - 1] += o : (t.push(o), D = 0), p.has(o) && (s3 = true, C = e.slice(i + 1).join("").startsWith(w)), s3) {
1031
- C ? o === b && (s3 = false, C = false) : o === I && (s3 = false);
1175
+ eD = Object.keys(r.color);
1176
+ tD = Object.keys(r.bgColor);
1177
+ [...eD, ...tD];
1178
+ iD = sD();
1179
+ v = /* @__PURE__ */ new Set(["\x1B", "\x9B"]);
1180
+ CD = 39;
1181
+ w = "\x07";
1182
+ I = "[";
1183
+ rD = "]";
1184
+ R = "m";
1185
+ y = `${rD}8;;`;
1186
+ V = (e) => `${v.values().next().value}${I}${e}${R}`;
1187
+ z = (e) => `${v.values().next().value}${y}${e}${w}`;
1188
+ ED = (e) => e.split(" ").map((u2) => p(u2));
1189
+ _ = (e, u2, F2) => {
1190
+ const t2 = [...u2];
1191
+ let s3 = false, i2 = false, D2 = p(T(e[e.length - 1]));
1192
+ for (const [C2, o] of t2.entries()) {
1193
+ const E = p(o);
1194
+ if (D2 + E <= F2 ? e[e.length - 1] += o : (e.push(o), D2 = 0), v.has(o) && (s3 = true, i2 = t2.slice(C2 + 1).join("").startsWith(y)), s3) {
1195
+ i2 ? o === w && (s3 = false, i2 = false) : o === R && (s3 = false);
1032
1196
  continue;
1033
1197
  }
1034
- D += E, D === F && i < e.length - 1 && (t.push(""), D = 0);
1198
+ D2 += E, D2 === F2 && C2 < t2.length - 1 && (e.push(""), D2 = 0);
1035
1199
  }
1036
- !D && t[t.length - 1].length > 0 && t.length > 1 && (t[t.length - 2] += t.pop());
1200
+ !D2 && e[e.length - 1].length > 0 && e.length > 1 && (e[e.length - 2] += e.pop());
1037
1201
  };
1038
- DD = (t) => {
1039
- const u = t.split(" ");
1040
- let F = u.length;
1041
- for (; F > 0 && !(c(u[F - 1]) > 0); )
1042
- F--;
1043
- return F === u.length ? t : u.slice(0, F).join(" ") + u.slice(F).join("");
1202
+ nD = (e) => {
1203
+ const u2 = e.split(" ");
1204
+ let F2 = u2.length;
1205
+ for (; F2 > 0 && !(p(u2[F2 - 1]) > 0); ) F2--;
1206
+ return F2 === u2.length ? e : u2.slice(0, F2).join(" ") + u2.slice(F2).join("");
1044
1207
  };
1045
- uD = (t, u, F = {}) => {
1046
- if (F.trim !== false && t.trim() === "")
1047
- return "";
1048
- let e = "", s3, C;
1049
- const D = X(t);
1050
- let i = [""];
1051
- for (const [E, a] of t.split(" ").entries()) {
1052
- F.trim !== false && (i[i.length - 1] = i[i.length - 1].trimStart());
1053
- let n = c(i[i.length - 1]);
1054
- if (E !== 0 && (n >= u && (F.wordWrap === false || F.trim === false) && (i.push(""), n = 0), (n > 0 || F.trim === false) && (i[i.length - 1] += " ", n++)), F.hard && D[E] > u) {
1055
- const B = u - n, A = 1 + Math.floor((D[E] - B - 1) / u);
1056
- Math.floor((D[E] - 1) / u) < A && i.push(""), _(i, a, u);
1208
+ oD = (e, u2, F2 = {}) => {
1209
+ if (F2.trim !== false && e.trim() === "") return "";
1210
+ let t2 = "", s3, i2;
1211
+ const D2 = ED(e);
1212
+ let C2 = [""];
1213
+ for (const [E, a2] of e.split(" ").entries()) {
1214
+ F2.trim !== false && (C2[C2.length - 1] = C2[C2.length - 1].trimStart());
1215
+ let n2 = p(C2[C2.length - 1]);
1216
+ if (E !== 0 && (n2 >= u2 && (F2.wordWrap === false || F2.trim === false) && (C2.push(""), n2 = 0), (n2 > 0 || F2.trim === false) && (C2[C2.length - 1] += " ", n2++)), F2.hard && D2[E] > u2) {
1217
+ const B2 = u2 - n2, f = 1 + Math.floor((D2[E] - B2 - 1) / u2);
1218
+ Math.floor((D2[E] - 1) / u2) < f && C2.push(""), _(C2, a2, u2);
1057
1219
  continue;
1058
1220
  }
1059
- if (n + D[E] > u && n > 0 && D[E] > 0) {
1060
- if (F.wordWrap === false && n < u) {
1061
- _(i, a, u);
1221
+ if (n2 + D2[E] > u2 && n2 > 0 && D2[E] > 0) {
1222
+ if (F2.wordWrap === false && n2 < u2) {
1223
+ _(C2, a2, u2);
1062
1224
  continue;
1063
1225
  }
1064
- i.push("");
1226
+ C2.push("");
1065
1227
  }
1066
- if (n + D[E] > u && F.wordWrap === false) {
1067
- _(i, a, u);
1228
+ if (n2 + D2[E] > u2 && F2.wordWrap === false) {
1229
+ _(C2, a2, u2);
1068
1230
  continue;
1069
1231
  }
1070
- i[i.length - 1] += a;
1232
+ C2[C2.length - 1] += a2;
1071
1233
  }
1072
- F.trim !== false && (i = i.map((E) => DD(E)));
1073
- const o = [...i.join(`
1234
+ F2.trim !== false && (C2 = C2.map((E) => nD(E)));
1235
+ const o = [...C2.join(`
1074
1236
  `)];
1075
- for (const [E, a] of o.entries()) {
1076
- if (e += a, p.has(a)) {
1077
- const { groups: B } = new RegExp(`(?:\\${W2}(?<code>\\d+)m|\\${w}(?<uri>.*)${b})`).exec(o.slice(E).join("")) || { groups: {} };
1078
- if (B.code !== void 0) {
1079
- const A = Number.parseFloat(B.code);
1080
- s3 = A === J ? void 0 : A;
1081
- } else
1082
- B.uri !== void 0 && (C = B.uri.length === 0 ? void 0 : B.uri);
1083
- }
1084
- const n = q.codes.get(Number(s3));
1237
+ for (const [E, a2] of o.entries()) {
1238
+ if (t2 += a2, v.has(a2)) {
1239
+ const { groups: B2 } = new RegExp(`(?:\\${I}(?<code>\\d+)m|\\${y}(?<uri>.*)${w})`).exec(o.slice(E).join("")) || { groups: {} };
1240
+ if (B2.code !== void 0) {
1241
+ const f = Number.parseFloat(B2.code);
1242
+ s3 = f === CD ? void 0 : f;
1243
+ } else B2.uri !== void 0 && (i2 = B2.uri.length === 0 ? void 0 : B2.uri);
1244
+ }
1245
+ const n2 = iD.codes.get(Number(s3));
1085
1246
  o[E + 1] === `
1086
- ` ? (C && (e += j("")), s3 && n && (e += N(n))) : a === `
1087
- ` && (s3 && n && (e += N(s3)), C && (e += j(C)));
1247
+ ` ? (i2 && (t2 += z("")), s3 && n2 && (t2 += V(n2))) : a2 === `
1248
+ ` && (s3 && n2 && (t2 += V(s3)), i2 && (t2 += z(i2)));
1088
1249
  }
1089
- return e;
1250
+ return t2;
1090
1251
  };
1091
- R = Symbol("clack:cancel");
1092
- V = /* @__PURE__ */ new Map([["k", "up"], ["j", "down"], ["h", "left"], ["l", "right"]]);
1093
- tD = /* @__PURE__ */ new Set(["up", "down", "left", "right", "space", "enter"]);
1094
- h = class {
1095
- constructor({ render: u, input: F = stdin, output: e = stdout, ...s3 }, C = true) {
1096
- this._track = false, this._cursor = 0, this.state = "initial", this.error = "", this.subscribers = /* @__PURE__ */ new Map(), this._prevFrame = "", this.opts = s3, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = u.bind(this), this._track = C, this.input = F, this.output = e;
1252
+ aD = ["up", "down", "left", "right", "space", "enter", "cancel"];
1253
+ A = { actions: new Set(aD), aliases: /* @__PURE__ */ new Map([["k", "up"], ["j", "down"], ["h", "left"], ["l", "right"], ["", "cancel"], ["escape", "cancel"]]) };
1254
+ globalThis.process.platform.startsWith("win");
1255
+ $ = Symbol("clack:cancel");
1256
+ AD = Object.defineProperty;
1257
+ pD = (e, u2, F2) => u2 in e ? AD(e, u2, { enumerable: true, configurable: true, writable: true, value: F2 }) : e[u2] = F2;
1258
+ l = (e, u2, F2) => (pD(e, typeof u2 != "symbol" ? u2 + "" : u2, F2), F2);
1259
+ x = class {
1260
+ constructor(u2, F2 = true) {
1261
+ l(this, "input"), l(this, "output"), l(this, "_abortSignal"), l(this, "rl"), l(this, "opts"), l(this, "_render"), l(this, "_track", false), l(this, "_prevFrame", ""), l(this, "_subscribers", /* @__PURE__ */ new Map()), l(this, "_cursor", 0), l(this, "state", "initial"), l(this, "error", ""), l(this, "value");
1262
+ const { input: t2 = stdin, output: s3 = stdout, render: i2, signal: D2, ...C2 } = u2;
1263
+ this.opts = C2, this.onKeypress = this.onKeypress.bind(this), this.close = this.close.bind(this), this.render = this.render.bind(this), this._render = i2.bind(this), this._track = F2, this._abortSignal = D2, this.input = t2, this.output = s3;
1097
1264
  }
1098
- prompt() {
1099
- const u = new WriteStream(0);
1100
- return u._write = (F, e, s3) => {
1101
- this._track && (this.value = this.rl.line.replace(/\t/g, ""), this._cursor = this.rl.cursor, this.emit("value", this.value)), s3();
1102
- }, this.input.pipe(u), this.rl = f.createInterface({ input: this.input, output: u, tabSize: 2, prompt: "", escapeCodeTimeout: 50 }), f.emitKeypressEvents(this.input, this.rl), this.rl.prompt(), this.opts.initialValue !== void 0 && this._track && this.rl.write(this.opts.initialValue), this.input.on("keypress", this.onKeypress), g(this.input, true), this.output.on("resize", this.render), this.render(), new Promise((F, e) => {
1103
- this.once("submit", () => {
1104
- this.output.write(src.cursor.show), this.output.off("resize", this.render), g(this.input, false), F(this.value);
1105
- }), this.once("cancel", () => {
1106
- this.output.write(src.cursor.show), this.output.off("resize", this.render), g(this.input, false), F(R);
1107
- });
1108
- });
1265
+ unsubscribe() {
1266
+ this._subscribers.clear();
1109
1267
  }
1110
- on(u, F) {
1111
- const e = this.subscribers.get(u) ?? [];
1112
- e.push({ cb: F }), this.subscribers.set(u, e);
1268
+ setSubscriber(u2, F2) {
1269
+ const t2 = this._subscribers.get(u2) ?? [];
1270
+ t2.push(F2), this._subscribers.set(u2, t2);
1113
1271
  }
1114
- once(u, F) {
1115
- const e = this.subscribers.get(u) ?? [];
1116
- e.push({ cb: F, once: true }), this.subscribers.set(u, e);
1272
+ on(u2, F2) {
1273
+ this.setSubscriber(u2, { cb: F2 });
1117
1274
  }
1118
- emit(u, ...F) {
1119
- const e = this.subscribers.get(u) ?? [], s3 = [];
1120
- for (const C of e)
1121
- C.cb(...F), C.once && s3.push(() => e.splice(e.indexOf(C), 1));
1122
- for (const C of s3)
1123
- C();
1275
+ once(u2, F2) {
1276
+ this.setSubscriber(u2, { cb: F2, once: true });
1124
1277
  }
1125
- unsubscribe() {
1126
- this.subscribers.clear();
1278
+ emit(u2, ...F2) {
1279
+ const t2 = this._subscribers.get(u2) ?? [], s3 = [];
1280
+ for (const i2 of t2) i2.cb(...F2), i2.once && s3.push(() => t2.splice(t2.indexOf(i2), 1));
1281
+ for (const i2 of s3) i2();
1127
1282
  }
1128
- onKeypress(u, F) {
1129
- if (this.state === "error" && (this.state = "active"), F?.name && !this._track && V.has(F.name) && this.emit("cursor", V.get(F.name)), F?.name && tD.has(F.name) && this.emit("cursor", F.name), u && (u.toLowerCase() === "y" || u.toLowerCase() === "n") && this.emit("confirm", u.toLowerCase() === "y"), u && this.emit("key", u.toLowerCase()), F?.name === "return") {
1283
+ prompt() {
1284
+ return new Promise((u2, F2) => {
1285
+ if (this._abortSignal) {
1286
+ if (this._abortSignal.aborted) return this.state = "cancel", this.close(), u2($);
1287
+ this._abortSignal.addEventListener("abort", () => {
1288
+ this.state = "cancel", this.close();
1289
+ }, { once: true });
1290
+ }
1291
+ const t2 = new WriteStream(0);
1292
+ t2._write = (s3, i2, D2) => {
1293
+ this._track && (this.value = this.rl?.line.replace(/\t/g, ""), this._cursor = this.rl?.cursor ?? 0, this.emit("value", this.value)), D2();
1294
+ }, this.input.pipe(t2), this.rl = g.createInterface({ input: this.input, output: t2, tabSize: 2, prompt: "", escapeCodeTimeout: 50 }), g.emitKeypressEvents(this.input, this.rl), this.rl.prompt(), this.opts.initialValue !== void 0 && this._track && this.rl.write(this.opts.initialValue), this.input.on("keypress", this.onKeypress), d(this.input, true), this.output.on("resize", this.render), this.render(), this.once("submit", () => {
1295
+ this.output.write(srcExports.cursor.show), this.output.off("resize", this.render), d(this.input, false), u2(this.value);
1296
+ }), this.once("cancel", () => {
1297
+ this.output.write(srcExports.cursor.show), this.output.off("resize", this.render), d(this.input, false), u2($);
1298
+ });
1299
+ });
1300
+ }
1301
+ onKeypress(u2, F2) {
1302
+ if (this.state === "error" && (this.state = "active"), F2?.name && (!this._track && A.aliases.has(F2.name) && this.emit("cursor", A.aliases.get(F2.name)), A.actions.has(F2.name) && this.emit("cursor", F2.name)), u2 && (u2.toLowerCase() === "y" || u2.toLowerCase() === "n") && this.emit("confirm", u2.toLowerCase() === "y"), u2 === " " && this.opts.placeholder && (this.value || (this.rl?.write(this.opts.placeholder), this.emit("value", this.opts.placeholder))), u2 && this.emit("key", u2.toLowerCase()), F2?.name === "return") {
1130
1303
  if (this.opts.validate) {
1131
- const e = this.opts.validate(this.value);
1132
- e && (this.error = e, this.state = "error", this.rl.write(this.value));
1304
+ const t2 = this.opts.validate(this.value);
1305
+ t2 && (this.error = t2, this.state = "error", this.rl?.write(this.value));
1133
1306
  }
1134
1307
  this.state !== "error" && (this.state = "submit");
1135
1308
  }
1136
- u === "" && (this.state = "cancel"), (this.state === "submit" || this.state === "cancel") && this.emit("finalize"), this.render(), (this.state === "submit" || this.state === "cancel") && this.close();
1309
+ k([u2, F2?.name, F2?.sequence], "cancel") && (this.state = "cancel"), (this.state === "submit" || this.state === "cancel") && this.emit("finalize"), this.render(), (this.state === "submit" || this.state === "cancel") && this.close();
1137
1310
  }
1138
1311
  close() {
1139
1312
  this.input.unpipe(), this.input.removeListener("keypress", this.onKeypress), this.output.write(`
1140
- `), g(this.input, false), this.rl.close(), this.emit(`${this.state}`, this.value), this.unsubscribe();
1313
+ `), d(this.input, false), this.rl?.close(), this.rl = void 0, this.emit(`${this.state}`, this.value), this.unsubscribe();
1141
1314
  }
1142
1315
  restoreCursor() {
1143
- const u = P(this._prevFrame, process.stdout.columns, { hard: true }).split(`
1316
+ const u2 = G(this._prevFrame, process.stdout.columns, { hard: true }).split(`
1144
1317
  `).length - 1;
1145
- this.output.write(src.cursor.move(-999, u * -1));
1318
+ this.output.write(srcExports.cursor.move(-999, u2 * -1));
1146
1319
  }
1147
1320
  render() {
1148
- const u = P(this._render(this) ?? "", process.stdout.columns, { hard: true });
1149
- if (u !== this._prevFrame) {
1150
- if (this.state === "initial")
1151
- this.output.write(src.cursor.hide);
1321
+ const u2 = G(this._render(this) ?? "", process.stdout.columns, { hard: true });
1322
+ if (u2 !== this._prevFrame) {
1323
+ if (this.state === "initial") this.output.write(srcExports.cursor.hide);
1152
1324
  else {
1153
- const F = FD(this._prevFrame, u);
1154
- if (this.restoreCursor(), F && F?.length === 1) {
1155
- const e = F[0];
1156
- this.output.write(src.cursor.move(0, e)), this.output.write(src.erase.lines(1));
1157
- const s3 = u.split(`
1325
+ const F2 = hD(this._prevFrame, u2);
1326
+ if (this.restoreCursor(), F2 && F2?.length === 1) {
1327
+ const t2 = F2[0];
1328
+ this.output.write(srcExports.cursor.move(0, t2)), this.output.write(srcExports.erase.lines(1));
1329
+ const s3 = u2.split(`
1158
1330
  `);
1159
- this.output.write(s3[e]), this._prevFrame = u, this.output.write(src.cursor.move(0, s3.length - e - 1));
1331
+ this.output.write(s3[t2]), this._prevFrame = u2, this.output.write(srcExports.cursor.move(0, s3.length - t2 - 1));
1160
1332
  return;
1161
- } else if (F && F?.length > 1) {
1162
- const e = F[0];
1163
- this.output.write(src.cursor.move(0, e)), this.output.write(src.erase.down());
1164
- const C = u.split(`
1165
- `).slice(e);
1166
- this.output.write(C.join(`
1167
- `)), this._prevFrame = u;
1333
+ }
1334
+ if (F2 && F2?.length > 1) {
1335
+ const t2 = F2[0];
1336
+ this.output.write(srcExports.cursor.move(0, t2)), this.output.write(srcExports.erase.down());
1337
+ const s3 = u2.split(`
1338
+ `).slice(t2);
1339
+ this.output.write(s3.join(`
1340
+ `)), this._prevFrame = u2;
1168
1341
  return;
1169
1342
  }
1170
- this.output.write(src.erase.down());
1343
+ this.output.write(srcExports.erase.down());
1171
1344
  }
1172
- this.output.write(u), this.state === "initial" && (this.state = "active"), this._prevFrame = u;
1345
+ this.output.write(u2), this.state === "initial" && (this.state = "active"), this._prevFrame = u2;
1173
1346
  }
1174
1347
  }
1175
1348
  };
1176
- sD = class extends h {
1349
+ fD = class extends x {
1177
1350
  get cursor() {
1178
1351
  return this.value ? 0 : 1;
1179
1352
  }
1180
1353
  get _value() {
1181
1354
  return this.cursor === 0;
1182
1355
  }
1183
- constructor(u) {
1184
- super(u, false), this.value = !!u.initialValue, this.on("value", () => {
1356
+ constructor(u2) {
1357
+ super(u2, false), this.value = !!u2.initialValue, this.on("value", () => {
1185
1358
  this.value = this._value;
1186
- }), this.on("confirm", (F) => {
1187
- this.output.write(src.cursor.move(0, -1)), this.value = F, this.state = "submit", this.close();
1359
+ }), this.on("confirm", (F2) => {
1360
+ this.output.write(srcExports.cursor.move(0, -1)), this.value = F2, this.state = "submit", this.close();
1188
1361
  }), this.on("cursor", () => {
1189
1362
  this.value = !this.value;
1190
1363
  });
1191
1364
  }
1192
1365
  };
1193
- iD = class extends h {
1194
- constructor(u) {
1195
- super(u, false), this.cursor = 0, this.options = u.options, this.value = [...u.initialValues ?? []], this.cursor = Math.max(this.options.findIndex(({ value: F }) => F === u.cursorAt), 0), this.on("key", (F) => {
1196
- F === "a" && this.toggleAll();
1197
- }), this.on("cursor", (F) => {
1198
- switch (F) {
1366
+ bD = Object.defineProperty;
1367
+ mD = (e, u2, F2) => u2 in e ? bD(e, u2, { enumerable: true, configurable: true, writable: true, value: F2 }) : e[u2] = F2;
1368
+ Y = (e, u2, F2) => (mD(e, typeof u2 != "symbol" ? u2 + "" : u2, F2), F2);
1369
+ wD = class extends x {
1370
+ constructor(u2) {
1371
+ super(u2, false), Y(this, "options"), Y(this, "cursor", 0), this.options = u2.options, this.value = [...u2.initialValues ?? []], this.cursor = Math.max(this.options.findIndex(({ value: F2 }) => F2 === u2.cursorAt), 0), this.on("key", (F2) => {
1372
+ F2 === "a" && this.toggleAll();
1373
+ }), this.on("cursor", (F2) => {
1374
+ switch (F2) {
1199
1375
  case "left":
1200
1376
  case "up":
1201
1377
  this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;
@@ -1214,18 +1390,21 @@ var init_prompt = __esm({
1214
1390
  return this.options[this.cursor].value;
1215
1391
  }
1216
1392
  toggleAll() {
1217
- const u = this.value.length === this.options.length;
1218
- this.value = u ? [] : this.options.map((F) => F.value);
1393
+ const u2 = this.value.length === this.options.length;
1394
+ this.value = u2 ? [] : this.options.map((F2) => F2.value);
1219
1395
  }
1220
1396
  toggleValue() {
1221
- const u = this.value.includes(this._value);
1222
- this.value = u ? this.value.filter((F) => F !== this._value) : [...this.value, this._value];
1397
+ const u2 = this.value.includes(this._value);
1398
+ this.value = u2 ? this.value.filter((F2) => F2 !== this._value) : [...this.value, this._value];
1223
1399
  }
1224
1400
  };
1225
- ED = class extends h {
1226
- constructor(u) {
1227
- super(u, false), this.cursor = 0, this.options = u.options, this.cursor = this.options.findIndex(({ value: F }) => F === u.initialValue), this.cursor === -1 && (this.cursor = 0), this.changeValue(), this.on("cursor", (F) => {
1228
- switch (F) {
1401
+ $D = Object.defineProperty;
1402
+ SD = (e, u2, F2) => u2 in e ? $D(e, u2, { enumerable: true, configurable: true, writable: true, value: F2 }) : e[u2] = F2;
1403
+ q = (e, u2, F2) => (SD(e, typeof u2 != "symbol" ? u2 + "" : u2, F2), F2);
1404
+ jD = class extends x {
1405
+ constructor(u2) {
1406
+ super(u2, false), q(this, "options"), q(this, "cursor", 0), this.options = u2.options, this.cursor = this.options.findIndex(({ value: F2 }) => F2 === u2.initialValue), this.cursor === -1 && (this.cursor = 0), this.changeValue(), this.on("cursor", (F2) => {
1407
+ switch (F2) {
1229
1408
  case "left":
1230
1409
  case "up":
1231
1410
  this.cursor = this.cursor === 0 ? this.options.length - 1 : this.cursor - 1;
@@ -1245,16 +1424,18 @@ var init_prompt = __esm({
1245
1424
  this.value = this._value.value;
1246
1425
  }
1247
1426
  };
1248
- oD = class extends h {
1249
- constructor(u) {
1250
- super(u), this.valueWithCursor = "", this.on("finalize", () => {
1251
- this.value || (this.value = u.defaultValue), this.valueWithCursor = this.value;
1427
+ PD = Object.defineProperty;
1428
+ LD = (e, u2, F2) => u2 in e ? PD(e, u2, { enumerable: true, configurable: true, writable: true, value: F2 }) : e[u2] = F2;
1429
+ WD = (e, u2, F2) => (LD(e, u2 + "", F2), F2);
1430
+ ND = class extends x {
1431
+ constructor(u2) {
1432
+ super(u2), WD(this, "valueWithCursor", ""), this.on("finalize", () => {
1433
+ this.value || (this.value = u2.defaultValue), this.valueWithCursor = this.value;
1252
1434
  }), this.on("value", () => {
1253
- if (this.cursor >= this.value.length)
1254
- this.valueWithCursor = `${this.value}${l.inverse(l.hidden("_"))}`;
1435
+ if (this.cursor >= this.value.length) this.valueWithCursor = `${this.value}${c.inverse(c.hidden("_"))}`;
1255
1436
  else {
1256
- const F = this.value.slice(0, this.cursor), e = this.value.slice(this.cursor);
1257
- this.valueWithCursor = `${F}${l.inverse(e[0])}${e.slice(1)}`;
1437
+ const F2 = this.value.slice(0, this.cursor), t2 = this.value.slice(this.cursor);
1438
+ this.valueWithCursor = `${F2}${c.inverse(t2[0])}${t2.slice(1)}`;
1258
1439
  }
1259
1440
  });
1260
1441
  }
@@ -1263,7 +1444,7 @@ var init_prompt = __esm({
1263
1444
  }
1264
1445
  };
1265
1446
  unicode = isUnicodeSupported();
1266
- s = (c2, fallback) => unicode ? c2 : fallback;
1447
+ s = (c3, fallback) => unicode ? c3 : fallback;
1267
1448
  S_STEP_ACTIVE = s("\u276F", ">");
1268
1449
  S_STEP_CANCEL = s("\u25A0", "x");
1269
1450
  S_STEP_ERROR = s("\u25B2", "x");
@@ -1293,7 +1474,7 @@ var init_prompt = __esm({
1293
1474
  }
1294
1475
  };
1295
1476
  text = (opts) => {
1296
- return new oD({
1477
+ return new ND({
1297
1478
  validate: opts.validate,
1298
1479
  placeholder: opts.placeholder,
1299
1480
  defaultValue: opts.defaultValue,
@@ -1339,7 +1520,7 @@ ${colors.cyan(
1339
1520
  confirm = (opts) => {
1340
1521
  const active = opts.active ?? "Yes";
1341
1522
  const inactive = opts.inactive ?? "No";
1342
- return new sD({
1523
+ return new fD({
1343
1524
  active,
1344
1525
  inactive,
1345
1526
  initialValue: opts.initialValue ?? true,
@@ -1383,7 +1564,7 @@ ${colors.cyan(S_BAR_END)}
1383
1564
  }
1384
1565
  return `${colors.dim(S_RADIO_INACTIVE)} ${colors.dim(label)}`;
1385
1566
  };
1386
- return new ED({
1567
+ return new jD({
1387
1568
  options: opts.options,
1388
1569
  initialValue: opts.initialValue,
1389
1570
  render() {
@@ -1406,7 +1587,7 @@ ${colors.gray(S_BAR)}`;
1406
1587
  }
1407
1588
  default: {
1408
1589
  return `${title}${colors.cyan(S_BAR)} ${this.options.map(
1409
- (option, i) => opt(option, i === this.cursor ? "active" : "inactive")
1590
+ (option, i2) => opt(option, i2 === this.cursor ? "active" : "inactive")
1410
1591
  ).join(`
1411
1592
  ${colors.cyan(S_BAR)} `)}
1412
1593
  ${colors.cyan(S_BAR_END)}
@@ -1438,7 +1619,7 @@ ${colors.cyan(S_BAR_END)}
1438
1619
  }
1439
1620
  return `${colors.dim(S_CHECKBOX_INACTIVE)} ${colors.dim(label)}`;
1440
1621
  };
1441
- return new iD({
1622
+ return new wD({
1442
1623
  options: opts.options,
1443
1624
  initialValues: opts.initialValues,
1444
1625
  required: opts.required ?? true,
@@ -1472,11 +1653,11 @@ ${colors.gray(S_BAR)}` : ""}`;
1472
1653
  }
1473
1654
  case "error": {
1474
1655
  const footer = this.error.split("\n").map(
1475
- (ln, i) => i === 0 ? `${colors.yellow(S_BAR_END)} ${colors.yellow(ln)}` : ` ${ln}`
1656
+ (ln, i2) => i2 === 0 ? `${colors.yellow(S_BAR_END)} ${colors.yellow(ln)}` : ` ${ln}`
1476
1657
  ).join("\n");
1477
- return title + colors.yellow(S_BAR) + " " + this.options.map((option, i) => {
1658
+ return title + colors.yellow(S_BAR) + " " + this.options.map((option, i2) => {
1478
1659
  const selected = this.value.includes(option.value);
1479
- const active = i === this.cursor;
1660
+ const active = i2 === this.cursor;
1480
1661
  if (active && selected) {
1481
1662
  return opt(option, "active-selected");
1482
1663
  }
@@ -1488,9 +1669,9 @@ ${colors.gray(S_BAR)}` : ""}`;
1488
1669
  ${colors.yellow(S_BAR)} `) + "\n" + footer + "\n";
1489
1670
  }
1490
1671
  default: {
1491
- return `${title}${colors.cyan(S_BAR)} ${this.options.map((option, i) => {
1672
+ return `${title}${colors.cyan(S_BAR)} ${this.options.map((option, i2) => {
1492
1673
  const selected = this.value.includes(option.value);
1493
- const active = i === this.cursor;
1674
+ const active = i2 === this.cursor;
1494
1675
  if (active && selected) {
1495
1676
  return opt(option, "active-selected");
1496
1677
  }
@@ -1507,39 +1688,31 @@ ${colors.cyan(S_BAR_END)}
1507
1688
  }
1508
1689
  }).prompt();
1509
1690
  };
1691
+ kCancel = Symbol.for("cancel");
1510
1692
  }
1511
1693
  });
1512
1694
 
1513
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/shared/consola.36c0034f.mjs
1695
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.D4JK3RCK.mjs
1514
1696
  import process$1 from "node:process";
1515
- function detectProvider(env2) {
1516
- for (const provider of providers) {
1517
- const envName = provider[1] || provider[0];
1518
- if (env2[envName]) {
1519
- return {
1520
- name: provider[0].toLowerCase(),
1521
- ...provider[2]
1522
- };
1523
- }
1524
- }
1525
- if (env2.SHELL && env2.SHELL === "/bin/jsh") {
1526
- return {
1527
- name: "stackblitz",
1528
- ci: false
1529
- };
1697
+ function p2() {
1698
+ if (globalThis.process?.env) for (const e of B) {
1699
+ const o = e[1] || e[0];
1700
+ if (globalThis.process?.env[o]) return { name: e[0].toLowerCase(), ...e[2] };
1530
1701
  }
1531
- return {
1532
- name: "",
1533
- ci: false
1534
- };
1702
+ return globalThis.process?.env?.SHELL === "/bin/jsh" && globalThis.process?.versions?.webcontainer ? { name: "stackblitz", ci: false } : { name: "", ci: false };
1535
1703
  }
1536
- function toBoolean(val) {
1537
- return val ? val !== "false" : false;
1704
+ function n(e) {
1705
+ return e ? e !== "false" : false;
1706
+ }
1707
+ function G2() {
1708
+ const e = F.find((o) => o[0]);
1709
+ if (e) return { name: e[1] };
1538
1710
  }
1539
1711
  function ansiRegex2({ onlyFirst = false } = {}) {
1712
+ const ST = "(?:\\u0007|\\u001B\\u005C|\\u009C)";
1540
1713
  const pattern = [
1541
- "[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?\\u0007)",
1542
- "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-ntqry=><~]))"
1714
+ `[\\u001B\\u009B][[\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]+)*|[a-zA-Z\\d]+(?:;[-a-zA-Z\\d\\/#&.:=?%@~_]*)*)?${ST})`,
1715
+ "(?:(?:\\d{1,4}(?:;\\d{0,4})*)?[\\dA-PR-TZcf-nq-uy=><~]))"
1543
1716
  ].join("|");
1544
1717
  return new RegExp(pattern, onlyFirst ? void 0 : "g");
1545
1718
  }
@@ -1549,70 +1722,88 @@ function stripAnsi2(string) {
1549
1722
  }
1550
1723
  return string.replace(regex, "");
1551
1724
  }
1552
- function getDefaultExportFromCjs(x) {
1553
- return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
1725
+ function isAmbiguous(x2) {
1726
+ return x2 === 161 || x2 === 164 || x2 === 167 || x2 === 168 || x2 === 170 || x2 === 173 || x2 === 174 || x2 >= 176 && x2 <= 180 || x2 >= 182 && x2 <= 186 || x2 >= 188 && x2 <= 191 || x2 === 198 || x2 === 208 || x2 === 215 || x2 === 216 || x2 >= 222 && x2 <= 225 || x2 === 230 || x2 >= 232 && x2 <= 234 || x2 === 236 || x2 === 237 || x2 === 240 || x2 === 242 || x2 === 243 || x2 >= 247 && x2 <= 250 || x2 === 252 || x2 === 254 || x2 === 257 || x2 === 273 || x2 === 275 || x2 === 283 || x2 === 294 || x2 === 295 || x2 === 299 || x2 >= 305 && x2 <= 307 || x2 === 312 || x2 >= 319 && x2 <= 322 || x2 === 324 || x2 >= 328 && x2 <= 331 || x2 === 333 || x2 === 338 || x2 === 339 || x2 === 358 || x2 === 359 || x2 === 363 || x2 === 462 || x2 === 464 || x2 === 466 || x2 === 468 || x2 === 470 || x2 === 472 || x2 === 474 || x2 === 476 || x2 === 593 || x2 === 609 || x2 === 708 || x2 === 711 || x2 >= 713 && x2 <= 715 || x2 === 717 || x2 === 720 || x2 >= 728 && x2 <= 731 || x2 === 733 || x2 === 735 || x2 >= 768 && x2 <= 879 || x2 >= 913 && x2 <= 929 || x2 >= 931 && x2 <= 937 || x2 >= 945 && x2 <= 961 || x2 >= 963 && x2 <= 969 || x2 === 1025 || x2 >= 1040 && x2 <= 1103 || x2 === 1105 || x2 === 8208 || x2 >= 8211 && x2 <= 8214 || x2 === 8216 || x2 === 8217 || x2 === 8220 || x2 === 8221 || x2 >= 8224 && x2 <= 8226 || x2 >= 8228 && x2 <= 8231 || x2 === 8240 || x2 === 8242 || x2 === 8243 || x2 === 8245 || x2 === 8251 || x2 === 8254 || x2 === 8308 || x2 === 8319 || x2 >= 8321 && x2 <= 8324 || x2 === 8364 || x2 === 8451 || x2 === 8453 || x2 === 8457 || x2 === 8467 || x2 === 8470 || x2 === 8481 || x2 === 8482 || x2 === 8486 || x2 === 8491 || x2 === 8531 || x2 === 8532 || x2 >= 8539 && x2 <= 8542 || x2 >= 8544 && x2 <= 8555 || x2 >= 8560 && x2 <= 8569 || x2 === 8585 || x2 >= 8592 && x2 <= 8601 || x2 === 8632 || x2 === 8633 || x2 === 8658 || x2 === 8660 || x2 === 8679 || x2 === 8704 || x2 === 8706 || x2 === 8707 || x2 === 8711 || x2 === 8712 || x2 === 8715 || x2 === 8719 || x2 === 8721 || x2 === 8725 || x2 === 8730 || x2 >= 8733 && x2 <= 8736 || x2 === 8739 || x2 === 8741 || x2 >= 8743 && x2 <= 8748 || x2 === 8750 || x2 >= 8756 && x2 <= 8759 || x2 === 8764 || x2 === 8765 || x2 === 8776 || x2 === 8780 || x2 === 8786 || x2 === 8800 || x2 === 8801 || x2 >= 8804 && x2 <= 8807 || x2 === 8810 || x2 === 8811 || x2 === 8814 || x2 === 8815 || x2 === 8834 || x2 === 8835 || x2 === 8838 || x2 === 8839 || x2 === 8853 || x2 === 8857 || x2 === 8869 || x2 === 8895 || x2 === 8978 || x2 >= 9312 && x2 <= 9449 || x2 >= 9451 && x2 <= 9547 || x2 >= 9552 && x2 <= 9587 || x2 >= 9600 && x2 <= 9615 || x2 >= 9618 && x2 <= 9621 || x2 === 9632 || x2 === 9633 || x2 >= 9635 && x2 <= 9641 || x2 === 9650 || x2 === 9651 || x2 === 9654 || x2 === 9655 || x2 === 9660 || x2 === 9661 || x2 === 9664 || x2 === 9665 || x2 >= 9670 && x2 <= 9672 || x2 === 9675 || x2 >= 9678 && x2 <= 9681 || x2 >= 9698 && x2 <= 9701 || x2 === 9711 || x2 === 9733 || x2 === 9734 || x2 === 9737 || x2 === 9742 || x2 === 9743 || x2 === 9756 || x2 === 9758 || x2 === 9792 || x2 === 9794 || x2 === 9824 || x2 === 9825 || x2 >= 9827 && x2 <= 9829 || x2 >= 9831 && x2 <= 9834 || x2 === 9836 || x2 === 9837 || x2 === 9839 || x2 === 9886 || x2 === 9887 || x2 === 9919 || x2 >= 9926 && x2 <= 9933 || x2 >= 9935 && x2 <= 9939 || x2 >= 9941 && x2 <= 9953 || x2 === 9955 || x2 === 9960 || x2 === 9961 || x2 >= 9963 && x2 <= 9969 || x2 === 9972 || x2 >= 9974 && x2 <= 9977 || x2 === 9979 || x2 === 9980 || x2 === 9982 || x2 === 9983 || x2 === 10045 || x2 >= 10102 && x2 <= 10111 || x2 >= 11094 && x2 <= 11097 || x2 >= 12872 && x2 <= 12879 || x2 >= 57344 && x2 <= 63743 || x2 >= 65024 && x2 <= 65039 || x2 === 65533 || x2 >= 127232 && x2 <= 127242 || x2 >= 127248 && x2 <= 127277 || x2 >= 127280 && x2 <= 127337 || x2 >= 127344 && x2 <= 127373 || x2 === 127375 || x2 === 127376 || x2 >= 127387 && x2 <= 127404 || x2 >= 917760 && x2 <= 917999 || x2 >= 983040 && x2 <= 1048573 || x2 >= 1048576 && x2 <= 1114109;
1727
+ }
1728
+ function isFullWidth(x2) {
1729
+ return x2 === 12288 || x2 >= 65281 && x2 <= 65376 || x2 >= 65504 && x2 <= 65510;
1730
+ }
1731
+ function isWide(x2) {
1732
+ return x2 >= 4352 && x2 <= 4447 || x2 === 8986 || x2 === 8987 || x2 === 9001 || x2 === 9002 || x2 >= 9193 && x2 <= 9196 || x2 === 9200 || x2 === 9203 || x2 === 9725 || x2 === 9726 || x2 === 9748 || x2 === 9749 || x2 >= 9776 && x2 <= 9783 || x2 >= 9800 && x2 <= 9811 || x2 === 9855 || x2 >= 9866 && x2 <= 9871 || x2 === 9875 || x2 === 9889 || x2 === 9898 || x2 === 9899 || x2 === 9917 || x2 === 9918 || x2 === 9924 || x2 === 9925 || x2 === 9934 || x2 === 9940 || x2 === 9962 || x2 === 9970 || x2 === 9971 || x2 === 9973 || x2 === 9978 || x2 === 9981 || x2 === 9989 || x2 === 9994 || x2 === 9995 || x2 === 10024 || x2 === 10060 || x2 === 10062 || x2 >= 10067 && x2 <= 10069 || x2 === 10071 || x2 >= 10133 && x2 <= 10135 || x2 === 10160 || x2 === 10175 || x2 === 11035 || x2 === 11036 || x2 === 11088 || x2 === 11093 || x2 >= 11904 && x2 <= 11929 || x2 >= 11931 && x2 <= 12019 || x2 >= 12032 && x2 <= 12245 || x2 >= 12272 && x2 <= 12287 || x2 >= 12289 && x2 <= 12350 || x2 >= 12353 && x2 <= 12438 || x2 >= 12441 && x2 <= 12543 || x2 >= 12549 && x2 <= 12591 || x2 >= 12593 && x2 <= 12686 || x2 >= 12688 && x2 <= 12773 || x2 >= 12783 && x2 <= 12830 || x2 >= 12832 && x2 <= 12871 || x2 >= 12880 && x2 <= 42124 || x2 >= 42128 && x2 <= 42182 || x2 >= 43360 && x2 <= 43388 || x2 >= 44032 && x2 <= 55203 || x2 >= 63744 && x2 <= 64255 || x2 >= 65040 && x2 <= 65049 || x2 >= 65072 && x2 <= 65106 || x2 >= 65108 && x2 <= 65126 || x2 >= 65128 && x2 <= 65131 || x2 >= 94176 && x2 <= 94180 || x2 === 94192 || x2 === 94193 || x2 >= 94208 && x2 <= 100343 || x2 >= 100352 && x2 <= 101589 || x2 >= 101631 && x2 <= 101640 || x2 >= 110576 && x2 <= 110579 || x2 >= 110581 && x2 <= 110587 || x2 === 110589 || x2 === 110590 || x2 >= 110592 && x2 <= 110882 || x2 === 110898 || x2 >= 110928 && x2 <= 110930 || x2 === 110933 || x2 >= 110948 && x2 <= 110951 || x2 >= 110960 && x2 <= 111355 || x2 >= 119552 && x2 <= 119638 || x2 >= 119648 && x2 <= 119670 || x2 === 126980 || x2 === 127183 || x2 === 127374 || x2 >= 127377 && x2 <= 127386 || x2 >= 127488 && x2 <= 127490 || x2 >= 127504 && x2 <= 127547 || x2 >= 127552 && x2 <= 127560 || x2 === 127568 || x2 === 127569 || x2 >= 127584 && x2 <= 127589 || x2 >= 127744 && x2 <= 127776 || x2 >= 127789 && x2 <= 127797 || x2 >= 127799 && x2 <= 127868 || x2 >= 127870 && x2 <= 127891 || x2 >= 127904 && x2 <= 127946 || x2 >= 127951 && x2 <= 127955 || x2 >= 127968 && x2 <= 127984 || x2 === 127988 || x2 >= 127992 && x2 <= 128062 || x2 === 128064 || x2 >= 128066 && x2 <= 128252 || x2 >= 128255 && x2 <= 128317 || x2 >= 128331 && x2 <= 128334 || x2 >= 128336 && x2 <= 128359 || x2 === 128378 || x2 === 128405 || x2 === 128406 || x2 === 128420 || x2 >= 128507 && x2 <= 128591 || x2 >= 128640 && x2 <= 128709 || x2 === 128716 || x2 >= 128720 && x2 <= 128722 || x2 >= 128725 && x2 <= 128727 || x2 >= 128732 && x2 <= 128735 || x2 === 128747 || x2 === 128748 || x2 >= 128756 && x2 <= 128764 || x2 >= 128992 && x2 <= 129003 || x2 === 129008 || x2 >= 129292 && x2 <= 129338 || x2 >= 129340 && x2 <= 129349 || x2 >= 129351 && x2 <= 129535 || x2 >= 129648 && x2 <= 129660 || x2 >= 129664 && x2 <= 129673 || x2 >= 129679 && x2 <= 129734 || x2 >= 129742 && x2 <= 129756 || x2 >= 129759 && x2 <= 129769 || x2 >= 129776 && x2 <= 129784 || x2 >= 131072 && x2 <= 196605 || x2 >= 196608 && x2 <= 262141;
1733
+ }
1734
+ function validate(codePoint) {
1735
+ if (!Number.isSafeInteger(codePoint)) {
1736
+ throw new TypeError(`Expected a code point, got \`${typeof codePoint}\`.`);
1737
+ }
1738
+ }
1739
+ function eastAsianWidth(codePoint, { ambiguousAsWide = false } = {}) {
1740
+ validate(codePoint);
1741
+ if (isFullWidth(codePoint) || isWide(codePoint) || ambiguousAsWide && isAmbiguous(codePoint)) {
1742
+ return 2;
1743
+ }
1744
+ return 1;
1554
1745
  }
1555
- function stringWidth$1(string, options) {
1746
+ function stringWidth$1(string, options = {}) {
1556
1747
  if (typeof string !== "string" || string.length === 0) {
1557
1748
  return 0;
1558
1749
  }
1559
- options = {
1560
- ambiguousIsNarrow: true,
1561
- countAnsiEscapeCodes: false,
1562
- ...options
1563
- };
1564
- if (!options.countAnsiEscapeCodes) {
1750
+ const {
1751
+ ambiguousIsNarrow = true,
1752
+ countAnsiEscapeCodes = false
1753
+ } = options;
1754
+ if (!countAnsiEscapeCodes) {
1565
1755
  string = stripAnsi2(string);
1566
1756
  }
1567
1757
  if (string.length === 0) {
1568
1758
  return 0;
1569
1759
  }
1570
- const ambiguousCharacterWidth = options.ambiguousIsNarrow ? 1 : 2;
1571
1760
  let width = 0;
1572
- for (const { segment: character } of new Intl.Segmenter().segment(string)) {
1761
+ const eastAsianWidthOptions = { ambiguousAsWide: !ambiguousIsNarrow };
1762
+ for (const { segment: character } of segmenter.segment(string)) {
1573
1763
  const codePoint = character.codePointAt(0);
1574
1764
  if (codePoint <= 31 || codePoint >= 127 && codePoint <= 159) {
1575
1765
  continue;
1576
1766
  }
1577
- if (codePoint >= 768 && codePoint <= 879) {
1767
+ if (codePoint >= 8203 && codePoint <= 8207 || codePoint === 65279) {
1768
+ continue;
1769
+ }
1770
+ if (codePoint >= 768 && codePoint <= 879 || codePoint >= 6832 && codePoint <= 6911 || codePoint >= 7616 && codePoint <= 7679 || codePoint >= 8400 && codePoint <= 8447 || codePoint >= 65056 && codePoint <= 65071) {
1771
+ continue;
1772
+ }
1773
+ if (codePoint >= 55296 && codePoint <= 57343) {
1774
+ continue;
1775
+ }
1776
+ if (codePoint >= 65024 && codePoint <= 65039) {
1777
+ continue;
1778
+ }
1779
+ if (defaultIgnorableCodePointRegex.test(character)) {
1578
1780
  continue;
1579
1781
  }
1580
1782
  if (emojiRegex().test(character)) {
1581
1783
  width += 2;
1582
1784
  continue;
1583
1785
  }
1584
- const code = eastAsianWidth.eastAsianWidth(character);
1585
- switch (code) {
1586
- case "F":
1587
- case "W": {
1588
- width += 2;
1589
- break;
1590
- }
1591
- case "A": {
1592
- width += ambiguousCharacterWidth;
1593
- break;
1594
- }
1595
- default: {
1596
- width += 1;
1597
- }
1598
- }
1786
+ width += eastAsianWidth(codePoint, eastAsianWidthOptions);
1599
1787
  }
1600
1788
  return width;
1601
1789
  }
1602
1790
  function isUnicodeSupported() {
1791
+ const { env: env2 } = process$1;
1792
+ const { TERM, TERM_PROGRAM } = env2;
1603
1793
  if (process$1.platform !== "win32") {
1604
- return process$1.env.TERM !== "linux";
1794
+ return TERM !== "linux";
1605
1795
  }
1606
- return Boolean(process$1.env.CI) || Boolean(process$1.env.WT_SESSION) || Boolean(process$1.env.TERMINUS_SUBLIME) || process$1.env.ConEmuTask === "{cmd::Cmder}" || process$1.env.TERM_PROGRAM === "Terminus-Sublime" || process$1.env.TERM_PROGRAM === "vscode" || process$1.env.TERM === "xterm-256color" || process$1.env.TERM === "alacritty" || process$1.env.TERMINAL_EMULATOR === "JetBrains-JediTerm";
1796
+ return Boolean(env2.WT_SESSION) || Boolean(env2.TERMINUS_SUBLIME) || env2.ConEmuTask === "{cmd::Cmder}" || TERM_PROGRAM === "Terminus-Sublime" || TERM_PROGRAM === "vscode" || TERM === "xterm-256color" || TERM === "alacritty" || TERM === "rxvt-unicode" || TERM === "rxvt-unicode-256color" || env2.TERMINAL_EMULATOR === "JetBrains-JediTerm";
1607
1797
  }
1608
1798
  function stringWidth(str) {
1609
- if (!Intl.Segmenter) {
1799
+ const hasICU = typeof Intl === "object";
1800
+ if (!hasICU || !Intl.Segmenter) {
1610
1801
  return stripAnsi(str).length;
1611
1802
  }
1612
1803
  return stringWidth$1(str);
1613
1804
  }
1614
1805
  function characterFormat(str) {
1615
- return str.replace(/`([^`]+)`/gm, (_2, m2) => colors.cyan(m2)).replace(/\s+_([^_]+)_\s+/gm, (_2, m2) => ` ${colors.underline(m2)} `);
1806
+ return str.replace(/`([^`]+)`/gm, (_3, m2) => colors.cyan(m2)).replace(/\s+_([^_]+)_\s+/gm, (_3, m2) => ` ${colors.underline(m2)} `);
1616
1807
  }
1617
1808
  function getColor2(color = "white") {
1618
1809
  return colors[color] || colors.white;
@@ -1632,170 +1823,83 @@ function createConsola2(options = {}) {
1632
1823
  stderr: process.stderr,
1633
1824
  prompt: (...args) => Promise.resolve().then(() => (init_prompt(), prompt_exports)).then((m2) => m2.prompt(...args)),
1634
1825
  reporters: options.reporters || [
1635
- options.fancy ?? !(isCI2 || isTest) ? new FancyReporter() : new BasicReporter()
1826
+ options.fancy ?? !(T2 || A2) ? new FancyReporter() : new BasicReporter()
1636
1827
  ],
1637
1828
  ...options
1638
1829
  });
1639
1830
  return consola2;
1640
1831
  }
1641
1832
  function _getDefaultLogLevel() {
1642
- if (isDebug) {
1833
+ if (U) {
1643
1834
  return LogLevels.debug;
1644
1835
  }
1645
- if (isTest) {
1836
+ if (A2) {
1646
1837
  return LogLevels.warn;
1647
1838
  }
1648
1839
  return LogLevels.info;
1649
1840
  }
1650
- var providers, processShim, envShim, providerInfo, nodeENV, isCI2, hasTTY, isDebug, isTest, regex, eastasianwidth, eastasianwidthExports, eastAsianWidth, emojiRegex, TYPE_COLOR_MAP, LEVEL_COLOR_MAP, unicode2, s2, TYPE_ICONS, FancyReporter, consola;
1651
- var init_consola_36c0034f = __esm({
1652
- "../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/shared/consola.36c0034f.mjs"() {
1841
+ var r2, i, s$1, t, B, l2, I2, T2, R2, U, A2, _2, C, y2, c2, L2, a, D, O2, S, N2, P2, F, u, regex, emojiRegex, segmenter, defaultIgnorableCodePointRegex, TYPE_COLOR_MAP, LEVEL_COLOR_MAP, unicode2, s2, TYPE_ICONS, FancyReporter, consola;
1842
+ var init_consola_D4JK3RCK = __esm({
1843
+ "../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/shared/consola.D4JK3RCK.mjs"() {
1653
1844
  "use strict";
1654
1845
  init_core();
1655
- init_consola_06ad8a64();
1656
- init_utils();
1657
- providers = [
1658
- ["APPVEYOR"],
1659
- ["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"],
1660
- ["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"],
1661
- ["APPCIRCLE", "AC_APPCIRCLE"],
1662
- ["BAMBOO", "bamboo_planKey"],
1663
- ["BITBUCKET", "BITBUCKET_COMMIT"],
1664
- ["BITRISE", "BITRISE_IO"],
1665
- ["BUDDY", "BUDDY_WORKSPACE_ID"],
1666
- ["BUILDKITE"],
1667
- ["CIRCLE", "CIRCLECI"],
1668
- ["CIRRUS", "CIRRUS_CI"],
1669
- ["CLOUDFLARE_PAGES", "CF_PAGES", { ci: true }],
1670
- ["CODEBUILD", "CODEBUILD_BUILD_ARN"],
1671
- ["CODEFRESH", "CF_BUILD_ID"],
1672
- ["DRONE"],
1673
- ["DRONE", "DRONE_BUILD_EVENT"],
1674
- ["DSARI"],
1675
- ["GITHUB_ACTIONS"],
1676
- ["GITLAB", "GITLAB_CI"],
1677
- ["GITLAB", "CI_MERGE_REQUEST_ID"],
1678
- ["GOCD", "GO_PIPELINE_LABEL"],
1679
- ["LAYERCI"],
1680
- ["HUDSON", "HUDSON_URL"],
1681
- ["JENKINS", "JENKINS_URL"],
1682
- ["MAGNUM"],
1683
- ["NETLIFY"],
1684
- ["NETLIFY", "NETLIFY_LOCAL", { ci: false }],
1685
- ["NEVERCODE"],
1686
- ["RENDER"],
1687
- ["SAIL", "SAILCI"],
1688
- ["SEMAPHORE"],
1689
- ["SCREWDRIVER"],
1690
- ["SHIPPABLE"],
1691
- ["SOLANO", "TDDIUM"],
1692
- ["STRIDER"],
1693
- ["TEAMCITY", "TEAMCITY_VERSION"],
1694
- ["TRAVIS"],
1695
- ["VERCEL", "NOW_BUILDER"],
1696
- ["APPCENTER", "APPCENTER_BUILD_ID"],
1697
- ["CODESANDBOX", "CODESANDBOX_SSE", { ci: false }],
1698
- ["STACKBLITZ"],
1699
- ["STORMKIT"],
1700
- ["CLEAVR"]
1701
- ];
1702
- processShim = typeof process !== "undefined" ? process : {};
1703
- envShim = processShim.env || {};
1704
- providerInfo = detectProvider(envShim);
1705
- nodeENV = typeof process !== "undefined" && process.env && process.env.NODE_ENV || "";
1706
- processShim.platform;
1707
- providerInfo.name;
1708
- isCI2 = toBoolean(envShim.CI) || providerInfo.ci !== false;
1709
- hasTTY = toBoolean(processShim.stdout && processShim.stdout.isTTY);
1710
- isDebug = toBoolean(envShim.DEBUG);
1711
- isTest = nodeENV === "test" || toBoolean(envShim.TEST);
1712
- toBoolean(envShim.MINIMAL) || isCI2 || isTest || !hasTTY;
1846
+ init_consola_Cs5FdtHD();
1847
+ init_consola_CBi6Nm9s();
1848
+ r2 = /* @__PURE__ */ Object.create(null);
1849
+ i = (e) => globalThis.process?.env || import.meta.env || globalThis.Deno?.env.toObject() || globalThis.__env__ || (e ? r2 : globalThis);
1850
+ s$1 = new Proxy(r2, { get(e, o) {
1851
+ return i()[o] ?? r2[o];
1852
+ }, has(e, o) {
1853
+ const E = i();
1854
+ return o in E || o in r2;
1855
+ }, set(e, o, E) {
1856
+ const b = i(true);
1857
+ return b[o] = E, true;
1858
+ }, deleteProperty(e, o) {
1859
+ if (!o) return false;
1860
+ const E = i(true);
1861
+ return delete E[o], true;
1862
+ }, ownKeys() {
1863
+ const e = i(true);
1864
+ return Object.keys(e);
1865
+ } });
1866
+ t = typeof process < "u" && process.env && process.env.NODE_ENV || "";
1867
+ B = [["APPVEYOR"], ["AWS_AMPLIFY", "AWS_APP_ID", { ci: true }], ["AZURE_PIPELINES", "SYSTEM_TEAMFOUNDATIONCOLLECTIONURI"], ["AZURE_STATIC", "INPUT_AZURE_STATIC_WEB_APPS_API_TOKEN"], ["APPCIRCLE", "AC_APPCIRCLE"], ["BAMBOO", "bamboo_planKey"], ["BITBUCKET", "BITBUCKET_COMMIT"], ["BITRISE", "BITRISE_IO"], ["BUDDY", "BUDDY_WORKSPACE_ID"], ["BUILDKITE"], ["CIRCLE", "CIRCLECI"], ["CIRRUS", "CIRRUS_CI"], ["CLOUDFLARE_PAGES", "CF_PAGES", { ci: true }], ["CODEBUILD", "CODEBUILD_BUILD_ARN"], ["CODEFRESH", "CF_BUILD_ID"], ["DRONE"], ["DRONE", "DRONE_BUILD_EVENT"], ["DSARI"], ["GITHUB_ACTIONS"], ["GITLAB", "GITLAB_CI"], ["GITLAB", "CI_MERGE_REQUEST_ID"], ["GOCD", "GO_PIPELINE_LABEL"], ["LAYERCI"], ["HUDSON", "HUDSON_URL"], ["JENKINS", "JENKINS_URL"], ["MAGNUM"], ["NETLIFY"], ["NETLIFY", "NETLIFY_LOCAL", { ci: false }], ["NEVERCODE"], ["RENDER"], ["SAIL", "SAILCI"], ["SEMAPHORE"], ["SCREWDRIVER"], ["SHIPPABLE"], ["SOLANO", "TDDIUM"], ["STRIDER"], ["TEAMCITY", "TEAMCITY_VERSION"], ["TRAVIS"], ["VERCEL", "NOW_BUILDER"], ["VERCEL", "VERCEL", { ci: false }], ["VERCEL", "VERCEL_ENV", { ci: false }], ["APPCENTER", "APPCENTER_BUILD_ID"], ["CODESANDBOX", "CODESANDBOX_SSE", { ci: false }], ["STACKBLITZ"], ["STORMKIT"], ["CLEAVR"], ["ZEABUR"], ["CODESPHERE", "CODESPHERE_APP_ID", { ci: true }], ["RAILWAY", "RAILWAY_PROJECT_ID"], ["RAILWAY", "RAILWAY_SERVICE_ID"], ["DENO-DEPLOY", "DENO_DEPLOYMENT_ID"], ["FIREBASE_APP_HOSTING", "FIREBASE_APP_HOSTING", { ci: true }]];
1868
+ l2 = p2();
1869
+ l2.name;
1870
+ I2 = globalThis.process?.platform || "";
1871
+ T2 = n(s$1.CI) || l2.ci !== false;
1872
+ R2 = n(globalThis.process?.stdout && globalThis.process?.stdout.isTTY);
1873
+ U = n(s$1.DEBUG);
1874
+ A2 = t === "test" || n(s$1.TEST);
1875
+ n(s$1.MINIMAL) || T2 || A2 || !R2;
1876
+ _2 = /^win/i.test(I2);
1877
+ !n(s$1.NO_COLOR) && (n(s$1.FORCE_COLOR) || (R2 || _2) && s$1.TERM !== "dumb" || T2);
1878
+ C = (globalThis.process?.versions?.node || "").replace(/^v/, "") || null;
1879
+ Number(C?.split(".")[0]) || null;
1880
+ y2 = globalThis.process || /* @__PURE__ */ Object.create(null);
1881
+ c2 = { versions: {} };
1882
+ new Proxy(y2, { get(e, o) {
1883
+ if (o === "env") return s$1;
1884
+ if (o in e) return e[o];
1885
+ if (o in c2) return c2[o];
1886
+ } });
1887
+ L2 = globalThis.process?.release?.name === "node";
1888
+ a = !!globalThis.Bun || !!globalThis.process?.versions?.bun;
1889
+ D = !!globalThis.Deno;
1890
+ O2 = !!globalThis.fastly;
1891
+ S = !!globalThis.Netlify;
1892
+ N2 = !!globalThis.EdgeRuntime;
1893
+ P2 = globalThis.navigator?.userAgent === "Cloudflare-Workers";
1894
+ F = [[S, "netlify"], [N2, "edge-light"], [P2, "workerd"], [O2, "fastly"], [D, "deno"], [a, "bun"], [L2, "node"]];
1895
+ u = G2();
1896
+ u?.name || "";
1713
1897
  regex = ansiRegex2();
1714
- eastasianwidth = { exports: {} };
1715
- (function(module) {
1716
- var eaw = {};
1717
- {
1718
- module.exports = eaw;
1719
- }
1720
- eaw.eastAsianWidth = function(character) {
1721
- var x = character.charCodeAt(0);
1722
- var y = character.length == 2 ? character.charCodeAt(1) : 0;
1723
- var codePoint = x;
1724
- if (55296 <= x && x <= 56319 && (56320 <= y && y <= 57343)) {
1725
- x &= 1023;
1726
- y &= 1023;
1727
- codePoint = x << 10 | y;
1728
- codePoint += 65536;
1729
- }
1730
- if (12288 == codePoint || 65281 <= codePoint && codePoint <= 65376 || 65504 <= codePoint && codePoint <= 65510) {
1731
- return "F";
1732
- }
1733
- if (8361 == codePoint || 65377 <= codePoint && codePoint <= 65470 || 65474 <= codePoint && codePoint <= 65479 || 65482 <= codePoint && codePoint <= 65487 || 65490 <= codePoint && codePoint <= 65495 || 65498 <= codePoint && codePoint <= 65500 || 65512 <= codePoint && codePoint <= 65518) {
1734
- return "H";
1735
- }
1736
- if (4352 <= codePoint && codePoint <= 4447 || 4515 <= codePoint && codePoint <= 4519 || 4602 <= codePoint && codePoint <= 4607 || 9001 <= codePoint && codePoint <= 9002 || 11904 <= codePoint && codePoint <= 11929 || 11931 <= codePoint && codePoint <= 12019 || 12032 <= codePoint && codePoint <= 12245 || 12272 <= codePoint && codePoint <= 12283 || 12289 <= codePoint && codePoint <= 12350 || 12353 <= codePoint && codePoint <= 12438 || 12441 <= codePoint && codePoint <= 12543 || 12549 <= codePoint && codePoint <= 12589 || 12593 <= codePoint && codePoint <= 12686 || 12688 <= codePoint && codePoint <= 12730 || 12736 <= codePoint && codePoint <= 12771 || 12784 <= codePoint && codePoint <= 12830 || 12832 <= codePoint && codePoint <= 12871 || 12880 <= codePoint && codePoint <= 13054 || 13056 <= codePoint && codePoint <= 19903 || 19968 <= codePoint && codePoint <= 42124 || 42128 <= codePoint && codePoint <= 42182 || 43360 <= codePoint && codePoint <= 43388 || 44032 <= codePoint && codePoint <= 55203 || 55216 <= codePoint && codePoint <= 55238 || 55243 <= codePoint && codePoint <= 55291 || 63744 <= codePoint && codePoint <= 64255 || 65040 <= codePoint && codePoint <= 65049 || 65072 <= codePoint && codePoint <= 65106 || 65108 <= codePoint && codePoint <= 65126 || 65128 <= codePoint && codePoint <= 65131 || 110592 <= codePoint && codePoint <= 110593 || 127488 <= codePoint && codePoint <= 127490 || 127504 <= codePoint && codePoint <= 127546 || 127552 <= codePoint && codePoint <= 127560 || 127568 <= codePoint && codePoint <= 127569 || 131072 <= codePoint && codePoint <= 194367 || 177984 <= codePoint && codePoint <= 196605 || 196608 <= codePoint && codePoint <= 262141) {
1737
- return "W";
1738
- }
1739
- if (32 <= codePoint && codePoint <= 126 || 162 <= codePoint && codePoint <= 163 || 165 <= codePoint && codePoint <= 166 || 172 == codePoint || 175 == codePoint || 10214 <= codePoint && codePoint <= 10221 || 10629 <= codePoint && codePoint <= 10630) {
1740
- return "Na";
1741
- }
1742
- if (161 == codePoint || 164 == codePoint || 167 <= codePoint && codePoint <= 168 || 170 == codePoint || 173 <= codePoint && codePoint <= 174 || 176 <= codePoint && codePoint <= 180 || 182 <= codePoint && codePoint <= 186 || 188 <= codePoint && codePoint <= 191 || 198 == codePoint || 208 == codePoint || 215 <= codePoint && codePoint <= 216 || 222 <= codePoint && codePoint <= 225 || 230 == codePoint || 232 <= codePoint && codePoint <= 234 || 236 <= codePoint && codePoint <= 237 || 240 == codePoint || 242 <= codePoint && codePoint <= 243 || 247 <= codePoint && codePoint <= 250 || 252 == codePoint || 254 == codePoint || 257 == codePoint || 273 == codePoint || 275 == codePoint || 283 == codePoint || 294 <= codePoint && codePoint <= 295 || 299 == codePoint || 305 <= codePoint && codePoint <= 307 || 312 == codePoint || 319 <= codePoint && codePoint <= 322 || 324 == codePoint || 328 <= codePoint && codePoint <= 331 || 333 == codePoint || 338 <= codePoint && codePoint <= 339 || 358 <= codePoint && codePoint <= 359 || 363 == codePoint || 462 == codePoint || 464 == codePoint || 466 == codePoint || 468 == codePoint || 470 == codePoint || 472 == codePoint || 474 == codePoint || 476 == codePoint || 593 == codePoint || 609 == codePoint || 708 == codePoint || 711 == codePoint || 713 <= codePoint && codePoint <= 715 || 717 == codePoint || 720 == codePoint || 728 <= codePoint && codePoint <= 731 || 733 == codePoint || 735 == codePoint || 768 <= codePoint && codePoint <= 879 || 913 <= codePoint && codePoint <= 929 || 931 <= codePoint && codePoint <= 937 || 945 <= codePoint && codePoint <= 961 || 963 <= codePoint && codePoint <= 969 || 1025 == codePoint || 1040 <= codePoint && codePoint <= 1103 || 1105 == codePoint || 8208 == codePoint || 8211 <= codePoint && codePoint <= 8214 || 8216 <= codePoint && codePoint <= 8217 || 8220 <= codePoint && codePoint <= 8221 || 8224 <= codePoint && codePoint <= 8226 || 8228 <= codePoint && codePoint <= 8231 || 8240 == codePoint || 8242 <= codePoint && codePoint <= 8243 || 8245 == codePoint || 8251 == codePoint || 8254 == codePoint || 8308 == codePoint || 8319 == codePoint || 8321 <= codePoint && codePoint <= 8324 || 8364 == codePoint || 8451 == codePoint || 8453 == codePoint || 8457 == codePoint || 8467 == codePoint || 8470 == codePoint || 8481 <= codePoint && codePoint <= 8482 || 8486 == codePoint || 8491 == codePoint || 8531 <= codePoint && codePoint <= 8532 || 8539 <= codePoint && codePoint <= 8542 || 8544 <= codePoint && codePoint <= 8555 || 8560 <= codePoint && codePoint <= 8569 || 8585 == codePoint || 8592 <= codePoint && codePoint <= 8601 || 8632 <= codePoint && codePoint <= 8633 || 8658 == codePoint || 8660 == codePoint || 8679 == codePoint || 8704 == codePoint || 8706 <= codePoint && codePoint <= 8707 || 8711 <= codePoint && codePoint <= 8712 || 8715 == codePoint || 8719 == codePoint || 8721 == codePoint || 8725 == codePoint || 8730 == codePoint || 8733 <= codePoint && codePoint <= 8736 || 8739 == codePoint || 8741 == codePoint || 8743 <= codePoint && codePoint <= 8748 || 8750 == codePoint || 8756 <= codePoint && codePoint <= 8759 || 8764 <= codePoint && codePoint <= 8765 || 8776 == codePoint || 8780 == codePoint || 8786 == codePoint || 8800 <= codePoint && codePoint <= 8801 || 8804 <= codePoint && codePoint <= 8807 || 8810 <= codePoint && codePoint <= 8811 || 8814 <= codePoint && codePoint <= 8815 || 8834 <= codePoint && codePoint <= 8835 || 8838 <= codePoint && codePoint <= 8839 || 8853 == codePoint || 8857 == codePoint || 8869 == codePoint || 8895 == codePoint || 8978 == codePoint || 9312 <= codePoint && codePoint <= 9449 || 9451 <= codePoint && codePoint <= 9547 || 9552 <= codePoint && codePoint <= 9587 || 9600 <= codePoint && codePoint <= 9615 || 9618 <= codePoint && codePoint <= 9621 || 9632 <= codePoint && codePoint <= 9633 || 9635 <= codePoint && codePoint <= 9641 || 9650 <= codePoint && codePoint <= 9651 || 9654 <= codePoint && codePoint <= 9655 || 9660 <= codePoint && codePoint <= 9661 || 9664 <= codePoint && codePoint <= 9665 || 9670 <= codePoint && codePoint <= 9672 || 9675 == codePoint || 9678 <= codePoint && codePoint <= 9681 || 9698 <= codePoint && codePoint <= 9701 || 9711 == codePoint || 9733 <= codePoint && codePoint <= 9734 || 9737 == codePoint || 9742 <= codePoint && codePoint <= 9743 || 9748 <= codePoint && codePoint <= 9749 || 9756 == codePoint || 9758 == codePoint || 9792 == codePoint || 9794 == codePoint || 9824 <= codePoint && codePoint <= 9825 || 9827 <= codePoint && codePoint <= 9829 || 9831 <= codePoint && codePoint <= 9834 || 9836 <= codePoint && codePoint <= 9837 || 9839 == codePoint || 9886 <= codePoint && codePoint <= 9887 || 9918 <= codePoint && codePoint <= 9919 || 9924 <= codePoint && codePoint <= 9933 || 9935 <= codePoint && codePoint <= 9953 || 9955 == codePoint || 9960 <= codePoint && codePoint <= 9983 || 10045 == codePoint || 10071 == codePoint || 10102 <= codePoint && codePoint <= 10111 || 11093 <= codePoint && codePoint <= 11097 || 12872 <= codePoint && codePoint <= 12879 || 57344 <= codePoint && codePoint <= 63743 || 65024 <= codePoint && codePoint <= 65039 || 65533 == codePoint || 127232 <= codePoint && codePoint <= 127242 || 127248 <= codePoint && codePoint <= 127277 || 127280 <= codePoint && codePoint <= 127337 || 127344 <= codePoint && codePoint <= 127386 || 917760 <= codePoint && codePoint <= 917999 || 983040 <= codePoint && codePoint <= 1048573 || 1048576 <= codePoint && codePoint <= 1114109) {
1743
- return "A";
1744
- }
1745
- return "N";
1746
- };
1747
- eaw.characterLength = function(character) {
1748
- var code = this.eastAsianWidth(character);
1749
- if (code == "F" || code == "W" || code == "A") {
1750
- return 2;
1751
- } else {
1752
- return 1;
1753
- }
1754
- };
1755
- function stringToArray(string) {
1756
- return string.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]|[^\uD800-\uDFFF]/g) || [];
1757
- }
1758
- eaw.length = function(string) {
1759
- var characters = stringToArray(string);
1760
- var len = 0;
1761
- for (var i = 0; i < characters.length; i++) {
1762
- len = len + this.characterLength(characters[i]);
1763
- }
1764
- return len;
1765
- };
1766
- eaw.slice = function(text2, start, end) {
1767
- textLen = eaw.length(text2);
1768
- start = start ? start : 0;
1769
- end = end ? end : 1;
1770
- if (start < 0) {
1771
- start = textLen + start;
1772
- }
1773
- if (end < 0) {
1774
- end = textLen + end;
1775
- }
1776
- var result = "";
1777
- var eawLen = 0;
1778
- var chars = stringToArray(text2);
1779
- for (var i = 0; i < chars.length; i++) {
1780
- var char = chars[i];
1781
- var charLen = eaw.length(char);
1782
- if (eawLen >= start - (charLen == 2 ? 1 : 0)) {
1783
- if (eawLen + charLen <= end) {
1784
- result += char;
1785
- } else {
1786
- break;
1787
- }
1788
- }
1789
- eawLen += charLen;
1790
- }
1791
- return result;
1792
- };
1793
- })(eastasianwidth);
1794
- eastasianwidthExports = eastasianwidth.exports;
1795
- eastAsianWidth = /* @__PURE__ */ getDefaultExportFromCjs(eastasianwidthExports);
1796
1898
  emojiRegex = () => {
1797
- return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26D3\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26F9(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC3\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF5\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC08\uDC26](?:\u200D\u2B1B)?|[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4-\uDEB6](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E[\uDDAF-\uDDB3\uDDBC\uDDBD])|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uFE0F|\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD-\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE88\uDE90-\uDEBD\uDEBF-\uDEC2\uDECE-\uDEDB\uDEE0-\uDEE8]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF-\uDDB3\uDDBC\uDDBD]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
1899
+ return /[#*0-9]\uFE0F?\u20E3|[\xA9\xAE\u203C\u2049\u2122\u2139\u2194-\u2199\u21A9\u21AA\u231A\u231B\u2328\u23CF\u23ED-\u23EF\u23F1\u23F2\u23F8-\u23FA\u24C2\u25AA\u25AB\u25B6\u25C0\u25FB\u25FC\u25FE\u2600-\u2604\u260E\u2611\u2614\u2615\u2618\u2620\u2622\u2623\u2626\u262A\u262E\u262F\u2638-\u263A\u2640\u2642\u2648-\u2653\u265F\u2660\u2663\u2665\u2666\u2668\u267B\u267E\u267F\u2692\u2694-\u2697\u2699\u269B\u269C\u26A0\u26A7\u26AA\u26B0\u26B1\u26BD\u26BE\u26C4\u26C8\u26CF\u26D1\u26E9\u26F0-\u26F5\u26F7\u26F8\u26FA\u2702\u2708\u2709\u270F\u2712\u2714\u2716\u271D\u2721\u2733\u2734\u2744\u2747\u2757\u2763\u27A1\u2934\u2935\u2B05-\u2B07\u2B1B\u2B1C\u2B55\u3030\u303D\u3297\u3299]\uFE0F?|[\u261D\u270C\u270D](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\u270A\u270B](?:\uD83C[\uDFFB-\uDFFF])?|[\u23E9-\u23EC\u23F0\u23F3\u25FD\u2693\u26A1\u26AB\u26C5\u26CE\u26D4\u26EA\u26FD\u2705\u2728\u274C\u274E\u2753-\u2755\u2795-\u2797\u27B0\u27BF\u2B50]|\u26D3\uFE0F?(?:\u200D\uD83D\uDCA5)?|\u26F9(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\u2764\uFE0F?(?:\u200D(?:\uD83D\uDD25|\uD83E\uDE79))?|\uD83C(?:[\uDC04\uDD70\uDD71\uDD7E\uDD7F\uDE02\uDE37\uDF21\uDF24-\uDF2C\uDF36\uDF7D\uDF96\uDF97\uDF99-\uDF9B\uDF9E\uDF9F\uDFCD\uDFCE\uDFD4-\uDFDF\uDFF5\uDFF7]\uFE0F?|[\uDF85\uDFC2\uDFC7](?:\uD83C[\uDFFB-\uDFFF])?|[\uDFC4\uDFCA](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDFCB\uDFCC](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDCCF\uDD8E\uDD91-\uDD9A\uDE01\uDE1A\uDE2F\uDE32-\uDE36\uDE38-\uDE3A\uDE50\uDE51\uDF00-\uDF20\uDF2D-\uDF35\uDF37-\uDF43\uDF45-\uDF4A\uDF4C-\uDF7C\uDF7E-\uDF84\uDF86-\uDF93\uDFA0-\uDFC1\uDFC5\uDFC6\uDFC8\uDFC9\uDFCF-\uDFD3\uDFE0-\uDFF0\uDFF8-\uDFFF]|\uDDE6\uD83C[\uDDE8-\uDDEC\uDDEE\uDDF1\uDDF2\uDDF4\uDDF6-\uDDFA\uDDFC\uDDFD\uDDFF]|\uDDE7\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEF\uDDF1-\uDDF4\uDDF6-\uDDF9\uDDFB\uDDFC\uDDFE\uDDFF]|\uDDE8\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDEE\uDDF0-\uDDF7\uDDFA-\uDDFF]|\uDDE9\uD83C[\uDDEA\uDDEC\uDDEF\uDDF0\uDDF2\uDDF4\uDDFF]|\uDDEA\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDED\uDDF7-\uDDFA]|\uDDEB\uD83C[\uDDEE-\uDDF0\uDDF2\uDDF4\uDDF7]|\uDDEC\uD83C[\uDDE6\uDDE7\uDDE9-\uDDEE\uDDF1-\uDDF3\uDDF5-\uDDFA\uDDFC\uDDFE]|\uDDED\uD83C[\uDDF0\uDDF2\uDDF3\uDDF7\uDDF9\uDDFA]|\uDDEE\uD83C[\uDDE8-\uDDEA\uDDF1-\uDDF4\uDDF6-\uDDF9]|\uDDEF\uD83C[\uDDEA\uDDF2\uDDF4\uDDF5]|\uDDF0\uD83C[\uDDEA\uDDEC-\uDDEE\uDDF2\uDDF3\uDDF5\uDDF7\uDDFC\uDDFE\uDDFF]|\uDDF1\uD83C[\uDDE6-\uDDE8\uDDEE\uDDF0\uDDF7-\uDDFB\uDDFE]|\uDDF2\uD83C[\uDDE6\uDDE8-\uDDED\uDDF0-\uDDFF]|\uDDF3\uD83C[\uDDE6\uDDE8\uDDEA-\uDDEC\uDDEE\uDDF1\uDDF4\uDDF5\uDDF7\uDDFA\uDDFF]|\uDDF4\uD83C\uDDF2|\uDDF5\uD83C[\uDDE6\uDDEA-\uDDED\uDDF0-\uDDF3\uDDF7-\uDDF9\uDDFC\uDDFE]|\uDDF6\uD83C\uDDE6|\uDDF7\uD83C[\uDDEA\uDDF4\uDDF8\uDDFA\uDDFC]|\uDDF8\uD83C[\uDDE6-\uDDEA\uDDEC-\uDDF4\uDDF7-\uDDF9\uDDFB\uDDFD-\uDDFF]|\uDDF9\uD83C[\uDDE6\uDDE8\uDDE9\uDDEB-\uDDED\uDDEF-\uDDF4\uDDF7\uDDF9\uDDFB\uDDFC\uDDFF]|\uDDFA\uD83C[\uDDE6\uDDEC\uDDF2\uDDF3\uDDF8\uDDFE\uDDFF]|\uDDFB\uD83C[\uDDE6\uDDE8\uDDEA\uDDEC\uDDEE\uDDF3\uDDFA]|\uDDFC\uD83C[\uDDEB\uDDF8]|\uDDFD\uD83C\uDDF0|\uDDFE\uD83C[\uDDEA\uDDF9]|\uDDFF\uD83C[\uDDE6\uDDF2\uDDFC]|\uDF44(?:\u200D\uD83D\uDFEB)?|\uDF4B(?:\u200D\uD83D\uDFE9)?|\uDFC3(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDFF3\uFE0F?(?:\u200D(?:\u26A7\uFE0F?|\uD83C\uDF08))?|\uDFF4(?:\u200D\u2620\uFE0F?|\uDB40\uDC67\uDB40\uDC62\uDB40(?:\uDC65\uDB40\uDC6E\uDB40\uDC67|\uDC73\uDB40\uDC63\uDB40\uDC74|\uDC77\uDB40\uDC6C\uDB40\uDC73)\uDB40\uDC7F)?)|\uD83D(?:[\uDC3F\uDCFD\uDD49\uDD4A\uDD6F\uDD70\uDD73\uDD76-\uDD79\uDD87\uDD8A-\uDD8D\uDDA5\uDDA8\uDDB1\uDDB2\uDDBC\uDDC2-\uDDC4\uDDD1-\uDDD3\uDDDC-\uDDDE\uDDE1\uDDE3\uDDE8\uDDEF\uDDF3\uDDFA\uDECB\uDECD-\uDECF\uDEE0-\uDEE5\uDEE9\uDEF0\uDEF3]\uFE0F?|[\uDC42\uDC43\uDC46-\uDC50\uDC66\uDC67\uDC6B-\uDC6D\uDC72\uDC74-\uDC76\uDC78\uDC7C\uDC83\uDC85\uDC8F\uDC91\uDCAA\uDD7A\uDD95\uDD96\uDE4C\uDE4F\uDEC0\uDECC](?:\uD83C[\uDFFB-\uDFFF])?|[\uDC6E\uDC70\uDC71\uDC73\uDC77\uDC81\uDC82\uDC86\uDC87\uDE45-\uDE47\uDE4B\uDE4D\uDE4E\uDEA3\uDEB4\uDEB5](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD74\uDD90](?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?|[\uDC00-\uDC07\uDC09-\uDC14\uDC16-\uDC25\uDC27-\uDC3A\uDC3C-\uDC3E\uDC40\uDC44\uDC45\uDC51-\uDC65\uDC6A\uDC79-\uDC7B\uDC7D-\uDC80\uDC84\uDC88-\uDC8E\uDC90\uDC92-\uDCA9\uDCAB-\uDCFC\uDCFF-\uDD3D\uDD4B-\uDD4E\uDD50-\uDD67\uDDA4\uDDFB-\uDE2D\uDE2F-\uDE34\uDE37-\uDE41\uDE43\uDE44\uDE48-\uDE4A\uDE80-\uDEA2\uDEA4-\uDEB3\uDEB7-\uDEBF\uDEC1-\uDEC5\uDED0-\uDED2\uDED5-\uDED7\uDEDC-\uDEDF\uDEEB\uDEEC\uDEF4-\uDEFC\uDFE0-\uDFEB\uDFF0]|\uDC08(?:\u200D\u2B1B)?|\uDC15(?:\u200D\uD83E\uDDBA)?|\uDC26(?:\u200D(?:\u2B1B|\uD83D\uDD25))?|\uDC3B(?:\u200D\u2744\uFE0F?)?|\uDC41\uFE0F?(?:\u200D\uD83D\uDDE8\uFE0F?)?|\uDC68(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDC68\uDC69]\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?)|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?\uDC68\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D\uDC68\uD83C[\uDFFB-\uDFFE])))?))?|\uDC69(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:\uDC8B\u200D\uD83D)?[\uDC68\uDC69]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D(?:[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?|\uDC69\u200D\uD83D(?:\uDC66(?:\u200D\uD83D\uDC66)?|\uDC67(?:\u200D\uD83D[\uDC66\uDC67])?))|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFC-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFD-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFD\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D\uD83D(?:[\uDC68\uDC69]|\uDC8B\u200D\uD83D[\uDC68\uDC69])\uD83C[\uDFFB-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83D[\uDC68\uDC69]\uD83C[\uDFFB-\uDFFE])))?))?|\uDC6F(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDD75(?:\uD83C[\uDFFB-\uDFFF]|\uFE0F)?(?:\u200D[\u2640\u2642]\uFE0F?)?|\uDE2E(?:\u200D\uD83D\uDCA8)?|\uDE35(?:\u200D\uD83D\uDCAB)?|\uDE36(?:\u200D\uD83C\uDF2B\uFE0F?)?|\uDE42(?:\u200D[\u2194\u2195]\uFE0F?)?|\uDEB6(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?)|\uD83E(?:[\uDD0C\uDD0F\uDD18-\uDD1F\uDD30-\uDD34\uDD36\uDD77\uDDB5\uDDB6\uDDBB\uDDD2\uDDD3\uDDD5\uDEC3-\uDEC5\uDEF0\uDEF2-\uDEF8](?:\uD83C[\uDFFB-\uDFFF])?|[\uDD26\uDD35\uDD37-\uDD39\uDD3D\uDD3E\uDDB8\uDDB9\uDDCD\uDDCF\uDDD4\uDDD6-\uDDDD](?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDDDE\uDDDF](?:\u200D[\u2640\u2642]\uFE0F?)?|[\uDD0D\uDD0E\uDD10-\uDD17\uDD20-\uDD25\uDD27-\uDD2F\uDD3A\uDD3F-\uDD45\uDD47-\uDD76\uDD78-\uDDB4\uDDB7\uDDBA\uDDBC-\uDDCC\uDDD0\uDDE0-\uDDFF\uDE70-\uDE7C\uDE80-\uDE89\uDE8F-\uDEC2\uDEC6\uDECE-\uDEDC\uDEDF-\uDEE9]|\uDD3C(?:\u200D[\u2640\u2642]\uFE0F?|\uD83C[\uDFFB-\uDFFF])?|\uDDCE(?:\uD83C[\uDFFB-\uDFFF])?(?:\u200D(?:[\u2640\u2642]\uFE0F?(?:\u200D\u27A1\uFE0F?)?|\u27A1\uFE0F?))?|\uDDD1(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1|\uDDD1\u200D\uD83E\uDDD2(?:\u200D\uD83E\uDDD2)?|\uDDD2(?:\u200D\uD83E\uDDD2)?))|\uD83C(?:\uDFFB(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFC-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFC(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFD-\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFD(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFE(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFD\uDFFF]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?|\uDFFF(?:\u200D(?:[\u2695\u2696\u2708]\uFE0F?|\u2764\uFE0F?\u200D(?:\uD83D\uDC8B\u200D)?\uD83E\uDDD1\uD83C[\uDFFB-\uDFFE]|\uD83C[\uDF3E\uDF73\uDF7C\uDF84\uDF93\uDFA4\uDFA8\uDFEB\uDFED]|\uD83D[\uDCBB\uDCBC\uDD27\uDD2C\uDE80\uDE92]|\uD83E(?:[\uDDAF\uDDBC\uDDBD](?:\u200D\u27A1\uFE0F?)?|[\uDDB0-\uDDB3]|\uDD1D\u200D\uD83E\uDDD1\uD83C[\uDFFB-\uDFFF])))?))?|\uDEF1(?:\uD83C(?:\uDFFB(?:\u200D\uD83E\uDEF2\uD83C[\uDFFC-\uDFFF])?|\uDFFC(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFD-\uDFFF])?|\uDFFD(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB\uDFFC\uDFFE\uDFFF])?|\uDFFE(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFD\uDFFF])?|\uDFFF(?:\u200D\uD83E\uDEF2\uD83C[\uDFFB-\uDFFE])?))?)/g;
1798
1900
  };
1901
+ segmenter = new Intl.Segmenter();
1902
+ defaultIgnorableCodePointRegex = /^\p{Default_Ignorable_Code_Point}$/u;
1799
1903
  TYPE_COLOR_MAP = {
1800
1904
  info: "cyan",
1801
1905
  fail: "red",
@@ -1808,7 +1912,7 @@ var init_consola_36c0034f = __esm({
1808
1912
  1: "yellow"
1809
1913
  };
1810
1914
  unicode2 = isUnicodeSupported();
1811
- s2 = (c2, fallback) => unicode2 ? c2 : fallback;
1915
+ s2 = (c3, fallback) => unicode2 ? c3 : fallback;
1812
1916
  TYPE_ICONS = {
1813
1917
  error: s2("\u2716", "\xD7"),
1814
1918
  fatal: s2("\u2716", "\xD7"),
@@ -1823,10 +1927,13 @@ var init_consola_36c0034f = __esm({
1823
1927
  log: ""
1824
1928
  };
1825
1929
  FancyReporter = class extends BasicReporter {
1826
- formatStack(stack) {
1827
- return "\n" + parseStack(stack).map(
1828
- (line) => " " + line.replace(/^at +/, (m2) => colors.gray(m2)).replace(/\((.+)\)/, (_2, m2) => `(${colors.cyan(m2)})`)
1829
- ).join("\n");
1930
+ formatStack(stack, opts) {
1931
+ const indent = " ".repeat((opts?.errorLevel || 0) + 1);
1932
+ return `
1933
+ ${indent}` + parseStack(stack).map(
1934
+ (line) => " " + line.replace(/^at +/, (m2) => colors.gray(m2)).replace(/\((.+)\)/, (_3, m2) => `(${colors.cyan(m2)})`)
1935
+ ).join(`
1936
+ ${indent}`);
1830
1937
  }
1831
1938
  formatType(logObj, isBadge, opts) {
1832
1939
  const typeColor = TYPE_COLOR_MAP[logObj.type] || LEVEL_COLOR_MAP[logObj.level] || "gray";
@@ -1884,7 +1991,7 @@ import { createHash } from "node:crypto";
1884
1991
  import fsSync from "node:fs";
1885
1992
  import fs from "node:fs/promises";
1886
1993
 
1887
- // ../../node_modules/.pnpm/ohash@1.1.3/node_modules/ohash/dist/index.mjs
1994
+ // ../../node_modules/.pnpm/ohash@1.1.4/node_modules/ohash/dist/index.mjs
1888
1995
  var defaults = Object.freeze({
1889
1996
  ignoreUnknown: false,
1890
1997
  respectType: false,
@@ -2203,14 +2310,22 @@ function createHasher(options) {
2203
2310
  }
2204
2311
  var nativeFunc = "[native code] }";
2205
2312
  var nativeFuncLength = nativeFunc.length;
2206
- function isNativeFunction(f2) {
2207
- if (typeof f2 !== "function") {
2313
+ function isNativeFunction(f) {
2314
+ if (typeof f !== "function") {
2208
2315
  return false;
2209
2316
  }
2210
- return Function.prototype.toString.call(f2).slice(-nativeFuncLength) === nativeFunc;
2317
+ return Function.prototype.toString.call(f).slice(-nativeFuncLength) === nativeFunc;
2211
2318
  }
2319
+ var __defProp$1 = Object.defineProperty;
2320
+ var __defNormalProp$1 = (obj, key, value) => key in obj ? __defProp$1(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2321
+ var __publicField$1 = (obj, key, value) => {
2322
+ __defNormalProp$1(obj, typeof key !== "symbol" ? key + "" : key, value);
2323
+ return value;
2324
+ };
2212
2325
  var WordArray = class _WordArray {
2213
2326
  constructor(words, sigBytes) {
2327
+ __publicField$1(this, "words");
2328
+ __publicField$1(this, "sigBytes");
2214
2329
  words = this.words = words || [];
2215
2330
  this.sigBytes = sigBytes === void 0 ? words.length * 4 : sigBytes;
2216
2331
  }
@@ -2220,13 +2335,13 @@ var WordArray = class _WordArray {
2220
2335
  concat(wordArray) {
2221
2336
  this.clamp();
2222
2337
  if (this.sigBytes % 4) {
2223
- for (let i = 0; i < wordArray.sigBytes; i++) {
2224
- const thatByte = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
2225
- this.words[this.sigBytes + i >>> 2] |= thatByte << 24 - (this.sigBytes + i) % 4 * 8;
2338
+ for (let i2 = 0; i2 < wordArray.sigBytes; i2++) {
2339
+ const thatByte = wordArray.words[i2 >>> 2] >>> 24 - i2 % 4 * 8 & 255;
2340
+ this.words[this.sigBytes + i2 >>> 2] |= thatByte << 24 - (this.sigBytes + i2) % 4 * 8;
2226
2341
  }
2227
2342
  } else {
2228
- for (let j2 = 0; j2 < wordArray.sigBytes; j2 += 4) {
2229
- this.words[this.sigBytes + j2 >>> 2] = wordArray.words[j2 >>> 2];
2343
+ for (let j = 0; j < wordArray.sigBytes; j += 4) {
2344
+ this.words[this.sigBytes + j >>> 2] = wordArray.words[j >>> 2];
2230
2345
  }
2231
2346
  }
2232
2347
  this.sigBytes += wordArray.sigBytes;
@@ -2243,8 +2358,8 @@ var WordArray = class _WordArray {
2243
2358
  var Hex = {
2244
2359
  stringify(wordArray) {
2245
2360
  const hexChars = [];
2246
- for (let i = 0; i < wordArray.sigBytes; i++) {
2247
- const bite = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
2361
+ for (let i2 = 0; i2 < wordArray.sigBytes; i2++) {
2362
+ const bite = wordArray.words[i2 >>> 2] >>> 24 - i2 % 4 * 8 & 255;
2248
2363
  hexChars.push((bite >>> 4).toString(16), (bite & 15).toString(16));
2249
2364
  }
2250
2365
  return hexChars.join("");
@@ -2254,13 +2369,13 @@ var Base64 = {
2254
2369
  stringify(wordArray) {
2255
2370
  const keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
2256
2371
  const base64Chars = [];
2257
- for (let i = 0; i < wordArray.sigBytes; i += 3) {
2258
- const byte1 = wordArray.words[i >>> 2] >>> 24 - i % 4 * 8 & 255;
2259
- const byte2 = wordArray.words[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255;
2260
- const byte3 = wordArray.words[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255;
2372
+ for (let i2 = 0; i2 < wordArray.sigBytes; i2 += 3) {
2373
+ const byte1 = wordArray.words[i2 >>> 2] >>> 24 - i2 % 4 * 8 & 255;
2374
+ const byte2 = wordArray.words[i2 + 1 >>> 2] >>> 24 - (i2 + 1) % 4 * 8 & 255;
2375
+ const byte3 = wordArray.words[i2 + 2 >>> 2] >>> 24 - (i2 + 2) % 4 * 8 & 255;
2261
2376
  const triplet = byte1 << 16 | byte2 << 8 | byte3;
2262
- for (let j2 = 0; j2 < 4 && i * 8 + j2 * 6 < wordArray.sigBytes * 8; j2++) {
2263
- base64Chars.push(keyStr.charAt(triplet >>> 6 * (3 - j2) & 63));
2377
+ for (let j = 0; j < 4 && i2 * 8 + j * 6 < wordArray.sigBytes * 8; j++) {
2378
+ base64Chars.push(keyStr.charAt(triplet >>> 6 * (3 - j) & 63));
2264
2379
  }
2265
2380
  }
2266
2381
  return base64Chars.join("");
@@ -2270,8 +2385,8 @@ var Latin1 = {
2270
2385
  parse(latin1Str) {
2271
2386
  const latin1StrLength = latin1Str.length;
2272
2387
  const words = [];
2273
- for (let i = 0; i < latin1StrLength; i++) {
2274
- words[i >>> 2] |= (latin1Str.charCodeAt(i) & 255) << 24 - i % 4 * 8;
2388
+ for (let i2 = 0; i2 < latin1StrLength; i2++) {
2389
+ words[i2 >>> 2] |= (latin1Str.charCodeAt(i2) & 255) << 24 - i2 % 4 * 8;
2275
2390
  }
2276
2391
  return new WordArray(words, latin1StrLength);
2277
2392
  }
@@ -2283,10 +2398,10 @@ var Utf8 = {
2283
2398
  };
2284
2399
  var BufferedBlockAlgorithm = class {
2285
2400
  constructor() {
2286
- this._data = new WordArray();
2287
- this._nDataBytes = 0;
2288
- this._minBufferSize = 0;
2289
- this.blockSize = 512 / 32;
2401
+ __publicField$1(this, "_data", new WordArray());
2402
+ __publicField$1(this, "_nDataBytes", 0);
2403
+ __publicField$1(this, "_minBufferSize", 0);
2404
+ __publicField$1(this, "blockSize", 512 / 32);
2290
2405
  }
2291
2406
  reset() {
2292
2407
  this._data = new WordArray();
@@ -2299,7 +2414,6 @@ var BufferedBlockAlgorithm = class {
2299
2414
  this._data.concat(data);
2300
2415
  this._nDataBytes += data.sigBytes;
2301
2416
  }
2302
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
2303
2417
  _doProcessBlock(_dataWords, _offset) {
2304
2418
  }
2305
2419
  _process(doFlush) {
@@ -2334,6 +2448,12 @@ var Hasher = class extends BufferedBlockAlgorithm {
2334
2448
  }
2335
2449
  }
2336
2450
  };
2451
+ var __defProp2 = Object.defineProperty;
2452
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp2(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
2453
+ var __publicField = (obj, key, value) => {
2454
+ __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
2455
+ return value;
2456
+ };
2337
2457
  var H = [
2338
2458
  1779033703,
2339
2459
  -1150833019,
@@ -2414,56 +2534,65 @@ var W = [];
2414
2534
  var SHA256 = class extends Hasher {
2415
2535
  constructor() {
2416
2536
  super(...arguments);
2417
- this._hash = new WordArray([...H]);
2537
+ __publicField(this, "_hash", new WordArray([...H]));
2418
2538
  }
2539
+ /**
2540
+ * Resets the internal state of the hash object to initial values.
2541
+ */
2419
2542
  reset() {
2420
2543
  super.reset();
2421
2544
  this._hash = new WordArray([...H]);
2422
2545
  }
2423
- _doProcessBlock(M2, offset) {
2424
- const H22 = this._hash.words;
2425
- let a = H22[0];
2426
- let b2 = H22[1];
2427
- let c2 = H22[2];
2428
- let d = H22[3];
2429
- let e = H22[4];
2430
- let f2 = H22[5];
2431
- let g2 = H22[6];
2432
- let h2 = H22[7];
2433
- for (let i = 0; i < 64; i++) {
2434
- if (i < 16) {
2435
- W[i] = M2[offset + i] | 0;
2546
+ _doProcessBlock(M, offset) {
2547
+ const H2 = this._hash.words;
2548
+ let a2 = H2[0];
2549
+ let b = H2[1];
2550
+ let c3 = H2[2];
2551
+ let d2 = H2[3];
2552
+ let e = H2[4];
2553
+ let f = H2[5];
2554
+ let g2 = H2[6];
2555
+ let h = H2[7];
2556
+ for (let i2 = 0; i2 < 64; i2++) {
2557
+ if (i2 < 16) {
2558
+ W[i2] = M[offset + i2] | 0;
2436
2559
  } else {
2437
- const gamma0x = W[i - 15];
2560
+ const gamma0x = W[i2 - 15];
2438
2561
  const gamma0 = (gamma0x << 25 | gamma0x >>> 7) ^ (gamma0x << 14 | gamma0x >>> 18) ^ gamma0x >>> 3;
2439
- const gamma1x = W[i - 2];
2562
+ const gamma1x = W[i2 - 2];
2440
2563
  const gamma1 = (gamma1x << 15 | gamma1x >>> 17) ^ (gamma1x << 13 | gamma1x >>> 19) ^ gamma1x >>> 10;
2441
- W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16];
2564
+ W[i2] = gamma0 + W[i2 - 7] + gamma1 + W[i2 - 16];
2442
2565
  }
2443
- const ch = e & f2 ^ ~e & g2;
2444
- const maj = a & b2 ^ a & c2 ^ b2 & c2;
2445
- const sigma0 = (a << 30 | a >>> 2) ^ (a << 19 | a >>> 13) ^ (a << 10 | a >>> 22);
2566
+ const ch = e & f ^ ~e & g2;
2567
+ const maj = a2 & b ^ a2 & c3 ^ b & c3;
2568
+ const sigma0 = (a2 << 30 | a2 >>> 2) ^ (a2 << 19 | a2 >>> 13) ^ (a2 << 10 | a2 >>> 22);
2446
2569
  const sigma1 = (e << 26 | e >>> 6) ^ (e << 21 | e >>> 11) ^ (e << 7 | e >>> 25);
2447
- const t1 = h2 + sigma1 + ch + K[i] + W[i];
2570
+ const t1 = h + sigma1 + ch + K[i2] + W[i2];
2448
2571
  const t2 = sigma0 + maj;
2449
- h2 = g2;
2450
- g2 = f2;
2451
- f2 = e;
2452
- e = d + t1 | 0;
2453
- d = c2;
2454
- c2 = b2;
2455
- b2 = a;
2456
- a = t1 + t2 | 0;
2572
+ h = g2;
2573
+ g2 = f;
2574
+ f = e;
2575
+ e = d2 + t1 | 0;
2576
+ d2 = c3;
2577
+ c3 = b;
2578
+ b = a2;
2579
+ a2 = t1 + t2 | 0;
2457
2580
  }
2458
- H22[0] = H22[0] + a | 0;
2459
- H22[1] = H22[1] + b2 | 0;
2460
- H22[2] = H22[2] + c2 | 0;
2461
- H22[3] = H22[3] + d | 0;
2462
- H22[4] = H22[4] + e | 0;
2463
- H22[5] = H22[5] + f2 | 0;
2464
- H22[6] = H22[6] + g2 | 0;
2465
- H22[7] = H22[7] + h2 | 0;
2466
- }
2581
+ H2[0] = H2[0] + a2 | 0;
2582
+ H2[1] = H2[1] + b | 0;
2583
+ H2[2] = H2[2] + c3 | 0;
2584
+ H2[3] = H2[3] + d2 | 0;
2585
+ H2[4] = H2[4] + e | 0;
2586
+ H2[5] = H2[5] + f | 0;
2587
+ H2[6] = H2[6] + g2 | 0;
2588
+ H2[7] = H2[7] + h | 0;
2589
+ }
2590
+ /**
2591
+ * Finishes the hash calculation and returns the hash as a WordArray.
2592
+ *
2593
+ * @param {string} messageUpdate - Additional message content to include in the hash.
2594
+ * @returns {WordArray} The finalised hash as a WordArray.
2595
+ */
2467
2596
  finalize(messageUpdate) {
2468
2597
  super.finalize(messageUpdate);
2469
2598
  const nBitsTotal = this._nDataBytes * 8;
@@ -2489,14 +2618,16 @@ function hash(object, options = {}) {
2489
2618
  // index.ts
2490
2619
  import ezSpawn from "@jsdevtools/ez-spawn";
2491
2620
 
2492
- // ../../node_modules/.pnpm/consola@3.2.3/node_modules/consola/dist/index.mjs
2493
- init_consola_36c0034f();
2621
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/index.mjs
2622
+ init_consola_D4JK3RCK();
2494
2623
  init_core();
2495
- init_consola_06ad8a64();
2496
- init_utils();
2624
+ init_consola_Cs5FdtHD();
2625
+ init_consola_CBi6Nm9s();
2626
+
2627
+ // ../../node_modules/.pnpm/consola@3.3.1/node_modules/consola/dist/utils.mjs
2628
+ init_consola_CBi6Nm9s();
2497
2629
 
2498
2630
  // ../../node_modules/.pnpm/citty@0.1.6/node_modules/citty/dist/index.mjs
2499
- init_utils();
2500
2631
  function toArray(val) {
2501
2632
  if (Array.isArray(val)) {
2502
2633
  return val;
@@ -2506,13 +2637,13 @@ function toArray(val) {
2506
2637
  function formatLineColumns(lines, linePrefix = "") {
2507
2638
  const maxLengh = [];
2508
2639
  for (const line of lines) {
2509
- for (const [i, element] of line.entries()) {
2510
- maxLengh[i] = Math.max(maxLengh[i] || 0, element.length);
2640
+ for (const [i2, element] of line.entries()) {
2641
+ maxLengh[i2] = Math.max(maxLengh[i2] || 0, element.length);
2511
2642
  }
2512
2643
  }
2513
2644
  return lines.map(
2514
- (l2) => l2.map(
2515
- (c2, i) => linePrefix + c2[i === 0 ? "padStart" : "padEnd"](maxLengh[i])
2645
+ (l3) => l3.map(
2646
+ (c3, i2) => linePrefix + c3[i2 === 0 ? "padStart" : "padEnd"](maxLengh[i2])
2516
2647
  ).join(" ")
2517
2648
  ).join("\n");
2518
2649
  }
@@ -2581,32 +2712,32 @@ function lowerFirst(str) {
2581
2712
  return str ? str[0].toLowerCase() + str.slice(1) : "";
2582
2713
  }
2583
2714
  function pascalCase(str, opts) {
2584
- return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p2) => upperFirst(opts?.normalize ? p2.toLowerCase() : p2)).join("") : "";
2715
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p3) => upperFirst(opts?.normalize ? p3.toLowerCase() : p3)).join("") : "";
2585
2716
  }
2586
2717
  function camelCase(str, opts) {
2587
2718
  return lowerFirst(pascalCase(str || "", opts));
2588
2719
  }
2589
2720
  function kebabCase(str, joiner) {
2590
- return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p2) => p2.toLowerCase()).join(joiner ?? "-") : "";
2721
+ return str ? (Array.isArray(str) ? str : splitByCase(str)).map((p3) => p3.toLowerCase()).join(joiner ?? "-") : "";
2591
2722
  }
2592
2723
  function toArr(any) {
2593
2724
  return any == void 0 ? [] : Array.isArray(any) ? any : [any];
2594
2725
  }
2595
2726
  function toVal(out, key, val, opts) {
2596
- let x;
2727
+ let x2;
2597
2728
  const old = out[key];
2598
- const nxt = ~opts.string.indexOf(key) ? val == void 0 || val === true ? "" : String(val) : typeof val === "boolean" ? val : ~opts.boolean.indexOf(key) ? val === "false" ? false : val === "true" || (out._.push((x = +val, x * 0 === 0) ? x : val), !!val) : (x = +val, x * 0 === 0) ? x : val;
2729
+ const nxt = ~opts.string.indexOf(key) ? val == void 0 || val === true ? "" : String(val) : typeof val === "boolean" ? val : ~opts.boolean.indexOf(key) ? val === "false" ? false : val === "true" || (out._.push((x2 = +val, x2 * 0 === 0) ? x2 : val), !!val) : (x2 = +val, x2 * 0 === 0) ? x2 : val;
2599
2730
  out[key] = old == void 0 ? nxt : Array.isArray(old) ? old.concat(nxt) : [old, nxt];
2600
2731
  }
2601
2732
  function parseRawArgs(args = [], opts = {}) {
2602
- let k;
2733
+ let k2;
2603
2734
  let arr;
2604
2735
  let arg;
2605
2736
  let name;
2606
2737
  let val;
2607
2738
  const out = { _: [] };
2608
- let i = 0;
2609
- let j2 = 0;
2739
+ let i2 = 0;
2740
+ let j = 0;
2610
2741
  let idx = 0;
2611
2742
  const len = args.length;
2612
2743
  const alibi = opts.alias !== void 0;
@@ -2616,87 +2747,87 @@ function parseRawArgs(args = [], opts = {}) {
2616
2747
  opts.string = toArr(opts.string);
2617
2748
  opts.boolean = toArr(opts.boolean);
2618
2749
  if (alibi) {
2619
- for (k in opts.alias) {
2620
- arr = opts.alias[k] = toArr(opts.alias[k]);
2621
- for (i = 0; i < arr.length; i++) {
2622
- (opts.alias[arr[i]] = arr.concat(k)).splice(i, 1);
2750
+ for (k2 in opts.alias) {
2751
+ arr = opts.alias[k2] = toArr(opts.alias[k2]);
2752
+ for (i2 = 0; i2 < arr.length; i2++) {
2753
+ (opts.alias[arr[i2]] = arr.concat(k2)).splice(i2, 1);
2623
2754
  }
2624
2755
  }
2625
2756
  }
2626
- for (i = opts.boolean.length; i-- > 0; ) {
2627
- arr = opts.alias[opts.boolean[i]] || [];
2628
- for (j2 = arr.length; j2-- > 0; ) {
2629
- opts.boolean.push(arr[j2]);
2757
+ for (i2 = opts.boolean.length; i2-- > 0; ) {
2758
+ arr = opts.alias[opts.boolean[i2]] || [];
2759
+ for (j = arr.length; j-- > 0; ) {
2760
+ opts.boolean.push(arr[j]);
2630
2761
  }
2631
2762
  }
2632
- for (i = opts.string.length; i-- > 0; ) {
2633
- arr = opts.alias[opts.string[i]] || [];
2634
- for (j2 = arr.length; j2-- > 0; ) {
2635
- opts.string.push(arr[j2]);
2763
+ for (i2 = opts.string.length; i2-- > 0; ) {
2764
+ arr = opts.alias[opts.string[i2]] || [];
2765
+ for (j = arr.length; j-- > 0; ) {
2766
+ opts.string.push(arr[j]);
2636
2767
  }
2637
2768
  }
2638
2769
  if (defaults2) {
2639
- for (k in opts.default) {
2640
- name = typeof opts.default[k];
2641
- arr = opts.alias[k] = opts.alias[k] || [];
2770
+ for (k2 in opts.default) {
2771
+ name = typeof opts.default[k2];
2772
+ arr = opts.alias[k2] = opts.alias[k2] || [];
2642
2773
  if (opts[name] !== void 0) {
2643
- opts[name].push(k);
2644
- for (i = 0; i < arr.length; i++) {
2645
- opts[name].push(arr[i]);
2774
+ opts[name].push(k2);
2775
+ for (i2 = 0; i2 < arr.length; i2++) {
2776
+ opts[name].push(arr[i2]);
2646
2777
  }
2647
2778
  }
2648
2779
  }
2649
2780
  }
2650
2781
  const keys = strict ? Object.keys(opts.alias) : [];
2651
- for (i = 0; i < len; i++) {
2652
- arg = args[i];
2782
+ for (i2 = 0; i2 < len; i2++) {
2783
+ arg = args[i2];
2653
2784
  if (arg === "--") {
2654
- out._ = out._.concat(args.slice(++i));
2785
+ out._ = out._.concat(args.slice(++i2));
2655
2786
  break;
2656
2787
  }
2657
- for (j2 = 0; j2 < arg.length; j2++) {
2658
- if (arg.charCodeAt(j2) !== 45) {
2788
+ for (j = 0; j < arg.length; j++) {
2789
+ if (arg.charCodeAt(j) !== 45) {
2659
2790
  break;
2660
2791
  }
2661
2792
  }
2662
- if (j2 === 0) {
2793
+ if (j === 0) {
2663
2794
  out._.push(arg);
2664
- } else if (arg.substring(j2, j2 + 3) === "no-") {
2665
- name = arg.slice(Math.max(0, j2 + 3));
2795
+ } else if (arg.substring(j, j + 3) === "no-") {
2796
+ name = arg.slice(Math.max(0, j + 3));
2666
2797
  if (strict && !~keys.indexOf(name)) {
2667
2798
  return opts.unknown(arg);
2668
2799
  }
2669
2800
  out[name] = false;
2670
2801
  } else {
2671
- for (idx = j2 + 1; idx < arg.length; idx++) {
2802
+ for (idx = j + 1; idx < arg.length; idx++) {
2672
2803
  if (arg.charCodeAt(idx) === 61) {
2673
2804
  break;
2674
2805
  }
2675
2806
  }
2676
- name = arg.substring(j2, idx);
2677
- val = arg.slice(Math.max(0, ++idx)) || i + 1 === len || ("" + args[i + 1]).charCodeAt(0) === 45 || args[++i];
2678
- arr = j2 === 2 ? [name] : name;
2807
+ name = arg.substring(j, idx);
2808
+ val = arg.slice(Math.max(0, ++idx)) || i2 + 1 === len || ("" + args[i2 + 1]).charCodeAt(0) === 45 || args[++i2];
2809
+ arr = j === 2 ? [name] : name;
2679
2810
  for (idx = 0; idx < arr.length; idx++) {
2680
2811
  name = arr[idx];
2681
2812
  if (strict && !~keys.indexOf(name)) {
2682
- return opts.unknown("-".repeat(j2) + name);
2813
+ return opts.unknown("-".repeat(j) + name);
2683
2814
  }
2684
2815
  toVal(out, name, idx + 1 < arr.length || val, opts);
2685
2816
  }
2686
2817
  }
2687
2818
  }
2688
2819
  if (defaults2) {
2689
- for (k in opts.default) {
2690
- if (out[k] === void 0) {
2691
- out[k] = opts.default[k];
2820
+ for (k2 in opts.default) {
2821
+ if (out[k2] === void 0) {
2822
+ out[k2] = opts.default[k2];
2692
2823
  }
2693
2824
  }
2694
2825
  }
2695
2826
  if (alibi) {
2696
- for (k in out) {
2697
- arr = opts.alias[k] || [];
2827
+ for (k2 in out) {
2828
+ arr = opts.alias[k2] || [];
2698
2829
  while (arr.length > 0) {
2699
- out[arr.shift()] = out[k];
2830
+ out[arr.shift()] = out[k2];
2700
2831
  }
2701
2832
  }
2702
2833
  }
@@ -2860,9 +2991,9 @@ async function renderUsage(cmd, parent) {
2860
2991
  } else {
2861
2992
  const isRequired = arg.required === true && arg.default === void 0;
2862
2993
  const argStr = (arg.type === "boolean" && arg.default === true ? [
2863
- ...(arg.alias || []).map((a) => `--no-${a}`),
2994
+ ...(arg.alias || []).map((a2) => `--no-${a2}`),
2864
2995
  `--no-${arg.name}`
2865
- ].join(", ") : [...(arg.alias || []).map((a) => `-${a}`), `--${arg.name}`].join(
2996
+ ].join(", ") : [...(arg.alias || []).map((a2) => `-${a2}`), `--${arg.name}`].join(
2866
2997
  ", "
2867
2998
  )) + (arg.type === "string" && (arg.valueHint || arg.default) ? `=${arg.valueHint ? `<${arg.valueHint}>` : `"${arg.default || ""}"`}` : "");
2868
2999
  argLines.push([
@@ -2916,7 +3047,7 @@ async function renderUsage(cmd, parent) {
2916
3047
  `Use \`${commandName} <command> --help\` for more information about a command.`
2917
3048
  );
2918
3049
  }
2919
- return usageLines.filter((l2) => typeof l2 === "string").join("\n");
3050
+ return usageLines.filter((l3) => typeof l3 === "string").join("\n");
2920
3051
  }
2921
3052
  async function runMain(cmd, opts = {}) {
2922
3053
  const rawArgs = opts.rawArgs || process.argv.slice(2);
@@ -2976,7 +3107,7 @@ import { writePackageJSON } from "pkg-types";
2976
3107
  // package.json
2977
3108
  var package_default = {
2978
3109
  name: "pkg-pr-new",
2979
- version: "0.0.41",
3110
+ version: "0.0.43",
2980
3111
  description: "",
2981
3112
  main: "index.js",
2982
3113
  type: "module",
@@ -3144,7 +3275,7 @@ var main = defineCommand({
3144
3275
  }
3145
3276
  const isPeerDepsEnabled = !!args.peerDeps;
3146
3277
  const isOnlyTemplates = !!args["only-templates"];
3147
- const isBinaryApplication = !!args.binaryApplication;
3278
+ const isBinaryApplication = !!args.bin;
3148
3279
  const comment = args.comment;
3149
3280
  const selectedPackageManager = args.packageManager;
3150
3281
  if (!["npm", "bun", "pnpm", "yarn"].includes(selectedPackageManager)) {
@@ -3196,8 +3327,8 @@ var main = defineCommand({
3196
3327
  packages: [],
3197
3328
  templates: []
3198
3329
  };
3199
- for (const p2 of paths) {
3200
- const pJsonPath = path.resolve(p2, "package.json");
3330
+ for (const p3 of paths) {
3331
+ const pJsonPath = path.resolve(p3, "package.json");
3201
3332
  const pJson = await readPackageJson(pJsonPath);
3202
3333
  if (!pJson) {
3203
3334
  continue;
@@ -3211,8 +3342,9 @@ var main = defineCommand({
3211
3342
  if (isCompact) {
3212
3343
  await verifyCompactMode(pJson.name);
3213
3344
  }
3345
+ const formattedSha = isCompact ? abbreviateCommitHash(sha) : sha;
3214
3346
  const depUrl = new URL(
3215
- `/${owner}/${repo}/${pJson.name}@${sha}`,
3347
+ `/${owner}/${repo}/${pJson.name}@${formattedSha}`,
3216
3348
  apiUrl
3217
3349
  ).href;
3218
3350
  deps.set(pJson.name, depUrl);
@@ -3220,7 +3352,7 @@ var main = defineCommand({
3220
3352
  const resource = await fetch(depUrl);
3221
3353
  if (resource.ok) {
3222
3354
  console.warn(
3223
- `${pJson.name}@${abbreviateCommitHash(sha)} was already published on ${depUrl}`
3355
+ `${pJson.name}@${formattedSha} was already published on ${depUrl}`
3224
3356
  );
3225
3357
  }
3226
3358
  outputMetadata.packages.push({
@@ -3287,7 +3419,7 @@ var main = defineCommand({
3287
3419
  });
3288
3420
  }
3289
3421
  const noDefaultTemplate = args.template === false;
3290
- if (!noDefaultTemplate) {
3422
+ if (!noDefaultTemplate && templates.length === 0) {
3291
3423
  const project = createDefaultTemplate(
3292
3424
  Object.fromEntries(deps.entries())
3293
3425
  );
@@ -3299,8 +3431,8 @@ var main = defineCommand({
3299
3431
  }
3300
3432
  }
3301
3433
  const restoreMap = /* @__PURE__ */ new Map();
3302
- for (const p2 of paths) {
3303
- const pJsonPath = path.resolve(p2, "package.json");
3434
+ for (const p3 of paths) {
3435
+ const pJsonPath = path.resolve(p3, "package.json");
3304
3436
  const pJsonContents = await tryReadFile(pJsonPath);
3305
3437
  const pJson = pJsonContents ? parsePackageJson(pJsonContents) : null;
3306
3438
  if (!pJson || !pJsonContents) {
@@ -3310,17 +3442,17 @@ var main = defineCommand({
3310
3442
  continue;
3311
3443
  }
3312
3444
  restoreMap.set(
3313
- p2,
3314
- await writeDeps(p2, pJsonContents, pJson, deps, realDeps)
3445
+ p3,
3446
+ await writeDeps(p3, pJsonContents, pJson, deps, realDeps)
3315
3447
  );
3316
3448
  }
3317
3449
  const shasums = {};
3318
- for (const p2 of paths) {
3319
- const pJsonPath = path.resolve(p2, "package.json");
3450
+ for (const p3 of paths) {
3451
+ const pJsonPath = path.resolve(p3, "package.json");
3320
3452
  const pJson = await readPackageJson(pJsonPath);
3321
3453
  if (!pJson) {
3322
3454
  console.warn(
3323
- `skipping ${p2} because there's no package.json file`
3455
+ `skipping ${p3} because there's no package.json file`
3324
3456
  );
3325
3457
  continue;
3326
3458
  }
@@ -3331,20 +3463,20 @@ var main = defineCommand({
3331
3463
  );
3332
3464
  }
3333
3465
  if (pJson.private) {
3334
- console.warn(`skipping ${p2} because the package is private`);
3466
+ console.warn(`skipping ${p3} because the package is private`);
3335
3467
  continue;
3336
3468
  }
3337
3469
  const { filename, shasum } = await resolveTarball(
3338
3470
  packMethod,
3339
- p2,
3471
+ p3,
3340
3472
  pJson
3341
3473
  );
3342
3474
  shasums[pJson.name] = shasum;
3343
3475
  const outputPkg = outputMetadata.packages.find(
3344
- (p3) => p3.name === pJson.name
3476
+ (p4) => p4.name === pJson.name
3345
3477
  );
3346
3478
  outputPkg.shasum = shasum;
3347
- const filePath = path.resolve(p2, filename);
3479
+ const filePath = path.resolve(p3, filename);
3348
3480
  const buffer = await fs.readFile(filePath);
3349
3481
  const blob = new Blob([buffer], {
3350
3482
  type: "application/octet-stream"
@@ -3352,11 +3484,11 @@ var main = defineCommand({
3352
3484
  formData.append(`package:${pJson.name}`, blob, filename);
3353
3485
  await fs.rm(filePath);
3354
3486
  } finally {
3355
- await restoreMap.get(p2)?.();
3487
+ await restoreMap.get(p3)?.();
3356
3488
  }
3357
3489
  }
3358
3490
  const formDataPackagesSize = [...formData.entries()].reduce(
3359
- (prev, [_2, entry]) => prev + getFormEntrySize(entry),
3491
+ (prev, [_3, entry]) => prev + getFormEntrySize(entry),
3360
3492
  0
3361
3493
  );
3362
3494
  if (formDataPackagesSize > 1024 * 1024 * 99) {
@@ -3381,8 +3513,8 @@ var main = defineCommand({
3381
3513
  }
3382
3514
  const { key: uploadKey, id: uploadId } = await createMultipartRes.json();
3383
3515
  const uploadedParts = [];
3384
- for (let i = 0; i < totalChunks; i++) {
3385
- const start = i * chunkSize;
3516
+ for (let i2 = 0; i2 < totalChunks; i2++) {
3517
+ const start = i2 * chunkSize;
3386
3518
  const end = Math.min(file.size, start + chunkSize);
3387
3519
  const chunk = file.slice(start, end);
3388
3520
  const uploadMultipartRes = await fetch(uploadMultipart, {
@@ -3390,13 +3522,13 @@ var main = defineCommand({
3390
3522
  headers: {
3391
3523
  key: uploadKey,
3392
3524
  id: uploadId,
3393
- "part-number": `${i + 1}`
3525
+ "part-number": `${i2 + 1}`
3394
3526
  },
3395
3527
  body: chunk
3396
3528
  });
3397
3529
  if (!uploadMultipartRes.ok) {
3398
3530
  console.error(
3399
- `Error uploading part ${i + 1}: ${await uploadMultipartRes.text()}`
3531
+ `Error uploading part ${i2 + 1}: ${await uploadMultipartRes.text()}`
3400
3532
  );
3401
3533
  break;
3402
3534
  }
@@ -3444,9 +3576,9 @@ var main = defineCommand({
3444
3576
  );
3445
3577
  console.warn("\n");
3446
3578
  console.warn("\u26A1\uFE0F Your npm packages are published.\n");
3447
- const packageLogs = [...formData.keys()].filter((k) => k.startsWith("package:")).map((name, i) => {
3579
+ const packageLogs = [...formData.keys()].filter((k2) => k2.startsWith("package:")).map((name, i2) => {
3448
3580
  const packageName = name.slice("package:".length);
3449
- const url = new URL(laterRes.urls[i]);
3581
+ const url = new URL(laterRes.urls[i2]);
3450
3582
  const publintUrl = new URL(
3451
3583
  `/pkg.pr.new${url.pathname}`,
3452
3584
  "https://publint.dev"
@@ -3478,7 +3610,7 @@ var main = defineCommand({
3478
3610
  }
3479
3611
  });
3480
3612
  runMain(main).then(() => process.exit(0)).catch(() => process.exit(1));
3481
- async function resolveTarball(pm, p2, pJson) {
3613
+ async function resolveTarball(pm, p3, pJson) {
3482
3614
  let cmd = `${pm} pack`;
3483
3615
  let filename = `${pJson.name.replace("/", "-")}-${pJson.version}.tgz`;
3484
3616
  if (pm === "yarn") {
@@ -3486,17 +3618,17 @@ async function resolveTarball(pm, p2, pJson) {
3486
3618
  }
3487
3619
  const { stdout: stdout2 } = await ezSpawn.async(cmd, {
3488
3620
  stdio: "overlapped",
3489
- cwd: p2
3621
+ cwd: p3
3490
3622
  });
3491
3623
  const lines = stdout2.split("\n").filter(Boolean);
3492
3624
  if (pm !== "yarn") {
3493
3625
  filename = lines[lines.length - 1].trim();
3494
3626
  }
3495
- const shasum = createHash("sha1").update(await fs.readFile(path.resolve(p2, filename))).digest("hex");
3627
+ const shasum = createHash("sha1").update(await fs.readFile(path.resolve(p3, filename))).digest("hex");
3496
3628
  return { filename, shasum };
3497
3629
  }
3498
- async function writeDeps(p2, pJsonContents, pJson, deps, realDeps) {
3499
- const pJsonPath = path.resolve(p2, "package.json");
3630
+ async function writeDeps(p3, pJsonContents, pJson, deps, realDeps) {
3631
+ const pJsonPath = path.resolve(p3, "package.json");
3500
3632
  hijackDeps(deps, pJson.dependencies);
3501
3633
  hijackDeps(deps, pJson.devDependencies);
3502
3634
  hijackDeps(deps, pJson.optionalDependencies);
@@ -3549,15 +3681,15 @@ ${instruction}`
3549
3681
  );
3550
3682
  }
3551
3683
  }
3552
- async function tryReadFile(p2) {
3684
+ async function tryReadFile(p3) {
3553
3685
  try {
3554
- return await fs.readFile(p2, "utf8");
3686
+ return await fs.readFile(p3, "utf8");
3555
3687
  } catch {
3556
3688
  return null;
3557
3689
  }
3558
3690
  }
3559
- async function readPackageJson(p2) {
3560
- const contents = await tryReadFile(p2);
3691
+ async function readPackageJson(p3) {
3692
+ const contents = await tryReadFile(p3);
3561
3693
  if (contents === null) {
3562
3694
  return null;
3563
3695
  }
@@ -3574,4 +3706,4 @@ function parsePackageJson(contents) {
3574
3706
  return null;
3575
3707
  }
3576
3708
  }
3577
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLjA2YWQ4YTY0Lm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3V0aWxzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjIuMy9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMi4zL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuMzZjMDAzNGYubWpzIiwgIi4uL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9vaGFzaEAxLjEuMy9ub2RlX21vZHVsZXMvb2hhc2gvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4yLjMvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NpdHR5QDAuMS42L25vZGVfbW9kdWxlcy9jaXR0eS9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSAhPT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzT2JqZWN0KGRlZmF1bHRzKSkge1xuICAgIHJldHVybiBfZGVmdShiYXNlT2JqZWN0LCB7fSwgbmFtZXNwYWNlLCBtZXJnZXIpO1xuICB9XG4gIGNvbnN0IG9iamVjdCA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRzKTtcbiAgZm9yIChjb25zdCBrZXkgaW4gYmFzZU9iamVjdCkge1xuICAgIGlmIChrZXkgPT09IFwiX19wcm90b19fXCIgfHwga2V5ID09PSBcImNvbnN0cnVjdG9yXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB2YWx1ZSA9IGJhc2VPYmplY3Rba2V5XTtcbiAgICBpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHZvaWQgMCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChtZXJnZXIgJiYgbWVyZ2VyKG9iamVjdCwga2V5LCB2YWx1ZSwgbmFtZXNwYWNlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KG9iamVjdFtrZXldKSkge1xuICAgICAgb2JqZWN0W2tleV0gPSBbLi4udmFsdWUsIC4uLm9iamVjdFtrZXldXTtcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KHZhbHVlKSAmJiBpc09iamVjdChvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIGNvbnN0cnVjdG9yKG9wdGlvbnMgPSB7fSkge1xuICAgIGNvbnN0IHR5cGVzID0gb3B0aW9ucy50eXBlcyB8fCBMb2dUeXBlcztcbiAgICB0aGlzLm9wdGlvbnMgPSBkZWZ1KFxuICAgICAge1xuICAgICAgICAuLi5vcHRpb25zLFxuICAgICAgICBkZWZhdWx0czogeyAuLi5vcHRpb25zLmRlZmF1bHRzIH0sXG4gICAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwob3B0aW9ucy5sZXZlbCwgdHlwZXMpLFxuICAgICAgICByZXBvcnRlcnM6IFsuLi5vcHRpb25zLnJlcG9ydGVycyB8fCBbXV1cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHR5cGVzOiBMb2dUeXBlcyxcbiAgICAgICAgdGhyb3R0bGU6IDFlMyxcbiAgICAgICAgdGhyb3R0bGVNaW46IDUsXG4gICAgICAgIGZvcm1hdE9wdGlvbnM6IHtcbiAgICAgICAgICBkYXRlOiB0cnVlLFxuICAgICAgICAgIGNvbG9yczogZmFsc2UsXG4gICAgICAgICAgY29tcGFjdDogdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdHlwZXMpIHtcbiAgICAgIGNvbnN0IGRlZmF1bHRzID0ge1xuICAgICAgICB0eXBlLFxuICAgICAgICAuLi50aGlzLm9wdGlvbnMuZGVmYXVsdHMsXG4gICAgICAgIC4uLnR5cGVzW3R5cGVdXG4gICAgICB9O1xuICAgICAgdGhpc1t0eXBlXSA9IHRoaXMuX3dyYXBMb2dGbihkZWZhdWx0cyk7XG4gICAgICB0aGlzW3R5cGVdLnJhdyA9IHRoaXMuX3dyYXBMb2dGbihcbiAgICAgICAgZGVmYXVsdHMsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMubW9ja0ZuKSB7XG4gICAgICB0aGlzLm1vY2tUeXBlcygpO1xuICAgIH1cbiAgICB0aGlzLl9sYXN0TG9nID0ge307XG4gIH1cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgc2V0IGxldmVsKGxldmVsKSB7XG4gICAgdGhpcy5vcHRpb25zLmxldmVsID0gX25vcm1hbGl6ZUxvZ0xldmVsKFxuICAgICAgbGV2ZWwsXG4gICAgICB0aGlzLm9wdGlvbnMudHlwZXMsXG4gICAgICB0aGlzLm9wdGlvbnMubGV2ZWxcbiAgICApO1xuICB9XG4gIHByb21wdChtZXNzYWdlLCBvcHRzKSB7XG4gICAgaWYgKCF0aGlzLm9wdGlvbnMucHJvbXB0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJwcm9tcHQgaXMgbm90IHN1cHBvcnRlZCFcIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucHJvbXB0KG1lc3NhZ2UsIG9wdHMpO1xuICB9XG4gIGNyZWF0ZShvcHRpb25zKSB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBuZXcgQ29uc29sYSh7XG4gICAgICAuLi50aGlzLm9wdGlvbnMsXG4gICAgICAuLi5vcHRpb25zXG4gICAgfSk7XG4gICAgaWYgKHRoaXMuX21vY2tGbikge1xuICAgICAgaW5zdGFuY2UubW9ja1R5cGVzKHRoaXMuX21vY2tGbik7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfVxuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIGFkZFJlcG9ydGVyKHJlcG9ydGVyKSB7XG4gICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5wdXNoKHJlcG9ydGVyKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSA+PSAwKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcHRpb25zLnJlcG9ydGVycy5zcGxpY2UoMCk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHNldFJlcG9ydGVycyhyZXBvcnRlcnMpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzID0gQXJyYXkuaXNBcnJheShyZXBvcnRlcnMpID8gcmVwb3J0ZXJzIDogW3JlcG9ydGVyc107XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgd3JhcEFsbCgpIHtcbiAgICB0aGlzLndyYXBDb25zb2xlKCk7XG4gICAgdGhpcy53cmFwU3RkKCk7XG4gIH1cbiAgcmVzdG9yZUFsbCgpIHtcbiAgICB0aGlzLnJlc3RvcmVDb25zb2xlKCk7XG4gICAgdGhpcy5yZXN0b3JlU3RkKCk7XG4gIH1cbiAgd3JhcENvbnNvbGUoKSB7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHRoaXMub3B0aW9ucy50eXBlcykge1xuICAgICAgaWYgKCFjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbXCJfX1wiICsgdHlwZV0gPSBjb25zb2xlW3R5cGVdO1xuICAgICAgfVxuICAgICAgY29uc29sZVt0eXBlXSA9IHRoaXNbdHlwZV0ucmF3O1xuICAgIH1cbiAgfVxuICByZXN0b3JlQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoY29uc29sZVtcIl9fXCIgKyB0eXBlXSkge1xuICAgICAgICBjb25zb2xlW3R5cGVdID0gY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgICAgZGVsZXRlIGNvbnNvbGVbXCJfX1wiICsgdHlwZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHdyYXBTdGQoKSB7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3Rkb3V0LCBcImxvZ1wiKTtcbiAgICB0aGlzLl93cmFwU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRlcnIsIFwibG9nXCIpO1xuICB9XG4gIF93cmFwU3RyZWFtKHN0cmVhbSwgdHlwZSkge1xuICAgIGlmICghc3RyZWFtKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICghc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS5fX3dyaXRlID0gc3RyZWFtLndyaXRlO1xuICAgIH1cbiAgICBzdHJlYW0ud3JpdGUgPSAoZGF0YSkgPT4ge1xuICAgICAgdGhpc1t0eXBlXS5yYXcoU3RyaW5nKGRhdGEpLnRyaW0oKSk7XG4gICAgfTtcbiAgfVxuICByZXN0b3JlU3RkKCkge1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCk7XG4gICAgdGhpcy5fcmVzdG9yZVN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyKTtcbiAgfVxuICBfcmVzdG9yZVN0cmVhbShzdHJlYW0pIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc3RyZWFtLl9fd3JpdGUpIHtcbiAgICAgIHN0cmVhbS53cml0ZSA9IHN0cmVhbS5fX3dyaXRlO1xuICAgICAgZGVsZXRlIHN0cmVhbS5fX3dyaXRlO1xuICAgIH1cbiAgfVxuICBwYXVzZUxvZ3MoKSB7XG4gICAgcGF1c2VkID0gdHJ1ZTtcbiAgfVxuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgcmV0dXJuIFwiICBcIiArIHBhcnNlU3RhY2soc3RhY2spLmpvaW4oXCJcXG4gIFwiKTtcbiAgfVxuICBmb3JtYXRBcmdzKGFyZ3MsIG9wdHMpIHtcbiAgICBjb25zdCBfYXJncyA9IGFyZ3MubWFwKChhcmcpID0+IHtcbiAgICAgIGlmIChhcmcgJiYgdHlwZW9mIGFyZy5zdGFjayA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICByZXR1cm4gYXJnLm1lc3NhZ2UgKyBcIlxcblwiICsgdGhpcy5mb3JtYXRTdGFjayhhcmcuc3RhY2ssIG9wdHMpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGFyZztcbiAgICB9KTtcbiAgICByZXR1cm4gZm9ybWF0V2l0aE9wdGlvbnMob3B0cywgLi4uX2FyZ3MpO1xuICB9XG4gIGZvcm1hdERhdGUoZGF0ZSwgb3B0cykge1xuICAgIHJldHVybiBvcHRzLmRhdGUgPyBkYXRlLnRvTG9jYWxlVGltZVN0cmluZygpIDogXCJcIjtcbiAgfVxuICBmaWx0ZXJBbmRKb2luKGFycikge1xuICAgIHJldHVybiBhcnIuZmlsdGVyKEJvb2xlYW4pLmpvaW4oXCIgXCIpO1xuICB9XG4gIGZvcm1hdExvZ09iaihsb2dPYmosIG9wdHMpIHtcbiAgICBjb25zdCBtZXNzYWdlID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKTtcbiAgICBpZiAobG9nT2JqLnR5cGUgPT09IFwiYm94XCIpIHtcbiAgICAgIHJldHVybiBcIlxcblwiICsgW1xuICAgICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgICBsb2dPYmoudGl0bGUgJiYgbG9nT2JqLnRpdGxlLFxuICAgICAgICAuLi5tZXNzYWdlLnNwbGl0KFwiXFxuXCIpXG4gICAgICBdLmZpbHRlcihCb29sZWFuKS5tYXAoKGwpID0+IFwiID4gXCIgKyBsKS5qb2luKFwiXFxuXCIpICsgXCJcXG5cIjtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuZmlsdGVyQW5kSm9pbihbXG4gICAgICBicmFja2V0KGxvZ09iai50eXBlKSxcbiAgICAgIGJyYWNrZXQobG9nT2JqLnRhZyksXG4gICAgICBtZXNzYWdlXG4gICAgXSk7XG4gIH1cbiAgbG9nKGxvZ09iaiwgY3R4KSB7XG4gICAgY29uc3QgbGluZSA9IHRoaXMuZm9ybWF0TG9nT2JqKGxvZ09iaiwge1xuICAgICAgY29sdW1uczogY3R4Lm9wdGlvbnMuc3Rkb3V0LmNvbHVtbnMgfHwgMCxcbiAgICAgIC4uLmN0eC5vcHRpb25zLmZvcm1hdE9wdGlvbnNcbiAgICB9KTtcbiAgICByZXR1cm4gd3JpdGVTdHJlYW0oXG4gICAgICBsaW5lICsgXCJcXG5cIixcbiAgICAgIGxvZ09iai5sZXZlbCA8IDIgPyBjdHgub3B0aW9ucy5zdGRlcnIgfHwgcHJvY2Vzcy5zdGRlcnIgOiBjdHgub3B0aW9ucy5zdGRvdXQgfHwgcHJvY2Vzcy5zdGRvdXRcbiAgICApO1xuICB9XG59XG5cbmV4cG9ydCB7IEJhc2ljUmVwb3J0ZXIgYXMgQiwgcGFyc2VTdGFjayBhcyBwIH07XG4iLCAiaW1wb3J0ICogYXMgdHR5IGZyb20gJ25vZGU6dHR5JztcblxuY29uc3Qge1xuICBlbnYgPSB7fSxcbiAgYXJndiA9IFtdLFxuICBwbGF0Zm9ybSA9IFwiXCJcbn0gPSB0eXBlb2YgcHJvY2VzcyA9PT0gXCJ1bmRlZmluZWRcIiA/IHt9IDogcHJvY2VzcztcbmNvbnN0IGlzRGlzYWJsZWQgPSBcIk5PX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLW5vLWNvbG9yXCIpO1xuY29uc3QgaXNGb3JjZWQgPSBcIkZPUkNFX0NPTE9SXCIgaW4gZW52IHx8IGFyZ3YuaW5jbHVkZXMoXCItLWNvbG9yXCIpO1xuY29uc3QgaXNXaW5kb3dzID0gcGxhdGZvcm0gPT09IFwid2luMzJcIjtcbmNvbnN0IGlzRHVtYlRlcm1pbmFsID0gZW52LlRFUk0gPT09IFwiZHVtYlwiO1xuY29uc3QgaXNDb21wYXRpYmxlVGVybWluYWwgPSB0dHkgJiYgdHR5LmlzYXR0eSAmJiB0dHkuaXNhdHR5KDEpICYmIGVudi5URVJNICYmICFpc0R1bWJUZXJtaW5hbDtcbmNvbnN0IGlzQ0kgPSBcIkNJXCIgaW4gZW52ICYmIChcIkdJVEhVQl9BQ1RJT05TXCIgaW4gZW52IHx8IFwiR0lUTEFCX0NJXCIgaW4gZW52IHx8IFwiQ0lSQ0xFQ0lcIiBpbiBlbnYpO1xuY29uc3QgaXNDb2xvclN1cHBvcnRlZCA9ICFpc0Rpc2FibGVkICYmIChpc0ZvcmNlZCB8fCBpc1dpbmRvd3MgJiYgIWlzRHVtYlRlcm1pbmFsIHx8IGlzQ29tcGF0aWJsZVRlcm1pbmFsIHx8IGlzQ0kpO1xuZnVuY3Rpb24gcmVwbGFjZUNsb3NlKGluZGV4LCBzdHJpbmcsIGNsb3NlLCByZXBsYWNlLCBoZWFkID0gc3RyaW5nLnNsaWNlKDAsIE1hdGgubWF4KDAsIGluZGV4KSkgKyByZXBsYWNlLCB0YWlsID0gc3RyaW5nLnNsaWNlKE1hdGgubWF4KDAsIGluZGV4ICsgY2xvc2UubGVuZ3RoKSksIG5leHQgPSB0YWlsLmluZGV4T2YoY2xvc2UpKSB7XG4gIHJldHVybiBoZWFkICsgKG5leHQgPCAwID8gdGFpbCA6IHJlcGxhY2VDbG9zZShuZXh0LCB0YWlsLCBjbG9zZSwgcmVwbGFjZSkpO1xufVxuZnVuY3Rpb24gY2xlYXJCbGVlZChpbmRleCwgc3RyaW5nLCBvcGVuLCBjbG9zZSwgcmVwbGFjZSkge1xuICByZXR1cm4gaW5kZXggPCAwID8gb3BlbiArIHN0cmluZyArIGNsb3NlIDogb3BlbiArIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSkgKyBjbG9zZTtcbn1cbmZ1bmN0aW9uIGZpbHRlckVtcHR5KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbiwgYXQgPSBvcGVuLmxlbmd0aCArIDEpIHtcbiAgcmV0dXJuIChzdHJpbmcpID0+IHN0cmluZyB8fCAhKHN0cmluZyA9PT0gXCJcIiB8fCBzdHJpbmcgPT09IHZvaWQgMCkgPyBjbGVhckJsZWVkKFxuICAgIChcIlwiICsgc3RyaW5nKS5pbmRleE9mKGNsb3NlLCBhdCksXG4gICAgc3RyaW5nLFxuICAgIG9wZW4sXG4gICAgY2xvc2UsXG4gICAgcmVwbGFjZVxuICApIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGluaXQob3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGZpbHRlckVtcHR5KGBcXHgxQlske29wZW59bWAsIGBcXHgxQlske2Nsb3NlfW1gLCByZXBsYWNlKTtcbn1cbmNvbnN0IGNvbG9yRGVmcyA9IHtcbiAgcmVzZXQ6IGluaXQoMCwgMCksXG4gIGJvbGQ6IGluaXQoMSwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMW1cIiksXG4gIGRpbTogaW5pdCgyLCAyMiwgXCJcXHgxQlsyMm1cXHgxQlsybVwiKSxcbiAgaXRhbGljOiBpbml0KDMsIDIzKSxcbiAgdW5kZXJsaW5lOiBpbml0KDQsIDI0KSxcbiAgaW52ZXJzZTogaW5pdCg3LCAyNyksXG4gIGhpZGRlbjogaW5pdCg4LCAyOCksXG4gIHN0cmlrZXRocm91Z2g6IGluaXQoOSwgMjkpLFxuICBibGFjazogaW5pdCgzMCwgMzkpLFxuICByZWQ6IGluaXQoMzEsIDM5KSxcbiAgZ3JlZW46IGluaXQoMzIsIDM5KSxcbiAgeWVsbG93OiBpbml0KDMzLCAzOSksXG4gIGJsdWU6IGluaXQoMzQsIDM5KSxcbiAgbWFnZW50YTogaW5pdCgzNSwgMzkpLFxuICBjeWFuOiBpbml0KDM2LCAzOSksXG4gIHdoaXRlOiBpbml0KDM3LCAzOSksXG4gIGdyYXk6IGluaXQoOTAsIDM5KSxcbiAgYmdCbGFjazogaW5pdCg0MCwgNDkpLFxuICBiZ1JlZDogaW5pdCg0MSwgNDkpLFxuICBiZ0dyZWVuOiBpbml0KDQyLCA0OSksXG4gIGJnWWVsbG93OiBpbml0KDQzLCA0OSksXG4gIGJnQmx1ZTogaW5pdCg0NCwgNDkpLFxuICBiZ01hZ2VudGE6IGluaXQoNDUsIDQ5KSxcbiAgYmdDeWFuOiBpbml0KDQ2LCA0OSksXG4gIGJnV2hpdGU6IGluaXQoNDcsIDQ5KSxcbiAgYmxhY2tCcmlnaHQ6IGluaXQoOTAsIDM5KSxcbiAgcmVkQnJpZ2h0OiBpbml0KDkxLCAzOSksXG4gIGdyZWVuQnJpZ2h0OiBpbml0KDkyLCAzOSksXG4gIHllbGxvd0JyaWdodDogaW5pdCg5MywgMzkpLFxuICBibHVlQnJpZ2h0OiBpbml0KDk0LCAzOSksXG4gIG1hZ2VudGFCcmlnaHQ6IGluaXQoOTUsIDM5KSxcbiAgY3lhbkJyaWdodDogaW5pdCg5NiwgMzkpLFxuICB3aGl0ZUJyaWdodDogaW5pdCg5NywgMzkpLFxuICBiZ0JsYWNrQnJpZ2h0OiBpbml0KDEwMCwgNDkpLFxuICBiZ1JlZEJyaWdodDogaW5pdCgxMDEsIDQ5KSxcbiAgYmdHcmVlbkJyaWdodDogaW5pdCgxMDIsIDQ5KSxcbiAgYmdZZWxsb3dCcmlnaHQ6IGluaXQoMTAzLCA0OSksXG4gIGJnQmx1ZUJyaWdodDogaW5pdCgxMDQsIDQ5KSxcbiAgYmdNYWdlbnRhQnJpZ2h0OiBpbml0KDEwNSwgNDkpLFxuICBiZ0N5YW5CcmlnaHQ6IGluaXQoMTA2LCA0OSksXG4gIGJnV2hpdGVCcmlnaHQ6IGluaXQoMTA3LCA0OSlcbn07XG5mdW5jdGlvbiBjcmVhdGVDb2xvcnModXNlQ29sb3IgPSBpc0NvbG9yU3VwcG9ydGVkKSB7XG4gIHJldHVybiB1c2VDb2xvciA/IGNvbG9yRGVmcyA6IE9iamVjdC5mcm9tRW50cmllcyhPYmplY3Qua2V5cyhjb2xvckRlZnMpLm1hcCgoa2V5KSA9PiBba2V5LCBTdHJpbmddKSk7XG59XG5jb25zdCBjb2xvcnMgPSBjcmVhdGVDb2xvcnMoKTtcbmZ1bmN0aW9uIGdldENvbG9yKGNvbG9yLCBmYWxsYmFjayA9IFwicmVzZXRcIikge1xuICByZXR1cm4gY29sb3JzW2NvbG9yXSB8fCBjb2xvcnNbZmFsbGJhY2tdO1xufVxuZnVuY3Rpb24gY29sb3JpemUoY29sb3IsIHRleHQpIHtcbiAgcmV0dXJuIGdldENvbG9yKGNvbG9yKSh0ZXh0KTtcbn1cblxuY29uc3QgYW5zaVJlZ2V4ID0gW1xuICBcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNylcIixcbiAgXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKVwiXG5dLmpvaW4oXCJ8XCIpO1xuZnVuY3Rpb24gc3RyaXBBbnNpKHRleHQpIHtcbiAgcmV0dXJuIHRleHQucmVwbGFjZShuZXcgUmVnRXhwKGFuc2lSZWdleCwgXCJnXCIpLCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBjb25zdCBmcmVlTGVmdCA9IE1hdGguZmxvb3IoZnJlZSAvIDIpO1xuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlTGVmdCB8fCBpID49IGZyZWVMZWZ0ICsgc3RyLmxlbmd0aCA/IHNwYWNlIDogc3RyW2kgLSBmcmVlTGVmdF07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGNvbnN0IGZyZWUgPSBsZW4gLSBzdHIubGVuZ3RoO1xuICBpZiAoZnJlZSA8PSAwKSB7XG4gICAgcmV0dXJuIHN0cjtcbiAgfVxuICBsZXQgX3N0ciA9IFwiXCI7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICBfc3RyICs9IGkgPCBmcmVlID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVdO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSA9IFwiIFwiKSB7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IHN0ci5sZW5ndGggPyBzdHJbaV0gOiBzcGFjZTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIGFsaWduKGFsaWdubWVudCwgc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgc3dpdGNoIChhbGlnbm1lbnQpIHtcbiAgICBjYXNlIFwibGVmdFwiOiB7XG4gICAgICByZXR1cm4gbGVmdEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJyaWdodFwiOiB7XG4gICAgICByZXR1cm4gcmlnaHRBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBjYXNlIFwiY2VudGVyXCI6IHtcbiAgICAgIHJldHVybiBjZW50ZXJBbGlnbihzdHIsIGxlbiwgc3BhY2UpO1xuICAgIH1cbiAgICBkZWZhdWx0OiB7XG4gICAgICByZXR1cm4gc3RyO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBib3hTdHlsZVByZXNldHMgPSB7XG4gIHNvbGlkOiB7XG4gICAgdGw6IFwiXFx1MjUwQ1wiLFxuICAgIHRyOiBcIlxcdTI1MTBcIixcbiAgICBibDogXCJcXHUyNTE0XCIsXG4gICAgYnI6IFwiXFx1MjUxOFwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIGRvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTRcIixcbiAgICB0cjogXCJcXHUyNTU3XCIsXG4gICAgYmw6IFwiXFx1MjU1QVwiLFxuICAgIGJyOiBcIlxcdTI1NURcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGU6IHtcbiAgICB0bDogXCJcXHUyNTUzXCIsXG4gICAgdHI6IFwiXFx1MjU1NlwiLFxuICAgIGJsOiBcIlxcdTI1NTlcIixcbiAgICBicjogXCJcXHUyNTVDXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTUxXCJcbiAgfSxcbiAgZG91YmxlU2luZ2xlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBzaW5nbGVUaGljazoge1xuICAgIHRsOiBcIlxcdTI1MEZcIixcbiAgICB0cjogXCJcXHUyNTEzXCIsXG4gICAgYmw6IFwiXFx1MjUxN1wiLFxuICAgIGJyOiBcIlxcdTI1MUJcIixcbiAgICBoOiBcIlxcdTI1MDFcIixcbiAgICB2OiBcIlxcdTI1MDNcIlxuICB9LFxuICBzaW5nbGVEb3VibGU6IHtcbiAgICB0bDogXCJcXHUyNTUyXCIsXG4gICAgdHI6IFwiXFx1MjU1NVwiLFxuICAgIGJsOiBcIlxcdTI1NThcIixcbiAgICBicjogXCJcXHUyNTVCXCIsXG4gICAgaDogXCJcXHUyNTUwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgc2luZ2xlRG91YmxlUm91bmRlZDoge1xuICAgIHRsOiBcIlxcdTI1NkRcIixcbiAgICB0cjogXCJcXHUyNTZFXCIsXG4gICAgYmw6IFwiXFx1MjU3MFwiLFxuICAgIGJyOiBcIlxcdTI1NkZcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICByb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH1cbn07XG5jb25zdCBkZWZhdWx0U3R5bGUgPSB7XG4gIGJvcmRlckNvbG9yOiBcIndoaXRlXCIsXG4gIGJvcmRlclN0eWxlOiBcInJvdW5kZWRcIixcbiAgdmFsaWduOiBcImNlbnRlclwiLFxuICBwYWRkaW5nOiAyLFxuICBtYXJnaW5MZWZ0OiAxLFxuICBtYXJnaW5Ub3A6IDEsXG4gIG1hcmdpbkJvdHRvbTogMVxufTtcbmZ1bmN0aW9uIGJveCh0ZXh0LCBfb3B0cyA9IHt9KSB7XG4gIGNvbnN0IG9wdHMgPSB7XG4gICAgLi4uX29wdHMsXG4gICAgc3R5bGU6IHtcbiAgICAgIC4uLmRlZmF1bHRTdHlsZSxcbiAgICAgIC4uLl9vcHRzLnN0eWxlXG4gICAgfVxuICB9O1xuICBjb25zdCB0ZXh0TGluZXMgPSB0ZXh0LnNwbGl0KFwiXFxuXCIpO1xuICBjb25zdCBib3hMaW5lcyA9IFtdO1xuICBjb25zdCBfY29sb3IgPSBnZXRDb2xvcihvcHRzLnN0eWxlLmJvcmRlckNvbG9yKTtcbiAgY29uc3QgYm9yZGVyU3R5bGUgPSB7XG4gICAgLi4udHlwZW9mIG9wdHMuc3R5bGUuYm9yZGVyU3R5bGUgPT09IFwic3RyaW5nXCIgPyBib3hTdHlsZVByZXNldHNbb3B0cy5zdHlsZS5ib3JkZXJTdHlsZV0gfHwgYm94U3R5bGVQcmVzZXRzLnNvbGlkIDogb3B0cy5zdHlsZS5ib3JkZXJTdHlsZVxuICB9O1xuICBpZiAoX2NvbG9yKSB7XG4gICAgZm9yIChjb25zdCBrZXkgaW4gYm9yZGVyU3R5bGUpIHtcbiAgICAgIGJvcmRlclN0eWxlW2tleV0gPSBfY29sb3IoXG4gICAgICAgIGJvcmRlclN0eWxlW2tleV1cbiAgICAgICk7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhZGRpbmdPZmZzZXQgPSBvcHRzLnN0eWxlLnBhZGRpbmcgJSAyID09PSAwID8gb3B0cy5zdHlsZS5wYWRkaW5nIDogb3B0cy5zdHlsZS5wYWRkaW5nICsgMTtcbiAgY29uc3QgaGVpZ2h0ID0gdGV4dExpbmVzLmxlbmd0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoID0gTWF0aC5tYXgoLi4udGV4dExpbmVzLm1hcCgobGluZSkgPT4gbGluZS5sZW5ndGgpKSArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IHdpZHRoT2Zmc2V0ID0gd2lkdGggKyBwYWRkaW5nT2Zmc2V0O1xuICBjb25zdCBsZWZ0U3BhY2UgPSBvcHRzLnN0eWxlLm1hcmdpbkxlZnQgPiAwID8gXCIgXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luTGVmdCkgOiBcIlwiO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Ub3AgPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpblRvcCkpO1xuICB9XG4gIGlmIChvcHRzLnRpdGxlKSB7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHtvcHRzLnRpdGxlfSR7cmlnaHR9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudGx9JHtib3JkZXJTdHlsZS5oLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS50cn1gXG4gICAgKTtcbiAgfVxuICBjb25zdCB2YWxpZ25PZmZzZXQgPSBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJjZW50ZXJcIiA/IE1hdGguZmxvb3IoKGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGgpIC8gMikgOiBvcHRzLnN0eWxlLnZhbGlnbiA9PT0gXCJ0b3BcIiA/IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGggLSBwYWRkaW5nT2Zmc2V0IDogaGVpZ2h0IC0gdGV4dExpbmVzLmxlbmd0aDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykge1xuICAgIGlmIChpIDwgdmFsaWduT2Zmc2V0IHx8IGkgPj0gdmFsaWduT2Zmc2V0ICsgdGV4dExpbmVzLmxlbmd0aCkge1xuICAgICAgYm94TGluZXMucHVzaChcbiAgICAgICAgYCR7bGVmdFNwYWNlfSR7Ym9yZGVyU3R5bGUudn0ke1wiIFwiLnJlcGVhdCh3aWR0aE9mZnNldCl9JHtib3JkZXJTdHlsZS52fWBcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGxpbmUgPSB0ZXh0TGluZXNbaSAtIHZhbGlnbk9mZnNldF07XG4gICAgICBjb25zdCBsZWZ0ID0gXCIgXCIucmVwZWF0KHBhZGRpbmdPZmZzZXQpO1xuICAgICAgY29uc3QgcmlnaHQgPSBcIiBcIi5yZXBlYXQod2lkdGggLSBzdHJpcEFuc2kobGluZSkubGVuZ3RoKTtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtsZWZ0fSR7bGluZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuICBib3hMaW5lcy5wdXNoKFxuICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLmJsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUuYnJ9YFxuICApO1xuICBpZiAob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20gPiAwKSB7XG4gICAgYm94TGluZXMucHVzaChcIlwiLnJlcGVhdChvcHRzLnN0eWxlLm1hcmdpbkJvdHRvbSkpO1xuICB9XG4gIHJldHVybiBib3hMaW5lcy5qb2luKFwiXFxuXCIpO1xufVxuXG5leHBvcnQgeyBhbGlnbiwgYm94LCBjZW50ZXJBbGlnbiwgY29sb3JpemUsIGNvbG9ycywgZ2V0Q29sb3IsIGxlZnRBbGlnbiwgcmlnaHRBbGlnbiwgc3RyaXBBbnNpIH07XG4iLCAiaW1wb3J0IHsgc3RkaW4sIHN0ZG91dCB9IGZyb20gJ25vZGU6cHJvY2Vzcyc7XG5pbXBvcnQgZiBmcm9tICdub2RlOnJlYWRsaW5lJztcbmltcG9ydCB7IFdyaXRlU3RyZWFtIH0gZnJvbSAnbm9kZTp0dHknO1xuaW1wb3J0IHsgZyBhcyBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcywgaSBhcyBpc1VuaWNvZGVTdXBwb3J0ZWQgfSBmcm9tICcuLi9zaGFyZWQvY29uc29sYS4zNmMwMDM0Zi5tanMnO1xuaW1wb3J0IHJlcXVpcmUkJDAgZnJvbSAndHR5JztcbmltcG9ydCB7IGNvbG9ycyB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5pbXBvcnQgJy4uL2NvcmUubWpzJztcbmltcG9ydCAnLi4vc2hhcmVkL2NvbnNvbGEuMDZhZDhhNjQubWpzJztcbmltcG9ydCAnbm9kZTp1dGlsJztcbmltcG9ydCAnbm9kZTpwYXRoJztcblxuY29uc3QgRVNDID0gJ1xceDFCJztcbmNvbnN0IENTSSA9IGAke0VTQ31bYDtcbmNvbnN0IGJlZXAgPSAnXFx1MDAwNyc7XG5cbmNvbnN0IGN1cnNvciA9IHtcbiAgdG8oeCwgeSkge1xuICAgIGlmICgheSkgcmV0dXJuIGAke0NTSX0ke3ggKyAxfUdgO1xuICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcbiAgfSxcbiAgbW92ZSh4LCB5KSB7XG4gICAgbGV0IHJldCA9ICcnO1xuXG4gICAgaWYgKHggPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXh9RGA7XG4gICAgZWxzZSBpZiAoeCA+IDApIHJldCArPSBgJHtDU0l9JHt4fUNgO1xuXG4gICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG4gICAgZWxzZSBpZiAoeSA+IDApIHJldCArPSBgJHtDU0l9JHt5fUJgO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfSxcbiAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fUFgLFxuICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1CYCxcbiAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG4gIGJhY2t3YXJkOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9JHtjb3VudH1EYCxcbiAgbmV4dExpbmU6IChjb3VudCA9IDEpID0+IGAke0NTSX1FYC5yZXBlYXQoY291bnQpLFxuICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG4gIGxlZnQ6IGAke0NTSX1HYCxcbiAgaGlkZTogYCR7Q1NJfT8yNWxgLFxuICBzaG93OiBgJHtDU0l9PzI1aGAsXG4gIHNhdmU6IGAke0VTQ303YCxcbiAgcmVzdG9yZTogYCR7RVNDfThgXG59O1xuXG5jb25zdCBzY3JvbGwgPSB7XG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9U2AucmVwZWF0KGNvdW50KSxcbiAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcbn07XG5cbmNvbnN0IGVyYXNlID0ge1xuICBzY3JlZW46IGAke0NTSX0ySmAsXG4gIHVwOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9MUpgLnJlcGVhdChjb3VudCksXG4gIGRvd246IChjb3VudCA9IDEpID0+IGAke0NTSX1KYC5yZXBlYXQoY291bnQpLFxuICBsaW5lOiBgJHtDU0l9MktgLFxuICBsaW5lRW5kOiBgJHtDU0l9S2AsXG4gIGxpbmVTdGFydDogYCR7Q1NJfTFLYCxcbiAgbGluZXMoY291bnQpIHtcbiAgICBsZXQgY2xlYXIgPSAnJztcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50OyBpKyspXG4gICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuICAgIGlmIChjb3VudClcbiAgICAgIGNsZWFyICs9IGN1cnNvci5sZWZ0O1xuICAgIHJldHVybiBjbGVhcjtcbiAgfVxufTtcblxudmFyIHNyYyA9IHsgY3Vyc29yLCBzY3JvbGwsIGVyYXNlLCBiZWVwIH07XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxubGV0IHR0eSA9IHJlcXVpcmUkJDA7XG5cbmxldCBpc0NvbG9yU3VwcG9ydGVkID1cblx0IShcIk5PX0NPTE9SXCIgaW4gcHJvY2Vzcy5lbnYgfHwgcHJvY2Vzcy5hcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0KFwiRk9SQ0VfQ09MT1JcIiBpbiBwcm9jZXNzLmVudiB8fFxuXHRcdHByb2Nlc3MuYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHxcblx0XHRwcm9jZXNzLnBsYXRmb3JtID09PSBcIndpbjMyXCIgfHxcblx0XHQodHR5LmlzYXR0eSgxKSAmJiBwcm9jZXNzLmVudi5URVJNICE9PSBcImR1bWJcIikgfHxcblx0XHRcIkNJXCIgaW4gcHJvY2Vzcy5lbnYpO1xuXG5sZXQgZm9ybWF0dGVyID1cblx0KG9wZW4sIGNsb3NlLCByZXBsYWNlID0gb3BlbikgPT5cblx0aW5wdXQgPT4ge1xuXHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQ7XG5cdFx0bGV0IGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRyZXR1cm4gfmluZGV4XG5cdFx0XHQ/IG9wZW4gKyByZXBsYWNlQ2xvc2Uoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpICsgY2xvc2Vcblx0XHRcdDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdH07XG5cbmxldCByZXBsYWNlQ2xvc2UgPSAoc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaW5kZXgpID0+IHtcblx0bGV0IHN0YXJ0ID0gc3RyaW5nLnN1YnN0cmluZygwLCBpbmRleCkgKyByZXBsYWNlO1xuXHRsZXQgZW5kID0gc3RyaW5nLnN1YnN0cmluZyhpbmRleCArIGNsb3NlLmxlbmd0aCk7XG5cdGxldCBuZXh0SW5kZXggPSBlbmQuaW5kZXhPZihjbG9zZSk7XG5cdHJldHVybiB+bmV4dEluZGV4ID8gc3RhcnQgKyByZXBsYWNlQ2xvc2UoZW5kLCBjbG9zZSwgcmVwbGFjZSwgbmV4dEluZGV4KSA6IHN0YXJ0ICsgZW5kXG59O1xuXG5sZXQgY3JlYXRlQ29sb3JzID0gKGVuYWJsZWQgPSBpc0NvbG9yU3VwcG9ydGVkKSA9PiAoe1xuXHRpc0NvbG9yU3VwcG9ydGVkOiBlbmFibGVkLFxuXHRyZXNldDogZW5hYmxlZCA/IHMgPT4gYFxceDFiWzBtJHtzfVxceDFiWzBtYCA6IFN0cmluZyxcblx0Ym9sZDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzFtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMW1cIikgOiBTdHJpbmcsXG5cdGRpbTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzJtXCIsIFwiXFx4MWJbMjJtXCIsIFwiXFx4MWJbMjJtXFx4MWJbMm1cIikgOiBTdHJpbmcsXG5cdGl0YWxpYzogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpIDogU3RyaW5nLFxuXHR1bmRlcmxpbmU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0bVwiLCBcIlxceDFiWzI0bVwiKSA6IFN0cmluZyxcblx0aW52ZXJzZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzdtXCIsIFwiXFx4MWJbMjdtXCIpIDogU3RyaW5nLFxuXHRoaWRkZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSA6IFN0cmluZyxcblx0c3RyaWtldGhyb3VnaDogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzltXCIsIFwiXFx4MWJbMjltXCIpIDogU3RyaW5nLFxuXHRibGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0cmVkOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzFtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRncmVlbjogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0eWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzNtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRibHVlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzRtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRtYWdlbnRhOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHRjeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbMzZtXCIsIFwiXFx4MWJbMzltXCIpIDogU3RyaW5nLFxuXHR3aGl0ZTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzM3bVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0Z3JheTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSA6IFN0cmluZyxcblx0YmdCbGFjazogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdSZWQ6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0MW1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnR3JlZW46IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0Mm1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnWWVsbG93OiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ0JsdWU6IGVuYWJsZWQgPyBmb3JtYXR0ZXIoXCJcXHgxYls0NG1cIiwgXCJcXHgxYls0OW1cIikgOiBTdHJpbmcsXG5cdGJnTWFnZW50YTogZW5hYmxlZCA/IGZvcm1hdHRlcihcIlxceDFiWzQ1bVwiLCBcIlxceDFiWzQ5bVwiKSA6IFN0cmluZyxcblx0YmdDeWFuOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxuXHRiZ1doaXRlOiBlbmFibGVkID8gZm9ybWF0dGVyKFwiXFx4MWJbNDdtXCIsIFwiXFx4MWJbNDltXCIpIDogU3RyaW5nLFxufSk7XG5cbnBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xucGljb2NvbG9ycy5leHBvcnRzLmNyZWF0ZUNvbG9ycyA9IGNyZWF0ZUNvbG9ycztcblxudmFyIHBpY29jb2xvcnNFeHBvcnRzID0gcGljb2NvbG9ycy5leHBvcnRzO1xuY29uc3QgbCA9IC8qQF9fUFVSRV9fKi9nZXREZWZhdWx0RXhwb3J0RnJvbUNqcyhwaWNvY29sb3JzRXhwb3J0cyk7XG5cbmZ1bmN0aW9uIHooe29ubHlGaXJzdDp0PSExfT17fSl7Y29uc3QgdT1bXCJbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT9cXFxcdTAwMDcpXCIsXCIoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKVwiXS5qb2luKFwifFwiKTtyZXR1cm4gbmV3IFJlZ0V4cCh1LHQ/dm9pZCAwOlwiZ1wiKX1mdW5jdGlvbiAkKHQpe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wiKXRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIGEgXFxgc3RyaW5nXFxgLCBnb3QgXFxgJHt0eXBlb2YgdH1cXGBgKTtyZXR1cm4gdC5yZXBsYWNlKHooKSxcIlwiKX12YXIgbT17fSxHPXtnZXQgZXhwb3J0cygpe3JldHVybiBtfSxzZXQgZXhwb3J0cyh0KXttPXQ7fX07KGZ1bmN0aW9uKHQpe3ZhciB1PXt9O3QuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24oZSl7dmFyIHM9ZS5jaGFyQ29kZUF0KDApLEM9ZS5sZW5ndGg9PTI/ZS5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1DJiZDPD01NzM0MyYmKHMmPTEwMjMsQyY9MTAyMyxEPXM8PDEwfEMsRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbihlKXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKGUpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRihlKXtyZXR1cm4gZS5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKGUpe2Zvcih2YXIgcz1GKGUpLEM9MCxEPTA7RDxzLmxlbmd0aDtEKyspQz1DK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBDfSx1LnNsaWNlPWZ1bmN0aW9uKGUscyxDKXt0ZXh0TGVuPXUubGVuZ3RoKGUpLHM9c3x8MCxDPUN8fDEsczwwJiYocz10ZXh0TGVuK3MpLEM8MCYmKEM9dGV4dExlbitDKTtmb3IodmFyIEQ9XCJcIixpPTAsbz1GKGUpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKGk+PXMtKG49PTI/MTowKSlpZihpK248PUMpRCs9YTtlbHNlIGJyZWFrO2krPW47fXJldHVybiBEfTt9KShHKTtjb25zdCBLPW07dmFyIFk9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307ZnVuY3Rpb24gYyh0LHU9e30pe2lmKHR5cGVvZiB0IT1cInN0cmluZ1wifHx0Lmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSx0PSQodCksdC5sZW5ndGg9PT0wKSlyZXR1cm4gMDt0PXQucmVwbGFjZShZKCksXCIgIFwiKTtjb25zdCBGPXUuYW1iaWd1b3VzSXNOYXJyb3c/MToyO2xldCBlPTA7Zm9yKGNvbnN0IHMgb2YgdCl7Y29uc3QgQz1zLmNvZGVQb2ludEF0KDApO2lmKEM8PTMxfHxDPj0xMjcmJkM8PTE1OXx8Qz49NzY4JiZDPD04NzkpY29udGludWU7c3dpdGNoKEsuZWFzdEFzaWFuV2lkdGgocykpe2Nhc2VcIkZcIjpjYXNlXCJXXCI6ZSs9MjticmVhaztjYXNlXCJBXCI6ZSs9RjticmVhaztkZWZhdWx0OmUrPTE7fX1yZXR1cm4gZX1jb25zdCB2PTEwLEw9KHQ9MCk9PnU9PmBcXHgxQlske3UrdH1tYCxNPSh0PTApPT51PT5gXFx4MUJbJHszOCt0fTs1OyR7dX1tYCxUPSh0PTApPT4odSxGLGUpPT5gXFx4MUJbJHszOCt0fTsyOyR7dX07JHtGfTske2V9bWAscj17bW9kaWZpZXI6e3Jlc2V0OlswLDBdLGJvbGQ6WzEsMjJdLGRpbTpbMiwyMl0saXRhbGljOlszLDIzXSx1bmRlcmxpbmU6WzQsMjRdLG92ZXJsaW5lOls1Myw1NV0saW52ZXJzZTpbNywyN10saGlkZGVuOls4LDI4XSxzdHJpa2V0aHJvdWdoOls5LDI5XX0sY29sb3I6e2JsYWNrOlszMCwzOV0scmVkOlszMSwzOV0sZ3JlZW46WzMyLDM5XSx5ZWxsb3c6WzMzLDM5XSxibHVlOlszNCwzOV0sbWFnZW50YTpbMzUsMzldLGN5YW46WzM2LDM5XSx3aGl0ZTpbMzcsMzldLGJsYWNrQnJpZ2h0Ols5MCwzOV0sZ3JheTpbOTAsMzldLGdyZXk6WzkwLDM5XSxyZWRCcmlnaHQ6WzkxLDM5XSxncmVlbkJyaWdodDpbOTIsMzldLHllbGxvd0JyaWdodDpbOTMsMzldLGJsdWVCcmlnaHQ6Wzk0LDM5XSxtYWdlbnRhQnJpZ2h0Ols5NSwzOV0sY3lhbkJyaWdodDpbOTYsMzldLHdoaXRlQnJpZ2h0Ols5NywzOV19LGJnQ29sb3I6e2JnQmxhY2s6WzQwLDQ5XSxiZ1JlZDpbNDEsNDldLGJnR3JlZW46WzQyLDQ5XSxiZ1llbGxvdzpbNDMsNDldLGJnQmx1ZTpbNDQsNDldLGJnTWFnZW50YTpbNDUsNDldLGJnQ3lhbjpbNDYsNDldLGJnV2hpdGU6WzQ3LDQ5XSxiZ0JsYWNrQnJpZ2h0OlsxMDAsNDldLGJnR3JheTpbMTAwLDQ5XSxiZ0dyZXk6WzEwMCw0OV0sYmdSZWRCcmlnaHQ6WzEwMSw0OV0sYmdHcmVlbkJyaWdodDpbMTAyLDQ5XSxiZ1llbGxvd0JyaWdodDpbMTAzLDQ5XSxiZ0JsdWVCcmlnaHQ6WzEwNCw0OV0sYmdNYWdlbnRhQnJpZ2h0OlsxMDUsNDldLGJnQ3lhbkJyaWdodDpbMTA2LDQ5XSxiZ1doaXRlQnJpZ2h0OlsxMDcsNDldfX07T2JqZWN0LmtleXMoci5tb2RpZmllcik7Y29uc3QgWj1PYmplY3Qua2V5cyhyLmNvbG9yKSxIPU9iamVjdC5rZXlzKHIuYmdDb2xvcik7Wy4uLlosLi4uSF07ZnVuY3Rpb24gVSgpe2NvbnN0IHQ9bmV3IE1hcDtmb3IoY29uc3RbdSxGXW9mIE9iamVjdC5lbnRyaWVzKHIpKXtmb3IoY29uc3RbZSxzXW9mIE9iamVjdC5lbnRyaWVzKEYpKXJbZV09e29wZW46YFxceDFCWyR7c1swXX1tYCxjbG9zZTpgXFx4MUJbJHtzWzFdfW1gfSxGW2VdPXJbZV0sdC5zZXQoc1swXSxzWzFdKTtPYmplY3QuZGVmaW5lUHJvcGVydHkocix1LHt2YWx1ZTpGLGVudW1lcmFibGU6ITF9KTt9cmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyLFwiY29kZXNcIix7dmFsdWU6dCxlbnVtZXJhYmxlOiExfSksci5jb2xvci5jbG9zZT1cIlxceDFCWzM5bVwiLHIuYmdDb2xvci5jbG9zZT1cIlxceDFCWzQ5bVwiLHIuY29sb3IuYW5zaT1MKCksci5jb2xvci5hbnNpMjU2PU0oKSxyLmNvbG9yLmFuc2kxNm09VCgpLHIuYmdDb2xvci5hbnNpPUwodiksci5iZ0NvbG9yLmFuc2kyNTY9TSh2KSxyLmJnQ29sb3IuYW5zaTE2bT1UKHYpLE9iamVjdC5kZWZpbmVQcm9wZXJ0aWVzKHIse3JnYlRvQW5zaTI1Njp7dmFsdWU6KHUsRixlKT0+dT09PUYmJkY9PT1lP3U8OD8xNjp1PjI0OD8yMzE6TWF0aC5yb3VuZCgodS04KS8yNDcqMjQpKzIzMjoxNiszNipNYXRoLnJvdW5kKHUvMjU1KjUpKzYqTWF0aC5yb3VuZChGLzI1NSo1KStNYXRoLnJvdW5kKGUvMjU1KjUpLGVudW1lcmFibGU6ITF9LGhleFRvUmdiOnt2YWx1ZTp1PT57Y29uc3QgRj0vW2EtZlxcZF17Nn18W2EtZlxcZF17M30vaS5leGVjKHUudG9TdHJpbmcoMTYpKTtpZighRilyZXR1cm4gWzAsMCwwXTtsZXRbZV09RjtlLmxlbmd0aD09PTMmJihlPVsuLi5lXS5tYXAoQz0+QytDKS5qb2luKFwiXCIpKTtjb25zdCBzPU51bWJlci5wYXJzZUludChlLDE2KTtyZXR1cm4gW3M+PjE2JjI1NSxzPj44JjI1NSxzJjI1NV19LGVudW1lcmFibGU6ITF9LGhleFRvQW5zaTI1Njp7dmFsdWU6dT0+ci5yZ2JUb0Fuc2kyNTYoLi4uci5oZXhUb1JnYih1KSksZW51bWVyYWJsZTohMX0sYW5zaTI1NlRvQW5zaTp7dmFsdWU6dT0+e2lmKHU8OClyZXR1cm4gMzArdTtpZih1PDE2KXJldHVybiA5MCsodS04KTtsZXQgRixlLHM7aWYodT49MjMyKUY9KCh1LTIzMikqMTArOCkvMjU1LGU9RixzPUY7ZWxzZSB7dS09MTY7Y29uc3QgaT11JTM2O0Y9TWF0aC5mbG9vcih1LzM2KS81LGU9TWF0aC5mbG9vcihpLzYpLzUscz1pJTYvNTt9Y29uc3QgQz1NYXRoLm1heChGLGUscykqMjtpZihDPT09MClyZXR1cm4gMzA7bGV0IEQ9MzArKE1hdGgucm91bmQocyk8PDJ8TWF0aC5yb3VuZChlKTw8MXxNYXRoLnJvdW5kKEYpKTtyZXR1cm4gQz09PTImJihEKz02MCksRH0sZW51bWVyYWJsZTohMX0scmdiVG9BbnNpOnt2YWx1ZToodSxGLGUpPT5yLmFuc2kyNTZUb0Fuc2koci5yZ2JUb0Fuc2kyNTYodSxGLGUpKSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2k6e3ZhbHVlOnU9PnIuYW5zaTI1NlRvQW5zaShyLmhleFRvQW5zaTI1Nih1KSksZW51bWVyYWJsZTohMX19KSxyfWNvbnN0IHE9VSgpLHA9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLEo9MzksYj1cIlxceDA3XCIsVz1cIltcIixRPVwiXVwiLEk9XCJtXCIsdz1gJHtRfTg7O2AsTj10PT5gJHtwLnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke1d9JHt0fSR7SX1gLGo9dD0+YCR7cC52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt3fSR7dH0ke2J9YCxYPXQ9PnQuc3BsaXQoXCIgXCIpLm1hcCh1PT5jKHUpKSxfPSh0LHUsRik9Pntjb25zdCBlPVsuLi51XTtsZXQgcz0hMSxDPSExLEQ9YygkKHRbdC5sZW5ndGgtMV0pKTtmb3IoY29uc3RbaSxvXW9mIGUuZW50cmllcygpKXtjb25zdCBFPWMobyk7aWYoRCtFPD1GP3RbdC5sZW5ndGgtMV0rPW86KHQucHVzaChvKSxEPTApLHAuaGFzKG8pJiYocz0hMCxDPWUuc2xpY2UoaSsxKS5qb2luKFwiXCIpLnN0YXJ0c1dpdGgodykpLHMpe0M/bz09PWImJihzPSExLEM9ITEpOm89PT1JJiYocz0hMSk7Y29udGludWV9RCs9RSxEPT09RiYmaTxlLmxlbmd0aC0xJiYodC5wdXNoKFwiXCIpLEQ9MCk7fSFEJiZ0W3QubGVuZ3RoLTFdLmxlbmd0aD4wJiZ0Lmxlbmd0aD4xJiYodFt0Lmxlbmd0aC0yXSs9dC5wb3AoKSk7fSxERD10PT57Y29uc3QgdT10LnNwbGl0KFwiIFwiKTtsZXQgRj11Lmxlbmd0aDtmb3IoO0Y+MCYmIShjKHVbRi0xXSk+MCk7KUYtLTtyZXR1cm4gRj09PXUubGVuZ3RoP3Q6dS5zbGljZSgwLEYpLmpvaW4oXCIgXCIpK3Uuc2xpY2UoRikuam9pbihcIlwiKX0sdUQ9KHQsdSxGPXt9KT0+e2lmKEYudHJpbSE9PSExJiZ0LnRyaW0oKT09PVwiXCIpcmV0dXJuIFwiXCI7bGV0IGU9XCJcIixzLEM7Y29uc3QgRD1YKHQpO2xldCBpPVtcIlwiXTtmb3IoY29uc3RbRSxhXW9mIHQuc3BsaXQoXCIgXCIpLmVudHJpZXMoKSl7Ri50cmltIT09ITEmJihpW2kubGVuZ3RoLTFdPWlbaS5sZW5ndGgtMV0udHJpbVN0YXJ0KCkpO2xldCBuPWMoaVtpLmxlbmd0aC0xXSk7aWYoRSE9PTAmJihuPj11JiYoRi53b3JkV3JhcD09PSExfHxGLnRyaW09PT0hMSkmJihpLnB1c2goXCJcIiksbj0wKSwobj4wfHxGLnRyaW09PT0hMSkmJihpW2kubGVuZ3RoLTFdKz1cIiBcIixuKyspKSxGLmhhcmQmJkRbRV0+dSl7Y29uc3QgQj11LW4sQT0xK01hdGguZmxvb3IoKERbRV0tQi0xKS91KTtNYXRoLmZsb29yKChEW0VdLTEpL3UpPEEmJmkucHVzaChcIlwiKSxfKGksYSx1KTtjb250aW51ZX1pZihuK0RbRV0+dSYmbj4wJiZEW0VdPjApe2lmKEYud29yZFdyYXA9PT0hMSYmbjx1KXtfKGksYSx1KTtjb250aW51ZX1pLnB1c2goXCJcIik7fWlmKG4rRFtFXT51JiZGLndvcmRXcmFwPT09ITEpe18oaSxhLHUpO2NvbnRpbnVlfWlbaS5sZW5ndGgtMV0rPWE7fUYudHJpbSE9PSExJiYoaT1pLm1hcChFPT5ERChFKSkpO2NvbnN0IG89Wy4uLmkuam9pbihgXG5gKV07Zm9yKGNvbnN0W0UsYV1vZiBvLmVudHJpZXMoKSl7aWYoZSs9YSxwLmhhcyhhKSl7Y29uc3R7Z3JvdXBzOkJ9PW5ldyBSZWdFeHAoYCg/OlxcXFwke1d9KD88Y29kZT5cXFxcZCspbXxcXFxcJHt3fSg/PHVyaT4uKikke2J9KWApLmV4ZWMoby5zbGljZShFKS5qb2luKFwiXCIpKXx8e2dyb3Vwczp7fX07aWYoQi5jb2RlIT09dm9pZCAwKXtjb25zdCBBPU51bWJlci5wYXJzZUZsb2F0KEIuY29kZSk7cz1BPT09Sj92b2lkIDA6QTt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKEM9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPXEuY29kZXMuZ2V0KE51bWJlcihzKSk7b1tFKzFdPT09YFxuYD8oQyYmKGUrPWooXCJcIikpLHMmJm4mJihlKz1OKG4pKSk6YT09PWBcbmAmJihzJiZuJiYoZSs9TihzKSksQyYmKGUrPWooQykpKTt9cmV0dXJuIGV9O2Z1bmN0aW9uIFAodCx1LEYpe3JldHVybiBTdHJpbmcodCkubm9ybWFsaXplKCkucmVwbGFjZSgvXFxyXFxuL2csYFxuYCkuc3BsaXQoYFxuYCkubWFwKGU9PnVEKGUsdSxGKSkuam9pbihgXG5gKX1mdW5jdGlvbiBGRCh0LHUpe2lmKHQ9PT11KXJldHVybjtjb25zdCBGPXQuc3BsaXQoYFxuYCksZT11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBDPTA7QzxNYXRoLm1heChGLmxlbmd0aCxlLmxlbmd0aCk7QysrKUZbQ10hPT1lW0NdJiZzLnB1c2goQyk7cmV0dXJuIHN9Y29uc3QgUj1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZyh0LHUpe3QuaXNUVFkmJnQuc2V0UmF3TW9kZSh1KTt9Y29uc3QgVj1uZXcgTWFwKFtbXCJrXCIsXCJ1cFwiXSxbXCJqXCIsXCJkb3duXCJdLFtcImhcIixcImxlZnRcIl0sW1wibFwiLFwicmlnaHRcIl1dKSx0RD1uZXcgU2V0KFtcInVwXCIsXCJkb3duXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwic3BhY2VcIixcImVudGVyXCJdKTtjbGFzcyBoe2NvbnN0cnVjdG9yKHtyZW5kZXI6dSxpbnB1dDpGPXN0ZGluLG91dHB1dDplPXN0ZG91dCwuLi5zfSxDPSEwKXt0aGlzLl90cmFjaz0hMSx0aGlzLl9jdXJzb3I9MCx0aGlzLnN0YXRlPVwiaW5pdGlhbFwiLHRoaXMuZXJyb3I9XCJcIix0aGlzLnN1YnNjcmliZXJzPW5ldyBNYXAsdGhpcy5fcHJldkZyYW1lPVwiXCIsdGhpcy5vcHRzPXMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPXUuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1DLHRoaXMuaW5wdXQ9Rix0aGlzLm91dHB1dD1lO31wcm9tcHQoKXtjb25zdCB1PW5ldyBXcml0ZVN0cmVhbSgwKTtyZXR1cm4gdS5fd3JpdGU9KEYsZSxzKT0+e3RoaXMuX3RyYWNrJiYodGhpcy52YWx1ZT10aGlzLnJsLmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmwuY3Vyc29yLHRoaXMuZW1pdChcInZhbHVlXCIsdGhpcy52YWx1ZSkpLHMoKTt9LHRoaXMuaW5wdXQucGlwZSh1KSx0aGlzLnJsPWYuY3JlYXRlSW50ZXJmYWNlKHtpbnB1dDp0aGlzLmlucHV0LG91dHB1dDp1LHRhYlNpemU6Mixwcm9tcHQ6XCJcIixlc2NhcGVDb2RlVGltZW91dDo1MH0pLGYuZW1pdEtleXByZXNzRXZlbnRzKHRoaXMuaW5wdXQsdGhpcy5ybCksdGhpcy5ybC5wcm9tcHQoKSx0aGlzLm9wdHMuaW5pdGlhbFZhbHVlIT09dm9pZCAwJiZ0aGlzLl90cmFjayYmdGhpcy5ybC53cml0ZSh0aGlzLm9wdHMuaW5pdGlhbFZhbHVlKSx0aGlzLmlucHV0Lm9uKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLGcodGhpcy5pbnB1dCwhMCksdGhpcy5vdXRwdXQub24oXCJyZXNpemVcIix0aGlzLnJlbmRlciksdGhpcy5yZW5kZXIoKSxuZXcgUHJvbWlzZSgoRixlKT0+e3RoaXMub25jZShcInN1Ym1pdFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZyh0aGlzLmlucHV0LCExKSxGKFIpO30pO30pfW9uKHUsRil7Y29uc3QgZT10aGlzLnN1YnNjcmliZXJzLmdldCh1KT8/W107ZS5wdXNoKHtjYjpGfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9b25jZSh1LEYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdO2UucHVzaCh7Y2I6RixvbmNlOiEwfSksdGhpcy5zdWJzY3JpYmVycy5zZXQodSxlKTt9ZW1pdCh1LC4uLkYpe2NvbnN0IGU9dGhpcy5zdWJzY3JpYmVycy5nZXQodSk/P1tdLHM9W107Zm9yKGNvbnN0IEMgb2YgZSlDLmNiKC4uLkYpLEMub25jZSYmcy5wdXNoKCgpPT5lLnNwbGljZShlLmluZGV4T2YoQyksMSkpO2Zvcihjb25zdCBDIG9mIHMpQygpO311bnN1YnNjcmliZSgpe3RoaXMuc3Vic2NyaWJlcnMuY2xlYXIoKTt9b25LZXlwcmVzcyh1LEYpe2lmKHRoaXMuc3RhdGU9PT1cImVycm9yXCImJih0aGlzLnN0YXRlPVwiYWN0aXZlXCIpLEY/Lm5hbWUmJiF0aGlzLl90cmFjayYmVi5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsVi5nZXQoRi5uYW1lKSksRj8ubmFtZSYmdEQuaGFzKEYubmFtZSkmJnRoaXMuZW1pdChcImN1cnNvclwiLEYubmFtZSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCBlPXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTtlJiYodGhpcy5lcnJvcj1lLHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmwud3JpdGUodGhpcy52YWx1ZSkpO310aGlzLnN0YXRlIT09XCJlcnJvclwiJiYodGhpcy5zdGF0ZT1cInN1Ym1pdFwiKTt9dT09PVwiXHUwMDAzXCImJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGcodGhpcy5pbnB1dCwhMSksdGhpcy5ybC5jbG9zZSgpLHRoaXMuZW1pdChgJHt0aGlzLnN0YXRlfWAsdGhpcy52YWx1ZSksdGhpcy51bnN1YnNjcmliZSgpO31yZXN0b3JlQ3Vyc29yKCl7Y29uc3QgdT1QKHRoaXMuX3ByZXZGcmFtZSxwcm9jZXNzLnN0ZG91dC5jb2x1bW5zLHtoYXJkOiEwfSkuc3BsaXQoYFxuYCkubGVuZ3RoLTE7dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKC05OTksdSotMSkpO31yZW5kZXIoKXtjb25zdCB1PVAodGhpcy5fcmVuZGVyKHRoaXMpPz9cIlwiLHByb2Nlc3Muc3Rkb3V0LmNvbHVtbnMse2hhcmQ6ITB9KTtpZih1IT09dGhpcy5fcHJldkZyYW1lKXtpZih0aGlzLnN0YXRlPT09XCJpbml0aWFsXCIpdGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPUZEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5saW5lcygxKSk7Y29uc3Qgcz11LnNwbGl0KGBcbmApO3RoaXMub3V0cHV0LndyaXRlKHNbZV0pLHRoaXMuX3ByZXZGcmFtZT11LHRoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLWUtMSkpO3JldHVybn1lbHNlIGlmKEYmJkY/Lmxlbmd0aD4xKXtjb25zdCBlPUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjLmN1cnNvci5tb3ZlKDAsZSkpLHRoaXMub3V0cHV0LndyaXRlKHNyYy5lcmFzZS5kb3duKCkpO2NvbnN0IEM9dS5zcGxpdChgXG5gKS5zbGljZShlKTt0aGlzLm91dHB1dC53cml0ZShDLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmMuZXJhc2UuZG93bigpKTt9dGhpcy5vdXRwdXQud3JpdGUodSksdGhpcy5zdGF0ZT09PVwiaW5pdGlhbFwiJiYodGhpcy5zdGF0ZT1cImFjdGl2ZVwiKSx0aGlzLl9wcmV2RnJhbWU9dTt9fX1jbGFzcyBzRCBleHRlbmRzIGh7Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLnZhbHVlPzA6MX1nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMuY3Vyc29yPT09MH1jb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLnZhbHVlPSEhdS5pbml0aWFsVmFsdWUsdGhpcy5vbihcInZhbHVlXCIsKCk9Pnt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlO30pLHRoaXMub24oXCJjb25maXJtXCIsRj0+e3RoaXMub3V0cHV0LndyaXRlKHNyYy5jdXJzb3IubW92ZSgwLC0xKSksdGhpcy52YWx1ZT1GLHRoaXMuc3RhdGU9XCJzdWJtaXRcIix0aGlzLmNsb3NlKCk7fSksdGhpcy5vbihcImN1cnNvclwiLCgpPT57dGhpcy52YWx1ZT0hdGhpcy52YWx1ZTt9KTt9fWNsYXNzIGlEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fWNsYXNzIEVEIGV4dGVuZHMgaHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSx0aGlzLmN1cnNvcj0wLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy5jdXJzb3I9dGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuaW5pdGlhbFZhbHVlKSx0aGlzLmN1cnNvcj09PS0xJiYodGhpcy5jdXJzb3I9MCksdGhpcy5jaGFuZ2VWYWx1ZSgpLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWt9dGhpcy5jaGFuZ2VWYWx1ZSgpO30pO31nZXQgX3ZhbHVlKCl7cmV0dXJuIHRoaXMub3B0aW9uc1t0aGlzLmN1cnNvcl19Y2hhbmdlVmFsdWUoKXt0aGlzLnZhbHVlPXRoaXMuX3ZhbHVlLnZhbHVlO319Y2xhc3Mgb0QgZXh0ZW5kcyBoe2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLHRoaXMudmFsdWVXaXRoQ3Vyc29yPVwiXCIsdGhpcy5vbihcImZpbmFsaXplXCIsKCk9Pnt0aGlzLnZhbHVlfHwodGhpcy52YWx1ZT11LmRlZmF1bHRWYWx1ZSksdGhpcy52YWx1ZVdpdGhDdXJzb3I9dGhpcy52YWx1ZTt9KSx0aGlzLm9uKFwidmFsdWVcIiwoKT0+e2lmKHRoaXMuY3Vyc29yPj10aGlzLnZhbHVlLmxlbmd0aCl0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHt0aGlzLnZhbHVlfSR7bC5pbnZlcnNlKGwuaGlkZGVuKFwiX1wiKSl9YDtlbHNlIHtjb25zdCBGPXRoaXMudmFsdWUuc2xpY2UoMCx0aGlzLmN1cnNvciksZT10aGlzLnZhbHVlLnNsaWNlKHRoaXMuY3Vyc29yKTt0aGlzLnZhbHVlV2l0aEN1cnNvcj1gJHtGfSR7bC5pbnZlcnNlKGVbMF0pfSR7ZS5zbGljZSgxKX1gO319KTt9Z2V0IGN1cnNvcigpe3JldHVybiB0aGlzLl9jdXJzb3J9fVxuXG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgU19TVEVQX0FDVElWRSA9IHMoXCJcXHUyNzZGXCIsIFwiPlwiKTtcbmNvbnN0IFNfU1RFUF9DQU5DRUwgPSBzKFwiXFx1MjVBMFwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfRVJST1IgPSBzKFwiXFx1MjVCMlwiLCBcInhcIik7XG5jb25zdCBTX1NURVBfU1VCTUlUID0gcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpO1xuY29uc3QgU19CQVIgPSBcIlwiO1xuY29uc3QgU19CQVJfRU5EID0gXCJcIjtcbmNvbnN0IFNfUkFESU9fQUNUSVZFID0gcyhcIlxcdTI1Q0ZcIiwgXCI+XCIpO1xuY29uc3QgU19SQURJT19JTkFDVElWRSA9IHMoXCJcXHUyNUNCXCIsIFwiIFwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbXFx1MjAyMl1cIik7XG5jb25zdCBTX0NIRUNLQk9YX1NFTEVDVEVEID0gcyhcIlxcdTI1RkNcIiwgXCJbK11cIik7XG5jb25zdCBTX0NIRUNLQk9YX0lOQUNUSVZFID0gcyhcIlxcdTI1RkJcIiwgXCJbIF1cIik7XG5jb25zdCBzeW1ib2wgPSAoc3RhdGUpID0+IHtcbiAgc3dpdGNoIChzdGF0ZSkge1xuICAgIGNhc2UgXCJpbml0aWFsXCI6XG4gICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLmN5YW4oU19TVEVQX0FDVElWRSk7XG4gICAgfVxuICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5yZWQoU19TVEVQX0NBTkNFTCk7XG4gICAgfVxuICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnllbGxvdyhTX1NURVBfRVJST1IpO1xuICAgIH1cbiAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuZ3JlZW4oU19TVEVQX1NVQk1JVCk7XG4gICAgfVxuICB9XG59O1xuY29uc3QgdGV4dCA9IChvcHRzKSA9PiB7XG4gIHJldHVybiBuZXcgb0Qoe1xuICAgIHZhbGlkYXRlOiBvcHRzLnZhbGlkYXRlLFxuICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgIGRlZmF1bHRWYWx1ZTogb3B0cy5kZWZhdWx0VmFsdWUsXG4gICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxWYWx1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCBwbGFjZWhvbGRlciA9IG9wdHMucGxhY2Vob2xkZXIgPyBjb2xvcnMuaW52ZXJzZShvcHRzLnBsYWNlaG9sZGVyWzBdKSArIGNvbG9ycy5kaW0ob3B0cy5wbGFjZWhvbGRlci5zbGljZSgxKSkgOiBjb2xvcnMuaW52ZXJzZShjb2xvcnMuaGlkZGVuKFwiX1wiKSk7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyB0aGlzLnZhbHVlV2l0aEN1cnNvciA6IHBsYWNlaG9sZGVyO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJlcnJvclwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlLnRyaW0oKX1cbiR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIFNfQkFSXG4gICAgICAgICAgKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3coXG4gICAgICAgICAgICB0aGlzLmVycm9yXG4gICAgICAgICAgKX1cbmA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0oXG4gICAgICAgICAgICB0aGlzLnZhbHVlIHx8IG9wdHMucGxhY2Vob2xkZXJcbiAgICAgICAgICApfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh0aGlzLnZhbHVlID8/IFwiXCIpXG4gICAgICAgICAgKX0ke3RoaXMudmFsdWU/LnRyaW0oKSA/IFwiXFxuXCIgKyBjb2xvcnMuZ3JheShTX0JBUikgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt2YWx1ZX1cbiR7Y29sb3JzLmN5YW4oXG4gICAgICAgICAgICBTX0JBUl9FTkRcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3QgY29uZmlybSA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IGFjdGl2ZSA9IG9wdHMuYWN0aXZlID8/IFwiWWVzXCI7XG4gIGNvbnN0IGluYWN0aXZlID0gb3B0cy5pbmFjdGl2ZSA/PyBcIk5vXCI7XG4gIHJldHVybiBuZXcgc0Qoe1xuICAgIGFjdGl2ZSxcbiAgICBpbmFjdGl2ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlID8/IHRydWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgY29uc3QgdmFsdWUgPSB0aGlzLnZhbHVlID8gYWN0aXZlIDogaW5hY3RpdmU7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcInN1Ym1pdFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5kaW0odmFsdWUpfWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKFxuICAgICAgICAgICAgY29sb3JzLmRpbSh2YWx1ZSlcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2FjdGl2ZX1gIDogYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGFjdGl2ZSl9YH0gJHtjb2xvcnMuZGltKFwiL1wiKX0gJHt0aGlzLnZhbHVlID8gYCR7Y29sb3JzLmRpbShTX1JBRElPX0lOQUNUSVZFKX0gJHtjb2xvcnMuZGltKGluYWN0aXZlKX1gIDogYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtpbmFjdGl2ZX1gfVxuJHtjb2xvcnMuY3lhbihTX0JBUl9FTkQpfVxuYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSkucHJvbXB0KCk7XG59O1xuY29uc3Qgc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgRUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwic2VsZWN0ZWRcIlxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7b3B0KFxuICAgICAgICAgICAgdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXSxcbiAgICAgICAgICAgIFwiY2FuY2VsbGVkXCJcbiAgICAgICAgICApfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoXG4gICAgICAgICAgICAob3B0aW9uLCBpKSA9PiBvcHQob3B0aW9uLCBpID09PSB0aGlzLmN1cnNvciA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpXG4gICAgICAgICAgKS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBtdWx0aXNlbGVjdCA9IChvcHRzKSA9PiB7XG4gIGNvbnN0IG9wdCA9IChvcHRpb24sIHN0YXRlKSA9PiB7XG4gICAgY29uc3QgbGFiZWwgPSBvcHRpb24ubGFiZWwgPz8gU3RyaW5nKG9wdGlvbi52YWx1ZSk7XG4gICAgc3dpdGNoIChzdGF0ZSkge1xuICAgICAgY2FzZSBcImFjdGl2ZVwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuY3lhbihTX0NIRUNLQk9YX0FDVElWRSl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic2VsZWN0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfQ0hFQ0tCT1hfU0VMRUNURUQpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiY2FuY2VsbGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5zdHJpa2V0aHJvdWdoKGNvbG9ycy5kaW0obGFiZWwpKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImFjdGl2ZS1zZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7bGFiZWx9ICR7b3B0aW9uLmhpbnQgPyBjb2xvcnMuZGltKGAoJHtvcHRpb24uaGludH0pYCkgOiBcIlwifWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3VibWl0dGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBgJHtjb2xvcnMuZGltKFNfQ0hFQ0tCT1hfSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0obGFiZWwpfWA7XG4gIH07XG4gIHJldHVybiBuZXcgaUQoe1xuICAgIG9wdGlvbnM6IG9wdHMub3B0aW9ucyxcbiAgICBpbml0aWFsVmFsdWVzOiBvcHRzLmluaXRpYWxWYWx1ZXMsXG4gICAgcmVxdWlyZWQ6IG9wdHMucmVxdWlyZWQgPz8gdHJ1ZSxcbiAgICBjdXJzb3JBdDogb3B0cy5jdXJzb3JBdCxcbiAgICB2YWxpZGF0ZShzZWxlY3RlZCkge1xuICAgICAgaWYgKHRoaXMucmVxdWlyZWQgJiYgc2VsZWN0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBgUGxlYXNlIHNlbGVjdCBhdCBsZWFzdCBvbmUgb3B0aW9uLlxuJHtjb2xvcnMucmVzZXQoXG4gICAgICAgICAgY29sb3JzLmRpbShcbiAgICAgICAgICAgIGBQcmVzcyAke2NvbG9ycy5ncmF5KFxuICAgICAgICAgICAgICBjb2xvcnMuYmdXaGl0ZShjb2xvcnMuaW52ZXJzZShcIiBzcGFjZSBcIikpXG4gICAgICAgICAgICApfSB0byBzZWxlY3QsICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIGVudGVyIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHN1Ym1pdGBcbiAgICAgICAgICApXG4gICAgICAgICl9YDtcbiAgICAgIH1cbiAgICB9LFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7dGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwic3VibWl0dGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSkgfHwgY29sb3JzLmRpbShcIm5vbmVcIil9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICBjb25zdCBsYWJlbCA9IHRoaXMub3B0aW9ucy5maWx0ZXIoKHsgdmFsdWUgfSkgPT4gdGhpcy52YWx1ZS5pbmNsdWRlcyh2YWx1ZSkpLm1hcCgob3B0aW9uKSA9PiBvcHQob3B0aW9uLCBcImNhbmNlbGxlZFwiKSkuam9pbihjb2xvcnMuZGltKFwiLCBcIikpO1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtsYWJlbC50cmltKCkgPyBgJHtsYWJlbH1cbiR7Y29sb3JzLmdyYXkoU19CQVIpfWAgOiBcIlwifWA7XG4gICAgICAgIH1cbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICBjb25zdCBmb290ZXIgPSB0aGlzLmVycm9yLnNwbGl0KFwiXFxuXCIpLm1hcChcbiAgICAgICAgICAgIChsbiwgaSkgPT4gaSA9PT0gMCA/IGAke2NvbG9ycy55ZWxsb3coU19CQVJfRU5EKX0gJHtjb2xvcnMueWVsbG93KGxuKX1gIDogYCAgICR7bG59YFxuICAgICAgICAgICkuam9pbihcIlxcblwiKTtcbiAgICAgICAgICByZXR1cm4gdGl0bGUgKyBjb2xvcnMueWVsbG93KFNfQkFSKSArIFwiICBcIiArIHRoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMueWVsbG93KFNfQkFSKX0gIGApICsgXCJcXG5cIiArIGZvb3RlciArIFwiXFxuXCI7XG4gICAgICAgIH1cbiAgICAgICAgZGVmYXVsdDoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5jeWFuKFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMubWFwKChvcHRpb24sIGkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkID0gdGhpcy52YWx1ZS5pbmNsdWRlcyhvcHRpb24udmFsdWUpO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlID0gaSA9PT0gdGhpcy5jdXJzb3I7XG4gICAgICAgICAgICBpZiAoYWN0aXZlICYmIHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcImFjdGl2ZS1zZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJzZWxlY3RlZFwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBhY3RpdmUgPyBcImFjdGl2ZVwiIDogXCJpbmFjdGl2ZVwiKTtcbiAgICAgICAgICB9KS5qb2luKGBcbiR7Y29sb3JzLmN5YW4oU19CQVIpfSAgYCl9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIHByb21wdChtZXNzYWdlLCBvcHRzID0ge30pIHtcbiAgaWYgKCFvcHRzLnR5cGUgfHwgb3B0cy50eXBlID09PSBcInRleHRcIikge1xuICAgIHJldHVybiBhd2FpdCB0ZXh0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBkZWZhdWx0VmFsdWU6IG9wdHMuZGVmYXVsdCxcbiAgICAgIHBsYWNlaG9sZGVyOiBvcHRzLnBsYWNlaG9sZGVyLFxuICAgICAgaW5pdGlhbFZhbHVlOiBvcHRzLmluaXRpYWxcbiAgICB9KTtcbiAgfVxuICBpZiAob3B0cy50eXBlID09PSBcImNvbmZpcm1cIikge1xuICAgIHJldHVybiBhd2FpdCBjb25maXJtKHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKVxuICAgIH0pO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZFxuICAgIH0pO1xuICB9XG4gIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBwcm9tcHQgdHlwZTogJHtvcHRzLnR5cGV9YCk7XG59XG5cbmV4cG9ydCB7IHByb21wdCB9O1xuIiwgImltcG9ydCB7IGNyZWF0ZUNvbnNvbGEgYXMgY3JlYXRlQ29uc29sYSQxLCBMb2dMZXZlbHMgfSBmcm9tICcuLi9jb3JlLm1qcyc7XG5pbXBvcnQgeyBCIGFzIEJhc2ljUmVwb3J0ZXIsIHAgYXMgcGFyc2VTdGFjayB9IGZyb20gJy4vY29uc29sYS4wNmFkOGE2NC5tanMnO1xuaW1wb3J0IHByb2Nlc3MkMSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IHsgY29sb3JzLCBib3gsIHN0cmlwQW5zaSBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4uL3V0aWxzLm1qcyc7XG5cbmNvbnN0IHByb3ZpZGVycyA9IFtcbiAgW1wiQVBQVkVZT1JcIl0sXG4gIFtcIkFaVVJFX1BJUEVMSU5FU1wiLCBcIlNZU1RFTV9URUFNRk9VTkRBVElPTkNPTExFQ1RJT05VUklcIl0sXG4gIFtcIkFaVVJFX1NUQVRJQ1wiLCBcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sXG4gIFtcIkFQUENJUkNMRVwiLCBcIkFDX0FQUENJUkNMRVwiXSxcbiAgW1wiQkFNQk9PXCIsIFwiYmFtYm9vX3BsYW5LZXlcIl0sXG4gIFtcIkJJVEJVQ0tFVFwiLCBcIkJJVEJVQ0tFVF9DT01NSVRcIl0sXG4gIFtcIkJJVFJJU0VcIiwgXCJCSVRSSVNFX0lPXCJdLFxuICBbXCJCVUREWVwiLCBcIkJVRERZX1dPUktTUEFDRV9JRFwiXSxcbiAgW1wiQlVJTERLSVRFXCJdLFxuICBbXCJDSVJDTEVcIiwgXCJDSVJDTEVDSVwiXSxcbiAgW1wiQ0lSUlVTXCIsIFwiQ0lSUlVTX0NJXCJdLFxuICBbXCJDTE9VREZMQVJFX1BBR0VTXCIsIFwiQ0ZfUEFHRVNcIiwgeyBjaTogdHJ1ZSB9XSxcbiAgW1wiQ09ERUJVSUxEXCIsIFwiQ09ERUJVSUxEX0JVSUxEX0FSTlwiXSxcbiAgW1wiQ09ERUZSRVNIXCIsIFwiQ0ZfQlVJTERfSURcIl0sXG4gIFtcIkRST05FXCJdLFxuICBbXCJEUk9ORVwiLCBcIkRST05FX0JVSUxEX0VWRU5UXCJdLFxuICBbXCJEU0FSSVwiXSxcbiAgW1wiR0lUSFVCX0FDVElPTlNcIl0sXG4gIFtcIkdJVExBQlwiLCBcIkdJVExBQl9DSVwiXSxcbiAgW1wiR0lUTEFCXCIsIFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxcbiAgW1wiR09DRFwiLCBcIkdPX1BJUEVMSU5FX0xBQkVMXCJdLFxuICBbXCJMQVlFUkNJXCJdLFxuICBbXCJIVURTT05cIiwgXCJIVURTT05fVVJMXCJdLFxuICBbXCJKRU5LSU5TXCIsIFwiSkVOS0lOU19VUkxcIl0sXG4gIFtcIk1BR05VTVwiXSxcbiAgW1wiTkVUTElGWVwiXSxcbiAgW1wiTkVUTElGWVwiLCBcIk5FVExJRllfTE9DQUxcIiwgeyBjaTogZmFsc2UgfV0sXG4gIFtcIk5FVkVSQ09ERVwiXSxcbiAgW1wiUkVOREVSXCJdLFxuICBbXCJTQUlMXCIsIFwiU0FJTENJXCJdLFxuICBbXCJTRU1BUEhPUkVcIl0sXG4gIFtcIlNDUkVXRFJJVkVSXCJdLFxuICBbXCJTSElQUEFCTEVcIl0sXG4gIFtcIlNPTEFOT1wiLCBcIlRERElVTVwiXSxcbiAgW1wiU1RSSURFUlwiXSxcbiAgW1wiVEVBTUNJVFlcIiwgXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFxuICBbXCJUUkFWSVNcIl0sXG4gIFtcIlZFUkNFTFwiLCBcIk5PV19CVUlMREVSXCJdLFxuICBbXCJBUFBDRU5URVJcIiwgXCJBUFBDRU5URVJfQlVJTERfSURcIl0sXG4gIFtcIkNPREVTQU5EQk9YXCIsIFwiQ09ERVNBTkRCT1hfU1NFXCIsIHsgY2k6IGZhbHNlIH1dLFxuICBbXCJTVEFDS0JMSVRaXCJdLFxuICBbXCJTVE9STUtJVFwiXSxcbiAgW1wiQ0xFQVZSXCJdXG5dO1xuZnVuY3Rpb24gZGV0ZWN0UHJvdmlkZXIoZW52KSB7XG4gIGZvciAoY29uc3QgcHJvdmlkZXIgb2YgcHJvdmlkZXJzKSB7XG4gICAgY29uc3QgZW52TmFtZSA9IHByb3ZpZGVyWzFdIHx8IHByb3ZpZGVyWzBdO1xuICAgIGlmIChlbnZbZW52TmFtZV0pIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5hbWU6IHByb3ZpZGVyWzBdLnRvTG93ZXJDYXNlKCksXG4gICAgICAgIC4uLnByb3ZpZGVyWzJdXG4gICAgICB9O1xuICAgIH1cbiAgfVxuICBpZiAoZW52LlNIRUxMICYmIGVudi5TSEVMTCA9PT0gXCIvYmluL2pzaFwiKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgICAgY2k6IGZhbHNlXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6IFwiXCIsXG4gICAgY2k6IGZhbHNlXG4gIH07XG59XG5cbmNvbnN0IHByb2Nlc3NTaGltID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgPyBwcm9jZXNzIDoge307XG5jb25zdCBlbnZTaGltID0gcHJvY2Vzc1NoaW0uZW52IHx8IHt9O1xuY29uc3QgcHJvdmlkZXJJbmZvID0gZGV0ZWN0UHJvdmlkZXIoZW52U2hpbSk7XG5jb25zdCBub2RlRU5WID0gdHlwZW9mIHByb2Nlc3MgIT09IFwidW5kZWZpbmVkXCIgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgXCJcIjtcbnByb2Nlc3NTaGltLnBsYXRmb3JtO1xucHJvdmlkZXJJbmZvLm5hbWU7XG5jb25zdCBpc0NJID0gdG9Cb29sZWFuKGVudlNoaW0uQ0kpIHx8IHByb3ZpZGVySW5mby5jaSAhPT0gZmFsc2U7XG5jb25zdCBoYXNUVFkgPSB0b0Jvb2xlYW4ocHJvY2Vzc1NoaW0uc3Rkb3V0ICYmIHByb2Nlc3NTaGltLnN0ZG91dC5pc1RUWSk7XG5jb25zdCBpc0RlYnVnID0gdG9Cb29sZWFuKGVudlNoaW0uREVCVUcpO1xuY29uc3QgaXNUZXN0ID0gbm9kZUVOViA9PT0gXCJ0ZXN0XCIgfHwgdG9Cb29sZWFuKGVudlNoaW0uVEVTVCk7XG50b0Jvb2xlYW4oZW52U2hpbS5NSU5JTUFMKSB8fCBpc0NJIHx8IGlzVGVzdCB8fCAhaGFzVFRZO1xuZnVuY3Rpb24gdG9Cb29sZWFuKHZhbCkge1xuICByZXR1cm4gdmFsID8gdmFsICE9PSBcImZhbHNlXCIgOiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gYW5zaVJlZ2V4KHtvbmx5Rmlyc3QgPSBmYWxzZX0gPSB7fSkge1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHQgICAgJ1tcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopP1xcXFx1MDAwNyknLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW50cXJ5PT48fl0pKSdcblx0XS5qb2luKCd8Jyk7XG5cblx0cmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgb25seUZpcnN0ID8gdW5kZWZpbmVkIDogJ2cnKTtcbn1cblxuY29uc3QgcmVnZXggPSBhbnNpUmVnZXgoKTtcblxuZnVuY3Rpb24gc3RyaXBBbnNpKHN0cmluZykge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIFxcYHN0cmluZ1xcYCwgZ290IFxcYCR7dHlwZW9mIHN0cmluZ31cXGBgKTtcblx0fVxuXG5cdC8vIEV2ZW4gdGhvdWdoIHRoZSByZWdleCBpcyBnbG9iYWwsIHdlIGRvbid0IG5lZWQgdG8gcmVzZXQgdGhlIGAubGFzdEluZGV4YFxuXHQvLyBiZWNhdXNlIHVubGlrZSBgLmV4ZWMoKWAgYW5kIGAudGVzdCgpYCwgYC5yZXBsYWNlKClgIGRvZXMgaXQgYXV0b21hdGljYWxseVxuXHQvLyBhbmQgZG9pbmcgaXQgbWFudWFsbHkgaGFzIGEgcGVyZm9ybWFuY2UgcGVuYWx0eS5cblx0cmV0dXJuIHN0cmluZy5yZXBsYWNlKHJlZ2V4LCAnJyk7XG59XG5cbmZ1bmN0aW9uIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzICh4KSB7XG5cdHJldHVybiB4ICYmIHguX19lc01vZHVsZSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoeCwgJ2RlZmF1bHQnKSA/IHhbJ2RlZmF1bHQnXSA6IHg7XG59XG5cbnZhciBlYXN0YXNpYW53aWR0aCA9IHtleHBvcnRzOiB7fX07XG5cbihmdW5jdGlvbiAobW9kdWxlKSB7XG5cdHZhciBlYXcgPSB7fTtcblxuXHR7XG5cdCAgbW9kdWxlLmV4cG9ydHMgPSBlYXc7XG5cdH1cblxuXHRlYXcuZWFzdEFzaWFuV2lkdGggPSBmdW5jdGlvbihjaGFyYWN0ZXIpIHtcblx0ICB2YXIgeCA9IGNoYXJhY3Rlci5jaGFyQ29kZUF0KDApO1xuXHQgIHZhciB5ID0gKGNoYXJhY3Rlci5sZW5ndGggPT0gMikgPyBjaGFyYWN0ZXIuY2hhckNvZGVBdCgxKSA6IDA7XG5cdCAgdmFyIGNvZGVQb2ludCA9IHg7XG5cdCAgaWYgKCgweEQ4MDAgPD0geCAmJiB4IDw9IDB4REJGRikgJiYgKDB4REMwMCA8PSB5ICYmIHkgPD0gMHhERkZGKSkge1xuXHQgICAgeCAmPSAweDNGRjtcblx0ICAgIHkgJj0gMHgzRkY7XG5cdCAgICBjb2RlUG9pbnQgPSAoeCA8PCAxMCkgfCB5O1xuXHQgICAgY29kZVBvaW50ICs9IDB4MTAwMDA7XG5cdCAgfVxuXG5cdCAgaWYgKCgweDMwMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjAxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRjYwKSB8fFxuXHQgICAgICAoMHhGRkUwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkU2KSkge1xuXHQgICAgcmV0dXJuICdGJztcblx0ICB9XG5cdCAgaWYgKCgweDIwQTkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHhGRjYxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkJFKSB8fFxuXHQgICAgICAoMHhGRkMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkM3KSB8fFxuXHQgICAgICAoMHhGRkNBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkNGKSB8fFxuXHQgICAgICAoMHhGRkQyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkQ3KSB8fFxuXHQgICAgICAoMHhGRkRBIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkRDKSB8fFxuXHQgICAgICAoMHhGRkU4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkVFKSkge1xuXHQgICAgcmV0dXJuICdIJztcblx0ICB9XG5cdCAgaWYgKCgweDExMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExNUYpIHx8XG5cdCAgICAgICgweDExQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExQTcpIHx8XG5cdCAgICAgICgweDExRkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDExRkYpIHx8XG5cdCAgICAgICgweDIzMjkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIzMkEpIHx8XG5cdCAgICAgICgweDJFODAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFOTkpIHx8XG5cdCAgICAgICgweDJFOUIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJFRjMpIHx8XG5cdCAgICAgICgweDJGMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRDUpIHx8XG5cdCAgICAgICgweDJGRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDJGRkIpIHx8XG5cdCAgICAgICgweDMwMDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwM0UpIHx8XG5cdCAgICAgICgweDMwNDEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwOTYpIHx8XG5cdCAgICAgICgweDMwOTkgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMwRkYpIHx8XG5cdCAgICAgICgweDMxMDUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxMkQpIHx8XG5cdCAgICAgICgweDMxMzEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxOEUpIHx8XG5cdCAgICAgICgweDMxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxQkEpIHx8XG5cdCAgICAgICgweDMxQzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMxRTMpIHx8XG5cdCAgICAgICgweDMxRjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyMUUpIHx8XG5cdCAgICAgICgweDMyMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyNDcpIHx8XG5cdCAgICAgICgweDMyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDMyRkUpIHx8XG5cdCAgICAgICgweDMzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDREQkYpIHx8XG5cdCAgICAgICgweDRFMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0OEMpIHx8XG5cdCAgICAgICgweEE0OTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE0QzYpIHx8XG5cdCAgICAgICgweEE5NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEE5N0MpIHx8XG5cdCAgICAgICgweEFDMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QTMpIHx8XG5cdCAgICAgICgweEQ3QjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3QzYpIHx8XG5cdCAgICAgICgweEQ3Q0IgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEQ3RkIpIHx8XG5cdCAgICAgICgweEY5MDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZBRkYpIHx8XG5cdCAgICAgICgweEZFMTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFMTkpIHx8XG5cdCAgICAgICgweEZFMzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNTIpIHx8XG5cdCAgICAgICgweEZFNTQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNjYpIHx8XG5cdCAgICAgICgweEZFNjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweEZFNkIpIHx8XG5cdCAgICAgICgweDFCMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxQjAwMSkgfHxcblx0ICAgICAgKDB4MUYyMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjAyKSB8fFxuXHQgICAgICAoMHgxRjIxMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYyM0EpIHx8XG5cdCAgICAgICgweDFGMjQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjI0OCkgfHxcblx0ICAgICAgKDB4MUYyNTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMjUxKSB8fFxuXHQgICAgICAoMHgyMDAwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MkY3M0YpIHx8XG5cdCAgICAgICgweDJCNzQwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyRkZGRCkgfHxcblx0ICAgICAgKDB4MzAwMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDNGRkZEKSkge1xuXHQgICAgcmV0dXJuICdXJztcblx0ICB9XG5cdCAgaWYgKCgweDAwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwN0UpIHx8XG5cdCAgICAgICgweDAwQTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTMpIHx8XG5cdCAgICAgICgweDAwQTUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwQTYpIHx8XG5cdCAgICAgICgweDAwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEFGID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjdFNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjdFRCkgfHxcblx0ICAgICAgKDB4Mjk4NSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4Mjk4NikpIHtcblx0ICAgIHJldHVybiAnTmEnO1xuXHQgIH1cblx0ICBpZiAoKDB4MDBBMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwQTQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEE3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEE4KSB8fFxuXHQgICAgICAoMHgwMEFBID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBBRCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBBRSkgfHxcblx0ICAgICAgKDB4MDBCMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCNCkgfHxcblx0ICAgICAgKDB4MDBCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCQSkgfHxcblx0ICAgICAgKDB4MDBCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBCRikgfHxcblx0ICAgICAgKDB4MDBDNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEQ3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEQ4KSB8fFxuXHQgICAgICAoMHgwMERFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMEUxKSB8fFxuXHQgICAgICAoMHgwMEU2ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDBFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFQSkgfHxcblx0ICAgICAgKDB4MDBFQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDBFRCkgfHxcblx0ICAgICAgKDB4MDBGMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAwRjIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRjMpIHx8XG5cdCAgICAgICgweDAwRjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAwRkEpIHx8XG5cdCAgICAgICgweDAwRkMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMEZFID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEwMSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDExQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxMjYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxMjcpIHx8XG5cdCAgICAgICgweDAxMkIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTMxIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTMzKSB8fFxuXHQgICAgICAoMHgwMTM4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDEzRiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDE0MikgfHxcblx0ICAgICAgKDB4MDE0NCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxNDggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAxNEIpIHx8XG5cdCAgICAgICgweDAxNEQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMTUyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTUzKSB8fFxuXHQgICAgICAoMHgwMTY2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMTY3KSB8fFxuXHQgICAgICAoMHgwMTZCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFDRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFENCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxRDYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMUQ4ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDFEQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAxREMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMjUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDI2MSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyQzQgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkM3ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJDOSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MDJDQikgfHxcblx0ICAgICAgKDB4MDJDRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAyRDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwMkQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwMkRCKSB8fFxuXHQgICAgICAoMHgwMkREID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MDJERiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDAzMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzNkYpIHx8XG5cdCAgICAgICgweDAzOTEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTEpIHx8XG5cdCAgICAgICgweDAzQTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQTkpIHx8XG5cdCAgICAgICgweDAzQjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzEpIHx8XG5cdCAgICAgICgweDAzQzMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDAzQzkpIHx8XG5cdCAgICAgICgweDA0MDEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgwNDEwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgwNDRGKSB8fFxuXHQgICAgICAoMHgwNDUxID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAxMCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwMTMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTYpIHx8XG5cdCAgICAgICgweDIwMTggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMTkpIHx8XG5cdCAgICAgICgweDIwMUMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMUQpIHx8XG5cdCAgICAgICgweDIwMjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjIpIHx8XG5cdCAgICAgICgweDIwMjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwMjcpIHx8XG5cdCAgICAgICgweDIwMzAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDMyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMDMzKSB8fFxuXHQgICAgICAoMHgyMDM1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjAzQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwM0UgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMDc0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjA3RiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIwODEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIwODQpIHx8XG5cdCAgICAgICgweDIwQUMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTAzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjEwNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMDkgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTEzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjExNiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxMjEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxMjIpIHx8XG5cdCAgICAgICgweDIxMjYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMTJCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjE1MyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1NCkgfHxcblx0ICAgICAgKDB4MjE1QiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE1RSkgfHxcblx0ICAgICAgKDB4MjE2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE2QikgfHxcblx0ICAgICAgKDB4MjE3MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjE3OSkgfHxcblx0ICAgICAgKDB4MjE4OSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIxOTAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxOTkpIHx8XG5cdCAgICAgICgweDIxQjggPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIxQjkpIHx8XG5cdCAgICAgICgweDIxRDIgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMUQ0ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjFFNyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMDAgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjAyIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjAzKSB8fFxuXHQgICAgICAoMHgyMjA3IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyMjA4KSB8fFxuXHQgICAgICAoMHgyMjBCID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIwRiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMTEgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjE1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIxQSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMUQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMjApIHx8XG5cdCAgICAgICgweDIyMjMgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjI1ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjIyNyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjIyQykgfHxcblx0ICAgICAgKDB4MjIyRSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyMzQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyMzcpIHx8XG5cdCAgICAgICgweDIyM0MgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyM0QpIHx8XG5cdCAgICAgICgweDIyNDggPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjRDID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjI1MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyNjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjEpIHx8XG5cdCAgICAgICgweDIyNjQgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNjcpIHx8XG5cdCAgICAgICgweDIyNkEgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkIpIHx8XG5cdCAgICAgICgweDIyNkUgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyNkYpIHx8XG5cdCAgICAgICgweDIyODIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODMpIHx8XG5cdCAgICAgICgweDIyODYgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDIyODcpIHx8XG5cdCAgICAgICgweDIyOTUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMjk5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjJBNSA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDIyQkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyMzEyID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjQ2MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjRFOSkgfHxcblx0ICAgICAgKDB4MjRFQiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU0QikgfHxcblx0ICAgICAgKDB4MjU1MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU3MykgfHxcblx0ICAgICAgKDB4MjU4MCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU4RikgfHxcblx0ICAgICAgKDB4MjU5MiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjU5NSkgfHxcblx0ICAgICAgKDB4MjVBMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBMSkgfHxcblx0ICAgICAgKDB4MjVBMyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVBOSkgfHxcblx0ICAgICAgKDB4MjVCMiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCMykgfHxcblx0ICAgICAgKDB4MjVCNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCNykgfHxcblx0ICAgICAgKDB4MjVCQyA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVCRCkgfHxcblx0ICAgICAgKDB4MjVDMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDMSkgfHxcblx0ICAgICAgKDB4MjVDNiA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjVDOCkgfHxcblx0ICAgICAgKDB4MjVDQiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI1Q0UgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RDEpIHx8XG5cdCAgICAgICgweDI1RTIgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI1RTUpIHx8XG5cdCAgICAgICgweDI1RUYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjA1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjA2KSB8fFxuXHQgICAgICAoMHgyNjA5ID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjYwRSA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYwRikgfHxcblx0ICAgICAgKDB4MjYxNCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjYxNSkgfHxcblx0ICAgICAgKDB4MjYxQyA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2MUUgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjQwID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjY0MiA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI2NjAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjEpIHx8XG5cdCAgICAgICgweDI2NjMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NjUpIHx8XG5cdCAgICAgICgweDI2NjcgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkEpIHx8XG5cdCAgICAgICgweDI2NkMgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDI2NkQpIHx8XG5cdCAgICAgICgweDI2NkYgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNjlFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNjlGKSB8fFxuXHQgICAgICAoMHgyNkJFIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkJGKSB8fFxuXHQgICAgICAoMHgyNkM0IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkNEKSB8fFxuXHQgICAgICAoMHgyNkNGIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNkUxKSB8fFxuXHQgICAgICAoMHgyNkUzID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MjZFOCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MjZGRikgfHxcblx0ICAgICAgKDB4MjczRCA9PSBjb2RlUG9pbnQpIHx8XG5cdCAgICAgICgweDI3NTcgPT0gY29kZVBvaW50KSB8fFxuXHQgICAgICAoMHgyNzc2IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyNzdGKSB8fFxuXHQgICAgICAoMHgyQjU1IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgyQjU5KSB8fFxuXHQgICAgICAoMHgzMjQ4IDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgzMjRGKSB8fFxuXHQgICAgICAoMHhFMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGOEZGKSB8fFxuXHQgICAgICAoMHhGRTAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRTBGKSB8fFxuXHQgICAgICAoMHhGRkZEID09IGNvZGVQb2ludCkgfHxcblx0ICAgICAgKDB4MUYxMDAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTBBKSB8fFxuXHQgICAgICAoMHgxRjExMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4MUYxMkQpIHx8XG5cdCAgICAgICgweDFGMTMwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxRjE2OSkgfHxcblx0ICAgICAgKDB4MUYxNzAgPD0gY29kZVBvaW50ICYmIGNvZGVQb2ludCA8PSAweDFGMTlBKSB8fFxuXHQgICAgICAoMHhFMDEwMCA8PSBjb2RlUG9pbnQgJiYgY29kZVBvaW50IDw9IDB4RTAxRUYpIHx8XG5cdCAgICAgICgweEYwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHhGRkZGRCkgfHxcblx0ICAgICAgKDB4MTAwMDAwIDw9IGNvZGVQb2ludCAmJiBjb2RlUG9pbnQgPD0gMHgxMEZGRkQpKSB7XG5cdCAgICByZXR1cm4gJ0EnO1xuXHQgIH1cblxuXHQgIHJldHVybiAnTic7XG5cdH07XG5cblx0ZWF3LmNoYXJhY3Rlckxlbmd0aCA9IGZ1bmN0aW9uKGNoYXJhY3Rlcikge1xuXHQgIHZhciBjb2RlID0gdGhpcy5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHQgIGlmIChjb2RlID09ICdGJyB8fCBjb2RlID09ICdXJyB8fCBjb2RlID09ICdBJykge1xuXHQgICAgcmV0dXJuIDI7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiAxO1xuXHQgIH1cblx0fTtcblxuXHQvLyBTcGxpdCBhIHN0cmluZyBjb25zaWRlcmluZyBzdXJyb2dhdGUtcGFpcnMuXG5cdGZ1bmN0aW9uIHN0cmluZ1RvQXJyYXkoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIHN0cmluZy5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZykgfHwgW107XG5cdH1cblxuXHRlYXcubGVuZ3RoID0gZnVuY3Rpb24oc3RyaW5nKSB7XG5cdCAgdmFyIGNoYXJhY3RlcnMgPSBzdHJpbmdUb0FycmF5KHN0cmluZyk7XG5cdCAgdmFyIGxlbiA9IDA7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGFyYWN0ZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBsZW4gPSBsZW4gKyB0aGlzLmNoYXJhY3Rlckxlbmd0aChjaGFyYWN0ZXJzW2ldKTtcblx0ICB9XG5cdCAgcmV0dXJuIGxlbjtcblx0fTtcblxuXHRlYXcuc2xpY2UgPSBmdW5jdGlvbih0ZXh0LCBzdGFydCwgZW5kKSB7XG5cdCAgdGV4dExlbiA9IGVhdy5sZW5ndGgodGV4dCk7XG5cdCAgc3RhcnQgPSBzdGFydCA/IHN0YXJ0IDogMDtcblx0ICBlbmQgPSBlbmQgPyBlbmQgOiAxO1xuXHQgIGlmIChzdGFydCA8IDApIHtcblx0ICAgICAgc3RhcnQgPSB0ZXh0TGVuICsgc3RhcnQ7XG5cdCAgfVxuXHQgIGlmIChlbmQgPCAwKSB7XG5cdCAgICAgIGVuZCA9IHRleHRMZW4gKyBlbmQ7XG5cdCAgfVxuXHQgIHZhciByZXN1bHQgPSAnJztcblx0ICB2YXIgZWF3TGVuID0gMDtcblx0ICB2YXIgY2hhcnMgPSBzdHJpbmdUb0FycmF5KHRleHQpO1xuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hhcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBjaGFyID0gY2hhcnNbaV07XG5cdCAgICB2YXIgY2hhckxlbiA9IGVhdy5sZW5ndGgoY2hhcik7XG5cdCAgICBpZiAoZWF3TGVuID49IHN0YXJ0IC0gKGNoYXJMZW4gPT0gMiA/IDEgOiAwKSkge1xuXHQgICAgICAgIGlmIChlYXdMZW4gKyBjaGFyTGVuIDw9IGVuZCkge1xuXHQgICAgICAgICAgICByZXN1bHQgKz0gY2hhcjtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBlYXdMZW4gKz0gY2hhckxlbjtcblx0ICB9XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fTsgXG59IChlYXN0YXNpYW53aWR0aCkpO1xuXG52YXIgZWFzdGFzaWFud2lkdGhFeHBvcnRzID0gZWFzdGFzaWFud2lkdGguZXhwb3J0cztcbmNvbnN0IGVhc3RBc2lhbldpZHRoID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKGVhc3Rhc2lhbndpZHRoRXhwb3J0cyk7XG5cbmNvbnN0IGVtb2ppUmVnZXggPSAoKSA9PiB7XG5cdC8vIGh0dHBzOi8vbXRocy5iZS9lbW9qaVxuXHRyZXR1cm4gL1sjKjAtOV1cXHVGRTBGP1xcdTIwRTN8W1xceEE5XFx4QUVcXHUyMDNDXFx1MjA0OVxcdTIxMjJcXHUyMTM5XFx1MjE5NC1cXHUyMTk5XFx1MjFBOVxcdTIxQUFcXHUyMzFBXFx1MjMxQlxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjVGRVxcdTI2MDAtXFx1MjYwNFxcdTI2MEVcXHUyNjExXFx1MjYxNFxcdTI2MTVcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5MlxcdTI2OTQtXFx1MjY5N1xcdTI2OTlcXHUyNjlCXFx1MjY5Q1xcdTI2QTBcXHUyNkE3XFx1MjZBQVxcdTI2QjBcXHUyNkIxXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDOFxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RTlcXHUyNkYwLVxcdTI2RjVcXHUyNkY3XFx1MjZGOFxcdTI2RkFcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc1N1xcdTI3NjNcXHUyN0ExXFx1MjkzNFxcdTI5MzVcXHUyQjA1LVxcdTJCMDdcXHUyQjFCXFx1MkIxQ1xcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XVxcdUZFMEY/fFtcXHUyNjFEXFx1MjcwQ1xcdTI3MERdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1MjcwQVxcdTI3MEJdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI2OTNcXHUyNkExXFx1MjZBQlxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkZEXFx1MjcwNVxcdTI3MjhcXHUyNzRDXFx1Mjc0RVxcdTI3NTMtXFx1Mjc1NVxcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkI1MF18XFx1MjZGOSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1Mjc2NFxcdUZFMEY/KD86XFx1MjAwRCg/OlxcdUQ4M0RcXHVERDI1fFxcdUQ4M0VcXHVERTc5KSk/fFxcdUQ4M0MoPzpbXFx1REMwNFxcdURENzBcXHVERDcxXFx1REQ3RVxcdUREN0ZcXHVERTAyXFx1REUzN1xcdURGMjFcXHVERjI0LVxcdURGMkNcXHVERjM2XFx1REY3RFxcdURGOTZcXHVERjk3XFx1REY5OS1cXHVERjlCXFx1REY5RVxcdURGOUZcXHVERkNEXFx1REZDRVxcdURGRDQtXFx1REZERlxcdURGRjVcXHVERkY3XVxcdUZFMEY/fFtcXHVERjg1XFx1REZDMlxcdURGQzddKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURGQzNcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl18XFx1RERFOVxcdUQ4M0NbXFx1RERFQVxcdURERUNcXHVEREVGXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGRl18XFx1RERFQVxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERURcXHVEREY3LVxcdURERkFdfFxcdURERUJcXHVEODNDW1xcdURERUUtXFx1RERGMFxcdURERjJcXHVEREY0XFx1RERGN118XFx1RERFQ1xcdUQ4M0NbXFx1RERFNlxcdURERTdcXHVEREU5LVxcdURERUVcXHVEREYxLVxcdURERjNcXHVEREY1LVxcdURERkFcXHVEREZDXFx1RERGRV18XFx1RERFRFxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXXxcXHVEREVFXFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldfFxcdURERUZcXHVEODNDW1xcdURERUFcXHVEREYyXFx1RERGNFxcdURERjVdfFxcdURERjBcXHVEODNDW1xcdURERUFcXHVEREVDLVxcdURERUVcXHVEREYyXFx1RERGM1xcdURERjVcXHVEREY3XFx1RERGQ1xcdURERkVcXHVEREZGXXxcXHVEREYxXFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdfFxcdURERjJcXHVEODNDW1xcdURERTZcXHVEREU4LVxcdURERURcXHVEREYwLVxcdURERkZdfFxcdURERjNcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQS1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREY0XFx1RERGNVxcdURERjdcXHVEREZBXFx1RERGRl18XFx1RERGNFxcdUQ4M0NcXHVEREYyfFxcdURERjVcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV18XFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdURERjdcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXXxcXHVEREY4XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXXxcXHVEREY5XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl18XFx1RERGQVxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl18XFx1RERGQlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBXFx1RERFQ1xcdURERUVcXHVEREYzXFx1RERGQV18XFx1RERGQ1xcdUQ4M0NbXFx1RERFQlxcdURERjhdfFxcdURERkRcXHVEODNDXFx1RERGMHxcXHVEREZFXFx1RDgzQ1tcXHVEREVBXFx1RERGOV18XFx1RERGRlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXXxcXHVERkYzXFx1RkUwRj8oPzpcXHUyMDBEKD86XFx1MjZBN1xcdUZFMEY/fFxcdUQ4M0NcXHVERjA4KSk/fFxcdURGRjQoPzpcXHUyMDBEXFx1MjYyMFxcdUZFMEY/fFxcdURCNDBcXHVEQzY3XFx1REI0MFxcdURDNjJcXHVEQjQwKD86XFx1REM2NVxcdURCNDBcXHVEQzZFXFx1REI0MFxcdURDNjd8XFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REM3N1xcdURCNDBcXHVEQzZDXFx1REI0MFxcdURDNzMpXFx1REI0MFxcdURDN0YpPyl8XFx1RDgzRCg/OltcXHVEQzA4XFx1REMyNl0oPzpcXHUyMDBEXFx1MkIxQik/fFtcXHVEQzNGXFx1RENGRFxcdURENDlcXHVERDRBXFx1REQ2RlxcdURENzBcXHVERDczXFx1REQ3Ni1cXHVERDc5XFx1REQ4N1xcdUREOEEtXFx1REQ4RFxcdUREQTVcXHVEREE4XFx1RERCMVxcdUREQjJcXHVEREJDXFx1RERDMi1cXHVEREM0XFx1REREMS1cXHVEREQzXFx1REREQy1cXHVERERFXFx1RERFMVxcdURERTNcXHVEREU4XFx1RERFRlxcdURERjNcXHVEREZBXFx1REVDQlxcdURFQ0QtXFx1REVDRlxcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUYwXFx1REVGM11cXHVGRTBGP3xbXFx1REM0MlxcdURDNDNcXHVEQzQ2LVxcdURDNTBcXHVEQzY2XFx1REM2N1xcdURDNkItXFx1REM2RFxcdURDNzJcXHVEQzc0LVxcdURDNzZcXHVEQzc4XFx1REM3Q1xcdURDODNcXHVEQzg1XFx1REM4RlxcdURDOTFcXHVEQ0FBXFx1REQ3QVxcdUREOTVcXHVERDk2XFx1REU0Q1xcdURFNEZcXHVERUMwXFx1REVDQ10oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RkUwRnxcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0NFxcdURFNDgtXFx1REU0QVxcdURFODAtXFx1REVBMlxcdURFQTQtXFx1REVCM1xcdURFQjctXFx1REVCRlxcdURFQzEtXFx1REVDNVxcdURFRDAtXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFREMtXFx1REVERlxcdURFRUJcXHVERUVDXFx1REVGNC1cXHVERUZDXFx1REZFMC1cXHVERkVCXFx1REZGMF18XFx1REMxNSg/OlxcdTIwMERcXHVEODNFXFx1RERCQSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKSkpP3xcXHVERkZFKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNjkoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/W1xcdURDNjhcXHVEQzY5XXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEKD86W1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pP3xcXHVEQzY5XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzY2KD86XFx1MjAwRFxcdUQ4M0RcXHVEQzY2KT98XFx1REM2Nyg/OlxcdTIwMERcXHVEODNEW1xcdURDNjZcXHVEQzY3XSk/KSl8XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzZGKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURENzUoPzpcXHVGRTBGfFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdURFMkUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQTgpP3xcXHVERTM1KD86XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCKT98XFx1REUzNig/OlxcdTIwMERcXHVEODNDXFx1REYyQlxcdUZFMEY/KT8pfFxcdUQ4M0UoPzpbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDMwLVxcdUREMzRcXHVERDM2XFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCQlxcdURERDJcXHVEREQzXFx1RERENVxcdURFQzMtXFx1REVDNVxcdURFRjBcXHVERUYyLVxcdURFRjhdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg4XFx1REU5MC1cXHVERUJEXFx1REVCRi1cXHVERUMyXFx1REVDRS1cXHVERURCXFx1REVFMC1cXHVERUU4XXxcXHVERDNDKD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGP3xcXHVEODNDW1xcdURGRkItXFx1REZGRl0pP3xcXHVEREQxKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxKSl8XFx1RDgzQyg/OlxcdURGRkIoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkMoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF18XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkYoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmZ1bmN0aW9uIHN0cmluZ1dpZHRoJDEoc3RyaW5nLCBvcHRpb25zKSB7XG5cdGlmICh0eXBlb2Ygc3RyaW5nICE9PSAnc3RyaW5nJyB8fCBzdHJpbmcubGVuZ3RoID09PSAwKSB7XG5cdFx0cmV0dXJuIDA7XG5cdH1cblxuXHRvcHRpb25zID0ge1xuXHRcdGFtYmlndW91c0lzTmFycm93OiB0cnVlLFxuXHRcdGNvdW50QW5zaUVzY2FwZUNvZGVzOiBmYWxzZSxcblx0XHQuLi5vcHRpb25zLFxuXHR9O1xuXG5cdGlmICghb3B0aW9ucy5jb3VudEFuc2lFc2NhcGVDb2Rlcykge1xuXHRcdHN0cmluZyA9IHN0cmlwQW5zaShzdHJpbmcpO1xuXHR9XG5cblx0aWYgKHN0cmluZy5sZW5ndGggPT09IDApIHtcblx0XHRyZXR1cm4gMDtcblx0fVxuXG5cdGNvbnN0IGFtYmlndW91c0NoYXJhY3RlcldpZHRoID0gb3B0aW9ucy5hbWJpZ3VvdXNJc05hcnJvdyA/IDEgOiAyO1xuXHRsZXQgd2lkdGggPSAwO1xuXG5cdGZvciAoY29uc3Qge3NlZ21lbnQ6IGNoYXJhY3Rlcn0gb2YgbmV3IEludGwuU2VnbWVudGVyKCkuc2VnbWVudChzdHJpbmcpKSB7XG5cdFx0Y29uc3QgY29kZVBvaW50ID0gY2hhcmFjdGVyLmNvZGVQb2ludEF0KDApO1xuXG5cdFx0Ly8gSWdub3JlIGNvbnRyb2wgY2hhcmFjdGVyc1xuXHRcdGlmIChjb2RlUG9pbnQgPD0gMHgxRiB8fCAoY29kZVBvaW50ID49IDB4N0YgJiYgY29kZVBvaW50IDw9IDB4OUYpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHRpZiAoZW1vamlSZWdleCgpLnRlc3QoY2hhcmFjdGVyKSkge1xuXHRcdFx0d2lkdGggKz0gMjtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnN0IGNvZGUgPSBlYXN0QXNpYW5XaWR0aC5lYXN0QXNpYW5XaWR0aChjaGFyYWN0ZXIpO1xuXHRcdHN3aXRjaCAoY29kZSkge1xuXHRcdFx0Y2FzZSAnRic6XG5cdFx0XHRjYXNlICdXJzoge1xuXHRcdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0XHRicmVhaztcblx0XHRcdH1cblxuXHRcdFx0Y2FzZSAnQSc6IHtcblx0XHRcdFx0d2lkdGggKz0gYW1iaWd1b3VzQ2hhcmFjdGVyV2lkdGg7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0fVxuXG5cdFx0XHRkZWZhdWx0OiB7XG5cdFx0XHRcdHdpZHRoICs9IDE7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGlmIChwcm9jZXNzJDEucGxhdGZvcm0gIT09ICd3aW4zMicpIHtcblx0XHRyZXR1cm4gcHJvY2VzcyQxLmVudi5URVJNICE9PSAnbGludXgnOyAvLyBMaW51eCBjb25zb2xlIChrZXJuZWwpXG5cdH1cblxuXHRyZXR1cm4gQm9vbGVhbihwcm9jZXNzJDEuZW52LkNJKVxuXHRcdHx8IEJvb2xlYW4ocHJvY2VzcyQxLmVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihwcm9jZXNzJDEuZW52LlRFUk1JTlVTX1NVQkxJTUUpIC8vIFRlcm1pbnVzICg8MC4yLjI3KVxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuQ29uRW11VGFzayA9PT0gJ3tjbWQ6OkNtZGVyfScgLy8gQ29uRW11IGFuZCBjbWRlclxuXHRcdHx8IHByb2Nlc3MkMS5lbnYuVEVSTV9QUk9HUkFNID09PSAnVGVybWludXMtU3VibGltZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICd4dGVybS0yNTZjb2xvcidcblx0XHR8fCBwcm9jZXNzJDEuZW52LlRFUk0gPT09ICdhbGFjcml0dHknXG5cdFx0fHwgcHJvY2VzcyQxLmVudi5URVJNSU5BTF9FTVVMQVRPUiA9PT0gJ0pldEJyYWlucy1KZWRpVGVybSc7XG59XG5cbmNvbnN0IFRZUEVfQ09MT1JfTUFQID0ge1xuICBpbmZvOiBcImN5YW5cIixcbiAgZmFpbDogXCJyZWRcIixcbiAgc3VjY2VzczogXCJncmVlblwiLFxuICByZWFkeTogXCJncmVlblwiLFxuICBzdGFydDogXCJtYWdlbnRhXCJcbn07XG5jb25zdCBMRVZFTF9DT0xPUl9NQVAgPSB7XG4gIDA6IFwicmVkXCIsXG4gIDE6IFwieWVsbG93XCJcbn07XG5jb25zdCB1bmljb2RlID0gaXNVbmljb2RlU3VwcG9ydGVkKCk7XG5jb25zdCBzID0gKGMsIGZhbGxiYWNrKSA9PiB1bmljb2RlID8gYyA6IGZhbGxiYWNrO1xuY29uc3QgVFlQRV9JQ09OUyA9IHtcbiAgZXJyb3I6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIGZhdGFsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICByZWFkeTogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICB3YXJuOiBzKFwiXFx1MjZBMFwiLCBcIlxcdTIwM0NcIiksXG4gIGluZm86IHMoXCJcXHUyMTM5XCIsIFwiaVwiKSxcbiAgc3VjY2VzczogcyhcIlxcdTI3MTRcIiwgXCJcXHUyMjFBXCIpLFxuICBkZWJ1ZzogcyhcIlxcdTI2OTlcIiwgXCJEXCIpLFxuICB0cmFjZTogcyhcIlxcdTIxOTJcIiwgXCJcXHUyMTkyXCIpLFxuICBmYWlsOiBzKFwiXFx1MjcxNlwiLCBcIlxceEQ3XCIpLFxuICBzdGFydDogcyhcIlxcdTI1RDBcIiwgXCJvXCIpLFxuICBsb2c6IFwiXCJcbn07XG5mdW5jdGlvbiBzdHJpbmdXaWR0aChzdHIpIHtcbiAgaWYgKCFJbnRsLlNlZ21lbnRlcikge1xuICAgIHJldHVybiBzdHJpcEFuc2kkMShzdHIpLmxlbmd0aDtcbiAgfVxuICByZXR1cm4gc3RyaW5nV2lkdGgkMShzdHIpO1xufVxuY2xhc3MgRmFuY3lSZXBvcnRlciBleHRlbmRzIEJhc2ljUmVwb3J0ZXIge1xuICBmb3JtYXRTdGFjayhzdGFjaykge1xuICAgIHJldHVybiBcIlxcblwiICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihcIlxcblwiKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShpc0NJIHx8IGlzVGVzdCkgPyBuZXcgRmFuY3lSZXBvcnRlcigpIDogbmV3IEJhc2ljUmVwb3J0ZXIoKVxuICAgIF0sXG4gICAgLi4ub3B0aW9uc1xuICB9KTtcbiAgcmV0dXJuIGNvbnNvbGEyO1xufVxuZnVuY3Rpb24gX2dldERlZmF1bHRMb2dMZXZlbCgpIHtcbiAgaWYgKGlzRGVidWcpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLmRlYnVnO1xuICB9XG4gIGlmIChpc1Rlc3QpIHtcbiAgICByZXR1cm4gTG9nTGV2ZWxzLndhcm47XG4gIH1cbiAgcmV0dXJuIExvZ0xldmVscy5pbmZvO1xufVxuY29uc3QgY29uc29sYSA9IGNyZWF0ZUNvbnNvbGEoKTtcblxuZXhwb3J0IHsgY29uc29sYSBhcyBhLCBjcmVhdGVDb25zb2xhIGFzIGMsIGdldERlZmF1bHRFeHBvcnRGcm9tQ2pzIGFzIGcsIGlzVW5pY29kZVN1cHBvcnRlZCBhcyBpIH07XG4iLCAiLyogZXNsaW50LWRpc2FibGUgdW5pY29ybi9uby1wcm9jZXNzLWV4aXQgKi9cbmltcG9ydCBhc3NlcnQgZnJvbSBcIm5vZGU6YXNzZXJ0XCI7XG5pbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgeyBjcmVhdGVIYXNoIH0gZnJvbSBcIm5vZGU6Y3J5cHRvXCI7XG5pbXBvcnQgZnNTeW5jIGZyb20gXCJub2RlOmZzXCI7XG5pbXBvcnQgZnMgZnJvbSBcIm5vZGU6ZnMvcHJvbWlzZXNcIjtcbmltcG9ydCB7IGhhc2ggfSBmcm9tIFwib2hhc2hcIjtcbmltcG9ydCBlelNwYXduIGZyb20gXCJAanNkZXZ0b29scy9lei1zcGF3blwiO1xuaW1wb3J0IHsgZGVmaW5lQ29tbWFuZCwgcnVuTWFpbiB9IGZyb20gXCJjaXR0eVwiO1xuaW1wb3J0IHsgZ2V0UGFja2FnZU1hbmlmZXN0LCB0eXBlIFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuaW1wb3J0IHR5cGUgeyBDb21tZW50IH0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQge1xuICBhYmJyZXZpYXRlQ29tbWl0SGFzaCxcbiAgZXh0cmFjdE93bmVyQW5kUmVwbyxcbiAgZXh0cmFjdFJlcG9zaXRvcnksXG59IGZyb20gXCJAcGtnLXByLW5ldy91dGlsc1wiO1xuaW1wb3J0IHsgZ2xvYiB9IGZyb20gXCJ0aW55Z2xvYmJ5XCI7XG5pbXBvcnQgaWdub3JlIGZyb20gXCJpZ25vcmVcIjtcbmltcG9ydCBcIi4vZW52aXJvbm1lbnRzXCI7XG5pbXBvcnQgeyBpc0JpbmFyeUZpbGUgfSBmcm9tIFwiaXNiaW5hcnlmaWxlXCI7XG5pbXBvcnQgeyB3cml0ZVBhY2thZ2VKU09OLCB0eXBlIFBhY2thZ2VKc29uIH0gZnJvbSBcInBrZy10eXBlc1wiO1xuaW1wb3J0IHBrZyBmcm9tIFwiLi9wYWNrYWdlLmpzb25cIiB3aXRoIHsgdHlwZTogXCJqc29uXCIgfTtcbmltcG9ydCB7IGNyZWF0ZURlZmF1bHRUZW1wbGF0ZSB9IGZyb20gXCIuL3RlbXBsYXRlXCI7XG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgY29uc3QgQVBJX1VSTDogc3RyaW5nO1xufVxuXG50eXBlIE91dHB1dE1ldGFkYXRhID0ge1xuICBwYWNrYWdlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgICBzaGFzdW06IHN0cmluZztcbiAgfVtdO1xuICB0ZW1wbGF0ZXM6IHtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXJsOiBzdHJpbmc7XG4gIH1bXTtcbn07XG5cbmNvbnN0IGFwaVVybCA9IHByb2Nlc3MuZW52LkFQSV9VUkwgPz8gQVBJX1VSTDtcbmNvbnN0IHB1Ymxpc2hVcmwgPSBuZXcgVVJMKFwiL3B1Ymxpc2hcIiwgYXBpVXJsKTtcbmNvbnN0IGNyZWF0ZU11bHRpcGFydCA9IG5ldyBVUkwoXCIvbXVsdGlwYXJ0L2NyZWF0ZVwiLCBhcGlVcmwpO1xuY29uc3QgdXBsb2FkTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvdXBsb2FkXCIsIGFwaVVybCk7XG5jb25zdCBjb21wbGV0ZU11bHRpcGFydCA9IG5ldyBVUkwoXCIvbXVsdGlwYXJ0L2NvbXBsZXRlXCIsIGFwaVVybCk7XG5cbmNvbnN0IG1haW4gPSBkZWZpbmVDb21tYW5kKHtcbiAgbWV0YToge1xuICAgIHZlcnNpb246IHBrZy52ZXJzaW9uLFxuICAgIG5hbWU6IFwic3RhY2tibGl0elwiLFxuICAgIGRlc2NyaXB0aW9uOiBcIkEgQ0xJIGZvciBwa2cucHIubmV3IChDb250aW51b3VzIFJlbGVhc2VzKVwiLFxuICB9LFxuICBzdWJDb21tYW5kczoge1xuICAgIHB1Ymxpc2g6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICBjb21wYWN0OiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImNvbXBhY3QgdXJscy4gVGhlIHNob3J0ZXN0IGZvcm0gb2YgdXJscyBsaWtlIHBrZy5wci5uZXcvdGlueWJlbmNoQGE4MzJhNTUpXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwZWVyRGVwczoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJoYW5kbGUgcGVlckRlcGVuZGVuY2llcyBieSBzZXR0aW5nIHRoZSB3b3Jrc3BhY2UgdmVyc2lvbiBpbnN0ZWFkIG9mIHdoYXQgaGFzIGJlZW4gc2V0IGluIHRoZSBwZWVyRGVwcyBpdHNlbGYuIC0tcGVlckRlcHMgbm90IGJlaW5nIHRydWUgd291bGQgbGVhdmUgcGVlckRlcGVuZGVuY2llcyB0byB0aGUgcGFja2FnZSBtYW5hZ2VyIGl0c2VsZiAobnBtLCBwbnBtKVwiLFxuICAgICAgICAgICAgZGVmYXVsdDogZmFsc2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwbnBtOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcInVzZSBgcG5wbSBwYWNrYCBpbnN0ZWFkIG9mIGBucG0gcGFjayAtLWpzb25gXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB0ZW1wbGF0ZToge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImdlbmVyYXRlIHN0YWNrYmxpdHogdGVtcGxhdGVzIG91dCBvZiBkaXJlY3RvcmllcyBpbiB0aGUgY3VycmVudCByZXBvIHdpdGggdGhlIG5ldyBidWlsdCBwYWNrYWdlc1wiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY29tbWVudDoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIiwgLy8gXCJvZmZcIiwgXCJjcmVhdGVcIiwgXCJ1cGRhdGVcIiAoZGVmYXVsdClcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgXCJvZmZcIiBmb3Igbm8gY29tbWVudHMgKHNpbGVudCBtb2RlKS4gXCJjcmVhdGVcIiBmb3IgY29tbWVudCBvbiBlYWNoIHB1Ymxpc2guIFwidXBkYXRlXCIgZm9yIG9uZSBjb21tZW50IGFjcm9zcyB0aGUgcHVsbCByZXF1ZXN0IHdpdGggZWRpdHMgb24gZWFjaCBwdWJsaXNoIChkZWZhdWx0KWAsXG4gICAgICAgICAgICBkZWZhdWx0OiBcInVwZGF0ZVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgXCJvbmx5LXRlbXBsYXRlc1wiOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgZ2VuZXJhdGUgb25seSBzdGFja2JsaXR6IHRlbXBsYXRlc2AsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGpzb246IHtcbiAgICAgICAgICAgIHR5cGU6IFwibWl4ZWRcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgU2F2ZSBtZXRhZGF0YSB0byBhIEpTT04gZmlsZS4gSWYgdHJ1ZSwgbG9nIHRoZSBvdXRwdXQgZm9yIHBpcGluZy4gSWYgYSBzdHJpbmcsIHNhdmUgdGhlIG91dHB1dCB0byB0aGUgc3BlY2lmaWVkIGZpbGUgcGF0aC5gLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgcGFja2FnZU1hbmFnZXI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJTcGVjaWZ5IHRoZSBwYWNrYWdlIG1hbmFnZXIgdG8gdXNlIChucG0sIGJ1biwgcG5wbSwgeWFybilcIixcbiAgICAgICAgICAgIGVudW06IFtcIm5wbVwiLCBcImJ1blwiLCBcInBucG1cIiwgXCJ5YXJuXCJdLFxuICAgICAgICAgICAgZGVmYXVsdDogXCJucG1cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJpbjoge1xuICAgICAgICAgICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgXCJTZXQgdG8gdHJ1ZSBpZiB5b3VyIHBhY2thZ2UgaXMgYSBiaW5hcnkgYXBwbGljYXRpb24gYW5kIHlvdSB3b3VsZCBsaWtlIHRvIHNob3cgYW4gZXhlY3V0ZSBjb21tYW5kIGluc3RlYWQgb2YgYW4gaW5zdGFsbCBjb21tYW5kLlwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHJ1bjogYXN5bmMgKHsgYXJncyB9KSA9PiB7XG4gICAgICAgICAgY29uc3QgcGF0aHMgPVxuICAgICAgICAgICAgYXJncy5fLmxlbmd0aCA+IDBcbiAgICAgICAgICAgICAgPyBhd2FpdCBnbG9iKGFyZ3MuXywge1xuICAgICAgICAgICAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgb25seURpcmVjdG9yaWVzOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgOiBbcHJvY2Vzcy5jd2QoKV07XG5cbiAgICAgICAgICBjb25zdCB0ZW1wbGF0ZXMgPSBhd2FpdCBnbG9iKGFyZ3MudGVtcGxhdGUgfHwgW10sIHtcbiAgICAgICAgICAgIGV4cGFuZERpcmVjdG9yaWVzOiBmYWxzZSxcbiAgICAgICAgICAgIG9ubHlEaXJlY3RvcmllczogdHJ1ZSxcbiAgICAgICAgICAgIGFic29sdXRlOiB0cnVlLFxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgY29uc3QgZm9ybURhdGEgPSBuZXcgRm9ybURhdGEoKTtcblxuICAgICAgICAgIGNvbnN0IGlzQ29tcGFjdCA9ICEhYXJncy5jb21wYWN0O1xuICAgICAgICAgIGxldCBwYWNrTWV0aG9kOiBQYWNrTWV0aG9kID0gXCJucG1cIjtcblxuICAgICAgICAgIGlmIChhcmdzLnBucG0pIHtcbiAgICAgICAgICAgIHBhY2tNZXRob2QgPSBcInBucG1cIjtcbiAgICAgICAgICB9IGVsc2UgaWYgKGFyZ3MueWFybikge1xuICAgICAgICAgICAgcGFja01ldGhvZCA9IFwieWFyblwiO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IGlzUGVlckRlcHNFbmFibGVkID0gISFhcmdzLnBlZXJEZXBzO1xuICAgICAgICAgIGNvbnN0IGlzT25seVRlbXBsYXRlcyA9ICEhYXJnc1tcIm9ubHktdGVtcGxhdGVzXCJdO1xuXG4gICAgICAgICAgY29uc3QgaXNCaW5hcnlBcHBsaWNhdGlvbiA9ICEhYXJncy5iaW5hcnlBcHBsaWNhdGlvbjtcbiAgICAgICAgICBjb25zdCBjb21tZW50OiBDb21tZW50ID0gYXJncy5jb21tZW50IGFzIENvbW1lbnQ7XG4gICAgICAgICAgY29uc3Qgc2VsZWN0ZWRQYWNrYWdlTWFuYWdlciA9IGFyZ3MucGFja2FnZU1hbmFnZXIgYXNcbiAgICAgICAgICAgIHwgXCJucG1cIlxuICAgICAgICAgICAgfCBcImJ1blwiXG4gICAgICAgICAgICB8IFwicG5wbVwiXG4gICAgICAgICAgICB8IFwieWFyblwiO1xuXG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgIVtcIm5wbVwiLCBcImJ1blwiLCBcInBucG1cIiwgXCJ5YXJuXCJdLmluY2x1ZGVzKHNlbGVjdGVkUGFja2FnZU1hbmFnZXIpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBgVW5zdXBwb3J0ZWQgcGFja2FnZSBtYW5hZ2VyOiAke3NlbGVjdGVkUGFja2FnZU1hbmFnZXJ9LiBTdXBwb3J0ZWQgbWFuYWdlcnMgYXJlIG5wbSwgYnVuLCBwbnBtLCB5YXJuLmAsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICghcHJvY2Vzcy5lbnYuVEVTVCAmJiBwcm9jZXNzLmVudi5HSVRIVUJfQUNUSU9OUyAhPT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgICAgIFwiQ29udGludW91cyBSZWxlYXNlcyBhcmUgb25seSBhdmFpbGFibGUgaW4gR2l0SHViIEFjdGlvbnMuXCIsXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIEdJVEhVQl9SRVBPU0lUT1JZLFxuICAgICAgICAgICAgR0lUSFVCX1JVTl9JRCxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fQVRURU1QVCxcbiAgICAgICAgICAgIEdJVEhVQl9BQ1RPUl9JRCxcbiAgICAgICAgICB9ID0gcHJvY2Vzcy5lbnY7XG5cbiAgICAgICAgICBjb25zdCBbb3duZXIsIHJlcG9dID0gR0lUSFVCX1JFUE9TSVRPUlkuc3BsaXQoXCIvXCIpO1xuXG4gICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSB7XG4gICAgICAgICAgICBvd25lcixcbiAgICAgICAgICAgIHJlcG8sXG4gICAgICAgICAgICBydW46IE51bWJlcihHSVRIVUJfUlVOX0lEKSxcbiAgICAgICAgICAgIGF0dGVtcHQ6IE51bWJlcihHSVRIVUJfUlVOX0FUVEVNUFQpLFxuICAgICAgICAgICAgYWN0b3I6IE51bWJlcihHSVRIVUJfQUNUT1JfSUQpLFxuICAgICAgICAgIH07XG5cbiAgICAgICAgICBjb25zdCBrZXkgPSBoYXNoKG1ldGFkYXRhKTtcblxuICAgICAgICAgIGNvbnN0IGNoZWNrUmVzcG9uc2UgPSBhd2FpdCBmZXRjaChuZXcgVVJMKFwiL2NoZWNrXCIsIGFwaVVybCksIHtcbiAgICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICAgIG93bmVyLFxuICAgICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgICBrZXksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIGlmICghY2hlY2tSZXNwb25zZS5vaykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihhd2FpdCBjaGVja1Jlc3BvbnNlLnRleHQoKSk7XG4gICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgeyBzaGEgfSA9IGF3YWl0IGNoZWNrUmVzcG9uc2UuanNvbigpO1xuXG4gICAgICAgICAgY29uc3QgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPiA9IG5ldyBNYXAoKTsgLy8gcGtnLnByLm5ldyB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZVxuICAgICAgICAgIGNvbnN0IHJlYWxEZXBzOiBNYXA8c3RyaW5nLCBzdHJpbmc+IHwgbnVsbCA9IGlzUGVlckRlcHNFbmFibGVkXG4gICAgICAgICAgICA/IG5ldyBNYXAoKVxuICAgICAgICAgICAgOiBudWxsOyAvLyByZWFsIHZlcnNpb25zIG9mIHRoZSBwYWNrYWdlLCB1c2VmdWwgZm9yIHBlZXJEZXBlbmRlbmNpZXNcblxuICAgICAgICAgIGNvbnN0IHByaW50SnNvbiA9IHR5cGVvZiBhcmdzLmpzb24gPT09IFwiYm9vbGVhblwiO1xuICAgICAgICAgIGNvbnN0IHNhdmVKc29uID0gdHlwZW9mIGFyZ3MuanNvbiA9PT0gXCJzdHJpbmdcIjtcbiAgICAgICAgICBjb25zdCBqc29uRmlsZVBhdGggPSBzYXZlSnNvbiA/IGFyZ3MuanNvbiA6IFwiXCI7XG4gICAgICAgICAgY29uc3Qgb3V0cHV0TWV0YWRhdGE6IE91dHB1dE1ldGFkYXRhID0ge1xuICAgICAgICAgICAgcGFja2FnZXM6IFtdLFxuICAgICAgICAgICAgdGVtcGxhdGVzOiBbXSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgZm9yIChjb25zdCBwIG9mIHBhdGhzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUocCwgXCJwYWNrYWdlLmpzb25cIik7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IGF3YWl0IHJlYWRQYWNrYWdlSnNvbihwSnNvblBhdGgpO1xuXG4gICAgICAgICAgICBpZiAoIXBKc29uKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChwSnNvbi5wcml2YXRlKSB7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaXNDb21wYWN0KSB7XG4gICAgICAgICAgICAgIGF3YWl0IHZlcmlmeUNvbXBhY3RNb2RlKHBKc29uLm5hbWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBkZXBVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vJHtwSnNvbi5uYW1lfUAke3NoYX1gLFxuICAgICAgICAgICAgICBhcGlVcmwsXG4gICAgICAgICAgICApLmhyZWY7XG4gICAgICAgICAgICBkZXBzLnNldChwSnNvbi5uYW1lLCBkZXBVcmwpO1xuICAgICAgICAgICAgcmVhbERlcHM/LnNldChwSnNvbi5uYW1lLCBwSnNvbi52ZXJzaW9uID8/IGRlcFVybCk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc291cmNlID0gYXdhaXQgZmV0Y2goZGVwVXJsKTtcbiAgICAgICAgICAgIGlmIChyZXNvdXJjZS5vaykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYCR7cEpzb24ubmFtZX1AJHthYmJyZXZpYXRlQ29tbWl0SGFzaChzaGEpfSB3YXMgYWxyZWFkeSBwdWJsaXNoZWQgb24gJHtkZXBVcmx9YCxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gQ29sbGVjdCBwYWNrYWdlIG1ldGFkYXRhXG4gICAgICAgICAgICBvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgdXJsOiBkZXBVcmwsXG4gICAgICAgICAgICAgIHNoYXN1bTogXCJcIiwgLy8gd2lsbCBiZSBmaWxsZWQgbGF0ZXJcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGZvciAoY29uc3QgdGVtcGxhdGVEaXIgb2YgdGVtcGxhdGVzKSB7XG4gICAgICAgICAgICBjb25zdCBwSnNvblBhdGggPSBwYXRoLnJlc29sdmUodGVtcGxhdGVEaXIsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb25Db250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IHBKc29uQ29udGVudHNcbiAgICAgICAgICAgICAgPyBwYXJzZVBhY2thZ2VKc29uKHBKc29uQ29udGVudHMpXG4gICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbiB8fCAhcEpzb25Db250ZW50cykge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgYHNraXBwaW5nICR7dGVtcGxhdGVEaXJ9IGJlY2F1c2UgdGhlcmUncyBubyBwYWNrYWdlLmpzb24gZmlsZWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBcIm5hbWVcIiBmaWVsZCBpbiAke3BKc29uUGF0aH0gc2hvdWxkIGJlIGRlZmluZWRgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc29sZS53YXJuKFwicHJlcGFyaW5nIHRlbXBsYXRlOlwiLCBwSnNvbi5uYW1lKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzdG9yZSA9IGF3YWl0IHdyaXRlRGVwcyhcbiAgICAgICAgICAgICAgdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIHBKc29uQ29udGVudHMsXG4gICAgICAgICAgICAgIHBKc29uLFxuICAgICAgICAgICAgICBkZXBzLFxuICAgICAgICAgICAgICByZWFsRGVwcyxcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIGNvbnN0IGdpdGlnbm9yZVBhdGggPSBwYXRoLmpvaW4odGVtcGxhdGVEaXIsIFwiLmdpdGlnbm9yZVwiKTtcbiAgICAgICAgICAgIGNvbnN0IGlnID0gaWdub3JlKCkuYWRkKFwibm9kZV9tb2R1bGVzXCIpLmFkZChcIi5naXRcIik7XG5cbiAgICAgICAgICAgIGlmIChmc1N5bmMuZXhpc3RzU3luYyhnaXRpZ25vcmVQYXRoKSkge1xuICAgICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVDb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZ2l0aWdub3JlUGF0aCwgXCJ1dGY4XCIpO1xuICAgICAgICAgICAgICBpZy5hZGQoZ2l0aWdub3JlQ29udGVudCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYihbXCIqKi8qXCJdLCB7XG4gICAgICAgICAgICAgIGN3ZDogdGVtcGxhdGVEaXIsXG4gICAgICAgICAgICAgIGRvdDogdHJ1ZSxcbiAgICAgICAgICAgICAgb25seUZpbGVzOiB0cnVlLFxuICAgICAgICAgICAgICBpZ25vcmU6IFtcIioqL25vZGVfbW9kdWxlc1wiLCBcIi5naXRcIl0sIC8vIGFsd2F5cyBpZ25vcmUgbm9kZV9tb2R1bGVzIGFuZCAuZ2l0XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gIWlnLmlnbm9yZXMoZmlsZSkpO1xuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIGZpbHRlcmVkRmlsZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgZmlsZSA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGguam9pbih0ZW1wbGF0ZURpciwgZmlsZVBhdGgpKTtcbiAgICAgICAgICAgICAgY29uc3QgaXNCaW5hcnkgPSBhd2FpdCBpc0JpbmFyeUZpbGUoZmlsZSk7XG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbZmlsZS5idWZmZXJdLCB7XG4gICAgICAgICAgICAgICAgdHlwZTogXCJhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW1cIixcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIGZvcm1EYXRhLmFwcGVuZChcbiAgICAgICAgICAgICAgICBgdGVtcGxhdGU6JHtwSnNvbi5uYW1lfToke2VuY29kZVVSSUNvbXBvbmVudChmaWxlUGF0aCl9YCxcbiAgICAgICAgICAgICAgICBpc0JpbmFyeSA/IGJsb2IgOiBhd2FpdCBibG9iLnRleHQoKSxcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGF3YWl0IHJlc3RvcmUoKTtcblxuICAgICAgICAgICAgLy8gQ29sbGVjdCB0ZW1wbGF0ZSBtZXRhZGF0YVxuICAgICAgICAgICAgY29uc3QgdGVtcGxhdGVVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICBgLyR7b3duZXJ9LyR7cmVwb30vdGVtcGxhdGUvJHtwSnNvbi5uYW1lfWAsXG4gICAgICAgICAgICAgIGFwaVVybCxcbiAgICAgICAgICAgICkuaHJlZjtcbiAgICAgICAgICAgIG91dHB1dE1ldGFkYXRhLnRlbXBsYXRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgbmFtZTogcEpzb24ubmFtZSxcbiAgICAgICAgICAgICAgdXJsOiB0ZW1wbGF0ZVVybCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IG5vRGVmYXVsdFRlbXBsYXRlID0gYXJncy50ZW1wbGF0ZSA9PT0gZmFsc2U7XG5cbiAgICAgICAgICBpZiAoIW5vRGVmYXVsdFRlbXBsYXRlKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gY3JlYXRlRGVmYXVsdFRlbXBsYXRlKFxuICAgICAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoZGVwcy5lbnRyaWVzKCkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBPYmplY3Qua2V5cyhwcm9qZWN0KSkge1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgYHRlbXBsYXRlOmRlZmF1bHQ6JHtlbmNvZGVVUklDb21wb25lbnQoZmlsZVBhdGgpfWAsXG4gICAgICAgICAgICAgICAgcHJvamVjdFtmaWxlUGF0aF0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzdG9yZU1hcCA9IG5ldyBNYXA8XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIHdyaXRlRGVwcz4+XG4gICAgICAgICAgPigpO1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb25Db250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IHBKc29uQ29udGVudHNcbiAgICAgICAgICAgICAgPyBwYXJzZVBhY2thZ2VKc29uKHBKc29uQ29udGVudHMpXG4gICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbiB8fCAhcEpzb25Db250ZW50cykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBKc29uLnByaXZhdGUpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3RvcmVNYXAuc2V0KFxuICAgICAgICAgICAgICBwLFxuICAgICAgICAgICAgICBhd2FpdCB3cml0ZURlcHMocCwgcEpzb25Db250ZW50cywgcEpzb24sIGRlcHMsIHJlYWxEZXBzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhc3VtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocEpzb25QYXRoKTtcbiAgICAgICAgICAgIGlmICghcEpzb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBza2lwcGluZyAke3B9IGJlY2F1c2UgdGhlcmUncyBubyBwYWNrYWdlLmpzb24gZmlsZWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChwSnNvbi5wcml2YXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBza2lwcGluZyAke3B9IGJlY2F1c2UgdGhlIHBhY2thZ2UgaXMgcHJpdmF0ZWApO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgeyBmaWxlbmFtZSwgc2hhc3VtIH0gPSBhd2FpdCByZXNvbHZlVGFyYmFsbChcbiAgICAgICAgICAgICAgICBwYWNrTWV0aG9kLFxuICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgcEpzb24sXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgc2hhc3Vtc1twSnNvbi5uYW1lXSA9IHNoYXN1bTtcblxuICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQa2cgPSBvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChwKSA9PiBwLm5hbWUgPT09IHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgICkhO1xuICAgICAgICAgICAgICBvdXRwdXRQa2cuc2hhc3VtID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHAsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHBhY2thZ2U6JHtwSnNvbi5uYW1lfWAsIGJsb2IsIGZpbGVuYW1lKTtcblxuICAgICAgICAgICAgICBhd2FpdCBmcy5ybShmaWxlUGF0aCk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBhd2FpdCByZXN0b3JlTWFwLmdldChwKT8uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZm9ybURhdGFQYWNrYWdlc1NpemUgPSBbLi4uZm9ybURhdGEuZW50cmllcygpXS5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgW18sIGVudHJ5XSkgPT4gcHJldiArIGdldEZvcm1FbnRyeVNpemUoZW50cnkpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gbXVsdGlwYXJ0IHVwbG9hZGluZ1xuICAgICAgICAgIGlmIChmb3JtRGF0YVBhY2thZ2VzU2l6ZSA+IDEwMjQgKiAxMDI0ICogOTkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGVudHJ5XSBvZiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwicGFja2FnZTpcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gZW50cnkgYXMgRmlsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua1NpemUgPSAxMDI0ICogMTAyNCAqIDU7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUuc2l6ZSA8PSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChmaWxlLnNpemUgLyBjaHVua1NpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZU11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKGNyZWF0ZU11bHRpcGFydCwge1xuICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICAgICAgICBcInNiLW5hbWVcIjogbmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFjcmVhdGVNdWx0aXBhcnRSZXMub2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgY3JlYXRlTXVsdGlwYXJ0UmVzLnRleHQoKSk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXk6IHVwbG9hZEtleSwgaWQ6IHVwbG9hZElkIH0gPVxuICAgICAgICAgICAgICAgICAgYXdhaXQgY3JlYXRlTXVsdGlwYXJ0UmVzLmpzb24oKTtcblxuICAgICAgICAgICAgICAgIGludGVyZmFjZSBSMlVwbG9hZGVkUGFydCB7XG4gICAgICAgICAgICAgICAgICBwYXJ0TnVtYmVyOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICBldGFnOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkUGFydHM6IFIyVXBsb2FkZWRQYXJ0W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3M7IGkrKykge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBpICogY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oZmlsZS5zaXplLCBzdGFydCArIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IGZpbGUuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZE11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKHVwbG9hZE11bHRpcGFydCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IHVwbG9hZEtleSxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogdXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgXCJwYXJ0LW51bWJlclwiOiBgJHtpICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIXVwbG9hZE11bHRpcGFydFJlcy5vaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIGBFcnJvciB1cGxvYWRpbmcgcGFydCAke2kgKyAxfTogJHthd2FpdCB1cGxvYWRNdWx0aXBhcnRSZXMudGV4dCgpfWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXJ0IH0gPSBhd2FpdCB1cGxvYWRNdWx0aXBhcnRSZXMuanNvbigpO1xuICAgICAgICAgICAgICAgICAgdXBsb2FkZWRQYXJ0cy5wdXNoKHBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZU11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKGNvbXBsZXRlTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IHVwbG9hZEtleSxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHVwbG9hZElkLFxuICAgICAgICAgICAgICAgICAgICBcInVwbG9hZGVkLXBhcnRzXCI6IEpTT04uc3RyaW5naWZ5KHVwbG9hZGVkUGFydHMpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBsZXRlTXVsdGlwYXJ0UmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRXJyb3IgY29tcGxldGluZyAke2tleX06ICR7YXdhaXQgY29tcGxldGVNdWx0aXBhcnRSZXMudGV4dCgpfWAsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5OiBjb21wbGV0aW9uS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGxldGVNdWx0aXBhcnRSZXMuanNvbigpO1xuXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuc2V0KG5hbWUsIGBvYmplY3Q6JHtjb21wbGV0aW9uS2V5fWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocHVibGlzaFVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJzYi1jb21tZW50XCI6IGNvbW1lbnQsXG4gICAgICAgICAgICAgIFwic2ItY29tcGFjdFwiOiBgJHtpc0NvbXBhY3R9YCxcbiAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICBcInNiLXNoYXN1bXNcIjogSlNPTi5zdHJpbmdpZnkoc2hhc3VtcyksXG4gICAgICAgICAgICAgIFwic2ItcnVuLWlkXCI6IEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICAgIFwic2ItYmluXCI6IGAke2lzQmluYXJ5QXBwbGljYXRpb259YCxcbiAgICAgICAgICAgICAgXCJzYi1wYWNrYWdlLW1hbmFnZXJcIjogc2VsZWN0ZWRQYWNrYWdlTWFuYWdlcixcbiAgICAgICAgICAgICAgXCJzYi1vbmx5LXRlbXBsYXRlc1wiOiBgJHtpc09ubHlUZW1wbGF0ZXN9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBsYXRlclJlcyA9IGF3YWl0IHJlcy5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgICAgICByZXMuc3RhdHVzLFxuICAgICAgICAgICAgMjAwLFxuICAgICAgICAgICAgYHB1Ymxpc2hpbmcgZmFpbGVkOiAke2F3YWl0IHJlcy50ZXh0KCl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc29sZS53YXJuKFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlx1MjZBMVx1RkUwRiBZb3VyIG5wbSBwYWNrYWdlcyBhcmUgcHVibGlzaGVkLlxcblwiKTtcblxuICAgICAgICAgIGNvbnN0IHBhY2thZ2VMb2dzID0gWy4uLmZvcm1EYXRhLmtleXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChcInBhY2thZ2U6XCIpKVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IG5hbWUuc2xpY2UoXCJwYWNrYWdlOlwiLmxlbmd0aCk7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwobGF0ZXJSZXMudXJsc1tpXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHB1YmxpbnRVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICAgIGAvcGtnLnByLm5ldyR7dXJsLnBhdGhuYW1lfWAsXG4gICAgICAgICAgICAgICAgXCJodHRwczovL3B1YmxpbnQuZGV2XCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBgJHtwYWNrYWdlTmFtZX06XG4tIHNoYTogJHtzaGFzdW1zW3BhY2thZ2VOYW1lXX1cbi0gcHVibGludDogJHtwdWJsaW50VXJsfVxuLSBucG06IG5wbSBpICR7dXJsfWA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cXG5cIik7XG5cbiAgICAgICAgICBjb25zb2xlLndhcm4ocGFja2FnZUxvZ3MpO1xuXG4gICAgICAgICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5zdHJpbmdpZnkob3V0cHV0TWV0YWRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgIGlmIChwcmludEpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG91dHB1dCk7IC8vIExvZyBvdXRwdXQgZm9yIHBpcGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2F2ZUpzb24pIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShqc29uRmlsZVBhdGgsIG91dHB1dCk7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYG1ldGFkYXRhIHdyaXR0ZW4gdG8gJHtqc29uRmlsZVBhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICAgIGxpbms6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGE6IHt9LFxuICAgICAgICBydW46ICgpID0+IHtcbiAgICAgICAgICAvLyBub29wXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG59KTtcblxucnVuTWFpbihtYWluKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoKSA9PiBwcm9jZXNzLmV4aXQoMSkpO1xuXG50eXBlIFBhY2tNZXRob2QgPSBcIm5wbVwiIHwgXCJwbnBtXCIgfCBcInlhcm5cIjtcblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRhcmJhbGwocG06IFBhY2tNZXRob2QsIHA6IHN0cmluZywgcEpzb246IFBhY2thZ2VKc29uKSB7XG4gIGxldCBjbWQgPSBgJHtwbX0gcGFja2A7XG4gIGxldCBmaWxlbmFtZSA9IGAke3BKc29uLm5hbWUhLnJlcGxhY2UoXCIvXCIsIFwiLVwiKX0tJHtwSnNvbi52ZXJzaW9ufS50Z3pgO1xuICBpZiAocG0gPT09IFwieWFyblwiKSB7XG4gICAgY21kICs9IGAgLS1maWxlbmFtZSAke2ZpbGVuYW1lfWA7XG4gIH1cbiAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoY21kLCB7XG4gICAgc3RkaW86IFwib3ZlcmxhcHBlZFwiLFxuICAgIGN3ZDogcCxcbiAgfSk7XG4gIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KFwiXFxuXCIpLmZpbHRlcihCb29sZWFuKTtcblxuICBpZiAocG0gIT09IFwieWFyblwiKSB7XG4gICAgZmlsZW5hbWUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCk7XG4gIH1cblxuICBjb25zdCBzaGFzdW0gPSBjcmVhdGVIYXNoKFwic2hhMVwiKVxuICAgIC51cGRhdGUoYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKHAsIGZpbGVuYW1lKSkpXG4gICAgLmRpZ2VzdChcImhleFwiKTtcblxuICByZXR1cm4geyBmaWxlbmFtZSwgc2hhc3VtIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRGVwcyhcbiAgcDogc3RyaW5nLFxuICBwSnNvbkNvbnRlbnRzOiBzdHJpbmcsXG4gIHBKc29uOiBQYWNrYWdlSnNvbixcbiAgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgcmVhbERlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gfCBudWxsLFxuKSB7XG4gIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcblxuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRlcGVuZGVuY2llcyk7XG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24uZGV2RGVwZW5kZW5jaWVzKTtcbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5vcHRpb25hbERlcGVuZGVuY2llcyk7XG5cbiAgaWYgKHJlYWxEZXBzKSB7XG4gICAgaGlqYWNrRGVwcyhyZWFsRGVwcywgcEpzb24ucGVlckRlcGVuZGVuY2llcyk7XG4gIH1cblxuICBhd2FpdCB3cml0ZVBhY2thZ2VKU09OKHBKc29uUGF0aCwgcEpzb24pO1xuXG4gIHJldHVybiAoKSA9PiBmcy53cml0ZUZpbGUocEpzb25QYXRoLCBwSnNvbkNvbnRlbnRzKTtcbn1cblxuZnVuY3Rpb24gaGlqYWNrRGVwcyhcbiAgbmV3RGVwczogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgb2xkRGVwcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pIHtcbiAgaWYgKCFvbGREZXBzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgW25ld0RlcCwgdXJsXSBvZiBuZXdEZXBzKSB7XG4gICAgaWYgKG5ld0RlcCBpbiBvbGREZXBzKSB7XG4gICAgICBvbGREZXBzW25ld0RlcF0gPSB1cmw7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbnRyeVNpemUoZW50cnk6IEZvcm1EYXRhRW50cnlWYWx1ZSkge1xuICBpZiAodHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGVudHJ5Lmxlbmd0aDtcbiAgfVxuICByZXR1cm4gZW50cnkuc2l6ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29tcGFjdE1vZGUocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBsZXQgbWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdDtcblxuICB0cnkge1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgZ2V0UGFja2FnZU1hbmlmZXN0KHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IHJlc29sdmUgJHtwYWNrYWdlTmFtZX0gZnJvbSBucG0uIC0tY29tcGFjdCBmbGFnIGRlcGVuZHMgb24gdGhlIHBhY2thZ2UgYmVpbmcgYXZhaWxhYmxlIGluIG5wbS5cbk1ha2Ugc3VyZSB0byBoYXZlIHlvdXIgcGFja2FnZSBvbiBucG0gZmlyc3QuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBgTWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIC8gJ3JlcG9zaXRvcnkudXJsJyBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uIHByb3Blcmx5LlxuU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3YxMC9jb25maWd1cmluZy1ucG0vcGFja2FnZS1qc29uI3JlcG9zaXRvcnkgZm9yIGRldGFpbHMuYDtcblxuICBjb25zdCByZXBvc2l0b3J5ID0gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3QpO1xuICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgcmVwb3NpdG9yeSBsaW5rIGZyb20gdGhlICR7cGFja2FnZU5hbWV9IG1hbmlmZXN0LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGUgbGluayB0byBiZSBwcmVzZW50LlxuJHtpbnN0cnVjdGlvbn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGV4dHJhY3RPd25lckFuZFJlcG8ocmVwb3NpdG9yeSk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgb3duZXIgYW5kIHJlcG8gbmFtZXMgZnJvbSB0aGUgJHtwYWNrYWdlTmFtZX0gcmVwb3NpdG9yeSBsaW5rOiAke3JlcG9zaXRvcnl9LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGVzZSBuYW1lcy5cbiR7aW5zdHJ1Y3Rpb259YCxcbiAgICApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRyeVJlYWRGaWxlKHA6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShwLCBcInV0ZjhcIik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQYWNrYWdlSnNvbihwOiBzdHJpbmcpIHtcbiAgY29uc3QgY29udGVudHMgPSBhd2FpdCB0cnlSZWFkRmlsZShwKTtcbiAgaWYgKGNvbnRlbnRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VQYWNrYWdlSnNvbihjb250ZW50cyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFja2FnZUpzb24oY29udGVudHM6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnRzKSBhcyBQYWNrYWdlSnNvbjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsICJjb25zdCBkZWZhdWx0cyA9IE9iamVjdC5mcmVlemUoe1xuICBpZ25vcmVVbmtub3duOiBmYWxzZSxcbiAgcmVzcGVjdFR5cGU6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25OYW1lczogZmFsc2UsXG4gIHJlc3BlY3RGdW5jdGlvblByb3BlcnRpZXM6IGZhbHNlLFxuICB1bm9yZGVyZWRPYmplY3RzOiB0cnVlLFxuICB1bm9yZGVyZWRBcnJheXM6IGZhbHNlLFxuICB1bm9yZGVyZWRTZXRzOiBmYWxzZSxcbiAgZXhjbHVkZUtleXM6IHZvaWQgMCxcbiAgZXhjbHVkZVZhbHVlczogdm9pZCAwLFxuICByZXBsYWNlcjogdm9pZCAwXG59KTtcbmZ1bmN0aW9uIG9iamVjdEhhc2gob2JqZWN0LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdHMsIC4uLm9wdGlvbnMgfTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHM7XG4gIH1cbiAgY29uc3QgaGFzaGVyID0gY3JlYXRlSGFzaGVyKG9wdGlvbnMpO1xuICBoYXNoZXIuZGlzcGF0Y2gob2JqZWN0KTtcbiAgcmV0dXJuIGhhc2hlci50b1N0cmluZygpO1xufVxuY29uc3QgZGVmYXVsdFByb3RvdHlwZXNLZXlzID0gT2JqZWN0LmZyZWV6ZShbXG4gIFwicHJvdG90eXBlXCIsXG4gIFwiX19wcm90b19fXCIsXG4gIFwiY29uc3RydWN0b3JcIlxuXSk7XG5mdW5jdGlvbiBjcmVhdGVIYXNoZXIob3B0aW9ucykge1xuICBsZXQgYnVmZiA9IFwiXCI7XG4gIGxldCBjb250ZXh0ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgY29uc3Qgd3JpdGUgPSAoc3RyKSA9PiB7XG4gICAgYnVmZiArPSBzdHI7XG4gIH07XG4gIHJldHVybiB7XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYnVmZjtcbiAgICB9LFxuICAgIGdldENvbnRleHQoKSB7XG4gICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9LFxuICAgIGRpc3BhdGNoKHZhbHVlKSB7XG4gICAgICBpZiAob3B0aW9ucy5yZXBsYWNlcikge1xuICAgICAgICB2YWx1ZSA9IG9wdGlvbnMucmVwbGFjZXIodmFsdWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHlwZSA9IHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdGhpc1t0eXBlXSh2YWx1ZSk7XG4gICAgfSxcbiAgICBvYmplY3Qob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0KG9iamVjdC50b0pTT04oKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBvYmpTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KTtcbiAgICAgIGxldCBvYmpUeXBlID0gXCJcIjtcbiAgICAgIGNvbnN0IG9iamVjdExlbmd0aCA9IG9ialN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0TGVuZ3RoIDwgMTApIHtcbiAgICAgICAgb2JqVHlwZSA9IFwidW5rbm93bjpbXCIgKyBvYmpTdHJpbmcgKyBcIl1cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialR5cGUgPSBvYmpTdHJpbmcuc2xpY2UoOCwgb2JqZWN0TGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICBvYmpUeXBlID0gb2JqVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgbGV0IG9iamVjdE51bWJlciA9IG51bGw7XG4gICAgICBpZiAoKG9iamVjdE51bWJlciA9IGNvbnRleHQuZ2V0KG9iamVjdCkpID09PSB2b2lkIDApIHtcbiAgICAgICAgY29udGV4dC5zZXQob2JqZWN0LCBjb250ZXh0LnNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goXCJbQ0lSQ1VMQVI6XCIgKyBvYmplY3ROdW1iZXIgKyBcIl1cIik7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBCdWZmZXIuaXNCdWZmZXIgJiYgQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgd3JpdGUoXCJidWZmZXI6XCIpO1xuICAgICAgICByZXR1cm4gd3JpdGUob2JqZWN0LnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICB9XG4gICAgICBpZiAob2JqVHlwZSAhPT0gXCJvYmplY3RcIiAmJiBvYmpUeXBlICE9PSBcImZ1bmN0aW9uXCIgJiYgb2JqVHlwZSAhPT0gXCJhc3luY2Z1bmN0aW9uXCIpIHtcbiAgICAgICAgaWYgKHRoaXNbb2JqVHlwZV0pIHtcbiAgICAgICAgICB0aGlzW29ialR5cGVdKG9iamVjdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuaWdub3JlVW5rbm93bikge1xuICAgICAgICAgIHRoaXMudW5rb3duKG9iamVjdCwgb2JqVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICAgICAgaWYgKG9wdGlvbnMudW5vcmRlcmVkT2JqZWN0cykge1xuICAgICAgICAgIGtleXMgPSBrZXlzLnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZXh0cmFLZXlzID0gW107XG4gICAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RUeXBlICE9PSBmYWxzZSAmJiAhaXNOYXRpdmVGdW5jdGlvbihvYmplY3QpKSB7XG4gICAgICAgICAgZXh0cmFLZXlzID0gZGVmYXVsdFByb3RvdHlwZXNLZXlzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVLZXlzKSB7XG4gICAgICAgICAga2V5cyA9IGtleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9ucy5leGNsdWRlS2V5cyhrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV4dHJhS2V5cyA9IGV4dHJhS2V5cy5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zLmV4Y2x1ZGVLZXlzKGtleSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGUoXCJvYmplY3Q6XCIgKyAoa2V5cy5sZW5ndGggKyBleHRyYUtleXMubGVuZ3RoKSArIFwiOlwiKTtcbiAgICAgICAgY29uc3QgZGlzcGF0Y2hGb3JLZXkgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChrZXkpO1xuICAgICAgICAgIHdyaXRlKFwiOlwiKTtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuZXhjbHVkZVZhbHVlcykge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChvYmplY3Rba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdyaXRlKFwiLFwiKTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgIGRpc3BhdGNoRm9yS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgZGlzcGF0Y2hGb3JLZXkoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYXJyYXkoYXJyLCB1bm9yZGVyZWQpIHtcbiAgICAgIHVub3JkZXJlZCA9IHVub3JkZXJlZCA9PT0gdm9pZCAwID8gb3B0aW9ucy51bm9yZGVyZWRBcnJheXMgIT09IGZhbHNlIDogdW5vcmRlcmVkO1xuICAgICAgd3JpdGUoXCJhcnJheTpcIiArIGFyci5sZW5ndGggKyBcIjpcIik7XG4gICAgICBpZiAoIXVub3JkZXJlZCB8fCBhcnIubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhcnIpIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0QWRkaXRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBhcnIubWFwKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNoZXIgPSBjcmVhdGVIYXNoZXIob3B0aW9ucyk7XG4gICAgICAgIGhhc2hlci5kaXNwYXRjaChlbnRyeSk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGhhc2hlci5nZXRDb250ZXh0KCkpIHtcbiAgICAgICAgICBjb250ZXh0QWRkaXRpb25zLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaGVyLnRvU3RyaW5nKCk7XG4gICAgICB9KTtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0QWRkaXRpb25zO1xuICAgICAgZW50cmllcy5zb3J0KCk7XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShlbnRyaWVzLCBmYWxzZSk7XG4gICAgfSxcbiAgICBkYXRlKGRhdGUpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRhdGU6XCIgKyBkYXRlLnRvSlNPTigpKTtcbiAgICB9LFxuICAgIHN5bWJvbChzeW0pIHtcbiAgICAgIHJldHVybiB3cml0ZShcInN5bWJvbDpcIiArIHN5bS50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHVua293bih2YWx1ZSwgdHlwZSkge1xuICAgICAgd3JpdGUodHlwZSk7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdyaXRlKFwiOlwiKTtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUuZW50cmllcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5KFxuICAgICAgICAgIEFycmF5LmZyb20odmFsdWUuZW50cmllcygpKSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICAgLyogb3JkZXJlZCAqL1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3IoZXJyKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJlcnJvcjpcIiArIGVyci50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIGJvb2xlYW4oYm9vbCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiYm9vbDpcIiArIGJvb2wpO1xuICAgIH0sXG4gICAgc3RyaW5nKHN0cmluZykge1xuICAgICAgd3JpdGUoXCJzdHJpbmc6XCIgKyBzdHJpbmcubGVuZ3RoICsgXCI6XCIpO1xuICAgICAgd3JpdGUoc3RyaW5nKTtcbiAgICB9LFxuICAgIGZ1bmN0aW9uKGZuKSB7XG4gICAgICB3cml0ZShcImZuOlwiKTtcbiAgICAgIGlmIChpc05hdGl2ZUZ1bmN0aW9uKGZuKSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiW25hdGl2ZV1cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKGZuLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucmVzcGVjdEZ1bmN0aW9uTmFtZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goXCJmdW5jdGlvbi1uYW1lOlwiICsgU3RyaW5nKGZuLm5hbWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RGdW5jdGlvblByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5vYmplY3QoZm4pO1xuICAgICAgfVxuICAgIH0sXG4gICAgbnVtYmVyKG51bWJlcikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwibnVtYmVyOlwiICsgbnVtYmVyKTtcbiAgICB9LFxuICAgIHhtbCh4bWwpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInhtbDpcIiArIHhtbC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIG51bGwoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJOdWxsXCIpO1xuICAgIH0sXG4gICAgdW5kZWZpbmVkKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiVW5kZWZpbmVkXCIpO1xuICAgIH0sXG4gICAgcmVnZXhwKHJlZ2V4KSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJyZWdleDpcIiArIHJlZ2V4LnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgdWludDhhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDhhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQ4Y2xhbXBlZGFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50OGNsYW1wZWRhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDhhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiaW50OGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgdWludDE2YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQxNmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgaW50MTZhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiaW50MTZhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50MzJhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDMyYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBmbG9hdDMyYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImZsb2F0MzJhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGZsb2F0NjRhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiZmxvYXQ2NGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgYXJyYXlidWZmZXIoYXJyKSB7XG4gICAgICB3cml0ZShcImFycmF5YnVmZmVyOlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBVaW50OEFycmF5KGFycikpO1xuICAgIH0sXG4gICAgdXJsKHVybCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidXJsOlwiICsgdXJsLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgbWFwKG1hcCkge1xuICAgICAgd3JpdGUoXCJtYXA6XCIpO1xuICAgICAgY29uc3QgYXJyID0gWy4uLm1hcF07XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShhcnIsIG9wdGlvbnMudW5vcmRlcmVkU2V0cyAhPT0gZmFsc2UpO1xuICAgIH0sXG4gICAgc2V0KHNldCkge1xuICAgICAgd3JpdGUoXCJzZXQ6XCIpO1xuICAgICAgY29uc3QgYXJyID0gWy4uLnNldF07XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShhcnIsIG9wdGlvbnMudW5vcmRlcmVkU2V0cyAhPT0gZmFsc2UpO1xuICAgIH0sXG4gICAgZmlsZShmaWxlKSB7XG4gICAgICB3cml0ZShcImZpbGU6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goW2ZpbGUubmFtZSwgZmlsZS5zaXplLCBmaWxlLnR5cGUsIGZpbGUubGFzdE1vZGZpZWRdKTtcbiAgICB9LFxuICAgIGJsb2IoKSB7XG4gICAgICBpZiAob3B0aW9ucy5pZ25vcmVVbmtub3duKSB7XG4gICAgICAgIHJldHVybiB3cml0ZShcIltibG9iXVwiKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0hhc2hpbmcgQmxvYiBvYmplY3RzIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkXFxuVXNlIFwib3B0aW9ucy5yZXBsYWNlclwiIG9yIFwib3B0aW9ucy5pZ25vcmVVbmtub3duXCJcXG4nXG4gICAgICApO1xuICAgIH0sXG4gICAgZG9td2luZG93KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZG9td2luZG93XCIpO1xuICAgIH0sXG4gICAgYmlnaW50KG51bWJlcikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiYmlnaW50OlwiICsgbnVtYmVyLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgLyogTm9kZS5qcyBzdGFuZGFyZCBuYXRpdmUgb2JqZWN0cyAqL1xuICAgIHByb2Nlc3MoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJwcm9jZXNzXCIpO1xuICAgIH0sXG4gICAgdGltZXIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0aW1lclwiKTtcbiAgICB9LFxuICAgIHBpcGUoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJwaXBlXCIpO1xuICAgIH0sXG4gICAgdGNwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGNwXCIpO1xuICAgIH0sXG4gICAgdWRwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidWRwXCIpO1xuICAgIH0sXG4gICAgdHR5KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidHR5XCIpO1xuICAgIH0sXG4gICAgc3RhdHdhdGNoZXIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzdGF0d2F0Y2hlclwiKTtcbiAgICB9LFxuICAgIHNlY3VyZWNvbnRleHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzZWN1cmVjb250ZXh0XCIpO1xuICAgIH0sXG4gICAgY29ubmVjdGlvbigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImNvbm5lY3Rpb25cIik7XG4gICAgfSxcbiAgICB6bGliKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiemxpYlwiKTtcbiAgICB9LFxuICAgIGNvbnRleHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJjb250ZXh0XCIpO1xuICAgIH0sXG4gICAgbm9kZXNjcmlwdCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIm5vZGVzY3JpcHRcIik7XG4gICAgfSxcbiAgICBodHRwcGFyc2VyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiaHR0cHBhcnNlclwiKTtcbiAgICB9LFxuICAgIGRhdGF2aWV3KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZGF0YXZpZXdcIik7XG4gICAgfSxcbiAgICBzaWduYWwoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzaWduYWxcIik7XG4gICAgfSxcbiAgICBmc2V2ZW50KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZnNldmVudFwiKTtcbiAgICB9LFxuICAgIHRsc3dyYXAoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0bHN3cmFwXCIpO1xuICAgIH1cbiAgfTtcbn1cbmNvbnN0IG5hdGl2ZUZ1bmMgPSBcIltuYXRpdmUgY29kZV0gfVwiO1xuY29uc3QgbmF0aXZlRnVuY0xlbmd0aCA9IG5hdGl2ZUZ1bmMubGVuZ3RoO1xuZnVuY3Rpb24gaXNOYXRpdmVGdW5jdGlvbihmKSB7XG4gIGlmICh0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmKS5zbGljZSgtbmF0aXZlRnVuY0xlbmd0aCkgPT09IG5hdGl2ZUZ1bmM7XG59XG5cbmNsYXNzIFdvcmRBcnJheSB7XG4gIGNvbnN0cnVjdG9yKHdvcmRzLCBzaWdCeXRlcykge1xuICAgIHdvcmRzID0gdGhpcy53b3JkcyA9IHdvcmRzIHx8IFtdO1xuICAgIHRoaXMuc2lnQnl0ZXMgPSBzaWdCeXRlcyA9PT0gdm9pZCAwID8gd29yZHMubGVuZ3RoICogNCA6IHNpZ0J5dGVzO1xuICB9XG4gIHRvU3RyaW5nKGVuY29kZXIpIHtcbiAgICByZXR1cm4gKGVuY29kZXIgfHwgSGV4KS5zdHJpbmdpZnkodGhpcyk7XG4gIH1cbiAgY29uY2F0KHdvcmRBcnJheSkge1xuICAgIHRoaXMuY2xhbXAoKTtcbiAgICBpZiAodGhpcy5zaWdCeXRlcyAlIDQpIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpKyspIHtcbiAgICAgICAgY29uc3QgdGhhdEJ5dGUgPSB3b3JkQXJyYXkud29yZHNbaSA+Pj4gMl0gPj4+IDI0IC0gaSAlIDQgKiA4ICYgMjU1O1xuICAgICAgICB0aGlzLndvcmRzW3RoaXMuc2lnQnl0ZXMgKyBpID4+PiAyXSB8PSB0aGF0Qnl0ZSA8PCAyNCAtICh0aGlzLnNpZ0J5dGVzICsgaSkgJSA0ICogODtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB3b3JkQXJyYXkuc2lnQnl0ZXM7IGogKz0gNCkge1xuICAgICAgICB0aGlzLndvcmRzW3RoaXMuc2lnQnl0ZXMgKyBqID4+PiAyXSA9IHdvcmRBcnJheS53b3Jkc1tqID4+PiAyXTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5zaWdCeXRlcyArPSB3b3JkQXJyYXkuc2lnQnl0ZXM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgY2xhbXAoKSB7XG4gICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzID4+PiAyXSAmPSA0Mjk0OTY3Mjk1IDw8IDMyIC0gdGhpcy5zaWdCeXRlcyAlIDQgKiA4O1xuICAgIHRoaXMud29yZHMubGVuZ3RoID0gTWF0aC5jZWlsKHRoaXMuc2lnQnl0ZXMgLyA0KTtcbiAgfVxuICBjbG9uZSgpIHtcbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheShbLi4udGhpcy53b3Jkc10pO1xuICB9XG59XG5jb25zdCBIZXggPSB7XG4gIHN0cmluZ2lmeSh3b3JkQXJyYXkpIHtcbiAgICBjb25zdCBoZXhDaGFycyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpKyspIHtcbiAgICAgIGNvbnN0IGJpdGUgPSB3b3JkQXJyYXkud29yZHNbaSA+Pj4gMl0gPj4+IDI0IC0gaSAlIDQgKiA4ICYgMjU1O1xuICAgICAgaGV4Q2hhcnMucHVzaCgoYml0ZSA+Pj4gNCkudG9TdHJpbmcoMTYpLCAoYml0ZSAmIDE1KS50b1N0cmluZygxNikpO1xuICAgIH1cbiAgICByZXR1cm4gaGV4Q2hhcnMuam9pbihcIlwiKTtcbiAgfVxufTtcbmNvbnN0IEJhc2U2NCA9IHtcbiAgc3RyaW5naWZ5KHdvcmRBcnJheSkge1xuICAgIGNvbnN0IGtleVN0ciA9IFwiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODlcIjtcbiAgICBjb25zdCBiYXNlNjRDaGFycyA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBpICs9IDMpIHtcbiAgICAgIGNvbnN0IGJ5dGUxID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IGJ5dGUyID0gd29yZEFycmF5LndvcmRzW2kgKyAxID4+PiAyXSA+Pj4gMjQgLSAoaSArIDEpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCBieXRlMyA9IHdvcmRBcnJheS53b3Jkc1tpICsgMiA+Pj4gMl0gPj4+IDI0IC0gKGkgKyAyKSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgdHJpcGxldCA9IGJ5dGUxIDw8IDE2IHwgYnl0ZTIgPDwgOCB8IGJ5dGUzO1xuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCA0ICYmIGkgKiA4ICsgaiAqIDYgPCB3b3JkQXJyYXkuc2lnQnl0ZXMgKiA4OyBqKyspIHtcbiAgICAgICAgYmFzZTY0Q2hhcnMucHVzaChrZXlTdHIuY2hhckF0KHRyaXBsZXQgPj4+IDYgKiAoMyAtIGopICYgNjMpKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhc2U2NENoYXJzLmpvaW4oXCJcIik7XG4gIH1cbn07XG5jb25zdCBMYXRpbjEgPSB7XG4gIHBhcnNlKGxhdGluMVN0cikge1xuICAgIGNvbnN0IGxhdGluMVN0ckxlbmd0aCA9IGxhdGluMVN0ci5sZW5ndGg7XG4gICAgY29uc3Qgd29yZHMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhdGluMVN0ckxlbmd0aDsgaSsrKSB7XG4gICAgICB3b3Jkc1tpID4+PiAyXSB8PSAobGF0aW4xU3RyLmNoYXJDb2RlQXQoaSkgJiAyNTUpIDw8IDI0IC0gaSAlIDQgKiA4O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheSh3b3JkcywgbGF0aW4xU3RyTGVuZ3RoKTtcbiAgfVxufTtcbmNvbnN0IFV0ZjggPSB7XG4gIHBhcnNlKHV0ZjhTdHIpIHtcbiAgICByZXR1cm4gTGF0aW4xLnBhcnNlKHVuZXNjYXBlKGVuY29kZVVSSUNvbXBvbmVudCh1dGY4U3RyKSkpO1xuICB9XG59O1xuY2xhc3MgQnVmZmVyZWRCbG9ja0FsZ29yaXRobSB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2RhdGEgPSBuZXcgV29yZEFycmF5KCk7XG4gICAgdGhpcy5fbkRhdGFCeXRlcyA9IDA7XG4gICAgdGhpcy5fbWluQnVmZmVyU2l6ZSA9IDA7XG4gICAgdGhpcy5ibG9ja1NpemUgPSA1MTIgLyAzMjtcbiAgfVxuICByZXNldCgpIHtcbiAgICB0aGlzLl9kYXRhID0gbmV3IFdvcmRBcnJheSgpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgPSAwO1xuICB9XG4gIF9hcHBlbmQoZGF0YSkge1xuICAgIGlmICh0eXBlb2YgZGF0YSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgZGF0YSA9IFV0ZjgucGFyc2UoZGF0YSk7XG4gICAgfVxuICAgIHRoaXMuX2RhdGEuY29uY2F0KGRhdGEpO1xuICAgIHRoaXMuX25EYXRhQnl0ZXMgKz0gZGF0YS5zaWdCeXRlcztcbiAgfVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIF9kb1Byb2Nlc3NCbG9jayhfZGF0YVdvcmRzLCBfb2Zmc2V0KSB7XG4gIH1cbiAgX3Byb2Nlc3MoZG9GbHVzaCkge1xuICAgIGxldCBwcm9jZXNzZWRXb3JkcztcbiAgICBsZXQgbkJsb2Nrc1JlYWR5ID0gdGhpcy5fZGF0YS5zaWdCeXRlcyAvICh0aGlzLmJsb2NrU2l6ZSAqIDQpO1xuICAgIGlmIChkb0ZsdXNoKSB7XG4gICAgICBuQmxvY2tzUmVhZHkgPSBNYXRoLmNlaWwobkJsb2Nrc1JlYWR5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbkJsb2Nrc1JlYWR5ID0gTWF0aC5tYXgoKG5CbG9ja3NSZWFkeSB8IDApIC0gdGhpcy5fbWluQnVmZmVyU2l6ZSwgMCk7XG4gICAgfVxuICAgIGNvbnN0IG5Xb3Jkc1JlYWR5ID0gbkJsb2Nrc1JlYWR5ICogdGhpcy5ibG9ja1NpemU7XG4gICAgY29uc3QgbkJ5dGVzUmVhZHkgPSBNYXRoLm1pbihuV29yZHNSZWFkeSAqIDQsIHRoaXMuX2RhdGEuc2lnQnl0ZXMpO1xuICAgIGlmIChuV29yZHNSZWFkeSkge1xuICAgICAgZm9yIChsZXQgb2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbldvcmRzUmVhZHk7IG9mZnNldCArPSB0aGlzLmJsb2NrU2l6ZSkge1xuICAgICAgICB0aGlzLl9kb1Byb2Nlc3NCbG9jayh0aGlzLl9kYXRhLndvcmRzLCBvZmZzZXQpO1xuICAgICAgfVxuICAgICAgcHJvY2Vzc2VkV29yZHMgPSB0aGlzLl9kYXRhLndvcmRzLnNwbGljZSgwLCBuV29yZHNSZWFkeSk7XG4gICAgICB0aGlzLl9kYXRhLnNpZ0J5dGVzIC09IG5CeXRlc1JlYWR5O1xuICAgIH1cbiAgICByZXR1cm4gbmV3IFdvcmRBcnJheShwcm9jZXNzZWRXb3JkcywgbkJ5dGVzUmVhZHkpO1xuICB9XG59XG5jbGFzcyBIYXNoZXIgZXh0ZW5kcyBCdWZmZXJlZEJsb2NrQWxnb3JpdGhtIHtcbiAgdXBkYXRlKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICB0aGlzLl9hcHBlbmQobWVzc2FnZVVwZGF0ZSk7XG4gICAgdGhpcy5fcHJvY2VzcygpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICBpZiAobWVzc2FnZVVwZGF0ZSkge1xuICAgICAgdGhpcy5fYXBwZW5kKG1lc3NhZ2VVcGRhdGUpO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBIID0gW1xuICAxNzc5MDMzNzAzLFxuICAtMTE1MDgzMzAxOSxcbiAgMTAxMzkwNDI0MixcbiAgLTE1MjE0ODY1MzQsXG4gIDEzNTk4OTMxMTksXG4gIC0xNjk0MTQ0MzcyLFxuICA1Mjg3MzQ2MzUsXG4gIDE1NDE0NTkyMjVcbl07XG5jb25zdCBLID0gW1xuICAxMTE2MzUyNDA4LFxuICAxODk5NDQ3NDQxLFxuICAtMTI0NTY0MzgyNSxcbiAgLTM3Mzk1NzcyMyxcbiAgOTYxOTg3MTYzLFxuICAxNTA4OTcwOTkzLFxuICAtMTg0MTMzMTU0OCxcbiAgLTE0MjQyMDQwNzUsXG4gIC02NzA1ODYyMTYsXG4gIDMxMDU5ODQwMSxcbiAgNjA3MjI1Mjc4LFxuICAxNDI2ODgxOTg3LFxuICAxOTI1MDc4Mzg4LFxuICAtMjEzMjg4OTA5MCxcbiAgLTE2ODAwNzkxOTMsXG4gIC0xMDQ2NzQ0NzE2LFxuICAtNDU5NTc2ODk1LFxuICAtMjcyNzQyNTIyLFxuICAyNjQzNDcwNzgsXG4gIDYwNDgwNzYyOCxcbiAgNzcwMjU1OTgzLFxuICAxMjQ5MTUwMTIyLFxuICAxNTU1MDgxNjkyLFxuICAxOTk2MDY0OTg2LFxuICAtMTc0MDc0NjQxNCxcbiAgLTE0NzMxMzI5NDcsXG4gIC0xMzQxOTcwNDg4LFxuICAtMTA4NDY1MzYyNSxcbiAgLTk1ODM5NTQwNSxcbiAgLTcxMDQzODU4NSxcbiAgMTEzOTI2OTkzLFxuICAzMzgyNDE4OTUsXG4gIDY2NjMwNzIwNSxcbiAgNzczNTI5OTEyLFxuICAxMjk0NzU3MzcyLFxuICAxMzk2MTgyMjkxLFxuICAxNjk1MTgzNzAwLFxuICAxOTg2NjYxMDUxLFxuICAtMjExNzk0MDk0NixcbiAgLTE4MzgwMTEyNTksXG4gIC0xNTY0NDgxMzc1LFxuICAtMTQ3NDY2NDg4NSxcbiAgLTEwMzUyMzY0OTYsXG4gIC05NDkyMDI1MjUsXG4gIC03Nzg5MDE0NzksXG4gIC02OTQ2MTQ0OTIsXG4gIC0yMDAzOTUzODcsXG4gIDI3NTQyMzM0NCxcbiAgNDMwMjI3NzM0LFxuICA1MDY5NDg2MTYsXG4gIDY1OTA2MDU1NixcbiAgODgzOTk3ODc3LFxuICA5NTgxMzk1NzEsXG4gIDEzMjI4MjIyMTgsXG4gIDE1MzcwMDIwNjMsXG4gIDE3NDc4NzM3NzksXG4gIDE5NTU1NjIyMjIsXG4gIDIwMjQxMDQ4MTUsXG4gIC0yMDY3MjM2ODQ0LFxuICAtMTkzMzExNDg3MixcbiAgLTE4NjY1MzA4MjIsXG4gIC0xNTM4MjMzMTA5LFxuICAtMTA5MDkzNTgxNyxcbiAgLTk2NTY0MTk5OFxuXTtcbmNvbnN0IFcgPSBbXTtcbmNsYXNzIFNIQTI1NiBleHRlbmRzIEhhc2hlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKC4uLmFyZ3VtZW50cyk7XG4gICAgdGhpcy5faGFzaCA9IG5ldyBXb3JkQXJyYXkoWy4uLkhdKTtcbiAgfVxuICByZXNldCgpIHtcbiAgICBzdXBlci5yZXNldCgpO1xuICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5KFsuLi5IXSk7XG4gIH1cbiAgX2RvUHJvY2Vzc0Jsb2NrKE0sIG9mZnNldCkge1xuICAgIGNvbnN0IEgyID0gdGhpcy5faGFzaC53b3JkcztcbiAgICBsZXQgYSA9IEgyWzBdO1xuICAgIGxldCBiID0gSDJbMV07XG4gICAgbGV0IGMgPSBIMlsyXTtcbiAgICBsZXQgZCA9IEgyWzNdO1xuICAgIGxldCBlID0gSDJbNF07XG4gICAgbGV0IGYgPSBIMls1XTtcbiAgICBsZXQgZyA9IEgyWzZdO1xuICAgIGxldCBoID0gSDJbN107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7XG4gICAgICBpZiAoaSA8IDE2KSB7XG4gICAgICAgIFdbaV0gPSBNW29mZnNldCArIGldIHwgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdhbW1hMHggPSBXW2kgLSAxNV07XG4gICAgICAgIGNvbnN0IGdhbW1hMCA9IChnYW1tYTB4IDw8IDI1IHwgZ2FtbWEweCA+Pj4gNykgXiAoZ2FtbWEweCA8PCAxNCB8IGdhbW1hMHggPj4+IDE4KSBeIGdhbW1hMHggPj4+IDM7XG4gICAgICAgIGNvbnN0IGdhbW1hMXggPSBXW2kgLSAyXTtcbiAgICAgICAgY29uc3QgZ2FtbWExID0gKGdhbW1hMXggPDwgMTUgfCBnYW1tYTF4ID4+PiAxNykgXiAoZ2FtbWExeCA8PCAxMyB8IGdhbW1hMXggPj4+IDE5KSBeIGdhbW1hMXggPj4+IDEwO1xuICAgICAgICBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl07XG4gICAgICB9XG4gICAgICBjb25zdCBjaCA9IGUgJiBmIF4gfmUgJiBnO1xuICAgICAgY29uc3QgbWFqID0gYSAmIGIgXiBhICYgYyBeIGIgJiBjO1xuICAgICAgY29uc3Qgc2lnbWEwID0gKGEgPDwgMzAgfCBhID4+PiAyKSBeIChhIDw8IDE5IHwgYSA+Pj4gMTMpIF4gKGEgPDwgMTAgfCBhID4+PiAyMik7XG4gICAgICBjb25zdCBzaWdtYTEgPSAoZSA8PCAyNiB8IGUgPj4+IDYpIF4gKGUgPDwgMjEgfCBlID4+PiAxMSkgXiAoZSA8PCA3IHwgZSA+Pj4gMjUpO1xuICAgICAgY29uc3QgdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2ldICsgV1tpXTtcbiAgICAgIGNvbnN0IHQyID0gc2lnbWEwICsgbWFqO1xuICAgICAgaCA9IGc7XG4gICAgICBnID0gZjtcbiAgICAgIGYgPSBlO1xuICAgICAgZSA9IGQgKyB0MSB8IDA7XG4gICAgICBkID0gYztcbiAgICAgIGMgPSBiO1xuICAgICAgYiA9IGE7XG4gICAgICBhID0gdDEgKyB0MiB8IDA7XG4gICAgfVxuICAgIEgyWzBdID0gSDJbMF0gKyBhIHwgMDtcbiAgICBIMlsxXSA9IEgyWzFdICsgYiB8IDA7XG4gICAgSDJbMl0gPSBIMlsyXSArIGMgfCAwO1xuICAgIEgyWzNdID0gSDJbM10gKyBkIHwgMDtcbiAgICBIMls0XSA9IEgyWzRdICsgZSB8IDA7XG4gICAgSDJbNV0gPSBIMls1XSArIGYgfCAwO1xuICAgIEgyWzZdID0gSDJbNl0gKyBnIHwgMDtcbiAgICBIMls3XSA9IEgyWzddICsgaCB8IDA7XG4gIH1cbiAgZmluYWxpemUobWVzc2FnZVVwZGF0ZSkge1xuICAgIHN1cGVyLmZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpO1xuICAgIGNvbnN0IG5CaXRzVG90YWwgPSB0aGlzLl9uRGF0YUJ5dGVzICogODtcbiAgICBjb25zdCBuQml0c0xlZnQgPSB0aGlzLl9kYXRhLnNpZ0J5dGVzICogODtcbiAgICB0aGlzLl9kYXRhLndvcmRzW25CaXRzTGVmdCA+Pj4gNV0gfD0gMTI4IDw8IDI0IC0gbkJpdHNMZWZ0ICUgMzI7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1sobkJpdHNMZWZ0ICsgNjQgPj4+IDkgPDwgNCkgKyAxNF0gPSBNYXRoLmZsb29yKFxuICAgICAgbkJpdHNUb3RhbCAvIDQyOTQ5NjcyOTZcbiAgICApO1xuICAgIHRoaXMuX2RhdGEud29yZHNbKG5CaXRzTGVmdCArIDY0ID4+PiA5IDw8IDQpICsgMTVdID0gbkJpdHNUb3RhbDtcbiAgICB0aGlzLl9kYXRhLnNpZ0J5dGVzID0gdGhpcy5fZGF0YS53b3Jkcy5sZW5ndGggKiA0O1xuICAgIHRoaXMuX3Byb2Nlc3MoKTtcbiAgICByZXR1cm4gdGhpcy5faGFzaDtcbiAgfVxufVxuZnVuY3Rpb24gc2hhMjU2KG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBTSEEyNTYoKS5maW5hbGl6ZShtZXNzYWdlKS50b1N0cmluZygpO1xufVxuZnVuY3Rpb24gc2hhMjU2YmFzZTY0KG1lc3NhZ2UpIHtcbiAgcmV0dXJuIG5ldyBTSEEyNTYoKS5maW5hbGl6ZShtZXNzYWdlKS50b1N0cmluZyhCYXNlNjQpO1xufVxuXG5mdW5jdGlvbiBoYXNoKG9iamVjdCwgb3B0aW9ucyA9IHt9KSB7XG4gIGNvbnN0IGhhc2hlZCA9IHR5cGVvZiBvYmplY3QgPT09IFwic3RyaW5nXCIgPyBvYmplY3QgOiBvYmplY3RIYXNoKG9iamVjdCwgb3B0aW9ucyk7XG4gIHJldHVybiBzaGEyNTZiYXNlNjQoaGFzaGVkKS5zbGljZSgwLCAxMCk7XG59XG5cbmZ1bmN0aW9uIG11cm11ckhhc2goa2V5LCBzZWVkID0gMCkge1xuICBpZiAodHlwZW9mIGtleSA9PT0gXCJzdHJpbmdcIikge1xuICAgIGtleSA9IGNyZWF0ZUJ1ZmZlcihrZXkpO1xuICB9XG4gIGxldCBpID0gMDtcbiAgbGV0IGgxID0gc2VlZDtcbiAgbGV0IGsxO1xuICBsZXQgaDFiO1xuICBjb25zdCByZW1haW5kZXIgPSBrZXkubGVuZ3RoICYgMztcbiAgY29uc3QgYnl0ZXMgPSBrZXkubGVuZ3RoIC0gcmVtYWluZGVyO1xuICBjb25zdCBjMSA9IDM0MzI5MTgzNTM7XG4gIGNvbnN0IGMyID0gNDYxODQ1OTA3O1xuICB3aGlsZSAoaSA8IGJ5dGVzKSB7XG4gICAgazEgPSBrZXlbaV0gJiAyNTUgfCAoa2V5WysraV0gJiAyNTUpIDw8IDggfCAoa2V5WysraV0gJiAyNTUpIDw8IDE2IHwgKGtleVsrK2ldICYgMjU1KSA8PCAyNDtcbiAgICArK2k7XG4gICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMSArICgoKGsxID4+PiAxNikgKiBjMSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGsxID0gazEgPDwgMTUgfCBrMSA+Pj4gMTc7XG4gICAgazEgPSAoazEgJiA2NTUzNSkgKiBjMiArICgoKGsxID4+PiAxNikgKiBjMiAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGgxIF49IGsxO1xuICAgIGgxID0gaDEgPDwgMTMgfCBoMSA+Pj4gMTk7XG4gICAgaDFiID0gKGgxICYgNjU1MzUpICogNSArICgoKGgxID4+PiAxNikgKiA1ICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgaDEgPSAoaDFiICYgNjU1MzUpICsgMjc0OTIgKyAoKChoMWIgPj4+IDE2KSArIDU4OTY0ICYgNjU1MzUpIDw8IDE2KTtcbiAgfVxuICBrMSA9IDA7XG4gIHN3aXRjaCAocmVtYWluZGVyKSB7XG4gICAgY2FzZSAzOiB7XG4gICAgICBrMSBePSAoa2V5W2kgKyAyXSAmIDI1NSkgPDwgMTY7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgY2FzZSAyOiB7XG4gICAgICBrMSBePSAoa2V5W2kgKyAxXSAmIDI1NSkgPDwgODtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICBjYXNlIDE6IHtcbiAgICAgIGsxIF49IGtleVtpXSAmIDI1NTtcbiAgICAgIGsxID0gKGsxICYgNjU1MzUpICogYzEgKyAoKChrMSA+Pj4gMTYpICogYzEgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICAgIGsxID0gazEgPDwgMTUgfCBrMSA+Pj4gMTc7XG4gICAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMyICsgKCgoazEgPj4+IDE2KSAqIGMyICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgICBoMSBePSBrMTtcbiAgICB9XG4gIH1cbiAgaDEgXj0ga2V5Lmxlbmd0aDtcbiAgaDEgXj0gaDEgPj4+IDE2O1xuICBoMSA9IChoMSAmIDY1NTM1KSAqIDIyNDY4MjI1MDcgKyAoKChoMSA+Pj4gMTYpICogMjI0NjgyMjUwNyAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICBoMSBePSBoMSA+Pj4gMTM7XG4gIGgxID0gKGgxICYgNjU1MzUpICogMzI2NjQ4OTkwOSArICgoKGgxID4+PiAxNikgKiAzMjY2NDg5OTA5ICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gIGgxIF49IGgxID4+PiAxNjtcbiAgcmV0dXJuIGgxID4+PiAwO1xufVxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyKHZhbCkge1xuICByZXR1cm4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHZhbCk7XG59XG5cbmZ1bmN0aW9uIGlzRXF1YWwob2JqZWN0MSwgb2JqZWN0MiwgaGFzaE9wdGlvbnMgPSB7fSkge1xuICBpZiAob2JqZWN0MSA9PT0gb2JqZWN0Mikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChvYmplY3RIYXNoKG9iamVjdDEsIGhhc2hPcHRpb25zKSA9PT0gb2JqZWN0SGFzaChvYmplY3QyLCBoYXNoT3B0aW9ucykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGRpZmYob2JqMSwgb2JqMiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGgxID0gX3RvSGFzaGVkT2JqZWN0KG9iajEsIG9wdHMpO1xuICBjb25zdCBoMiA9IF90b0hhc2hlZE9iamVjdChvYmoyLCBvcHRzKTtcbiAgcmV0dXJuIF9kaWZmKGgxLCBoMiwgb3B0cyk7XG59XG5mdW5jdGlvbiBfZGlmZihoMSwgaDIsIG9wdHMgPSB7fSkge1xuICBjb25zdCBkaWZmcyA9IFtdO1xuICBjb25zdCBhbGxQcm9wcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgICAuLi5PYmplY3Qua2V5cyhoMS5wcm9wcyB8fCB7fSksXG4gICAgLi4uT2JqZWN0LmtleXMoaDIucHJvcHMgfHwge30pXG4gIF0pO1xuICBpZiAoaDEucHJvcHMgJiYgaDIucHJvcHMpIHtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgYWxsUHJvcHMpIHtcbiAgICAgIGNvbnN0IHAxID0gaDEucHJvcHNbcHJvcF07XG4gICAgICBjb25zdCBwMiA9IGgyLnByb3BzW3Byb3BdO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIGRpZmZzLnB1c2goLi4uX2RpZmYoaDEucHJvcHM/Lltwcm9wXSwgaDIucHJvcHM/Lltwcm9wXSwgb3B0cykpO1xuICAgICAgfSBlbHNlIGlmIChwMSB8fCBwMikge1xuICAgICAgICBkaWZmcy5wdXNoKFxuICAgICAgICAgIG5ldyBEaWZmRW50cnkoKHAyIHx8IHAxKS5rZXksIHAxID8gXCJyZW1vdmVkXCIgOiBcImFkZGVkXCIsIHAyLCBwMSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGFsbFByb3BzLnNpemUgPT09IDAgJiYgaDEuaGFzaCAhPT0gaDIuaGFzaCkge1xuICAgIGRpZmZzLnB1c2gobmV3IERpZmZFbnRyeSgoaDIgfHwgaDEpLmtleSwgXCJjaGFuZ2VkXCIsIGgyLCBoMSkpO1xuICB9XG4gIHJldHVybiBkaWZmcztcbn1cbmZ1bmN0aW9uIF90b0hhc2hlZE9iamVjdChvYmosIG9wdHMsIGtleSA9IFwiXCIpIHtcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG5ldyBEaWZmSGFzaGVkT2JqZWN0KGtleSwgb2JqLCBvYmplY3RIYXNoKG9iaiwgb3B0cykpO1xuICB9XG4gIGNvbnN0IHByb3BzID0ge307XG4gIGNvbnN0IGhhc2hlcyA9IFtdO1xuICBmb3IgKGNvbnN0IF9rZXkgaW4gb2JqKSB7XG4gICAgcHJvcHNbX2tleV0gPSBfdG9IYXNoZWRPYmplY3QoXG4gICAgICBvYmpbX2tleV0sXG4gICAgICBvcHRzLFxuICAgICAga2V5ID8gYCR7a2V5fS4ke19rZXl9YCA6IF9rZXlcbiAgICApO1xuICAgIGhhc2hlcy5wdXNoKHByb3BzW19rZXldLmhhc2gpO1xuICB9XG4gIHJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChrZXksIG9iaiwgYHske2hhc2hlcy5qb2luKFwiOlwiKX19YCwgcHJvcHMpO1xufVxuY2xhc3MgRGlmZkVudHJ5IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3Ioa2V5LCB0eXBlLCBuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9KU09OKCk7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFwiYWRkZWRcIjoge1xuICAgICAgICByZXR1cm4gYEFkZGVkICAgXFxgJHt0aGlzLmtleX1cXGBgO1xuICAgICAgfVxuICAgICAgY2FzZSBcInJlbW92ZWRcIjoge1xuICAgICAgICByZXR1cm4gYFJlbW92ZWQgXFxgJHt0aGlzLmtleX1cXGBgO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNoYW5nZWRcIjoge1xuICAgICAgICByZXR1cm4gYENoYW5nZWQgXFxgJHt0aGlzLmtleX1cXGAgZnJvbSBcXGAke3RoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgfHwgXCItXCJ9XFxgIHRvIFxcYCR7dGhpcy5uZXdWYWx1ZS50b1N0cmluZygpfVxcYGA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBEaWZmSGFzaGVkT2JqZWN0IHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVzZWxlc3MtY29uc3RydWN0b3JcbiAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSwgaGFzaCwgcHJvcHMpIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5oYXNoID0gaGFzaDtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbihcIixcIil9fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGsgPSB0aGlzLmtleSB8fCBcIi5cIjtcbiAgICBpZiAodGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIGAke2t9KHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2t9KCR7dGhpcy52YWx1ZX0pYDtcbiAgfVxufVxuXG5leHBvcnQgeyBkaWZmLCBoYXNoLCBpc0VxdWFsLCBtdXJtdXJIYXNoLCBvYmplY3RIYXNoLCBzaGEyNTYsIHNoYTI1NmJhc2U2NCB9O1xuIiwgImV4cG9ydCB7IGEgYXMgY29uc29sYSwgYyBhcyBjcmVhdGVDb25zb2xhLCBhIGFzIGRlZmF1bHQgfSBmcm9tICcuL3NoYXJlZC9jb25zb2xhLjM2YzAwMzRmLm1qcyc7XG5leHBvcnQgeyBDb25zb2xhLCBMb2dMZXZlbHMsIExvZ1R5cGVzIH0gZnJvbSAnLi9jb3JlLm1qcyc7XG5pbXBvcnQgJy4vc2hhcmVkL2NvbnNvbGEuMDZhZDhhNjQubWpzJztcbmltcG9ydCAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCAnLi91dGlscy5tanMnO1xuaW1wb3J0ICdub2RlOnR0eSc7XG5pbXBvcnQgJ25vZGU6dXRpbCc7XG5pbXBvcnQgJ25vZGU6cGF0aCc7XG4iLCAiaW1wb3J0IGNvbnNvbGEgZnJvbSAnY29uc29sYSc7XG5pbXBvcnQgeyBjb2xvcnMgfSBmcm9tICdjb25zb2xhL3V0aWxzJztcblxuZnVuY3Rpb24gdG9BcnJheSh2YWwpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkodmFsKSkge1xuICAgIHJldHVybiB2YWw7XG4gIH1cbiAgcmV0dXJuIHZhbCA9PT0gdm9pZCAwID8gW10gOiBbdmFsXTtcbn1cbmZ1bmN0aW9uIGZvcm1hdExpbmVDb2x1bW5zKGxpbmVzLCBsaW5lUHJlZml4ID0gXCJcIikge1xuICBjb25zdCBtYXhMZW5naCA9IFtdO1xuICBmb3IgKGNvbnN0IGxpbmUgb2YgbGluZXMpIHtcbiAgICBmb3IgKGNvbnN0IFtpLCBlbGVtZW50XSBvZiBsaW5lLmVudHJpZXMoKSkge1xuICAgICAgbWF4TGVuZ2hbaV0gPSBNYXRoLm1heChtYXhMZW5naFtpXSB8fCAwLCBlbGVtZW50Lmxlbmd0aCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBsaW5lcy5tYXAoXG4gICAgKGwpID0+IGwubWFwKFxuICAgICAgKGMsIGkpID0+IGxpbmVQcmVmaXggKyBjW2kgPT09IDAgPyBcInBhZFN0YXJ0XCIgOiBcInBhZEVuZFwiXShtYXhMZW5naFtpXSlcbiAgICApLmpvaW4oXCIgIFwiKVxuICApLmpvaW4oXCJcXG5cIik7XG59XG5mdW5jdGlvbiByZXNvbHZlVmFsdWUoaW5wdXQpIHtcbiAgcmV0dXJuIHR5cGVvZiBpbnB1dCA9PT0gXCJmdW5jdGlvblwiID8gaW5wdXQoKSA6IGlucHV0O1xufVxuY2xhc3MgQ0xJRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UsIGNvZGUpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLmNvZGUgPSBjb2RlO1xuICAgIHRoaXMubmFtZSA9IFwiQ0xJRXJyb3JcIjtcbiAgfVxufVxuXG5jb25zdCBOVU1CRVJfQ0hBUl9SRSA9IC9cXGQvO1xuY29uc3QgU1RSX1NQTElUVEVSUyA9IFtcIi1cIiwgXCJfXCIsIFwiL1wiLCBcIi5cIl07XG5mdW5jdGlvbiBpc1VwcGVyY2FzZShjaGFyID0gXCJcIikge1xuICBpZiAoTlVNQkVSX0NIQVJfUkUudGVzdChjaGFyKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cbiAgcmV0dXJuIGNoYXIgIT09IGNoYXIudG9Mb3dlckNhc2UoKTtcbn1cbmZ1bmN0aW9uIHNwbGl0QnlDYXNlKHN0ciwgc2VwYXJhdG9ycykge1xuICBjb25zdCBzcGxpdHRlcnMgPSBzZXBhcmF0b3JzID8/IFNUUl9TUExJVFRFUlM7XG4gIGNvbnN0IHBhcnRzID0gW107XG4gIGlmICghc3RyIHx8IHR5cGVvZiBzdHIgIT09IFwic3RyaW5nXCIpIHtcbiAgICByZXR1cm4gcGFydHM7XG4gIH1cbiAgbGV0IGJ1ZmYgPSBcIlwiO1xuICBsZXQgcHJldmlvdXNVcHBlcjtcbiAgbGV0IHByZXZpb3VzU3BsaXR0ZXI7XG4gIGZvciAoY29uc3QgY2hhciBvZiBzdHIpIHtcbiAgICBjb25zdCBpc1NwbGl0dGVyID0gc3BsaXR0ZXJzLmluY2x1ZGVzKGNoYXIpO1xuICAgIGlmIChpc1NwbGl0dGVyID09PSB0cnVlKSB7XG4gICAgICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICAgICAgYnVmZiA9IFwiXCI7XG4gICAgICBwcmV2aW91c1VwcGVyID0gdm9pZCAwO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGlzVXBwZXIgPSBpc1VwcGVyY2FzZShjaGFyKTtcbiAgICBpZiAocHJldmlvdXNTcGxpdHRlciA9PT0gZmFsc2UpIHtcbiAgICAgIGlmIChwcmV2aW91c1VwcGVyID09PSBmYWxzZSAmJiBpc1VwcGVyID09PSB0cnVlKSB7XG4gICAgICAgIHBhcnRzLnB1c2goYnVmZik7XG4gICAgICAgIGJ1ZmYgPSBjaGFyO1xuICAgICAgICBwcmV2aW91c1VwcGVyID0gaXNVcHBlcjtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJldmlvdXNVcHBlciA9PT0gdHJ1ZSAmJiBpc1VwcGVyID09PSBmYWxzZSAmJiBidWZmLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgY29uc3QgbGFzdENoYXIgPSBidWZmLmF0KC0xKTtcbiAgICAgICAgcGFydHMucHVzaChidWZmLnNsaWNlKDAsIE1hdGgubWF4KDAsIGJ1ZmYubGVuZ3RoIC0gMSkpKTtcbiAgICAgICAgYnVmZiA9IGxhc3RDaGFyICsgY2hhcjtcbiAgICAgICAgcHJldmlvdXNVcHBlciA9IGlzVXBwZXI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBidWZmICs9IGNoYXI7XG4gICAgcHJldmlvdXNVcHBlciA9IGlzVXBwZXI7XG4gICAgcHJldmlvdXNTcGxpdHRlciA9IGlzU3BsaXR0ZXI7XG4gIH1cbiAgcGFydHMucHVzaChidWZmKTtcbiAgcmV0dXJuIHBhcnRzO1xufVxuZnVuY3Rpb24gdXBwZXJGaXJzdChzdHIpIHtcbiAgcmV0dXJuIHN0ciA/IHN0clswXS50b1VwcGVyQ2FzZSgpICsgc3RyLnNsaWNlKDEpIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGxvd2VyRmlyc3Qoc3RyKSB7XG4gIHJldHVybiBzdHIgPyBzdHJbMF0udG9Mb3dlckNhc2UoKSArIHN0ci5zbGljZSgxKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBwYXNjYWxDYXNlKHN0ciwgb3B0cykge1xuICByZXR1cm4gc3RyID8gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ciA6IHNwbGl0QnlDYXNlKHN0cikpLm1hcCgocCkgPT4gdXBwZXJGaXJzdChvcHRzPy5ub3JtYWxpemUgPyBwLnRvTG93ZXJDYXNlKCkgOiBwKSkuam9pbihcIlwiKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBjYW1lbENhc2Uoc3RyLCBvcHRzKSB7XG4gIHJldHVybiBsb3dlckZpcnN0KHBhc2NhbENhc2Uoc3RyIHx8IFwiXCIsIG9wdHMpKTtcbn1cbmZ1bmN0aW9uIGtlYmFiQ2FzZShzdHIsIGpvaW5lcikge1xuICByZXR1cm4gc3RyID8gKEFycmF5LmlzQXJyYXkoc3RyKSA/IHN0ciA6IHNwbGl0QnlDYXNlKHN0cikpLm1hcCgocCkgPT4gcC50b0xvd2VyQ2FzZSgpKS5qb2luKGpvaW5lciA/PyBcIi1cIikgOiBcIlwiO1xufVxuXG5mdW5jdGlvbiB0b0FycihhbnkpIHtcbiAgcmV0dXJuIGFueSA9PSB2b2lkIDAgPyBbXSA6IEFycmF5LmlzQXJyYXkoYW55KSA/IGFueSA6IFthbnldO1xufVxuZnVuY3Rpb24gdG9WYWwob3V0LCBrZXksIHZhbCwgb3B0cykge1xuICBsZXQgeDtcbiAgY29uc3Qgb2xkID0gb3V0W2tleV07XG4gIGNvbnN0IG54dCA9IH5vcHRzLnN0cmluZy5pbmRleE9mKGtleSkgPyB2YWwgPT0gdm9pZCAwIHx8IHZhbCA9PT0gdHJ1ZSA/IFwiXCIgOiBTdHJpbmcodmFsKSA6IHR5cGVvZiB2YWwgPT09IFwiYm9vbGVhblwiID8gdmFsIDogfm9wdHMuYm9vbGVhbi5pbmRleE9mKGtleSkgPyB2YWwgPT09IFwiZmFsc2VcIiA/IGZhbHNlIDogdmFsID09PSBcInRydWVcIiB8fCAob3V0Ll8ucHVzaCgoeCA9ICt2YWwsIHggKiAwID09PSAwKSA/IHggOiB2YWwpLCAhIXZhbCkgOiAoeCA9ICt2YWwsIHggKiAwID09PSAwKSA/IHggOiB2YWw7XG4gIG91dFtrZXldID0gb2xkID09IHZvaWQgMCA/IG54dCA6IEFycmF5LmlzQXJyYXkob2xkKSA/IG9sZC5jb25jYXQobnh0KSA6IFtvbGQsIG54dF07XG59XG5mdW5jdGlvbiBwYXJzZVJhd0FyZ3MoYXJncyA9IFtdLCBvcHRzID0ge30pIHtcbiAgbGV0IGs7XG4gIGxldCBhcnI7XG4gIGxldCBhcmc7XG4gIGxldCBuYW1lO1xuICBsZXQgdmFsO1xuICBjb25zdCBvdXQgPSB7IF86IFtdIH07XG4gIGxldCBpID0gMDtcbiAgbGV0IGogPSAwO1xuICBsZXQgaWR4ID0gMDtcbiAgY29uc3QgbGVuID0gYXJncy5sZW5ndGg7XG4gIGNvbnN0IGFsaWJpID0gb3B0cy5hbGlhcyAhPT0gdm9pZCAwO1xuICBjb25zdCBzdHJpY3QgPSBvcHRzLnVua25vd24gIT09IHZvaWQgMDtcbiAgY29uc3QgZGVmYXVsdHMgPSBvcHRzLmRlZmF1bHQgIT09IHZvaWQgMDtcbiAgb3B0cy5hbGlhcyA9IG9wdHMuYWxpYXMgfHwge307XG4gIG9wdHMuc3RyaW5nID0gdG9BcnIob3B0cy5zdHJpbmcpO1xuICBvcHRzLmJvb2xlYW4gPSB0b0FycihvcHRzLmJvb2xlYW4pO1xuICBpZiAoYWxpYmkpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5hbGlhcykge1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSA9IHRvQXJyKG9wdHMuYWxpYXNba10pO1xuICAgICAgZm9yIChpID0gMDsgaSA8IGFyci5sZW5ndGg7IGkrKykge1xuICAgICAgICAob3B0cy5hbGlhc1thcnJbaV1dID0gYXJyLmNvbmNhdChrKSkuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmb3IgKGkgPSBvcHRzLmJvb2xlYW4ubGVuZ3RoOyBpLS0gPiAwOyApIHtcbiAgICBhcnIgPSBvcHRzLmFsaWFzW29wdHMuYm9vbGVhbltpXV0gfHwgW107XG4gICAgZm9yIChqID0gYXJyLmxlbmd0aDsgai0tID4gMDsgKSB7XG4gICAgICBvcHRzLmJvb2xlYW4ucHVzaChhcnJbal0pO1xuICAgIH1cbiAgfVxuICBmb3IgKGkgPSBvcHRzLnN0cmluZy5sZW5ndGg7IGktLSA+IDA7ICkge1xuICAgIGFyciA9IG9wdHMuYWxpYXNbb3B0cy5zdHJpbmdbaV1dIHx8IFtdO1xuICAgIGZvciAoaiA9IGFyci5sZW5ndGg7IGotLSA+IDA7ICkge1xuICAgICAgb3B0cy5zdHJpbmcucHVzaChhcnJbal0pO1xuICAgIH1cbiAgfVxuICBpZiAoZGVmYXVsdHMpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG4gICAgICBuYW1lID0gdHlwZW9mIG9wdHMuZGVmYXVsdFtrXTtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuICAgICAgaWYgKG9wdHNbbmFtZV0gIT09IHZvaWQgMCkge1xuICAgICAgICBvcHRzW25hbWVdLnB1c2goayk7XG4gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBvcHRzW25hbWVdLnB1c2goYXJyW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICBjb25zdCBrZXlzID0gc3RyaWN0ID8gT2JqZWN0LmtleXMob3B0cy5hbGlhcykgOiBbXTtcbiAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgYXJnID0gYXJnc1tpXTtcbiAgICBpZiAoYXJnID09PSBcIi0tXCIpIHtcbiAgICAgIG91dC5fID0gb3V0Ll8uY29uY2F0KGFyZ3Muc2xpY2UoKytpKSk7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgZm9yIChqID0gMDsgaiA8IGFyZy5sZW5ndGg7IGorKykge1xuICAgICAgaWYgKGFyZy5jaGFyQ29kZUF0KGopICE9PSA0NSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGogPT09IDApIHtcbiAgICAgIG91dC5fLnB1c2goYXJnKTtcbiAgICB9IGVsc2UgaWYgKGFyZy5zdWJzdHJpbmcoaiwgaiArIDMpID09PSBcIm5vLVwiKSB7XG4gICAgICBuYW1lID0gYXJnLnNsaWNlKE1hdGgubWF4KDAsIGogKyAzKSk7XG4gICAgICBpZiAoc3RyaWN0ICYmICF+a2V5cy5pbmRleE9mKG5hbWUpKSB7XG4gICAgICAgIHJldHVybiBvcHRzLnVua25vd24oYXJnKTtcbiAgICAgIH1cbiAgICAgIG91dFtuYW1lXSA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGlkeCA9IGogKyAxOyBpZHggPCBhcmcubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICBpZiAoYXJnLmNoYXJDb2RlQXQoaWR4KSA9PT0gNjEpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgbmFtZSA9IGFyZy5zdWJzdHJpbmcoaiwgaWR4KTtcbiAgICAgIHZhbCA9IGFyZy5zbGljZShNYXRoLm1heCgwLCArK2lkeCkpIHx8IGkgKyAxID09PSBsZW4gfHwgKFwiXCIgKyBhcmdzW2kgKyAxXSkuY2hhckNvZGVBdCgwKSA9PT0gNDUgfHwgYXJnc1srK2ldO1xuICAgICAgYXJyID0gaiA9PT0gMiA/IFtuYW1lXSA6IG5hbWU7XG4gICAgICBmb3IgKGlkeCA9IDA7IGlkeCA8IGFyci5sZW5ndGg7IGlkeCsrKSB7XG4gICAgICAgIG5hbWUgPSBhcnJbaWR4XTtcbiAgICAgICAgaWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkge1xuICAgICAgICAgIHJldHVybiBvcHRzLnVua25vd24oXCItXCIucmVwZWF0KGopICsgbmFtZSk7XG4gICAgICAgIH1cbiAgICAgICAgdG9WYWwob3V0LCBuYW1lLCBpZHggKyAxIDwgYXJyLmxlbmd0aCB8fCB2YWwsIG9wdHMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoZGVmYXVsdHMpIHtcbiAgICBmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG4gICAgICBpZiAob3V0W2tdID09PSB2b2lkIDApIHtcbiAgICAgICAgb3V0W2tdID0gb3B0cy5kZWZhdWx0W2tdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAoYWxpYmkpIHtcbiAgICBmb3IgKGsgaW4gb3V0KSB7XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuICAgICAgd2hpbGUgKGFyci5sZW5ndGggPiAwKSB7XG4gICAgICAgIG91dFthcnIuc2hpZnQoKV0gPSBvdXRba107XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBvdXQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlQXJncyhyYXdBcmdzLCBhcmdzRGVmKSB7XG4gIGNvbnN0IHBhcnNlT3B0aW9ucyA9IHtcbiAgICBib29sZWFuOiBbXSxcbiAgICBzdHJpbmc6IFtdLFxuICAgIG1peGVkOiBbXSxcbiAgICBhbGlhczoge30sXG4gICAgZGVmYXVsdDoge31cbiAgfTtcbiAgY29uc3QgYXJncyA9IHJlc29sdmVBcmdzKGFyZ3NEZWYpO1xuICBmb3IgKGNvbnN0IGFyZyBvZiBhcmdzKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChhcmcudHlwZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgcGFyc2VPcHRpb25zLnN0cmluZy5wdXNoKGFyZy5uYW1lKTtcbiAgICB9IGVsc2UgaWYgKGFyZy50eXBlID09PSBcImJvb2xlYW5cIikge1xuICAgICAgcGFyc2VPcHRpb25zLmJvb2xlYW4ucHVzaChhcmcubmFtZSk7XG4gICAgfVxuICAgIGlmIChhcmcuZGVmYXVsdCAhPT0gdm9pZCAwKSB7XG4gICAgICBwYXJzZU9wdGlvbnMuZGVmYXVsdFthcmcubmFtZV0gPSBhcmcuZGVmYXVsdDtcbiAgICB9XG4gICAgaWYgKGFyZy5hbGlhcykge1xuICAgICAgcGFyc2VPcHRpb25zLmFsaWFzW2FyZy5uYW1lXSA9IGFyZy5hbGlhcztcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VSYXdBcmdzKHJhd0FyZ3MsIHBhcnNlT3B0aW9ucyk7XG4gIGNvbnN0IFsuLi5wb3NpdGlvbmFsQXJndW1lbnRzXSA9IHBhcnNlZC5fO1xuICBjb25zdCBwYXJzZWRBcmdzUHJveHkgPSBuZXcgUHJveHkocGFyc2VkLCB7XG4gICAgZ2V0KHRhcmdldCwgcHJvcCkge1xuICAgICAgcmV0dXJuIHRhcmdldFtwcm9wXSA/PyB0YXJnZXRbY2FtZWxDYXNlKHByb3ApXSA/PyB0YXJnZXRba2ViYWJDYXNlKHByb3ApXTtcbiAgICB9XG4gIH0pO1xuICBmb3IgKGNvbnN0IFssIGFyZ10gb2YgYXJncy5lbnRyaWVzKCkpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb25zdCBuZXh0UG9zaXRpb25hbEFyZ3VtZW50ID0gcG9zaXRpb25hbEFyZ3VtZW50cy5zaGlmdCgpO1xuICAgICAgaWYgKG5leHRQb3NpdGlvbmFsQXJndW1lbnQgIT09IHZvaWQgMCkge1xuICAgICAgICBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID0gbmV4dFBvc2l0aW9uYWxBcmd1bWVudDtcbiAgICAgIH0gZWxzZSBpZiAoYXJnLmRlZmF1bHQgPT09IHZvaWQgMCAmJiBhcmcucmVxdWlyZWQgIT09IGZhbHNlKSB7XG4gICAgICAgIHRocm93IG5ldyBDTElFcnJvcihcbiAgICAgICAgICBgTWlzc2luZyByZXF1aXJlZCBwb3NpdGlvbmFsIGFyZ3VtZW50OiAke2FyZy5uYW1lLnRvVXBwZXJDYXNlKCl9YCxcbiAgICAgICAgICBcIkVBUkdcIlxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9IGFyZy5kZWZhdWx0O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoYXJnLnJlcXVpcmVkICYmIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPT09IHZvaWQgMCkge1xuICAgICAgdGhyb3cgbmV3IENMSUVycm9yKGBNaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50OiAtLSR7YXJnLm5hbWV9YCwgXCJFQVJHXCIpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcGFyc2VkQXJnc1Byb3h5O1xufVxuZnVuY3Rpb24gcmVzb2x2ZUFyZ3MoYXJnc0RlZikge1xuICBjb25zdCBhcmdzID0gW107XG4gIGZvciAoY29uc3QgW25hbWUsIGFyZ0RlZl0gb2YgT2JqZWN0LmVudHJpZXMoYXJnc0RlZiB8fCB7fSkpIHtcbiAgICBhcmdzLnB1c2goe1xuICAgICAgLi4uYXJnRGVmLFxuICAgICAgbmFtZSxcbiAgICAgIGFsaWFzOiB0b0FycmF5KGFyZ0RlZi5hbGlhcylcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gYXJncztcbn1cblxuZnVuY3Rpb24gZGVmaW5lQ29tbWFuZChkZWYpIHtcbiAgcmV0dXJuIGRlZjtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJ1bkNvbW1hbmQoY21kLCBvcHRzKSB7XG4gIGNvbnN0IGNtZEFyZ3MgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLmFyZ3MgfHwge30pO1xuICBjb25zdCBwYXJzZWRBcmdzID0gcGFyc2VBcmdzKG9wdHMucmF3QXJncywgY21kQXJncyk7XG4gIGNvbnN0IGNvbnRleHQgPSB7XG4gICAgcmF3QXJnczogb3B0cy5yYXdBcmdzLFxuICAgIGFyZ3M6IHBhcnNlZEFyZ3MsXG4gICAgZGF0YTogb3B0cy5kYXRhLFxuICAgIGNtZFxuICB9O1xuICBpZiAodHlwZW9mIGNtZC5zZXR1cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgYXdhaXQgY21kLnNldHVwKGNvbnRleHQpO1xuICB9XG4gIGxldCByZXN1bHQ7XG4gIHRyeSB7XG4gICAgY29uc3Qgc3ViQ29tbWFuZHMgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLnN1YkNvbW1hbmRzKTtcbiAgICBpZiAoc3ViQ29tbWFuZHMgJiYgT2JqZWN0LmtleXMoc3ViQ29tbWFuZHMpLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHN1YkNvbW1hbmRBcmdJbmRleCA9IG9wdHMucmF3QXJncy5maW5kSW5kZXgoXG4gICAgICAgIChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIilcbiAgICAgICk7XG4gICAgICBjb25zdCBzdWJDb21tYW5kTmFtZSA9IG9wdHMucmF3QXJnc1tzdWJDb21tYW5kQXJnSW5kZXhdO1xuICAgICAgaWYgKHN1YkNvbW1hbmROYW1lKSB7XG4gICAgICAgIGlmICghc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFxuICAgICAgICAgICAgYFVua25vd24gY29tbWFuZCBcXGAke3N1YkNvbW1hbmROYW1lfVxcYGAsXG4gICAgICAgICAgICBcIkVfVU5LTk9XTl9DT01NQU5EXCJcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN1YkNvbW1hbmQgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKTtcbiAgICAgICAgaWYgKHN1YkNvbW1hbmQpIHtcbiAgICAgICAgICBhd2FpdCBydW5Db21tYW5kKHN1YkNvbW1hbmQsIHtcbiAgICAgICAgICAgIHJhd0FyZ3M6IG9wdHMucmF3QXJncy5zbGljZShzdWJDb21tYW5kQXJnSW5kZXggKyAxKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKCFjbWQucnVuKSB7XG4gICAgICAgIHRocm93IG5ldyBDTElFcnJvcihgTm8gY29tbWFuZCBzcGVjaWZpZWQuYCwgXCJFX05PX0NPTU1BTkRcIik7XG4gICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY21kLnJ1biA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXN1bHQgPSBhd2FpdCBjbWQucnVuKGNvbnRleHQpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBpZiAodHlwZW9mIGNtZC5jbGVhbnVwID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgIGF3YWl0IGNtZC5jbGVhbnVwKGNvbnRleHQpO1xuICAgIH1cbiAgfVxuICByZXR1cm4geyByZXN1bHQgfTtcbn1cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVTdWJDb21tYW5kKGNtZCwgcmF3QXJncywgcGFyZW50KSB7XG4gIGNvbnN0IHN1YkNvbW1hbmRzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5zdWJDb21tYW5kcyk7XG4gIGlmIChzdWJDb21tYW5kcyAmJiBPYmplY3Qua2V5cyhzdWJDb21tYW5kcykubGVuZ3RoID4gMCkge1xuICAgIGNvbnN0IHN1YkNvbW1hbmRBcmdJbmRleCA9IHJhd0FyZ3MuZmluZEluZGV4KChhcmcpID0+ICFhcmcuc3RhcnRzV2l0aChcIi1cIikpO1xuICAgIGNvbnN0IHN1YkNvbW1hbmROYW1lID0gcmF3QXJnc1tzdWJDb21tYW5kQXJnSW5kZXhdO1xuICAgIGNvbnN0IHN1YkNvbW1hbmQgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViQ29tbWFuZHNbc3ViQ29tbWFuZE5hbWVdKTtcbiAgICBpZiAoc3ViQ29tbWFuZCkge1xuICAgICAgcmV0dXJuIHJlc29sdmVTdWJDb21tYW5kKFxuICAgICAgICBzdWJDb21tYW5kLFxuICAgICAgICByYXdBcmdzLnNsaWNlKHN1YkNvbW1hbmRBcmdJbmRleCArIDEpLFxuICAgICAgICBjbWRcbiAgICAgICk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbY21kLCBwYXJlbnRdO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaG93VXNhZ2UoY21kLCBwYXJlbnQpIHtcbiAgdHJ5IHtcbiAgICBjb25zb2xhLmxvZyhhd2FpdCByZW5kZXJVc2FnZShjbWQsIHBhcmVudCkgKyBcIlxcblwiKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zb2xhLmVycm9yKGVycm9yKTtcbiAgfVxufVxuYXN5bmMgZnVuY3Rpb24gcmVuZGVyVXNhZ2UoY21kLCBwYXJlbnQpIHtcbiAgY29uc3QgY21kTWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQubWV0YSB8fCB7fSk7XG4gIGNvbnN0IGNtZEFyZ3MgPSByZXNvbHZlQXJncyhhd2FpdCByZXNvbHZlVmFsdWUoY21kLmFyZ3MgfHwge30pKTtcbiAgY29uc3QgcGFyZW50TWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShwYXJlbnQ/Lm1ldGEgfHwge30pO1xuICBjb25zdCBjb21tYW5kTmFtZSA9IGAke3BhcmVudE1ldGEubmFtZSA/IGAke3BhcmVudE1ldGEubmFtZX0gYCA6IFwiXCJ9YCArIChjbWRNZXRhLm5hbWUgfHwgcHJvY2Vzcy5hcmd2WzFdKTtcbiAgY29uc3QgYXJnTGluZXMgPSBbXTtcbiAgY29uc3QgcG9zTGluZXMgPSBbXTtcbiAgY29uc3QgY29tbWFuZHNMaW5lcyA9IFtdO1xuICBjb25zdCB1c2FnZUxpbmUgPSBbXTtcbiAgZm9yIChjb25zdCBhcmcgb2YgY21kQXJncykge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBhcmcubmFtZS50b1VwcGVyQ2FzZSgpO1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGFyZy5yZXF1aXJlZCAhPT0gZmFsc2UgJiYgYXJnLmRlZmF1bHQgPT09IHZvaWQgMDtcbiAgICAgIGNvbnN0IGRlZmF1bHRIaW50ID0gYXJnLmRlZmF1bHQgPyBgPVwiJHthcmcuZGVmYXVsdH1cImAgOiBcIlwiO1xuICAgICAgcG9zTGluZXMucHVzaChbXG4gICAgICAgIFwiYFwiICsgbmFtZSArIGRlZmF1bHRIaW50ICsgXCJgXCIsXG4gICAgICAgIGFyZy5kZXNjcmlwdGlvbiB8fCBcIlwiLFxuICAgICAgICBhcmcudmFsdWVIaW50ID8gYDwke2FyZy52YWx1ZUhpbnR9PmAgOiBcIlwiXG4gICAgICBdKTtcbiAgICAgIHVzYWdlTGluZS5wdXNoKGlzUmVxdWlyZWQgPyBgPCR7bmFtZX0+YCA6IGBbJHtuYW1lfV1gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgaXNSZXF1aXJlZCA9IGFyZy5yZXF1aXJlZCA9PT0gdHJ1ZSAmJiBhcmcuZGVmYXVsdCA9PT0gdm9pZCAwO1xuICAgICAgY29uc3QgYXJnU3RyID0gKGFyZy50eXBlID09PSBcImJvb2xlYW5cIiAmJiBhcmcuZGVmYXVsdCA9PT0gdHJ1ZSA/IFtcbiAgICAgICAgLi4uKGFyZy5hbGlhcyB8fCBbXSkubWFwKChhKSA9PiBgLS1uby0ke2F9YCksXG4gICAgICAgIGAtLW5vLSR7YXJnLm5hbWV9YFxuICAgICAgXS5qb2luKFwiLCBcIikgOiBbLi4uKGFyZy5hbGlhcyB8fCBbXSkubWFwKChhKSA9PiBgLSR7YX1gKSwgYC0tJHthcmcubmFtZX1gXS5qb2luKFxuICAgICAgICBcIiwgXCJcbiAgICAgICkpICsgKGFyZy50eXBlID09PSBcInN0cmluZ1wiICYmIChhcmcudmFsdWVIaW50IHx8IGFyZy5kZWZhdWx0KSA/IGA9JHthcmcudmFsdWVIaW50ID8gYDwke2FyZy52YWx1ZUhpbnR9PmAgOiBgXCIke2FyZy5kZWZhdWx0IHx8IFwiXCJ9XCJgfWAgOiBcIlwiKTtcbiAgICAgIGFyZ0xpbmVzLnB1c2goW1xuICAgICAgICBcImBcIiArIGFyZ1N0ciArIChpc1JlcXVpcmVkID8gXCIgKHJlcXVpcmVkKVwiIDogXCJcIikgKyBcImBcIixcbiAgICAgICAgYXJnLmRlc2NyaXB0aW9uIHx8IFwiXCJcbiAgICAgIF0pO1xuICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgdXNhZ2VMaW5lLnB1c2goYXJnU3RyKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGNtZC5zdWJDb21tYW5kcykge1xuICAgIGNvbnN0IGNvbW1hbmROYW1lcyA9IFtdO1xuICAgIGNvbnN0IHN1YkNvbW1hbmRzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5zdWJDb21tYW5kcyk7XG4gICAgZm9yIChjb25zdCBbbmFtZSwgc3ViXSBvZiBPYmplY3QuZW50cmllcyhzdWJDb21tYW5kcykpIHtcbiAgICAgIGNvbnN0IHN1YkNtZCA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWIpO1xuICAgICAgY29uc3QgbWV0YSA9IGF3YWl0IHJlc29sdmVWYWx1ZShzdWJDbWQ/Lm1ldGEpO1xuICAgICAgY29tbWFuZHNMaW5lcy5wdXNoKFtgXFxgJHtuYW1lfVxcYGAsIG1ldGE/LmRlc2NyaXB0aW9uIHx8IFwiXCJdKTtcbiAgICAgIGNvbW1hbmROYW1lcy5wdXNoKG5hbWUpO1xuICAgIH1cbiAgICB1c2FnZUxpbmUucHVzaChjb21tYW5kTmFtZXMuam9pbihcInxcIikpO1xuICB9XG4gIGNvbnN0IHVzYWdlTGluZXMgPSBbXTtcbiAgY29uc3QgdmVyc2lvbiA9IGNtZE1ldGEudmVyc2lvbiB8fCBwYXJlbnRNZXRhLnZlcnNpb247XG4gIHVzYWdlTGluZXMucHVzaChcbiAgICBjb2xvcnMuZ3JheShcbiAgICAgIGAke2NtZE1ldGEuZGVzY3JpcHRpb259ICgke2NvbW1hbmROYW1lICsgKHZlcnNpb24gPyBgIHYke3ZlcnNpb259YCA6IFwiXCIpfSlgXG4gICAgKSxcbiAgICBcIlwiXG4gICk7XG4gIGNvbnN0IGhhc09wdGlvbnMgPSBhcmdMaW5lcy5sZW5ndGggPiAwIHx8IHBvc0xpbmVzLmxlbmd0aCA+IDA7XG4gIHVzYWdlTGluZXMucHVzaChcbiAgICBgJHtjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiVVNBR0VcIikpfSBcXGAke2NvbW1hbmROYW1lfSR7aGFzT3B0aW9ucyA/IFwiIFtPUFRJT05TXVwiIDogXCJcIn0gJHt1c2FnZUxpbmUuam9pbihcIiBcIil9XFxgYCxcbiAgICBcIlwiXG4gICk7XG4gIGlmIChwb3NMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJBUkdVTUVOVFNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMocG9zTGluZXMsIFwiICBcIikpO1xuICAgIHVzYWdlTGluZXMucHVzaChcIlwiKTtcbiAgfVxuICBpZiAoYXJnTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiT1BUSU9OU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhhcmdMaW5lcywgXCIgIFwiKSk7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKFwiXCIpO1xuICB9XG4gIGlmIChjb21tYW5kc0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIkNPTU1BTkRTXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKGNvbW1hbmRzTGluZXMsIFwiICBcIikpO1xuICAgIHVzYWdlTGluZXMucHVzaChcbiAgICAgIFwiXCIsXG4gICAgICBgVXNlIFxcYCR7Y29tbWFuZE5hbWV9IDxjb21tYW5kPiAtLWhlbHBcXGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgYSBjb21tYW5kLmBcbiAgICApO1xuICB9XG4gIHJldHVybiB1c2FnZUxpbmVzLmZpbHRlcigobCkgPT4gdHlwZW9mIGwgPT09IFwic3RyaW5nXCIpLmpvaW4oXCJcXG5cIik7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJ1bk1haW4oY21kLCBvcHRzID0ge30pIHtcbiAgY29uc3QgcmF3QXJncyA9IG9wdHMucmF3QXJncyB8fCBwcm9jZXNzLmFyZ3Yuc2xpY2UoMik7XG4gIGNvbnN0IHNob3dVc2FnZSQxID0gb3B0cy5zaG93VXNhZ2UgfHwgc2hvd1VzYWdlO1xuICB0cnkge1xuICAgIGlmIChyYXdBcmdzLmluY2x1ZGVzKFwiLS1oZWxwXCIpIHx8IHJhd0FyZ3MuaW5jbHVkZXMoXCItaFwiKSkge1xuICAgICAgYXdhaXQgc2hvd1VzYWdlJDEoLi4uYXdhaXQgcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzKSk7XG4gICAgICBwcm9jZXNzLmV4aXQoMCk7XG4gICAgfSBlbHNlIGlmIChyYXdBcmdzLmxlbmd0aCA9PT0gMSAmJiByYXdBcmdzWzBdID09PSBcIi0tdmVyc2lvblwiKSB7XG4gICAgICBjb25zdCBtZXRhID0gdHlwZW9mIGNtZC5tZXRhID09PSBcImZ1bmN0aW9uXCIgPyBhd2FpdCBjbWQubWV0YSgpIDogYXdhaXQgY21kLm1ldGE7XG4gICAgICBpZiAoIW1ldGE/LnZlcnNpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IENMSUVycm9yKFwiTm8gdmVyc2lvbiBzcGVjaWZpZWRcIiwgXCJFX05PX1ZFUlNJT05cIik7XG4gICAgICB9XG4gICAgICBjb25zb2xhLmxvZyhtZXRhLnZlcnNpb24pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBydW5Db21tYW5kKGNtZCwgeyByYXdBcmdzIH0pO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjb25zdCBpc0NMSUVycm9yID0gZXJyb3IgaW5zdGFuY2VvZiBDTElFcnJvcjtcbiAgICBpZiAoIWlzQ0xJRXJyb3IpIHtcbiAgICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IsIFwiXFxuXCIpO1xuICAgIH1cbiAgICBpZiAoaXNDTElFcnJvcikge1xuICAgICAgYXdhaXQgc2hvd1VzYWdlJDEoLi4uYXdhaXQgcmVzb2x2ZVN1YkNvbW1hbmQoY21kLCByYXdBcmdzKSk7XG4gICAgfVxuICAgIGNvbnNvbGEuZXJyb3IoZXJyb3IubWVzc2FnZSk7XG4gICAgcHJvY2Vzcy5leGl0KDEpO1xuICB9XG59XG5mdW5jdGlvbiBjcmVhdGVNYWluKGNtZCkge1xuICByZXR1cm4gKG9wdHMgPSB7fSkgPT4gcnVuTWFpbihjbWQsIG9wdHMpO1xufVxuXG5leHBvcnQgeyBjcmVhdGVNYWluLCBkZWZpbmVDb21tYW5kLCBwYXJzZUFyZ3MsIHJlbmRlclVzYWdlLCBydW5Db21tYW5kLCBydW5NYWluLCBzaG93VXNhZ2UgfTtcbiIsICJpbXBvcnQgdHlwZSB7IFBhY2thZ2VNYW5pZmVzdCB9IGZyb20gXCJxdWVyeS1yZWdpc3RyeVwiO1xuXG5jb25zdCBnaXRodWJVcmxSZWdleCA9XG4gIC9eKD86Z2l0XFwrKT9odHRwcz86XFwvXFwvZ2l0aHViXFwuY29tXFwvKFteL10rKVxcLyhbXi9dKylcXC5naXQkLztcblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RPd25lckFuZFJlcG8oXG4gIHJlcG9zaXRvcnlVcmw6IHN0cmluZyxcbik6IFtzdHJpbmcsIHN0cmluZ10gfCBudWxsIHtcbiAgY29uc3QgbWF0Y2ggPSByZXBvc2l0b3J5VXJsLm1hdGNoKGdpdGh1YlVybFJlZ2V4KTtcblxuICBpZiAobWF0Y2gpIHtcbiAgICByZXR1cm4gW21hdGNoWzFdLCBtYXRjaFsyXV07XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGV4dHJhY3RSZXBvc2l0b3J5KG1hbmlmZXN0OiBQYWNrYWdlTWFuaWZlc3QpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYW5pZmVzdC5yZXBvc2l0b3J5ID09PSBcInN0cmluZ1wiXG4gICAgPyBtYW5pZmVzdC5yZXBvc2l0b3J5XG4gICAgOiBtYW5pZmVzdC5yZXBvc2l0b3J5Py51cmw7XG59XG5cbmNvbnN0IGNvbW1pdExlbmd0aCA9IDc7XG5cbi8qXG4gKiBcIjA5ZWZkMDU1MzM3NGZmN2QzZTYyYjc5Mzc4ZTMxODRmNWViNTc1NzFcIiA9PiBcIjA5ZWZkMDVcIlxuICovXG5leHBvcnQgZnVuY3Rpb24gYWJicmV2aWF0ZUNvbW1pdEhhc2goZnVsbEhhc2g6IHN0cmluZykge1xuICByZXR1cm4gZnVsbEhhc2guc3Vic3RyaW5nKDAsIGNvbW1pdExlbmd0aCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1B1bGxSZXF1ZXN0KHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiAhTnVtYmVyLmlzTmFOKE51bWJlcihyZWYpKTtcbn1cblxuZXhwb3J0IHR5cGUgQ29tbWVudCA9IFwib2ZmXCIgfCBcImNyZWF0ZVwiIHwgXCJ1cGRhdGVcIjtcbmV4cG9ydCB0eXBlIFBhY2thZ2VNYW5hZ2VyID0gXCJucG1cIiB8IFwicG5wbVwiIHwgXCJ5YXJuXCIgfCBcImJ1blwiO1xuXG5jb25zdCB3aGl0ZWxpc3QgPVxuICBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9zdGFja2JsaXR6LWxhYnMvcGtnLnByLm5ldy9tYWluLy53aGl0ZWxpc3RcIjtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGlzV2hpdGVsaXN0ZWQob3duZXI6IHN0cmluZywgcmVwbzogc3RyaW5nKSB7XG4gIGNvbnN0IGNvbWJpbmF0aW9uID0gYCR7b3duZXJ9LyR7cmVwb31gO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh3aGl0ZWxpc3QpO1xuICAgIGNvbnN0IGNvbnRlbnQgPSBhd2FpdCByZXNwb25zZS50ZXh0KCk7XG5cbiAgICByZXR1cm4gY29udGVudC5pbmNsdWRlcyhjb21iaW5hdGlvbik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIiwgIntcbiAgXCJuYW1lXCI6IFwicGtnLXByLW5ld1wiLFxuICBcInZlcnNpb25cIjogXCIwLjAuNDFcIixcbiAgXCJkZXNjcmlwdGlvblwiOiBcIlwiLFxuICBcIm1haW5cIjogXCJpbmRleC5qc1wiLFxuICBcInR5cGVcIjogXCJtb2R1bGVcIixcbiAgXCJiaW5cIjoge1xuICAgIFwicGtnLXByLW5ld1wiOiBcImJpbi9jbGkuanNcIlxuICB9LFxuICBcInJlcG9zaXRvcnlcIjoge1xuICAgIFwidHlwZVwiOiBcImdpdFwiLFxuICAgIFwidXJsXCI6IFwiaHR0cHM6Ly9naXRodWIuY29tL3N0YWNrYmxpdHotbGFicy9wa2cucHIubmV3XCIsXG4gICAgXCJkaXJlY3RvcnlcIjogXCJwYWNrYWdlcy9jbGlcIlxuICB9LFxuICBcInNjcmlwdHNcIjoge1xuICAgIFwiZGV2XCI6IFwidHN1cCAtLXdhdGNoXCIsXG4gICAgXCJidWlsZFwiOiBcInRzdXBcIixcbiAgICBcImJ1aWxkOnB1Ymxpc2hcIjogXCJBUElfVVJMPWh0dHBzOi8vcGtnLnByLm5ldy8gdHN1cFwiXG4gIH0sXG4gIFwia2V5d29yZHNcIjogW10sXG4gIFwiYXV0aG9yXCI6IFwiXCIsXG4gIFwibGljZW5zZVwiOiBcIk1JVFwiLFxuICBcImRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAanNkZXZ0b29scy9lei1zcGF3blwiOiBcIl4zLjAuNFwiLFxuICAgIFwiQG9jdG9raXQvYWN0aW9uXCI6IFwiXjYuMS4wXCIsXG4gICAgXCJpZ25vcmVcIjogXCJeNS4zLjFcIixcbiAgICBcImlzYmluYXJ5ZmlsZVwiOiBcIl41LjAuMlwiLFxuICAgIFwicGtnLXR5cGVzXCI6IFwiXjEuMS4xXCIsXG4gICAgXCJxdWVyeS1yZWdpc3RyeVwiOiBcIl4zLjAuMVwiLFxuICAgIFwidGlueWdsb2JieVwiOiBcIl4wLjIuOVwiXG4gIH0sXG4gIFwiZGV2RGVwZW5kZW5jaWVzXCI6IHtcbiAgICBcIkBwa2ctcHItbmV3L3V0aWxzXCI6IFwid29ya3NwYWNlOl5cIixcbiAgICBcImNpdHR5XCI6IFwiXjAuMS42XCIsXG4gICAgXCJ0c3VwXCI6IFwiXjguMC4yXCJcbiAgfVxufVxuIiwgImV4cG9ydCBjb25zdCBjcmVhdGVEZWZhdWx0VGVtcGxhdGUgPSAoXG4gIGRlcGVuZGVuY2llczogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbikgPT4gKHtcbiAgXCJpbmRleC5qc1wiOiBcIlwiLFxuICBcIlJFQURNRS5tZFwiOiBgXG4jIERlZmF1bHQgVGVtcGxhdGVcblxuVGhpcyBpcyBhIHRlbXBsYXRlIHRoYXQgbGV2ZXJhZ2VzIHRoZSBleHBlcmltZW50YWwgdGVtcGxhdGVzIGZlYXR1cmUgaW4gdGhlIFxcYHBrZy5wci5uZXdcXGAgdG9vbC5cblxuIyMgT3ZlcnZpZXdcblxuVGVtcGxhdGVzIGFyZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBjcmVhdGluZyBsaXZlLCBpbnRlcmFjdGl2ZSBleGFtcGxlcyBvZiB5b3VyIHBhY2thZ2VzLCB3aGljaCBjYW4gYmUgdmVyeSBiZW5lZmljaWFsIGZvciBib3RoIGRldmVsb3BtZW50IGFuZCBkb2N1bWVudGF0aW9uIHB1cnBvc2VzLlxuXG5BcyBhIHVzZXIsIHlvdSBjYW4gY2hlY2sgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGFuZCBzZWUgdGhlIG5ldyBnZW5lcmF0ZWQgcGFja2FnZXMhIFlvdSBjYW4ganVzdCBjb3B5IHRob3NlIGFuZCBwdXQgdGhlbSBpbiB5b3VyIHBhY2thZ2UuanNvbiBvciBpbnN0YWxsIHRoZW0gd2l0aCB5b3VyIGZhdm9yaXRlIHBhY2thZ2UgbWFuYWdlci5cblxuJHtPYmplY3QudmFsdWVzKGRlcGVuZGVuY2llcylcbiAgLm1hcChcbiAgICAodXJsKSA9PiBgXG5cXGBcXGBcXGBzaFxubnBtIGkgJHt1cmx9XG5cXGBcXGBcXGBcbmAsXG4gIClcbiAgLmpvaW4oXCJcIil9XG5cbiMjIFVzYWdlXG5cblRvIHVzZSB0aGlzIGZlYXR1cmUgYXMgYSBtYWludGFpbmVyLCB5b3UgY2FuIHJ1biB0aGUgZm9sbG93aW5nIGNvbW1hbmQ6XG5cblxcYFxcYFxcYHNoXG5ucHggcGtnLXByLW5ldyBwdWJsaXNoICcuL3BhY2thZ2VzL0EnIC0tdGVtcGxhdGUgJy4vZXhhbXBsZXMvKidcblxcYFxcYFxcYFxuXG4jIyBCZW5lZml0c1xuXG4tIEludGVyYWN0aXZlIERlbW9zOiBBdXRvbWF0aWNhbGx5IGNyZWF0ZSBsaXZlIGRlbW9zIHRoYXQgdXNlcnMgY2FuIGludGVyYWN0IHdpdGggZGlyZWN0bHkgaW4gdGhlaXIgYnJvd3Nlci5cbi0gRW5oYW5jZWQgVGVzdGluZzogUXVpY2tseSBzcGluIHVwIGVudmlyb25tZW50cyB0byB0ZXN0IHlvdXIgcGFja2FnZSBpbiBkaWZmZXJlbnQgc2NlbmFyaW9zLlxuLSBJbXByb3ZlZCBTaGFyaW5nOiBFYXNpbHkgc2hhcmUgd29ya2luZyBleGFtcGxlcyBvZiB5b3VyIHBhY2thZ2Ugd2l0aCBjb2xsYWJvcmF0b3JzIG9yIHVzZXJzIHdpdGhvdXQgbmVlZGluZyB0aGVtIHRvIHNldCB1cCB0aGVpciBlbnZpcm9ubWVudC5cbmAsXG4gIFwicGFja2FnZS5qc29uXCI6IEpTT04uc3RyaW5naWZ5KFxuICAgIHtcbiAgICAgIG5hbWU6IFwiZGVmYXVsdFwiLFxuICAgICAgdmVyc2lvbjogXCIxLjAuMFwiLFxuICAgICAgZGVzY3JpcHRpb246IFwiZ2VuZXJhdGVkIGJ5IHBrZy5wci5uZXdcIixcbiAgICAgIG1haW46IFwiaW5kZXguanNcIixcbiAgICAgIGRlcGVuZGVuY2llcyxcbiAgICAgIGtleXdvcmRzOiBbXSxcbiAgICAgIGF1dGhvcjogXCJwa2cucHIubmV3XCIsXG4gICAgICBsaWNlbnNlOiBcIklTQ1wiLFxuICAgIH0sXG4gICAgbnVsbCxcbiAgICAyLFxuICApLFxufSk7XG4iXSwKICAibWFwcGluZ3MiOiAiOzs7Ozs7Ozs7OztBQXFFQSxTQUFTLFNBQVMsT0FBTztBQUN2QixTQUFPLFVBQVUsUUFBUSxPQUFPLFVBQVU7QUFDNUM7QUFDQSxTQUFTLE1BQU0sWUFBWUEsV0FBVSxZQUFZLEtBQUss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LFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsU0FBTyxNQUFJLE1BQUksS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxRQUFNLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssS0FBRyxPQUFLLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsT0FBSyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLE9BQUssS0FBRyxLQUFHLE9BQUssT0FBSyxLQUFHLEtBQUcsT0FBSyxPQUFLLEtBQUcsS0FBRyxPQUFLLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxLQUFHLFFBQU0sS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLFFBQU0sS0FBRyxLQUFHLFFBQU0sUUFBTSxLQUFHLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsUUFBTSxRQUFNLEtBQUcsS0FBRyxRQUFNLEtBQUcsU0FBTyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLFNBQU8sS0FBRyxLQUFHLFNBQU8sU0FBTyxLQUFHLEtBQUcsU0FBTyxTQUFPLEtBQUcsS0FBRyxTQUFPLEtBQUcsU0FBTyxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsVUFBUSxVQUFRLEtBQUcsS0FBRyxVQUFRLFVBQVEsS0FBRyxLQUFHLFVBQVEsVUFBUSxLQUFHLEtBQUcsV0FBUyxXQUFTLEtBQUcsS0FBRyxVQUFRLE1BQUk7QUFBQSxNQUFHLEdBQUUsRUFBRSxrQkFBZ0IsU0FBUyxHQUFFO0FBQUMsWUFBSUEsS0FBRSxLQUFLLGVBQWUsQ0FBQztBQUFFLGVBQU9BLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE1BQUksSUFBRTtBQUFBLE1BQUM7QUFBRSxlQUFTLEVBQUUsR0FBRTtBQUFDLGVBQU8sRUFBRSxNQUFNLGtEQUFrRCxLQUFHLENBQUM7QUFBQSxNQUFDO0FBQUMsUUFBRSxTQUFPLFNBQVMsR0FBRTtBQUFDLGlCQUFRQSxLQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEdBQUUsSUFBRUEsR0FBRSxRQUFPO0FBQUksY0FBRSxJQUFFLEtBQUssZ0JBQWdCQSxHQUFFLENBQUMsQ0FBQztBQUFFLGVBQU87QUFBQSxNQUFDLEdBQUUsRUFBRSxRQUFNLFNBQVMsR0FBRUEsSUFBRSxHQUFFO0FBQUMsa0JBQVEsRUFBRSxPQUFPLENBQUMsR0FBRUEsS0FBRUEsTUFBRyxHQUFFLElBQUUsS0FBRyxHQUFFQSxLQUFFLE1BQUlBLEtBQUUsVUFBUUEsS0FBRyxJQUFFLE1BQUksSUFBRSxVQUFRO0FBQUcsaUJBQVEsSUFBRSxJQUFHLElBQUUsR0FBRSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsR0FBRSxJQUFFLEVBQUUsUUFBTyxLQUFJO0FBQUMsY0FBSSxJQUFFLEVBQUUsQ0FBQyxHQUFFLElBQUUsRUFBRSxPQUFPLENBQUM7QUFBRSxjQUFHLEtBQUdBLE1BQUcsS0FBRyxJQUFFLElBQUU7QUFBRyxnQkFBRyxJQUFFLEtBQUc7QUFBRSxtQkFBRztBQUFBO0FBQU87QUFBTSxlQUFHO0FBQUEsUUFBRTtBQUFDLGVBQU87QUFBQSxNQUFDO0FBQUEsSUFBRSxHQUFHLENBQUM7QUFBRSxJQUFNQyxLQUFFO0FBQUUsSUFBSSxJQUFFLFdBQVU7QUFBQyxhQUFPO0FBQUEsSUFBZ3llO0FBQW9YLElBQU0sSUFBRTtBQUFSLElBQVcsSUFBRSxDQUFDLElBQUUsTUFBSSxPQUFHLFFBQVEsSUFBRSxDQUFDO0FBQWxDLElBQXNDLElBQUUsQ0FBQyxJQUFFLE1BQUksT0FBRyxRQUFRLEtBQUcsQ0FBQyxNQUFNLENBQUM7QUFBckUsSUFBeUUsSUFBRSxDQUFDLElBQUUsTUFBSSxDQUFDLEdBQUUsR0FBRSxNQUFJLFFBQVEsS0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO0FBQXhILElBQTRILElBQUUsRUFBQyxVQUFTLEVBQUMsT0FBTSxDQUFDLEdBQUUsQ0FBQyxHQUFFLE1BQUssQ0FBQyxHQUFFLEVBQUUsR0FBRSxLQUFJLENBQUMsR0FBRSxFQUFFLEdBQUUsUUFBTyxDQUFDLEdBQUUsRUFBRSxHQUFFLFdBQVUsQ0FBQyxHQUFFLEVBQUUsR0FBRSxVQUFTLENBQUMsSUFBRyxFQUFFLEdBQUUsU0FBUSxDQUFDLEdBQUUsRUFBRSxHQUFFLFFBQU8sQ0FBQyxHQUFFLEVBQUUsR0FBRSxlQUFjLENBQUMsR0FBRSxFQUFFLEVBQUMsR0FBRSxPQUFNLEVBQUMsT0FBTSxDQUFDLElBQUcsRUFBRSxHQUFFLEtBQUksQ0FBQyxJQUFHLEVBQUUsR0FBRSxPQUFNLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEdBQUUsTUFBSyxDQUFDLElBQUcsRUFBRSxHQUFFLE1BQUssQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsYUFBWSxDQUFDLElBQUcsRUFBRSxHQUFFLGNBQWEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxZQUFXLENBQUMsSUFBRyxFQUFFLEdBQUUsZUFBYyxDQUFDLElBQUcsRUFBRSxHQUFFLFlBQVcsQ0FBQyxJQUFHLEVBQUUsR0FBRSxhQUFZLENBQUMsSUFBRyxFQUFFLEVBQUMsR0FBRSxTQUFRLEVBQUMsU0FBUSxDQUFDLElBQUcsRUFBRSxHQUFFLE9BQU0sQ0FBQyxJQUFHLEVBQUUsR0FBRSxTQUFRLENBQUMsSUFBRyxFQUFFLEdBQUUsVUFBUyxDQUFDLElBQUcsRUFBRSxHQUFFLFFBQU8sQ0FBQyxJQUFHLEVBQUUsR0FBRSxXQUFVLENBQUMsSUFBRyxFQUFFLEdBQUUsUUFBTyxDQUFDLElBQUcsRUFBRSxHQUFFLFNBQVEsQ0FBQyxJQUFHLEVBQUUsR0FBRSxlQUFjLENBQUMsS0FBSSxFQUFFLEdBQUUsUUFBTyxDQUFDLEtBQUksRUFBRSxHQUFFLFFBQU8sQ0FBQyxLQUFJLEVBQUUsR0FBRSxhQUFZLENBQUMsS0FBSSxFQUFFLEdBQUUsZUFBYyxDQUFDLEtBQUksRUFBRSxHQUFFLGdCQUFlLENBQUMsS0FBSSxFQUFFLEdBQUUsY0FBYSxDQUFDLEtBQUksRUFBRSxHQUFFLGlCQUFnQixDQUFDLEtBQUksRUFBRSxH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QUFLLEtBQUssVUFBUyxNQUFJO0FBQUMsaUJBQUssT0FBTyxNQUFNLElBQUksT0FBTyxJQUFJLEdBQUUsS0FBSyxPQUFPLElBQUksVUFBUyxLQUFLLE1BQU0sR0FBRSxFQUFFLEtBQUssT0FBTSxLQUFFLEdBQUUsRUFBRSxLQUFLLEtBQUs7QUFBQSxVQUFFLENBQUMsR0FBRSxLQUFLLEtBQUssVUFBUyxNQUFJO0FBQUMsaUJBQUssT0FBTyxNQUFNLElBQUksT0FBTyxJQUFJLEdBQUUsS0FBSyxPQUFPLElBQUksVUFBUyxLQUFLLE1BQU0sR0FBRSxFQUFFLEtBQUssT0FBTSxLQUFFLEdBQUUsRUFBRSxDQUFDO0FBQUEsVUFBRSxDQUFDO0FBQUEsUUFBRSxDQUFDO0FBQUEsTUFBQztBQUFBLE1BQUMsR0FBRyxHQUFFLEdBQUU7QUFBQyxjQUFNLElBQUUsS0FBSyxZQUFZLElBQUksQ0FBQyxLQUFHLENBQUM7QUFBRSxVQUFFLEtBQUssRUFBQyxJQUFHLEVBQUMsQ0FBQyxHQUFFLEtBQUssWUFBWSxJQUFJLEdBQUUsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLEtBQUssR0FBRSxHQUFFO0FBQUMsY0FBTSxJQUFFLEtBQUssWUFBWSxJQUFJLENBQUMsS0FBRyxDQUFDO0FBQUUsVUFBRSxLQUFLLEVBQUMsSUFBRyxHQUFFLE1BQUssS0FBRSxDQUFDLEdBQUUsS0FBSyxZQUFZLElBQUksR0FBRSxDQUFDO0FBQUEsTUFBRTtBQUFBLE1BQUMsS0FBSyxNQUFLLEdBQUU7QUFBQyxjQUFNLElBQUUsS0FBSyxZQUFZLElBQUksQ0FBQyxLQUFHLENBQUMsR0FBRUEsS0FBRSxDQUFDO0FBQUUsbUJBQVUsS0FBSztBQUFFLFlBQUUsR0FBRyxHQUFHLENBQUMsR0FBRSxFQUFFLFFBQU1BLEdBQUUsS0FBSyxNQUFJLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFFLENBQUMsQ0FBQztBQUFFLG1CQUFVLEtBQUtBO0FBQUUsWUFBRTtBQUFBLE1BQUU7QUFBQSxNQUFDLGNBQWE7QUFBQyxhQUFLLFlBQVksTUFBTTtBQUFB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QyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxTQUNwQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxVQUNyQyxVQUFXLGFBQWEsYUFBYSxRQUFVO0FBQ2xELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssTUFBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixTQUFVLGFBQWEsYUFBYSxTQUNwQyxTQUFVLGFBQWEsYUFBYSxPQUFTO0FBQ2hELGlCQUFPO0FBQUEsUUFDVDtBQUNBLFlBQUssT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQ1YsT0FBVSxhQUFhLGFBQWEsT0FDcEMsT0FBVSxhQUNWLE9BQVUsYUFDVixPQUFVLGFBQWEsYUFBYSxPQUNwQyxPQUFVLGFBQ1YsT0FBVSxhQUNWLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLE9BQVUsYUFBYSxhQUFhLE9BQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQWEsYUFBYSxRQUNwQyxRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFBYSxhQUFhLFFBQ3BDLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUNWLFFBQVUsYUFDVixRQUFVLGFBQ1YsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxhQUFhLGFBQWEsUUFDcEMsUUFBVSxh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QUFPO0FBQUEsRUFDVDtBQUNGO0FBRUEsZUFBZSxnQkFBZ0JBLElBQVc7QUFDeEMsUUFBTSxXQUFXLE1BQU0sWUFBWUEsRUFBQztBQUNwQyxNQUFJLGFBQWEsTUFBTTtBQUNyQixXQUFPO0FBQUEsRUFDVDtBQUNBLE1BQUk7QUFDRixXQUFPLGlCQUFpQixRQUFRO0FBQUEsRUFDbEMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxTQUFTLGlCQUFpQixVQUFrQjtBQUMxQyxNQUFJO0FBQ0YsV0FBTyxLQUFLLE1BQU0sUUFBUTtBQUFBLEVBQzVCLFFBQVE7QUFDTixXQUFPO0FBQUEsRUFDVDtBQUNGOyIsCiAgIm5hbWVzIjogWyJkZWZhdWx0cyIsICJwIiwgImMiLCAibCIsICJ0ZXh0IiwgInMiLCAiSyIsICJ0dHkiLCAiaXNDb2xvclN1cHBvcnRlZCIsICJyZXBsYWNlQ2xvc2UiLCAiY3JlYXRlQ29sb3JzIiwgIkgiLCAiVyIsICJjIiwgImVudiIsICJhbnNpUmVnZXgiLCAic3RyaXBBbnNpIiwgIl8iLCAibSIsICJnZXRDb2xvciIsICJjcmVhdGVDb25zb2xhIiwgImlzQ0kiLCAidW5pY29kZSIsICJzIiwgInRleHQiLCAiYyIsICJyZWdleCIsICJmIiwgImoiLCAiTSIsICJIMiIsICJiIiwgImMiLCAiZyIsICJoIiwgImwiLCAiYyIsICJwIiwgImoiLCAiZGVmYXVsdHMiLCAicCIsICJfIiwgInN0ZG91dCJdCn0K
3709
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9jb3JlLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNzNUZkdEhELm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L3NoYXJlZC9jb25zb2xhLkNCaTZObTlzLm1qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY29uc29sYUAzLjMuMS9ub2RlX21vZHVsZXMvY29uc29sYS9kaXN0L2NodW5rcy9wcm9tcHQubWpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9jb25zb2xhQDMuMy4xL25vZGVfbW9kdWxlcy9jb25zb2xhL2Rpc3Qvc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzIiwgIi4uL2luZGV4LnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9vaGFzaEAxLjEuNC9ub2RlX21vZHVsZXMvb2hhc2gvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC9pbmRleC5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NvbnNvbGFAMy4zLjEvbm9kZV9tb2R1bGVzL2NvbnNvbGEvZGlzdC91dGlscy5tanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2NpdHR5QDAuMS42L25vZGVfbW9kdWxlcy9jaXR0eS9kaXN0L2luZGV4Lm1qcyIsICIuLi8uLi91dGlscy9pbmRleC50cyIsICIuLi9wYWNrYWdlLmpzb24iLCAiLi4vdGVtcGxhdGUudHMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImNvbnN0IExvZ0xldmVscyA9IHtcbiAgc2lsZW50OiBOdW1iZXIuTkVHQVRJVkVfSU5GSU5JVFksXG4gIGZhdGFsOiAwLFxuICBlcnJvcjogMCxcbiAgd2FybjogMSxcbiAgbG9nOiAyLFxuICBpbmZvOiAzLFxuICBzdWNjZXNzOiAzLFxuICBmYWlsOiAzLFxuICByZWFkeTogMyxcbiAgc3RhcnQ6IDMsXG4gIGJveDogMyxcbiAgZGVidWc6IDQsXG4gIHRyYWNlOiA1LFxuICB2ZXJib3NlOiBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFlcbn07XG5jb25zdCBMb2dUeXBlcyA9IHtcbiAgLy8gU2lsZW50XG4gIHNpbGVudDoge1xuICAgIGxldmVsOiAtMVxuICB9LFxuICAvLyBMZXZlbCAwXG4gIGZhdGFsOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5mYXRhbFxuICB9LFxuICBlcnJvcjoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZXJyb3JcbiAgfSxcbiAgLy8gTGV2ZWwgMVxuICB3YXJuOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy53YXJuXG4gIH0sXG4gIC8vIExldmVsIDJcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5sb2dcbiAgfSxcbiAgLy8gTGV2ZWwgM1xuICBpbmZvOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy5pbmZvXG4gIH0sXG4gIHN1Y2Nlc3M6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLnN1Y2Nlc3NcbiAgfSxcbiAgZmFpbDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZmFpbFxuICB9LFxuICByZWFkeToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBzdGFydDoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuaW5mb1xuICB9LFxuICBib3g6IHtcbiAgICBsZXZlbDogTG9nTGV2ZWxzLmluZm9cbiAgfSxcbiAgLy8gTGV2ZWwgNFxuICBkZWJ1Zzoge1xuICAgIGxldmVsOiBMb2dMZXZlbHMuZGVidWdcbiAgfSxcbiAgLy8gTGV2ZWwgNVxuICB0cmFjZToge1xuICAgIGxldmVsOiBMb2dMZXZlbHMudHJhY2VcbiAgfSxcbiAgLy8gVmVyYm9zZVxuICB2ZXJib3NlOiB7XG4gICAgbGV2ZWw6IExvZ0xldmVscy52ZXJib3NlXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QkMSh2YWx1ZSkge1xuICBpZiAodmFsdWUgPT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGNvbnN0IHByb3RvdHlwZSA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih2YWx1ZSk7XG4gIGlmIChwcm90b3R5cGUgIT09IG51bGwgJiYgcHJvdG90eXBlICE9PSBPYmplY3QucHJvdG90eXBlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihwcm90b3R5cGUpICE9PSBudWxsKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChTeW1ib2wuaXRlcmF0b3IgaW4gdmFsdWUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgaWYgKFN5bWJvbC50b1N0cmluZ1RhZyBpbiB2YWx1ZSkge1xuICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwodmFsdWUpID09PSBcIltvYmplY3QgTW9kdWxlXVwiO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBfZGVmdShiYXNlT2JqZWN0LCBkZWZhdWx0cywgbmFtZXNwYWNlID0gXCIuXCIsIG1lcmdlcikge1xuICBpZiAoIWlzUGxhaW5PYmplY3QkMShkZWZhdWx0cykpIHtcbiAgICByZXR1cm4gX2RlZnUoYmFzZU9iamVjdCwge30sIG5hbWVzcGFjZSwgbWVyZ2VyKTtcbiAgfVxuICBjb25zdCBvYmplY3QgPSBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0cyk7XG4gIGZvciAoY29uc3Qga2V5IGluIGJhc2VPYmplY3QpIHtcbiAgICBpZiAoa2V5ID09PSBcIl9fcHJvdG9fX1wiIHx8IGtleSA9PT0gXCJjb25zdHJ1Y3RvclwiKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgdmFsdWUgPSBiYXNlT2JqZWN0W2tleV07XG4gICAgaWYgKHZhbHVlID09PSBudWxsIHx8IHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAobWVyZ2VyICYmIG1lcmdlcihvYmplY3QsIGtleSwgdmFsdWUsIG5hbWVzcGFjZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gWy4uLnZhbHVlLCAuLi5vYmplY3Rba2V5XV07XG4gICAgfSBlbHNlIGlmIChpc1BsYWluT2JqZWN0JDEodmFsdWUpICYmIGlzUGxhaW5PYmplY3QkMShvYmplY3Rba2V5XSkpIHtcbiAgICAgIG9iamVjdFtrZXldID0gX2RlZnUoXG4gICAgICAgIHZhbHVlLFxuICAgICAgICBvYmplY3Rba2V5XSxcbiAgICAgICAgKG5hbWVzcGFjZSA/IGAke25hbWVzcGFjZX0uYCA6IFwiXCIpICsga2V5LnRvU3RyaW5nKCksXG4gICAgICAgIG1lcmdlclxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG9iamVjdDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZURlZnUobWVyZ2VyKSB7XG4gIHJldHVybiAoLi4uYXJndW1lbnRzXykgPT4gKFxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB1bmljb3JuL25vLWFycmF5LXJlZHVjZVxuICAgIGFyZ3VtZW50c18ucmVkdWNlKChwLCBjKSA9PiBfZGVmdShwLCBjLCBcIlwiLCBtZXJnZXIpLCB7fSlcbiAgKTtcbn1cbmNvbnN0IGRlZnUgPSBjcmVhdGVEZWZ1KCk7XG5cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSA9PT0gXCJbb2JqZWN0IE9iamVjdF1cIjtcbn1cbmZ1bmN0aW9uIGlzTG9nT2JqKGFyZykge1xuICBpZiAoIWlzUGxhaW5PYmplY3QoYXJnKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoIWFyZy5tZXNzYWdlICYmICFhcmcuYXJncykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoYXJnLnN0YWNrKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5sZXQgcGF1c2VkID0gZmFsc2U7XG5jb25zdCBxdWV1ZSA9IFtdO1xuY2xhc3MgQ29uc29sYSB7XG4gIG9wdGlvbnM7XG4gIF9sYXN0TG9nO1xuICBfbW9ja0ZuO1xuICAvKipcbiAgICogQ3JlYXRlcyBhbiBpbnN0YW5jZSBvZiBDb25zb2xhIHdpdGggc3BlY2lmaWVkIG9wdGlvbnMgb3IgZGVmYXVsdHMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IFtvcHRpb25zPXt9XSAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihvcHRpb25zID0ge30pIHtcbiAgICBjb25zdCB0eXBlcyA9IG9wdGlvbnMudHlwZXMgfHwgTG9nVHlwZXM7XG4gICAgdGhpcy5vcHRpb25zID0gZGVmdShcbiAgICAgIHtcbiAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgZGVmYXVsdHM6IHsgLi4ub3B0aW9ucy5kZWZhdWx0cyB9LFxuICAgICAgICBsZXZlbDogX25vcm1hbGl6ZUxvZ0xldmVsKG9wdGlvbnMubGV2ZWwsIHR5cGVzKSxcbiAgICAgICAgcmVwb3J0ZXJzOiBbLi4ub3B0aW9ucy5yZXBvcnRlcnMgfHwgW11dXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICB0eXBlczogTG9nVHlwZXMsXG4gICAgICAgIHRocm90dGxlOiAxZTMsXG4gICAgICAgIHRocm90dGxlTWluOiA1LFxuICAgICAgICBmb3JtYXRPcHRpb25zOiB7XG4gICAgICAgICAgZGF0ZTogdHJ1ZSxcbiAgICAgICAgICBjb2xvcnM6IGZhbHNlLFxuICAgICAgICAgIGNvbXBhY3Q6IHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgICk7XG4gICAgZm9yIChjb25zdCB0eXBlIGluIHR5cGVzKSB7XG4gICAgICBjb25zdCBkZWZhdWx0cyA9IHtcbiAgICAgICAgdHlwZSxcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi50eXBlc1t0eXBlXVxuICAgICAgfTtcbiAgICAgIHRoaXNbdHlwZV0gPSB0aGlzLl93cmFwTG9nRm4oZGVmYXVsdHMpO1xuICAgICAgdGhpc1t0eXBlXS5yYXcgPSB0aGlzLl93cmFwTG9nRm4oXG4gICAgICAgIGRlZmF1bHRzLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAodGhpcy5vcHRpb25zLm1vY2tGbikge1xuICAgICAgdGhpcy5tb2NrVHlwZXMoKTtcbiAgICB9XG4gICAgdGhpcy5fbGFzdExvZyA9IHt9O1xuICB9XG4gIC8qKlxuICAgKiBHZXRzIHRoZSBjdXJyZW50IGxvZyBsZXZlbCBvZiB0aGUgQ29uc29sYSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHJldHVybnMge251bWJlcn0gVGhlIGN1cnJlbnQgbG9nIGxldmVsLlxuICAgKi9cbiAgZ2V0IGxldmVsKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMubGV2ZWw7XG4gIH1cbiAgLyoqXG4gICAqIFNldHMgdGhlIG1pbmltdW0gbG9nIGxldmVsIHRoYXQgd2lsbCBiZSBvdXRwdXQgYnkgdGhlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0ge251bWJlcn0gbGV2ZWwgLSBUaGUgbmV3IGxvZyBsZXZlbCB0byBzZXQuXG4gICAqL1xuICBzZXQgbGV2ZWwobGV2ZWwpIHtcbiAgICB0aGlzLm9wdGlvbnMubGV2ZWwgPSBfbm9ybWFsaXplTG9nTGV2ZWwoXG4gICAgICBsZXZlbCxcbiAgICAgIHRoaXMub3B0aW9ucy50eXBlcyxcbiAgICAgIHRoaXMub3B0aW9ucy5sZXZlbFxuICAgICk7XG4gIH1cbiAgLyoqXG4gICAqIERpc3BsYXlzIGEgcHJvbXB0IHRvIHRoZSB1c2VyIGFuZCByZXR1cm5zIHRoZSByZXNwb25zZS5cbiAgICogVGhyb3cgYW4gZXJyb3IgaWYgYHByb21wdGAgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAdGVtcGxhdGUgVFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZSAtIFRoZSBtZXNzYWdlIHRvIGRpc3BsYXkgaW4gdGhlIHByb21wdC5cbiAgICogQHBhcmFtIHtUfSBbb3B0c10gLSBPcHRpb25hbCBvcHRpb25zIGZvciB0aGUgcHJvbXB0LiBTZWUge0BsaW5rIFByb21wdE9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7cHJvbWlzZTxUPn0gQSBwcm9taXNlIHRoYXQgaW5mZXIgd2l0aCB0aGUgcHJvbXB0IG9wdGlvbnMuIFNlZSB7QGxpbmsgUHJvbXB0T3B0aW9uc30uXG4gICAqL1xuICBwcm9tcHQobWVzc2FnZSwgb3B0cykge1xuICAgIGlmICghdGhpcy5vcHRpb25zLnByb21wdCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwicHJvbXB0IGlzIG5vdCBzdXBwb3J0ZWQhXCIpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLnByb21wdChtZXNzYWdlLCBvcHRzKTtcbiAgfVxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBvZiBDb25zb2xhLCBpbmhlcml0aW5nIG9wdGlvbnMgZnJvbSB0aGUgY3VycmVudCBpbnN0YW5jZSwgd2l0aCBwb3NzaWJsZSBvdmVycmlkZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UGFydGlhbDxDb25zb2xhT3B0aW9ucz59IG9wdGlvbnMgLSBPcHRpb25hbCBvdmVycmlkZXMgZm9yIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnN9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICBjcmVhdGUob3B0aW9ucykge1xuICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IENvbnNvbGEoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgLi4ub3B0aW9uc1xuICAgIH0pO1xuICAgIGlmICh0aGlzLl9tb2NrRm4pIHtcbiAgICAgIGluc3RhbmNlLm1vY2tUeXBlcyh0aGlzLl9tb2NrRm4pO1xuICAgIH1cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH1cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgQ29uc29sYSBpbnN0YW5jZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVmYXVsdCBsb2cgb2JqZWN0IHByb3BlcnRpZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7SW5wdXRMb2dPYmplY3R9IGRlZmF1bHRzIC0gRGVmYXVsdCBwcm9wZXJ0aWVzIHRvIGluY2x1ZGUgaW4gYW55IGxvZyBmcm9tIHRoZSBuZXcgaW5zdGFuY2UuIFNlZSB7QGxpbmsgSW5wdXRMb2dPYmplY3R9LlxuICAgKiBAcmV0dXJucyB7Q29uc29sYUluc3RhbmNlfSBBIG5ldyBDb25zb2xhIGluc3RhbmNlLiBTZWUge0BsaW5rIENvbnNvbGFJbnN0YW5jZX0uXG4gICAqL1xuICB3aXRoRGVmYXVsdHMoZGVmYXVsdHMpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVhdGUoe1xuICAgICAgLi4udGhpcy5vcHRpb25zLFxuICAgICAgZGVmYXVsdHM6IHtcbiAgICAgICAgLi4udGhpcy5vcHRpb25zLmRlZmF1bHRzLFxuICAgICAgICAuLi5kZWZhdWx0c1xuICAgICAgfVxuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IENvbnNvbGEgaW5zdGFuY2Ugd2l0aCBhIHNwZWNpZmllZCB0YWcsIHdoaWNoIHdpbGwgYmUgaW5jbHVkZWQgaW4gZXZlcnkgbG9nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdGFnIC0gVGhlIHRhZyB0byBpbmNsdWRlIGluIGVhY2ggbG9nIG9mIHRoZSBuZXcgaW5zdGFuY2UuXG4gICAqIEByZXR1cm5zIHtDb25zb2xhSW5zdGFuY2V9IEEgbmV3IENvbnNvbGEgaW5zdGFuY2UuIFNlZSB7QGxpbmsgQ29uc29sYUluc3RhbmNlfS5cbiAgICovXG4gIHdpdGhUYWcodGFnKSB7XG4gICAgcmV0dXJuIHRoaXMud2l0aERlZmF1bHRzKHtcbiAgICAgIHRhZzogdGhpcy5vcHRpb25zLmRlZmF1bHRzLnRhZyA/IHRoaXMub3B0aW9ucy5kZWZhdWx0cy50YWcgKyBcIjpcIiArIHRhZyA6IHRhZ1xuICAgIH0pO1xuICB9XG4gIC8qKlxuICAgKiBBZGRzIGEgY3VzdG9tIHJlcG9ydGVyIHRvIHRoZSBDb25zb2xhIGluc3RhbmNlLlxuICAgKiBSZXBvcnRlcnMgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2ggbG9nIG1lc3NhZ2UsIGRlcGVuZGluZyBvbiB0aGVpciBpbXBsZW1lbnRhdGlvbiBhbmQgbG9nIGxldmVsLlxuICAgKlxuICAgKiBAcGFyYW0ge0NvbnNvbGFSZXBvcnRlcn0gcmVwb3J0ZXIgLSBUaGUgcmVwb3J0ZXIgdG8gYWRkLiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgYWRkUmVwb3J0ZXIocmVwb3J0ZXIpIHtcbiAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnB1c2gocmVwb3J0ZXIpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIC8qKlxuICAgKiBSZW1vdmVzIGEgY3VzdG9tIHJlcG9ydGVyIGZyb20gdGhlIENvbnNvbGEgaW5zdGFuY2UuXG4gICAqIElmIG5vIHJlcG9ydGVyIGlzIHNwZWNpZmllZCwgYWxsIHJlcG9ydGVycyB3aWxsIGJlIHJlbW92ZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Q29uc29sYVJlcG9ydGVyfSByZXBvcnRlciAtIFRoZSByZXBvcnRlciB0byByZW1vdmUuIFNlZSB7QGxpbmsgQ29uc29sYVJlcG9ydGVyfS5cbiAgICogQHJldHVybnMge0NvbnNvbGF9IFRoZSBjdXJyZW50IENvbnNvbGEgaW5zdGFuY2UuXG4gICAqL1xuICByZW1vdmVSZXBvcnRlcihyZXBvcnRlcikge1xuICAgIGlmIChyZXBvcnRlcikge1xuICAgICAgY29uc3QgaSA9IHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuaW5kZXhPZihyZXBvcnRlcik7XG4gICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMuc3BsaWNlKGksIDEpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wdGlvbnMucmVwb3J0ZXJzLnNwbGljZSgwKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCByZXBvcnRlcnMgb2YgdGhlIENvbnNvbGEgaW5zdGFuY2Ugd2l0aCB0aGUgc3BlY2lmaWVkIGFycmF5IG9mIHJlcG9ydGVycy5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhUmVwb3J0ZXJbXX0gcmVwb3J0ZXJzIC0gVGhlIG5ldyByZXBvcnRlcnMgdG8gc2V0LiBTZWUge0BsaW5rIENvbnNvbGFSZXBvcnRlcn0uXG4gICAqIEByZXR1cm5zIHtDb25zb2xhfSBUaGUgY3VycmVudCBDb25zb2xhIGluc3RhbmNlLlxuICAgKi9cbiAgc2V0UmVwb3J0ZXJzKHJlcG9ydGVycykge1xuICAgIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMgPSBBcnJheS5pc0FycmF5KHJlcG9ydGVycykgPyByZXBvcnRlcnMgOiBbcmVwb3J0ZXJzXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICB3cmFwQWxsKCkge1xuICAgIHRoaXMud3JhcENvbnNvbGUoKTtcbiAgICB0aGlzLndyYXBTdGQoKTtcbiAgfVxuICByZXN0b3JlQWxsKCkge1xuICAgIHRoaXMucmVzdG9yZUNvbnNvbGUoKTtcbiAgICB0aGlzLnJlc3RvcmVTdGQoKTtcbiAgfVxuICAvKipcbiAgICogT3ZlcnJpZGVzIGNvbnNvbGUgbWV0aG9kcyB3aXRoIENvbnNvbGEgbG9nZ2luZyBtZXRob2RzIGZvciBjb25zaXN0ZW50IGxvZ2dpbmcuXG4gICAqL1xuICB3cmFwQ29uc29sZSgpIHtcbiAgICBmb3IgKGNvbnN0IHR5cGUgaW4gdGhpcy5vcHRpb25zLnR5cGVzKSB7XG4gICAgICBpZiAoIWNvbnNvbGVbXCJfX1wiICsgdHlwZV0pIHtcbiAgICAgICAgY29uc29sZVtcIl9fXCIgKyB0eXBlXSA9IGNvbnNvbGVbdHlwZV07XG4gICAgICB9XG4gICAgICBjb25zb2xlW3R5cGVdID0gdGhpc1t0eXBlXS5yYXc7XG4gICAgfVxuICB9XG4gIC8qKlxuICAgKiBSZXN0b3JlcyB0aGUgb3JpZ2luYWwgY29uc29sZSBtZXRob2RzLCByZW1vdmluZyBDb25zb2xhIG92ZXJyaWRlcy5cbiAgICovXG4gIHJlc3RvcmVDb25zb2xlKCkge1xuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIGlmIChjb25zb2xlW1wiX19cIiArIHR5cGVdKSB7XG4gICAgICAgIGNvbnNvbGVbdHlwZV0gPSBjb25zb2xlW1wiX19cIiArIHR5cGVdO1xuICAgICAgICBkZWxldGUgY29uc29sZVtcIl9fXCIgKyB0eXBlXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIE92ZXJyaWRlcyBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMgdG8gcmVkaXJlY3QgdGhlbSB0aHJvdWdoIENvbnNvbGEuXG4gICAqL1xuICB3cmFwU3RkKCkge1xuICAgIHRoaXMuX3dyYXBTdHJlYW0odGhpcy5vcHRpb25zLnN0ZG91dCwgXCJsb2dcIik7XG4gICAgdGhpcy5fd3JhcFN0cmVhbSh0aGlzLm9wdGlvbnMuc3RkZXJyLCBcImxvZ1wiKTtcbiAgfVxuICBfd3JhcFN0cmVhbShzdHJlYW0sIHR5cGUpIHtcbiAgICBpZiAoIXN0cmVhbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoIXN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0uX193cml0ZSA9IHN0cmVhbS53cml0ZTtcbiAgICB9XG4gICAgc3RyZWFtLndyaXRlID0gKGRhdGEpID0+IHtcbiAgICAgIHRoaXNbdHlwZV0ucmF3KFN0cmluZyhkYXRhKS50cmltKCkpO1xuICAgIH07XG4gIH1cbiAgLyoqXG4gICAqIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBzdGFuZGFyZCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXMsIHJlbW92aW5nIHRoZSBDb25zb2xhIHJlZGlyZWN0aW9uLlxuICAgKi9cbiAgcmVzdG9yZVN0ZCgpIHtcbiAgICB0aGlzLl9yZXN0b3JlU3RyZWFtKHRoaXMub3B0aW9ucy5zdGRvdXQpO1xuICAgIHRoaXMuX3Jlc3RvcmVTdHJlYW0odGhpcy5vcHRpb25zLnN0ZGVycik7XG4gIH1cbiAgX3Jlc3RvcmVTdHJlYW0oc3RyZWFtKSB7XG4gICAgaWYgKCFzdHJlYW0pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHN0cmVhbS5fX3dyaXRlKSB7XG4gICAgICBzdHJlYW0ud3JpdGUgPSBzdHJlYW0uX193cml0ZTtcbiAgICAgIGRlbGV0ZSBzdHJlYW0uX193cml0ZTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFBhdXNlcyBsb2dnaW5nLCBxdWV1ZXMgaW5jb21pbmcgbG9ncyB1bnRpbCByZXN1bWVkLlxuICAgKi9cbiAgcGF1c2VMb2dzKCkge1xuICAgIHBhdXNlZCA9IHRydWU7XG4gIH1cbiAgLyoqXG4gICAqIFJlc3VtZXMgbG9nZ2luZywgcHJvY2Vzc2luZyBhbnkgcXVldWVkIGxvZ3MuXG4gICAqL1xuICByZXN1bWVMb2dzKCkge1xuICAgIHBhdXNlZCA9IGZhbHNlO1xuICAgIGNvbnN0IF9xdWV1ZSA9IHF1ZXVlLnNwbGljZSgwKTtcbiAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgX3F1ZXVlKSB7XG4gICAgICBpdGVtWzBdLl9sb2dGbihpdGVtWzFdLCBpdGVtWzJdKTtcbiAgICB9XG4gIH1cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGxvZ2dpbmcgbWV0aG9kcyB3aXRoIG1vY2tzIGlmIGEgbW9jayBmdW5jdGlvbiBpcyBwcm92aWRlZC5cbiAgICpcbiAgICogQHBhcmFtIHtDb25zb2xhT3B0aW9uc1tcIm1vY2tGblwiXX0gbW9ja0ZuIC0gVGhlIGZ1bmN0aW9uIHRvIHVzZSBmb3IgbW9ja2luZyBsb2dnaW5nIG1ldGhvZHMuIFNlZSB7QGxpbmsgQ29uc29sYU9wdGlvbnNbXCJtb2NrRm5cIl19LlxuICAgKi9cbiAgbW9ja1R5cGVzKG1vY2tGbikge1xuICAgIGNvbnN0IF9tb2NrRm4gPSBtb2NrRm4gfHwgdGhpcy5vcHRpb25zLm1vY2tGbjtcbiAgICB0aGlzLl9tb2NrRm4gPSBfbW9ja0ZuO1xuICAgIGlmICh0eXBlb2YgX21vY2tGbiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAoY29uc3QgdHlwZSBpbiB0aGlzLm9wdGlvbnMudHlwZXMpIHtcbiAgICAgIHRoaXNbdHlwZV0gPSBfbW9ja0ZuKHR5cGUsIHRoaXMub3B0aW9ucy50eXBlc1t0eXBlXSkgfHwgdGhpc1t0eXBlXTtcbiAgICAgIHRoaXNbdHlwZV0ucmF3ID0gdGhpc1t0eXBlXTtcbiAgICB9XG4gIH1cbiAgX3dyYXBMb2dGbihkZWZhdWx0cywgaXNSYXcpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3MpID0+IHtcbiAgICAgIGlmIChwYXVzZWQpIHtcbiAgICAgICAgcXVldWUucHVzaChbdGhpcywgZGVmYXVsdHMsIGFyZ3MsIGlzUmF3XSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9sb2dGbihkZWZhdWx0cywgYXJncywgaXNSYXcpO1xuICAgIH07XG4gIH1cbiAgX2xvZ0ZuKGRlZmF1bHRzLCBhcmdzLCBpc1Jhdykge1xuICAgIGlmICgoZGVmYXVsdHMubGV2ZWwgfHwgMCkgPiB0aGlzLmxldmVsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGxvZ09iaiA9IHtcbiAgICAgIGRhdGU6IC8qIEBfX1BVUkVfXyAqLyBuZXcgRGF0ZSgpLFxuICAgICAgYXJnczogW10sXG4gICAgICAuLi5kZWZhdWx0cyxcbiAgICAgIGxldmVsOiBfbm9ybWFsaXplTG9nTGV2ZWwoZGVmYXVsdHMubGV2ZWwsIHRoaXMub3B0aW9ucy50eXBlcylcbiAgICB9O1xuICAgIGlmICghaXNSYXcgJiYgYXJncy5sZW5ndGggPT09IDEgJiYgaXNMb2dPYmooYXJnc1swXSkpIHtcbiAgICAgIE9iamVjdC5hc3NpZ24obG9nT2JqLCBhcmdzWzBdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nT2JqLmFyZ3MgPSBbLi4uYXJnc107XG4gICAgfVxuICAgIGlmIChsb2dPYmoubWVzc2FnZSkge1xuICAgICAgbG9nT2JqLmFyZ3MudW5zaGlmdChsb2dPYmoubWVzc2FnZSk7XG4gICAgICBkZWxldGUgbG9nT2JqLm1lc3NhZ2U7XG4gICAgfVxuICAgIGlmIChsb2dPYmouYWRkaXRpb25hbCkge1xuICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGxvZ09iai5hZGRpdGlvbmFsKSkge1xuICAgICAgICBsb2dPYmouYWRkaXRpb25hbCA9IGxvZ09iai5hZGRpdGlvbmFsLnNwbGl0KFwiXFxuXCIpO1xuICAgICAgfVxuICAgICAgbG9nT2JqLmFyZ3MucHVzaChcIlxcblwiICsgbG9nT2JqLmFkZGl0aW9uYWwuam9pbihcIlxcblwiKSk7XG4gICAgICBkZWxldGUgbG9nT2JqLmFkZGl0aW9uYWw7XG4gICAgfVxuICAgIGxvZ09iai50eXBlID0gdHlwZW9mIGxvZ09iai50eXBlID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnR5cGUudG9Mb3dlckNhc2UoKSA6IFwibG9nXCI7XG4gICAgbG9nT2JqLnRhZyA9IHR5cGVvZiBsb2dPYmoudGFnID09PSBcInN0cmluZ1wiID8gbG9nT2JqLnRhZyA6IFwiXCI7XG4gICAgY29uc3QgcmVzb2x2ZUxvZyA9IChuZXdMb2cgPSBmYWxzZSkgPT4ge1xuICAgICAgY29uc3QgcmVwZWF0ZWQgPSAodGhpcy5fbGFzdExvZy5jb3VudCB8fCAwKSAtIHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbjtcbiAgICAgIGlmICh0aGlzLl9sYXN0TG9nLm9iamVjdCAmJiByZXBlYXRlZCA+IDApIHtcbiAgICAgICAgY29uc3QgYXJnczIgPSBbLi4udGhpcy5fbGFzdExvZy5vYmplY3QuYXJnc107XG4gICAgICAgIGlmIChyZXBlYXRlZCA+IDEpIHtcbiAgICAgICAgICBhcmdzMi5wdXNoKGAocmVwZWF0ZWQgJHtyZXBlYXRlZH0gdGltZXMpYCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fbG9nKHsgLi4udGhpcy5fbGFzdExvZy5vYmplY3QsIGFyZ3M6IGFyZ3MyIH0pO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLmNvdW50ID0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChuZXdMb2cpIHtcbiAgICAgICAgdGhpcy5fbGFzdExvZy5vYmplY3QgPSBsb2dPYmo7XG4gICAgICAgIHRoaXMuX2xvZyhsb2dPYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX2xhc3RMb2cudGltZW91dCk7XG4gICAgY29uc3QgZGlmZlRpbWUgPSB0aGlzLl9sYXN0TG9nLnRpbWUgJiYgbG9nT2JqLmRhdGUgPyBsb2dPYmouZGF0ZS5nZXRUaW1lKCkgLSB0aGlzLl9sYXN0TG9nLnRpbWUuZ2V0VGltZSgpIDogMDtcbiAgICB0aGlzLl9sYXN0TG9nLnRpbWUgPSBsb2dPYmouZGF0ZTtcbiAgICBpZiAoZGlmZlRpbWUgPCB0aGlzLm9wdGlvbnMudGhyb3R0bGUpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHNlcmlhbGl6ZWRMb2cgPSBKU09OLnN0cmluZ2lmeShbXG4gICAgICAgICAgbG9nT2JqLnR5cGUsXG4gICAgICAgICAgbG9nT2JqLnRhZyxcbiAgICAgICAgICBsb2dPYmouYXJnc1xuICAgICAgICBdKTtcbiAgICAgICAgY29uc3QgaXNTYW1lTG9nID0gdGhpcy5fbGFzdExvZy5zZXJpYWxpemVkID09PSBzZXJpYWxpemVkTG9nO1xuICAgICAgICB0aGlzLl9sYXN0TG9nLnNlcmlhbGl6ZWQgPSBzZXJpYWxpemVkTG9nO1xuICAgICAgICBpZiAoaXNTYW1lTG9nKSB7XG4gICAgICAgICAgdGhpcy5fbGFzdExvZy5jb3VudCA9ICh0aGlzLl9sYXN0TG9nLmNvdW50IHx8IDApICsgMTtcbiAgICAgICAgICBpZiAodGhpcy5fbGFzdExvZy5jb3VudCA+IHRoaXMub3B0aW9ucy50aHJvdHRsZU1pbikge1xuICAgICAgICAgICAgdGhpcy5fbGFzdExvZy50aW1lb3V0ID0gc2V0VGltZW91dChcbiAgICAgICAgICAgICAgcmVzb2x2ZUxvZyxcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLnRocm90dGxlXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCB7XG4gICAgICB9XG4gICAgfVxuICAgIHJlc29sdmVMb2codHJ1ZSk7XG4gIH1cbiAgX2xvZyhsb2dPYmopIHtcbiAgICBmb3IgKGNvbnN0IHJlcG9ydGVyIG9mIHRoaXMub3B0aW9ucy5yZXBvcnRlcnMpIHtcbiAgICAgIHJlcG9ydGVyLmxvZyhsb2dPYmosIHtcbiAgICAgICAgb3B0aW9uczogdGhpcy5vcHRpb25zXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIF9ub3JtYWxpemVMb2dMZXZlbChpbnB1dCwgdHlwZXMgPSB7fSwgZGVmYXVsdExldmVsID0gMykge1xuICBpZiAoaW5wdXQgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBkZWZhdWx0TGV2ZWw7XG4gIH1cbiAgaWYgKHR5cGVvZiBpbnB1dCA9PT0gXCJudW1iZXJcIikge1xuICAgIHJldHVybiBpbnB1dDtcbiAgfVxuICBpZiAodHlwZXNbaW5wdXRdICYmIHR5cGVzW2lucHV0XS5sZXZlbCAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHR5cGVzW2lucHV0XS5sZXZlbDtcbiAgfVxuICByZXR1cm4gZGVmYXVsdExldmVsO1xufVxuQ29uc29sYS5wcm90b3R5cGUuYWRkID0gQ29uc29sYS5wcm90b3R5cGUuYWRkUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS5yZW1vdmUgPSBDb25zb2xhLnByb3RvdHlwZS5yZW1vdmVSZXBvcnRlcjtcbkNvbnNvbGEucHJvdG90eXBlLmNsZWFyID0gQ29uc29sYS5wcm90b3R5cGUucmVtb3ZlUmVwb3J0ZXI7XG5Db25zb2xhLnByb3RvdHlwZS53aXRoU2NvcGUgPSBDb25zb2xhLnByb3RvdHlwZS53aXRoVGFnO1xuQ29uc29sYS5wcm90b3R5cGUubW9jayA9IENvbnNvbGEucHJvdG90eXBlLm1vY2tUeXBlcztcbkNvbnNvbGEucHJvdG90eXBlLnBhdXNlID0gQ29uc29sYS5wcm90b3R5cGUucGF1c2VMb2dzO1xuQ29uc29sYS5wcm90b3R5cGUucmVzdW1lID0gQ29uc29sYS5wcm90b3R5cGUucmVzdW1lTG9ncztcbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIHJldHVybiBuZXcgQ29uc29sYShvcHRpb25zKTtcbn1cblxuZXhwb3J0IHsgQ29uc29sYSwgTG9nTGV2ZWxzLCBMb2dUeXBlcywgY3JlYXRlQ29uc29sYSB9O1xuIiwgImltcG9ydCB7IGZvcm1hdFdpdGhPcHRpb25zIH0gZnJvbSAnbm9kZTp1dGlsJztcbmltcG9ydCB7IHNlcCB9IGZyb20gJ25vZGU6cGF0aCc7XG5cbmZ1bmN0aW9uIHBhcnNlU3RhY2soc3RhY2spIHtcbiAgY29uc3QgY3dkID0gcHJvY2Vzcy5jd2QoKSArIHNlcDtcbiAgY29uc3QgbGluZXMgPSBzdGFjay5zcGxpdChcIlxcblwiKS5zcGxpY2UoMSkubWFwKChsKSA9PiBsLnRyaW0oKS5yZXBsYWNlKFwiZmlsZTovL1wiLCBcIlwiKS5yZXBsYWNlKGN3ZCwgXCJcIikpO1xuICByZXR1cm4gbGluZXM7XG59XG5cbmZ1bmN0aW9uIHdyaXRlU3RyZWFtKGRhdGEsIHN0cmVhbSkge1xuICBjb25zdCB3cml0ZSA9IHN0cmVhbS5fX3dyaXRlIHx8IHN0cmVhbS53cml0ZTtcbiAgcmV0dXJuIHdyaXRlLmNhbGwoc3RyZWFtLCBkYXRhKTtcbn1cblxuY29uc3QgYnJhY2tldCA9ICh4KSA9PiB4ID8gYFske3h9XWAgOiBcIlwiO1xuY2xhc3MgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBpbmRlbnQgKyBwYXJzZVN0YWNrKHN0YWNrKS5qb2luKGBcbiR7aW5kZW50fWApO1xuICB9XG4gIGZvcm1hdEVycm9yKGVyciwgb3B0cykge1xuICAgIGNvbnN0IG1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/PyBmb3JtYXRXaXRoT3B0aW9ucyhvcHRzLCBlcnIpO1xuICAgIGNvbnN0IHN0YWNrID0gZXJyLnN0YWNrID8gdGhpcy5mb3JtYXRTdGFjayhlcnIuc3RhY2ssIG9wdHMpIDogXCJcIjtcbiAgICBjb25zdCBsZXZlbCA9IG9wdHM/LmVycm9yTGV2ZWwgfHwgMDtcbiAgICBjb25zdCBjYXVzZWRQcmVmaXggPSBsZXZlbCA+IDAgPyBgJHtcIiAgXCIucmVwZWF0KGxldmVsKX1bY2F1c2VdOiBgIDogXCJcIjtcbiAgICBjb25zdCBjYXVzZWRFcnJvciA9IGVyci5jYXVzZSA/IFwiXFxuXFxuXCIgKyB0aGlzLmZvcm1hdEVycm9yKGVyci5jYXVzZSwgeyAuLi5vcHRzLCBlcnJvckxldmVsOiBsZXZlbCArIDEgfSkgOiBcIlwiO1xuICAgIHJldHVybiBjYXVzZWRQcmVmaXggKyBtZXNzYWdlICsgXCJcXG5cIiArIHN0YWNrICsgY2F1c2VkRXJyb3I7XG4gIH1cbiAgZm9ybWF0QXJncyhhcmdzLCBvcHRzKSB7XG4gICAgY29uc3QgX2FyZ3MgPSBhcmdzLm1hcCgoYXJnKSA9PiB7XG4gICAgICBpZiAoYXJnICYmIHR5cGVvZiBhcmcuc3RhY2sgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybWF0RXJyb3IoYXJnLCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhcmc7XG4gICAgfSk7XG4gICAgcmV0dXJuIGZvcm1hdFdpdGhPcHRpb25zKG9wdHMsIC4uLl9hcmdzKTtcbiAgfVxuICBmb3JtYXREYXRlKGRhdGUsIG9wdHMpIHtcbiAgICByZXR1cm4gb3B0cy5kYXRlID8gZGF0ZS50b0xvY2FsZVRpbWVTdHJpbmcoKSA6IFwiXCI7XG4gIH1cbiAgZmlsdGVyQW5kSm9pbihhcnIpIHtcbiAgICByZXR1cm4gYXJyLmZpbHRlcihCb29sZWFuKS5qb2luKFwiIFwiKTtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgbWVzc2FnZSA9IHRoaXMuZm9ybWF0QXJncyhsb2dPYmouYXJncywgb3B0cyk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcImJveFwiKSB7XG4gICAgICByZXR1cm4gXCJcXG5cIiArIFtcbiAgICAgICAgYnJhY2tldChsb2dPYmoudGFnKSxcbiAgICAgICAgbG9nT2JqLnRpdGxlICYmIGxvZ09iai50aXRsZSxcbiAgICAgICAgLi4ubWVzc2FnZS5zcGxpdChcIlxcblwiKVxuICAgICAgXS5maWx0ZXIoQm9vbGVhbikubWFwKChsKSA9PiBcIiA+IFwiICsgbCkuam9pbihcIlxcblwiKSArIFwiXFxuXCI7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZpbHRlckFuZEpvaW4oW1xuICAgICAgYnJhY2tldChsb2dPYmoudHlwZSksXG4gICAgICBicmFja2V0KGxvZ09iai50YWcpLFxuICAgICAgbWVzc2FnZVxuICAgIF0pO1xuICB9XG4gIGxvZyhsb2dPYmosIGN0eCkge1xuICAgIGNvbnN0IGxpbmUgPSB0aGlzLmZvcm1hdExvZ09iaihsb2dPYmosIHtcbiAgICAgIGNvbHVtbnM6IGN0eC5vcHRpb25zLnN0ZG91dC5jb2x1bW5zIHx8IDAsXG4gICAgICAuLi5jdHgub3B0aW9ucy5mb3JtYXRPcHRpb25zXG4gICAgfSk7XG4gICAgcmV0dXJuIHdyaXRlU3RyZWFtKFxuICAgICAgbGluZSArIFwiXFxuXCIsXG4gICAgICBsb2dPYmoubGV2ZWwgPCAyID8gY3R4Lm9wdGlvbnMuc3RkZXJyIHx8IHByb2Nlc3Muc3RkZXJyIDogY3R4Lm9wdGlvbnMuc3Rkb3V0IHx8IHByb2Nlc3Muc3Rkb3V0XG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgeyBCYXNpY1JlcG9ydGVyIGFzIEIsIHBhcnNlU3RhY2sgYXMgcCB9O1xuIiwgImltcG9ydCAqIGFzIHR0eSBmcm9tICdub2RlOnR0eSc7XG5cbmNvbnN0IHtcbiAgZW52ID0ge30sXG4gIGFyZ3YgPSBbXSxcbiAgcGxhdGZvcm0gPSBcIlwiXG59ID0gdHlwZW9mIHByb2Nlc3MgPT09IFwidW5kZWZpbmVkXCIgPyB7fSA6IHByb2Nlc3M7XG5jb25zdCBpc0Rpc2FibGVkID0gXCJOT19DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKTtcbmNvbnN0IGlzRm9yY2VkID0gXCJGT1JDRV9DT0xPUlwiIGluIGVudiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1jb2xvclwiKTtcbmNvbnN0IGlzV2luZG93cyA9IHBsYXRmb3JtID09PSBcIndpbjMyXCI7XG5jb25zdCBpc0R1bWJUZXJtaW5hbCA9IGVudi5URVJNID09PSBcImR1bWJcIjtcbmNvbnN0IGlzQ29tcGF0aWJsZVRlcm1pbmFsID0gdHR5ICYmIHR0eS5pc2F0dHkgJiYgdHR5LmlzYXR0eSgxKSAmJiBlbnYuVEVSTSAmJiAhaXNEdW1iVGVybWluYWw7XG5jb25zdCBpc0NJID0gXCJDSVwiIGluIGVudiAmJiAoXCJHSVRIVUJfQUNUSU9OU1wiIGluIGVudiB8fCBcIkdJVExBQl9DSVwiIGluIGVudiB8fCBcIkNJUkNMRUNJXCIgaW4gZW52KTtcbmNvbnN0IGlzQ29sb3JTdXBwb3J0ZWQgPSAhaXNEaXNhYmxlZCAmJiAoaXNGb3JjZWQgfHwgaXNXaW5kb3dzICYmICFpc0R1bWJUZXJtaW5hbCB8fCBpc0NvbXBhdGlibGVUZXJtaW5hbCB8fCBpc0NJKTtcbmZ1bmN0aW9uIHJlcGxhY2VDbG9zZShpbmRleCwgc3RyaW5nLCBjbG9zZSwgcmVwbGFjZSwgaGVhZCA9IHN0cmluZy5zbGljZSgwLCBNYXRoLm1heCgwLCBpbmRleCkpICsgcmVwbGFjZSwgdGFpbCA9IHN0cmluZy5zbGljZShNYXRoLm1heCgwLCBpbmRleCArIGNsb3NlLmxlbmd0aCkpLCBuZXh0ID0gdGFpbC5pbmRleE9mKGNsb3NlKSkge1xuICByZXR1cm4gaGVhZCArIChuZXh0IDwgMCA/IHRhaWwgOiByZXBsYWNlQ2xvc2UobmV4dCwgdGFpbCwgY2xvc2UsIHJlcGxhY2UpKTtcbn1cbmZ1bmN0aW9uIGNsZWFyQmxlZWQoaW5kZXgsIHN0cmluZywgb3BlbiwgY2xvc2UsIHJlcGxhY2UpIHtcbiAgcmV0dXJuIGluZGV4IDwgMCA/IG9wZW4gKyBzdHJpbmcgKyBjbG9zZSA6IG9wZW4gKyByZXBsYWNlQ2xvc2UoaW5kZXgsIHN0cmluZywgY2xvc2UsIHJlcGxhY2UpICsgY2xvc2U7XG59XG5mdW5jdGlvbiBmaWx0ZXJFbXB0eShvcGVuLCBjbG9zZSwgcmVwbGFjZSA9IG9wZW4sIGF0ID0gb3Blbi5sZW5ndGggKyAxKSB7XG4gIHJldHVybiAoc3RyaW5nKSA9PiBzdHJpbmcgfHwgIShzdHJpbmcgPT09IFwiXCIgfHwgc3RyaW5nID09PSB2b2lkIDApID8gY2xlYXJCbGVlZChcbiAgICAoXCJcIiArIHN0cmluZykuaW5kZXhPZihjbG9zZSwgYXQpLFxuICAgIHN0cmluZyxcbiAgICBvcGVuLFxuICAgIGNsb3NlLFxuICAgIHJlcGxhY2VcbiAgKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBpbml0KG9wZW4sIGNsb3NlLCByZXBsYWNlKSB7XG4gIHJldHVybiBmaWx0ZXJFbXB0eShgXFx4MUJbJHtvcGVufW1gLCBgXFx4MUJbJHtjbG9zZX1tYCwgcmVwbGFjZSk7XG59XG5jb25zdCBjb2xvckRlZnMgPSB7XG4gIHJlc2V0OiBpbml0KDAsIDApLFxuICBib2xkOiBpbml0KDEsIDIyLCBcIlxceDFCWzIybVxceDFCWzFtXCIpLFxuICBkaW06IGluaXQoMiwgMjIsIFwiXFx4MUJbMjJtXFx4MUJbMm1cIiksXG4gIGl0YWxpYzogaW5pdCgzLCAyMyksXG4gIHVuZGVybGluZTogaW5pdCg0LCAyNCksXG4gIGludmVyc2U6IGluaXQoNywgMjcpLFxuICBoaWRkZW46IGluaXQoOCwgMjgpLFxuICBzdHJpa2V0aHJvdWdoOiBpbml0KDksIDI5KSxcbiAgYmxhY2s6IGluaXQoMzAsIDM5KSxcbiAgcmVkOiBpbml0KDMxLCAzOSksXG4gIGdyZWVuOiBpbml0KDMyLCAzOSksXG4gIHllbGxvdzogaW5pdCgzMywgMzkpLFxuICBibHVlOiBpbml0KDM0LCAzOSksXG4gIG1hZ2VudGE6IGluaXQoMzUsIDM5KSxcbiAgY3lhbjogaW5pdCgzNiwgMzkpLFxuICB3aGl0ZTogaW5pdCgzNywgMzkpLFxuICBncmF5OiBpbml0KDkwLCAzOSksXG4gIGJnQmxhY2s6IGluaXQoNDAsIDQ5KSxcbiAgYmdSZWQ6IGluaXQoNDEsIDQ5KSxcbiAgYmdHcmVlbjogaW5pdCg0MiwgNDkpLFxuICBiZ1llbGxvdzogaW5pdCg0MywgNDkpLFxuICBiZ0JsdWU6IGluaXQoNDQsIDQ5KSxcbiAgYmdNYWdlbnRhOiBpbml0KDQ1LCA0OSksXG4gIGJnQ3lhbjogaW5pdCg0NiwgNDkpLFxuICBiZ1doaXRlOiBpbml0KDQ3LCA0OSksXG4gIGJsYWNrQnJpZ2h0OiBpbml0KDkwLCAzOSksXG4gIHJlZEJyaWdodDogaW5pdCg5MSwgMzkpLFxuICBncmVlbkJyaWdodDogaW5pdCg5MiwgMzkpLFxuICB5ZWxsb3dCcmlnaHQ6IGluaXQoOTMsIDM5KSxcbiAgYmx1ZUJyaWdodDogaW5pdCg5NCwgMzkpLFxuICBtYWdlbnRhQnJpZ2h0OiBpbml0KDk1LCAzOSksXG4gIGN5YW5CcmlnaHQ6IGluaXQoOTYsIDM5KSxcbiAgd2hpdGVCcmlnaHQ6IGluaXQoOTcsIDM5KSxcbiAgYmdCbGFja0JyaWdodDogaW5pdCgxMDAsIDQ5KSxcbiAgYmdSZWRCcmlnaHQ6IGluaXQoMTAxLCA0OSksXG4gIGJnR3JlZW5CcmlnaHQ6IGluaXQoMTAyLCA0OSksXG4gIGJnWWVsbG93QnJpZ2h0OiBpbml0KDEwMywgNDkpLFxuICBiZ0JsdWVCcmlnaHQ6IGluaXQoMTA0LCA0OSksXG4gIGJnTWFnZW50YUJyaWdodDogaW5pdCgxMDUsIDQ5KSxcbiAgYmdDeWFuQnJpZ2h0OiBpbml0KDEwNiwgNDkpLFxuICBiZ1doaXRlQnJpZ2h0OiBpbml0KDEwNywgNDkpXG59O1xuZnVuY3Rpb24gY3JlYXRlQ29sb3JzKHVzZUNvbG9yID0gaXNDb2xvclN1cHBvcnRlZCkge1xuICByZXR1cm4gdXNlQ29sb3IgPyBjb2xvckRlZnMgOiBPYmplY3QuZnJvbUVudHJpZXMoT2JqZWN0LmtleXMoY29sb3JEZWZzKS5tYXAoKGtleSkgPT4gW2tleSwgU3RyaW5nXSkpO1xufVxuY29uc3QgY29sb3JzID0gY3JlYXRlQ29sb3JzKCk7XG5mdW5jdGlvbiBnZXRDb2xvcihjb2xvciwgZmFsbGJhY2sgPSBcInJlc2V0XCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzW2ZhbGxiYWNrXTtcbn1cbmZ1bmN0aW9uIGNvbG9yaXplKGNvbG9yLCB0ZXh0KSB7XG4gIHJldHVybiBnZXRDb2xvcihjb2xvcikodGV4dCk7XG59XG5cbmNvbnN0IGFuc2lSZWdleCA9IFtcbiAgU3RyaW5nLnJhd2BbXFx1MDAxQlxcdTAwOUJdW1tcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcZF0rKD86O1stYS16QS1aXFxkXFwvIyYuOj0/JUB+X10qKSopP1xcdTAwMDcpYCxcbiAgU3RyaW5nLnJhd2AoPzooPzpcXGR7MSw0fSg/OjtcXGR7MCw0fSkqKT9bXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKWBcbl0uam9pbihcInxcIik7XG5mdW5jdGlvbiBzdHJpcEFuc2kodGV4dCkge1xuICByZXR1cm4gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoYW5zaVJlZ2V4LCBcImdcIiksIFwiXCIpO1xufVxuZnVuY3Rpb24gY2VudGVyQWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGNvbnN0IGZyZWVMZWZ0ID0gTWF0aC5mbG9vcihmcmVlIC8gMik7XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWVMZWZ0IHx8IGkgPj0gZnJlZUxlZnQgKyBzdHIubGVuZ3RoID8gc3BhY2UgOiBzdHJbaSAtIGZyZWVMZWZ0XTtcbiAgfVxuICByZXR1cm4gX3N0cjtcbn1cbmZ1bmN0aW9uIHJpZ2h0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgY29uc3QgZnJlZSA9IGxlbiAtIHN0ci5sZW5ndGg7XG4gIGlmIChmcmVlIDw9IDApIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG4gIGxldCBfc3RyID0gXCJcIjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIF9zdHIgKz0gaSA8IGZyZWUgPyBzcGFjZSA6IHN0cltpIC0gZnJlZV07XG4gIH1cbiAgcmV0dXJuIF9zdHI7XG59XG5mdW5jdGlvbiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlID0gXCIgXCIpIHtcbiAgbGV0IF9zdHIgPSBcIlwiO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgX3N0ciArPSBpIDwgc3RyLmxlbmd0aCA/IHN0cltpXSA6IHNwYWNlO1xuICB9XG4gIHJldHVybiBfc3RyO1xufVxuZnVuY3Rpb24gYWxpZ24oYWxpZ25tZW50LCBzdHIsIGxlbiwgc3BhY2UgPSBcIiBcIikge1xuICBzd2l0Y2ggKGFsaWdubWVudCkge1xuICAgIGNhc2UgXCJsZWZ0XCI6IHtcbiAgICAgIHJldHVybiBsZWZ0QWxpZ24oc3RyLCBsZW4sIHNwYWNlKTtcbiAgICB9XG4gICAgY2FzZSBcInJpZ2h0XCI6IHtcbiAgICAgIHJldHVybiByaWdodEFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGNhc2UgXCJjZW50ZXJcIjoge1xuICAgICAgcmV0dXJuIGNlbnRlckFsaWduKHN0ciwgbGVuLCBzcGFjZSk7XG4gICAgfVxuICAgIGRlZmF1bHQ6IHtcbiAgICAgIHJldHVybiBzdHI7XG4gICAgfVxuICB9XG59XG5cbmNvbnN0IGJveFN0eWxlUHJlc2V0cyA9IHtcbiAgc29saWQ6IHtcbiAgICB0bDogXCJcXHUyNTBDXCIsXG4gICAgdHI6IFwiXFx1MjUxMFwiLFxuICAgIGJsOiBcIlxcdTI1MTRcIixcbiAgICBicjogXCJcXHUyNTE4XCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfSxcbiAgZG91YmxlOiB7XG4gICAgdGw6IFwiXFx1MjU1NFwiLFxuICAgIHRyOiBcIlxcdTI1NTdcIixcbiAgICBibDogXCJcXHUyNTVBXCIsXG4gICAgYnI6IFwiXFx1MjU1RFwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIGRvdWJsZVNpbmdsZToge1xuICAgIHRsOiBcIlxcdTI1NTNcIixcbiAgICB0cjogXCJcXHUyNTU2XCIsXG4gICAgYmw6IFwiXFx1MjU1OVwiLFxuICAgIGJyOiBcIlxcdTI1NUNcIixcbiAgICBoOiBcIlxcdTI1MDBcIixcbiAgICB2OiBcIlxcdTI1NTFcIlxuICB9LFxuICBkb3VibGVTaW5nbGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjUwMFwiLFxuICAgIHY6IFwiXFx1MjU1MVwiXG4gIH0sXG4gIHNpbmdsZVRoaWNrOiB7XG4gICAgdGw6IFwiXFx1MjUwRlwiLFxuICAgIHRyOiBcIlxcdTI1MTNcIixcbiAgICBibDogXCJcXHUyNTE3XCIsXG4gICAgYnI6IFwiXFx1MjUxQlwiLFxuICAgIGg6IFwiXFx1MjUwMVwiLFxuICAgIHY6IFwiXFx1MjUwM1wiXG4gIH0sXG4gIHNpbmdsZURvdWJsZToge1xuICAgIHRsOiBcIlxcdTI1NTJcIixcbiAgICB0cjogXCJcXHUyNTU1XCIsXG4gICAgYmw6IFwiXFx1MjU1OFwiLFxuICAgIGJyOiBcIlxcdTI1NUJcIixcbiAgICBoOiBcIlxcdTI1NTBcIixcbiAgICB2OiBcIlxcdTI1MDJcIlxuICB9LFxuICBzaW5nbGVEb3VibGVSb3VuZGVkOiB7XG4gICAgdGw6IFwiXFx1MjU2RFwiLFxuICAgIHRyOiBcIlxcdTI1NkVcIixcbiAgICBibDogXCJcXHUyNTcwXCIsXG4gICAgYnI6IFwiXFx1MjU2RlwiLFxuICAgIGg6IFwiXFx1MjU1MFwiLFxuICAgIHY6IFwiXFx1MjUwMlwiXG4gIH0sXG4gIHJvdW5kZWQ6IHtcbiAgICB0bDogXCJcXHUyNTZEXCIsXG4gICAgdHI6IFwiXFx1MjU2RVwiLFxuICAgIGJsOiBcIlxcdTI1NzBcIixcbiAgICBicjogXCJcXHUyNTZGXCIsXG4gICAgaDogXCJcXHUyNTAwXCIsXG4gICAgdjogXCJcXHUyNTAyXCJcbiAgfVxufTtcbmNvbnN0IGRlZmF1bHRTdHlsZSA9IHtcbiAgYm9yZGVyQ29sb3I6IFwid2hpdGVcIixcbiAgYm9yZGVyU3R5bGU6IFwicm91bmRlZFwiLFxuICB2YWxpZ246IFwiY2VudGVyXCIsXG4gIHBhZGRpbmc6IDIsXG4gIG1hcmdpbkxlZnQ6IDEsXG4gIG1hcmdpblRvcDogMSxcbiAgbWFyZ2luQm90dG9tOiAxXG59O1xuZnVuY3Rpb24gYm94KHRleHQsIF9vcHRzID0ge30pIHtcbiAgY29uc3Qgb3B0cyA9IHtcbiAgICAuLi5fb3B0cyxcbiAgICBzdHlsZToge1xuICAgICAgLi4uZGVmYXVsdFN0eWxlLFxuICAgICAgLi4uX29wdHMuc3R5bGVcbiAgICB9XG4gIH07XG4gIGNvbnN0IHRleHRMaW5lcyA9IHRleHQuc3BsaXQoXCJcXG5cIik7XG4gIGNvbnN0IGJveExpbmVzID0gW107XG4gIGNvbnN0IF9jb2xvciA9IGdldENvbG9yKG9wdHMuc3R5bGUuYm9yZGVyQ29sb3IpO1xuICBjb25zdCBib3JkZXJTdHlsZSA9IHtcbiAgICAuLi50eXBlb2Ygb3B0cy5zdHlsZS5ib3JkZXJTdHlsZSA9PT0gXCJzdHJpbmdcIiA/IGJveFN0eWxlUHJlc2V0c1tvcHRzLnN0eWxlLmJvcmRlclN0eWxlXSB8fCBib3hTdHlsZVByZXNldHMuc29saWQgOiBvcHRzLnN0eWxlLmJvcmRlclN0eWxlXG4gIH07XG4gIGlmIChfY29sb3IpIHtcbiAgICBmb3IgKGNvbnN0IGtleSBpbiBib3JkZXJTdHlsZSkge1xuICAgICAgYm9yZGVyU3R5bGVba2V5XSA9IF9jb2xvcihcbiAgICAgICAgYm9yZGVyU3R5bGVba2V5XVxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFkZGluZ09mZnNldCA9IG9wdHMuc3R5bGUucGFkZGluZyAlIDIgPT09IDAgPyBvcHRzLnN0eWxlLnBhZGRpbmcgOiBvcHRzLnN0eWxlLnBhZGRpbmcgKyAxO1xuICBjb25zdCBoZWlnaHQgPSB0ZXh0TGluZXMubGVuZ3RoICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGggPSBNYXRoLm1heCguLi50ZXh0TGluZXMubWFwKChsaW5lKSA9PiBsaW5lLmxlbmd0aCkpICsgcGFkZGluZ09mZnNldDtcbiAgY29uc3Qgd2lkdGhPZmZzZXQgPSB3aWR0aCArIHBhZGRpbmdPZmZzZXQ7XG4gIGNvbnN0IGxlZnRTcGFjZSA9IG9wdHMuc3R5bGUubWFyZ2luTGVmdCA+IDAgPyBcIiBcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5MZWZ0KSA6IFwiXCI7XG4gIGlmIChvcHRzLnN0eWxlLm1hcmdpblRvcCA+IDApIHtcbiAgICBib3hMaW5lcy5wdXNoKFwiXCIucmVwZWF0KG9wdHMuc3R5bGUubWFyZ2luVG9wKSk7XG4gIH1cbiAgaWYgKG9wdHMudGl0bGUpIHtcbiAgICBjb25zdCB0aXRsZSA9IF9jb2xvciA/IF9jb2xvcihvcHRzLnRpdGxlKSA6IG9wdHMudGl0bGU7XG4gICAgY29uc3QgbGVmdCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgTWF0aC5mbG9vcigod2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoKSAvIDIpXG4gICAgKTtcbiAgICBjb25zdCByaWdodCA9IGJvcmRlclN0eWxlLmgucmVwZWF0KFxuICAgICAgd2lkdGggLSBzdHJpcEFuc2kob3B0cy50aXRsZSkubGVuZ3RoIC0gc3RyaXBBbnNpKGxlZnQpLmxlbmd0aCArIHBhZGRpbmdPZmZzZXRcbiAgICApO1xuICAgIGJveExpbmVzLnB1c2goXG4gICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS50bH0ke2xlZnR9JHt0aXRsZX0ke3JpZ2h0fSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgYm94TGluZXMucHVzaChcbiAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnRsfSR7Ym9yZGVyU3R5bGUuaC5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudHJ9YFxuICAgICk7XG4gIH1cbiAgY29uc3QgdmFsaWduT2Zmc2V0ID0gb3B0cy5zdHlsZS52YWxpZ24gPT09IFwiY2VudGVyXCIgPyBNYXRoLmZsb29yKChoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoKSAvIDIpIDogb3B0cy5zdHlsZS52YWxpZ24gPT09IFwidG9wXCIgPyBoZWlnaHQgLSB0ZXh0TGluZXMubGVuZ3RoIC0gcGFkZGluZ09mZnNldCA6IGhlaWdodCAtIHRleHRMaW5lcy5sZW5ndGg7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHtcbiAgICBpZiAoaSA8IHZhbGlnbk9mZnNldCB8fCBpID49IHZhbGlnbk9mZnNldCArIHRleHRMaW5lcy5sZW5ndGgpIHtcbiAgICAgIGJveExpbmVzLnB1c2goXG4gICAgICAgIGAke2xlZnRTcGFjZX0ke2JvcmRlclN0eWxlLnZ9JHtcIiBcIi5yZXBlYXQod2lkdGhPZmZzZXQpfSR7Ym9yZGVyU3R5bGUudn1gXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBsaW5lID0gdGV4dExpbmVzW2kgLSB2YWxpZ25PZmZzZXRdO1xuICAgICAgY29uc3QgbGVmdCA9IFwiIFwiLnJlcGVhdChwYWRkaW5nT2Zmc2V0KTtcbiAgICAgIGNvbnN0IHJpZ2h0ID0gXCIgXCIucmVwZWF0KHdpZHRoIC0gc3RyaXBBbnNpKGxpbmUpLmxlbmd0aCk7XG4gICAgICBib3hMaW5lcy5wdXNoKFxuICAgICAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS52fSR7bGVmdH0ke2xpbmV9JHtyaWdodH0ke2JvcmRlclN0eWxlLnZ9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cbiAgYm94TGluZXMucHVzaChcbiAgICBgJHtsZWZ0U3BhY2V9JHtib3JkZXJTdHlsZS5ibH0ke2JvcmRlclN0eWxlLmgucmVwZWF0KHdpZHRoT2Zmc2V0KX0ke2JvcmRlclN0eWxlLmJyfWBcbiAgKTtcbiAgaWYgKG9wdHMuc3R5bGUubWFyZ2luQm90dG9tID4gMCkge1xuICAgIGJveExpbmVzLnB1c2goXCJcIi5yZXBlYXQob3B0cy5zdHlsZS5tYXJnaW5Cb3R0b20pKTtcbiAgfVxuICByZXR1cm4gYm94TGluZXMuam9pbihcIlxcblwiKTtcbn1cblxuZXhwb3J0IHsgYWxpZ24gYXMgYSwgYm94IGFzIGIsIGNlbnRlckFsaWduIGFzIGMsIGNvbG9ycyBhcyBkLCBjb2xvcml6ZSBhcyBlLCBnZXRDb2xvciBhcyBnLCBsZWZ0QWxpZ24gYXMgbCwgcmlnaHRBbGlnbiBhcyByLCBzdHJpcEFuc2kgYXMgcyB9O1xuIiwgImltcG9ydCB7IHN0ZGluLCBzdGRvdXQgfSBmcm9tICdub2RlOnByb2Nlc3MnO1xuaW1wb3J0IGcgZnJvbSAnbm9kZTpyZWFkbGluZSc7XG5pbXBvcnQgeyBXcml0ZVN0cmVhbSB9IGZyb20gJ25vZGU6dHR5JztcbmltcG9ydCB7IGkgYXMgaXNVbmljb2RlU3VwcG9ydGVkIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuRDRKSzNSQ0subWpzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzIH0gZnJvbSAnLi4vc2hhcmVkL2NvbnNvbGEuQ0JpNk5tOXMubWpzJztcbmltcG9ydCAnLi4vY29yZS5tanMnO1xuaW1wb3J0ICcuLi9zaGFyZWQvY29uc29sYS5DczVGZHRIRC5tanMnO1xuaW1wb3J0ICdub2RlOnV0aWwnO1xuaW1wb3J0ICdub2RlOnBhdGgnO1xuXG5mdW5jdGlvbiBnZXREZWZhdWx0RXhwb3J0RnJvbUNqcyAoeCkge1xuXHRyZXR1cm4geCAmJiB4Ll9fZXNNb2R1bGUgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHgsICdkZWZhdWx0JykgPyB4WydkZWZhdWx0J10gOiB4O1xufVxuXG52YXIgc3JjO1xudmFyIGhhc1JlcXVpcmVkU3JjO1xuXG5mdW5jdGlvbiByZXF1aXJlU3JjICgpIHtcblx0aWYgKGhhc1JlcXVpcmVkU3JjKSByZXR1cm4gc3JjO1xuXHRoYXNSZXF1aXJlZFNyYyA9IDE7XG5cblx0Y29uc3QgRVNDID0gJ1xceDFCJztcblx0Y29uc3QgQ1NJID0gYCR7RVNDfVtgO1xuXHRjb25zdCBiZWVwID0gJ1xcdTAwMDcnO1xuXG5cdGNvbnN0IGN1cnNvciA9IHtcblx0ICB0byh4LCB5KSB7XG5cdCAgICBpZiAoIXkpIHJldHVybiBgJHtDU0l9JHt4ICsgMX1HYDtcblx0ICAgIHJldHVybiBgJHtDU0l9JHt5ICsgMX07JHt4ICsgMX1IYDtcblx0ICB9LFxuXHQgIG1vdmUoeCwgeSkge1xuXHQgICAgbGV0IHJldCA9ICcnO1xuXG5cdCAgICBpZiAoeCA8IDApIHJldCArPSBgJHtDU0l9JHsteH1EYDtcblx0ICAgIGVsc2UgaWYgKHggPiAwKSByZXQgKz0gYCR7Q1NJfSR7eH1DYDtcblxuXHQgICAgaWYgKHkgPCAwKSByZXQgKz0gYCR7Q1NJfSR7LXl9QWA7XG5cdCAgICBlbHNlIGlmICh5ID4gMCkgcmV0ICs9IGAke0NTSX0ke3l9QmA7XG5cblx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QWAsXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9QmAsXG5cdCAgZm9yd2FyZDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfSR7Y291bnR9Q2AsXG5cdCAgYmFja3dhcmQ6IChjb3VudCA9IDEpID0+IGAke0NTSX0ke2NvdW50fURgLFxuXHQgIG5leHRMaW5lOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9RWAucmVwZWF0KGNvdW50KSxcblx0ICBwcmV2TGluZTogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfUZgLnJlcGVhdChjb3VudCksXG5cdCAgbGVmdDogYCR7Q1NJfUdgLFxuXHQgIGhpZGU6IGAke0NTSX0/MjVsYCxcblx0ICBzaG93OiBgJHtDU0l9PzI1aGAsXG5cdCAgc2F2ZTogYCR7RVNDfTdgLFxuXHQgIHJlc3RvcmU6IGAke0VTQ304YFxuXHR9O1xuXG5cdGNvbnN0IHNjcm9sbCA9IHtcblx0ICB1cDogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVNgLnJlcGVhdChjb3VudCksXG5cdCAgZG93bjogKGNvdW50ID0gMSkgPT4gYCR7Q1NJfVRgLnJlcGVhdChjb3VudClcblx0fTtcblxuXHRjb25zdCBlcmFzZSA9IHtcblx0ICBzY3JlZW46IGAke0NTSX0ySmAsXG5cdCAgdXA6IChjb3VudCA9IDEpID0+IGAke0NTSX0xSmAucmVwZWF0KGNvdW50KSxcblx0ICBkb3duOiAoY291bnQgPSAxKSA9PiBgJHtDU0l9SmAucmVwZWF0KGNvdW50KSxcblx0ICBsaW5lOiBgJHtDU0l9MktgLFxuXHQgIGxpbmVFbmQ6IGAke0NTSX1LYCxcblx0ICBsaW5lU3RhcnQ6IGAke0NTSX0xS2AsXG5cdCAgbGluZXMoY291bnQpIHtcblx0ICAgIGxldCBjbGVhciA9ICcnO1xuXHQgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKVxuXHQgICAgICBjbGVhciArPSB0aGlzLmxpbmUgKyAoaSA8IGNvdW50IC0gMSA/IGN1cnNvci51cCgpIDogJycpO1xuXHQgICAgaWYgKGNvdW50KVxuXHQgICAgICBjbGVhciArPSBjdXJzb3IubGVmdDtcblx0ICAgIHJldHVybiBjbGVhcjtcblx0ICB9XG5cdH07XG5cblx0c3JjID0geyBjdXJzb3IsIHNjcm9sbCwgZXJhc2UsIGJlZXAgfTtcblx0cmV0dXJuIHNyYztcbn1cblxudmFyIHNyY0V4cG9ydHMgPSByZXF1aXJlU3JjKCk7XG5cbnZhciBwaWNvY29sb3JzID0ge2V4cG9ydHM6IHt9fTtcblxudmFyIGhhc1JlcXVpcmVkUGljb2NvbG9ycztcblxuZnVuY3Rpb24gcmVxdWlyZVBpY29jb2xvcnMgKCkge1xuXHRpZiAoaGFzUmVxdWlyZWRQaWNvY29sb3JzKSByZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xuXHRoYXNSZXF1aXJlZFBpY29jb2xvcnMgPSAxO1xuXHRsZXQgcCA9IHByb2Nlc3MgfHwge30sIGFyZ3YgPSBwLmFyZ3YgfHwgW10sIGVudiA9IHAuZW52IHx8IHt9O1xuXHRsZXQgaXNDb2xvclN1cHBvcnRlZCA9XG5cdFx0ISghIWVudi5OT19DT0xPUiB8fCBhcmd2LmluY2x1ZGVzKFwiLS1uby1jb2xvclwiKSkgJiZcblx0XHQoISFlbnYuRk9SQ0VfQ09MT1IgfHwgYXJndi5pbmNsdWRlcyhcIi0tY29sb3JcIikgfHwgcC5wbGF0Zm9ybSA9PT0gXCJ3aW4zMlwiIHx8ICgocC5zdGRvdXQgfHwge30pLmlzVFRZICYmIGVudi5URVJNICE9PSBcImR1bWJcIikgfHwgISFlbnYuQ0kpO1xuXG5cdGxldCBmb3JtYXR0ZXIgPSAob3BlbiwgY2xvc2UsIHJlcGxhY2UgPSBvcGVuKSA9PlxuXHRcdGlucHV0ID0+IHtcblx0XHRcdGxldCBzdHJpbmcgPSBcIlwiICsgaW5wdXQsIGluZGV4ID0gc3RyaW5nLmluZGV4T2YoY2xvc2UsIG9wZW4ubGVuZ3RoKTtcblx0XHRcdHJldHVybiB+aW5kZXggPyBvcGVuICsgcmVwbGFjZUNsb3NlKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSArIGNsb3NlIDogb3BlbiArIHN0cmluZyArIGNsb3NlXG5cdFx0fTtcblxuXHRsZXQgcmVwbGFjZUNsb3NlID0gKHN0cmluZywgY2xvc2UsIHJlcGxhY2UsIGluZGV4KSA9PiB7XG5cdFx0bGV0IHJlc3VsdCA9IFwiXCIsIGN1cnNvciA9IDA7XG5cdFx0ZG8ge1xuXHRcdFx0cmVzdWx0ICs9IHN0cmluZy5zdWJzdHJpbmcoY3Vyc29yLCBpbmRleCkgKyByZXBsYWNlO1xuXHRcdFx0Y3Vyc29yID0gaW5kZXggKyBjbG9zZS5sZW5ndGg7XG5cdFx0XHRpbmRleCA9IHN0cmluZy5pbmRleE9mKGNsb3NlLCBjdXJzb3IpO1xuXHRcdH0gd2hpbGUgKH5pbmRleClcblx0XHRyZXR1cm4gcmVzdWx0ICsgc3RyaW5nLnN1YnN0cmluZyhjdXJzb3IpXG5cdH07XG5cblx0bGV0IGNyZWF0ZUNvbG9ycyA9IChlbmFibGVkID0gaXNDb2xvclN1cHBvcnRlZCkgPT4ge1xuXHRcdGxldCBmID0gZW5hYmxlZCA/IGZvcm1hdHRlciA6ICgpID0+IFN0cmluZztcblx0XHRyZXR1cm4ge1xuXHRcdFx0aXNDb2xvclN1cHBvcnRlZDogZW5hYmxlZCxcblx0XHRcdHJlc2V0OiBmKFwiXFx4MWJbMG1cIiwgXCJcXHgxYlswbVwiKSxcblx0XHRcdGJvbGQ6IGYoXCJcXHgxYlsxbVwiLCBcIlxceDFiWzIybVwiLCBcIlxceDFiWzIybVxceDFiWzFtXCIpLFxuXHRcdFx0ZGltOiBmKFwiXFx4MWJbMm1cIiwgXCJcXHgxYlsyMm1cIiwgXCJcXHgxYlsyMm1cXHgxYlsybVwiKSxcblx0XHRcdGl0YWxpYzogZihcIlxceDFiWzNtXCIsIFwiXFx4MWJbMjNtXCIpLFxuXHRcdFx0dW5kZXJsaW5lOiBmKFwiXFx4MWJbNG1cIiwgXCJcXHgxYlsyNG1cIiksXG5cdFx0XHRpbnZlcnNlOiBmKFwiXFx4MWJbN21cIiwgXCJcXHgxYlsyN21cIiksXG5cdFx0XHRoaWRkZW46IGYoXCJcXHgxYls4bVwiLCBcIlxceDFiWzI4bVwiKSxcblx0XHRcdHN0cmlrZXRocm91Z2g6IGYoXCJcXHgxYls5bVwiLCBcIlxceDFiWzI5bVwiKSxcblxuXHRcdFx0YmxhY2s6IGYoXCJcXHgxYlszMG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWQ6IGYoXCJcXHgxYlszMW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbjogZihcIlxceDFiWzMybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvdzogZihcIlxceDFiWzMzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWU6IGYoXCJcXHgxYlszNG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhOiBmKFwiXFx4MWJbMzVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbjogZihcIlxceDFiWzM2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlOiBmKFwiXFx4MWJbMzdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Z3JheTogZihcIlxceDFiWzkwbVwiLCBcIlxceDFiWzM5bVwiKSxcblxuXHRcdFx0YmdCbGFjazogZihcIlxceDFiWzQwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkOiBmKFwiXFx4MWJbNDFtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdHcmVlbjogZihcIlxceDFiWzQybVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnWWVsbG93OiBmKFwiXFx4MWJbNDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlOiBmKFwiXFx4MWJbNDRtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdNYWdlbnRhOiBmKFwiXFx4MWJbNDVtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdDeWFuOiBmKFwiXFx4MWJbNDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZTogZihcIlxceDFiWzQ3bVwiLCBcIlxceDFiWzQ5bVwiKSxcblxuXHRcdFx0YmxhY2tCcmlnaHQ6IGYoXCJcXHgxYls5MG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRyZWRCcmlnaHQ6IGYoXCJcXHgxYls5MW1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRncmVlbkJyaWdodDogZihcIlxceDFiWzkybVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHllbGxvd0JyaWdodDogZihcIlxceDFiWzkzbVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdGJsdWVCcmlnaHQ6IGYoXCJcXHgxYls5NG1cIiwgXCJcXHgxYlszOW1cIiksXG5cdFx0XHRtYWdlbnRhQnJpZ2h0OiBmKFwiXFx4MWJbOTVtXCIsIFwiXFx4MWJbMzltXCIpLFxuXHRcdFx0Y3lhbkJyaWdodDogZihcIlxceDFiWzk2bVwiLCBcIlxceDFiWzM5bVwiKSxcblx0XHRcdHdoaXRlQnJpZ2h0OiBmKFwiXFx4MWJbOTdtXCIsIFwiXFx4MWJbMzltXCIpLFxuXG5cdFx0XHRiZ0JsYWNrQnJpZ2h0OiBmKFwiXFx4MWJbMTAwbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnUmVkQnJpZ2h0OiBmKFwiXFx4MWJbMTAxbVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnR3JlZW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDJtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdZZWxsb3dCcmlnaHQ6IGYoXCJcXHgxYlsxMDNtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdCbHVlQnJpZ2h0OiBmKFwiXFx4MWJbMTA0bVwiLCBcIlxceDFiWzQ5bVwiKSxcblx0XHRcdGJnTWFnZW50YUJyaWdodDogZihcIlxceDFiWzEwNW1cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0XHRiZ0N5YW5CcmlnaHQ6IGYoXCJcXHgxYlsxMDZtXCIsIFwiXFx4MWJbNDltXCIpLFxuXHRcdFx0YmdXaGl0ZUJyaWdodDogZihcIlxceDFiWzEwN21cIiwgXCJcXHgxYls0OW1cIiksXG5cdFx0fVxuXHR9O1xuXG5cdHBpY29jb2xvcnMuZXhwb3J0cyA9IGNyZWF0ZUNvbG9ycygpO1xuXHRwaWNvY29sb3JzLmV4cG9ydHMuY3JlYXRlQ29sb3JzID0gY3JlYXRlQ29sb3JzO1xuXHRyZXR1cm4gcGljb2NvbG9ycy5leHBvcnRzO1xufVxuXG52YXIgcGljb2NvbG9yc0V4cG9ydHMgPSAvKkBfX1BVUkVfXyovIHJlcXVpcmVQaWNvY29sb3JzKCk7XG5jb25zdCBjID0gLypAX19QVVJFX18qL2dldERlZmF1bHRFeHBvcnRGcm9tQ2pzKHBpY29jb2xvcnNFeHBvcnRzKTtcblxuZnVuY3Rpb24gSih7b25seUZpcnN0OmU9ITF9PXt9KXtjb25zdCBGPVtcIltcXFxcdTAwMUJcXFxcdTAwOUJdW1tcXFxcXSgpIzs/XSooPzooPzooPzooPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10rKSp8W2EtekEtWlxcXFxkXSsoPzo7Wy1hLXpBLVpcXFxcZFxcXFwvIyYuOj0/JUB+X10qKSopPyg/OlxcXFx1MDAwN3xcXFxcdTAwMUJcXFxcdTAwNUN8XFxcXHUwMDlDKSlcIixcIig/Oig/OlxcXFxkezEsNH0oPzo7XFxcXGR7MCw0fSkqKT9bXFxcXGRBLVBSLVRaY2YtbnEtdXk9Pjx+XSkpXCJdLmpvaW4oXCJ8XCIpO3JldHVybiBuZXcgUmVnRXhwKEYsZT92b2lkIDA6XCJnXCIpfWNvbnN0IFE9SigpO2Z1bmN0aW9uIFQoZSl7aWYodHlwZW9mIGUhPVwic3RyaW5nXCIpdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBlfVxcYGApO3JldHVybiBlLnJlcGxhY2UoUSxcIlwiKX1mdW5jdGlvbiBPKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGUmJk9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLFwiZGVmYXVsdFwiKT9lLmRlZmF1bHQ6ZX12YXIgUD17ZXhwb3J0czp7fX07KGZ1bmN0aW9uKGUpe3ZhciB1PXt9O2UuZXhwb3J0cz11LHUuZWFzdEFzaWFuV2lkdGg9ZnVuY3Rpb24odCl7dmFyIHM9dC5jaGFyQ29kZUF0KDApLGk9dC5sZW5ndGg9PTI/dC5jaGFyQ29kZUF0KDEpOjAsRD1zO3JldHVybiA1NTI5Njw9cyYmczw9NTYzMTkmJjU2MzIwPD1pJiZpPD01NzM0MyYmKHMmPTEwMjMsaSY9MTAyMyxEPXM8PDEwfGksRCs9NjU1MzYpLEQ9PTEyMjg4fHw2NTI4MTw9RCYmRDw9NjUzNzZ8fDY1NTA0PD1EJiZEPD02NTUxMD9cIkZcIjpEPT04MzYxfHw2NTM3Nzw9RCYmRDw9NjU0NzB8fDY1NDc0PD1EJiZEPD02NTQ3OXx8NjU0ODI8PUQmJkQ8PTY1NDg3fHw2NTQ5MDw9RCYmRDw9NjU0OTV8fDY1NDk4PD1EJiZEPD02NTUwMHx8NjU1MTI8PUQmJkQ8PTY1NTE4P1wiSFwiOjQzNTI8PUQmJkQ8PTQ0NDd8fDQ1MTU8PUQmJkQ8PTQ1MTl8fDQ2MDI8PUQmJkQ8PTQ2MDd8fDkwMDE8PUQmJkQ8PTkwMDJ8fDExOTA0PD1EJiZEPD0xMTkyOXx8MTE5MzE8PUQmJkQ8PTEyMDE5fHwxMjAzMjw9RCYmRDw9MTIyNDV8fDEyMjcyPD1EJiZEPD0xMjI4M3x8MTIyODk8PUQmJkQ8PTEyMzUwfHwxMjM1Mzw9RCYmRDw9MTI0Mzh8fDEyNDQxPD1EJiZEPD0xMjU0M3x8MTI1NDk8PUQmJkQ8PTEyNTg5fHwxMjU5Mzw9RCYmRDw9MTI2ODZ8fDEyNjg4PD1EJiZEPD0xMjczMHx8MTI3MzY8PUQmJkQ8PTEyNzcxfHwxMjc4NDw9RCYmRDw9MTI4MzB8fDEyODMyPD1EJiZEPD0xMjg3MXx8MTI4ODA8PUQmJkQ8PTEzMDU0fHwxMzA1Njw9RCYmRDw9MTk5MDN8fDE5OTY4PD1EJiZEPD00MjEyNHx8NDIxMjg8PUQmJkQ8PTQyMTgyfHw0MzM2MDw9RCYmRDw9NDMzODh8fDQ0MDMyPD1EJiZEPD01NTIwM3x8NTUyMTY8PUQmJkQ8PTU1MjM4fHw1NTI0Mzw9RCYmRDw9NTUyOTF8fDYzNzQ0PD1EJiZEPD02NDI1NXx8NjUwNDA8PUQmJkQ8PTY1MDQ5fHw2NTA3Mjw9RCYmRDw9NjUxMDZ8fDY1MTA4PD1EJiZEPD02NTEyNnx8NjUxMjg8PUQmJkQ8PTY1MTMxfHwxMTA1OTI8PUQmJkQ8PTExMDU5M3x8MTI3NDg4PD1EJiZEPD0xMjc0OTB8fDEyNzUwNDw9RCYmRDw9MTI3NTQ2fHwxMjc1NTI8PUQmJkQ8PTEyNzU2MHx8MTI3NTY4PD1EJiZEPD0xMjc1Njl8fDEzMTA3Mjw9RCYmRDw9MTk0MzY3fHwxNzc5ODQ8PUQmJkQ8PTE5NjYwNXx8MTk2NjA4PD1EJiZEPD0yNjIxNDE/XCJXXCI6MzI8PUQmJkQ8PTEyNnx8MTYyPD1EJiZEPD0xNjN8fDE2NTw9RCYmRDw9MTY2fHxEPT0xNzJ8fEQ9PTE3NXx8MTAyMTQ8PUQmJkQ8PTEwMjIxfHwxMDYyOTw9RCYmRDw9MTA2MzA/XCJOYVwiOkQ9PTE2MXx8RD09MTY0fHwxNjc8PUQmJkQ8PTE2OHx8RD09MTcwfHwxNzM8PUQmJkQ8PTE3NHx8MTc2PD1EJiZEPD0xODB8fDE4Mjw9RCYmRDw9MTg2fHwxODg8PUQmJkQ8PTE5MXx8RD09MTk4fHxEPT0yMDh8fDIxNTw9RCYmRDw9MjE2fHwyMjI8PUQmJkQ8PTIyNXx8RD09MjMwfHwyMzI8PUQmJkQ8PTIzNHx8MjM2PD1EJiZEPD0yMzd8fEQ9PTI0MHx8MjQyPD1EJiZEPD0yNDN8fDI0Nzw9RCYmRDw9MjUwfHxEPT0yNTJ8fEQ9PTI1NHx8RD09MjU3fHxEPT0yNzN8fEQ9PTI3NXx8RD09MjgzfHwyOTQ8PUQmJkQ8PTI5NXx8RD09Mjk5fHwzMDU8PUQmJkQ8PTMwN3x8RD09MzEyfHwzMTk8PUQmJkQ8PTMyMnx8RD09MzI0fHwzMjg8PUQmJkQ8PTMzMXx8RD09MzMzfHwzMzg8PUQmJkQ8PTMzOXx8MzU4PD1EJiZEPD0zNTl8fEQ9PTM2M3x8RD09NDYyfHxEPT00NjR8fEQ9PTQ2Nnx8RD09NDY4fHxEPT00NzB8fEQ9PTQ3Mnx8RD09NDc0fHxEPT00NzZ8fEQ9PTU5M3x8RD09NjA5fHxEPT03MDh8fEQ9PTcxMXx8NzEzPD1EJiZEPD03MTV8fEQ9PTcxN3x8RD09NzIwfHw3Mjg8PUQmJkQ8PTczMXx8RD09NzMzfHxEPT03MzV8fDc2ODw9RCYmRDw9ODc5fHw5MTM8PUQmJkQ8PTkyOXx8OTMxPD1EJiZEPD05Mzd8fDk0NTw9RCYmRDw9OTYxfHw5NjM8PUQmJkQ8PTk2OXx8RD09MTAyNXx8MTA0MDw9RCYmRDw9MTEwM3x8RD09MTEwNXx8RD09ODIwOHx8ODIxMTw9RCYmRDw9ODIxNHx8ODIxNjw9RCYmRDw9ODIxN3x8ODIyMDw9RCYmRDw9ODIyMXx8ODIyNDw9RCYmRDw9ODIyNnx8ODIyODw9RCYmRDw9ODIzMXx8RD09ODI0MHx8ODI0Mjw9RCYmRDw9ODI0M3x8RD09ODI0NXx8RD09ODI1MXx8RD09ODI1NHx8RD09ODMwOHx8RD09ODMxOXx8ODMyMTw9RCYmRDw9ODMyNHx8RD09ODM2NHx8RD09ODQ1MXx8RD09ODQ1M3x8RD09ODQ1N3x8RD09ODQ2N3x8RD09ODQ3MHx8ODQ4MTw9RCYmRDw9ODQ4Mnx8RD09ODQ4Nnx8RD09ODQ5MXx8ODUzMTw9RCYmRDw9ODUzMnx8ODUzOTw9RCYmRDw9ODU0Mnx8ODU0NDw9RCYmRDw9ODU1NXx8ODU2MDw9RCYmRDw9ODU2OXx8RD09ODU4NXx8ODU5Mjw9RCYmRDw9ODYwMXx8ODYzMjw9RCYmRDw9ODYzM3x8RD09ODY1OHx8RD09ODY2MHx8RD09ODY3OXx8RD09ODcwNHx8ODcwNjw9RCYmRDw9ODcwN3x8ODcxMTw9RCYmRDw9ODcxMnx8RD09ODcxNXx8RD09ODcxOXx8RD09ODcyMXx8RD09ODcyNXx8RD09ODczMHx8ODczMzw9RCYmRDw9ODczNnx8RD09ODczOXx8RD09ODc0MXx8ODc0Mzw9RCYmRDw9ODc0OHx8RD09ODc1MHx8ODc1Njw9RCYmRDw9ODc1OXx8ODc2NDw9RCYmRDw9ODc2NXx8RD09ODc3Nnx8RD09ODc4MHx8RD09ODc4Nnx8ODgwMDw9RCYmRDw9ODgwMXx8ODgwNDw9RCYmRDw9ODgwN3x8ODgxMDw9RCYmRDw9ODgxMXx8ODgxNDw9RCYmRDw9ODgxNXx8ODgzNDw9RCYmRDw9ODgzNXx8ODgzODw9RCYmRDw9ODgzOXx8RD09ODg1M3x8RD09ODg1N3x8RD09ODg2OXx8RD09ODg5NXx8RD09ODk3OHx8OTMxMjw9RCYmRDw9OTQ0OXx8OTQ1MTw9RCYmRDw9OTU0N3x8OTU1Mjw9RCYmRDw9OTU4N3x8OTYwMDw9RCYmRDw9OTYxNXx8OTYxODw9RCYmRDw9OTYyMXx8OTYzMjw9RCYmRDw9OTYzM3x8OTYzNTw9RCYmRDw9OTY0MXx8OTY1MDw9RCYmRDw9OTY1MXx8OTY1NDw9RCYmRDw9OTY1NXx8OTY2MDw9RCYmRDw9OTY2MXx8OTY2NDw9RCYmRDw9OTY2NXx8OTY3MDw9RCYmRDw9OTY3Mnx8RD09OTY3NXx8OTY3ODw9RCYmRDw9OTY4MXx8OTY5ODw9RCYmRDw9OTcwMXx8RD09OTcxMXx8OTczMzw9RCYmRDw9OTczNHx8RD09OTczN3x8OTc0Mjw9RCYmRDw9OTc0M3x8OTc0ODw9RCYmRDw9OTc0OXx8RD09OTc1Nnx8RD09OTc1OHx8RD09OTc5Mnx8RD09OTc5NHx8OTgyNDw9RCYmRDw9OTgyNXx8OTgyNzw9RCYmRDw9OTgyOXx8OTgzMTw9RCYmRDw9OTgzNHx8OTgzNjw9RCYmRDw9OTgzN3x8RD09OTgzOXx8OTg4Njw9RCYmRDw9OTg4N3x8OTkxODw9RCYmRDw9OTkxOXx8OTkyNDw9RCYmRDw9OTkzM3x8OTkzNTw9RCYmRDw9OTk1M3x8RD09OTk1NXx8OTk2MDw9RCYmRDw9OTk4M3x8RD09MTAwNDV8fEQ9PTEwMDcxfHwxMDEwMjw9RCYmRDw9MTAxMTF8fDExMDkzPD1EJiZEPD0xMTA5N3x8MTI4NzI8PUQmJkQ8PTEyODc5fHw1NzM0NDw9RCYmRDw9NjM3NDN8fDY1MDI0PD1EJiZEPD02NTAzOXx8RD09NjU1MzN8fDEyNzIzMjw9RCYmRDw9MTI3MjQyfHwxMjcyNDg8PUQmJkQ8PTEyNzI3N3x8MTI3MjgwPD1EJiZEPD0xMjczMzd8fDEyNzM0NDw9RCYmRDw9MTI3Mzg2fHw5MTc3NjA8PUQmJkQ8PTkxNzk5OXx8OTgzMDQwPD1EJiZEPD0xMDQ4NTczfHwxMDQ4NTc2PD1EJiZEPD0xMTE0MTA5P1wiQVwiOlwiTlwifSx1LmNoYXJhY3Rlckxlbmd0aD1mdW5jdGlvbih0KXt2YXIgcz10aGlzLmVhc3RBc2lhbldpZHRoKHQpO3JldHVybiBzPT1cIkZcInx8cz09XCJXXCJ8fHM9PVwiQVwiPzI6MX07ZnVuY3Rpb24gRih0KXtyZXR1cm4gdC5tYXRjaCgvW1xcdUQ4MDAtXFx1REJGRl1bXFx1REMwMC1cXHVERkZGXXxbXlxcdUQ4MDAtXFx1REZGRl0vZyl8fFtdfXUubGVuZ3RoPWZ1bmN0aW9uKHQpe2Zvcih2YXIgcz1GKHQpLGk9MCxEPTA7RDxzLmxlbmd0aDtEKyspaT1pK3RoaXMuY2hhcmFjdGVyTGVuZ3RoKHNbRF0pO3JldHVybiBpfSx1LnNsaWNlPWZ1bmN0aW9uKHQscyxpKXt0ZXh0TGVuPXUubGVuZ3RoKHQpLHM9c3x8MCxpPWl8fDEsczwwJiYocz10ZXh0TGVuK3MpLGk8MCYmKGk9dGV4dExlbitpKTtmb3IodmFyIEQ9XCJcIixDPTAsbz1GKHQpLEU9MDtFPG8ubGVuZ3RoO0UrKyl7dmFyIGE9b1tFXSxuPXUubGVuZ3RoKGEpO2lmKEM+PXMtKG49PTI/MTowKSlpZihDK248PWkpRCs9YTtlbHNlIGJyZWFrO0MrPW47fXJldHVybiBEfTt9KShQKTt2YXIgWD1QLmV4cG9ydHM7Y29uc3QgREQ9TyhYKTt2YXIgdUQ9ZnVuY3Rpb24oKXtyZXR1cm4gL1xcdUQ4M0NcXHVERkY0XFx1REI0MFxcdURDNjdcXHVEQjQwXFx1REM2Mig/OlxcdURCNDBcXHVEQzc3XFx1REI0MFxcdURDNkNcXHVEQjQwXFx1REM3M3xcXHVEQjQwXFx1REM3M1xcdURCNDBcXHVEQzYzXFx1REI0MFxcdURDNzR8XFx1REI0MFxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3KVxcdURCNDBcXHVEQzdGfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkZcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZGXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRV0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkVcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZFXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKXwoPzpcXHVEODNFXFx1REREMVxcdUQ4M0NcXHVERkZEXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDF8XFx1RDgzRFxcdURDNjlcXHVEODNDXFx1REZGRFxcdTIwMERcXHVEODNFXFx1REQxRFxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSkpKD86XFx1RDgzQ1tcXHVERkZCXFx1REZGQ1xcdURGRkVcXHVERkZGXSl8KD86XFx1RDgzRVxcdURERDFcXHVEODNDXFx1REZGQ1xcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxfFxcdUQ4M0RcXHVEQzY5XFx1RDgzQ1xcdURGRkNcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKSg/OlxcdUQ4M0NbXFx1REZGQlxcdURGRkQtXFx1REZGRl0pfCg/OlxcdUQ4M0VcXHVEREQxXFx1RDgzQ1xcdURGRkJcXHUyMDBEXFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMXxcXHVEODNEXFx1REM2OVxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdUQ4M0VcXHVERDFEXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKSkoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1xcdURGRkIoPzpcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSl8XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkMtXFx1REZGRl0pfFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRnxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKT98KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSl8XFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKXxcXHUyMDBEKD86XFx1Mjc2NFxcdUZFMEZcXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNEXFx1REM2OHwoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHUyMDBEKD86XFx1RDgzRFxcdURDNjZcXHUyMDBEXFx1RDgzRFxcdURDNjZ8XFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pKXxcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZFXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRVxcdTIwMEQoPzpcXHVEODNFXFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OCg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl0pfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjgoPzpcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdKXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4KD86XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXwoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pXFx1RkUwRnxcXHUyMDBEKD86KD86XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2NlxcdURDNjddKXxcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkMpP3woPzpcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZCXFx1MjAwRFxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8KD86XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKVxcdTIwMERcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pKXxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSlcXHUyMDBEXFx1RDgzRVxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDEpKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2N1xcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSkpfFxcdUQ4M0RcXHVEQzY5KD86XFx1MjAwRCg/OlxcdTI3NjRcXHVGRTBGXFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCg/OlxcdUQ4M0RbXFx1REM2OFxcdURDNjldKXxcXHVEODNEW1xcdURDNjhcXHVEQzY5XSl8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGRlxcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSl8XFx1RDgzQ1xcdURGRkRcXHUyMDBEKD86XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0VbXFx1RERBRi1cXHVEREIzXFx1RERCQ1xcdUREQkRdKXxcXHVEODNDXFx1REZGQ1xcdTIwMEQoPzpcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFW1xcdUREQUYtXFx1RERCM1xcdUREQkNcXHVEREJEXSkpfFxcdUQ4M0VcXHVEREQxKD86XFx1MjAwRCg/OlxcdUQ4M0VcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZGXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZFXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZEXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZDXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pfFxcdUQ4M0NcXHVERkZCXFx1MjAwRCg/OlxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRVtcXHVEREFGLVxcdUREQjNcXHVEREJDXFx1RERCRF0pKXxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2NlxcdTIwMERcXHVEODNEXFx1REM2NnxcXHVEODNEXFx1REM2OVxcdTIwMERcXHVEODNEXFx1REM2OVxcdTIwMEQoPzpcXHVEODNEW1xcdURDNjZcXHVEQzY3XSl8XFx1RDgzRFxcdURDNjlcXHUyMDBEXFx1RDgzRFxcdURDNjdcXHUyMDBEKD86XFx1RDgzRFtcXHVEQzY2XFx1REM2N10pfCg/OlxcdUQ4M0RcXHVEQzQxXFx1RkUwRlxcdTIwMERcXHVEODNEXFx1RERFOHxcXHVEODNFXFx1REREMSg/OlxcdUQ4M0NcXHVERkZGXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZFXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZEXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZDXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdUQ4M0NcXHVERkZCXFx1MjAwRFtcXHUyNjk1XFx1MjY5NlxcdTI3MDhdfFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XSl8XFx1RDgzRFxcdURDNjkoPzpcXHVEODNDXFx1REZGRlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRVxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGRFxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQ1xcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHVEODNDXFx1REZGQlxcdTIwMERbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XXxcXHUyMDBEW1xcdTI2OTVcXHUyNjk2XFx1MjcwOF0pfFxcdUQ4M0RcXHVERTM2XFx1MjAwRFxcdUQ4M0NcXHVERjJCfFxcdUQ4M0NcXHVERkYzXFx1RkUwRlxcdTIwMERcXHUyNkE3fFxcdUQ4M0RcXHVEQzNCXFx1MjAwRFxcdTI3NDR8KD86KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKVxcdTIwMERbXFx1MjY0MFxcdTI2NDJdfFxcdUQ4M0NcXHVERkY0XFx1MjAwRFxcdTI2MjB8KD86XFx1RDgzQ1tcXHVERkMzXFx1REZDNFxcdURGQ0FdfFxcdUQ4M0RbXFx1REM2RVxcdURDNzBcXHVEQzcxXFx1REM3M1xcdURDNzdcXHVEQzgxXFx1REM4MlxcdURDODZcXHVEQzg3XFx1REU0NS1cXHVERTQ3XFx1REU0QlxcdURFNERcXHVERTRFXFx1REVBM1xcdURFQjQtXFx1REVCNl18XFx1RDgzRVtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENELVxcdUREQ0ZcXHVEREQ0XFx1RERENi1cXHVEREREXSlcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXXxbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMjhcXHUyM0NGXFx1MjNFRC1cXHUyM0VGXFx1MjNGMVxcdTIzRjJcXHUyM0Y4LVxcdTIzRkFcXHUyNEMyXFx1MjVBQVxcdTI1QUJcXHUyNUI2XFx1MjVDMFxcdTI1RkJcXHUyNUZDXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE4XFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkIwXFx1MjZCMVxcdTI2QzhcXHUyNkNGXFx1MjZEMVxcdTI2RDNcXHUyNkU5XFx1MjZGMFxcdTI2RjFcXHUyNkY0XFx1MjZGN1xcdTI2RjhcXHUyNzAyXFx1MjcwOFxcdTI3MDlcXHUyNzBGXFx1MjcxMlxcdTI3MTRcXHUyNzE2XFx1MjcxRFxcdTI3MjFcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc2M1xcdTI3QTFcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTMwMzBcXHUzMDNEXFx1MzI5N1xcdTMyOTldfFxcdUQ4M0NbXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdURFMDJcXHVERTM3XFx1REYyMVxcdURGMjQtXFx1REYyQ1xcdURGMzZcXHVERjdEXFx1REY5NlxcdURGOTdcXHVERjk5LVxcdURGOUJcXHVERjlFXFx1REY5RlxcdURGQ0RcXHVERkNFXFx1REZENC1cXHVERkRGXFx1REZGNVxcdURGRjddfFxcdUQ4M0RbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdKVxcdUZFMEZ8XFx1RDgzQ1xcdURGRjNcXHVGRTBGXFx1MjAwRFxcdUQ4M0NcXHVERjA4fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY3fFxcdUQ4M0RcXHVEQzY5XFx1MjAwRFxcdUQ4M0RcXHVEQzY2fFxcdUQ4M0RcXHVERTM1XFx1MjAwRFxcdUQ4M0RcXHVEQ0FCfFxcdUQ4M0RcXHVERTJFXFx1MjAwRFxcdUQ4M0RcXHVEQ0E4fFxcdUQ4M0RcXHVEQzE1XFx1MjAwRFxcdUQ4M0VcXHVEREJBfFxcdUQ4M0VcXHVEREQxKD86XFx1RDgzQ1xcdURGRkZ8XFx1RDgzQ1xcdURGRkV8XFx1RDgzQ1xcdURGRkR8XFx1RDgzQ1xcdURGRkN8XFx1RDgzQ1xcdURGRkIpP3xcXHVEODNEXFx1REM2OSg/OlxcdUQ4M0NcXHVERkZGfFxcdUQ4M0NcXHVERkZFfFxcdUQ4M0NcXHVERkZEfFxcdUQ4M0NcXHVERkZDfFxcdUQ4M0NcXHVERkZCKT98XFx1RDgzQ1xcdURERkRcXHVEODNDXFx1RERGMHxcXHVEODNDXFx1RERGNlxcdUQ4M0NcXHVEREU2fFxcdUQ4M0NcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RDgzRFxcdURDMDhcXHUyMDBEXFx1MkIxQnxcXHUyNzY0XFx1RkUwRlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSl8XFx1RDgzRFxcdURDNDFcXHVGRTBGfFxcdUQ4M0NcXHVERkYzXFx1RkUwRnxcXHVEODNDXFx1RERGRig/OlxcdUQ4M0NbXFx1RERFNlxcdURERjJcXHVEREZDXSl8XFx1RDgzQ1xcdURERkUoPzpcXHVEODNDW1xcdURERUFcXHVEREY5XSl8XFx1RDgzQ1xcdURERkMoPzpcXHVEODNDW1xcdURERUJcXHVEREY4XSl8XFx1RDgzQ1xcdURERkIoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVFXFx1RERGM1xcdURERkFdKXxcXHVEODNDXFx1RERGQSg/OlxcdUQ4M0NbXFx1RERFNlxcdURERUNcXHVEREYyXFx1RERGM1xcdURERjhcXHVEREZFXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY5KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERTlcXHVEREVCLVxcdURERURcXHVEREVGLVxcdURERjRcXHVEREY3XFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRl0pfFxcdUQ4M0NcXHVEREY4KD86XFx1RDgzQ1tcXHVEREU2LVxcdURERUFcXHVEREVDLVxcdURERjRcXHVEREY3LVxcdURERjlcXHVEREZCXFx1RERGRC1cXHVEREZGXSl8XFx1RDgzQ1xcdURERjcoPzpcXHVEODNDW1xcdURERUFcXHVEREY0XFx1RERGOFxcdURERkFcXHVEREZDXSl8XFx1RDgzQ1xcdURERjUoPzpcXHVEODNDW1xcdURERTZcXHVEREVBLVxcdURERURcXHVEREYwLVxcdURERjNcXHVEREY3LVxcdURERjlcXHVEREZDXFx1RERGRV0pfFxcdUQ4M0NcXHVEREYzKD86XFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUEtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGNFxcdURERjVcXHVEREY3XFx1RERGQVxcdURERkZdKXxcXHVEODNDXFx1RERGMig/OlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREYxKD86XFx1RDgzQ1tcXHVEREU2LVxcdURERThcXHVEREVFXFx1RERGMFxcdURERjctXFx1RERGQlxcdURERkVdKXxcXHVEODNDXFx1RERGMCg/OlxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFRig/OlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV0pfFxcdUQ4M0NcXHVEREVFKD86XFx1RDgzQ1tcXHVEREU4LVxcdURERUFcXHVEREYxLVxcdURERjRcXHVEREY2LVxcdURERjldKXxcXHVEODNDXFx1RERFRCg/OlxcdUQ4M0NbXFx1RERGMFxcdURERjJcXHVEREYzXFx1RERGN1xcdURERjlcXHVEREZBXSl8XFx1RDgzQ1xcdURERUMoPzpcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVFXFx1RERGMS1cXHVEREYzXFx1RERGNS1cXHVEREZBXFx1RERGQ1xcdURERkVdKXxcXHVEODNDXFx1RERFQig/OlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XSl8XFx1RDgzQ1xcdURERUEoPzpcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFQVxcdURERUNcXHVEREVEXFx1RERGNy1cXHVEREZBXSl8XFx1RDgzQ1xcdURERTkoPzpcXHVEODNDW1xcdURERUFcXHVEREVDXFx1RERFRlxcdURERjBcXHVEREYyXFx1RERGNFxcdURERkZdKXxcXHVEODNDXFx1RERFOCg/OlxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY1XFx1RERGN1xcdURERkEtXFx1RERGRl0pfFxcdUQ4M0NcXHVEREU3KD86XFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRlxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOVxcdURERkJcXHVEREZDXFx1RERGRVxcdURERkZdKXxcXHVEODNDXFx1RERFNig/OlxcdUQ4M0NbXFx1RERFOC1cXHVEREVDXFx1RERFRVxcdURERjFcXHVEREYyXFx1RERGNFxcdURERjYtXFx1RERGQVxcdURERkNcXHVEREZEXFx1RERGRl0pfFsjXFwqMC05XVxcdUZFMEZcXHUyMEUzfFxcdTI3NjRcXHVGRTBGfCg/OlxcdUQ4M0NbXFx1REZDM1xcdURGQzRcXHVERkNBXXxcXHVEODNEW1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0LVxcdURFQjZdfFxcdUQ4M0VbXFx1REQyNlxcdUREMzVcXHVERDM3LVxcdUREMzlcXHVERDNEXFx1REQzRVxcdUREQjhcXHVEREI5XFx1RERDRC1cXHVERENGXFx1RERENFxcdURERDYtXFx1RERERF0pKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXwoPzpcXHUyNkY5fFxcdUQ4M0NbXFx1REZDQlxcdURGQ0NdfFxcdUQ4M0RcXHVERDc1KSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxcXHVEODNDXFx1REZGNHwoPzpbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XSkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pfCg/OltcXHUyNjFEXFx1MjcwQ1xcdTI3MERdfFxcdUQ4M0RbXFx1REQ3NFxcdUREOTBdKSg/OlxcdUZFMEZ8XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKXxbXFx1MjcwQVxcdTI3MEJdfFxcdUQ4M0NbXFx1REY4NVxcdURGQzJcXHVERkM3XXxcXHVEODNEW1xcdURDMDhcXHVEQzE1XFx1REMzQlxcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFMkVcXHVERTM1XFx1REUzNlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUNcXHVERDFFXFx1REQxRlxcdUREMzAtXFx1REQzNFxcdUREMzZcXHVERDc3XFx1RERCNVxcdUREQjZcXHVEREJCXFx1REREMlxcdURERDNcXHVEREQ1XXxcXHVEODNDW1xcdURGQzNcXHVERkM0XFx1REZDQV18XFx1RDgzRFtcXHVEQzZFXFx1REM3MFxcdURDNzFcXHVEQzczXFx1REM3N1xcdURDODFcXHVEQzgyXFx1REM4NlxcdURDODdcXHVERTQ1LVxcdURFNDdcXHVERTRCXFx1REU0RFxcdURFNEVcXHVERUEzXFx1REVCNC1cXHVERUI2XXxcXHVEODNFW1xcdUREMjZcXHVERDM1XFx1REQzNy1cXHVERDM5XFx1REQzRFxcdUREM0VcXHVEREI4XFx1RERCOVxcdUREQ0QtXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdfFxcdUQ4M0RcXHVEQzZGfFxcdUQ4M0VbXFx1REQzQ1xcdUREREVcXHVERERGXXxbXFx1MjMxQVxcdTIzMUJcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNUZFXFx1MjYxNFxcdTI2MTVcXHUyNjQ4LVxcdTI2NTNcXHUyNjdGXFx1MjY5M1xcdTI2QTFcXHUyNkFBXFx1MjZBQlxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkNFXFx1MjZENFxcdTI2RUFcXHUyNkYyXFx1MjZGM1xcdTI2RjVcXHUyNkZBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc5NS1cXHUyNzk3XFx1MjdCMFxcdTI3QkZcXHUyQjFCXFx1MkIxQ1xcdTJCNTBcXHUyQjU1XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ4RVxcdUREOTEtXFx1REQ5QVxcdURFMDFcXHVERTFBXFx1REUyRlxcdURFMzItXFx1REUzNlxcdURFMzgtXFx1REUzQVxcdURFNTBcXHVERTUxXFx1REYwMC1cXHVERjIwXFx1REYyRC1cXHVERjM1XFx1REYzNy1cXHVERjdDXFx1REY3RS1cXHVERjg0XFx1REY4Ni1cXHVERjkzXFx1REZBMC1cXHVERkMxXFx1REZDNVxcdURGQzZcXHVERkM4XFx1REZDOVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjgtXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDMDdcXHVEQzA5LVxcdURDMTRcXHVEQzE2LVxcdURDM0FcXHVEQzNDLVxcdURDM0VcXHVEQzQwXFx1REM0NFxcdURDNDVcXHVEQzUxLVxcdURDNjVcXHVEQzZBXFx1REM3OS1cXHVEQzdCXFx1REM3RC1cXHVEQzgwXFx1REM4NFxcdURDODgtXFx1REM4RVxcdURDOTBcXHVEQzkyLVxcdURDQTlcXHVEQ0FCLVxcdURDRkNcXHVEQ0ZGLVxcdUREM0RcXHVERDRCLVxcdURENEVcXHVERDUwLVxcdURENjdcXHVEREE0XFx1RERGQi1cXHVERTJEXFx1REUyRi1cXHVERTM0XFx1REUzNy1cXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDFEXFx1REQyMC1cXHVERDI1XFx1REQyNy1cXHVERDJGXFx1REQzQVxcdUREM0YtXFx1REQ0NVxcdURENDctXFx1REQ3NlxcdURENzhcXHVERDdBLVxcdUREQjRcXHVEREI3XFx1RERCQVxcdUREQkMtXFx1RERDQlxcdURERDBcXHVEREUwLVxcdURERkZcXHVERTcwLVxcdURFNzRcXHVERTc4LVxcdURFN0FcXHVERTgwLVxcdURFODZcXHVERTkwLVxcdURFQThcXHVERUIwLVxcdURFQjZcXHVERUMwLVxcdURFQzJcXHVERUQwLVxcdURFRDZdfCg/OltcXHUyMzFBXFx1MjMxQlxcdTIzRTktXFx1MjNFQ1xcdTIzRjBcXHUyM0YzXFx1MjVGRFxcdTI1RkVcXHUyNjE0XFx1MjYxNVxcdTI2NDgtXFx1MjY1M1xcdTI2N0ZcXHUyNjkzXFx1MjZBMVxcdTI2QUFcXHUyNkFCXFx1MjZCRFxcdTI2QkVcXHUyNkM0XFx1MjZDNVxcdTI2Q0VcXHUyNkQ0XFx1MjZFQVxcdTI2RjJcXHUyNkYzXFx1MjZGNVxcdTI2RkFcXHUyNkZEXFx1MjcwNVxcdTI3MEFcXHUyNzBCXFx1MjcyOFxcdTI3NENcXHUyNzRFXFx1Mjc1My1cXHUyNzU1XFx1Mjc1N1xcdTI3OTUtXFx1Mjc5N1xcdTI3QjBcXHUyN0JGXFx1MkIxQlxcdTJCMUNcXHUyQjUwXFx1MkI1NV18XFx1RDgzQ1tcXHVEQzA0XFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY3Q1xcdURGN0UtXFx1REY5M1xcdURGQTAtXFx1REZDQVxcdURGQ0YtXFx1REZEM1xcdURGRTAtXFx1REZGMFxcdURGRjRcXHVERkY4LVxcdURGRkZdfFxcdUQ4M0RbXFx1REMwMC1cXHVEQzNFXFx1REM0MFxcdURDNDItXFx1RENGQ1xcdURDRkYtXFx1REQzRFxcdURENEItXFx1REQ0RVxcdURENTAtXFx1REQ2N1xcdUREN0FcXHVERDk1XFx1REQ5NlxcdUREQTRcXHVEREZCLVxcdURFNEZcXHVERTgwLVxcdURFQzVcXHVERUNDXFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSl8KD86WyNcXCowLTlcXHhBOVxceEFFXFx1MjAzQ1xcdTIwNDlcXHUyMTIyXFx1MjEzOVxcdTIxOTQtXFx1MjE5OVxcdTIxQTlcXHUyMUFBXFx1MjMxQVxcdTIzMUJcXHUyMzI4XFx1MjNDRlxcdTIzRTktXFx1MjNGM1xcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQi1cXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjFEXFx1MjYyMFxcdTI2MjJcXHUyNjIzXFx1MjYyNlxcdTI2MkFcXHUyNjJFXFx1MjYyRlxcdTI2MzgtXFx1MjYzQVxcdTI2NDBcXHUyNjQyXFx1MjY0OC1cXHUyNjUzXFx1MjY1RlxcdTI2NjBcXHUyNjYzXFx1MjY2NVxcdTI2NjZcXHUyNjY4XFx1MjY3QlxcdTI2N0VcXHUyNjdGXFx1MjY5Mi1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTFcXHUyNkE3XFx1MjZBQVxcdTI2QUJcXHUyNkIwXFx1MjZCMVxcdTI2QkRcXHUyNkJFXFx1MjZDNFxcdTI2QzVcXHUyNkM4XFx1MjZDRVxcdTI2Q0ZcXHUyNkQxXFx1MjZEM1xcdTI2RDRcXHUyNkU5XFx1MjZFQVxcdTI2RjAtXFx1MjZGNVxcdTI2RjctXFx1MjZGQVxcdTI2RkRcXHUyNzAyXFx1MjcwNVxcdTI3MDgtXFx1MjcwRFxcdTI3MEZcXHUyNzEyXFx1MjcxNFxcdTI3MTZcXHUyNzFEXFx1MjcyMVxcdTI3MjhcXHUyNzMzXFx1MjczNFxcdTI3NDRcXHUyNzQ3XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzU3XFx1Mjc2M1xcdTI3NjRcXHUyNzk1LVxcdTI3OTdcXHUyN0ExXFx1MjdCMFxcdTI3QkZcXHUyOTM0XFx1MjkzNVxcdTJCMDUtXFx1MkIwN1xcdTJCMUJcXHUyQjFDXFx1MkI1MFxcdTJCNTVcXHUzMDMwXFx1MzAzRFxcdTMyOTdcXHUzMjk5XXxcXHVEODNDW1xcdURDMDRcXHVEQ0NGXFx1REQ3MFxcdURENzFcXHVERDdFXFx1REQ3RlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVEREU2LVxcdURERkZcXHVERTAxXFx1REUwMlxcdURFMUFcXHVERTJGXFx1REUzMi1cXHVERTNBXFx1REU1MFxcdURFNTFcXHVERjAwLVxcdURGMjFcXHVERjI0LVxcdURGOTNcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUUtXFx1REZGMFxcdURGRjMtXFx1REZGNVxcdURGRjctXFx1REZGRl18XFx1RDgzRFtcXHVEQzAwLVxcdURDRkRcXHVEQ0ZGLVxcdUREM0RcXHVERDQ5LVxcdURENEVcXHVERDUwLVxcdURENjdcXHVERDZGXFx1REQ3MFxcdURENzMtXFx1REQ3QVxcdUREODdcXHVERDhBLVxcdUREOERcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVEREE0XFx1RERBNVxcdUREQThcXHVEREIxXFx1RERCMlxcdUREQkNcXHVEREMyLVxcdUREQzRcXHVEREQxLVxcdURERDNcXHVERERDLVxcdUREREVcXHVEREUxXFx1RERFM1xcdURERThcXHVEREVGXFx1RERGM1xcdURERkEtXFx1REU0RlxcdURFODAtXFx1REVDNVxcdURFQ0ItXFx1REVEMlxcdURFRDUtXFx1REVEN1xcdURFRTAtXFx1REVFNVxcdURFRTlcXHVERUVCXFx1REVFQ1xcdURFRjBcXHVERUYzLVxcdURFRkNcXHVERkUwLVxcdURGRUJdfFxcdUQ4M0VbXFx1REQwQy1cXHVERDNBXFx1REQzQy1cXHVERDQ1XFx1REQ0Ny1cXHVERDc4XFx1REQ3QS1cXHVERENCXFx1RERDRC1cXHVEREZGXFx1REU3MC1cXHVERTc0XFx1REU3OC1cXHVERTdBXFx1REU4MC1cXHVERTg2XFx1REU5MC1cXHVERUE4XFx1REVCMC1cXHVERUI2XFx1REVDMC1cXHVERUMyXFx1REVEMC1cXHVERUQ2XSlcXHVGRTBGfCg/OltcXHUyNjFEXFx1MjZGOVxcdTI3MEEtXFx1MjcwRF18XFx1RDgzQ1tcXHVERjg1XFx1REZDMi1cXHVERkM0XFx1REZDN1xcdURGQ0EtXFx1REZDQ118XFx1RDgzRFtcXHVEQzQyXFx1REM0M1xcdURDNDYtXFx1REM1MFxcdURDNjYtXFx1REM3OFxcdURDN0NcXHVEQzgxLVxcdURDODNcXHVEQzg1LVxcdURDODdcXHVEQzhGXFx1REM5MVxcdURDQUFcXHVERDc0XFx1REQ3NVxcdUREN0FcXHVERDkwXFx1REQ5NVxcdUREOTZcXHVERTQ1LVxcdURFNDdcXHVERTRCLVxcdURFNEZcXHVERUEzXFx1REVCNC1cXHVERUI2XFx1REVDMFxcdURFQ0NdfFxcdUQ4M0VbXFx1REQwQ1xcdUREMEZcXHVERDE4LVxcdUREMUZcXHVERDI2XFx1REQzMC1cXHVERDM5XFx1REQzQy1cXHVERDNFXFx1REQ3N1xcdUREQjVcXHVEREI2XFx1RERCOFxcdUREQjlcXHVEREJCXFx1RERDRC1cXHVERENGXFx1REREMS1cXHVEREREXSkvZ307Y29uc3QgRkQ9Tyh1RCk7ZnVuY3Rpb24gcChlLHU9e30pe2lmKHR5cGVvZiBlIT1cInN0cmluZ1wifHxlLmxlbmd0aD09PTB8fCh1PXthbWJpZ3VvdXNJc05hcnJvdzohMCwuLi51fSxlPVQoZSksZS5sZW5ndGg9PT0wKSlyZXR1cm4gMDtlPWUucmVwbGFjZShGRCgpLFwiICBcIik7Y29uc3QgRj11LmFtYmlndW91c0lzTmFycm93PzE6MjtsZXQgdD0wO2Zvcihjb25zdCBzIG9mIGUpe2NvbnN0IGk9cy5jb2RlUG9pbnRBdCgwKTtpZihpPD0zMXx8aT49MTI3JiZpPD0xNTl8fGk+PTc2OCYmaTw9ODc5KWNvbnRpbnVlO3N3aXRjaChERC5lYXN0QXNpYW5XaWR0aChzKSl7Y2FzZVwiRlwiOmNhc2VcIldcIjp0Kz0yO2JyZWFrO2Nhc2VcIkFcIjp0Kz1GO2JyZWFrO2RlZmF1bHQ6dCs9MTt9fXJldHVybiB0fWNvbnN0IG09MTAsTD0oZT0wKT0+dT0+YFxceDFCWyR7dStlfW1gLFc9KGU9MCk9PnU9PmBcXHgxQlskezM4K2V9OzU7JHt1fW1gLE49KGU9MCk9Pih1LEYsdCk9PmBcXHgxQlskezM4K2V9OzI7JHt1fTske0Z9OyR7dH1tYCxyPXttb2RpZmllcjp7cmVzZXQ6WzAsMF0sYm9sZDpbMSwyMl0sZGltOlsyLDIyXSxpdGFsaWM6WzMsMjNdLHVuZGVybGluZTpbNCwyNF0sb3ZlcmxpbmU6WzUzLDU1XSxpbnZlcnNlOls3LDI3XSxoaWRkZW46WzgsMjhdLHN0cmlrZXRocm91Z2g6WzksMjldfSxjb2xvcjp7YmxhY2s6WzMwLDM5XSxyZWQ6WzMxLDM5XSxncmVlbjpbMzIsMzldLHllbGxvdzpbMzMsMzldLGJsdWU6WzM0LDM5XSxtYWdlbnRhOlszNSwzOV0sY3lhbjpbMzYsMzldLHdoaXRlOlszNywzOV0sYmxhY2tCcmlnaHQ6WzkwLDM5XSxncmF5Ols5MCwzOV0sZ3JleTpbOTAsMzldLHJlZEJyaWdodDpbOTEsMzldLGdyZWVuQnJpZ2h0Ols5MiwzOV0seWVsbG93QnJpZ2h0Ols5MywzOV0sYmx1ZUJyaWdodDpbOTQsMzldLG1hZ2VudGFCcmlnaHQ6Wzk1LDM5XSxjeWFuQnJpZ2h0Ols5NiwzOV0sd2hpdGVCcmlnaHQ6Wzk3LDM5XX0sYmdDb2xvcjp7YmdCbGFjazpbNDAsNDldLGJnUmVkOls0MSw0OV0sYmdHcmVlbjpbNDIsNDldLGJnWWVsbG93Ols0Myw0OV0sYmdCbHVlOls0NCw0OV0sYmdNYWdlbnRhOls0NSw0OV0sYmdDeWFuOls0Niw0OV0sYmdXaGl0ZTpbNDcsNDldLGJnQmxhY2tCcmlnaHQ6WzEwMCw0OV0sYmdHcmF5OlsxMDAsNDldLGJnR3JleTpbMTAwLDQ5XSxiZ1JlZEJyaWdodDpbMTAxLDQ5XSxiZ0dyZWVuQnJpZ2h0OlsxMDIsNDldLGJnWWVsbG93QnJpZ2h0OlsxMDMsNDldLGJnQmx1ZUJyaWdodDpbMTA0LDQ5XSxiZ01hZ2VudGFCcmlnaHQ6WzEwNSw0OV0sYmdDeWFuQnJpZ2h0OlsxMDYsNDldLGJnV2hpdGVCcmlnaHQ6WzEwNyw0OV19fTtPYmplY3Qua2V5cyhyLm1vZGlmaWVyKTtjb25zdCBlRD1PYmplY3Qua2V5cyhyLmNvbG9yKSx0RD1PYmplY3Qua2V5cyhyLmJnQ29sb3IpO1suLi5lRCwuLi50RF07ZnVuY3Rpb24gc0QoKXtjb25zdCBlPW5ldyBNYXA7Zm9yKGNvbnN0W3UsRl1vZiBPYmplY3QuZW50cmllcyhyKSl7Zm9yKGNvbnN0W3Qsc11vZiBPYmplY3QuZW50cmllcyhGKSlyW3RdPXtvcGVuOmBcXHgxQlske3NbMF19bWAsY2xvc2U6YFxceDFCWyR7c1sxXX1tYH0sRlt0XT1yW3RdLGUuc2V0KHNbMF0sc1sxXSk7T2JqZWN0LmRlZmluZVByb3BlcnR5KHIsdSx7dmFsdWU6RixlbnVtZXJhYmxlOiExfSk7fXJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkocixcImNvZGVzXCIse3ZhbHVlOmUsZW51bWVyYWJsZTohMX0pLHIuY29sb3IuY2xvc2U9XCJcXHgxQlszOW1cIixyLmJnQ29sb3IuY2xvc2U9XCJcXHgxQls0OW1cIixyLmNvbG9yLmFuc2k9TCgpLHIuY29sb3IuYW5zaTI1Nj1XKCksci5jb2xvci5hbnNpMTZtPU4oKSxyLmJnQ29sb3IuYW5zaT1MKG0pLHIuYmdDb2xvci5hbnNpMjU2PVcobSksci5iZ0NvbG9yLmFuc2kxNm09TihtKSxPYmplY3QuZGVmaW5lUHJvcGVydGllcyhyLHtyZ2JUb0Fuc2kyNTY6e3ZhbHVlOih1LEYsdCk9PnU9PT1GJiZGPT09dD91PDg/MTY6dT4yNDg/MjMxOk1hdGgucm91bmQoKHUtOCkvMjQ3KjI0KSsyMzI6MTYrMzYqTWF0aC5yb3VuZCh1LzI1NSo1KSs2Kk1hdGgucm91bmQoRi8yNTUqNSkrTWF0aC5yb3VuZCh0LzI1NSo1KSxlbnVtZXJhYmxlOiExfSxoZXhUb1JnYjp7dmFsdWU6dT0+e2NvbnN0IEY9L1thLWZcXGRdezZ9fFthLWZcXGRdezN9L2kuZXhlYyh1LnRvU3RyaW5nKDE2KSk7aWYoIUYpcmV0dXJuIFswLDAsMF07bGV0W3RdPUY7dC5sZW5ndGg9PT0zJiYodD1bLi4udF0ubWFwKGk9PmkraSkuam9pbihcIlwiKSk7Y29uc3Qgcz1OdW1iZXIucGFyc2VJbnQodCwxNik7cmV0dXJuIFtzPj4xNiYyNTUscz4+OCYyNTUscyYyNTVdfSxlbnVtZXJhYmxlOiExfSxoZXhUb0Fuc2kyNTY6e3ZhbHVlOnU9PnIucmdiVG9BbnNpMjU2KC4uLnIuaGV4VG9SZ2IodSkpLGVudW1lcmFibGU6ITF9LGFuc2kyNTZUb0Fuc2k6e3ZhbHVlOnU9PntpZih1PDgpcmV0dXJuIDMwK3U7aWYodTwxNilyZXR1cm4gOTArKHUtOCk7bGV0IEYsdCxzO2lmKHU+PTIzMilGPSgodS0yMzIpKjEwKzgpLzI1NSx0PUYscz1GO2Vsc2Uge3UtPTE2O2NvbnN0IEM9dSUzNjtGPU1hdGguZmxvb3IodS8zNikvNSx0PU1hdGguZmxvb3IoQy82KS81LHM9QyU2LzU7fWNvbnN0IGk9TWF0aC5tYXgoRix0LHMpKjI7aWYoaT09PTApcmV0dXJuIDMwO2xldCBEPTMwKyhNYXRoLnJvdW5kKHMpPDwyfE1hdGgucm91bmQodCk8PDF8TWF0aC5yb3VuZChGKSk7cmV0dXJuIGk9PT0yJiYoRCs9NjApLER9LGVudW1lcmFibGU6ITF9LHJnYlRvQW5zaTp7dmFsdWU6KHUsRix0KT0+ci5hbnNpMjU2VG9BbnNpKHIucmdiVG9BbnNpMjU2KHUsRix0KSksZW51bWVyYWJsZTohMX0saGV4VG9BbnNpOnt2YWx1ZTp1PT5yLmFuc2kyNTZUb0Fuc2koci5oZXhUb0Fuc2kyNTYodSkpLGVudW1lcmFibGU6ITF9fSkscn1jb25zdCBpRD1zRCgpLHY9bmV3IFNldChbXCJcXHgxQlwiLFwiXFx4OUJcIl0pLENEPTM5LHc9XCJcXHgwN1wiLEk9XCJbXCIsckQ9XCJdXCIsUj1cIm1cIix5PWAke3JEfTg7O2AsVj1lPT5gJHt2LnZhbHVlcygpLm5leHQoKS52YWx1ZX0ke0l9JHtlfSR7Un1gLHo9ZT0+YCR7di52YWx1ZXMoKS5uZXh0KCkudmFsdWV9JHt5fSR7ZX0ke3d9YCxFRD1lPT5lLnNwbGl0KFwiIFwiKS5tYXAodT0+cCh1KSksXz0oZSx1LEYpPT57Y29uc3QgdD1bLi4udV07bGV0IHM9ITEsaT0hMSxEPXAoVChlW2UubGVuZ3RoLTFdKSk7Zm9yKGNvbnN0W0Msb11vZiB0LmVudHJpZXMoKSl7Y29uc3QgRT1wKG8pO2lmKEQrRTw9Rj9lW2UubGVuZ3RoLTFdKz1vOihlLnB1c2gobyksRD0wKSx2LmhhcyhvKSYmKHM9ITAsaT10LnNsaWNlKEMrMSkuam9pbihcIlwiKS5zdGFydHNXaXRoKHkpKSxzKXtpP289PT13JiYocz0hMSxpPSExKTpvPT09UiYmKHM9ITEpO2NvbnRpbnVlfUQrPUUsRD09PUYmJkM8dC5sZW5ndGgtMSYmKGUucHVzaChcIlwiKSxEPTApO30hRCYmZVtlLmxlbmd0aC0xXS5sZW5ndGg+MCYmZS5sZW5ndGg+MSYmKGVbZS5sZW5ndGgtMl0rPWUucG9wKCkpO30sbkQ9ZT0+e2NvbnN0IHU9ZS5zcGxpdChcIiBcIik7bGV0IEY9dS5sZW5ndGg7Zm9yKDtGPjAmJiEocCh1W0YtMV0pPjApOylGLS07cmV0dXJuIEY9PT11Lmxlbmd0aD9lOnUuc2xpY2UoMCxGKS5qb2luKFwiIFwiKSt1LnNsaWNlKEYpLmpvaW4oXCJcIil9LG9EPShlLHUsRj17fSk9PntpZihGLnRyaW0hPT0hMSYmZS50cmltKCk9PT1cIlwiKXJldHVybiBcIlwiO2xldCB0PVwiXCIscyxpO2NvbnN0IEQ9RUQoZSk7bGV0IEM9W1wiXCJdO2Zvcihjb25zdFtFLGFdb2YgZS5zcGxpdChcIiBcIikuZW50cmllcygpKXtGLnRyaW0hPT0hMSYmKENbQy5sZW5ndGgtMV09Q1tDLmxlbmd0aC0xXS50cmltU3RhcnQoKSk7bGV0IG49cChDW0MubGVuZ3RoLTFdKTtpZihFIT09MCYmKG4+PXUmJihGLndvcmRXcmFwPT09ITF8fEYudHJpbT09PSExKSYmKEMucHVzaChcIlwiKSxuPTApLChuPjB8fEYudHJpbT09PSExKSYmKENbQy5sZW5ndGgtMV0rPVwiIFwiLG4rKykpLEYuaGFyZCYmRFtFXT51KXtjb25zdCBCPXUtbixmPTErTWF0aC5mbG9vcigoRFtFXS1CLTEpL3UpO01hdGguZmxvb3IoKERbRV0tMSkvdSk8ZiYmQy5wdXNoKFwiXCIpLF8oQyxhLHUpO2NvbnRpbnVlfWlmKG4rRFtFXT51JiZuPjAmJkRbRV0+MCl7aWYoRi53b3JkV3JhcD09PSExJiZuPHUpe18oQyxhLHUpO2NvbnRpbnVlfUMucHVzaChcIlwiKTt9aWYobitEW0VdPnUmJkYud29yZFdyYXA9PT0hMSl7XyhDLGEsdSk7Y29udGludWV9Q1tDLmxlbmd0aC0xXSs9YTt9Ri50cmltIT09ITEmJihDPUMubWFwKEU9Pm5EKEUpKSk7Y29uc3Qgbz1bLi4uQy5qb2luKGBcbmApXTtmb3IoY29uc3RbRSxhXW9mIG8uZW50cmllcygpKXtpZih0Kz1hLHYuaGFzKGEpKXtjb25zdHtncm91cHM6Qn09bmV3IFJlZ0V4cChgKD86XFxcXCR7SX0oPzxjb2RlPlxcXFxkKyltfFxcXFwke3l9KD88dXJpPi4qKSR7d30pYCkuZXhlYyhvLnNsaWNlKEUpLmpvaW4oXCJcIikpfHx7Z3JvdXBzOnt9fTtpZihCLmNvZGUhPT12b2lkIDApe2NvbnN0IGY9TnVtYmVyLnBhcnNlRmxvYXQoQi5jb2RlKTtzPWY9PT1DRD92b2lkIDA6Zjt9ZWxzZSBCLnVyaSE9PXZvaWQgMCYmKGk9Qi51cmkubGVuZ3RoPT09MD92b2lkIDA6Qi51cmkpO31jb25zdCBuPWlELmNvZGVzLmdldChOdW1iZXIocykpO29bRSsxXT09PWBcbmA/KGkmJih0Kz16KFwiXCIpKSxzJiZuJiYodCs9VihuKSkpOmE9PT1gXG5gJiYocyYmbiYmKHQrPVYocykpLGkmJih0Kz16KGkpKSk7fXJldHVybiB0fTtmdW5jdGlvbiBHKGUsdSxGKXtyZXR1cm4gU3RyaW5nKGUpLm5vcm1hbGl6ZSgpLnJlcGxhY2UoL1xcclxcbi9nLGBcbmApLnNwbGl0KGBcbmApLm1hcCh0PT5vRCh0LHUsRikpLmpvaW4oYFxuYCl9Y29uc3QgYUQ9W1widXBcIixcImRvd25cIixcImxlZnRcIixcInJpZ2h0XCIsXCJzcGFjZVwiLFwiZW50ZXJcIixcImNhbmNlbFwiXSxBPXthY3Rpb25zOm5ldyBTZXQoYUQpLGFsaWFzZXM6bmV3IE1hcChbW1wia1wiLFwidXBcIl0sW1wialwiLFwiZG93blwiXSxbXCJoXCIsXCJsZWZ0XCJdLFtcImxcIixcInJpZ2h0XCJdLFtcIlx1MDAwM1wiLFwiY2FuY2VsXCJdLFtcImVzY2FwZVwiLFwiY2FuY2VsXCJdXSl9O2Z1bmN0aW9uIGsoZSx1KXtpZih0eXBlb2YgZT09XCJzdHJpbmdcIilyZXR1cm4gQS5hbGlhc2VzLmdldChlKT09PXU7Zm9yKGNvbnN0IEYgb2YgZSlpZihGIT09dm9pZCAwJiZrKEYsdSkpcmV0dXJuICEwO3JldHVybiAhMX1mdW5jdGlvbiBoRChlLHUpe2lmKGU9PT11KXJldHVybjtjb25zdCBGPWUuc3BsaXQoYFxuYCksdD11LnNwbGl0KGBcbmApLHM9W107Zm9yKGxldCBpPTA7aTxNYXRoLm1heChGLmxlbmd0aCx0Lmxlbmd0aCk7aSsrKUZbaV0hPT10W2ldJiZzLnB1c2goaSk7cmV0dXJuIHN9Z2xvYmFsVGhpcy5wcm9jZXNzLnBsYXRmb3JtLnN0YXJ0c1dpdGgoXCJ3aW5cIik7Y29uc3QgJD1TeW1ib2woXCJjbGFjazpjYW5jZWxcIik7ZnVuY3Rpb24gZChlLHUpe2NvbnN0IEY9ZTtGLmlzVFRZJiZGLnNldFJhd01vZGUodSk7fXZhciBBRD1PYmplY3QuZGVmaW5lUHJvcGVydHkscEQ9KGUsdSxGKT0+dSBpbiBlP0FEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixsPShlLHUsRik9PihwRChlLHR5cGVvZiB1IT1cInN5bWJvbFwiP3UrXCJcIjp1LEYpLEYpO2NsYXNzIHh7Y29uc3RydWN0b3IodSxGPSEwKXtsKHRoaXMsXCJpbnB1dFwiKSxsKHRoaXMsXCJvdXRwdXRcIiksbCh0aGlzLFwiX2Fib3J0U2lnbmFsXCIpLGwodGhpcyxcInJsXCIpLGwodGhpcyxcIm9wdHNcIiksbCh0aGlzLFwiX3JlbmRlclwiKSxsKHRoaXMsXCJfdHJhY2tcIiwhMSksbCh0aGlzLFwiX3ByZXZGcmFtZVwiLFwiXCIpLGwodGhpcyxcIl9zdWJzY3JpYmVyc1wiLG5ldyBNYXApLGwodGhpcyxcIl9jdXJzb3JcIiwwKSxsKHRoaXMsXCJzdGF0ZVwiLFwiaW5pdGlhbFwiKSxsKHRoaXMsXCJlcnJvclwiLFwiXCIpLGwodGhpcyxcInZhbHVlXCIpO2NvbnN0e2lucHV0OnQ9c3RkaW4sb3V0cHV0OnM9c3Rkb3V0LHJlbmRlcjppLHNpZ25hbDpELC4uLkN9PXU7dGhpcy5vcHRzPUMsdGhpcy5vbktleXByZXNzPXRoaXMub25LZXlwcmVzcy5iaW5kKHRoaXMpLHRoaXMuY2xvc2U9dGhpcy5jbG9zZS5iaW5kKHRoaXMpLHRoaXMucmVuZGVyPXRoaXMucmVuZGVyLmJpbmQodGhpcyksdGhpcy5fcmVuZGVyPWkuYmluZCh0aGlzKSx0aGlzLl90cmFjaz1GLHRoaXMuX2Fib3J0U2lnbmFsPUQsdGhpcy5pbnB1dD10LHRoaXMub3V0cHV0PXM7fXVuc3Vic2NyaWJlKCl7dGhpcy5fc3Vic2NyaWJlcnMuY2xlYXIoKTt9c2V0U3Vic2NyaWJlcih1LEYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXTt0LnB1c2goRiksdGhpcy5fc3Vic2NyaWJlcnMuc2V0KHUsdCk7fW9uKHUsRil7dGhpcy5zZXRTdWJzY3JpYmVyKHUse2NiOkZ9KTt9b25jZSh1LEYpe3RoaXMuc2V0U3Vic2NyaWJlcih1LHtjYjpGLG9uY2U6ITB9KTt9ZW1pdCh1LC4uLkYpe2NvbnN0IHQ9dGhpcy5fc3Vic2NyaWJlcnMuZ2V0KHUpPz9bXSxzPVtdO2Zvcihjb25zdCBpIG9mIHQpaS5jYiguLi5GKSxpLm9uY2UmJnMucHVzaCgoKT0+dC5zcGxpY2UodC5pbmRleE9mKGkpLDEpKTtmb3IoY29uc3QgaSBvZiBzKWkoKTt9cHJvbXB0KCl7cmV0dXJuIG5ldyBQcm9taXNlKCh1LEYpPT57aWYodGhpcy5fYWJvcnRTaWduYWwpe2lmKHRoaXMuX2Fib3J0U2lnbmFsLmFib3J0ZWQpcmV0dXJuIHRoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCksdSgkKTt0aGlzLl9hYm9ydFNpZ25hbC5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIiwoKT0+e3RoaXMuc3RhdGU9XCJjYW5jZWxcIix0aGlzLmNsb3NlKCk7fSx7b25jZTohMH0pO31jb25zdCB0PW5ldyBXcml0ZVN0cmVhbSgwKTt0Ll93cml0ZT0ocyxpLEQpPT57dGhpcy5fdHJhY2smJih0aGlzLnZhbHVlPXRoaXMucmw/LmxpbmUucmVwbGFjZSgvXFx0L2csXCJcIiksdGhpcy5fY3Vyc29yPXRoaXMucmw/LmN1cnNvcj8/MCx0aGlzLmVtaXQoXCJ2YWx1ZVwiLHRoaXMudmFsdWUpKSxEKCk7fSx0aGlzLmlucHV0LnBpcGUodCksdGhpcy5ybD1nLmNyZWF0ZUludGVyZmFjZSh7aW5wdXQ6dGhpcy5pbnB1dCxvdXRwdXQ6dCx0YWJTaXplOjIscHJvbXB0OlwiXCIsZXNjYXBlQ29kZVRpbWVvdXQ6NTB9KSxnLmVtaXRLZXlwcmVzc0V2ZW50cyh0aGlzLmlucHV0LHRoaXMucmwpLHRoaXMucmwucHJvbXB0KCksdGhpcy5vcHRzLmluaXRpYWxWYWx1ZSE9PXZvaWQgMCYmdGhpcy5fdHJhY2smJnRoaXMucmwud3JpdGUodGhpcy5vcHRzLmluaXRpYWxWYWx1ZSksdGhpcy5pbnB1dC5vbihcImtleXByZXNzXCIsdGhpcy5vbktleXByZXNzKSxkKHRoaXMuaW5wdXQsITApLHRoaXMub3V0cHV0Lm9uKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLHRoaXMucmVuZGVyKCksdGhpcy5vbmNlKFwic3VibWl0XCIsKCk9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5zaG93KSx0aGlzLm91dHB1dC5vZmYoXCJyZXNpemVcIix0aGlzLnJlbmRlciksZCh0aGlzLmlucHV0LCExKSx1KHRoaXMudmFsdWUpO30pLHRoaXMub25jZShcImNhbmNlbFwiLCgpPT57dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3Iuc2hvdyksdGhpcy5vdXRwdXQub2ZmKFwicmVzaXplXCIsdGhpcy5yZW5kZXIpLGQodGhpcy5pbnB1dCwhMSksdSgkKTt9KTt9KX1vbktleXByZXNzKHUsRil7aWYodGhpcy5zdGF0ZT09PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksRj8ubmFtZSYmKCF0aGlzLl90cmFjayYmQS5hbGlhc2VzLmhhcyhGLm5hbWUpJiZ0aGlzLmVtaXQoXCJjdXJzb3JcIixBLmFsaWFzZXMuZ2V0KEYubmFtZSkpLEEuYWN0aW9ucy5oYXMoRi5uYW1lKSYmdGhpcy5lbWl0KFwiY3Vyc29yXCIsRi5uYW1lKSksdSYmKHUudG9Mb3dlckNhc2UoKT09PVwieVwifHx1LnRvTG93ZXJDYXNlKCk9PT1cIm5cIikmJnRoaXMuZW1pdChcImNvbmZpcm1cIix1LnRvTG93ZXJDYXNlKCk9PT1cInlcIiksdT09PVwiXHRcIiYmdGhpcy5vcHRzLnBsYWNlaG9sZGVyJiYodGhpcy52YWx1ZXx8KHRoaXMucmw/LndyaXRlKHRoaXMub3B0cy5wbGFjZWhvbGRlciksdGhpcy5lbWl0KFwidmFsdWVcIix0aGlzLm9wdHMucGxhY2Vob2xkZXIpKSksdSYmdGhpcy5lbWl0KFwia2V5XCIsdS50b0xvd2VyQ2FzZSgpKSxGPy5uYW1lPT09XCJyZXR1cm5cIil7aWYodGhpcy5vcHRzLnZhbGlkYXRlKXtjb25zdCB0PXRoaXMub3B0cy52YWxpZGF0ZSh0aGlzLnZhbHVlKTt0JiYodGhpcy5lcnJvcj10LHRoaXMuc3RhdGU9XCJlcnJvclwiLHRoaXMucmw/LndyaXRlKHRoaXMudmFsdWUpKTt9dGhpcy5zdGF0ZSE9PVwiZXJyb3JcIiYmKHRoaXMuc3RhdGU9XCJzdWJtaXRcIik7fWsoW3UsRj8ubmFtZSxGPy5zZXF1ZW5jZV0sXCJjYW5jZWxcIikmJih0aGlzLnN0YXRlPVwiY2FuY2VsXCIpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmVtaXQoXCJmaW5hbGl6ZVwiKSx0aGlzLnJlbmRlcigpLCh0aGlzLnN0YXRlPT09XCJzdWJtaXRcInx8dGhpcy5zdGF0ZT09PVwiY2FuY2VsXCIpJiZ0aGlzLmNsb3NlKCk7fWNsb3NlKCl7dGhpcy5pbnB1dC51bnBpcGUoKSx0aGlzLmlucHV0LnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIix0aGlzLm9uS2V5cHJlc3MpLHRoaXMub3V0cHV0LndyaXRlKGBcbmApLGQodGhpcy5pbnB1dCwhMSksdGhpcy5ybD8uY2xvc2UoKSx0aGlzLnJsPXZvaWQgMCx0aGlzLmVtaXQoYCR7dGhpcy5zdGF0ZX1gLHRoaXMudmFsdWUpLHRoaXMudW5zdWJzY3JpYmUoKTt9cmVzdG9yZUN1cnNvcigpe2NvbnN0IHU9Ryh0aGlzLl9wcmV2RnJhbWUscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pLnNwbGl0KGBcbmApLmxlbmd0aC0xO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoLTk5OSx1Ki0xKSk7fXJlbmRlcigpe2NvbnN0IHU9Ryh0aGlzLl9yZW5kZXIodGhpcyk/P1wiXCIscHJvY2Vzcy5zdGRvdXQuY29sdW1ucyx7aGFyZDohMH0pO2lmKHUhPT10aGlzLl9wcmV2RnJhbWUpe2lmKHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIil0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5oaWRlKTtlbHNlIHtjb25zdCBGPWhEKHRoaXMuX3ByZXZGcmFtZSx1KTtpZih0aGlzLnJlc3RvcmVDdXJzb3IoKSxGJiZGPy5sZW5ndGg9PT0xKXtjb25zdCB0PUZbMF07dGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHQpKSx0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmxpbmVzKDEpKTtjb25zdCBzPXUuc3BsaXQoYFxuYCk7dGhpcy5vdXRwdXQud3JpdGUoc1t0XSksdGhpcy5fcHJldkZyYW1lPXUsdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5jdXJzb3IubW92ZSgwLHMubGVuZ3RoLXQtMSkpO3JldHVybn1pZihGJiZGPy5sZW5ndGg+MSl7Y29uc3QgdD1GWzBdO3RoaXMub3V0cHV0LndyaXRlKHNyY0V4cG9ydHMuY3Vyc29yLm1vdmUoMCx0KSksdGhpcy5vdXRwdXQud3JpdGUoc3JjRXhwb3J0cy5lcmFzZS5kb3duKCkpO2NvbnN0IHM9dS5zcGxpdChgXG5gKS5zbGljZSh0KTt0aGlzLm91dHB1dC53cml0ZShzLmpvaW4oYFxuYCkpLHRoaXMuX3ByZXZGcmFtZT11O3JldHVybn10aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmVyYXNlLmRvd24oKSk7fXRoaXMub3V0cHV0LndyaXRlKHUpLHRoaXMuc3RhdGU9PT1cImluaXRpYWxcIiYmKHRoaXMuc3RhdGU9XCJhY3RpdmVcIiksdGhpcy5fcHJldkZyYW1lPXU7fX19Y2xhc3MgZkQgZXh0ZW5kcyB4e2dldCBjdXJzb3IoKXtyZXR1cm4gdGhpcy52YWx1ZT8wOjF9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLmN1cnNvcj09PTB9Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSksdGhpcy52YWx1ZT0hIXUuaW5pdGlhbFZhbHVlLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57dGhpcy52YWx1ZT10aGlzLl92YWx1ZTt9KSx0aGlzLm9uKFwiY29uZmlybVwiLEY9Pnt0aGlzLm91dHB1dC53cml0ZShzcmNFeHBvcnRzLmN1cnNvci5tb3ZlKDAsLTEpKSx0aGlzLnZhbHVlPUYsdGhpcy5zdGF0ZT1cInN1Ym1pdFwiLHRoaXMuY2xvc2UoKTt9KSx0aGlzLm9uKFwiY3Vyc29yXCIsKCk9Pnt0aGlzLnZhbHVlPSF0aGlzLnZhbHVlO30pO319dmFyIGJEPU9iamVjdC5kZWZpbmVQcm9wZXJ0eSxtRD0oZSx1LEYpPT51IGluIGU/YkQoZSx1LHtlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMCx2YWx1ZTpGfSk6ZVt1XT1GLFk9KGUsdSxGKT0+KG1EKGUsdHlwZW9mIHUhPVwic3ltYm9sXCI/dStcIlwiOnUsRiksRik7bGV0IHdEPWNsYXNzIGV4dGVuZHMgeHtjb25zdHJ1Y3Rvcih1KXtzdXBlcih1LCExKSxZKHRoaXMsXCJvcHRpb25zXCIpLFkodGhpcyxcImN1cnNvclwiLDApLHRoaXMub3B0aW9ucz11Lm9wdGlvbnMsdGhpcy52YWx1ZT1bLi4udS5pbml0aWFsVmFsdWVzPz9bXV0sdGhpcy5jdXJzb3I9TWF0aC5tYXgodGhpcy5vcHRpb25zLmZpbmRJbmRleCgoe3ZhbHVlOkZ9KT0+Rj09PXUuY3Vyc29yQXQpLDApLHRoaXMub24oXCJrZXlcIixGPT57Rj09PVwiYVwiJiZ0aGlzLnRvZ2dsZUFsbCgpO30pLHRoaXMub24oXCJjdXJzb3JcIixGPT57c3dpdGNoKEYpe2Nhc2VcImxlZnRcIjpjYXNlXCJ1cFwiOnRoaXMuY3Vyc29yPXRoaXMuY3Vyc29yPT09MD90aGlzLm9wdGlvbnMubGVuZ3RoLTE6dGhpcy5jdXJzb3ItMTticmVhaztjYXNlXCJkb3duXCI6Y2FzZVwicmlnaHRcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PXRoaXMub3B0aW9ucy5sZW5ndGgtMT8wOnRoaXMuY3Vyc29yKzE7YnJlYWs7Y2FzZVwic3BhY2VcIjp0aGlzLnRvZ2dsZVZhbHVlKCk7YnJlYWt9fSk7fWdldCBfdmFsdWUoKXtyZXR1cm4gdGhpcy5vcHRpb25zW3RoaXMuY3Vyc29yXS52YWx1ZX10b2dnbGVBbGwoKXtjb25zdCB1PXRoaXMudmFsdWUubGVuZ3RoPT09dGhpcy5vcHRpb25zLmxlbmd0aDt0aGlzLnZhbHVlPXU/W106dGhpcy5vcHRpb25zLm1hcChGPT5GLnZhbHVlKTt9dG9nZ2xlVmFsdWUoKXtjb25zdCB1PXRoaXMudmFsdWUuaW5jbHVkZXModGhpcy5fdmFsdWUpO3RoaXMudmFsdWU9dT90aGlzLnZhbHVlLmZpbHRlcihGPT5GIT09dGhpcy5fdmFsdWUpOlsuLi50aGlzLnZhbHVlLHRoaXMuX3ZhbHVlXTt9fTt2YXIgJEQ9T2JqZWN0LmRlZmluZVByb3BlcnR5LFNEPShlLHUsRik9PnUgaW4gZT8kRChlLHUse2VudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwLHZhbHVlOkZ9KTplW3VdPUYscT0oZSx1LEYpPT4oU0QoZSx0eXBlb2YgdSE9XCJzeW1ib2xcIj91K1wiXCI6dSxGKSxGKTtjbGFzcyBqRCBleHRlbmRzIHh7Y29uc3RydWN0b3IodSl7c3VwZXIodSwhMSkscSh0aGlzLFwib3B0aW9uc1wiKSxxKHRoaXMsXCJjdXJzb3JcIiwwKSx0aGlzLm9wdGlvbnM9dS5vcHRpb25zLHRoaXMuY3Vyc29yPXRoaXMub3B0aW9ucy5maW5kSW5kZXgoKHt2YWx1ZTpGfSk9PkY9PT11LmluaXRpYWxWYWx1ZSksdGhpcy5jdXJzb3I9PT0tMSYmKHRoaXMuY3Vyc29yPTApLHRoaXMuY2hhbmdlVmFsdWUoKSx0aGlzLm9uKFwiY3Vyc29yXCIsRj0+e3N3aXRjaChGKXtjYXNlXCJsZWZ0XCI6Y2FzZVwidXBcIjp0aGlzLmN1cnNvcj10aGlzLmN1cnNvcj09PTA/dGhpcy5vcHRpb25zLmxlbmd0aC0xOnRoaXMuY3Vyc29yLTE7YnJlYWs7Y2FzZVwiZG93blwiOmNhc2VcInJpZ2h0XCI6dGhpcy5jdXJzb3I9dGhpcy5jdXJzb3I9PT10aGlzLm9wdGlvbnMubGVuZ3RoLTE/MDp0aGlzLmN1cnNvcisxO2JyZWFrfXRoaXMuY2hhbmdlVmFsdWUoKTt9KTt9Z2V0IF92YWx1ZSgpe3JldHVybiB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdfWNoYW5nZVZhbHVlKCl7dGhpcy52YWx1ZT10aGlzLl92YWx1ZS52YWx1ZTt9fXZhciBQRD1PYmplY3QuZGVmaW5lUHJvcGVydHksTEQ9KGUsdSxGKT0+dSBpbiBlP1BEKGUsdSx7ZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITAsdmFsdWU6Rn0pOmVbdV09RixXRD0oZSx1LEYpPT4oTEQoZSx1K1wiXCIsRiksRik7Y2xhc3MgTkQgZXh0ZW5kcyB4e2NvbnN0cnVjdG9yKHUpe3N1cGVyKHUpLFdEKHRoaXMsXCJ2YWx1ZVdpdGhDdXJzb3JcIixcIlwiKSx0aGlzLm9uKFwiZmluYWxpemVcIiwoKT0+e3RoaXMudmFsdWV8fCh0aGlzLnZhbHVlPXUuZGVmYXVsdFZhbHVlKSx0aGlzLnZhbHVlV2l0aEN1cnNvcj10aGlzLnZhbHVlO30pLHRoaXMub24oXCJ2YWx1ZVwiLCgpPT57aWYodGhpcy5jdXJzb3I+PXRoaXMudmFsdWUubGVuZ3RoKXRoaXMudmFsdWVXaXRoQ3Vyc29yPWAke3RoaXMudmFsdWV9JHtjLmludmVyc2UoYy5oaWRkZW4oXCJfXCIpKX1gO2Vsc2Uge2NvbnN0IEY9dGhpcy52YWx1ZS5zbGljZSgwLHRoaXMuY3Vyc29yKSx0PXRoaXMudmFsdWUuc2xpY2UodGhpcy5jdXJzb3IpO3RoaXMudmFsdWVXaXRoQ3Vyc29yPWAke0Z9JHtjLmludmVyc2UodFswXSl9JHt0LnNsaWNlKDEpfWA7fX0pO31nZXQgY3Vyc29yKCl7cmV0dXJuIHRoaXMuX2N1cnNvcn19XG5cbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBTX1NURVBfQUNUSVZFID0gcyhcIlxcdTI3NkZcIiwgXCI+XCIpO1xuY29uc3QgU19TVEVQX0NBTkNFTCA9IHMoXCJcXHUyNUEwXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9FUlJPUiA9IHMoXCJcXHUyNUIyXCIsIFwieFwiKTtcbmNvbnN0IFNfU1RFUF9TVUJNSVQgPSBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIik7XG5jb25zdCBTX0JBUiA9IFwiXCI7XG5jb25zdCBTX0JBUl9FTkQgPSBcIlwiO1xuY29uc3QgU19SQURJT19BQ1RJVkUgPSBzKFwiXFx1MjVDRlwiLCBcIj5cIik7XG5jb25zdCBTX1JBRElPX0lOQUNUSVZFID0gcyhcIlxcdTI1Q0JcIiwgXCIgXCIpO1xuY29uc3QgU19DSEVDS0JPWF9BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIltcXHUyMDIyXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfU0VMRUNURUQgPSBzKFwiXFx1MjVGQ1wiLCBcIlsrXVwiKTtcbmNvbnN0IFNfQ0hFQ0tCT1hfSU5BQ1RJVkUgPSBzKFwiXFx1MjVGQlwiLCBcIlsgXVwiKTtcbmNvbnN0IHN5bWJvbCA9IChzdGF0ZSkgPT4ge1xuICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgY2FzZSBcImluaXRpYWxcIjpcbiAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMuY3lhbihTX1NURVBfQUNUSVZFKTtcbiAgICB9XG4gICAgY2FzZSBcImNhbmNlbFwiOiB7XG4gICAgICByZXR1cm4gY29sb3JzLnJlZChTX1NURVBfQ0FOQ0VMKTtcbiAgICB9XG4gICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgIHJldHVybiBjb2xvcnMueWVsbG93KFNfU1RFUF9FUlJPUik7XG4gICAgfVxuICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgcmV0dXJuIGNvbG9ycy5ncmVlbihTX1NURVBfU1VCTUlUKTtcbiAgICB9XG4gIH1cbn07XG5jb25zdCB0ZXh0ID0gKG9wdHMpID0+IHtcbiAgcmV0dXJuIG5ldyBORCh7XG4gICAgdmFsaWRhdGU6IG9wdHMudmFsaWRhdGUsXG4gICAgcGxhY2Vob2xkZXI6IG9wdHMucGxhY2Vob2xkZXIsXG4gICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHRWYWx1ZSxcbiAgICBpbml0aWFsVmFsdWU6IG9wdHMuaW5pdGlhbFZhbHVlLFxuICAgIHJlbmRlcigpIHtcbiAgICAgIGNvbnN0IHRpdGxlID0gYCR7Y29sb3JzLmdyYXkoU19CQVIpfVxuJHtzeW1ib2wodGhpcy5zdGF0ZSl9ICR7b3B0cy5tZXNzYWdlfVxuYDtcbiAgICAgIGNvbnN0IHBsYWNlaG9sZGVyID0gb3B0cy5wbGFjZWhvbGRlciA/IGNvbG9ycy5pbnZlcnNlKG9wdHMucGxhY2Vob2xkZXJbMF0pICsgY29sb3JzLmRpbShvcHRzLnBsYWNlaG9sZGVyLnNsaWNlKDEpKSA6IGNvbG9ycy5pbnZlcnNlKGNvbG9ycy5oaWRkZW4oXCJfXCIpKTtcbiAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy52YWx1ZSA/IHRoaXMudmFsdWVXaXRoQ3Vyc29yIDogcGxhY2Vob2xkZXI7XG4gICAgICBzd2l0Y2ggKHRoaXMuc3RhdGUpIHtcbiAgICAgICAgY2FzZSBcImVycm9yXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGUudHJpbSgpfVxuJHtjb2xvcnMueWVsbG93KFxuICAgICAgICAgICAgU19CQVJcbiAgICAgICAgICApfSAke3ZhbHVlfVxuJHtjb2xvcnMueWVsbG93KFNfQkFSX0VORCl9ICR7Y29sb3JzLnllbGxvdyhcbiAgICAgICAgICAgIHRoaXMuZXJyb3JcbiAgICAgICAgICApfVxuYDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbShcbiAgICAgICAgICAgIHRoaXMudmFsdWUgfHwgb3B0cy5wbGFjZWhvbGRlclxuICAgICAgICAgICl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHRoaXMudmFsdWUgPz8gXCJcIilcbiAgICAgICAgICApfSR7dGhpcy52YWx1ZT8udHJpbSgpID8gXCJcXG5cIiArIGNvbG9ycy5ncmF5KFNfQkFSKSA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3ZhbHVlfVxuJHtjb2xvcnMuY3lhbihcbiAgICAgICAgICAgIFNfQkFSX0VORFxuICAgICAgICAgICl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBjb25maXJtID0gKG9wdHMpID0+IHtcbiAgY29uc3QgYWN0aXZlID0gb3B0cy5hY3RpdmUgPz8gXCJZZXNcIjtcbiAgY29uc3QgaW5hY3RpdmUgPSBvcHRzLmluYWN0aXZlID8/IFwiTm9cIjtcbiAgcmV0dXJuIG5ldyBmRCh7XG4gICAgYWN0aXZlLFxuICAgIGluYWN0aXZlLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUgPz8gdHJ1ZSxcbiAgICByZW5kZXIoKSB7XG4gICAgICBjb25zdCB0aXRsZSA9IGAke2NvbG9ycy5ncmF5KFNfQkFSKX1cbiR7c3ltYm9sKHRoaXMuc3RhdGUpfSAke29wdHMubWVzc2FnZX1cbmA7XG4gICAgICBjb25zdCB2YWx1ZSA9IHRoaXMudmFsdWUgPyBhY3RpdmUgOiBpbmFjdGl2ZTtcbiAgICAgIHN3aXRjaCAodGhpcy5zdGF0ZSkge1xuICAgICAgICBjYXNlIFwic3VibWl0XCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLmRpbSh2YWx1ZSl9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiY2FuY2VsXCI6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuZ3JheShTX0JBUil9ICR7Y29sb3JzLnN0cmlrZXRocm91Z2goXG4gICAgICAgICAgICBjb2xvcnMuZGltKHZhbHVlKVxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy52YWx1ZSA/IGAke2NvbG9ycy5ncmVlbihTX1JBRElPX0FDVElWRSl9ICR7YWN0aXZlfWAgOiBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oYWN0aXZlKX1gfSAke2NvbG9ycy5kaW0oXCIvXCIpfSAke3RoaXMudmFsdWUgPyBgJHtjb2xvcnMuZGltKFNfUkFESU9fSU5BQ1RJVkUpfSAke2NvbG9ycy5kaW0oaW5hY3RpdmUpfWAgOiBgJHtjb2xvcnMuZ3JlZW4oU19SQURJT19BQ1RJVkUpfSAke2luYWN0aXZlfWB9XG4ke2NvbG9ycy5jeWFuKFNfQkFSX0VORCl9XG5gO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9KS5wcm9tcHQoKTtcbn07XG5jb25zdCBzZWxlY3QgPSAob3B0cykgPT4ge1xuICBjb25zdCBvcHQgPSAob3B0aW9uLCBzdGF0ZSkgPT4ge1xuICAgIGNvbnN0IGxhYmVsID0gb3B0aW9uLmxhYmVsID8/IFN0cmluZyhvcHRpb24udmFsdWUpO1xuICAgIHN3aXRjaCAoc3RhdGUpIHtcbiAgICAgIGNhc2UgXCJhY3RpdmVcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmdyZWVuKFNfUkFESU9fQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZGltKGxhYmVsKX1gO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNhbmNlbGxlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuc3RyaWtldGhyb3VnaChjb2xvcnMuZGltKGxhYmVsKSl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19SQURJT19JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyBqRCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsVmFsdWUsXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJzZWxlY3RlZFwiXG4gICAgICAgICAgKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHtvcHQoXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNbdGhpcy5jdXJzb3JdLFxuICAgICAgICAgICAgXCJjYW5jZWxsZWRcIlxuICAgICAgICAgICl9XG4ke2NvbG9ycy5ncmF5KFNfQkFSKX1gO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6IHtcbiAgICAgICAgICByZXR1cm4gYCR7dGl0bGV9JHtjb2xvcnMuY3lhbihTX0JBUil9ICR7dGhpcy5vcHRpb25zLm1hcChcbiAgICAgICAgICAgIChvcHRpb24sIGkpID0+IG9wdChvcHRpb24sIGkgPT09IHRoaXMuY3Vyc29yID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIilcbiAgICAgICAgICApLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcbmNvbnN0IG11bHRpc2VsZWN0ID0gKG9wdHMpID0+IHtcbiAgY29uc3Qgb3B0ID0gKG9wdGlvbiwgc3RhdGUpID0+IHtcbiAgICBjb25zdCBsYWJlbCA9IG9wdGlvbi5sYWJlbCA/PyBTdHJpbmcob3B0aW9uLnZhbHVlKTtcbiAgICBzd2l0Y2ggKHN0YXRlKSB7XG4gICAgICBjYXNlIFwiYWN0aXZlXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5jeWFuKFNfQ0hFQ0tCT1hfQUNUSVZFKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOiB7XG4gICAgICAgIHJldHVybiBgJHtjb2xvcnMuZ3JlZW4oU19DSEVDS0JPWF9TRUxFQ1RFRCl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJjYW5jZWxsZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLnN0cmlrZXRocm91Z2goY29sb3JzLmRpbShsYWJlbCkpfWA7XG4gICAgICB9XG4gICAgICBjYXNlIFwiYWN0aXZlLXNlbGVjdGVkXCI6IHtcbiAgICAgICAgcmV0dXJuIGAke2NvbG9ycy5ncmVlbihTX0NIRUNLQk9YX1NFTEVDVEVEKX0gJHtsYWJlbH0gJHtvcHRpb24uaGludCA/IGNvbG9ycy5kaW0oYCgke29wdGlvbi5oaW50fSlgKSA6IFwiXCJ9YDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJzdWJtaXR0ZWRcIjoge1xuICAgICAgICByZXR1cm4gYCR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGAke2NvbG9ycy5kaW0oU19DSEVDS0JPWF9JTkFDVElWRSl9ICR7Y29sb3JzLmRpbShsYWJlbCl9YDtcbiAgfTtcbiAgcmV0dXJuIG5ldyB3RCh7XG4gICAgb3B0aW9uczogb3B0cy5vcHRpb25zLFxuICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFZhbHVlcyxcbiAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCA/PyB0cnVlLFxuICAgIGN1cnNvckF0OiBvcHRzLmN1cnNvckF0LFxuICAgIHZhbGlkYXRlKHNlbGVjdGVkKSB7XG4gICAgICBpZiAodGhpcy5yZXF1aXJlZCAmJiBzZWxlY3RlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIGBQbGVhc2Ugc2VsZWN0IGF0IGxlYXN0IG9uZSBvcHRpb24uXG4ke2NvbG9ycy5yZXNldChcbiAgICAgICAgICBjb2xvcnMuZGltKFxuICAgICAgICAgICAgYFByZXNzICR7Y29sb3JzLmdyYXkoXG4gICAgICAgICAgICAgIGNvbG9ycy5iZ1doaXRlKGNvbG9ycy5pbnZlcnNlKFwiIHNwYWNlIFwiKSlcbiAgICAgICAgICAgICl9IHRvIHNlbGVjdCwgJHtjb2xvcnMuZ3JheShcbiAgICAgICAgICAgICAgY29sb3JzLmJnV2hpdGUoY29sb3JzLmludmVyc2UoXCIgZW50ZXIgXCIpKVxuICAgICAgICAgICAgKX0gdG8gc3VibWl0YFxuICAgICAgICAgIClcbiAgICAgICAgKX1gO1xuICAgICAgfVxuICAgIH0sXG4gICAgcmVuZGVyKCkge1xuICAgICAgY29uc3QgdGl0bGUgPSBgJHtjb2xvcnMuZ3JheShTX0JBUil9XG4ke3N5bWJvbCh0aGlzLnN0YXRlKX0gJHtvcHRzLm1lc3NhZ2V9XG5gO1xuICAgICAgc3dpdGNoICh0aGlzLnN0YXRlKSB7XG4gICAgICAgIGNhc2UgXCJzdWJtaXRcIjoge1xuICAgICAgICAgIHJldHVybiBgJHt0aXRsZX0ke2NvbG9ycy5ncmF5KFNfQkFSKX0gJHt0aGlzLm9wdGlvbnMuZmlsdGVyKCh7IHZhbHVlIH0pID0+IHRoaXMudmFsdWUuaW5jbHVkZXModmFsdWUpKS5tYXAoKG9wdGlvbikgPT4gb3B0KG9wdGlvbiwgXCJzdWJtaXR0ZWRcIikpLmpvaW4oY29sb3JzLmRpbShcIiwgXCIpKSB8fCBjb2xvcnMuZGltKFwibm9uZVwiKX1gO1xuICAgICAgICB9XG4gICAgICAgIGNhc2UgXCJjYW5jZWxcIjoge1xuICAgICAgICAgIGNvbnN0IGxhYmVsID0gdGhpcy5vcHRpb25zLmZpbHRlcigoeyB2YWx1ZSB9KSA9PiB0aGlzLnZhbHVlLmluY2x1ZGVzKHZhbHVlKSkubWFwKChvcHRpb24pID0+IG9wdChvcHRpb24sIFwiY2FuY2VsbGVkXCIpKS5qb2luKGNvbG9ycy5kaW0oXCIsIFwiKSk7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmdyYXkoU19CQVIpfSAke2xhYmVsLnRyaW0oKSA/IGAke2xhYmVsfVxuJHtjb2xvcnMuZ3JheShTX0JBUil9YCA6IFwiXCJ9YDtcbiAgICAgICAgfVxuICAgICAgICBjYXNlIFwiZXJyb3JcIjoge1xuICAgICAgICAgIGNvbnN0IGZvb3RlciA9IHRoaXMuZXJyb3Iuc3BsaXQoXCJcXG5cIikubWFwKFxuICAgICAgICAgICAgKGxuLCBpKSA9PiBpID09PSAwID8gYCR7Y29sb3JzLnllbGxvdyhTX0JBUl9FTkQpfSAke2NvbG9ycy55ZWxsb3cobG4pfWAgOiBgICAgJHtsbn1gXG4gICAgICAgICAgKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICAgIHJldHVybiB0aXRsZSArIGNvbG9ycy55ZWxsb3coU19CQVIpICsgXCIgIFwiICsgdGhpcy5vcHRpb25zLm1hcCgob3B0aW9uLCBpKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMudmFsdWUuaW5jbHVkZXMob3B0aW9uLnZhbHVlKTtcbiAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGkgPT09IHRoaXMuY3Vyc29yO1xuICAgICAgICAgICAgaWYgKGFjdGl2ZSAmJiBzZWxlY3RlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgXCJhY3RpdmUtc2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwic2VsZWN0ZWRcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gb3B0KG9wdGlvbiwgYWN0aXZlID8gXCJhY3RpdmVcIiA6IFwiaW5hY3RpdmVcIik7XG4gICAgICAgICAgfSkuam9pbihgXG4ke2NvbG9ycy55ZWxsb3coU19CQVIpfSAgYCkgKyBcIlxcblwiICsgZm9vdGVyICsgXCJcXG5cIjtcbiAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OiB7XG4gICAgICAgICAgcmV0dXJuIGAke3RpdGxlfSR7Y29sb3JzLmN5YW4oU19CQVIpfSAke3RoaXMub3B0aW9ucy5tYXAoKG9wdGlvbiwgaSkgPT4ge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLnZhbHVlLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSk7XG4gICAgICAgICAgICBjb25zdCBhY3RpdmUgPSBpID09PSB0aGlzLmN1cnNvcjtcbiAgICAgICAgICAgIGlmIChhY3RpdmUgJiYgc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIFwiYWN0aXZlLXNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgIHJldHVybiBvcHQob3B0aW9uLCBcInNlbGVjdGVkXCIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG9wdChvcHRpb24sIGFjdGl2ZSA/IFwiYWN0aXZlXCIgOiBcImluYWN0aXZlXCIpO1xuICAgICAgICAgIH0pLmpvaW4oYFxuJHtjb2xvcnMuY3lhbihTX0JBUil9ICBgKX1cbiR7Y29sb3JzLmN5YW4oU19CQVJfRU5EKX1cbmA7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0pLnByb21wdCgpO1xufTtcblxuY29uc3Qga0NhbmNlbCA9IFN5bWJvbC5mb3IoXCJjYW5jZWxcIik7XG5hc3luYyBmdW5jdGlvbiBwcm9tcHQobWVzc2FnZSwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGhhbmRsZUNhbmNlbCA9ICh2YWx1ZSkgPT4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwic3ltYm9sXCIgfHwgdmFsdWUudG9TdHJpbmcoKSAhPT0gXCJTeW1ib2woY2xhY2s6Y2FuY2VsKVwiKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHN3aXRjaCAob3B0cy5jYW5jZWwpIHtcbiAgICAgIGNhc2UgXCJyZWplY3RcIjoge1xuICAgICAgICBjb25zdCBlcnJvciA9IG5ldyBFcnJvcihcIlByb21wdCBjYW5jZWxsZWQuXCIpO1xuICAgICAgICBlcnJvci5uYW1lID0gXCJDb25zb2xhUHJvbXB0Q2FuY2VsbGVkRXJyb3JcIjtcbiAgICAgICAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgICAgICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UoZXJyb3IsIHByb21wdCk7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjYXNlIFwidW5kZWZpbmVkXCI6IHtcbiAgICAgICAgcmV0dXJuIHZvaWQgMDtcbiAgICAgIH1cbiAgICAgIGNhc2UgXCJudWxsXCI6IHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICBjYXNlIFwic3ltYm9sXCI6IHtcbiAgICAgICAgcmV0dXJuIGtDYW5jZWw7XG4gICAgICB9XG4gICAgICBkZWZhdWx0OlxuICAgICAgY2FzZSBcImRlZmF1bHRcIjoge1xuICAgICAgICByZXR1cm4gb3B0cy5kZWZhdWx0ID8/IG9wdHMuaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGlmICghb3B0cy50eXBlIHx8IG9wdHMudHlwZSA9PT0gXCJ0ZXh0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgdGV4dCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgZGVmYXVsdFZhbHVlOiBvcHRzLmRlZmF1bHQsXG4gICAgICBwbGFjZWhvbGRlcjogb3B0cy5wbGFjZWhvbGRlcixcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwiY29uZmlybVwiKSB7XG4gICAgcmV0dXJuIGF3YWl0IGNvbmZpcm0oe1xuICAgICAgbWVzc2FnZSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwic2VsZWN0XCIpIHtcbiAgICByZXR1cm4gYXdhaXQgc2VsZWN0KHtcbiAgICAgIG1lc3NhZ2UsXG4gICAgICBvcHRpb25zOiBvcHRzLm9wdGlvbnMubWFwKFxuICAgICAgICAobykgPT4gdHlwZW9mIG8gPT09IFwic3RyaW5nXCIgPyB7IHZhbHVlOiBvLCBsYWJlbDogbyB9IDogb1xuICAgICAgKSxcbiAgICAgIGluaXRpYWxWYWx1ZTogb3B0cy5pbml0aWFsXG4gICAgfSkudGhlbihoYW5kbGVDYW5jZWwpO1xuICB9XG4gIGlmIChvcHRzLnR5cGUgPT09IFwibXVsdGlzZWxlY3RcIikge1xuICAgIHJldHVybiBhd2FpdCBtdWx0aXNlbGVjdCh7XG4gICAgICBtZXNzYWdlLFxuICAgICAgb3B0aW9uczogb3B0cy5vcHRpb25zLm1hcChcbiAgICAgICAgKG8pID0+IHR5cGVvZiBvID09PSBcInN0cmluZ1wiID8geyB2YWx1ZTogbywgbGFiZWw6IG8gfSA6IG9cbiAgICAgICksXG4gICAgICByZXF1aXJlZDogb3B0cy5yZXF1aXJlZCxcbiAgICAgIGluaXRpYWxWYWx1ZXM6IG9wdHMuaW5pdGlhbFxuICAgIH0pLnRoZW4oaGFuZGxlQ2FuY2VsKTtcbiAgfVxuICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gcHJvbXB0IHR5cGU6ICR7b3B0cy50eXBlfWApO1xufVxuXG5leHBvcnQgeyBrQ2FuY2VsLCBwcm9tcHQgfTtcbiIsICJpbXBvcnQgeyBjcmVhdGVDb25zb2xhIGFzIGNyZWF0ZUNvbnNvbGEkMSwgTG9nTGV2ZWxzIH0gZnJvbSAnLi4vY29yZS5tanMnO1xuaW1wb3J0IHsgQiBhcyBCYXNpY1JlcG9ydGVyLCBwIGFzIHBhcnNlU3RhY2sgfSBmcm9tICcuL2NvbnNvbGEuQ3M1RmR0SEQubWpzJztcbmltcG9ydCBwcm9jZXNzJDEgZnJvbSAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCB7IGQgYXMgY29sb3JzLCBiIGFzIGJveCwgcyBhcyBzdHJpcEFuc2kkMSB9IGZyb20gJy4vY29uc29sYS5DQmk2Tm05cy5tanMnO1xuXG5jb25zdCByPU9iamVjdC5jcmVhdGUobnVsbCksaT1lPT5nbG9iYWxUaGlzLnByb2Nlc3M/LmVudnx8aW1wb3J0Lm1ldGEuZW52fHxnbG9iYWxUaGlzLkRlbm8/LmVudi50b09iamVjdCgpfHxnbG9iYWxUaGlzLl9fZW52X198fChlP3I6Z2xvYmFsVGhpcykscyQxPW5ldyBQcm94eShyLHtnZXQoZSxvKXtyZXR1cm4gaSgpW29dPz9yW29dfSxoYXMoZSxvKXtjb25zdCBFPWkoKTtyZXR1cm4gbyBpbiBFfHxvIGluIHJ9LHNldChlLG8sRSl7Y29uc3QgYj1pKCEwKTtyZXR1cm4gYltvXT1FLCEwfSxkZWxldGVQcm9wZXJ0eShlLG8pe2lmKCFvKXJldHVybiAhMTtjb25zdCBFPWkoITApO3JldHVybiBkZWxldGUgRVtvXSwhMH0sb3duS2V5cygpe2NvbnN0IGU9aSghMCk7cmV0dXJuIE9iamVjdC5rZXlzKGUpfX0pLHQ9dHlwZW9mIHByb2Nlc3M8XCJ1XCImJnByb2Nlc3MuZW52JiZwcm9jZXNzLmVudi5OT0RFX0VOVnx8XCJcIixCPVtbXCJBUFBWRVlPUlwiXSxbXCJBV1NfQU1QTElGWVwiLFwiQVdTX0FQUF9JRFwiLHtjaTohMH1dLFtcIkFaVVJFX1BJUEVMSU5FU1wiLFwiU1lTVEVNX1RFQU1GT1VOREFUSU9OQ09MTEVDVElPTlVSSVwiXSxbXCJBWlVSRV9TVEFUSUNcIixcIklOUFVUX0FaVVJFX1NUQVRJQ19XRUJfQVBQU19BUElfVE9LRU5cIl0sW1wiQVBQQ0lSQ0xFXCIsXCJBQ19BUFBDSVJDTEVcIl0sW1wiQkFNQk9PXCIsXCJiYW1ib29fcGxhbktleVwiXSxbXCJCSVRCVUNLRVRcIixcIkJJVEJVQ0tFVF9DT01NSVRcIl0sW1wiQklUUklTRVwiLFwiQklUUklTRV9JT1wiXSxbXCJCVUREWVwiLFwiQlVERFlfV09SS1NQQUNFX0lEXCJdLFtcIkJVSUxES0lURVwiXSxbXCJDSVJDTEVcIixcIkNJUkNMRUNJXCJdLFtcIkNJUlJVU1wiLFwiQ0lSUlVTX0NJXCJdLFtcIkNMT1VERkxBUkVfUEFHRVNcIixcIkNGX1BBR0VTXCIse2NpOiEwfV0sW1wiQ09ERUJVSUxEXCIsXCJDT0RFQlVJTERfQlVJTERfQVJOXCJdLFtcIkNPREVGUkVTSFwiLFwiQ0ZfQlVJTERfSURcIl0sW1wiRFJPTkVcIl0sW1wiRFJPTkVcIixcIkRST05FX0JVSUxEX0VWRU5UXCJdLFtcIkRTQVJJXCJdLFtcIkdJVEhVQl9BQ1RJT05TXCJdLFtcIkdJVExBQlwiLFwiR0lUTEFCX0NJXCJdLFtcIkdJVExBQlwiLFwiQ0lfTUVSR0VfUkVRVUVTVF9JRFwiXSxbXCJHT0NEXCIsXCJHT19QSVBFTElORV9MQUJFTFwiXSxbXCJMQVlFUkNJXCJdLFtcIkhVRFNPTlwiLFwiSFVEU09OX1VSTFwiXSxbXCJKRU5LSU5TXCIsXCJKRU5LSU5TX1VSTFwiXSxbXCJNQUdOVU1cIl0sW1wiTkVUTElGWVwiXSxbXCJORVRMSUZZXCIsXCJORVRMSUZZX0xPQ0FMXCIse2NpOiExfV0sW1wiTkVWRVJDT0RFXCJdLFtcIlJFTkRFUlwiXSxbXCJTQUlMXCIsXCJTQUlMQ0lcIl0sW1wiU0VNQVBIT1JFXCJdLFtcIlNDUkVXRFJJVkVSXCJdLFtcIlNISVBQQUJMRVwiXSxbXCJTT0xBTk9cIixcIlRERElVTVwiXSxbXCJTVFJJREVSXCJdLFtcIlRFQU1DSVRZXCIsXCJURUFNQ0lUWV9WRVJTSU9OXCJdLFtcIlRSQVZJU1wiXSxbXCJWRVJDRUxcIixcIk5PV19CVUlMREVSXCJdLFtcIlZFUkNFTFwiLFwiVkVSQ0VMXCIse2NpOiExfV0sW1wiVkVSQ0VMXCIsXCJWRVJDRUxfRU5WXCIse2NpOiExfV0sW1wiQVBQQ0VOVEVSXCIsXCJBUFBDRU5URVJfQlVJTERfSURcIl0sW1wiQ09ERVNBTkRCT1hcIixcIkNPREVTQU5EQk9YX1NTRVwiLHtjaTohMX1dLFtcIlNUQUNLQkxJVFpcIl0sW1wiU1RPUk1LSVRcIl0sW1wiQ0xFQVZSXCJdLFtcIlpFQUJVUlwiXSxbXCJDT0RFU1BIRVJFXCIsXCJDT0RFU1BIRVJFX0FQUF9JRFwiLHtjaTohMH1dLFtcIlJBSUxXQVlcIixcIlJBSUxXQVlfUFJPSkVDVF9JRFwiXSxbXCJSQUlMV0FZXCIsXCJSQUlMV0FZX1NFUlZJQ0VfSURcIl0sW1wiREVOTy1ERVBMT1lcIixcIkRFTk9fREVQTE9ZTUVOVF9JRFwiXSxbXCJGSVJFQkFTRV9BUFBfSE9TVElOR1wiLFwiRklSRUJBU0VfQVBQX0hPU1RJTkdcIix7Y2k6ITB9XV07ZnVuY3Rpb24gcCgpe2lmKGdsb2JhbFRoaXMucHJvY2Vzcz8uZW52KWZvcihjb25zdCBlIG9mIEIpe2NvbnN0IG89ZVsxXXx8ZVswXTtpZihnbG9iYWxUaGlzLnByb2Nlc3M/LmVudltvXSlyZXR1cm4ge25hbWU6ZVswXS50b0xvd2VyQ2FzZSgpLC4uLmVbMl19fXJldHVybiBnbG9iYWxUaGlzLnByb2Nlc3M/LmVudj8uU0hFTEw9PT1cIi9iaW4vanNoXCImJmdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LndlYmNvbnRhaW5lcj97bmFtZTpcInN0YWNrYmxpdHpcIixjaTohMX06e25hbWU6XCJcIixjaTohMX19Y29uc3QgbD1wKCk7bC5uYW1lO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGU/ZSE9PVwiZmFsc2VcIjohMX1jb25zdCBJPWdsb2JhbFRoaXMucHJvY2Vzcz8ucGxhdGZvcm18fFwiXCIsVD1uKHMkMS5DSSl8fGwuY2khPT0hMSxSPW4oZ2xvYmFsVGhpcy5wcm9jZXNzPy5zdGRvdXQmJmdsb2JhbFRoaXMucHJvY2Vzcz8uc3Rkb3V0LmlzVFRZKSxVPW4ocyQxLkRFQlVHKSxBPXQ9PT1cInRlc3RcInx8bihzJDEuVEVTVCk7bihzJDEuTUlOSU1BTCl8fFR8fEF8fCFSO2NvbnN0IF89L153aW4vaS50ZXN0KEkpOyFuKHMkMS5OT19DT0xPUikmJihuKHMkMS5GT1JDRV9DT0xPUil8fChSfHxfKSYmcyQxLlRFUk0hPT1cImR1bWJcInx8VCk7Y29uc3QgQz0oZ2xvYmFsVGhpcy5wcm9jZXNzPy52ZXJzaW9ucz8ubm9kZXx8XCJcIikucmVwbGFjZSgvXnYvLFwiXCIpfHxudWxsO051bWJlcihDPy5zcGxpdChcIi5cIilbMF0pfHxudWxsO2NvbnN0IHk9Z2xvYmFsVGhpcy5wcm9jZXNzfHxPYmplY3QuY3JlYXRlKG51bGwpLGM9e3ZlcnNpb25zOnt9fTtuZXcgUHJveHkoeSx7Z2V0KGUsbyl7aWYobz09PVwiZW52XCIpcmV0dXJuIHMkMTtpZihvIGluIGUpcmV0dXJuIGVbb107aWYobyBpbiBjKXJldHVybiBjW29dfX0pO2NvbnN0IEw9Z2xvYmFsVGhpcy5wcm9jZXNzPy5yZWxlYXNlPy5uYW1lPT09XCJub2RlXCIsYT0hIWdsb2JhbFRoaXMuQnVufHwhIWdsb2JhbFRoaXMucHJvY2Vzcz8udmVyc2lvbnM/LmJ1bixEPSEhZ2xvYmFsVGhpcy5EZW5vLE89ISFnbG9iYWxUaGlzLmZhc3RseSxTPSEhZ2xvYmFsVGhpcy5OZXRsaWZ5LE49ISFnbG9iYWxUaGlzLkVkZ2VSdW50aW1lLFA9Z2xvYmFsVGhpcy5uYXZpZ2F0b3I/LnVzZXJBZ2VudD09PVwiQ2xvdWRmbGFyZS1Xb3JrZXJzXCIsRj1bW1MsXCJuZXRsaWZ5XCJdLFtOLFwiZWRnZS1saWdodFwiXSxbUCxcIndvcmtlcmRcIl0sW08sXCJmYXN0bHlcIl0sW0QsXCJkZW5vXCJdLFthLFwiYnVuXCJdLFtMLFwibm9kZVwiXV07ZnVuY3Rpb24gRygpe2NvbnN0IGU9Ri5maW5kKG89Pm9bMF0pO2lmKGUpcmV0dXJuIHtuYW1lOmVbMV19fWNvbnN0IHU9RygpO3U/Lm5hbWV8fFwiXCI7XG5cbmZ1bmN0aW9uIGFuc2lSZWdleCh7b25seUZpcnN0ID0gZmFsc2V9ID0ge30pIHtcblx0Ly8gVmFsaWQgc3RyaW5nIHRlcm1pbmF0b3Igc2VxdWVuY2VzIGFyZSBCRUwsIEVTQ1xcLCBhbmQgMHg5Y1xuXHRjb25zdCBTVCA9ICcoPzpcXFxcdTAwMDd8XFxcXHUwMDFCXFxcXHUwMDVDfFxcXFx1MDA5QyknO1xuXHRjb25zdCBwYXR0ZXJuID0gW1xuXHRcdGBbXFxcXHUwMDFCXFxcXHUwMDlCXVtbXFxcXF0oKSM7P10qKD86KD86KD86KD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKykqfFthLXpBLVpcXFxcZF0rKD86O1stYS16QS1aXFxcXGRcXFxcLyMmLjo9PyVAfl9dKikqKT8ke1NUfSlgLFxuXHRcdCcoPzooPzpcXFxcZHsxLDR9KD86O1xcXFxkezAsNH0pKik/W1xcXFxkQS1QUi1UWmNmLW5xLXV5PT48fl0pKScsXG5cdF0uam9pbignfCcpO1xuXG5cdHJldHVybiBuZXcgUmVnRXhwKHBhdHRlcm4sIG9ubHlGaXJzdCA/IHVuZGVmaW5lZCA6ICdnJyk7XG59XG5cbmNvbnN0IHJlZ2V4ID0gYW5zaVJlZ2V4KCk7XG5cbmZ1bmN0aW9uIHN0cmlwQW5zaShzdHJpbmcpIHtcblx0aWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgYSBcXGBzdHJpbmdcXGAsIGdvdCBcXGAke3R5cGVvZiBzdHJpbmd9XFxgYCk7XG5cdH1cblxuXHQvLyBFdmVuIHRob3VnaCB0aGUgcmVnZXggaXMgZ2xvYmFsLCB3ZSBkb24ndCBuZWVkIHRvIHJlc2V0IHRoZSBgLmxhc3RJbmRleGBcblx0Ly8gYmVjYXVzZSB1bmxpa2UgYC5leGVjKClgIGFuZCBgLnRlc3QoKWAsIGAucmVwbGFjZSgpYCBkb2VzIGl0IGF1dG9tYXRpY2FsbHlcblx0Ly8gYW5kIGRvaW5nIGl0IG1hbnVhbGx5IGhhcyBhIHBlcmZvcm1hbmNlIHBlbmFsdHkuXG5cdHJldHVybiBzdHJpbmcucmVwbGFjZShyZWdleCwgJycpO1xufVxuXG4vLyBHZW5lcmF0ZWQgY29kZS5cblxuZnVuY3Rpb24gaXNBbWJpZ3VvdXMoeCkge1xuXHRyZXR1cm4geCA9PT0gMHhBMVxuXHRcdHx8IHggPT09IDB4QTRcblx0XHR8fCB4ID09PSAweEE3XG5cdFx0fHwgeCA9PT0gMHhBOFxuXHRcdHx8IHggPT09IDB4QUFcblx0XHR8fCB4ID09PSAweEFEXG5cdFx0fHwgeCA9PT0gMHhBRVxuXHRcdHx8IHggPj0gMHhCMCAmJiB4IDw9IDB4QjRcblx0XHR8fCB4ID49IDB4QjYgJiYgeCA8PSAweEJBXG5cdFx0fHwgeCA+PSAweEJDICYmIHggPD0gMHhCRlxuXHRcdHx8IHggPT09IDB4QzZcblx0XHR8fCB4ID09PSAweEQwXG5cdFx0fHwgeCA9PT0gMHhEN1xuXHRcdHx8IHggPT09IDB4RDhcblx0XHR8fCB4ID49IDB4REUgJiYgeCA8PSAweEUxXG5cdFx0fHwgeCA9PT0gMHhFNlxuXHRcdHx8IHggPj0gMHhFOCAmJiB4IDw9IDB4RUFcblx0XHR8fCB4ID09PSAweEVDXG5cdFx0fHwgeCA9PT0gMHhFRFxuXHRcdHx8IHggPT09IDB4RjBcblx0XHR8fCB4ID09PSAweEYyXG5cdFx0fHwgeCA9PT0gMHhGM1xuXHRcdHx8IHggPj0gMHhGNyAmJiB4IDw9IDB4RkFcblx0XHR8fCB4ID09PSAweEZDXG5cdFx0fHwgeCA9PT0gMHhGRVxuXHRcdHx8IHggPT09IDB4MTAxXG5cdFx0fHwgeCA9PT0gMHgxMTFcblx0XHR8fCB4ID09PSAweDExM1xuXHRcdHx8IHggPT09IDB4MTFCXG5cdFx0fHwgeCA9PT0gMHgxMjZcblx0XHR8fCB4ID09PSAweDEyN1xuXHRcdHx8IHggPT09IDB4MTJCXG5cdFx0fHwgeCA+PSAweDEzMSAmJiB4IDw9IDB4MTMzXG5cdFx0fHwgeCA9PT0gMHgxMzhcblx0XHR8fCB4ID49IDB4MTNGICYmIHggPD0gMHgxNDJcblx0XHR8fCB4ID09PSAweDE0NFxuXHRcdHx8IHggPj0gMHgxNDggJiYgeCA8PSAweDE0QlxuXHRcdHx8IHggPT09IDB4MTREXG5cdFx0fHwgeCA9PT0gMHgxNTJcblx0XHR8fCB4ID09PSAweDE1M1xuXHRcdHx8IHggPT09IDB4MTY2XG5cdFx0fHwgeCA9PT0gMHgxNjdcblx0XHR8fCB4ID09PSAweDE2QlxuXHRcdHx8IHggPT09IDB4MUNFXG5cdFx0fHwgeCA9PT0gMHgxRDBcblx0XHR8fCB4ID09PSAweDFEMlxuXHRcdHx8IHggPT09IDB4MUQ0XG5cdFx0fHwgeCA9PT0gMHgxRDZcblx0XHR8fCB4ID09PSAweDFEOFxuXHRcdHx8IHggPT09IDB4MURBXG5cdFx0fHwgeCA9PT0gMHgxRENcblx0XHR8fCB4ID09PSAweDI1MVxuXHRcdHx8IHggPT09IDB4MjYxXG5cdFx0fHwgeCA9PT0gMHgyQzRcblx0XHR8fCB4ID09PSAweDJDN1xuXHRcdHx8IHggPj0gMHgyQzkgJiYgeCA8PSAweDJDQlxuXHRcdHx8IHggPT09IDB4MkNEXG5cdFx0fHwgeCA9PT0gMHgyRDBcblx0XHR8fCB4ID49IDB4MkQ4ICYmIHggPD0gMHgyREJcblx0XHR8fCB4ID09PSAweDJERFxuXHRcdHx8IHggPT09IDB4MkRGXG5cdFx0fHwgeCA+PSAweDMwMCAmJiB4IDw9IDB4MzZGXG5cdFx0fHwgeCA+PSAweDM5MSAmJiB4IDw9IDB4M0ExXG5cdFx0fHwgeCA+PSAweDNBMyAmJiB4IDw9IDB4M0E5XG5cdFx0fHwgeCA+PSAweDNCMSAmJiB4IDw9IDB4M0MxXG5cdFx0fHwgeCA+PSAweDNDMyAmJiB4IDw9IDB4M0M5XG5cdFx0fHwgeCA9PT0gMHg0MDFcblx0XHR8fCB4ID49IDB4NDEwICYmIHggPD0gMHg0NEZcblx0XHR8fCB4ID09PSAweDQ1MVxuXHRcdHx8IHggPT09IDB4MjAxMFxuXHRcdHx8IHggPj0gMHgyMDEzICYmIHggPD0gMHgyMDE2XG5cdFx0fHwgeCA9PT0gMHgyMDE4XG5cdFx0fHwgeCA9PT0gMHgyMDE5XG5cdFx0fHwgeCA9PT0gMHgyMDFDXG5cdFx0fHwgeCA9PT0gMHgyMDFEXG5cdFx0fHwgeCA+PSAweDIwMjAgJiYgeCA8PSAweDIwMjJcblx0XHR8fCB4ID49IDB4MjAyNCAmJiB4IDw9IDB4MjAyN1xuXHRcdHx8IHggPT09IDB4MjAzMFxuXHRcdHx8IHggPT09IDB4MjAzMlxuXHRcdHx8IHggPT09IDB4MjAzM1xuXHRcdHx8IHggPT09IDB4MjAzNVxuXHRcdHx8IHggPT09IDB4MjAzQlxuXHRcdHx8IHggPT09IDB4MjAzRVxuXHRcdHx8IHggPT09IDB4MjA3NFxuXHRcdHx8IHggPT09IDB4MjA3RlxuXHRcdHx8IHggPj0gMHgyMDgxICYmIHggPD0gMHgyMDg0XG5cdFx0fHwgeCA9PT0gMHgyMEFDXG5cdFx0fHwgeCA9PT0gMHgyMTAzXG5cdFx0fHwgeCA9PT0gMHgyMTA1XG5cdFx0fHwgeCA9PT0gMHgyMTA5XG5cdFx0fHwgeCA9PT0gMHgyMTEzXG5cdFx0fHwgeCA9PT0gMHgyMTE2XG5cdFx0fHwgeCA9PT0gMHgyMTIxXG5cdFx0fHwgeCA9PT0gMHgyMTIyXG5cdFx0fHwgeCA9PT0gMHgyMTI2XG5cdFx0fHwgeCA9PT0gMHgyMTJCXG5cdFx0fHwgeCA9PT0gMHgyMTUzXG5cdFx0fHwgeCA9PT0gMHgyMTU0XG5cdFx0fHwgeCA+PSAweDIxNUIgJiYgeCA8PSAweDIxNUVcblx0XHR8fCB4ID49IDB4MjE2MCAmJiB4IDw9IDB4MjE2QlxuXHRcdHx8IHggPj0gMHgyMTcwICYmIHggPD0gMHgyMTc5XG5cdFx0fHwgeCA9PT0gMHgyMTg5XG5cdFx0fHwgeCA+PSAweDIxOTAgJiYgeCA8PSAweDIxOTlcblx0XHR8fCB4ID09PSAweDIxQjhcblx0XHR8fCB4ID09PSAweDIxQjlcblx0XHR8fCB4ID09PSAweDIxRDJcblx0XHR8fCB4ID09PSAweDIxRDRcblx0XHR8fCB4ID09PSAweDIxRTdcblx0XHR8fCB4ID09PSAweDIyMDBcblx0XHR8fCB4ID09PSAweDIyMDJcblx0XHR8fCB4ID09PSAweDIyMDNcblx0XHR8fCB4ID09PSAweDIyMDdcblx0XHR8fCB4ID09PSAweDIyMDhcblx0XHR8fCB4ID09PSAweDIyMEJcblx0XHR8fCB4ID09PSAweDIyMEZcblx0XHR8fCB4ID09PSAweDIyMTFcblx0XHR8fCB4ID09PSAweDIyMTVcblx0XHR8fCB4ID09PSAweDIyMUFcblx0XHR8fCB4ID49IDB4MjIxRCAmJiB4IDw9IDB4MjIyMFxuXHRcdHx8IHggPT09IDB4MjIyM1xuXHRcdHx8IHggPT09IDB4MjIyNVxuXHRcdHx8IHggPj0gMHgyMjI3ICYmIHggPD0gMHgyMjJDXG5cdFx0fHwgeCA9PT0gMHgyMjJFXG5cdFx0fHwgeCA+PSAweDIyMzQgJiYgeCA8PSAweDIyMzdcblx0XHR8fCB4ID09PSAweDIyM0Ncblx0XHR8fCB4ID09PSAweDIyM0Rcblx0XHR8fCB4ID09PSAweDIyNDhcblx0XHR8fCB4ID09PSAweDIyNENcblx0XHR8fCB4ID09PSAweDIyNTJcblx0XHR8fCB4ID09PSAweDIyNjBcblx0XHR8fCB4ID09PSAweDIyNjFcblx0XHR8fCB4ID49IDB4MjI2NCAmJiB4IDw9IDB4MjI2N1xuXHRcdHx8IHggPT09IDB4MjI2QVxuXHRcdHx8IHggPT09IDB4MjI2QlxuXHRcdHx8IHggPT09IDB4MjI2RVxuXHRcdHx8IHggPT09IDB4MjI2RlxuXHRcdHx8IHggPT09IDB4MjI4MlxuXHRcdHx8IHggPT09IDB4MjI4M1xuXHRcdHx8IHggPT09IDB4MjI4NlxuXHRcdHx8IHggPT09IDB4MjI4N1xuXHRcdHx8IHggPT09IDB4MjI5NVxuXHRcdHx8IHggPT09IDB4MjI5OVxuXHRcdHx8IHggPT09IDB4MjJBNVxuXHRcdHx8IHggPT09IDB4MjJCRlxuXHRcdHx8IHggPT09IDB4MjMxMlxuXHRcdHx8IHggPj0gMHgyNDYwICYmIHggPD0gMHgyNEU5XG5cdFx0fHwgeCA+PSAweDI0RUIgJiYgeCA8PSAweDI1NEJcblx0XHR8fCB4ID49IDB4MjU1MCAmJiB4IDw9IDB4MjU3M1xuXHRcdHx8IHggPj0gMHgyNTgwICYmIHggPD0gMHgyNThGXG5cdFx0fHwgeCA+PSAweDI1OTIgJiYgeCA8PSAweDI1OTVcblx0XHR8fCB4ID09PSAweDI1QTBcblx0XHR8fCB4ID09PSAweDI1QTFcblx0XHR8fCB4ID49IDB4MjVBMyAmJiB4IDw9IDB4MjVBOVxuXHRcdHx8IHggPT09IDB4MjVCMlxuXHRcdHx8IHggPT09IDB4MjVCM1xuXHRcdHx8IHggPT09IDB4MjVCNlxuXHRcdHx8IHggPT09IDB4MjVCN1xuXHRcdHx8IHggPT09IDB4MjVCQ1xuXHRcdHx8IHggPT09IDB4MjVCRFxuXHRcdHx8IHggPT09IDB4MjVDMFxuXHRcdHx8IHggPT09IDB4MjVDMVxuXHRcdHx8IHggPj0gMHgyNUM2ICYmIHggPD0gMHgyNUM4XG5cdFx0fHwgeCA9PT0gMHgyNUNCXG5cdFx0fHwgeCA+PSAweDI1Q0UgJiYgeCA8PSAweDI1RDFcblx0XHR8fCB4ID49IDB4MjVFMiAmJiB4IDw9IDB4MjVFNVxuXHRcdHx8IHggPT09IDB4MjVFRlxuXHRcdHx8IHggPT09IDB4MjYwNVxuXHRcdHx8IHggPT09IDB4MjYwNlxuXHRcdHx8IHggPT09IDB4MjYwOVxuXHRcdHx8IHggPT09IDB4MjYwRVxuXHRcdHx8IHggPT09IDB4MjYwRlxuXHRcdHx8IHggPT09IDB4MjYxQ1xuXHRcdHx8IHggPT09IDB4MjYxRVxuXHRcdHx8IHggPT09IDB4MjY0MFxuXHRcdHx8IHggPT09IDB4MjY0MlxuXHRcdHx8IHggPT09IDB4MjY2MFxuXHRcdHx8IHggPT09IDB4MjY2MVxuXHRcdHx8IHggPj0gMHgyNjYzICYmIHggPD0gMHgyNjY1XG5cdFx0fHwgeCA+PSAweDI2NjcgJiYgeCA8PSAweDI2NkFcblx0XHR8fCB4ID09PSAweDI2NkNcblx0XHR8fCB4ID09PSAweDI2NkRcblx0XHR8fCB4ID09PSAweDI2NkZcblx0XHR8fCB4ID09PSAweDI2OUVcblx0XHR8fCB4ID09PSAweDI2OUZcblx0XHR8fCB4ID09PSAweDI2QkZcblx0XHR8fCB4ID49IDB4MjZDNiAmJiB4IDw9IDB4MjZDRFxuXHRcdHx8IHggPj0gMHgyNkNGICYmIHggPD0gMHgyNkQzXG5cdFx0fHwgeCA+PSAweDI2RDUgJiYgeCA8PSAweDI2RTFcblx0XHR8fCB4ID09PSAweDI2RTNcblx0XHR8fCB4ID09PSAweDI2RThcblx0XHR8fCB4ID09PSAweDI2RTlcblx0XHR8fCB4ID49IDB4MjZFQiAmJiB4IDw9IDB4MjZGMVxuXHRcdHx8IHggPT09IDB4MjZGNFxuXHRcdHx8IHggPj0gMHgyNkY2ICYmIHggPD0gMHgyNkY5XG5cdFx0fHwgeCA9PT0gMHgyNkZCXG5cdFx0fHwgeCA9PT0gMHgyNkZDXG5cdFx0fHwgeCA9PT0gMHgyNkZFXG5cdFx0fHwgeCA9PT0gMHgyNkZGXG5cdFx0fHwgeCA9PT0gMHgyNzNEXG5cdFx0fHwgeCA+PSAweDI3NzYgJiYgeCA8PSAweDI3N0Zcblx0XHR8fCB4ID49IDB4MkI1NiAmJiB4IDw9IDB4MkI1OVxuXHRcdHx8IHggPj0gMHgzMjQ4ICYmIHggPD0gMHgzMjRGXG5cdFx0fHwgeCA+PSAweEUwMDAgJiYgeCA8PSAweEY4RkZcblx0XHR8fCB4ID49IDB4RkUwMCAmJiB4IDw9IDB4RkUwRlxuXHRcdHx8IHggPT09IDB4RkZGRFxuXHRcdHx8IHggPj0gMHgxRjEwMCAmJiB4IDw9IDB4MUYxMEFcblx0XHR8fCB4ID49IDB4MUYxMTAgJiYgeCA8PSAweDFGMTJEXG5cdFx0fHwgeCA+PSAweDFGMTMwICYmIHggPD0gMHgxRjE2OVxuXHRcdHx8IHggPj0gMHgxRjE3MCAmJiB4IDw9IDB4MUYxOERcblx0XHR8fCB4ID09PSAweDFGMThGXG5cdFx0fHwgeCA9PT0gMHgxRjE5MFxuXHRcdHx8IHggPj0gMHgxRjE5QiAmJiB4IDw9IDB4MUYxQUNcblx0XHR8fCB4ID49IDB4RTAxMDAgJiYgeCA8PSAweEUwMUVGXG5cdFx0fHwgeCA+PSAweEYwMDAwICYmIHggPD0gMHhGRkZGRFxuXHRcdHx8IHggPj0gMHgxMDAwMDAgJiYgeCA8PSAweDEwRkZGRDtcbn1cblxuZnVuY3Rpb24gaXNGdWxsV2lkdGgoeCkge1xuXHRyZXR1cm4geCA9PT0gMHgzMDAwXG5cdFx0fHwgeCA+PSAweEZGMDEgJiYgeCA8PSAweEZGNjBcblx0XHR8fCB4ID49IDB4RkZFMCAmJiB4IDw9IDB4RkZFNjtcbn1cblxuZnVuY3Rpb24gaXNXaWRlKHgpIHtcblx0cmV0dXJuIHggPj0gMHgxMTAwICYmIHggPD0gMHgxMTVGXG5cdFx0fHwgeCA9PT0gMHgyMzFBXG5cdFx0fHwgeCA9PT0gMHgyMzFCXG5cdFx0fHwgeCA9PT0gMHgyMzI5XG5cdFx0fHwgeCA9PT0gMHgyMzJBXG5cdFx0fHwgeCA+PSAweDIzRTkgJiYgeCA8PSAweDIzRUNcblx0XHR8fCB4ID09PSAweDIzRjBcblx0XHR8fCB4ID09PSAweDIzRjNcblx0XHR8fCB4ID09PSAweDI1RkRcblx0XHR8fCB4ID09PSAweDI1RkVcblx0XHR8fCB4ID09PSAweDI2MTRcblx0XHR8fCB4ID09PSAweDI2MTVcblx0XHR8fCB4ID49IDB4MjYzMCAmJiB4IDw9IDB4MjYzN1xuXHRcdHx8IHggPj0gMHgyNjQ4ICYmIHggPD0gMHgyNjUzXG5cdFx0fHwgeCA9PT0gMHgyNjdGXG5cdFx0fHwgeCA+PSAweDI2OEEgJiYgeCA8PSAweDI2OEZcblx0XHR8fCB4ID09PSAweDI2OTNcblx0XHR8fCB4ID09PSAweDI2QTFcblx0XHR8fCB4ID09PSAweDI2QUFcblx0XHR8fCB4ID09PSAweDI2QUJcblx0XHR8fCB4ID09PSAweDI2QkRcblx0XHR8fCB4ID09PSAweDI2QkVcblx0XHR8fCB4ID09PSAweDI2QzRcblx0XHR8fCB4ID09PSAweDI2QzVcblx0XHR8fCB4ID09PSAweDI2Q0Vcblx0XHR8fCB4ID09PSAweDI2RDRcblx0XHR8fCB4ID09PSAweDI2RUFcblx0XHR8fCB4ID09PSAweDI2RjJcblx0XHR8fCB4ID09PSAweDI2RjNcblx0XHR8fCB4ID09PSAweDI2RjVcblx0XHR8fCB4ID09PSAweDI2RkFcblx0XHR8fCB4ID09PSAweDI2RkRcblx0XHR8fCB4ID09PSAweDI3MDVcblx0XHR8fCB4ID09PSAweDI3MEFcblx0XHR8fCB4ID09PSAweDI3MEJcblx0XHR8fCB4ID09PSAweDI3Mjhcblx0XHR8fCB4ID09PSAweDI3NENcblx0XHR8fCB4ID09PSAweDI3NEVcblx0XHR8fCB4ID49IDB4Mjc1MyAmJiB4IDw9IDB4Mjc1NVxuXHRcdHx8IHggPT09IDB4Mjc1N1xuXHRcdHx8IHggPj0gMHgyNzk1ICYmIHggPD0gMHgyNzk3XG5cdFx0fHwgeCA9PT0gMHgyN0IwXG5cdFx0fHwgeCA9PT0gMHgyN0JGXG5cdFx0fHwgeCA9PT0gMHgyQjFCXG5cdFx0fHwgeCA9PT0gMHgyQjFDXG5cdFx0fHwgeCA9PT0gMHgyQjUwXG5cdFx0fHwgeCA9PT0gMHgyQjU1XG5cdFx0fHwgeCA+PSAweDJFODAgJiYgeCA8PSAweDJFOTlcblx0XHR8fCB4ID49IDB4MkU5QiAmJiB4IDw9IDB4MkVGM1xuXHRcdHx8IHggPj0gMHgyRjAwICYmIHggPD0gMHgyRkQ1XG5cdFx0fHwgeCA+PSAweDJGRjAgJiYgeCA8PSAweDJGRkZcblx0XHR8fCB4ID49IDB4MzAwMSAmJiB4IDw9IDB4MzAzRVxuXHRcdHx8IHggPj0gMHgzMDQxICYmIHggPD0gMHgzMDk2XG5cdFx0fHwgeCA+PSAweDMwOTkgJiYgeCA8PSAweDMwRkZcblx0XHR8fCB4ID49IDB4MzEwNSAmJiB4IDw9IDB4MzEyRlxuXHRcdHx8IHggPj0gMHgzMTMxICYmIHggPD0gMHgzMThFXG5cdFx0fHwgeCA+PSAweDMxOTAgJiYgeCA8PSAweDMxRTVcblx0XHR8fCB4ID49IDB4MzFFRiAmJiB4IDw9IDB4MzIxRVxuXHRcdHx8IHggPj0gMHgzMjIwICYmIHggPD0gMHgzMjQ3XG5cdFx0fHwgeCA+PSAweDMyNTAgJiYgeCA8PSAweEE0OENcblx0XHR8fCB4ID49IDB4QTQ5MCAmJiB4IDw9IDB4QTRDNlxuXHRcdHx8IHggPj0gMHhBOTYwICYmIHggPD0gMHhBOTdDXG5cdFx0fHwgeCA+PSAweEFDMDAgJiYgeCA8PSAweEQ3QTNcblx0XHR8fCB4ID49IDB4RjkwMCAmJiB4IDw9IDB4RkFGRlxuXHRcdHx8IHggPj0gMHhGRTEwICYmIHggPD0gMHhGRTE5XG5cdFx0fHwgeCA+PSAweEZFMzAgJiYgeCA8PSAweEZFNTJcblx0XHR8fCB4ID49IDB4RkU1NCAmJiB4IDw9IDB4RkU2NlxuXHRcdHx8IHggPj0gMHhGRTY4ICYmIHggPD0gMHhGRTZCXG5cdFx0fHwgeCA+PSAweDE2RkUwICYmIHggPD0gMHgxNkZFNFxuXHRcdHx8IHggPT09IDB4MTZGRjBcblx0XHR8fCB4ID09PSAweDE2RkYxXG5cdFx0fHwgeCA+PSAweDE3MDAwICYmIHggPD0gMHgxODdGN1xuXHRcdHx8IHggPj0gMHgxODgwMCAmJiB4IDw9IDB4MThDRDVcblx0XHR8fCB4ID49IDB4MThDRkYgJiYgeCA8PSAweDE4RDA4XG5cdFx0fHwgeCA+PSAweDFBRkYwICYmIHggPD0gMHgxQUZGM1xuXHRcdHx8IHggPj0gMHgxQUZGNSAmJiB4IDw9IDB4MUFGRkJcblx0XHR8fCB4ID09PSAweDFBRkZEXG5cdFx0fHwgeCA9PT0gMHgxQUZGRVxuXHRcdHx8IHggPj0gMHgxQjAwMCAmJiB4IDw9IDB4MUIxMjJcblx0XHR8fCB4ID09PSAweDFCMTMyXG5cdFx0fHwgeCA+PSAweDFCMTUwICYmIHggPD0gMHgxQjE1MlxuXHRcdHx8IHggPT09IDB4MUIxNTVcblx0XHR8fCB4ID49IDB4MUIxNjQgJiYgeCA8PSAweDFCMTY3XG5cdFx0fHwgeCA+PSAweDFCMTcwICYmIHggPD0gMHgxQjJGQlxuXHRcdHx8IHggPj0gMHgxRDMwMCAmJiB4IDw9IDB4MUQzNTZcblx0XHR8fCB4ID49IDB4MUQzNjAgJiYgeCA8PSAweDFEMzc2XG5cdFx0fHwgeCA9PT0gMHgxRjAwNFxuXHRcdHx8IHggPT09IDB4MUYwQ0Zcblx0XHR8fCB4ID09PSAweDFGMThFXG5cdFx0fHwgeCA+PSAweDFGMTkxICYmIHggPD0gMHgxRjE5QVxuXHRcdHx8IHggPj0gMHgxRjIwMCAmJiB4IDw9IDB4MUYyMDJcblx0XHR8fCB4ID49IDB4MUYyMTAgJiYgeCA8PSAweDFGMjNCXG5cdFx0fHwgeCA+PSAweDFGMjQwICYmIHggPD0gMHgxRjI0OFxuXHRcdHx8IHggPT09IDB4MUYyNTBcblx0XHR8fCB4ID09PSAweDFGMjUxXG5cdFx0fHwgeCA+PSAweDFGMjYwICYmIHggPD0gMHgxRjI2NVxuXHRcdHx8IHggPj0gMHgxRjMwMCAmJiB4IDw9IDB4MUYzMjBcblx0XHR8fCB4ID49IDB4MUYzMkQgJiYgeCA8PSAweDFGMzM1XG5cdFx0fHwgeCA+PSAweDFGMzM3ICYmIHggPD0gMHgxRjM3Q1xuXHRcdHx8IHggPj0gMHgxRjM3RSAmJiB4IDw9IDB4MUYzOTNcblx0XHR8fCB4ID49IDB4MUYzQTAgJiYgeCA8PSAweDFGM0NBXG5cdFx0fHwgeCA+PSAweDFGM0NGICYmIHggPD0gMHgxRjNEM1xuXHRcdHx8IHggPj0gMHgxRjNFMCAmJiB4IDw9IDB4MUYzRjBcblx0XHR8fCB4ID09PSAweDFGM0Y0XG5cdFx0fHwgeCA+PSAweDFGM0Y4ICYmIHggPD0gMHgxRjQzRVxuXHRcdHx8IHggPT09IDB4MUY0NDBcblx0XHR8fCB4ID49IDB4MUY0NDIgJiYgeCA8PSAweDFGNEZDXG5cdFx0fHwgeCA+PSAweDFGNEZGICYmIHggPD0gMHgxRjUzRFxuXHRcdHx8IHggPj0gMHgxRjU0QiAmJiB4IDw9IDB4MUY1NEVcblx0XHR8fCB4ID49IDB4MUY1NTAgJiYgeCA8PSAweDFGNTY3XG5cdFx0fHwgeCA9PT0gMHgxRjU3QVxuXHRcdHx8IHggPT09IDB4MUY1OTVcblx0XHR8fCB4ID09PSAweDFGNTk2XG5cdFx0fHwgeCA9PT0gMHgxRjVBNFxuXHRcdHx8IHggPj0gMHgxRjVGQiAmJiB4IDw9IDB4MUY2NEZcblx0XHR8fCB4ID49IDB4MUY2ODAgJiYgeCA8PSAweDFGNkM1XG5cdFx0fHwgeCA9PT0gMHgxRjZDQ1xuXHRcdHx8IHggPj0gMHgxRjZEMCAmJiB4IDw9IDB4MUY2RDJcblx0XHR8fCB4ID49IDB4MUY2RDUgJiYgeCA8PSAweDFGNkQ3XG5cdFx0fHwgeCA+PSAweDFGNkRDICYmIHggPD0gMHgxRjZERlxuXHRcdHx8IHggPT09IDB4MUY2RUJcblx0XHR8fCB4ID09PSAweDFGNkVDXG5cdFx0fHwgeCA+PSAweDFGNkY0ICYmIHggPD0gMHgxRjZGQ1xuXHRcdHx8IHggPj0gMHgxRjdFMCAmJiB4IDw9IDB4MUY3RUJcblx0XHR8fCB4ID09PSAweDFGN0YwXG5cdFx0fHwgeCA+PSAweDFGOTBDICYmIHggPD0gMHgxRjkzQVxuXHRcdHx8IHggPj0gMHgxRjkzQyAmJiB4IDw9IDB4MUY5NDVcblx0XHR8fCB4ID49IDB4MUY5NDcgJiYgeCA8PSAweDFGOUZGXG5cdFx0fHwgeCA+PSAweDFGQTcwICYmIHggPD0gMHgxRkE3Q1xuXHRcdHx8IHggPj0gMHgxRkE4MCAmJiB4IDw9IDB4MUZBODlcblx0XHR8fCB4ID49IDB4MUZBOEYgJiYgeCA8PSAweDFGQUM2XG5cdFx0fHwgeCA+PSAweDFGQUNFICYmIHggPD0gMHgxRkFEQ1xuXHRcdHx8IHggPj0gMHgxRkFERiAmJiB4IDw9IDB4MUZBRTlcblx0XHR8fCB4ID49IDB4MUZBRjAgJiYgeCA8PSAweDFGQUY4XG5cdFx0fHwgeCA+PSAweDIwMDAwICYmIHggPD0gMHgyRkZGRFxuXHRcdHx8IHggPj0gMHgzMDAwMCAmJiB4IDw9IDB4M0ZGRkQ7XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlKGNvZGVQb2ludCkge1xuXHRpZiAoIU51bWJlci5pc1NhZmVJbnRlZ2VyKGNvZGVQb2ludCkpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhIGNvZGUgcG9pbnQsIGdvdCBcXGAke3R5cGVvZiBjb2RlUG9pbnR9XFxgLmApO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGVhc3RBc2lhbldpZHRoKGNvZGVQb2ludCwge2FtYmlndW91c0FzV2lkZSA9IGZhbHNlfSA9IHt9KSB7XG5cdHZhbGlkYXRlKGNvZGVQb2ludCk7XG5cblx0aWYgKFxuXHRcdGlzRnVsbFdpZHRoKGNvZGVQb2ludClcblx0XHR8fCBpc1dpZGUoY29kZVBvaW50KVxuXHRcdHx8IChhbWJpZ3VvdXNBc1dpZGUgJiYgaXNBbWJpZ3VvdXMoY29kZVBvaW50KSlcblx0KSB7XG5cdFx0cmV0dXJuIDI7XG5cdH1cblxuXHRyZXR1cm4gMTtcbn1cblxuY29uc3QgZW1vamlSZWdleCA9ICgpID0+IHtcblx0Ly8gaHR0cHM6Ly9tdGhzLmJlL2Vtb2ppXG5cdHJldHVybiAvWyMqMC05XVxcdUZFMEY/XFx1MjBFM3xbXFx4QTlcXHhBRVxcdTIwM0NcXHUyMDQ5XFx1MjEyMlxcdTIxMzlcXHUyMTk0LVxcdTIxOTlcXHUyMUE5XFx1MjFBQVxcdTIzMUFcXHUyMzFCXFx1MjMyOFxcdTIzQ0ZcXHUyM0VELVxcdTIzRUZcXHUyM0YxXFx1MjNGMlxcdTIzRjgtXFx1MjNGQVxcdTI0QzJcXHUyNUFBXFx1MjVBQlxcdTI1QjZcXHUyNUMwXFx1MjVGQlxcdTI1RkNcXHUyNUZFXFx1MjYwMC1cXHUyNjA0XFx1MjYwRVxcdTI2MTFcXHUyNjE0XFx1MjYxNVxcdTI2MThcXHUyNjIwXFx1MjYyMlxcdTI2MjNcXHUyNjI2XFx1MjYyQVxcdTI2MkVcXHUyNjJGXFx1MjYzOC1cXHUyNjNBXFx1MjY0MFxcdTI2NDJcXHUyNjQ4LVxcdTI2NTNcXHUyNjVGXFx1MjY2MFxcdTI2NjNcXHUyNjY1XFx1MjY2NlxcdTI2NjhcXHUyNjdCXFx1MjY3RVxcdTI2N0ZcXHUyNjkyXFx1MjY5NC1cXHUyNjk3XFx1MjY5OVxcdTI2OUJcXHUyNjlDXFx1MjZBMFxcdTI2QTdcXHUyNkFBXFx1MjZCMFxcdTI2QjFcXHUyNkJEXFx1MjZCRVxcdTI2QzRcXHUyNkM4XFx1MjZDRlxcdTI2RDFcXHUyNkU5XFx1MjZGMC1cXHUyNkY1XFx1MjZGN1xcdTI2RjhcXHUyNkZBXFx1MjcwMlxcdTI3MDhcXHUyNzA5XFx1MjcwRlxcdTI3MTJcXHUyNzE0XFx1MjcxNlxcdTI3MURcXHUyNzIxXFx1MjczM1xcdTI3MzRcXHUyNzQ0XFx1Mjc0N1xcdTI3NTdcXHUyNzYzXFx1MjdBMVxcdTI5MzRcXHUyOTM1XFx1MkIwNS1cXHUyQjA3XFx1MkIxQlxcdTJCMUNcXHUyQjU1XFx1MzAzMFxcdTMwM0RcXHUzMjk3XFx1MzI5OV1cXHVGRTBGP3xbXFx1MjYxRFxcdTI3MENcXHUyNzBEXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT98W1xcdTI3MEFcXHUyNzBCXSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHUyM0U5LVxcdTIzRUNcXHUyM0YwXFx1MjNGM1xcdTI1RkRcXHUyNjkzXFx1MjZBMVxcdTI2QUJcXHUyNkM1XFx1MjZDRVxcdTI2RDRcXHUyNkVBXFx1MjZGRFxcdTI3MDVcXHUyNzI4XFx1Mjc0Q1xcdTI3NEVcXHUyNzUzLVxcdTI3NTVcXHUyNzk1LVxcdTI3OTdcXHUyN0IwXFx1MjdCRlxcdTJCNTBdfFxcdTI2RDNcXHVGRTBGPyg/OlxcdTIwMERcXHVEODNEXFx1RENBNSk/fFxcdTI2RjkoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RkUwRik/KD86XFx1MjAwRFtcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyk/fFxcdTI3NjRcXHVGRTBGPyg/OlxcdTIwMEQoPzpcXHVEODNEXFx1REQyNXxcXHVEODNFXFx1REU3OSkpP3xcXHVEODNDKD86W1xcdURDMDRcXHVERDcwXFx1REQ3MVxcdUREN0VcXHVERDdGXFx1REUwMlxcdURFMzdcXHVERjIxXFx1REYyNC1cXHVERjJDXFx1REYzNlxcdURGN0RcXHVERjk2XFx1REY5N1xcdURGOTktXFx1REY5QlxcdURGOUVcXHVERjlGXFx1REZDRFxcdURGQ0VcXHVERkQ0LVxcdURGREZcXHVERkY1XFx1REZGN11cXHVGRTBGP3xbXFx1REY4NVxcdURGQzJcXHVERkM3XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERkM0XFx1REZDQV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REZDQlxcdURGQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1RENDRlxcdUREOEVcXHVERDkxLVxcdUREOUFcXHVERTAxXFx1REUxQVxcdURFMkZcXHVERTMyLVxcdURFMzZcXHVERTM4LVxcdURFM0FcXHVERTUwXFx1REU1MVxcdURGMDAtXFx1REYyMFxcdURGMkQtXFx1REYzNVxcdURGMzctXFx1REY0M1xcdURGNDUtXFx1REY0QVxcdURGNEMtXFx1REY3Q1xcdURGN0UtXFx1REY4NFxcdURGODYtXFx1REY5M1xcdURGQTAtXFx1REZDMVxcdURGQzVcXHVERkM2XFx1REZDOFxcdURGQzlcXHVERkNGLVxcdURGRDNcXHVERkUwLVxcdURGRjBcXHVERkY4LVxcdURGRkZdfFxcdURERTZcXHVEODNDW1xcdURERTgtXFx1RERFQ1xcdURERUVcXHVEREYxXFx1RERGMlxcdURERjRcXHVEREY2LVxcdURERkFcXHVEREZDXFx1RERGRFxcdURERkZdfFxcdURERTdcXHVEODNDW1xcdURERTZcXHVEREU3XFx1RERFOS1cXHVEREVGXFx1RERGMS1cXHVEREY0XFx1RERGNi1cXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZFXFx1RERGRl18XFx1RERFOFxcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREU5XFx1RERFQi1cXHVEREVFXFx1RERGMC1cXHVEREY3XFx1RERGQS1cXHVEREZGXXxcXHVEREU5XFx1RDgzQ1tcXHVEREVBXFx1RERFQ1xcdURERUZcXHVEREYwXFx1RERGMlxcdURERjRcXHVEREZGXXxcXHVEREVBXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRFxcdURERjctXFx1RERGQV18XFx1RERFQlxcdUQ4M0NbXFx1RERFRS1cXHVEREYwXFx1RERGMlxcdURERjRcXHVEREY3XXxcXHVEREVDXFx1RDgzQ1tcXHVEREU2XFx1RERFN1xcdURERTktXFx1RERFRVxcdURERjEtXFx1RERGM1xcdURERjUtXFx1RERGQVxcdURERkNcXHVEREZFXXxcXHVEREVEXFx1RDgzQ1tcXHVEREYwXFx1RERGMlxcdURERjNcXHVEREY3XFx1RERGOVxcdURERkFdfFxcdURERUVcXHVEODNDW1xcdURERTgtXFx1RERFQVxcdURERjEtXFx1RERGNFxcdURERjYtXFx1RERGOV18XFx1RERFRlxcdUQ4M0NbXFx1RERFQVxcdURERjJcXHVEREY0XFx1RERGNV18XFx1RERGMFxcdUQ4M0NbXFx1RERFQVxcdURERUMtXFx1RERFRVxcdURERjJcXHVEREYzXFx1RERGNVxcdURERjdcXHVEREZDXFx1RERGRVxcdURERkZdfFxcdURERjFcXHVEODNDW1xcdURERTYtXFx1RERFOFxcdURERUVcXHVEREYwXFx1RERGNy1cXHVEREZCXFx1RERGRV18XFx1RERGMlxcdUQ4M0NbXFx1RERFNlxcdURERTgtXFx1RERFRFxcdURERjAtXFx1RERGRl18XFx1RERGM1xcdUQ4M0NbXFx1RERFNlxcdURERThcXHVEREVBLVxcdURERUNcXHVEREVFXFx1RERGMVxcdURERjRcXHVEREY1XFx1RERGN1xcdURERkFcXHVEREZGXXxcXHVEREY0XFx1RDgzQ1xcdURERjJ8XFx1RERGNVxcdUQ4M0NbXFx1RERFNlxcdURERUEtXFx1RERFRFxcdURERjAtXFx1RERGM1xcdURERjctXFx1RERGOVxcdURERkNcXHVEREZFXXxcXHVEREY2XFx1RDgzQ1xcdURERTZ8XFx1RERGN1xcdUQ4M0NbXFx1RERFQVxcdURERjRcXHVEREY4XFx1RERGQVxcdURERkNdfFxcdURERjhcXHVEODNDW1xcdURERTYtXFx1RERFQVxcdURERUMtXFx1RERGNFxcdURERjctXFx1RERGOVxcdURERkJcXHVEREZELVxcdURERkZdfFxcdURERjlcXHVEODNDW1xcdURERTZcXHVEREU4XFx1RERFOVxcdURERUItXFx1RERFRFxcdURERUYtXFx1RERGNFxcdURERjdcXHVEREY5XFx1RERGQlxcdURERkNcXHVEREZGXXxcXHVEREZBXFx1RDgzQ1tcXHVEREU2XFx1RERFQ1xcdURERjJcXHVEREYzXFx1RERGOFxcdURERkVcXHVEREZGXXxcXHVEREZCXFx1RDgzQ1tcXHVEREU2XFx1RERFOFxcdURERUFcXHVEREVDXFx1RERFRVxcdURERjNcXHVEREZBXXxcXHVEREZDXFx1RDgzQ1tcXHVEREVCXFx1RERGOF18XFx1RERGRFxcdUQ4M0NcXHVEREYwfFxcdURERkVcXHVEODNDW1xcdURERUFcXHVEREY5XXxcXHVEREZGXFx1RDgzQ1tcXHVEREU2XFx1RERGMlxcdURERkNdfFxcdURGNDQoPzpcXHUyMDBEXFx1RDgzRFxcdURGRUIpP3xcXHVERjRCKD86XFx1MjAwRFxcdUQ4M0RcXHVERkU5KT98XFx1REZDMyg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REZGM1xcdUZFMEY/KD86XFx1MjAwRCg/OlxcdTI2QTdcXHVGRTBGP3xcXHVEODNDXFx1REYwOCkpP3xcXHVERkY0KD86XFx1MjAwRFxcdTI2MjBcXHVGRTBGP3xcXHVEQjQwXFx1REM2N1xcdURCNDBcXHVEQzYyXFx1REI0MCg/OlxcdURDNjVcXHVEQjQwXFx1REM2RVxcdURCNDBcXHVEQzY3fFxcdURDNzNcXHVEQjQwXFx1REM2M1xcdURCNDBcXHVEQzc0fFxcdURDNzdcXHVEQjQwXFx1REM2Q1xcdURCNDBcXHVEQzczKVxcdURCNDBcXHVEQzdGKT8pfFxcdUQ4M0QoPzpbXFx1REMzRlxcdURDRkRcXHVERDQ5XFx1REQ0QVxcdURENkZcXHVERDcwXFx1REQ3M1xcdURENzYtXFx1REQ3OVxcdUREODdcXHVERDhBLVxcdUREOERcXHVEREE1XFx1RERBOFxcdUREQjFcXHVEREIyXFx1RERCQ1xcdUREQzItXFx1RERDNFxcdURERDEtXFx1REREM1xcdUREREMtXFx1RERERVxcdURERTFcXHVEREUzXFx1RERFOFxcdURERUZcXHVEREYzXFx1RERGQVxcdURFQ0JcXHVERUNELVxcdURFQ0ZcXHVERUUwLVxcdURFRTVcXHVERUU5XFx1REVGMFxcdURFRjNdXFx1RkUwRj98W1xcdURDNDJcXHVEQzQzXFx1REM0Ni1cXHVEQzUwXFx1REM2NlxcdURDNjdcXHVEQzZCLVxcdURDNkRcXHVEQzcyXFx1REM3NC1cXHVEQzc2XFx1REM3OFxcdURDN0NcXHVEQzgzXFx1REM4NVxcdURDOEZcXHVEQzkxXFx1RENBQVxcdUREN0FcXHVERDk1XFx1REQ5NlxcdURFNENcXHVERTRGXFx1REVDMFxcdURFQ0NdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98W1xcdURDNkVcXHVEQzcwXFx1REM3MVxcdURDNzNcXHVEQzc3XFx1REM4MVxcdURDODJcXHVEQzg2XFx1REM4N1xcdURFNDUtXFx1REU0N1xcdURFNEJcXHVERTREXFx1REU0RVxcdURFQTNcXHVERUI0XFx1REVCNV0oPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQ3NFxcdUREOTBdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUZFMEYpP3xbXFx1REMwMC1cXHVEQzA3XFx1REMwOS1cXHVEQzE0XFx1REMxNi1cXHVEQzI1XFx1REMyNy1cXHVEQzNBXFx1REMzQy1cXHVEQzNFXFx1REM0MFxcdURDNDRcXHVEQzQ1XFx1REM1MS1cXHVEQzY1XFx1REM2QVxcdURDNzktXFx1REM3QlxcdURDN0QtXFx1REM4MFxcdURDODRcXHVEQzg4LVxcdURDOEVcXHVEQzkwXFx1REM5Mi1cXHVEQ0E5XFx1RENBQi1cXHVEQ0ZDXFx1RENGRi1cXHVERDNEXFx1REQ0Qi1cXHVERDRFXFx1REQ1MC1cXHVERDY3XFx1RERBNFxcdURERkItXFx1REUyRFxcdURFMkYtXFx1REUzNFxcdURFMzctXFx1REU0MVxcdURFNDNcXHVERTQ0XFx1REU0OC1cXHVERTRBXFx1REU4MC1cXHVERUEyXFx1REVBNC1cXHVERUIzXFx1REVCNy1cXHVERUJGXFx1REVDMS1cXHVERUM1XFx1REVEMC1cXHVERUQyXFx1REVENS1cXHVERUQ3XFx1REVEQy1cXHVERURGXFx1REVFQlxcdURFRUNcXHVERUY0LVxcdURFRkNcXHVERkUwLVxcdURGRUJcXHVERkYwXXxcXHVEQzA4KD86XFx1MjAwRFxcdTJCMUIpP3xcXHVEQzE1KD86XFx1MjAwRFxcdUQ4M0VcXHVEREJBKT98XFx1REMyNig/OlxcdTIwMEQoPzpcXHUyQjFCfFxcdUQ4M0RcXHVERDI1KSk/fFxcdURDM0IoPzpcXHUyMDBEXFx1Mjc0NFxcdUZFMEY/KT98XFx1REM0MVxcdUZFMEY/KD86XFx1MjAwRFxcdUQ4M0RcXHVEREU4XFx1RkUwRj8pP3xcXHVEQzY4KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjh8XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV1cXHUyMDBEXFx1RDgzRCg/OlxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT8pfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZDLVxcdURGRkZdKSkpP3xcXHVERkZDKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXSkpKT98XFx1REZGRCg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86XFx1REM4QlxcdTIwMERcXHVEODNEKT9cXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEXFx1REM2OFxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OlxcdURDOEJcXHUyMDBEXFx1RDgzRCk/XFx1REM2OFxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFxcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRFxcdURGRkZdKSkpP3xcXHVERkZGKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1xcdURDNjhcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RcXHVEQzY4XFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdKSkpPykpP3xcXHVEQzY5KD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpcXHVEQzhCXFx1MjAwRFxcdUQ4M0QpP1tcXHVEQzY4XFx1REM2OV18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRCg/OltcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdURDNjYoPzpcXHUyMDBEXFx1RDgzRFxcdURDNjYpP3xcXHVEQzY3KD86XFx1MjAwRFxcdUQ4M0RbXFx1REM2NlxcdURDNjddKT98XFx1REM2OVxcdTIwMERcXHVEODNEKD86XFx1REM2Nig/OlxcdTIwMERcXHVEODNEXFx1REM2Nik/fFxcdURDNjcoPzpcXHUyMDBEXFx1RDgzRFtcXHVEQzY2XFx1REM2N10pPykpfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXSkpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRFxcdUQ4M0QoPzpbXFx1REM2OFxcdURDNjldfFxcdURDOEJcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV0pXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XVxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEXFx1RDgzRCg/OltcXHVEQzY4XFx1REM2OV18XFx1REM4QlxcdTIwMERcXHVEODNEW1xcdURDNjhcXHVEQzY5XSlcXHVEODNDW1xcdURGRkItXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMERcXHVEODNEKD86W1xcdURDNjhcXHVEQzY5XXxcXHVEQzhCXFx1MjAwRFxcdUQ4M0RbXFx1REM2OFxcdURDNjldKVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRFtcXHVEQzY4XFx1REM2OV1cXHVEODNDW1xcdURGRkItXFx1REZGRV0pKSk/KSk/fFxcdURDNkYoPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REQ3NSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXXxcXHVGRTBGKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98XFx1REUyRSg/OlxcdTIwMERcXHVEODNEXFx1RENBOCk/fFxcdURFMzUoPzpcXHUyMDBEXFx1RDgzRFxcdURDQUIpP3xcXHVERTM2KD86XFx1MjAwRFxcdUQ4M0NcXHVERjJCXFx1RkUwRj8pP3xcXHVERTQyKD86XFx1MjAwRFtcXHUyMTk0XFx1MjE5NV1cXHVGRTBGPyk/fFxcdURFQjYoPzpcXHVEODNDW1xcdURGRkItXFx1REZGRl0pPyg/OlxcdTIwMEQoPzpbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98XFx1MjdBMVxcdUZFMEY/KSk/KXxcXHVEODNFKD86W1xcdUREMENcXHVERDBGXFx1REQxOC1cXHVERDFGXFx1REQzMC1cXHVERDM0XFx1REQzNlxcdURENzdcXHVEREI1XFx1RERCNlxcdUREQkJcXHVEREQyXFx1REREM1xcdURERDVcXHVERUMzLVxcdURFQzVcXHVERUYwXFx1REVGMi1cXHVERUY4XSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/fFtcXHVERDI2XFx1REQzNVxcdUREMzctXFx1REQzOVxcdUREM0RcXHVERDNFXFx1RERCOFxcdUREQjlcXHVERENEXFx1RERDRlxcdURERDRcXHVEREQ2LVxcdURERERdKD86XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT8oPzpcXHUyMDBEW1xcdTI2NDBcXHUyNjQyXVxcdUZFMEY/KT98W1xcdUREREVcXHVERERGXSg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj8pP3xbXFx1REQwRFxcdUREMEVcXHVERDEwLVxcdUREMTdcXHVERDIwLVxcdUREMjVcXHVERDI3LVxcdUREMkZcXHVERDNBXFx1REQzRi1cXHVERDQ1XFx1REQ0Ny1cXHVERDc2XFx1REQ3OC1cXHVEREI0XFx1RERCN1xcdUREQkFcXHVEREJDLVxcdUREQ0NcXHVEREQwXFx1RERFMC1cXHVEREZGXFx1REU3MC1cXHVERTdDXFx1REU4MC1cXHVERTg5XFx1REU4Ri1cXHVERUMyXFx1REVDNlxcdURFQ0UtXFx1REVEQ1xcdURFREYtXFx1REVFOV18XFx1REQzQyg/OlxcdTIwMERbXFx1MjY0MFxcdTI2NDJdXFx1RkUwRj98XFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKT98XFx1RERDRSg/OlxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSk/KD86XFx1MjAwRCg/OltcXHUyNjQwXFx1MjY0Ml1cXHVGRTBGPyg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xcXHUyN0ExXFx1RkUwRj8pKT98XFx1REREMSg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDF8XFx1REREMVxcdTIwMERcXHVEODNFXFx1REREMig/OlxcdTIwMERcXHVEODNFXFx1REREMik/fFxcdURERDIoPzpcXHUyMDBEXFx1RDgzRVxcdURERDIpPykpfFxcdUQ4M0MoPzpcXHVERkZCKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkMtXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGQyg/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCXFx1REZGRC1cXHVERkZGXXxcXHVEODNDW1xcdURGM0VcXHVERjczXFx1REY3Q1xcdURGODRcXHVERjkzXFx1REZBNFxcdURGQThcXHVERkVCXFx1REZFRF18XFx1RDgzRFtcXHVEQ0JCXFx1RENCQ1xcdUREMjdcXHVERDJDXFx1REU4MFxcdURFOTJdfFxcdUQ4M0UoPzpbXFx1RERBRlxcdUREQkNcXHVEREJEXSg/OlxcdTIwMERcXHUyN0ExXFx1RkUwRj8pP3xbXFx1RERCMC1cXHVEREIzXXxcXHVERDFEXFx1MjAwRFxcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkZdKSkpP3xcXHVERkZEKD86XFx1MjAwRCg/OltcXHUyNjk1XFx1MjY5NlxcdTI3MDhdXFx1RkUwRj98XFx1Mjc2NFxcdUZFMEY/XFx1MjAwRCg/OlxcdUQ4M0RcXHVEQzhCXFx1MjAwRCk/XFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkJcXHVERkZDXFx1REZGRVxcdURGRkZdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/fFxcdURGRkUoPzpcXHUyMDBEKD86W1xcdTI2OTVcXHUyNjk2XFx1MjcwOF1cXHVGRTBGP3xcXHUyNzY0XFx1RkUwRj9cXHUyMDBEKD86XFx1RDgzRFxcdURDOEJcXHUyMDBEKT9cXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZEXFx1REZGRl18XFx1RDgzQ1tcXHVERjNFXFx1REY3M1xcdURGN0NcXHVERjg0XFx1REY5M1xcdURGQTRcXHVERkE4XFx1REZFQlxcdURGRURdfFxcdUQ4M0RbXFx1RENCQlxcdURDQkNcXHVERDI3XFx1REQyQ1xcdURFODBcXHVERTkyXXxcXHVEODNFKD86W1xcdUREQUZcXHVEREJDXFx1RERCRF0oPzpcXHUyMDBEXFx1MjdBMVxcdUZFMEY/KT98W1xcdUREQjAtXFx1RERCM118XFx1REQxRFxcdTIwMERcXHVEODNFXFx1REREMVxcdUQ4M0NbXFx1REZGQi1cXHVERkZGXSkpKT98XFx1REZGRig/OlxcdTIwMEQoPzpbXFx1MjY5NVxcdTI2OTZcXHUyNzA4XVxcdUZFMEY/fFxcdTI3NjRcXHVGRTBGP1xcdTIwMEQoPzpcXHVEODNEXFx1REM4QlxcdTIwMEQpP1xcdUQ4M0VcXHVEREQxXFx1RDgzQ1tcXHVERkZCLVxcdURGRkVdfFxcdUQ4M0NbXFx1REYzRVxcdURGNzNcXHVERjdDXFx1REY4NFxcdURGOTNcXHVERkE0XFx1REZBOFxcdURGRUJcXHVERkVEXXxcXHVEODNEW1xcdURDQkJcXHVEQ0JDXFx1REQyN1xcdUREMkNcXHVERTgwXFx1REU5Ml18XFx1RDgzRSg/OltcXHVEREFGXFx1RERCQ1xcdUREQkRdKD86XFx1MjAwRFxcdTI3QTFcXHVGRTBGPyk/fFtcXHVEREIwLVxcdUREQjNdfFxcdUREMURcXHUyMDBEXFx1RDgzRVxcdURERDFcXHVEODNDW1xcdURGRkItXFx1REZGRl0pKSk/KSk/fFxcdURFRjEoPzpcXHVEODNDKD86XFx1REZGQig/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQy1cXHVERkZGXSk/fFxcdURGRkMoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkJcXHVERkZELVxcdURGRkZdKT98XFx1REZGRCg/OlxcdTIwMERcXHVEODNFXFx1REVGMlxcdUQ4M0NbXFx1REZGQlxcdURGRkNcXHVERkZFXFx1REZGRl0pP3xcXHVERkZFKD86XFx1MjAwRFxcdUQ4M0VcXHVERUYyXFx1RDgzQ1tcXHVERkZCLVxcdURGRkRcXHVERkZGXSk/fFxcdURGRkYoPzpcXHUyMDBEXFx1RDgzRVxcdURFRjJcXHVEODNDW1xcdURGRkItXFx1REZGRV0pPykpPykvZztcbn07XG5cbmNvbnN0IHNlZ21lbnRlciA9IG5ldyBJbnRsLlNlZ21lbnRlcigpO1xuXG5jb25zdCBkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXggPSAvXlxccHtEZWZhdWx0X0lnbm9yYWJsZV9Db2RlX1BvaW50fSQvdTtcblxuZnVuY3Rpb24gc3RyaW5nV2lkdGgkMShzdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuXHRpZiAodHlwZW9mIHN0cmluZyAhPT0gJ3N0cmluZycgfHwgc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0Y29uc3Qge1xuXHRcdGFtYmlndW91c0lzTmFycm93ID0gdHJ1ZSxcblx0XHRjb3VudEFuc2lFc2NhcGVDb2RlcyA9IGZhbHNlLFxuXHR9ID0gb3B0aW9ucztcblxuXHRpZiAoIWNvdW50QW5zaUVzY2FwZUNvZGVzKSB7XG5cdFx0c3RyaW5nID0gc3RyaXBBbnNpKHN0cmluZyk7XG5cdH1cblxuXHRpZiAoc3RyaW5nLmxlbmd0aCA9PT0gMCkge1xuXHRcdHJldHVybiAwO1xuXHR9XG5cblx0bGV0IHdpZHRoID0gMDtcblx0Y29uc3QgZWFzdEFzaWFuV2lkdGhPcHRpb25zID0ge2FtYmlndW91c0FzV2lkZTogIWFtYmlndW91c0lzTmFycm93fTtcblxuXHRmb3IgKGNvbnN0IHtzZWdtZW50OiBjaGFyYWN0ZXJ9IG9mIHNlZ21lbnRlci5zZWdtZW50KHN0cmluZykpIHtcblx0XHRjb25zdCBjb2RlUG9pbnQgPSBjaGFyYWN0ZXIuY29kZVBvaW50QXQoMCk7XG5cblx0XHQvLyBJZ25vcmUgY29udHJvbCBjaGFyYWN0ZXJzXG5cdFx0aWYgKGNvZGVQb2ludCA8PSAweDFGIHx8IChjb2RlUG9pbnQgPj0gMHg3RiAmJiBjb2RlUG9pbnQgPD0gMHg5RikpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIElnbm9yZSB6ZXJvLXdpZHRoIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4MjBfMEIgJiYgY29kZVBvaW50IDw9IDB4MjBfMEYpIC8vIFplcm8td2lkdGggc3BhY2UsIG5vbi1qb2luZXIsIGpvaW5lciwgbGVmdC10by1yaWdodCBtYXJrLCByaWdodC10by1sZWZ0IG1hcmtcblx0XHRcdHx8IGNvZGVQb2ludCA9PT0gMHhGRV9GRiAvLyBaZXJvLXdpZHRoIG5vLWJyZWFrIHNwYWNlXG5cdFx0KSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBJZ25vcmUgY29tYmluaW5nIGNoYXJhY3RlcnNcblx0XHRpZiAoXG5cdFx0XHQoY29kZVBvaW50ID49IDB4M18wMCAmJiBjb2RlUG9pbnQgPD0gMHgzXzZGKSAvLyBDb21iaW5pbmcgZGlhY3JpdGljYWwgbWFya3Ncblx0XHRcdHx8IChjb2RlUG9pbnQgPj0gMHgxQV9CMCAmJiBjb2RlUG9pbnQgPD0gMHgxQV9GRikgLy8gQ29tYmluaW5nIGRpYWNyaXRpY2FsIG1hcmtzIGV4dGVuZGVkXG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MURfQzAgJiYgY29kZVBvaW50IDw9IDB4MURfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBzdXBwbGVtZW50XG5cdFx0XHR8fCAoY29kZVBvaW50ID49IDB4MjBfRDAgJiYgY29kZVBvaW50IDw9IDB4MjBfRkYpIC8vIENvbWJpbmluZyBkaWFjcml0aWNhbCBtYXJrcyBmb3Igc3ltYm9sc1xuXHRcdFx0fHwgKGNvZGVQb2ludCA+PSAweEZFXzIwICYmIGNvZGVQb2ludCA8PSAweEZFXzJGKSAvLyBDb21iaW5pbmcgaGFsZiBtYXJrc1xuXHRcdCkge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHN1cnJvZ2F0ZSBwYWlyc1xuXHRcdGlmIChjb2RlUG9pbnQgPj0gMHhEOF8wMCAmJiBjb2RlUG9pbnQgPD0gMHhERl9GRikge1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0Ly8gSWdub3JlIHZhcmlhdGlvbiBzZWxlY3RvcnNcblx0XHRpZiAoY29kZVBvaW50ID49IDB4RkVfMDAgJiYgY29kZVBvaW50IDw9IDB4RkVfMEYpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdC8vIFRoaXMgY292ZXJzIHNvbWUgb2YgdGhlIGFib3ZlIGNhc2VzLCBidXQgd2Ugc3RpbGwga2VlcCB0aGVtIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLlxuXHRcdGlmIChkZWZhdWx0SWdub3JhYmxlQ29kZVBvaW50UmVnZXgudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHRjb250aW51ZTtcblx0XHR9XG5cblx0XHQvLyBUT0RPOiBVc2UgYC9cXHB7UkdJX0Vtb2ppfS92YCB3aGVuIHRhcmdldGluZyBOb2RlLmpzIDIwLlxuXHRcdGlmIChlbW9qaVJlZ2V4KCkudGVzdChjaGFyYWN0ZXIpKSB7XG5cdFx0XHR3aWR0aCArPSAyO1xuXHRcdFx0Y29udGludWU7XG5cdFx0fVxuXG5cdFx0d2lkdGggKz0gZWFzdEFzaWFuV2lkdGgoY29kZVBvaW50LCBlYXN0QXNpYW5XaWR0aE9wdGlvbnMpO1xuXHR9XG5cblx0cmV0dXJuIHdpZHRoO1xufVxuXG5mdW5jdGlvbiBpc1VuaWNvZGVTdXBwb3J0ZWQoKSB7XG5cdGNvbnN0IHtlbnZ9ID0gcHJvY2VzcyQxO1xuXHRjb25zdCB7VEVSTSwgVEVSTV9QUk9HUkFNfSA9IGVudjtcblxuXHRpZiAocHJvY2VzcyQxLnBsYXRmb3JtICE9PSAnd2luMzInKSB7XG5cdFx0cmV0dXJuIFRFUk0gIT09ICdsaW51eCc7IC8vIExpbnV4IGNvbnNvbGUgKGtlcm5lbClcblx0fVxuXG5cdHJldHVybiBCb29sZWFuKGVudi5XVF9TRVNTSU9OKSAvLyBXaW5kb3dzIFRlcm1pbmFsXG5cdFx0fHwgQm9vbGVhbihlbnYuVEVSTUlOVVNfU1VCTElNRSkgLy8gVGVybWludXMgKDwwLjIuMjcpXG5cdFx0fHwgZW52LkNvbkVtdVRhc2sgPT09ICd7Y21kOjpDbWRlcn0nIC8vIENvbkVtdSBhbmQgY21kZXJcblx0XHR8fCBURVJNX1BST0dSQU0gPT09ICdUZXJtaW51cy1TdWJsaW1lJ1xuXHRcdHx8IFRFUk1fUFJPR1JBTSA9PT0gJ3ZzY29kZSdcblx0XHR8fCBURVJNID09PSAneHRlcm0tMjU2Y29sb3InXG5cdFx0fHwgVEVSTSA9PT0gJ2FsYWNyaXR0eSdcblx0XHR8fCBURVJNID09PSAncnh2dC11bmljb2RlJ1xuXHRcdHx8IFRFUk0gPT09ICdyeHZ0LXVuaWNvZGUtMjU2Y29sb3InXG5cdFx0fHwgZW52LlRFUk1JTkFMX0VNVUxBVE9SID09PSAnSmV0QnJhaW5zLUplZGlUZXJtJztcbn1cblxuY29uc3QgVFlQRV9DT0xPUl9NQVAgPSB7XG4gIGluZm86IFwiY3lhblwiLFxuICBmYWlsOiBcInJlZFwiLFxuICBzdWNjZXNzOiBcImdyZWVuXCIsXG4gIHJlYWR5OiBcImdyZWVuXCIsXG4gIHN0YXJ0OiBcIm1hZ2VudGFcIlxufTtcbmNvbnN0IExFVkVMX0NPTE9SX01BUCA9IHtcbiAgMDogXCJyZWRcIixcbiAgMTogXCJ5ZWxsb3dcIlxufTtcbmNvbnN0IHVuaWNvZGUgPSBpc1VuaWNvZGVTdXBwb3J0ZWQoKTtcbmNvbnN0IHMgPSAoYywgZmFsbGJhY2spID0+IHVuaWNvZGUgPyBjIDogZmFsbGJhY2s7XG5jb25zdCBUWVBFX0lDT05TID0ge1xuICBlcnJvcjogcyhcIlxcdTI3MTZcIiwgXCJcXHhEN1wiKSxcbiAgZmF0YWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHJlYWR5OiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIHdhcm46IHMoXCJcXHUyNkEwXCIsIFwiXFx1MjAzQ1wiKSxcbiAgaW5mbzogcyhcIlxcdTIxMzlcIiwgXCJpXCIpLFxuICBzdWNjZXNzOiBzKFwiXFx1MjcxNFwiLCBcIlxcdTIyMUFcIiksXG4gIGRlYnVnOiBzKFwiXFx1MjY5OVwiLCBcIkRcIiksXG4gIHRyYWNlOiBzKFwiXFx1MjE5MlwiLCBcIlxcdTIxOTJcIiksXG4gIGZhaWw6IHMoXCJcXHUyNzE2XCIsIFwiXFx4RDdcIiksXG4gIHN0YXJ0OiBzKFwiXFx1MjVEMFwiLCBcIm9cIiksXG4gIGxvZzogXCJcIlxufTtcbmZ1bmN0aW9uIHN0cmluZ1dpZHRoKHN0cikge1xuICBjb25zdCBoYXNJQ1UgPSB0eXBlb2YgSW50bCA9PT0gXCJvYmplY3RcIjtcbiAgaWYgKCFoYXNJQ1UgfHwgIUludGwuU2VnbWVudGVyKSB7XG4gICAgcmV0dXJuIHN0cmlwQW5zaSQxKHN0cikubGVuZ3RoO1xuICB9XG4gIHJldHVybiBzdHJpbmdXaWR0aCQxKHN0cik7XG59XG5jbGFzcyBGYW5jeVJlcG9ydGVyIGV4dGVuZHMgQmFzaWNSZXBvcnRlciB7XG4gIGZvcm1hdFN0YWNrKHN0YWNrLCBvcHRzKSB7XG4gICAgY29uc3QgaW5kZW50ID0gXCIgIFwiLnJlcGVhdCgob3B0cz8uZXJyb3JMZXZlbCB8fCAwKSArIDEpO1xuICAgIHJldHVybiBgXG4ke2luZGVudH1gICsgcGFyc2VTdGFjayhzdGFjaykubWFwKFxuICAgICAgKGxpbmUpID0+IFwiICBcIiArIGxpbmUucmVwbGFjZSgvXmF0ICsvLCAobSkgPT4gY29sb3JzLmdyYXkobSkpLnJlcGxhY2UoL1xcKCguKylcXCkvLCAoXywgbSkgPT4gYCgke2NvbG9ycy5jeWFuKG0pfSlgKVxuICAgICkuam9pbihgXG4ke2luZGVudH1gKTtcbiAgfVxuICBmb3JtYXRUeXBlKGxvZ09iaiwgaXNCYWRnZSwgb3B0cykge1xuICAgIGNvbnN0IHR5cGVDb2xvciA9IFRZUEVfQ09MT1JfTUFQW2xvZ09iai50eXBlXSB8fCBMRVZFTF9DT0xPUl9NQVBbbG9nT2JqLmxldmVsXSB8fCBcImdyYXlcIjtcbiAgICBpZiAoaXNCYWRnZSkge1xuICAgICAgcmV0dXJuIGdldEJnQ29sb3IodHlwZUNvbG9yKShcbiAgICAgICAgY29sb3JzLmJsYWNrKGAgJHtsb2dPYmoudHlwZS50b1VwcGVyQ2FzZSgpfSBgKVxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgX3R5cGUgPSB0eXBlb2YgVFlQRV9JQ09OU1tsb2dPYmoudHlwZV0gPT09IFwic3RyaW5nXCIgPyBUWVBFX0lDT05TW2xvZ09iai50eXBlXSA6IGxvZ09iai5pY29uIHx8IGxvZ09iai50eXBlO1xuICAgIHJldHVybiBfdHlwZSA/IGdldENvbG9yKHR5cGVDb2xvcikoX3R5cGUpIDogXCJcIjtcbiAgfVxuICBmb3JtYXRMb2dPYmoobG9nT2JqLCBvcHRzKSB7XG4gICAgY29uc3QgW21lc3NhZ2UsIC4uLmFkZGl0aW9uYWxdID0gdGhpcy5mb3JtYXRBcmdzKGxvZ09iai5hcmdzLCBvcHRzKS5zcGxpdChcbiAgICAgIFwiXFxuXCJcbiAgICApO1xuICAgIGlmIChsb2dPYmoudHlwZSA9PT0gXCJib3hcIikge1xuICAgICAgcmV0dXJuIGJveChcbiAgICAgICAgY2hhcmFjdGVyRm9ybWF0KFxuICAgICAgICAgIG1lc3NhZ2UgKyAoYWRkaXRpb25hbC5sZW5ndGggPiAwID8gXCJcXG5cIiArIGFkZGl0aW9uYWwuam9pbihcIlxcblwiKSA6IFwiXCIpXG4gICAgICAgICksXG4gICAgICAgIHtcbiAgICAgICAgICB0aXRsZTogbG9nT2JqLnRpdGxlID8gY2hhcmFjdGVyRm9ybWF0KGxvZ09iai50aXRsZSkgOiB2b2lkIDAsXG4gICAgICAgICAgc3R5bGU6IGxvZ09iai5zdHlsZVxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBkYXRlID0gdGhpcy5mb3JtYXREYXRlKGxvZ09iai5kYXRlLCBvcHRzKTtcbiAgICBjb25zdCBjb2xvcmVkRGF0ZSA9IGRhdGUgJiYgY29sb3JzLmdyYXkoZGF0ZSk7XG4gICAgY29uc3QgaXNCYWRnZSA9IGxvZ09iai5iYWRnZSA/PyBsb2dPYmoubGV2ZWwgPCAyO1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLmZvcm1hdFR5cGUobG9nT2JqLCBpc0JhZGdlLCBvcHRzKTtcbiAgICBjb25zdCB0YWcgPSBsb2dPYmoudGFnID8gY29sb3JzLmdyYXkobG9nT2JqLnRhZykgOiBcIlwiO1xuICAgIGxldCBsaW5lO1xuICAgIGNvbnN0IGxlZnQgPSB0aGlzLmZpbHRlckFuZEpvaW4oW3R5cGUsIGNoYXJhY3RlckZvcm1hdChtZXNzYWdlKV0pO1xuICAgIGNvbnN0IHJpZ2h0ID0gdGhpcy5maWx0ZXJBbmRKb2luKG9wdHMuY29sdW1ucyA/IFt0YWcsIGNvbG9yZWREYXRlXSA6IFt0YWddKTtcbiAgICBjb25zdCBzcGFjZSA9IChvcHRzLmNvbHVtbnMgfHwgMCkgLSBzdHJpbmdXaWR0aChsZWZ0KSAtIHN0cmluZ1dpZHRoKHJpZ2h0KSAtIDI7XG4gICAgbGluZSA9IHNwYWNlID4gMCAmJiAob3B0cy5jb2x1bW5zIHx8IDApID49IDgwID8gbGVmdCArIFwiIFwiLnJlcGVhdChzcGFjZSkgKyByaWdodCA6IChyaWdodCA/IGAke2NvbG9ycy5ncmF5KGBbJHtyaWdodH1dYCl9IGAgOiBcIlwiKSArIGxlZnQ7XG4gICAgbGluZSArPSBjaGFyYWN0ZXJGb3JtYXQoXG4gICAgICBhZGRpdGlvbmFsLmxlbmd0aCA+IDAgPyBcIlxcblwiICsgYWRkaXRpb25hbC5qb2luKFwiXFxuXCIpIDogXCJcIlxuICAgICk7XG4gICAgaWYgKGxvZ09iai50eXBlID09PSBcInRyYWNlXCIpIHtcbiAgICAgIGNvbnN0IF9lcnIgPSBuZXcgRXJyb3IoXCJUcmFjZTogXCIgKyBsb2dPYmoubWVzc2FnZSk7XG4gICAgICBsaW5lICs9IHRoaXMuZm9ybWF0U3RhY2soX2Vyci5zdGFjayB8fCBcIlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGlzQmFkZ2UgPyBcIlxcblwiICsgbGluZSArIFwiXFxuXCIgOiBsaW5lO1xuICB9XG59XG5mdW5jdGlvbiBjaGFyYWN0ZXJGb3JtYXQoc3RyKSB7XG4gIHJldHVybiBzdHIucmVwbGFjZSgvYChbXmBdKylgL2dtLCAoXywgbSkgPT4gY29sb3JzLmN5YW4obSkpLnJlcGxhY2UoL1xccytfKFteX10rKV9cXHMrL2dtLCAoXywgbSkgPT4gYCAke2NvbG9ycy51bmRlcmxpbmUobSl9IGApO1xufVxuZnVuY3Rpb24gZ2V0Q29sb3IoY29sb3IgPSBcIndoaXRlXCIpIHtcbiAgcmV0dXJuIGNvbG9yc1tjb2xvcl0gfHwgY29sb3JzLndoaXRlO1xufVxuZnVuY3Rpb24gZ2V0QmdDb2xvcihjb2xvciA9IFwiYmdXaGl0ZVwiKSB7XG4gIHJldHVybiBjb2xvcnNbYGJnJHtjb2xvclswXS50b1VwcGVyQ2FzZSgpfSR7Y29sb3Iuc2xpY2UoMSl9YF0gfHwgY29sb3JzLmJnV2hpdGU7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUNvbnNvbGEob3B0aW9ucyA9IHt9KSB7XG4gIGxldCBsZXZlbCA9IF9nZXREZWZhdWx0TG9nTGV2ZWwoKTtcbiAgaWYgKHByb2Nlc3MuZW52LkNPTlNPTEFfTEVWRUwpIHtcbiAgICBsZXZlbCA9IE51bWJlci5wYXJzZUludChwcm9jZXNzLmVudi5DT05TT0xBX0xFVkVMKSA/PyBsZXZlbDtcbiAgfVxuICBjb25zdCBjb25zb2xhMiA9IGNyZWF0ZUNvbnNvbGEkMSh7XG4gICAgbGV2ZWwsXG4gICAgZGVmYXVsdHM6IHsgbGV2ZWwgfSxcbiAgICBzdGRvdXQ6IHByb2Nlc3Muc3Rkb3V0LFxuICAgIHN0ZGVycjogcHJvY2Vzcy5zdGRlcnIsXG4gICAgcHJvbXB0OiAoLi4uYXJncykgPT4gaW1wb3J0KCcuLi9jaHVua3MvcHJvbXB0Lm1qcycpLnRoZW4oKG0pID0+IG0ucHJvbXB0KC4uLmFyZ3MpKSxcbiAgICByZXBvcnRlcnM6IG9wdGlvbnMucmVwb3J0ZXJzIHx8IFtcbiAgICAgIG9wdGlvbnMuZmFuY3kgPz8gIShUIHx8IEEpID8gbmV3IEZhbmN5UmVwb3J0ZXIoKSA6IG5ldyBCYXNpY1JlcG9ydGVyKClcbiAgICBdLFxuICAgIC4uLm9wdGlvbnNcbiAgfSk7XG4gIHJldHVybiBjb25zb2xhMjtcbn1cbmZ1bmN0aW9uIF9nZXREZWZhdWx0TG9nTGV2ZWwoKSB7XG4gIGlmIChVKSB7XG4gICAgcmV0dXJuIExvZ0xldmVscy5kZWJ1ZztcbiAgfVxuICBpZiAoQSkge1xuICAgIHJldHVybiBMb2dMZXZlbHMud2FybjtcbiAgfVxuICByZXR1cm4gTG9nTGV2ZWxzLmluZm87XG59XG5jb25zdCBjb25zb2xhID0gY3JlYXRlQ29uc29sYSgpO1xuXG5leHBvcnQgeyBjb25zb2xhIGFzIGEsIGNyZWF0ZUNvbnNvbGEgYXMgYywgaXNVbmljb2RlU3VwcG9ydGVkIGFzIGkgfTtcbiIsICIvKiBlc2xpbnQtZGlzYWJsZSB1bmljb3JuL25vLXByb2Nlc3MtZXhpdCAqL1xuaW1wb3J0IGFzc2VydCBmcm9tIFwibm9kZTphc3NlcnRcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCB7IGNyZWF0ZUhhc2ggfSBmcm9tIFwibm9kZTpjcnlwdG9cIjtcbmltcG9ydCBmc1N5bmMgZnJvbSBcIm5vZGU6ZnNcIjtcbmltcG9ydCBmcyBmcm9tIFwibm9kZTpmcy9wcm9taXNlc1wiO1xuaW1wb3J0IHsgaGFzaCB9IGZyb20gXCJvaGFzaFwiO1xuaW1wb3J0IGV6U3Bhd24gZnJvbSBcIkBqc2RldnRvb2xzL2V6LXNwYXduXCI7XG5pbXBvcnQgeyBkZWZpbmVDb21tYW5kLCBydW5NYWluIH0gZnJvbSBcImNpdHR5XCI7XG5pbXBvcnQgeyBnZXRQYWNrYWdlTWFuaWZlc3QsIHR5cGUgUGFja2FnZU1hbmlmZXN0IH0gZnJvbSBcInF1ZXJ5LXJlZ2lzdHJ5XCI7XG5pbXBvcnQgdHlwZSB7IENvbW1lbnQgfSBmcm9tIFwiQHBrZy1wci1uZXcvdXRpbHNcIjtcbmltcG9ydCB7XG4gIGFiYnJldmlhdGVDb21taXRIYXNoLFxuICBleHRyYWN0T3duZXJBbmRSZXBvLFxuICBleHRyYWN0UmVwb3NpdG9yeSxcbn0gZnJvbSBcIkBwa2ctcHItbmV3L3V0aWxzXCI7XG5pbXBvcnQgeyBnbG9iIH0gZnJvbSBcInRpbnlnbG9iYnlcIjtcbmltcG9ydCBpZ25vcmUgZnJvbSBcImlnbm9yZVwiO1xuaW1wb3J0IFwiLi9lbnZpcm9ubWVudHNcIjtcbmltcG9ydCB7IGlzQmluYXJ5RmlsZSB9IGZyb20gXCJpc2JpbmFyeWZpbGVcIjtcbmltcG9ydCB7IHdyaXRlUGFja2FnZUpTT04sIHR5cGUgUGFja2FnZUpzb24gfSBmcm9tIFwicGtnLXR5cGVzXCI7XG5pbXBvcnQgcGtnIGZyb20gXCIuL3BhY2thZ2UuanNvblwiIHdpdGggeyB0eXBlOiBcImpzb25cIiB9O1xuaW1wb3J0IHsgY3JlYXRlRGVmYXVsdFRlbXBsYXRlIH0gZnJvbSBcIi4vdGVtcGxhdGVcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBjb25zdCBBUElfVVJMOiBzdHJpbmc7XG59XG5cbnR5cGUgT3V0cHV0TWV0YWRhdGEgPSB7XG4gIHBhY2thZ2VzOiB7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIHVybDogc3RyaW5nO1xuICAgIHNoYXN1bTogc3RyaW5nO1xuICB9W107XG4gIHRlbXBsYXRlczoge1xuICAgIG5hbWU6IHN0cmluZztcbiAgICB1cmw6IHN0cmluZztcbiAgfVtdO1xufTtcblxuY29uc3QgYXBpVXJsID0gcHJvY2Vzcy5lbnYuQVBJX1VSTCA/PyBBUElfVVJMO1xuY29uc3QgcHVibGlzaFVybCA9IG5ldyBVUkwoXCIvcHVibGlzaFwiLCBhcGlVcmwpO1xuY29uc3QgY3JlYXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY3JlYXRlXCIsIGFwaVVybCk7XG5jb25zdCB1cGxvYWRNdWx0aXBhcnQgPSBuZXcgVVJMKFwiL211bHRpcGFydC91cGxvYWRcIiwgYXBpVXJsKTtcbmNvbnN0IGNvbXBsZXRlTXVsdGlwYXJ0ID0gbmV3IFVSTChcIi9tdWx0aXBhcnQvY29tcGxldGVcIiwgYXBpVXJsKTtcblxuY29uc3QgbWFpbiA9IGRlZmluZUNvbW1hbmQoe1xuICBtZXRhOiB7XG4gICAgdmVyc2lvbjogcGtnLnZlcnNpb24sXG4gICAgbmFtZTogXCJzdGFja2JsaXR6XCIsXG4gICAgZGVzY3JpcHRpb246IFwiQSBDTEkgZm9yIHBrZy5wci5uZXcgKENvbnRpbnVvdXMgUmVsZWFzZXMpXCIsXG4gIH0sXG4gIHN1YkNvbW1hbmRzOiB7XG4gICAgcHVibGlzaDogKCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIGNvbXBhY3Q6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiY29tcGFjdCB1cmxzLiBUaGUgc2hvcnRlc3QgZm9ybSBvZiB1cmxzIGxpa2UgcGtnLnByLm5ldy90aW55YmVuY2hAYTgzMmE1NSlcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBlZXJEZXBzOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcImhhbmRsZSBwZWVyRGVwZW5kZW5jaWVzIGJ5IHNldHRpbmcgdGhlIHdvcmtzcGFjZSB2ZXJzaW9uIGluc3RlYWQgb2Ygd2hhdCBoYXMgYmVlbiBzZXQgaW4gdGhlIHBlZXJEZXBzIGl0c2VsZi4gLS1wZWVyRGVwcyBub3QgYmVpbmcgdHJ1ZSB3b3VsZCBsZWF2ZSBwZWVyRGVwZW5kZW5jaWVzIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIgaXRzZWxmIChucG0sIHBucG0pXCIsXG4gICAgICAgICAgICBkZWZhdWx0OiBmYWxzZSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBucG06IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwidXNlIGBwbnBtIHBhY2tgIGluc3RlYWQgb2YgYG5wbSBwYWNrIC0tanNvbmBcIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiZ2VuZXJhdGUgc3RhY2tibGl0eiB0ZW1wbGF0ZXMgb3V0IG9mIGRpcmVjdG9yaWVzIGluIHRoZSBjdXJyZW50IHJlcG8gd2l0aCB0aGUgbmV3IGJ1aWx0IHBhY2thZ2VzXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb21tZW50OiB7XG4gICAgICAgICAgICB0eXBlOiBcInN0cmluZ1wiLCAvLyBcIm9mZlwiLCBcImNyZWF0ZVwiLCBcInVwZGF0ZVwiIChkZWZhdWx0KVxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBcIm9mZlwiIGZvciBubyBjb21tZW50cyAoc2lsZW50IG1vZGUpLiBcImNyZWF0ZVwiIGZvciBjb21tZW50IG9uIGVhY2ggcHVibGlzaC4gXCJ1cGRhdGVcIiBmb3Igb25lIGNvbW1lbnQgYWNyb3NzIHRoZSBwdWxsIHJlcXVlc3Qgd2l0aCBlZGl0cyBvbiBlYWNoIHB1Ymxpc2ggKGRlZmF1bHQpYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IFwidXBkYXRlXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBcIm9ubHktdGVtcGxhdGVzXCI6IHtcbiAgICAgICAgICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBnZW5lcmF0ZSBvbmx5IHN0YWNrYmxpdHogdGVtcGxhdGVzYCxcbiAgICAgICAgICAgIGRlZmF1bHQ6IGZhbHNlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAganNvbjoge1xuICAgICAgICAgICAgdHlwZTogXCJtaXhlZFwiLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBTYXZlIG1ldGFkYXRhIHRvIGEgSlNPTiBmaWxlLiBJZiB0cnVlLCBsb2cgdGhlIG91dHB1dCBmb3IgcGlwaW5nLiBJZiBhIHN0cmluZywgc2F2ZSB0aGUgb3V0cHV0IHRvIHRoZSBzcGVjaWZpZWQgZmlsZSBwYXRoLmAsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwYWNrYWdlTWFuYWdlcjoge1xuICAgICAgICAgICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNwZWNpZnkgdGhlIHBhY2thZ2UgbWFuYWdlciB0byB1c2UgKG5wbSwgYnVuLCBwbnBtLCB5YXJuKVwiLFxuICAgICAgICAgICAgZW51bTogW1wibnBtXCIsIFwiYnVuXCIsIFwicG5wbVwiLCBcInlhcm5cIl0sXG4gICAgICAgICAgICBkZWZhdWx0OiBcIm5wbVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYmluOiB7XG4gICAgICAgICAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICBcIlNldCB0byB0cnVlIGlmIHlvdXIgcGFja2FnZSBpcyBhIGJpbmFyeSBhcHBsaWNhdGlvbiBhbmQgeW91IHdvdWxkIGxpa2UgdG8gc2hvdyBhbiBleGVjdXRlIGNvbW1hbmQgaW5zdGVhZCBvZiBhbiBpbnN0YWxsIGNvbW1hbmQuXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgcnVuOiBhc3luYyAoeyBhcmdzIH0pID0+IHtcbiAgICAgICAgICBjb25zdCBwYXRocyA9XG4gICAgICAgICAgICBhcmdzLl8ubGVuZ3RoID4gMFxuICAgICAgICAgICAgICA/IGF3YWl0IGdsb2IoYXJncy5fLCB7XG4gICAgICAgICAgICAgICAgICBleHBhbmREaXJlY3RvcmllczogZmFsc2UsXG4gICAgICAgICAgICAgICAgICBvbmx5RGlyZWN0b3JpZXM6IHRydWUsXG4gICAgICAgICAgICAgICAgICBhYnNvbHV0ZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICA6IFtwcm9jZXNzLmN3ZCgpXTtcblxuICAgICAgICAgIGNvbnN0IHRlbXBsYXRlcyA9IGF3YWl0IGdsb2IoYXJncy50ZW1wbGF0ZSB8fCBbXSwge1xuICAgICAgICAgICAgZXhwYW5kRGlyZWN0b3JpZXM6IGZhbHNlLFxuICAgICAgICAgICAgb25seURpcmVjdG9yaWVzOiB0cnVlLFxuICAgICAgICAgICAgYWJzb2x1dGU6IHRydWUsXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuXG4gICAgICAgICAgY29uc3QgaXNDb21wYWN0ID0gISFhcmdzLmNvbXBhY3Q7XG4gICAgICAgICAgbGV0IHBhY2tNZXRob2Q6IFBhY2tNZXRob2QgPSBcIm5wbVwiO1xuXG4gICAgICAgICAgaWYgKGFyZ3MucG5wbSkge1xuICAgICAgICAgICAgcGFja01ldGhvZCA9IFwicG5wbVwiO1xuICAgICAgICAgIH0gZWxzZSBpZiAoYXJncy55YXJuKSB7XG4gICAgICAgICAgICBwYWNrTWV0aG9kID0gXCJ5YXJuXCI7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgaXNQZWVyRGVwc0VuYWJsZWQgPSAhIWFyZ3MucGVlckRlcHM7XG4gICAgICAgICAgY29uc3QgaXNPbmx5VGVtcGxhdGVzID0gISFhcmdzW1wib25seS10ZW1wbGF0ZXNcIl07XG4gICAgICAgICAgY29uc3QgaXNCaW5hcnlBcHBsaWNhdGlvbiA9ICEhYXJncy5iaW47XG4gICAgICAgICAgY29uc3QgY29tbWVudDogQ29tbWVudCA9IGFyZ3MuY29tbWVudCBhcyBDb21tZW50O1xuICAgICAgICAgIGNvbnN0IHNlbGVjdGVkUGFja2FnZU1hbmFnZXIgPSBhcmdzLnBhY2thZ2VNYW5hZ2VyIGFzXG4gICAgICAgICAgICB8IFwibnBtXCJcbiAgICAgICAgICAgIHwgXCJidW5cIlxuICAgICAgICAgICAgfCBcInBucG1cIlxuICAgICAgICAgICAgfCBcInlhcm5cIjtcblxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFbXCJucG1cIiwgXCJidW5cIiwgXCJwbnBtXCIsIFwieWFyblwiXS5pbmNsdWRlcyhzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgYFVuc3VwcG9ydGVkIHBhY2thZ2UgbWFuYWdlcjogJHtzZWxlY3RlZFBhY2thZ2VNYW5hZ2VyfS4gU3VwcG9ydGVkIG1hbmFnZXJzIGFyZSBucG0sIGJ1biwgcG5wbSwgeWFybi5gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoIXByb2Nlc3MuZW52LlRFU1QgJiYgcHJvY2Vzcy5lbnYuR0lUSFVCX0FDVElPTlMgIT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICBcIkNvbnRpbnVvdXMgUmVsZWFzZXMgYXJlIG9ubHkgYXZhaWxhYmxlIGluIEdpdEh1YiBBY3Rpb25zLlwiLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBHSVRIVUJfUkVQT1NJVE9SWSxcbiAgICAgICAgICAgIEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICBHSVRIVUJfUlVOX0FUVEVNUFQsXG4gICAgICAgICAgICBHSVRIVUJfQUNUT1JfSUQsXG4gICAgICAgICAgfSA9IHByb2Nlc3MuZW52O1xuXG4gICAgICAgICAgY29uc3QgW293bmVyLCByZXBvXSA9IEdJVEhVQl9SRVBPU0lUT1JZLnNwbGl0KFwiL1wiKTtcblxuICAgICAgICAgIGNvbnN0IG1ldGFkYXRhID0ge1xuICAgICAgICAgICAgb3duZXIsXG4gICAgICAgICAgICByZXBvLFxuICAgICAgICAgICAgcnVuOiBOdW1iZXIoR0lUSFVCX1JVTl9JRCksXG4gICAgICAgICAgICBhdHRlbXB0OiBOdW1iZXIoR0lUSFVCX1JVTl9BVFRFTVBUKSxcbiAgICAgICAgICAgIGFjdG9yOiBOdW1iZXIoR0lUSFVCX0FDVE9SX0lEKSxcbiAgICAgICAgICB9O1xuXG4gICAgICAgICAgY29uc3Qga2V5ID0gaGFzaChtZXRhZGF0YSk7XG5cbiAgICAgICAgICBjb25zdCBjaGVja1Jlc3BvbnNlID0gYXdhaXQgZmV0Y2gobmV3IFVSTChcIi9jaGVja1wiLCBhcGlVcmwpLCB7XG4gICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgICBvd25lcixcbiAgICAgICAgICAgICAgcmVwbyxcbiAgICAgICAgICAgICAga2V5LFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICBpZiAoIWNoZWNrUmVzcG9uc2Uub2spIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgY2hlY2tSZXNwb25zZS50ZXh0KCkpO1xuICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnN0IHsgc2hhIH0gPSBhd2FpdCBjaGVja1Jlc3BvbnNlLmpzb24oKTtcblxuICAgICAgICAgIGNvbnN0IGRlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gPSBuZXcgTWFwKCk7IC8vIHBrZy5wci5uZXcgdmVyc2lvbnMgb2YgdGhlIHBhY2thZ2VcbiAgICAgICAgICBjb25zdCByZWFsRGVwczogTWFwPHN0cmluZywgc3RyaW5nPiB8IG51bGwgPSBpc1BlZXJEZXBzRW5hYmxlZFxuICAgICAgICAgICAgPyBuZXcgTWFwKClcbiAgICAgICAgICAgIDogbnVsbDsgLy8gcmVhbCB2ZXJzaW9ucyBvZiB0aGUgcGFja2FnZSwgdXNlZnVsIGZvciBwZWVyRGVwZW5kZW5jaWVzXG5cbiAgICAgICAgICBjb25zdCBwcmludEpzb24gPSB0eXBlb2YgYXJncy5qc29uID09PSBcImJvb2xlYW5cIjtcbiAgICAgICAgICBjb25zdCBzYXZlSnNvbiA9IHR5cGVvZiBhcmdzLmpzb24gPT09IFwic3RyaW5nXCI7XG4gICAgICAgICAgY29uc3QganNvbkZpbGVQYXRoID0gc2F2ZUpzb24gPyBhcmdzLmpzb24gOiBcIlwiO1xuICAgICAgICAgIGNvbnN0IG91dHB1dE1ldGFkYXRhOiBPdXRwdXRNZXRhZGF0YSA9IHtcbiAgICAgICAgICAgIHBhY2thZ2VzOiBbXSxcbiAgICAgICAgICAgIHRlbXBsYXRlczogW10sXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocEpzb25QYXRoKTtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbikge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAocEpzb24ucHJpdmF0ZSkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKGlzQ29tcGFjdCkge1xuICAgICAgICAgICAgICBhd2FpdCB2ZXJpZnlDb21wYWN0TW9kZShwSnNvbi5uYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkU2hhID0gaXNDb21wYWN0ID8gYWJicmV2aWF0ZUNvbW1pdEhhc2goc2hhKSA6IHNoYTtcbiAgICAgICAgICAgIGNvbnN0IGRlcFVybCA9IG5ldyBVUkwoXG4gICAgICAgICAgICAgIGAvJHtvd25lcn0vJHtyZXBvfS8ke3BKc29uLm5hbWV9QCR7Zm9ybWF0dGVkU2hhfWAsXG4gICAgICAgICAgICAgIGFwaVVybCxcbiAgICAgICAgICAgICkuaHJlZjtcbiAgICAgICAgICAgIGRlcHMuc2V0KHBKc29uLm5hbWUsIGRlcFVybCk7XG4gICAgICAgICAgICByZWFsRGVwcz8uc2V0KHBKc29uLm5hbWUsIHBKc29uLnZlcnNpb24gPz8gZGVwVXJsKTtcblxuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2UgPSBhd2FpdCBmZXRjaChkZXBVcmwpO1xuICAgICAgICAgICAgaWYgKHJlc291cmNlLm9rKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAgICAgICBgJHtwSnNvbi5uYW1lfUAke2Zvcm1hdHRlZFNoYX0gd2FzIGFscmVhZHkgcHVibGlzaGVkIG9uICR7ZGVwVXJsfWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIC8vIENvbGxlY3QgcGFja2FnZSBtZXRhZGF0YVxuICAgICAgICAgICAgb3V0cHV0TWV0YWRhdGEucGFja2FnZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgIHVybDogZGVwVXJsLFxuICAgICAgICAgICAgICBzaGFzdW06IFwiXCIsIC8vIHdpbGwgYmUgZmlsbGVkIGxhdGVyXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHRlbXBsYXRlRGlyIG9mIHRlbXBsYXRlcykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHRlbXBsYXRlRGlyLCBcInBhY2thZ2UuanNvblwiKTtcbiAgICAgICAgICAgIGNvbnN0IHBKc29uQ29udGVudHMgPSBhd2FpdCB0cnlSZWFkRmlsZShwSnNvblBhdGgpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBwSnNvbkNvbnRlbnRzXG4gICAgICAgICAgICAgID8gcGFyc2VQYWNrYWdlSnNvbihwSnNvbkNvbnRlbnRzKVxuICAgICAgICAgICAgICA6IG51bGw7XG5cbiAgICAgICAgICAgIGlmICghcEpzb24gfHwgIXBKc29uQ29udGVudHMpIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBza2lwcGluZyAke3RlbXBsYXRlRGlyfSBiZWNhdXNlIHRoZXJlJ3Mgbm8gcGFja2FnZS5qc29uIGZpbGVgLFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFwSnNvbi5uYW1lKSB7XG4gICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnNvbGUud2FybihcInByZXBhcmluZyB0ZW1wbGF0ZTpcIiwgcEpzb24ubmFtZSk7XG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3RvcmUgPSBhd2FpdCB3cml0ZURlcHMoXG4gICAgICAgICAgICAgIHRlbXBsYXRlRGlyLFxuICAgICAgICAgICAgICBwSnNvbkNvbnRlbnRzLFxuICAgICAgICAgICAgICBwSnNvbixcbiAgICAgICAgICAgICAgZGVwcyxcbiAgICAgICAgICAgICAgcmVhbERlcHMsXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICBjb25zdCBnaXRpZ25vcmVQYXRoID0gcGF0aC5qb2luKHRlbXBsYXRlRGlyLCBcIi5naXRpZ25vcmVcIik7XG4gICAgICAgICAgICBjb25zdCBpZyA9IGlnbm9yZSgpLmFkZChcIm5vZGVfbW9kdWxlc1wiKS5hZGQoXCIuZ2l0XCIpO1xuXG4gICAgICAgICAgICBpZiAoZnNTeW5jLmV4aXN0c1N5bmMoZ2l0aWdub3JlUGF0aCkpIHtcbiAgICAgICAgICAgICAgY29uc3QgZ2l0aWdub3JlQ29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKGdpdGlnbm9yZVBhdGgsIFwidXRmOFwiKTtcbiAgICAgICAgICAgICAgaWcuYWRkKGdpdGlnbm9yZUNvbnRlbnQpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2IoW1wiKiovKlwiXSwge1xuICAgICAgICAgICAgICBjd2Q6IHRlbXBsYXRlRGlyLFxuICAgICAgICAgICAgICBkb3Q6IHRydWUsXG4gICAgICAgICAgICAgIG9ubHlGaWxlczogdHJ1ZSxcbiAgICAgICAgICAgICAgaWdub3JlOiBbXCIqKi9ub2RlX21vZHVsZXNcIiwgXCIuZ2l0XCJdLCAvLyBhbHdheXMgaWdub3JlIG5vZGVfbW9kdWxlcyBhbmQgLmdpdFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlcmVkRmlsZXMgPSBmaWxlcy5maWx0ZXIoKGZpbGUpID0+ICFpZy5pZ25vcmVzKGZpbGUpKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBmaWx0ZXJlZEZpbGVzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbGUgPSBhd2FpdCBmcy5yZWFkRmlsZShwYXRoLmpvaW4odGVtcGxhdGVEaXIsIGZpbGVQYXRoKSk7XG4gICAgICAgICAgICAgIGNvbnN0IGlzQmluYXJ5ID0gYXdhaXQgaXNCaW5hcnlGaWxlKGZpbGUpO1xuICAgICAgICAgICAgICBjb25zdCBibG9iID0gbmV3IEJsb2IoW2ZpbGUuYnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgYHRlbXBsYXRlOiR7cEpzb24ubmFtZX06JHtlbmNvZGVVUklDb21wb25lbnQoZmlsZVBhdGgpfWAsXG4gICAgICAgICAgICAgICAgaXNCaW5hcnkgPyBibG9iIDogYXdhaXQgYmxvYi50ZXh0KCksXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCByZXN0b3JlKCk7XG5cbiAgICAgICAgICAgIC8vIENvbGxlY3QgdGVtcGxhdGUgbWV0YWRhdGFcbiAgICAgICAgICAgIGNvbnN0IHRlbXBsYXRlVXJsID0gbmV3IFVSTChcbiAgICAgICAgICAgICAgYC8ke293bmVyfS8ke3JlcG99L3RlbXBsYXRlLyR7cEpzb24ubmFtZX1gLFxuICAgICAgICAgICAgICBhcGlVcmwsXG4gICAgICAgICAgICApLmhyZWY7XG4gICAgICAgICAgICBvdXRwdXRNZXRhZGF0YS50ZW1wbGF0ZXMucHVzaCh7XG4gICAgICAgICAgICAgIG5hbWU6IHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgIHVybDogdGVtcGxhdGVVcmwsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zdCBub0RlZmF1bHRUZW1wbGF0ZSA9IGFyZ3MudGVtcGxhdGUgPT09IGZhbHNlO1xuXG4gICAgICAgICAgaWYgKCFub0RlZmF1bHRUZW1wbGF0ZSAmJiB0ZW1wbGF0ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9qZWN0ID0gY3JlYXRlRGVmYXVsdFRlbXBsYXRlKFxuICAgICAgICAgICAgICBPYmplY3QuZnJvbUVudHJpZXMoZGVwcy5lbnRyaWVzKCkpLFxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBPYmplY3Qua2V5cyhwcm9qZWN0KSkge1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoXG4gICAgICAgICAgICAgICAgYHRlbXBsYXRlOmRlZmF1bHQ6JHtlbmNvZGVVUklDb21wb25lbnQoZmlsZVBhdGgpfWAsXG4gICAgICAgICAgICAgICAgcHJvamVjdFtmaWxlUGF0aF0sXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzdG9yZU1hcCA9IG5ldyBNYXA8XG4gICAgICAgICAgICBzdHJpbmcsXG4gICAgICAgICAgICBBd2FpdGVkPFJldHVyblR5cGU8dHlwZW9mIHdyaXRlRGVwcz4+XG4gICAgICAgICAgPigpO1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb25Db250ZW50cyA9IGF3YWl0IHRyeVJlYWRGaWxlKHBKc29uUGF0aCk7XG4gICAgICAgICAgICBjb25zdCBwSnNvbiA9IHBKc29uQ29udGVudHNcbiAgICAgICAgICAgICAgPyBwYXJzZVBhY2thZ2VKc29uKHBKc29uQ29udGVudHMpXG4gICAgICAgICAgICAgIDogbnVsbDtcblxuICAgICAgICAgICAgaWYgKCFwSnNvbiB8fCAhcEpzb25Db250ZW50cykge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHBKc29uLnByaXZhdGUpIHtcbiAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3RvcmVNYXAuc2V0KFxuICAgICAgICAgICAgICBwLFxuICAgICAgICAgICAgICBhd2FpdCB3cml0ZURlcHMocCwgcEpzb25Db250ZW50cywgcEpzb24sIGRlcHMsIHJlYWxEZXBzKSxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3Qgc2hhc3VtczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgcCBvZiBwYXRocykge1xuICAgICAgICAgICAgY29uc3QgcEpzb25QYXRoID0gcGF0aC5yZXNvbHZlKHAsIFwicGFja2FnZS5qc29uXCIpO1xuICAgICAgICAgICAgY29uc3QgcEpzb24gPSBhd2FpdCByZWFkUGFja2FnZUpzb24ocEpzb25QYXRoKTtcbiAgICAgICAgICAgIGlmICghcEpzb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICAgICAgIGBza2lwcGluZyAke3B9IGJlY2F1c2UgdGhlcmUncyBubyBwYWNrYWdlLmpzb24gZmlsZWAsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICBpZiAoIXBKc29uLm5hbWUpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgICBgXCJuYW1lXCIgZmllbGQgaW4gJHtwSnNvblBhdGh9IHNob3VsZCBiZSBkZWZpbmVkYCxcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmIChwSnNvbi5wcml2YXRlKSB7XG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBza2lwcGluZyAke3B9IGJlY2F1c2UgdGhlIHBhY2thZ2UgaXMgcHJpdmF0ZWApO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgeyBmaWxlbmFtZSwgc2hhc3VtIH0gPSBhd2FpdCByZXNvbHZlVGFyYmFsbChcbiAgICAgICAgICAgICAgICBwYWNrTWV0aG9kLFxuICAgICAgICAgICAgICAgIHAsXG4gICAgICAgICAgICAgICAgcEpzb24sXG4gICAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgICAgc2hhc3Vtc1twSnNvbi5uYW1lXSA9IHNoYXN1bTtcblxuICAgICAgICAgICAgICBjb25zdCBvdXRwdXRQa2cgPSBvdXRwdXRNZXRhZGF0YS5wYWNrYWdlcy5maW5kKFxuICAgICAgICAgICAgICAgIChwKSA9PiBwLm5hbWUgPT09IHBKc29uLm5hbWUsXG4gICAgICAgICAgICAgICkhO1xuICAgICAgICAgICAgICBvdXRwdXRQa2cuc2hhc3VtID0gc2hhc3VtO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5yZXNvbHZlKHAsIGZpbGVuYW1lKTtcbiAgICAgICAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgZnMucmVhZEZpbGUoZmlsZVBhdGgpO1xuXG4gICAgICAgICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihbYnVmZmVyXSwge1xuICAgICAgICAgICAgICAgIHR5cGU6IFwiYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtXCIsXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoYHBhY2thZ2U6JHtwSnNvbi5uYW1lfWAsIGJsb2IsIGZpbGVuYW1lKTtcblxuICAgICAgICAgICAgICBhd2FpdCBmcy5ybShmaWxlUGF0aCk7XG4gICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICBhd2FpdCByZXN0b3JlTWFwLmdldChwKT8uKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgZm9ybURhdGFQYWNrYWdlc1NpemUgPSBbLi4uZm9ybURhdGEuZW50cmllcygpXS5yZWR1Y2UoXG4gICAgICAgICAgICAocHJldiwgW18sIGVudHJ5XSkgPT4gcHJldiArIGdldEZvcm1FbnRyeVNpemUoZW50cnkpLFxuICAgICAgICAgICAgMCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgLy8gbXVsdGlwYXJ0IHVwbG9hZGluZ1xuICAgICAgICAgIGlmIChmb3JtRGF0YVBhY2thZ2VzU2l6ZSA+IDEwMjQgKiAxMDI0ICogOTkpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgW25hbWUsIGVudHJ5XSBvZiBmb3JtRGF0YSkge1xuICAgICAgICAgICAgICBpZiAobmFtZS5zdGFydHNXaXRoKFwicGFja2FnZTpcIikpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmaWxlID0gZW50cnkgYXMgRmlsZTtcbiAgICAgICAgICAgICAgICBjb25zdCBjaHVua1NpemUgPSAxMDI0ICogMTAyNCAqIDU7XG4gICAgICAgICAgICAgICAgaWYgKGZpbGUuc2l6ZSA8PSBjaHVua1NpemUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCB0b3RhbENodW5rcyA9IE1hdGguY2VpbChmaWxlLnNpemUgLyBjaHVua1NpemUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGNyZWF0ZU11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKGNyZWF0ZU11bHRpcGFydCwge1xuICAgICAgICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICAgICAgICBcInNiLW5hbWVcIjogbmFtZS5zbGljZShcInBhY2thZ2U6XCIubGVuZ3RoKSxcbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgaWYgKCFjcmVhdGVNdWx0aXBhcnRSZXMub2spIHtcbiAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYXdhaXQgY3JlYXRlTXVsdGlwYXJ0UmVzLnRleHQoKSk7XG4gICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29uc3QgeyBrZXk6IHVwbG9hZEtleSwgaWQ6IHVwbG9hZElkIH0gPVxuICAgICAgICAgICAgICAgICAgYXdhaXQgY3JlYXRlTXVsdGlwYXJ0UmVzLmpzb24oKTtcblxuICAgICAgICAgICAgICAgIGludGVyZmFjZSBSMlVwbG9hZGVkUGFydCB7XG4gICAgICAgICAgICAgICAgICBwYXJ0TnVtYmVyOiBudW1iZXI7XG4gICAgICAgICAgICAgICAgICBldGFnOiBzdHJpbmc7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZGVkUGFydHM6IFIyVXBsb2FkZWRQYXJ0W10gPSBbXTtcblxuICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdG90YWxDaHVua3M7IGkrKykge1xuICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBpICogY2h1bmtTaXplO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZW5kID0gTWF0aC5taW4oZmlsZS5zaXplLCBzdGFydCArIGNodW5rU2l6ZSk7XG4gICAgICAgICAgICAgICAgICBjb25zdCBjaHVuayA9IGZpbGUuc2xpY2Uoc3RhcnQsIGVuZCk7XG5cbiAgICAgICAgICAgICAgICAgIGNvbnN0IHVwbG9hZE11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKHVwbG9hZE11bHRpcGFydCwge1xuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUFVUXCIsXG4gICAgICAgICAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBrZXk6IHVwbG9hZEtleSxcbiAgICAgICAgICAgICAgICAgICAgICBpZDogdXBsb2FkSWQsXG4gICAgICAgICAgICAgICAgICAgICAgXCJwYXJ0LW51bWJlclwiOiBgJHtpICsgMX1gLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBib2R5OiBjaHVuayxcbiAgICAgICAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoIXVwbG9hZE11bHRpcGFydFJlcy5vaykge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICAgIGBFcnJvciB1cGxvYWRpbmcgcGFydCAke2kgKyAxfTogJHthd2FpdCB1cGxvYWRNdWx0aXBhcnRSZXMudGV4dCgpfWAsXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgY29uc3QgeyBwYXJ0IH0gPSBhd2FpdCB1cGxvYWRNdWx0aXBhcnRSZXMuanNvbigpO1xuICAgICAgICAgICAgICAgICAgdXBsb2FkZWRQYXJ0cy5wdXNoKHBhcnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBjb25zdCBjb21wbGV0ZU11bHRpcGFydFJlcyA9IGF3YWl0IGZldGNoKGNvbXBsZXRlTXVsdGlwYXJ0LCB7XG4gICAgICAgICAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgICAgICAgICBrZXk6IHVwbG9hZEtleSxcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHVwbG9hZElkLFxuICAgICAgICAgICAgICAgICAgICBcInVwbG9hZGVkLXBhcnRzXCI6IEpTT04uc3RyaW5naWZ5KHVwbG9hZGVkUGFydHMpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICBpZiAoIWNvbXBsZXRlTXVsdGlwYXJ0UmVzLm9rKSB7XG4gICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAgICAgICBgRXJyb3IgY29tcGxldGluZyAke2tleX06ICR7YXdhaXQgY29tcGxldGVNdWx0aXBhcnRSZXMudGV4dCgpfWAsXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGNvbnN0IHsga2V5OiBjb21wbGV0aW9uS2V5IH0gPVxuICAgICAgICAgICAgICAgICAgYXdhaXQgY29tcGxldGVNdWx0aXBhcnRSZXMuanNvbigpO1xuXG4gICAgICAgICAgICAgICAgZm9ybURhdGEuc2V0KG5hbWUsIGBvYmplY3Q6JHtjb21wbGV0aW9uS2V5fWApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2gocHVibGlzaFVybCwge1xuICAgICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgICAgXCJzYi1jb21tZW50XCI6IGNvbW1lbnQsXG4gICAgICAgICAgICAgIFwic2ItY29tcGFjdFwiOiBgJHtpc0NvbXBhY3R9YCxcbiAgICAgICAgICAgICAgXCJzYi1rZXlcIjoga2V5LFxuICAgICAgICAgICAgICBcInNiLXNoYXN1bXNcIjogSlNPTi5zdHJpbmdpZnkoc2hhc3VtcyksXG4gICAgICAgICAgICAgIFwic2ItcnVuLWlkXCI6IEdJVEhVQl9SVU5fSUQsXG4gICAgICAgICAgICAgIFwic2ItYmluXCI6IGAke2lzQmluYXJ5QXBwbGljYXRpb259YCxcbiAgICAgICAgICAgICAgXCJzYi1wYWNrYWdlLW1hbmFnZXJcIjogc2VsZWN0ZWRQYWNrYWdlTWFuYWdlcixcbiAgICAgICAgICAgICAgXCJzYi1vbmx5LXRlbXBsYXRlc1wiOiBgJHtpc09ubHlUZW1wbGF0ZXN9YCxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBib2R5OiBmb3JtRGF0YSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBjb25zdCBsYXRlclJlcyA9IGF3YWl0IHJlcy5jbG9uZSgpLmpzb24oKTtcbiAgICAgICAgICBhc3NlcnQuZXF1YWwoXG4gICAgICAgICAgICByZXMuc3RhdHVzLFxuICAgICAgICAgICAgMjAwLFxuICAgICAgICAgICAgYHB1Ymxpc2hpbmcgZmFpbGVkOiAke2F3YWl0IHJlcy50ZXh0KCl9YCxcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgY29uc29sZS53YXJuKFwiXFxuXCIpO1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIlx1MjZBMVx1RkUwRiBZb3VyIG5wbSBwYWNrYWdlcyBhcmUgcHVibGlzaGVkLlxcblwiKTtcblxuICAgICAgICAgIGNvbnN0IHBhY2thZ2VMb2dzID0gWy4uLmZvcm1EYXRhLmtleXMoKV1cbiAgICAgICAgICAgIC5maWx0ZXIoKGspID0+IGsuc3RhcnRzV2l0aChcInBhY2thZ2U6XCIpKVxuICAgICAgICAgICAgLm1hcCgobmFtZSwgaSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBwYWNrYWdlTmFtZSA9IG5hbWUuc2xpY2UoXCJwYWNrYWdlOlwiLmxlbmd0aCk7XG4gICAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwobGF0ZXJSZXMudXJsc1tpXSk7XG4gICAgICAgICAgICAgIGNvbnN0IHB1YmxpbnRVcmwgPSBuZXcgVVJMKFxuICAgICAgICAgICAgICAgIGAvcGtnLnByLm5ldyR7dXJsLnBhdGhuYW1lfWAsXG4gICAgICAgICAgICAgICAgXCJodHRwczovL3B1YmxpbnQuZGV2XCIsXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIHJldHVybiBgJHtwYWNrYWdlTmFtZX06XG4tIHNoYTogJHtzaGFzdW1zW3BhY2thZ2VOYW1lXX1cbi0gcHVibGludDogJHtwdWJsaW50VXJsfVxuLSBucG06IG5wbSBpICR7dXJsfWA7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmpvaW4oXCJcXG5cXG5cIik7XG5cbiAgICAgICAgICBjb25zb2xlLndhcm4ocGFja2FnZUxvZ3MpO1xuXG4gICAgICAgICAgY29uc3Qgb3V0cHV0ID0gSlNPTi5zdHJpbmdpZnkob3V0cHV0TWV0YWRhdGEsIG51bGwsIDIpO1xuICAgICAgICAgIGlmIChwcmludEpzb24pIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKG91dHB1dCk7IC8vIExvZyBvdXRwdXQgZm9yIHBpcGluZ1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoc2F2ZUpzb24pIHtcbiAgICAgICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZShqc29uRmlsZVBhdGgsIG91dHB1dCk7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYG1ldGFkYXRhIHdyaXR0ZW4gdG8gJHtqc29uRmlsZVBhdGh9YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9LFxuICAgIGxpbms6ICgpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1ldGE6IHt9LFxuICAgICAgICBydW46ICgpID0+IHtcbiAgICAgICAgICAvLyBub29wXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0sXG4gIH0sXG59KTtcblxucnVuTWFpbihtYWluKVxuICAudGhlbigoKSA9PiBwcm9jZXNzLmV4aXQoMCkpXG4gIC5jYXRjaCgoKSA9PiBwcm9jZXNzLmV4aXQoMSkpO1xuXG50eXBlIFBhY2tNZXRob2QgPSBcIm5wbVwiIHwgXCJwbnBtXCIgfCBcInlhcm5cIjtcblxuYXN5bmMgZnVuY3Rpb24gcmVzb2x2ZVRhcmJhbGwocG06IFBhY2tNZXRob2QsIHA6IHN0cmluZywgcEpzb246IFBhY2thZ2VKc29uKSB7XG4gIGxldCBjbWQgPSBgJHtwbX0gcGFja2A7XG4gIGxldCBmaWxlbmFtZSA9IGAke3BKc29uLm5hbWUhLnJlcGxhY2UoXCIvXCIsIFwiLVwiKX0tJHtwSnNvbi52ZXJzaW9ufS50Z3pgO1xuICBpZiAocG0gPT09IFwieWFyblwiKSB7XG4gICAgY21kICs9IGAgLS1maWxlbmFtZSAke2ZpbGVuYW1lfWA7XG4gIH1cbiAgY29uc3QgeyBzdGRvdXQgfSA9IGF3YWl0IGV6U3Bhd24uYXN5bmMoY21kLCB7XG4gICAgc3RkaW86IFwib3ZlcmxhcHBlZFwiLFxuICAgIGN3ZDogcCxcbiAgfSk7XG4gIGNvbnN0IGxpbmVzID0gc3Rkb3V0LnNwbGl0KFwiXFxuXCIpLmZpbHRlcihCb29sZWFuKTtcblxuICBpZiAocG0gIT09IFwieWFyblwiKSB7XG4gICAgZmlsZW5hbWUgPSBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS50cmltKCk7XG4gIH1cblxuICBjb25zdCBzaGFzdW0gPSBjcmVhdGVIYXNoKFwic2hhMVwiKVxuICAgIC51cGRhdGUoYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKHAsIGZpbGVuYW1lKSkpXG4gICAgLmRpZ2VzdChcImhleFwiKTtcblxuICByZXR1cm4geyBmaWxlbmFtZSwgc2hhc3VtIH07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyaXRlRGVwcyhcbiAgcDogc3RyaW5nLFxuICBwSnNvbkNvbnRlbnRzOiBzdHJpbmcsXG4gIHBKc29uOiBQYWNrYWdlSnNvbixcbiAgZGVwczogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgcmVhbERlcHM6IE1hcDxzdHJpbmcsIHN0cmluZz4gfCBudWxsLFxuKSB7XG4gIGNvbnN0IHBKc29uUGF0aCA9IHBhdGgucmVzb2x2ZShwLCBcInBhY2thZ2UuanNvblwiKTtcblxuICBoaWphY2tEZXBzKGRlcHMsIHBKc29uLmRlcGVuZGVuY2llcyk7XG4gIGhpamFja0RlcHMoZGVwcywgcEpzb24uZGV2RGVwZW5kZW5jaWVzKTtcbiAgaGlqYWNrRGVwcyhkZXBzLCBwSnNvbi5vcHRpb25hbERlcGVuZGVuY2llcyk7XG5cbiAgaWYgKHJlYWxEZXBzKSB7XG4gICAgaGlqYWNrRGVwcyhyZWFsRGVwcywgcEpzb24ucGVlckRlcGVuZGVuY2llcyk7XG4gIH1cblxuICBhd2FpdCB3cml0ZVBhY2thZ2VKU09OKHBKc29uUGF0aCwgcEpzb24pO1xuXG4gIHJldHVybiAoKSA9PiBmcy53cml0ZUZpbGUocEpzb25QYXRoLCBwSnNvbkNvbnRlbnRzKTtcbn1cblxuZnVuY3Rpb24gaGlqYWNrRGVwcyhcbiAgbmV3RGVwczogTWFwPHN0cmluZywgc3RyaW5nPixcbiAgb2xkRGVwcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pIHtcbiAgaWYgKCFvbGREZXBzKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGZvciAoY29uc3QgW25ld0RlcCwgdXJsXSBvZiBuZXdEZXBzKSB7XG4gICAgaWYgKG5ld0RlcCBpbiBvbGREZXBzKSB7XG4gICAgICBvbGREZXBzW25ld0RlcF0gPSB1cmw7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldEZvcm1FbnRyeVNpemUoZW50cnk6IEZvcm1EYXRhRW50cnlWYWx1ZSkge1xuICBpZiAodHlwZW9mIGVudHJ5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIGVudHJ5Lmxlbmd0aDtcbiAgfVxuICByZXR1cm4gZW50cnkuc2l6ZTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gdmVyaWZ5Q29tcGFjdE1vZGUocGFja2FnZU5hbWU6IHN0cmluZykge1xuICBsZXQgbWFuaWZlc3Q6IFBhY2thZ2VNYW5pZmVzdDtcblxuICB0cnkge1xuICAgIG1hbmlmZXN0ID0gYXdhaXQgZ2V0UGFja2FnZU1hbmlmZXN0KHBhY2thZ2VOYW1lKTtcbiAgfSBjYXRjaCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgYHBrZy1wci1uZXcgY2Fubm90IHJlc29sdmUgJHtwYWNrYWdlTmFtZX0gZnJvbSBucG0uIC0tY29tcGFjdCBmbGFnIGRlcGVuZHMgb24gdGhlIHBhY2thZ2UgYmVpbmcgYXZhaWxhYmxlIGluIG5wbS5cbk1ha2Ugc3VyZSB0byBoYXZlIHlvdXIgcGFja2FnZSBvbiBucG0gZmlyc3QuYCxcbiAgICApO1xuICB9XG5cbiAgY29uc3QgaW5zdHJ1Y3Rpb24gPSBgTWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSB0aGUgJ3JlcG9zaXRvcnknIC8gJ3JlcG9zaXRvcnkudXJsJyBmaWVsZCBpbiBpdHMgcGFja2FnZS5qc29uIHByb3Blcmx5LlxuU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpL3YxMC9jb25maWd1cmluZy1ucG0vcGFja2FnZS1qc29uI3JlcG9zaXRvcnkgZm9yIGRldGFpbHMuYDtcblxuICBjb25zdCByZXBvc2l0b3J5ID0gZXh0cmFjdFJlcG9zaXRvcnkobWFuaWZlc3QpO1xuICBpZiAoIXJlcG9zaXRvcnkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgcmVwb3NpdG9yeSBsaW5rIGZyb20gdGhlICR7cGFja2FnZU5hbWV9IG1hbmlmZXN0LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGUgbGluayB0byBiZSBwcmVzZW50LlxuJHtpbnN0cnVjdGlvbn1gLFxuICAgICk7XG4gIH1cblxuICBjb25zdCBtYXRjaCA9IGV4dHJhY3RPd25lckFuZFJlcG8ocmVwb3NpdG9yeSk7XG4gIGlmICghbWF0Y2gpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBgcGtnLXByLW5ldyBjYW5ub3QgZXh0cmFjdCB0aGUgb3duZXIgYW5kIHJlcG8gbmFtZXMgZnJvbSB0aGUgJHtwYWNrYWdlTmFtZX0gcmVwb3NpdG9yeSBsaW5rOiAke3JlcG9zaXRvcnl9LiAtLWNvbXBhY3QgZmxhZyByZXF1aXJlcyB0aGVzZSBuYW1lcy5cbiR7aW5zdHJ1Y3Rpb259YCxcbiAgICApO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHRyeVJlYWRGaWxlKHA6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBmcy5yZWFkRmlsZShwLCBcInV0ZjhcIik7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlYWRQYWNrYWdlSnNvbihwOiBzdHJpbmcpIHtcbiAgY29uc3QgY29udGVudHMgPSBhd2FpdCB0cnlSZWFkRmlsZShwKTtcbiAgaWYgKGNvbnRlbnRzID09PSBudWxsKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdHJ5IHtcbiAgICByZXR1cm4gcGFyc2VQYWNrYWdlSnNvbihjb250ZW50cyk7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhcnNlUGFja2FnZUpzb24oY29udGVudHM6IHN0cmluZykge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnBhcnNlKGNvbnRlbnRzKSBhcyBQYWNrYWdlSnNvbjtcbiAgfSBjYXRjaCB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbiIsICJjb25zdCBkZWZhdWx0cyA9IE9iamVjdC5mcmVlemUoe1xuICBpZ25vcmVVbmtub3duOiBmYWxzZSxcbiAgcmVzcGVjdFR5cGU6IGZhbHNlLFxuICByZXNwZWN0RnVuY3Rpb25OYW1lczogZmFsc2UsXG4gIHJlc3BlY3RGdW5jdGlvblByb3BlcnRpZXM6IGZhbHNlLFxuICB1bm9yZGVyZWRPYmplY3RzOiB0cnVlLFxuICB1bm9yZGVyZWRBcnJheXM6IGZhbHNlLFxuICB1bm9yZGVyZWRTZXRzOiBmYWxzZSxcbiAgZXhjbHVkZUtleXM6IHZvaWQgMCxcbiAgZXhjbHVkZVZhbHVlczogdm9pZCAwLFxuICByZXBsYWNlcjogdm9pZCAwXG59KTtcbmZ1bmN0aW9uIG9iamVjdEhhc2gob2JqZWN0LCBvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHsgLi4uZGVmYXVsdHMsIC4uLm9wdGlvbnMgfTtcbiAgfSBlbHNlIHtcbiAgICBvcHRpb25zID0gZGVmYXVsdHM7XG4gIH1cbiAgY29uc3QgaGFzaGVyID0gY3JlYXRlSGFzaGVyKG9wdGlvbnMpO1xuICBoYXNoZXIuZGlzcGF0Y2gob2JqZWN0KTtcbiAgcmV0dXJuIGhhc2hlci50b1N0cmluZygpO1xufVxuY29uc3QgZGVmYXVsdFByb3RvdHlwZXNLZXlzID0gT2JqZWN0LmZyZWV6ZShbXG4gIFwicHJvdG90eXBlXCIsXG4gIFwiX19wcm90b19fXCIsXG4gIFwiY29uc3RydWN0b3JcIlxuXSk7XG5mdW5jdGlvbiBjcmVhdGVIYXNoZXIob3B0aW9ucykge1xuICBsZXQgYnVmZiA9IFwiXCI7XG4gIGxldCBjb250ZXh0ID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgY29uc3Qgd3JpdGUgPSAoc3RyKSA9PiB7XG4gICAgYnVmZiArPSBzdHI7XG4gIH07XG4gIHJldHVybiB7XG4gICAgdG9TdHJpbmcoKSB7XG4gICAgICByZXR1cm4gYnVmZjtcbiAgICB9LFxuICAgIGdldENvbnRleHQoKSB7XG4gICAgICByZXR1cm4gY29udGV4dDtcbiAgICB9LFxuICAgIGRpc3BhdGNoKHZhbHVlKSB7XG4gICAgICBpZiAob3B0aW9ucy5yZXBsYWNlcikge1xuICAgICAgICB2YWx1ZSA9IG9wdGlvbnMucmVwbGFjZXIodmFsdWUpO1xuICAgICAgfVxuICAgICAgY29uc3QgdHlwZSA9IHZhbHVlID09PSBudWxsID8gXCJudWxsXCIgOiB0eXBlb2YgdmFsdWU7XG4gICAgICByZXR1cm4gdGhpc1t0eXBlXSh2YWx1ZSk7XG4gICAgfSxcbiAgICBvYmplY3Qob2JqZWN0KSB7XG4gICAgICBpZiAob2JqZWN0ICYmIHR5cGVvZiBvYmplY3QudG9KU09OID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub2JqZWN0KG9iamVjdC50b0pTT04oKSk7XG4gICAgICB9XG4gICAgICBjb25zdCBvYmpTdHJpbmcgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KTtcbiAgICAgIGxldCBvYmpUeXBlID0gXCJcIjtcbiAgICAgIGNvbnN0IG9iamVjdExlbmd0aCA9IG9ialN0cmluZy5sZW5ndGg7XG4gICAgICBpZiAob2JqZWN0TGVuZ3RoIDwgMTApIHtcbiAgICAgICAgb2JqVHlwZSA9IFwidW5rbm93bjpbXCIgKyBvYmpTdHJpbmcgKyBcIl1cIjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9ialR5cGUgPSBvYmpTdHJpbmcuc2xpY2UoOCwgb2JqZWN0TGVuZ3RoIC0gMSk7XG4gICAgICB9XG4gICAgICBvYmpUeXBlID0gb2JqVHlwZS50b0xvd2VyQ2FzZSgpO1xuICAgICAgbGV0IG9iamVjdE51bWJlciA9IG51bGw7XG4gICAgICBpZiAoKG9iamVjdE51bWJlciA9IGNvbnRleHQuZ2V0KG9iamVjdCkpID09PSB2b2lkIDApIHtcbiAgICAgICAgY29udGV4dC5zZXQob2JqZWN0LCBjb250ZXh0LnNpemUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goXCJbQ0lSQ1VMQVI6XCIgKyBvYmplY3ROdW1iZXIgKyBcIl1cIik7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIEJ1ZmZlciAhPT0gXCJ1bmRlZmluZWRcIiAmJiBCdWZmZXIuaXNCdWZmZXIgJiYgQnVmZmVyLmlzQnVmZmVyKG9iamVjdCkpIHtcbiAgICAgICAgd3JpdGUoXCJidWZmZXI6XCIpO1xuICAgICAgICByZXR1cm4gd3JpdGUob2JqZWN0LnRvU3RyaW5nKFwidXRmOFwiKSk7XG4gICAgICB9XG4gICAgICBpZiAob2JqVHlwZSAhPT0gXCJvYmplY3RcIiAmJiBvYmpUeXBlICE9PSBcImZ1bmN0aW9uXCIgJiYgb2JqVHlwZSAhPT0gXCJhc3luY2Z1bmN0aW9uXCIpIHtcbiAgICAgICAgaWYgKHRoaXNbb2JqVHlwZV0pIHtcbiAgICAgICAgICB0aGlzW29ialR5cGVdKG9iamVjdCk7XG4gICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuaWdub3JlVW5rbm93bikge1xuICAgICAgICAgIHRoaXMudW5rb3duKG9iamVjdCwgb2JqVHlwZSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMob2JqZWN0KTtcbiAgICAgICAgaWYgKG9wdGlvbnMudW5vcmRlcmVkT2JqZWN0cykge1xuICAgICAgICAgIGtleXMgPSBrZXlzLnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgZXh0cmFLZXlzID0gW107XG4gICAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RUeXBlICE9PSBmYWxzZSAmJiAhaXNOYXRpdmVGdW5jdGlvbihvYmplY3QpKSB7XG4gICAgICAgICAgZXh0cmFLZXlzID0gZGVmYXVsdFByb3RvdHlwZXNLZXlzO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLmV4Y2x1ZGVLZXlzKSB7XG4gICAgICAgICAga2V5cyA9IGtleXMuZmlsdGVyKChrZXkpID0+IHtcbiAgICAgICAgICAgIHJldHVybiAhb3B0aW9ucy5leGNsdWRlS2V5cyhrZXkpO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV4dHJhS2V5cyA9IGV4dHJhS2V5cy5maWx0ZXIoKGtleSkgPT4ge1xuICAgICAgICAgICAgcmV0dXJuICFvcHRpb25zLmV4Y2x1ZGVLZXlzKGtleSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgd3JpdGUoXCJvYmplY3Q6XCIgKyAoa2V5cy5sZW5ndGggKyBleHRyYUtleXMubGVuZ3RoKSArIFwiOlwiKTtcbiAgICAgICAgY29uc3QgZGlzcGF0Y2hGb3JLZXkgPSAoa2V5KSA9PiB7XG4gICAgICAgICAgdGhpcy5kaXNwYXRjaChrZXkpO1xuICAgICAgICAgIHdyaXRlKFwiOlwiKTtcbiAgICAgICAgICBpZiAoIW9wdGlvbnMuZXhjbHVkZVZhbHVlcykge1xuICAgICAgICAgICAgdGhpcy5kaXNwYXRjaChvYmplY3Rba2V5XSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHdyaXRlKFwiLFwiKTtcbiAgICAgICAgfTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgICAgIGRpc3BhdGNoRm9yS2V5KGtleSk7XG4gICAgICAgIH1cbiAgICAgICAgZm9yIChjb25zdCBrZXkgb2YgZXh0cmFLZXlzKSB7XG4gICAgICAgICAgZGlzcGF0Y2hGb3JLZXkoa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgYXJyYXkoYXJyLCB1bm9yZGVyZWQpIHtcbiAgICAgIHVub3JkZXJlZCA9IHVub3JkZXJlZCA9PT0gdm9pZCAwID8gb3B0aW9ucy51bm9yZGVyZWRBcnJheXMgIT09IGZhbHNlIDogdW5vcmRlcmVkO1xuICAgICAgd3JpdGUoXCJhcnJheTpcIiArIGFyci5sZW5ndGggKyBcIjpcIik7XG4gICAgICBpZiAoIXVub3JkZXJlZCB8fCBhcnIubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbnRyeSBvZiBhcnIpIHtcbiAgICAgICAgICB0aGlzLmRpc3BhdGNoKGVudHJ5KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBjb25zdCBjb250ZXh0QWRkaXRpb25zID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKTtcbiAgICAgIGNvbnN0IGVudHJpZXMgPSBhcnIubWFwKChlbnRyeSkgPT4ge1xuICAgICAgICBjb25zdCBoYXNoZXIgPSBjcmVhdGVIYXNoZXIob3B0aW9ucyk7XG4gICAgICAgIGhhc2hlci5kaXNwYXRjaChlbnRyeSk7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIGhhc2hlci5nZXRDb250ZXh0KCkpIHtcbiAgICAgICAgICBjb250ZXh0QWRkaXRpb25zLnNldChrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gaGFzaGVyLnRvU3RyaW5nKCk7XG4gICAgICB9KTtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0QWRkaXRpb25zO1xuICAgICAgZW50cmllcy5zb3J0KCk7XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShlbnRyaWVzLCBmYWxzZSk7XG4gICAgfSxcbiAgICBkYXRlKGRhdGUpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImRhdGU6XCIgKyBkYXRlLnRvSlNPTigpKTtcbiAgICB9LFxuICAgIHN5bWJvbChzeW0pIHtcbiAgICAgIHJldHVybiB3cml0ZShcInN5bWJvbDpcIiArIHN5bS50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIHVua293bih2YWx1ZSwgdHlwZSkge1xuICAgICAgd3JpdGUodHlwZSk7XG4gICAgICBpZiAoIXZhbHVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHdyaXRlKFwiOlwiKTtcbiAgICAgIGlmICh2YWx1ZSAmJiB0eXBlb2YgdmFsdWUuZW50cmllcyA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFycmF5KFxuICAgICAgICAgIEFycmF5LmZyb20odmFsdWUuZW50cmllcygpKSxcbiAgICAgICAgICB0cnVlXG4gICAgICAgICAgLyogb3JkZXJlZCAqL1xuICAgICAgICApO1xuICAgICAgfVxuICAgIH0sXG4gICAgZXJyb3IoZXJyKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJlcnJvcjpcIiArIGVyci50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIGJvb2xlYW4oYm9vbCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiYm9vbDpcIiArIGJvb2wpO1xuICAgIH0sXG4gICAgc3RyaW5nKHN0cmluZykge1xuICAgICAgd3JpdGUoXCJzdHJpbmc6XCIgKyBzdHJpbmcubGVuZ3RoICsgXCI6XCIpO1xuICAgICAgd3JpdGUoc3RyaW5nKTtcbiAgICB9LFxuICAgIGZ1bmN0aW9uKGZuKSB7XG4gICAgICB3cml0ZShcImZuOlwiKTtcbiAgICAgIGlmIChpc05hdGl2ZUZ1bmN0aW9uKGZuKSkge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKFwiW25hdGl2ZV1cIik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmRpc3BhdGNoKGZuLnRvU3RyaW5nKCkpO1xuICAgICAgfVxuICAgICAgaWYgKG9wdGlvbnMucmVzcGVjdEZ1bmN0aW9uTmFtZXMgIT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuZGlzcGF0Y2goXCJmdW5jdGlvbi1uYW1lOlwiICsgU3RyaW5nKGZuLm5hbWUpKTtcbiAgICAgIH1cbiAgICAgIGlmIChvcHRpb25zLnJlc3BlY3RGdW5jdGlvblByb3BlcnRpZXMpIHtcbiAgICAgICAgdGhpcy5vYmplY3QoZm4pO1xuICAgICAgfVxuICAgIH0sXG4gICAgbnVtYmVyKG51bWJlcikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwibnVtYmVyOlwiICsgbnVtYmVyKTtcbiAgICB9LFxuICAgIHhtbCh4bWwpIHtcbiAgICAgIHJldHVybiB3cml0ZShcInhtbDpcIiArIHhtbC50b1N0cmluZygpKTtcbiAgICB9LFxuICAgIG51bGwoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJOdWxsXCIpO1xuICAgIH0sXG4gICAgdW5kZWZpbmVkKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiVW5kZWZpbmVkXCIpO1xuICAgIH0sXG4gICAgcmVnZXhwKHJlZ2V4KSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJyZWdleDpcIiArIHJlZ2V4LnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgdWludDhhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwidWludDhhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQ4Y2xhbXBlZGFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50OGNsYW1wZWRhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDhhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiaW50OGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgdWludDE2YXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcInVpbnQxNmFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgaW50MTZhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiaW50MTZhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIHVpbnQzMmFycmF5KGFycikge1xuICAgICAgd3JpdGUoXCJ1aW50MzJhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGludDMyYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImludDMyYXJyYXk6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJyKSk7XG4gICAgfSxcbiAgICBmbG9hdDMyYXJyYXkoYXJyKSB7XG4gICAgICB3cml0ZShcImZsb2F0MzJhcnJheTpcIik7XG4gICAgICByZXR1cm4gdGhpcy5kaXNwYXRjaChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcnIpKTtcbiAgICB9LFxuICAgIGZsb2F0NjRhcnJheShhcnIpIHtcbiAgICAgIHdyaXRlKFwiZmxvYXQ2NGFycmF5OlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycikpO1xuICAgIH0sXG4gICAgYXJyYXlidWZmZXIoYXJyKSB7XG4gICAgICB3cml0ZShcImFycmF5YnVmZmVyOlwiKTtcbiAgICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKG5ldyBVaW50OEFycmF5KGFycikpO1xuICAgIH0sXG4gICAgdXJsKHVybCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidXJsOlwiICsgdXJsLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgbWFwKG1hcCkge1xuICAgICAgd3JpdGUoXCJtYXA6XCIpO1xuICAgICAgY29uc3QgYXJyID0gWy4uLm1hcF07XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShhcnIsIG9wdGlvbnMudW5vcmRlcmVkU2V0cyAhPT0gZmFsc2UpO1xuICAgIH0sXG4gICAgc2V0KHNldCkge1xuICAgICAgd3JpdGUoXCJzZXQ6XCIpO1xuICAgICAgY29uc3QgYXJyID0gWy4uLnNldF07XG4gICAgICByZXR1cm4gdGhpcy5hcnJheShhcnIsIG9wdGlvbnMudW5vcmRlcmVkU2V0cyAhPT0gZmFsc2UpO1xuICAgIH0sXG4gICAgZmlsZShmaWxlKSB7XG4gICAgICB3cml0ZShcImZpbGU6XCIpO1xuICAgICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goW2ZpbGUubmFtZSwgZmlsZS5zaXplLCBmaWxlLnR5cGUsIGZpbGUubGFzdE1vZGZpZWRdKTtcbiAgICB9LFxuICAgIGJsb2IoKSB7XG4gICAgICBpZiAob3B0aW9ucy5pZ25vcmVVbmtub3duKSB7XG4gICAgICAgIHJldHVybiB3cml0ZShcIltibG9iXVwiKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0hhc2hpbmcgQmxvYiBvYmplY3RzIGlzIGN1cnJlbnRseSBub3Qgc3VwcG9ydGVkXFxuVXNlIFwib3B0aW9ucy5yZXBsYWNlclwiIG9yIFwib3B0aW9ucy5pZ25vcmVVbmtub3duXCJcXG4nXG4gICAgICApO1xuICAgIH0sXG4gICAgZG9td2luZG93KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZG9td2luZG93XCIpO1xuICAgIH0sXG4gICAgYmlnaW50KG51bWJlcikge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiYmlnaW50OlwiICsgbnVtYmVyLnRvU3RyaW5nKCkpO1xuICAgIH0sXG4gICAgLyogTm9kZS5qcyBzdGFuZGFyZCBuYXRpdmUgb2JqZWN0cyAqL1xuICAgIHByb2Nlc3MoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJwcm9jZXNzXCIpO1xuICAgIH0sXG4gICAgdGltZXIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0aW1lclwiKTtcbiAgICB9LFxuICAgIHBpcGUoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJwaXBlXCIpO1xuICAgIH0sXG4gICAgdGNwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidGNwXCIpO1xuICAgIH0sXG4gICAgdWRwKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidWRwXCIpO1xuICAgIH0sXG4gICAgdHR5KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwidHR5XCIpO1xuICAgIH0sXG4gICAgc3RhdHdhdGNoZXIoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzdGF0d2F0Y2hlclwiKTtcbiAgICB9LFxuICAgIHNlY3VyZWNvbnRleHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzZWN1cmVjb250ZXh0XCIpO1xuICAgIH0sXG4gICAgY29ubmVjdGlvbigpIHtcbiAgICAgIHJldHVybiB3cml0ZShcImNvbm5lY3Rpb25cIik7XG4gICAgfSxcbiAgICB6bGliKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiemxpYlwiKTtcbiAgICB9LFxuICAgIGNvbnRleHQoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJjb250ZXh0XCIpO1xuICAgIH0sXG4gICAgbm9kZXNjcmlwdCgpIHtcbiAgICAgIHJldHVybiB3cml0ZShcIm5vZGVzY3JpcHRcIik7XG4gICAgfSxcbiAgICBodHRwcGFyc2VyKCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiaHR0cHBhcnNlclwiKTtcbiAgICB9LFxuICAgIGRhdGF2aWV3KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZGF0YXZpZXdcIik7XG4gICAgfSxcbiAgICBzaWduYWwoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJzaWduYWxcIik7XG4gICAgfSxcbiAgICBmc2V2ZW50KCkge1xuICAgICAgcmV0dXJuIHdyaXRlKFwiZnNldmVudFwiKTtcbiAgICB9LFxuICAgIHRsc3dyYXAoKSB7XG4gICAgICByZXR1cm4gd3JpdGUoXCJ0bHN3cmFwXCIpO1xuICAgIH1cbiAgfTtcbn1cbmNvbnN0IG5hdGl2ZUZ1bmMgPSBcIltuYXRpdmUgY29kZV0gfVwiO1xuY29uc3QgbmF0aXZlRnVuY0xlbmd0aCA9IG5hdGl2ZUZ1bmMubGVuZ3RoO1xuZnVuY3Rpb24gaXNOYXRpdmVGdW5jdGlvbihmKSB7XG4gIGlmICh0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChmKS5zbGljZSgtbmF0aXZlRnVuY0xlbmd0aCkgPT09IG5hdGl2ZUZ1bmM7XG59XG5cbnZhciBfX2RlZlByb3AkMSA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcbnZhciBfX2RlZk5vcm1hbFByb3AkMSA9IChvYmosIGtleSwgdmFsdWUpID0+IGtleSBpbiBvYmogPyBfX2RlZlByb3AkMShvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19wdWJsaWNGaWVsZCQxID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ge1xuICBfX2RlZk5vcm1hbFByb3AkMShvYmosIHR5cGVvZiBrZXkgIT09IFwic3ltYm9sXCIgPyBrZXkgKyBcIlwiIDoga2V5LCB2YWx1ZSk7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5jbGFzcyBXb3JkQXJyYXkge1xuICBjb25zdHJ1Y3Rvcih3b3Jkcywgc2lnQnl0ZXMpIHtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJ3b3Jkc1wiKTtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJzaWdCeXRlc1wiKTtcbiAgICB3b3JkcyA9IHRoaXMud29yZHMgPSB3b3JkcyB8fCBbXTtcbiAgICB0aGlzLnNpZ0J5dGVzID0gc2lnQnl0ZXMgPT09IHZvaWQgMCA/IHdvcmRzLmxlbmd0aCAqIDQgOiBzaWdCeXRlcztcbiAgfVxuICB0b1N0cmluZyhlbmNvZGVyKSB7XG4gICAgcmV0dXJuIChlbmNvZGVyIHx8IEhleCkuc3RyaW5naWZ5KHRoaXMpO1xuICB9XG4gIGNvbmNhdCh3b3JkQXJyYXkpIHtcbiAgICB0aGlzLmNsYW1wKCk7XG4gICAgaWYgKHRoaXMuc2lnQnl0ZXMgJSA0KSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHRoYXRCeXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaSA+Pj4gMl0gfD0gdGhhdEJ5dGUgPDwgMjQgLSAodGhpcy5zaWdCeXRlcyArIGkpICUgNCAqIDg7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgd29yZEFycmF5LnNpZ0J5dGVzOyBqICs9IDQpIHtcbiAgICAgICAgdGhpcy53b3Jkc1t0aGlzLnNpZ0J5dGVzICsgaiA+Pj4gMl0gPSB3b3JkQXJyYXkud29yZHNbaiA+Pj4gMl07XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuc2lnQnl0ZXMgKz0gd29yZEFycmF5LnNpZ0J5dGVzO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGNsYW1wKCkge1xuICAgIHRoaXMud29yZHNbdGhpcy5zaWdCeXRlcyA+Pj4gMl0gJj0gNDI5NDk2NzI5NSA8PCAzMiAtIHRoaXMuc2lnQnl0ZXMgJSA0ICogODtcbiAgICB0aGlzLndvcmRzLmxlbmd0aCA9IE1hdGguY2VpbCh0aGlzLnNpZ0J5dGVzIC8gNCk7XG4gIH1cbiAgY2xvbmUoKSB7XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkoWy4uLnRoaXMud29yZHNdKTtcbiAgfVxufVxuY29uc3QgSGV4ID0ge1xuICBzdHJpbmdpZnkod29yZEFycmF5KSB7XG4gICAgY29uc3QgaGV4Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSsrKSB7XG4gICAgICBjb25zdCBiaXRlID0gd29yZEFycmF5LndvcmRzW2kgPj4+IDJdID4+PiAyNCAtIGkgJSA0ICogOCAmIDI1NTtcbiAgICAgIGhleENoYXJzLnB1c2goKGJpdGUgPj4+IDQpLnRvU3RyaW5nKDE2KSwgKGJpdGUgJiAxNSkudG9TdHJpbmcoMTYpKTtcbiAgICB9XG4gICAgcmV0dXJuIGhleENoYXJzLmpvaW4oXCJcIik7XG4gIH1cbn07XG5jb25zdCBCYXNlNjQgPSB7XG4gIHN0cmluZ2lmeSh3b3JkQXJyYXkpIHtcbiAgICBjb25zdCBrZXlTdHIgPSBcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5XCI7XG4gICAgY29uc3QgYmFzZTY0Q2hhcnMgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHdvcmRBcnJheS5zaWdCeXRlczsgaSArPSAzKSB7XG4gICAgICBjb25zdCBieXRlMSA9IHdvcmRBcnJheS53b3Jkc1tpID4+PiAyXSA+Pj4gMjQgLSBpICUgNCAqIDggJiAyNTU7XG4gICAgICBjb25zdCBieXRlMiA9IHdvcmRBcnJheS53b3Jkc1tpICsgMSA+Pj4gMl0gPj4+IDI0IC0gKGkgKyAxKSAlIDQgKiA4ICYgMjU1O1xuICAgICAgY29uc3QgYnl0ZTMgPSB3b3JkQXJyYXkud29yZHNbaSArIDIgPj4+IDJdID4+PiAyNCAtIChpICsgMikgJSA0ICogOCAmIDI1NTtcbiAgICAgIGNvbnN0IHRyaXBsZXQgPSBieXRlMSA8PCAxNiB8IGJ5dGUyIDw8IDggfCBieXRlMztcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgNCAmJiBpICogOCArIGogKiA2IDwgd29yZEFycmF5LnNpZ0J5dGVzICogODsgaisrKSB7XG4gICAgICAgIGJhc2U2NENoYXJzLnB1c2goa2V5U3RyLmNoYXJBdCh0cmlwbGV0ID4+PiA2ICogKDMgLSBqKSAmIDYzKSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBiYXNlNjRDaGFycy5qb2luKFwiXCIpO1xuICB9XG59O1xuY29uc3QgTGF0aW4xID0ge1xuICBwYXJzZShsYXRpbjFTdHIpIHtcbiAgICBjb25zdCBsYXRpbjFTdHJMZW5ndGggPSBsYXRpbjFTdHIubGVuZ3RoO1xuICAgIGNvbnN0IHdvcmRzID0gW107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsYXRpbjFTdHJMZW5ndGg7IGkrKykge1xuICAgICAgd29yZHNbaSA+Pj4gMl0gfD0gKGxhdGluMVN0ci5jaGFyQ29kZUF0KGkpICYgMjU1KSA8PCAyNCAtIGkgJSA0ICogODtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBXb3JkQXJyYXkod29yZHMsIGxhdGluMVN0ckxlbmd0aCk7XG4gIH1cbn07XG5jb25zdCBVdGY4ID0ge1xuICBwYXJzZSh1dGY4U3RyKSB7XG4gICAgcmV0dXJuIExhdGluMS5wYXJzZSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQodXRmOFN0cikpKTtcbiAgfVxufTtcbmNsYXNzIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBfX3B1YmxpY0ZpZWxkJDEodGhpcywgXCJfZGF0YVwiLCBuZXcgV29yZEFycmF5KCkpO1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcIl9uRGF0YUJ5dGVzXCIsIDApO1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcIl9taW5CdWZmZXJTaXplXCIsIDApO1xuICAgIF9fcHVibGljRmllbGQkMSh0aGlzLCBcImJsb2NrU2l6ZVwiLCA1MTIgLyAzMik7XG4gIH1cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fZGF0YSA9IG5ldyBXb3JkQXJyYXkoKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzID0gMDtcbiAgfVxuICBfYXBwZW5kKGRhdGEpIHtcbiAgICBpZiAodHlwZW9mIGRhdGEgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIGRhdGEgPSBVdGY4LnBhcnNlKGRhdGEpO1xuICAgIH1cbiAgICB0aGlzLl9kYXRhLmNvbmNhdChkYXRhKTtcbiAgICB0aGlzLl9uRGF0YUJ5dGVzICs9IGRhdGEuc2lnQnl0ZXM7XG4gIH1cbiAgX2RvUHJvY2Vzc0Jsb2NrKF9kYXRhV29yZHMsIF9vZmZzZXQpIHtcbiAgfVxuICBfcHJvY2Vzcyhkb0ZsdXNoKSB7XG4gICAgbGV0IHByb2Nlc3NlZFdvcmRzO1xuICAgIGxldCBuQmxvY2tzUmVhZHkgPSB0aGlzLl9kYXRhLnNpZ0J5dGVzIC8gKHRoaXMuYmxvY2tTaXplICogNCk7XG4gICAgaWYgKGRvRmx1c2gpIHtcbiAgICAgIG5CbG9ja3NSZWFkeSA9IE1hdGguY2VpbChuQmxvY2tzUmVhZHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBuQmxvY2tzUmVhZHkgPSBNYXRoLm1heCgobkJsb2Nrc1JlYWR5IHwgMCkgLSB0aGlzLl9taW5CdWZmZXJTaXplLCAwKTtcbiAgICB9XG4gICAgY29uc3QgbldvcmRzUmVhZHkgPSBuQmxvY2tzUmVhZHkgKiB0aGlzLmJsb2NrU2l6ZTtcbiAgICBjb25zdCBuQnl0ZXNSZWFkeSA9IE1hdGgubWluKG5Xb3Jkc1JlYWR5ICogNCwgdGhpcy5fZGF0YS5zaWdCeXRlcyk7XG4gICAgaWYgKG5Xb3Jkc1JlYWR5KSB7XG4gICAgICBmb3IgKGxldCBvZmZzZXQgPSAwOyBvZmZzZXQgPCBuV29yZHNSZWFkeTsgb2Zmc2V0ICs9IHRoaXMuYmxvY2tTaXplKSB7XG4gICAgICAgIHRoaXMuX2RvUHJvY2Vzc0Jsb2NrKHRoaXMuX2RhdGEud29yZHMsIG9mZnNldCk7XG4gICAgICB9XG4gICAgICBwcm9jZXNzZWRXb3JkcyA9IHRoaXMuX2RhdGEud29yZHMuc3BsaWNlKDAsIG5Xb3Jkc1JlYWR5KTtcbiAgICAgIHRoaXMuX2RhdGEuc2lnQnl0ZXMgLT0gbkJ5dGVzUmVhZHk7XG4gICAgfVxuICAgIHJldHVybiBuZXcgV29yZEFycmF5KHByb2Nlc3NlZFdvcmRzLCBuQnl0ZXNSZWFkeSk7XG4gIH1cbn1cbmNsYXNzIEhhc2hlciBleHRlbmRzIEJ1ZmZlcmVkQmxvY2tBbGdvcml0aG0ge1xuICB1cGRhdGUobWVzc2FnZVVwZGF0ZSkge1xuICAgIHRoaXMuX2FwcGVuZChtZXNzYWdlVXBkYXRlKTtcbiAgICB0aGlzLl9wcm9jZXNzKCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgZmluYWxpemUobWVzc2FnZVVwZGF0ZSkge1xuICAgIGlmIChtZXNzYWdlVXBkYXRlKSB7XG4gICAgICB0aGlzLl9hcHBlbmQobWVzc2FnZVVwZGF0ZSk7XG4gICAgfVxuICB9XG59XG5cbnZhciBfX2RlZlByb3AgPSBPYmplY3QuZGVmaW5lUHJvcGVydHk7XG52YXIgX19kZWZOb3JtYWxQcm9wID0gKG9iaiwga2V5LCB2YWx1ZSkgPT4ga2V5IGluIG9iaiA/IF9fZGVmUHJvcChvYmosIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlLCB2YWx1ZSB9KSA6IG9ialtrZXldID0gdmFsdWU7XG52YXIgX19wdWJsaWNGaWVsZCA9IChvYmosIGtleSwgdmFsdWUpID0+IHtcbiAgX19kZWZOb3JtYWxQcm9wKG9iaiwgdHlwZW9mIGtleSAhPT0gXCJzeW1ib2xcIiA/IGtleSArIFwiXCIgOiBrZXksIHZhbHVlKTtcbiAgcmV0dXJuIHZhbHVlO1xufTtcbmNvbnN0IEggPSBbXG4gIDE3NzkwMzM3MDMsXG4gIC0xMTUwODMzMDE5LFxuICAxMDEzOTA0MjQyLFxuICAtMTUyMTQ4NjUzNCxcbiAgMTM1OTg5MzExOSxcbiAgLTE2OTQxNDQzNzIsXG4gIDUyODczNDYzNSxcbiAgMTU0MTQ1OTIyNVxuXTtcbmNvbnN0IEsgPSBbXG4gIDExMTYzNTI0MDgsXG4gIDE4OTk0NDc0NDEsXG4gIC0xMjQ1NjQzODI1LFxuICAtMzczOTU3NzIzLFxuICA5NjE5ODcxNjMsXG4gIDE1MDg5NzA5OTMsXG4gIC0xODQxMzMxNTQ4LFxuICAtMTQyNDIwNDA3NSxcbiAgLTY3MDU4NjIxNixcbiAgMzEwNTk4NDAxLFxuICA2MDcyMjUyNzgsXG4gIDE0MjY4ODE5ODcsXG4gIDE5MjUwNzgzODgsXG4gIC0yMTMyODg5MDkwLFxuICAtMTY4MDA3OTE5MyxcbiAgLTEwNDY3NDQ3MTYsXG4gIC00NTk1NzY4OTUsXG4gIC0yNzI3NDI1MjIsXG4gIDI2NDM0NzA3OCxcbiAgNjA0ODA3NjI4LFxuICA3NzAyNTU5ODMsXG4gIDEyNDkxNTAxMjIsXG4gIDE1NTUwODE2OTIsXG4gIDE5OTYwNjQ5ODYsXG4gIC0xNzQwNzQ2NDE0LFxuICAtMTQ3MzEzMjk0NyxcbiAgLTEzNDE5NzA0ODgsXG4gIC0xMDg0NjUzNjI1LFxuICAtOTU4Mzk1NDA1LFxuICAtNzEwNDM4NTg1LFxuICAxMTM5MjY5OTMsXG4gIDMzODI0MTg5NSxcbiAgNjY2MzA3MjA1LFxuICA3NzM1Mjk5MTIsXG4gIDEyOTQ3NTczNzIsXG4gIDEzOTYxODIyOTEsXG4gIDE2OTUxODM3MDAsXG4gIDE5ODY2NjEwNTEsXG4gIC0yMTE3OTQwOTQ2LFxuICAtMTgzODAxMTI1OSxcbiAgLTE1NjQ0ODEzNzUsXG4gIC0xNDc0NjY0ODg1LFxuICAtMTAzNTIzNjQ5NixcbiAgLTk0OTIwMjUyNSxcbiAgLTc3ODkwMTQ3OSxcbiAgLTY5NDYxNDQ5MixcbiAgLTIwMDM5NTM4NyxcbiAgMjc1NDIzMzQ0LFxuICA0MzAyMjc3MzQsXG4gIDUwNjk0ODYxNixcbiAgNjU5MDYwNTU2LFxuICA4ODM5OTc4NzcsXG4gIDk1ODEzOTU3MSxcbiAgMTMyMjgyMjIxOCxcbiAgMTUzNzAwMjA2MyxcbiAgMTc0Nzg3Mzc3OSxcbiAgMTk1NTU2MjIyMixcbiAgMjAyNDEwNDgxNSxcbiAgLTIwNjcyMzY4NDQsXG4gIC0xOTMzMTE0ODcyLFxuICAtMTg2NjUzMDgyMixcbiAgLTE1MzgyMzMxMDksXG4gIC0xMDkwOTM1ODE3LFxuICAtOTY1NjQxOTk4XG5dO1xuY29uc3QgVyA9IFtdO1xuY2xhc3MgU0hBMjU2IGV4dGVuZHMgSGFzaGVyIHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoLi4uYXJndW1lbnRzKTtcbiAgICBfX3B1YmxpY0ZpZWxkKHRoaXMsIFwiX2hhc2hcIiwgbmV3IFdvcmRBcnJheShbLi4uSF0pKTtcbiAgfVxuICAvKipcbiAgICogUmVzZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgaGFzaCBvYmplY3QgdG8gaW5pdGlhbCB2YWx1ZXMuXG4gICAqL1xuICByZXNldCgpIHtcbiAgICBzdXBlci5yZXNldCgpO1xuICAgIHRoaXMuX2hhc2ggPSBuZXcgV29yZEFycmF5KFsuLi5IXSk7XG4gIH1cbiAgX2RvUHJvY2Vzc0Jsb2NrKE0sIG9mZnNldCkge1xuICAgIGNvbnN0IEgyID0gdGhpcy5faGFzaC53b3JkcztcbiAgICBsZXQgYSA9IEgyWzBdO1xuICAgIGxldCBiID0gSDJbMV07XG4gICAgbGV0IGMgPSBIMlsyXTtcbiAgICBsZXQgZCA9IEgyWzNdO1xuICAgIGxldCBlID0gSDJbNF07XG4gICAgbGV0IGYgPSBIMls1XTtcbiAgICBsZXQgZyA9IEgyWzZdO1xuICAgIGxldCBoID0gSDJbN107XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCA2NDsgaSsrKSB7XG4gICAgICBpZiAoaSA8IDE2KSB7XG4gICAgICAgIFdbaV0gPSBNW29mZnNldCArIGldIHwgMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGdhbW1hMHggPSBXW2kgLSAxNV07XG4gICAgICAgIGNvbnN0IGdhbW1hMCA9IChnYW1tYTB4IDw8IDI1IHwgZ2FtbWEweCA+Pj4gNykgXiAoZ2FtbWEweCA8PCAxNCB8IGdhbW1hMHggPj4+IDE4KSBeIGdhbW1hMHggPj4+IDM7XG4gICAgICAgIGNvbnN0IGdhbW1hMXggPSBXW2kgLSAyXTtcbiAgICAgICAgY29uc3QgZ2FtbWExID0gKGdhbW1hMXggPDwgMTUgfCBnYW1tYTF4ID4+PiAxNykgXiAoZ2FtbWExeCA8PCAxMyB8IGdhbW1hMXggPj4+IDE5KSBeIGdhbW1hMXggPj4+IDEwO1xuICAgICAgICBXW2ldID0gZ2FtbWEwICsgV1tpIC0gN10gKyBnYW1tYTEgKyBXW2kgLSAxNl07XG4gICAgICB9XG4gICAgICBjb25zdCBjaCA9IGUgJiBmIF4gfmUgJiBnO1xuICAgICAgY29uc3QgbWFqID0gYSAmIGIgXiBhICYgYyBeIGIgJiBjO1xuICAgICAgY29uc3Qgc2lnbWEwID0gKGEgPDwgMzAgfCBhID4+PiAyKSBeIChhIDw8IDE5IHwgYSA+Pj4gMTMpIF4gKGEgPDwgMTAgfCBhID4+PiAyMik7XG4gICAgICBjb25zdCBzaWdtYTEgPSAoZSA8PCAyNiB8IGUgPj4+IDYpIF4gKGUgPDwgMjEgfCBlID4+PiAxMSkgXiAoZSA8PCA3IHwgZSA+Pj4gMjUpO1xuICAgICAgY29uc3QgdDEgPSBoICsgc2lnbWExICsgY2ggKyBLW2ldICsgV1tpXTtcbiAgICAgIGNvbnN0IHQyID0gc2lnbWEwICsgbWFqO1xuICAgICAgaCA9IGc7XG4gICAgICBnID0gZjtcbiAgICAgIGYgPSBlO1xuICAgICAgZSA9IGQgKyB0MSB8IDA7XG4gICAgICBkID0gYztcbiAgICAgIGMgPSBiO1xuICAgICAgYiA9IGE7XG4gICAgICBhID0gdDEgKyB0MiB8IDA7XG4gICAgfVxuICAgIEgyWzBdID0gSDJbMF0gKyBhIHwgMDtcbiAgICBIMlsxXSA9IEgyWzFdICsgYiB8IDA7XG4gICAgSDJbMl0gPSBIMlsyXSArIGMgfCAwO1xuICAgIEgyWzNdID0gSDJbM10gKyBkIHwgMDtcbiAgICBIMls0XSA9IEgyWzRdICsgZSB8IDA7XG4gICAgSDJbNV0gPSBIMls1XSArIGYgfCAwO1xuICAgIEgyWzZdID0gSDJbNl0gKyBnIHwgMDtcbiAgICBIMls3XSA9IEgyWzddICsgaCB8IDA7XG4gIH1cbiAgLyoqXG4gICAqIEZpbmlzaGVzIHRoZSBoYXNoIGNhbGN1bGF0aW9uIGFuZCByZXR1cm5zIHRoZSBoYXNoIGFzIGEgV29yZEFycmF5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWVzc2FnZVVwZGF0ZSAtIEFkZGl0aW9uYWwgbWVzc2FnZSBjb250ZW50IHRvIGluY2x1ZGUgaW4gdGhlIGhhc2guXG4gICAqIEByZXR1cm5zIHtXb3JkQXJyYXl9IFRoZSBmaW5hbGlzZWQgaGFzaCBhcyBhIFdvcmRBcnJheS5cbiAgICovXG4gIGZpbmFsaXplKG1lc3NhZ2VVcGRhdGUpIHtcbiAgICBzdXBlci5maW5hbGl6ZShtZXNzYWdlVXBkYXRlKTtcbiAgICBjb25zdCBuQml0c1RvdGFsID0gdGhpcy5fbkRhdGFCeXRlcyAqIDg7XG4gICAgY29uc3QgbkJpdHNMZWZ0ID0gdGhpcy5fZGF0YS5zaWdCeXRlcyAqIDg7XG4gICAgdGhpcy5fZGF0YS53b3Jkc1tuQml0c0xlZnQgPj4+IDVdIHw9IDEyOCA8PCAyNCAtIG5CaXRzTGVmdCAlIDMyO1xuICAgIHRoaXMuX2RhdGEud29yZHNbKG5CaXRzTGVmdCArIDY0ID4+PiA5IDw8IDQpICsgMTRdID0gTWF0aC5mbG9vcihcbiAgICAgIG5CaXRzVG90YWwgLyA0Mjk0OTY3Mjk2XG4gICAgKTtcbiAgICB0aGlzLl9kYXRhLndvcmRzWyhuQml0c0xlZnQgKyA2NCA+Pj4gOSA8PCA0KSArIDE1XSA9IG5CaXRzVG90YWw7XG4gICAgdGhpcy5fZGF0YS5zaWdCeXRlcyA9IHRoaXMuX2RhdGEud29yZHMubGVuZ3RoICogNDtcbiAgICB0aGlzLl9wcm9jZXNzKCk7XG4gICAgcmV0dXJuIHRoaXMuX2hhc2g7XG4gIH1cbn1cbmZ1bmN0aW9uIHNoYTI1NihtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoKTtcbn1cbmZ1bmN0aW9uIHNoYTI1NmJhc2U2NChtZXNzYWdlKSB7XG4gIHJldHVybiBuZXcgU0hBMjU2KCkuZmluYWxpemUobWVzc2FnZSkudG9TdHJpbmcoQmFzZTY0KTtcbn1cblxuZnVuY3Rpb24gaGFzaChvYmplY3QsIG9wdGlvbnMgPSB7fSkge1xuICBjb25zdCBoYXNoZWQgPSB0eXBlb2Ygb2JqZWN0ID09PSBcInN0cmluZ1wiID8gb2JqZWN0IDogb2JqZWN0SGFzaChvYmplY3QsIG9wdGlvbnMpO1xuICByZXR1cm4gc2hhMjU2YmFzZTY0KGhhc2hlZCkuc2xpY2UoMCwgMTApO1xufVxuXG5mdW5jdGlvbiBtdXJtdXJIYXNoKGtleSwgc2VlZCA9IDApIHtcbiAgaWYgKHR5cGVvZiBrZXkgPT09IFwic3RyaW5nXCIpIHtcbiAgICBrZXkgPSBjcmVhdGVCdWZmZXIoa2V5KTtcbiAgfVxuICBsZXQgaSA9IDA7XG4gIGxldCBoMSA9IHNlZWQ7XG4gIGxldCBrMTtcbiAgbGV0IGgxYjtcbiAgY29uc3QgcmVtYWluZGVyID0ga2V5Lmxlbmd0aCAmIDM7XG4gIGNvbnN0IGJ5dGVzID0ga2V5Lmxlbmd0aCAtIHJlbWFpbmRlcjtcbiAgY29uc3QgYzEgPSAzNDMyOTE4MzUzO1xuICBjb25zdCBjMiA9IDQ2MTg0NTkwNztcbiAgd2hpbGUgKGkgPCBieXRlcykge1xuICAgIGsxID0ga2V5W2ldICYgMjU1IHwgKGtleVsrK2ldICYgMjU1KSA8PCA4IHwgKGtleVsrK2ldICYgMjU1KSA8PCAxNiB8IChrZXlbKytpXSAmIDI1NSkgPDwgMjQ7XG4gICAgKytpO1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzEgKyAoKChrMSA+Pj4gMTYpICogYzEgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBrMSA9IGsxIDw8IDE1IHwgazEgPj4+IDE3O1xuICAgIGsxID0gKGsxICYgNjU1MzUpICogYzIgKyAoKChrMSA+Pj4gMTYpICogYzIgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICBoMSBePSBrMTtcbiAgICBoMSA9IGgxIDw8IDEzIHwgaDEgPj4+IDE5O1xuICAgIGgxYiA9IChoMSAmIDY1NTM1KSAqIDUgKyAoKChoMSA+Pj4gMTYpICogNSAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICAgIGgxID0gKGgxYiAmIDY1NTM1KSArIDI3NDkyICsgKCgoaDFiID4+PiAxNikgKyA1ODk2NCAmIDY1NTM1KSA8PCAxNik7XG4gIH1cbiAgazEgPSAwO1xuICBzd2l0Y2ggKHJlbWFpbmRlcikge1xuICAgIGNhc2UgMzoge1xuICAgICAgazEgXj0gKGtleVtpICsgMl0gJiAyNTUpIDw8IDE2O1xuICAgIH1cbiAgICBjYXNlIDI6IHtcbiAgICAgIGsxIF49IChrZXlbaSArIDFdICYgMjU1KSA8PCA4O1xuICAgIH1cbiAgICBjYXNlIDE6IHtcbiAgICAgIGsxIF49IGtleVtpXSAmIDI1NTtcbiAgICAgIGsxID0gKGsxICYgNjU1MzUpICogYzEgKyAoKChrMSA+Pj4gMTYpICogYzEgJiA2NTUzNSkgPDwgMTYpICYgNDI5NDk2NzI5NTtcbiAgICAgIGsxID0gazEgPDwgMTUgfCBrMSA+Pj4gMTc7XG4gICAgICBrMSA9IChrMSAmIDY1NTM1KSAqIGMyICsgKCgoazEgPj4+IDE2KSAqIGMyICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gICAgICBoMSBePSBrMTtcbiAgICB9XG4gIH1cbiAgaDEgXj0ga2V5Lmxlbmd0aDtcbiAgaDEgXj0gaDEgPj4+IDE2O1xuICBoMSA9IChoMSAmIDY1NTM1KSAqIDIyNDY4MjI1MDcgKyAoKChoMSA+Pj4gMTYpICogMjI0NjgyMjUwNyAmIDY1NTM1KSA8PCAxNikgJiA0Mjk0OTY3Mjk1O1xuICBoMSBePSBoMSA+Pj4gMTM7XG4gIGgxID0gKGgxICYgNjU1MzUpICogMzI2NjQ4OTkwOSArICgoKGgxID4+PiAxNikgKiAzMjY2NDg5OTA5ICYgNjU1MzUpIDw8IDE2KSAmIDQyOTQ5NjcyOTU7XG4gIGgxIF49IGgxID4+PiAxNjtcbiAgcmV0dXJuIGgxID4+PiAwO1xufVxuZnVuY3Rpb24gY3JlYXRlQnVmZmVyKHZhbCkge1xuICByZXR1cm4gbmV3IFRleHRFbmNvZGVyKCkuZW5jb2RlKHZhbCk7XG59XG5cbmZ1bmN0aW9uIGlzRXF1YWwob2JqZWN0MSwgb2JqZWN0MiwgaGFzaE9wdGlvbnMgPSB7fSkge1xuICBpZiAob2JqZWN0MSA9PT0gb2JqZWN0Mikge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChvYmplY3RIYXNoKG9iamVjdDEsIGhhc2hPcHRpb25zKSA9PT0gb2JqZWN0SGFzaChvYmplY3QyLCBoYXNoT3B0aW9ucykpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGRpZmYob2JqMSwgb2JqMiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGgxID0gX3RvSGFzaGVkT2JqZWN0KG9iajEsIG9wdHMpO1xuICBjb25zdCBoMiA9IF90b0hhc2hlZE9iamVjdChvYmoyLCBvcHRzKTtcbiAgcmV0dXJuIF9kaWZmKGgxLCBoMiwgb3B0cyk7XG59XG5mdW5jdGlvbiBfZGlmZihoMSwgaDIsIG9wdHMgPSB7fSkge1xuICBjb25zdCBkaWZmcyA9IFtdO1xuICBjb25zdCBhbGxQcm9wcyA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgU2V0KFtcbiAgICAuLi5PYmplY3Qua2V5cyhoMS5wcm9wcyB8fCB7fSksXG4gICAgLi4uT2JqZWN0LmtleXMoaDIucHJvcHMgfHwge30pXG4gIF0pO1xuICBpZiAoaDEucHJvcHMgJiYgaDIucHJvcHMpIHtcbiAgICBmb3IgKGNvbnN0IHByb3Agb2YgYWxsUHJvcHMpIHtcbiAgICAgIGNvbnN0IHAxID0gaDEucHJvcHNbcHJvcF07XG4gICAgICBjb25zdCBwMiA9IGgyLnByb3BzW3Byb3BdO1xuICAgICAgaWYgKHAxICYmIHAyKSB7XG4gICAgICAgIGRpZmZzLnB1c2goLi4uX2RpZmYoaDEucHJvcHM/Lltwcm9wXSwgaDIucHJvcHM/Lltwcm9wXSwgb3B0cykpO1xuICAgICAgfSBlbHNlIGlmIChwMSB8fCBwMikge1xuICAgICAgICBkaWZmcy5wdXNoKFxuICAgICAgICAgIG5ldyBEaWZmRW50cnkoKHAyIHx8IHAxKS5rZXksIHAxID8gXCJyZW1vdmVkXCIgOiBcImFkZGVkXCIsIHAyLCBwMSlcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGFsbFByb3BzLnNpemUgPT09IDAgJiYgaDEuaGFzaCAhPT0gaDIuaGFzaCkge1xuICAgIGRpZmZzLnB1c2gobmV3IERpZmZFbnRyeSgoaDIgfHwgaDEpLmtleSwgXCJjaGFuZ2VkXCIsIGgyLCBoMSkpO1xuICB9XG4gIHJldHVybiBkaWZmcztcbn1cbmZ1bmN0aW9uIF90b0hhc2hlZE9iamVjdChvYmosIG9wdHMsIGtleSA9IFwiXCIpIHtcbiAgaWYgKG9iaiAmJiB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiKSB7XG4gICAgcmV0dXJuIG5ldyBEaWZmSGFzaGVkT2JqZWN0KGtleSwgb2JqLCBvYmplY3RIYXNoKG9iaiwgb3B0cykpO1xuICB9XG4gIGNvbnN0IHByb3BzID0ge307XG4gIGNvbnN0IGhhc2hlcyA9IFtdO1xuICBmb3IgKGNvbnN0IF9rZXkgaW4gb2JqKSB7XG4gICAgcHJvcHNbX2tleV0gPSBfdG9IYXNoZWRPYmplY3QoXG4gICAgICBvYmpbX2tleV0sXG4gICAgICBvcHRzLFxuICAgICAga2V5ID8gYCR7a2V5fS4ke19rZXl9YCA6IF9rZXlcbiAgICApO1xuICAgIGhhc2hlcy5wdXNoKHByb3BzW19rZXldLmhhc2gpO1xuICB9XG4gIHJldHVybiBuZXcgRGlmZkhhc2hlZE9iamVjdChrZXksIG9iaiwgYHske2hhc2hlcy5qb2luKFwiOlwiKX19YCwgcHJvcHMpO1xufVxuY2xhc3MgRGlmZkVudHJ5IHtcbiAgY29uc3RydWN0b3Ioa2V5LCB0eXBlLCBuZXdWYWx1ZSwgb2xkVmFsdWUpIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICAgIHRoaXMubmV3VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB0aGlzLm9sZFZhbHVlID0gb2xkVmFsdWU7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9KU09OKCk7XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIHN3aXRjaCAodGhpcy50eXBlKSB7XG4gICAgICBjYXNlIFwiYWRkZWRcIjoge1xuICAgICAgICByZXR1cm4gYEFkZGVkICAgXFxgJHt0aGlzLmtleX1cXGBgO1xuICAgICAgfVxuICAgICAgY2FzZSBcInJlbW92ZWRcIjoge1xuICAgICAgICByZXR1cm4gYFJlbW92ZWQgXFxgJHt0aGlzLmtleX1cXGBgO1xuICAgICAgfVxuICAgICAgY2FzZSBcImNoYW5nZWRcIjoge1xuICAgICAgICByZXR1cm4gYENoYW5nZWQgXFxgJHt0aGlzLmtleX1cXGAgZnJvbSBcXGAke3RoaXMub2xkVmFsdWU/LnRvU3RyaW5nKCkgfHwgXCItXCJ9XFxgIHRvIFxcYCR7dGhpcy5uZXdWYWx1ZS50b1N0cmluZygpfVxcYGA7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jbGFzcyBEaWZmSGFzaGVkT2JqZWN0IHtcbiAgY29uc3RydWN0b3Ioa2V5LCB2YWx1ZSwgaGFzaCwgcHJvcHMpIHtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5oYXNoID0gaGFzaDtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIH1cbiAgdG9TdHJpbmcoKSB7XG4gICAgaWYgKHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiBgeyR7T2JqZWN0LmtleXModGhpcy5wcm9wcykuam9pbihcIixcIil9fWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLnZhbHVlKTtcbiAgICB9XG4gIH1cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IGsgPSB0aGlzLmtleSB8fCBcIi5cIjtcbiAgICBpZiAodGhpcy5wcm9wcykge1xuICAgICAgcmV0dXJuIGAke2t9KHske09iamVjdC5rZXlzKHRoaXMucHJvcHMpLmpvaW4oXCIsXCIpfX0pYDtcbiAgICB9XG4gICAgcmV0dXJuIGAke2t9KCR7dGhpcy52YWx1ZX0pYDtcbiAgfVxufVxuXG5leHBvcnQgeyBkaWZmLCBoYXNoLCBpc0VxdWFsLCBtdXJtdXJIYXNoLCBvYmplY3RIYXNoLCBzaGEyNTYsIHNoYTI1NmJhc2U2NCB9O1xuIiwgImV4cG9ydCB7IGEgYXMgY29uc29sYSwgYyBhcyBjcmVhdGVDb25zb2xhLCBhIGFzIGRlZmF1bHQgfSBmcm9tICcuL3NoYXJlZC9jb25zb2xhLkQ0SkszUkNLLm1qcyc7XG5leHBvcnQgeyBDb25zb2xhLCBMb2dMZXZlbHMsIExvZ1R5cGVzIH0gZnJvbSAnLi9jb3JlLm1qcyc7XG5pbXBvcnQgJy4vc2hhcmVkL2NvbnNvbGEuQ3M1RmR0SEQubWpzJztcbmltcG9ydCAnbm9kZTpwcm9jZXNzJztcbmltcG9ydCAnLi9zaGFyZWQvY29uc29sYS5DQmk2Tm05cy5tanMnO1xuaW1wb3J0ICdub2RlOnR0eSc7XG5pbXBvcnQgJ25vZGU6dXRpbCc7XG5pbXBvcnQgJ25vZGU6cGF0aCc7XG4iLCAiZXhwb3J0IHsgYSBhcyBhbGlnbiwgYiBhcyBib3gsIGMgYXMgY2VudGVyQWxpZ24sIGUgYXMgY29sb3JpemUsIGQgYXMgY29sb3JzLCBnIGFzIGdldENvbG9yLCBsIGFzIGxlZnRBbGlnbiwgciBhcyByaWdodEFsaWduLCBzIGFzIHN0cmlwQW5zaSB9IGZyb20gJy4vc2hhcmVkL2NvbnNvbGEuQ0JpNk5tOXMubWpzJztcbmltcG9ydCAnbm9kZTp0dHknO1xuIiwgImltcG9ydCBjb25zb2xhIGZyb20gJ2NvbnNvbGEnO1xuaW1wb3J0IHsgY29sb3JzIH0gZnJvbSAnY29uc29sYS91dGlscyc7XG5cbmZ1bmN0aW9uIHRvQXJyYXkodmFsKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbCkpIHtcbiAgICByZXR1cm4gdmFsO1xuICB9XG4gIHJldHVybiB2YWwgPT09IHZvaWQgMCA/IFtdIDogW3ZhbF07XG59XG5mdW5jdGlvbiBmb3JtYXRMaW5lQ29sdW1ucyhsaW5lcywgbGluZVByZWZpeCA9IFwiXCIpIHtcbiAgY29uc3QgbWF4TGVuZ2ggPSBbXTtcbiAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgZm9yIChjb25zdCBbaSwgZWxlbWVudF0gb2YgbGluZS5lbnRyaWVzKCkpIHtcbiAgICAgIG1heExlbmdoW2ldID0gTWF0aC5tYXgobWF4TGVuZ2hbaV0gfHwgMCwgZWxlbWVudC5sZW5ndGgpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGluZXMubWFwKFxuICAgIChsKSA9PiBsLm1hcChcbiAgICAgIChjLCBpKSA9PiBsaW5lUHJlZml4ICsgY1tpID09PSAwID8gXCJwYWRTdGFydFwiIDogXCJwYWRFbmRcIl0obWF4TGVuZ2hbaV0pXG4gICAgKS5qb2luKFwiICBcIilcbiAgKS5qb2luKFwiXFxuXCIpO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVZhbHVlKGlucHV0KSB7XG4gIHJldHVybiB0eXBlb2YgaW5wdXQgPT09IFwiZnVuY3Rpb25cIiA/IGlucHV0KCkgOiBpbnB1dDtcbn1cbmNsYXNzIENMSUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihtZXNzYWdlLCBjb2RlKSB7XG4gICAgc3VwZXIobWVzc2FnZSk7XG4gICAgdGhpcy5jb2RlID0gY29kZTtcbiAgICB0aGlzLm5hbWUgPSBcIkNMSUVycm9yXCI7XG4gIH1cbn1cblxuY29uc3QgTlVNQkVSX0NIQVJfUkUgPSAvXFxkLztcbmNvbnN0IFNUUl9TUExJVFRFUlMgPSBbXCItXCIsIFwiX1wiLCBcIi9cIiwgXCIuXCJdO1xuZnVuY3Rpb24gaXNVcHBlcmNhc2UoY2hhciA9IFwiXCIpIHtcbiAgaWYgKE5VTUJFUl9DSEFSX1JFLnRlc3QoY2hhcikpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG4gIHJldHVybiBjaGFyICE9PSBjaGFyLnRvTG93ZXJDYXNlKCk7XG59XG5mdW5jdGlvbiBzcGxpdEJ5Q2FzZShzdHIsIHNlcGFyYXRvcnMpIHtcbiAgY29uc3Qgc3BsaXR0ZXJzID0gc2VwYXJhdG9ycyA/PyBTVFJfU1BMSVRURVJTO1xuICBjb25zdCBwYXJ0cyA9IFtdO1xuICBpZiAoIXN0ciB8fCB0eXBlb2Ygc3RyICE9PSBcInN0cmluZ1wiKSB7XG4gICAgcmV0dXJuIHBhcnRzO1xuICB9XG4gIGxldCBidWZmID0gXCJcIjtcbiAgbGV0IHByZXZpb3VzVXBwZXI7XG4gIGxldCBwcmV2aW91c1NwbGl0dGVyO1xuICBmb3IgKGNvbnN0IGNoYXIgb2Ygc3RyKSB7XG4gICAgY29uc3QgaXNTcGxpdHRlciA9IHNwbGl0dGVycy5pbmNsdWRlcyhjaGFyKTtcbiAgICBpZiAoaXNTcGxpdHRlciA9PT0gdHJ1ZSkge1xuICAgICAgcGFydHMucHVzaChidWZmKTtcbiAgICAgIGJ1ZmYgPSBcIlwiO1xuICAgICAgcHJldmlvdXNVcHBlciA9IHZvaWQgMDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBpc1VwcGVyID0gaXNVcHBlcmNhc2UoY2hhcik7XG4gICAgaWYgKHByZXZpb3VzU3BsaXR0ZXIgPT09IGZhbHNlKSB7XG4gICAgICBpZiAocHJldmlvdXNVcHBlciA9PT0gZmFsc2UgJiYgaXNVcHBlciA9PT0gdHJ1ZSkge1xuICAgICAgICBwYXJ0cy5wdXNoKGJ1ZmYpO1xuICAgICAgICBidWZmID0gY2hhcjtcbiAgICAgICAgcHJldmlvdXNVcHBlciA9IGlzVXBwZXI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByZXZpb3VzVXBwZXIgPT09IHRydWUgJiYgaXNVcHBlciA9PT0gZmFsc2UgJiYgYnVmZi5sZW5ndGggPiAxKSB7XG4gICAgICAgIGNvbnN0IGxhc3RDaGFyID0gYnVmZi5hdCgtMSk7XG4gICAgICAgIHBhcnRzLnB1c2goYnVmZi5zbGljZSgwLCBNYXRoLm1heCgwLCBidWZmLmxlbmd0aCAtIDEpKSk7XG4gICAgICAgIGJ1ZmYgPSBsYXN0Q2hhciArIGNoYXI7XG4gICAgICAgIHByZXZpb3VzVXBwZXIgPSBpc1VwcGVyO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgYnVmZiArPSBjaGFyO1xuICAgIHByZXZpb3VzVXBwZXIgPSBpc1VwcGVyO1xuICAgIHByZXZpb3VzU3BsaXR0ZXIgPSBpc1NwbGl0dGVyO1xuICB9XG4gIHBhcnRzLnB1c2goYnVmZik7XG4gIHJldHVybiBwYXJ0cztcbn1cbmZ1bmN0aW9uIHVwcGVyRmlyc3Qoc3RyKSB7XG4gIHJldHVybiBzdHIgPyBzdHJbMF0udG9VcHBlckNhc2UoKSArIHN0ci5zbGljZSgxKSA6IFwiXCI7XG59XG5mdW5jdGlvbiBsb3dlckZpcnN0KHN0cikge1xuICByZXR1cm4gc3RyID8gc3RyWzBdLnRvTG93ZXJDYXNlKCkgKyBzdHIuc2xpY2UoMSkgOiBcIlwiO1xufVxuZnVuY3Rpb24gcGFzY2FsQ2FzZShzdHIsIG9wdHMpIHtcbiAgcmV0dXJuIHN0ciA/IChBcnJheS5pc0FycmF5KHN0cikgPyBzdHIgOiBzcGxpdEJ5Q2FzZShzdHIpKS5tYXAoKHApID0+IHVwcGVyRmlyc3Qob3B0cz8ubm9ybWFsaXplID8gcC50b0xvd2VyQ2FzZSgpIDogcCkpLmpvaW4oXCJcIikgOiBcIlwiO1xufVxuZnVuY3Rpb24gY2FtZWxDYXNlKHN0ciwgb3B0cykge1xuICByZXR1cm4gbG93ZXJGaXJzdChwYXNjYWxDYXNlKHN0ciB8fCBcIlwiLCBvcHRzKSk7XG59XG5mdW5jdGlvbiBrZWJhYkNhc2Uoc3RyLCBqb2luZXIpIHtcbiAgcmV0dXJuIHN0ciA/IChBcnJheS5pc0FycmF5KHN0cikgPyBzdHIgOiBzcGxpdEJ5Q2FzZShzdHIpKS5tYXAoKHApID0+IHAudG9Mb3dlckNhc2UoKSkuam9pbihqb2luZXIgPz8gXCItXCIpIDogXCJcIjtcbn1cblxuZnVuY3Rpb24gdG9BcnIoYW55KSB7XG4gIHJldHVybiBhbnkgPT0gdm9pZCAwID8gW10gOiBBcnJheS5pc0FycmF5KGFueSkgPyBhbnkgOiBbYW55XTtcbn1cbmZ1bmN0aW9uIHRvVmFsKG91dCwga2V5LCB2YWwsIG9wdHMpIHtcbiAgbGV0IHg7XG4gIGNvbnN0IG9sZCA9IG91dFtrZXldO1xuICBjb25zdCBueHQgPSB+b3B0cy5zdHJpbmcuaW5kZXhPZihrZXkpID8gdmFsID09IHZvaWQgMCB8fCB2YWwgPT09IHRydWUgPyBcIlwiIDogU3RyaW5nKHZhbCkgOiB0eXBlb2YgdmFsID09PSBcImJvb2xlYW5cIiA/IHZhbCA6IH5vcHRzLmJvb2xlYW4uaW5kZXhPZihrZXkpID8gdmFsID09PSBcImZhbHNlXCIgPyBmYWxzZSA6IHZhbCA9PT0gXCJ0cnVlXCIgfHwgKG91dC5fLnB1c2goKHggPSArdmFsLCB4ICogMCA9PT0gMCkgPyB4IDogdmFsKSwgISF2YWwpIDogKHggPSArdmFsLCB4ICogMCA9PT0gMCkgPyB4IDogdmFsO1xuICBvdXRba2V5XSA9IG9sZCA9PSB2b2lkIDAgPyBueHQgOiBBcnJheS5pc0FycmF5KG9sZCkgPyBvbGQuY29uY2F0KG54dCkgOiBbb2xkLCBueHRdO1xufVxuZnVuY3Rpb24gcGFyc2VSYXdBcmdzKGFyZ3MgPSBbXSwgb3B0cyA9IHt9KSB7XG4gIGxldCBrO1xuICBsZXQgYXJyO1xuICBsZXQgYXJnO1xuICBsZXQgbmFtZTtcbiAgbGV0IHZhbDtcbiAgY29uc3Qgb3V0ID0geyBfOiBbXSB9O1xuICBsZXQgaSA9IDA7XG4gIGxldCBqID0gMDtcbiAgbGV0IGlkeCA9IDA7XG4gIGNvbnN0IGxlbiA9IGFyZ3MubGVuZ3RoO1xuICBjb25zdCBhbGliaSA9IG9wdHMuYWxpYXMgIT09IHZvaWQgMDtcbiAgY29uc3Qgc3RyaWN0ID0gb3B0cy51bmtub3duICE9PSB2b2lkIDA7XG4gIGNvbnN0IGRlZmF1bHRzID0gb3B0cy5kZWZhdWx0ICE9PSB2b2lkIDA7XG4gIG9wdHMuYWxpYXMgPSBvcHRzLmFsaWFzIHx8IHt9O1xuICBvcHRzLnN0cmluZyA9IHRvQXJyKG9wdHMuc3RyaW5nKTtcbiAgb3B0cy5ib29sZWFuID0gdG9BcnIob3B0cy5ib29sZWFuKTtcbiAgaWYgKGFsaWJpKSB7XG4gICAgZm9yIChrIGluIG9wdHMuYWxpYXMpIHtcbiAgICAgIGFyciA9IG9wdHMuYWxpYXNba10gPSB0b0FycihvcHRzLmFsaWFzW2tdKTtcbiAgICAgIGZvciAoaSA9IDA7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgKG9wdHMuYWxpYXNbYXJyW2ldXSA9IGFyci5jb25jYXQoaykpLnNwbGljZShpLCAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZm9yIChpID0gb3B0cy5ib29sZWFuLmxlbmd0aDsgaS0tID4gMDsgKSB7XG4gICAgYXJyID0gb3B0cy5hbGlhc1tvcHRzLmJvb2xlYW5baV1dIHx8IFtdO1xuICAgIGZvciAoaiA9IGFyci5sZW5ndGg7IGotLSA+IDA7ICkge1xuICAgICAgb3B0cy5ib29sZWFuLnB1c2goYXJyW2pdKTtcbiAgICB9XG4gIH1cbiAgZm9yIChpID0gb3B0cy5zdHJpbmcubGVuZ3RoOyBpLS0gPiAwOyApIHtcbiAgICBhcnIgPSBvcHRzLmFsaWFzW29wdHMuc3RyaW5nW2ldXSB8fCBbXTtcbiAgICBmb3IgKGogPSBhcnIubGVuZ3RoOyBqLS0gPiAwOyApIHtcbiAgICAgIG9wdHMuc3RyaW5nLnB1c2goYXJyW2pdKTtcbiAgICB9XG4gIH1cbiAgaWYgKGRlZmF1bHRzKSB7XG4gICAgZm9yIChrIGluIG9wdHMuZGVmYXVsdCkge1xuICAgICAgbmFtZSA9IHR5cGVvZiBvcHRzLmRlZmF1bHRba107XG4gICAgICBhcnIgPSBvcHRzLmFsaWFzW2tdID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcbiAgICAgIGlmIChvcHRzW25hbWVdICE9PSB2b2lkIDApIHtcbiAgICAgICAgb3B0c1tuYW1lXS5wdXNoKGspO1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgb3B0c1tuYW1lXS5wdXNoKGFycltpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY29uc3Qga2V5cyA9IHN0cmljdCA/IE9iamVjdC5rZXlzKG9wdHMuYWxpYXMpIDogW107XG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgIGFyZyA9IGFyZ3NbaV07XG4gICAgaWYgKGFyZyA9PT0gXCItLVwiKSB7XG4gICAgICBvdXQuXyA9IG91dC5fLmNvbmNhdChhcmdzLnNsaWNlKCsraSkpO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGZvciAoaiA9IDA7IGogPCBhcmcubGVuZ3RoOyBqKyspIHtcbiAgICAgIGlmIChhcmcuY2hhckNvZGVBdChqKSAhPT0gNDUpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChqID09PSAwKSB7XG4gICAgICBvdXQuXy5wdXNoKGFyZyk7XG4gICAgfSBlbHNlIGlmIChhcmcuc3Vic3RyaW5nKGosIGogKyAzKSA9PT0gXCJuby1cIikge1xuICAgICAgbmFtZSA9IGFyZy5zbGljZShNYXRoLm1heCgwLCBqICsgMykpO1xuICAgICAgaWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkge1xuICAgICAgICByZXR1cm4gb3B0cy51bmtub3duKGFyZyk7XG4gICAgICB9XG4gICAgICBvdXRbbmFtZV0gPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yIChpZHggPSBqICsgMTsgaWR4IDwgYXJnLmxlbmd0aDsgaWR4KyspIHtcbiAgICAgICAgaWYgKGFyZy5jaGFyQ29kZUF0KGlkeCkgPT09IDYxKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5hbWUgPSBhcmcuc3Vic3RyaW5nKGosIGlkeCk7XG4gICAgICB2YWwgPSBhcmcuc2xpY2UoTWF0aC5tYXgoMCwgKytpZHgpKSB8fCBpICsgMSA9PT0gbGVuIHx8IChcIlwiICsgYXJnc1tpICsgMV0pLmNoYXJDb2RlQXQoMCkgPT09IDQ1IHx8IGFyZ3NbKytpXTtcbiAgICAgIGFyciA9IGogPT09IDIgPyBbbmFtZV0gOiBuYW1lO1xuICAgICAgZm9yIChpZHggPSAwOyBpZHggPCBhcnIubGVuZ3RoOyBpZHgrKykge1xuICAgICAgICBuYW1lID0gYXJyW2lkeF07XG4gICAgICAgIGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHtcbiAgICAgICAgICByZXR1cm4gb3B0cy51bmtub3duKFwiLVwiLnJlcGVhdChqKSArIG5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIHRvVmFsKG91dCwgbmFtZSwgaWR4ICsgMSA8IGFyci5sZW5ndGggfHwgdmFsLCBvcHRzKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGRlZmF1bHRzKSB7XG4gICAgZm9yIChrIGluIG9wdHMuZGVmYXVsdCkge1xuICAgICAgaWYgKG91dFtrXSA9PT0gdm9pZCAwKSB7XG4gICAgICAgIG91dFtrXSA9IG9wdHMuZGVmYXVsdFtrXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKGFsaWJpKSB7XG4gICAgZm9yIChrIGluIG91dCkge1xuICAgICAgYXJyID0gb3B0cy5hbGlhc1trXSB8fCBbXTtcbiAgICAgIHdoaWxlIChhcnIubGVuZ3RoID4gMCkge1xuICAgICAgICBvdXRbYXJyLnNoaWZ0KCldID0gb3V0W2tdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gb3V0O1xufVxuXG5mdW5jdGlvbiBwYXJzZUFyZ3MocmF3QXJncywgYXJnc0RlZikge1xuICBjb25zdCBwYXJzZU9wdGlvbnMgPSB7XG4gICAgYm9vbGVhbjogW10sXG4gICAgc3RyaW5nOiBbXSxcbiAgICBtaXhlZDogW10sXG4gICAgYWxpYXM6IHt9LFxuICAgIGRlZmF1bHQ6IHt9XG4gIH07XG4gIGNvbnN0IGFyZ3MgPSByZXNvbHZlQXJncyhhcmdzRGVmKTtcbiAgZm9yIChjb25zdCBhcmcgb2YgYXJncykge1xuICAgIGlmIChhcmcudHlwZSA9PT0gXCJwb3NpdGlvbmFsXCIpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBpZiAoYXJnLnR5cGUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5zdHJpbmcucHVzaChhcmcubmFtZSk7XG4gICAgfSBlbHNlIGlmIChhcmcudHlwZSA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5ib29sZWFuLnB1c2goYXJnLm5hbWUpO1xuICAgIH1cbiAgICBpZiAoYXJnLmRlZmF1bHQgIT09IHZvaWQgMCkge1xuICAgICAgcGFyc2VPcHRpb25zLmRlZmF1bHRbYXJnLm5hbWVdID0gYXJnLmRlZmF1bHQ7XG4gICAgfVxuICAgIGlmIChhcmcuYWxpYXMpIHtcbiAgICAgIHBhcnNlT3B0aW9ucy5hbGlhc1thcmcubmFtZV0gPSBhcmcuYWxpYXM7XG4gICAgfVxuICB9XG4gIGNvbnN0IHBhcnNlZCA9IHBhcnNlUmF3QXJncyhyYXdBcmdzLCBwYXJzZU9wdGlvbnMpO1xuICBjb25zdCBbLi4ucG9zaXRpb25hbEFyZ3VtZW50c10gPSBwYXJzZWQuXztcbiAgY29uc3QgcGFyc2VkQXJnc1Byb3h5ID0gbmV3IFByb3h5KHBhcnNlZCwge1xuICAgIGdldCh0YXJnZXQsIHByb3ApIHtcbiAgICAgIHJldHVybiB0YXJnZXRbcHJvcF0gPz8gdGFyZ2V0W2NhbWVsQ2FzZShwcm9wKV0gPz8gdGFyZ2V0W2tlYmFiQ2FzZShwcm9wKV07XG4gICAgfVxuICB9KTtcbiAgZm9yIChjb25zdCBbLCBhcmddIG9mIGFyZ3MuZW50cmllcygpKSB7XG4gICAgaWYgKGFyZy50eXBlID09PSBcInBvc2l0aW9uYWxcIikge1xuICAgICAgY29uc3QgbmV4dFBvc2l0aW9uYWxBcmd1bWVudCA9IHBvc2l0aW9uYWxBcmd1bWVudHMuc2hpZnQoKTtcbiAgICAgIGlmIChuZXh0UG9zaXRpb25hbEFyZ3VtZW50ICE9PSB2b2lkIDApIHtcbiAgICAgICAgcGFyc2VkQXJnc1Byb3h5W2FyZy5uYW1lXSA9IG5leHRQb3NpdGlvbmFsQXJndW1lbnQ7XG4gICAgICB9IGVsc2UgaWYgKGFyZy5kZWZhdWx0ID09PSB2b2lkIDAgJiYgYXJnLnJlcXVpcmVkICE9PSBmYWxzZSkge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoXG4gICAgICAgICAgYE1pc3NpbmcgcmVxdWlyZWQgcG9zaXRpb25hbCBhcmd1bWVudDogJHthcmcubmFtZS50b1VwcGVyQ2FzZSgpfWAsXG4gICAgICAgICAgXCJFQVJHXCJcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBhcnNlZEFyZ3NQcm94eVthcmcubmFtZV0gPSBhcmcuZGVmYXVsdDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKGFyZy5yZXF1aXJlZCAmJiBwYXJzZWRBcmdzUHJveHlbYXJnLm5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgIHRocm93IG5ldyBDTElFcnJvcihgTWlzc2luZyByZXF1aXJlZCBhcmd1bWVudDogLS0ke2FyZy5uYW1lfWAsIFwiRUFSR1wiKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHBhcnNlZEFyZ3NQcm94eTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVBcmdzKGFyZ3NEZWYpIHtcbiAgY29uc3QgYXJncyA9IFtdO1xuICBmb3IgKGNvbnN0IFtuYW1lLCBhcmdEZWZdIG9mIE9iamVjdC5lbnRyaWVzKGFyZ3NEZWYgfHwge30pKSB7XG4gICAgYXJncy5wdXNoKHtcbiAgICAgIC4uLmFyZ0RlZixcbiAgICAgIG5hbWUsXG4gICAgICBhbGlhczogdG9BcnJheShhcmdEZWYuYWxpYXMpXG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGFyZ3M7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUNvbW1hbmQoZGVmKSB7XG4gIHJldHVybiBkZWY7XG59XG5hc3luYyBmdW5jdGlvbiBydW5Db21tYW5kKGNtZCwgb3B0cykge1xuICBjb25zdCBjbWRBcmdzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5hcmdzIHx8IHt9KTtcbiAgY29uc3QgcGFyc2VkQXJncyA9IHBhcnNlQXJncyhvcHRzLnJhd0FyZ3MsIGNtZEFyZ3MpO1xuICBjb25zdCBjb250ZXh0ID0ge1xuICAgIHJhd0FyZ3M6IG9wdHMucmF3QXJncyxcbiAgICBhcmdzOiBwYXJzZWRBcmdzLFxuICAgIGRhdGE6IG9wdHMuZGF0YSxcbiAgICBjbWRcbiAgfTtcbiAgaWYgKHR5cGVvZiBjbWQuc2V0dXAgPT09IFwiZnVuY3Rpb25cIikge1xuICAgIGF3YWl0IGNtZC5zZXR1cChjb250ZXh0KTtcbiAgfVxuICBsZXQgcmVzdWx0O1xuICB0cnkge1xuICAgIGNvbnN0IHN1YkNvbW1hbmRzID0gYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5zdWJDb21tYW5kcyk7XG4gICAgaWYgKHN1YkNvbW1hbmRzICYmIE9iamVjdC5rZXlzKHN1YkNvbW1hbmRzKS5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBzdWJDb21tYW5kQXJnSW5kZXggPSBvcHRzLnJhd0FyZ3MuZmluZEluZGV4KFxuICAgICAgICAoYXJnKSA9PiAhYXJnLnN0YXJ0c1dpdGgoXCItXCIpXG4gICAgICApO1xuICAgICAgY29uc3Qgc3ViQ29tbWFuZE5hbWUgPSBvcHRzLnJhd0FyZ3Nbc3ViQ29tbWFuZEFyZ0luZGV4XTtcbiAgICAgIGlmIChzdWJDb21tYW5kTmFtZSkge1xuICAgICAgICBpZiAoIXN1YkNvbW1hbmRzW3N1YkNvbW1hbmROYW1lXSkge1xuICAgICAgICAgIHRocm93IG5ldyBDTElFcnJvcihcbiAgICAgICAgICAgIGBVbmtub3duIGNvbW1hbmQgXFxgJHtzdWJDb21tYW5kTmFtZX1cXGBgLFxuICAgICAgICAgICAgXCJFX1VOS05PV05fQ09NTUFORFwiXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBzdWJDb21tYW5kID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1YkNvbW1hbmRzW3N1YkNvbW1hbmROYW1lXSk7XG4gICAgICAgIGlmIChzdWJDb21tYW5kKSB7XG4gICAgICAgICAgYXdhaXQgcnVuQ29tbWFuZChzdWJDb21tYW5kLCB7XG4gICAgICAgICAgICByYXdBcmdzOiBvcHRzLnJhd0FyZ3Muc2xpY2Uoc3ViQ29tbWFuZEFyZ0luZGV4ICsgMSlcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmICghY21kLnJ1bikge1xuICAgICAgICB0aHJvdyBuZXcgQ0xJRXJyb3IoYE5vIGNvbW1hbmQgc3BlY2lmaWVkLmAsIFwiRV9OT19DT01NQU5EXCIpO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAodHlwZW9mIGNtZC5ydW4gPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmVzdWx0ID0gYXdhaXQgY21kLnJ1bihjb250ZXh0KTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHR5cGVvZiBjbWQuY2xlYW51cCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBhd2FpdCBjbWQuY2xlYW51cChjb250ZXh0KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHsgcmVzdWx0IH07XG59XG5hc3luYyBmdW5jdGlvbiByZXNvbHZlU3ViQ29tbWFuZChjbWQsIHJhd0FyZ3MsIHBhcmVudCkge1xuICBjb25zdCBzdWJDb21tYW5kcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuc3ViQ29tbWFuZHMpO1xuICBpZiAoc3ViQ29tbWFuZHMgJiYgT2JqZWN0LmtleXMoc3ViQ29tbWFuZHMpLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBzdWJDb21tYW5kQXJnSW5kZXggPSByYXdBcmdzLmZpbmRJbmRleCgoYXJnKSA9PiAhYXJnLnN0YXJ0c1dpdGgoXCItXCIpKTtcbiAgICBjb25zdCBzdWJDb21tYW5kTmFtZSA9IHJhd0FyZ3Nbc3ViQ29tbWFuZEFyZ0luZGV4XTtcbiAgICBjb25zdCBzdWJDb21tYW5kID0gYXdhaXQgcmVzb2x2ZVZhbHVlKHN1YkNvbW1hbmRzW3N1YkNvbW1hbmROYW1lXSk7XG4gICAgaWYgKHN1YkNvbW1hbmQpIHtcbiAgICAgIHJldHVybiByZXNvbHZlU3ViQ29tbWFuZChcbiAgICAgICAgc3ViQ29tbWFuZCxcbiAgICAgICAgcmF3QXJncy5zbGljZShzdWJDb21tYW5kQXJnSW5kZXggKyAxKSxcbiAgICAgICAgY21kXG4gICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gW2NtZCwgcGFyZW50XTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2hvd1VzYWdlKGNtZCwgcGFyZW50KSB7XG4gIHRyeSB7XG4gICAgY29uc29sYS5sb2coYXdhaXQgcmVuZGVyVXNhZ2UoY21kLCBwYXJlbnQpICsgXCJcXG5cIik7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc29sYS5lcnJvcihlcnJvcik7XG4gIH1cbn1cbmFzeW5jIGZ1bmN0aW9uIHJlbmRlclVzYWdlKGNtZCwgcGFyZW50KSB7XG4gIGNvbnN0IGNtZE1ldGEgPSBhd2FpdCByZXNvbHZlVmFsdWUoY21kLm1ldGEgfHwge30pO1xuICBjb25zdCBjbWRBcmdzID0gcmVzb2x2ZUFyZ3MoYXdhaXQgcmVzb2x2ZVZhbHVlKGNtZC5hcmdzIHx8IHt9KSk7XG4gIGNvbnN0IHBhcmVudE1ldGEgPSBhd2FpdCByZXNvbHZlVmFsdWUocGFyZW50Py5tZXRhIHx8IHt9KTtcbiAgY29uc3QgY29tbWFuZE5hbWUgPSBgJHtwYXJlbnRNZXRhLm5hbWUgPyBgJHtwYXJlbnRNZXRhLm5hbWV9IGAgOiBcIlwifWAgKyAoY21kTWV0YS5uYW1lIHx8IHByb2Nlc3MuYXJndlsxXSk7XG4gIGNvbnN0IGFyZ0xpbmVzID0gW107XG4gIGNvbnN0IHBvc0xpbmVzID0gW107XG4gIGNvbnN0IGNvbW1hbmRzTGluZXMgPSBbXTtcbiAgY29uc3QgdXNhZ2VMaW5lID0gW107XG4gIGZvciAoY29uc3QgYXJnIG9mIGNtZEFyZ3MpIHtcbiAgICBpZiAoYXJnLnR5cGUgPT09IFwicG9zaXRpb25hbFwiKSB7XG4gICAgICBjb25zdCBuYW1lID0gYXJnLm5hbWUudG9VcHBlckNhc2UoKTtcbiAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBhcmcucmVxdWlyZWQgIT09IGZhbHNlICYmIGFyZy5kZWZhdWx0ID09PSB2b2lkIDA7XG4gICAgICBjb25zdCBkZWZhdWx0SGludCA9IGFyZy5kZWZhdWx0ID8gYD1cIiR7YXJnLmRlZmF1bHR9XCJgIDogXCJcIjtcbiAgICAgIHBvc0xpbmVzLnB1c2goW1xuICAgICAgICBcImBcIiArIG5hbWUgKyBkZWZhdWx0SGludCArIFwiYFwiLFxuICAgICAgICBhcmcuZGVzY3JpcHRpb24gfHwgXCJcIixcbiAgICAgICAgYXJnLnZhbHVlSGludCA/IGA8JHthcmcudmFsdWVIaW50fT5gIDogXCJcIlxuICAgICAgXSk7XG4gICAgICB1c2FnZUxpbmUucHVzaChpc1JlcXVpcmVkID8gYDwke25hbWV9PmAgOiBgWyR7bmFtZX1dYCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGlzUmVxdWlyZWQgPSBhcmcucmVxdWlyZWQgPT09IHRydWUgJiYgYXJnLmRlZmF1bHQgPT09IHZvaWQgMDtcbiAgICAgIGNvbnN0IGFyZ1N0ciA9IChhcmcudHlwZSA9PT0gXCJib29sZWFuXCIgJiYgYXJnLmRlZmF1bHQgPT09IHRydWUgPyBbXG4gICAgICAgIC4uLihhcmcuYWxpYXMgfHwgW10pLm1hcCgoYSkgPT4gYC0tbm8tJHthfWApLFxuICAgICAgICBgLS1uby0ke2FyZy5uYW1lfWBcbiAgICAgIF0uam9pbihcIiwgXCIpIDogWy4uLihhcmcuYWxpYXMgfHwgW10pLm1hcCgoYSkgPT4gYC0ke2F9YCksIGAtLSR7YXJnLm5hbWV9YF0uam9pbihcbiAgICAgICAgXCIsIFwiXG4gICAgICApKSArIChhcmcudHlwZSA9PT0gXCJzdHJpbmdcIiAmJiAoYXJnLnZhbHVlSGludCB8fCBhcmcuZGVmYXVsdCkgPyBgPSR7YXJnLnZhbHVlSGludCA/IGA8JHthcmcudmFsdWVIaW50fT5gIDogYFwiJHthcmcuZGVmYXVsdCB8fCBcIlwifVwiYH1gIDogXCJcIik7XG4gICAgICBhcmdMaW5lcy5wdXNoKFtcbiAgICAgICAgXCJgXCIgKyBhcmdTdHIgKyAoaXNSZXF1aXJlZCA/IFwiIChyZXF1aXJlZClcIiA6IFwiXCIpICsgXCJgXCIsXG4gICAgICAgIGFyZy5kZXNjcmlwdGlvbiB8fCBcIlwiXG4gICAgICBdKTtcbiAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAgICAgIHVzYWdlTGluZS5wdXNoKGFyZ1N0cik7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChjbWQuc3ViQ29tbWFuZHMpIHtcbiAgICBjb25zdCBjb21tYW5kTmFtZXMgPSBbXTtcbiAgICBjb25zdCBzdWJDb21tYW5kcyA9IGF3YWl0IHJlc29sdmVWYWx1ZShjbWQuc3ViQ29tbWFuZHMpO1xuICAgIGZvciAoY29uc3QgW25hbWUsIHN1Yl0gb2YgT2JqZWN0LmVudHJpZXMoc3ViQ29tbWFuZHMpKSB7XG4gICAgICBjb25zdCBzdWJDbWQgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViKTtcbiAgICAgIGNvbnN0IG1ldGEgPSBhd2FpdCByZXNvbHZlVmFsdWUoc3ViQ21kPy5tZXRhKTtcbiAgICAgIGNvbW1hbmRzTGluZXMucHVzaChbYFxcYCR7bmFtZX1cXGBgLCBtZXRhPy5kZXNjcmlwdGlvbiB8fCBcIlwiXSk7XG4gICAgICBjb21tYW5kTmFtZXMucHVzaChuYW1lKTtcbiAgICB9XG4gICAgdXNhZ2VMaW5lLnB1c2goY29tbWFuZE5hbWVzLmpvaW4oXCJ8XCIpKTtcbiAgfVxuICBjb25zdCB1c2FnZUxpbmVzID0gW107XG4gIGNvbnN0IHZlcnNpb24gPSBjbWRNZXRhLnZlcnNpb24gfHwgcGFyZW50TWV0YS52ZXJzaW9uO1xuICB1c2FnZUxpbmVzLnB1c2goXG4gICAgY29sb3JzLmdyYXkoXG4gICAgICBgJHtjbWRNZXRhLmRlc2NyaXB0aW9ufSAoJHtjb21tYW5kTmFtZSArICh2ZXJzaW9uID8gYCB2JHt2ZXJzaW9ufWAgOiBcIlwiKX0pYFxuICAgICksXG4gICAgXCJcIlxuICApO1xuICBjb25zdCBoYXNPcHRpb25zID0gYXJnTGluZXMubGVuZ3RoID4gMCB8fCBwb3NMaW5lcy5sZW5ndGggPiAwO1xuICB1c2FnZUxpbmVzLnB1c2goXG4gICAgYCR7Y29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIlVTQUdFXCIpKX0gXFxgJHtjb21tYW5kTmFtZX0ke2hhc09wdGlvbnMgPyBcIiBbT1BUSU9OU11cIiA6IFwiXCJ9ICR7dXNhZ2VMaW5lLmpvaW4oXCIgXCIpfVxcYGAsXG4gICAgXCJcIlxuICApO1xuICBpZiAocG9zTGluZXMubGVuZ3RoID4gMCkge1xuICAgIHVzYWdlTGluZXMucHVzaChjb2xvcnMudW5kZXJsaW5lKGNvbG9ycy5ib2xkKFwiQVJHVU1FTlRTXCIpKSwgXCJcIik7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGZvcm1hdExpbmVDb2x1bW5zKHBvc0xpbmVzLCBcIiAgXCIpKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goXCJcIik7XG4gIH1cbiAgaWYgKGFyZ0xpbmVzLmxlbmd0aCA+IDApIHtcbiAgICB1c2FnZUxpbmVzLnB1c2goY29sb3JzLnVuZGVybGluZShjb2xvcnMuYm9sZChcIk9QVElPTlNcIikpLCBcIlwiKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goZm9ybWF0TGluZUNvbHVtbnMoYXJnTGluZXMsIFwiICBcIikpO1xuICAgIHVzYWdlTGluZXMucHVzaChcIlwiKTtcbiAgfVxuICBpZiAoY29tbWFuZHNMaW5lcy5sZW5ndGggPiAwKSB7XG4gICAgdXNhZ2VMaW5lcy5wdXNoKGNvbG9ycy51bmRlcmxpbmUoY29sb3JzLmJvbGQoXCJDT01NQU5EU1wiKSksIFwiXCIpO1xuICAgIHVzYWdlTGluZXMucHVzaChmb3JtYXRMaW5lQ29sdW1ucyhjb21tYW5kc0xpbmVzLCBcIiAgXCIpKTtcbiAgICB1c2FnZUxpbmVzLnB1c2goXG4gICAgICBcIlwiLFxuICAgICAgYFVzZSBcXGAke2NvbW1hbmROYW1lfSA8Y29tbWFuZD4gLS1oZWxwXFxgIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IGEgY29tbWFuZC5gXG4gICAgKTtcbiAgfVxuICByZXR1cm4gdXNhZ2VMaW5lcy5maWx0ZXIoKGwpID0+IHR5cGVvZiBsID09PSBcInN0cmluZ1wiKS5qb2luKFwiXFxuXCIpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBydW5NYWluKGNtZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHJhd0FyZ3MgPSBvcHRzLnJhd0FyZ3MgfHwgcHJvY2Vzcy5hcmd2LnNsaWNlKDIpO1xuICBjb25zdCBzaG93VXNhZ2UkMSA9IG9wdHMuc2hvd1VzYWdlIHx8IHNob3dVc2FnZTtcbiAgdHJ5IHtcbiAgICBpZiAocmF3QXJncy5pbmNsdWRlcyhcIi0taGVscFwiKSB8fCByYXdBcmdzLmluY2x1ZGVzKFwiLWhcIikpIHtcbiAgICAgIGF3YWl0IHNob3dVc2FnZSQxKC4uLmF3YWl0IHJlc29sdmVTdWJDb21tYW5kKGNtZCwgcmF3QXJncykpO1xuICAgICAgcHJvY2Vzcy5leGl0KDApO1xuICAgIH0gZWxzZSBpZiAocmF3QXJncy5sZW5ndGggPT09IDEgJiYgcmF3QXJnc1swXSA9PT0gXCItLXZlcnNpb25cIikge1xuICAgICAgY29uc3QgbWV0YSA9IHR5cGVvZiBjbWQubWV0YSA9PT0gXCJmdW5jdGlvblwiID8gYXdhaXQgY21kLm1ldGEoKSA6IGF3YWl0IGNtZC5tZXRhO1xuICAgICAgaWYgKCFtZXRhPy52ZXJzaW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBDTElFcnJvcihcIk5vIHZlcnNpb24gc3BlY2lmaWVkXCIsIFwiRV9OT19WRVJTSU9OXCIpO1xuICAgICAgfVxuICAgICAgY29uc29sYS5sb2cobWV0YS52ZXJzaW9uKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChjbWQsIHsgcmF3QXJncyB9KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY29uc3QgaXNDTElFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgQ0xJRXJyb3I7XG4gICAgaWYgKCFpc0NMSUVycm9yKSB7XG4gICAgICBjb25zb2xhLmVycm9yKGVycm9yLCBcIlxcblwiKTtcbiAgICB9XG4gICAgaWYgKGlzQ0xJRXJyb3IpIHtcbiAgICAgIGF3YWl0IHNob3dVc2FnZSQxKC4uLmF3YWl0IHJlc29sdmVTdWJDb21tYW5kKGNtZCwgcmF3QXJncykpO1xuICAgIH1cbiAgICBjb25zb2xhLmVycm9yKGVycm9yLm1lc3NhZ2UpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlTWFpbihjbWQpIHtcbiAgcmV0dXJuIChvcHRzID0ge30pID0+IHJ1bk1haW4oY21kLCBvcHRzKTtcbn1cblxuZXhwb3J0IHsgY3JlYXRlTWFpbiwgZGVmaW5lQ29tbWFuZCwgcGFyc2VBcmdzLCByZW5kZXJVc2FnZSwgcnVuQ29tbWFuZCwgcnVuTWFpbiwgc2hvd1VzYWdlIH07XG4iLCAiaW1wb3J0IHR5cGUgeyBQYWNrYWdlTWFuaWZlc3QgfSBmcm9tIFwicXVlcnktcmVnaXN0cnlcIjtcblxuY29uc3QgZ2l0aHViVXJsUmVnZXggPVxuICAvXig/OmdpdFxcKyk/aHR0cHM/OlxcL1xcL2dpdGh1YlxcLmNvbVxcLyhbXi9dKylcXC8oW14vXSspXFwuZ2l0JC87XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0T3duZXJBbmRSZXBvKFxuICByZXBvc2l0b3J5VXJsOiBzdHJpbmcsXG4pOiBbc3RyaW5nLCBzdHJpbmddIHwgbnVsbCB7XG4gIGNvbnN0IG1hdGNoID0gcmVwb3NpdG9yeVVybC5tYXRjaChnaXRodWJVcmxSZWdleCk7XG5cbiAgaWYgKG1hdGNoKSB7XG4gICAgcmV0dXJuIFttYXRjaFsxXSwgbWF0Y2hbMl1dO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRyYWN0UmVwb3NpdG9yeShtYW5pZmVzdDogUGFja2FnZU1hbmlmZXN0KSB7XG4gIHJldHVybiB0eXBlb2YgbWFuaWZlc3QucmVwb3NpdG9yeSA9PT0gXCJzdHJpbmdcIlxuICAgID8gbWFuaWZlc3QucmVwb3NpdG9yeVxuICAgIDogbWFuaWZlc3QucmVwb3NpdG9yeT8udXJsO1xufVxuXG5jb25zdCBjb21taXRMZW5ndGggPSA3O1xuXG4vKlxuICogXCIwOWVmZDA1NTMzNzRmZjdkM2U2MmI3OTM3OGUzMTg0ZjVlYjU3NTcxXCIgPT4gXCIwOWVmZDA1XCJcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFiYnJldmlhdGVDb21taXRIYXNoKGZ1bGxIYXNoOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGZ1bGxIYXNoLnN1YnN0cmluZygwLCBjb21taXRMZW5ndGgpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNQdWxsUmVxdWVzdChyZWY6IHN0cmluZykge1xuICByZXR1cm4gIU51bWJlci5pc05hTihOdW1iZXIocmVmKSk7XG59XG5cbmV4cG9ydCB0eXBlIENvbW1lbnQgPSBcIm9mZlwiIHwgXCJjcmVhdGVcIiB8IFwidXBkYXRlXCI7XG5leHBvcnQgdHlwZSBQYWNrYWdlTWFuYWdlciA9IFwibnBtXCIgfCBcInBucG1cIiB8IFwieWFyblwiIHwgXCJidW5cIjtcblxuY29uc3Qgd2hpdGVsaXN0ID1cbiAgXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vc3RhY2tibGl0ei1sYWJzL3BrZy5wci5uZXcvbWFpbi8ud2hpdGVsaXN0XCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpc1doaXRlbGlzdGVkKG93bmVyOiBzdHJpbmcsIHJlcG86IHN0cmluZykge1xuICBjb25zdCBjb21iaW5hdGlvbiA9IGAke293bmVyfS8ke3JlcG99YDtcblxuICB0cnkge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZmV0Y2god2hpdGVsaXN0KTtcbiAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuXG4gICAgcmV0dXJuIGNvbnRlbnQuaW5jbHVkZXMoY29tYmluYXRpb24pO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cbiIsICJ7XG4gIFwibmFtZVwiOiBcInBrZy1wci1uZXdcIixcbiAgXCJ2ZXJzaW9uXCI6IFwiMC4wLjQzXCIsXG4gIFwiZGVzY3JpcHRpb25cIjogXCJcIixcbiAgXCJtYWluXCI6IFwiaW5kZXguanNcIixcbiAgXCJ0eXBlXCI6IFwibW9kdWxlXCIsXG4gIFwiYmluXCI6IHtcbiAgICBcInBrZy1wci1uZXdcIjogXCJiaW4vY2xpLmpzXCJcbiAgfSxcbiAgXCJyZXBvc2l0b3J5XCI6IHtcbiAgICBcInR5cGVcIjogXCJnaXRcIixcbiAgICBcInVybFwiOiBcImh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja2JsaXR6LWxhYnMvcGtnLnByLm5ld1wiLFxuICAgIFwiZGlyZWN0b3J5XCI6IFwicGFja2FnZXMvY2xpXCJcbiAgfSxcbiAgXCJzY3JpcHRzXCI6IHtcbiAgICBcImRldlwiOiBcInRzdXAgLS13YXRjaFwiLFxuICAgIFwiYnVpbGRcIjogXCJ0c3VwXCIsXG4gICAgXCJidWlsZDpwdWJsaXNoXCI6IFwiQVBJX1VSTD1odHRwczovL3BrZy5wci5uZXcvIHRzdXBcIlxuICB9LFxuICBcImtleXdvcmRzXCI6IFtdLFxuICBcImF1dGhvclwiOiBcIlwiLFxuICBcImxpY2Vuc2VcIjogXCJNSVRcIixcbiAgXCJkZXBlbmRlbmNpZXNcIjoge1xuICAgIFwiQGpzZGV2dG9vbHMvZXotc3Bhd25cIjogXCJeMy4wLjRcIixcbiAgICBcIkBvY3Rva2l0L2FjdGlvblwiOiBcIl42LjEuMFwiLFxuICAgIFwiaWdub3JlXCI6IFwiXjUuMy4xXCIsXG4gICAgXCJpc2JpbmFyeWZpbGVcIjogXCJeNS4wLjJcIixcbiAgICBcInBrZy10eXBlc1wiOiBcIl4xLjEuMVwiLFxuICAgIFwicXVlcnktcmVnaXN0cnlcIjogXCJeMy4wLjFcIixcbiAgICBcInRpbnlnbG9iYnlcIjogXCJeMC4yLjlcIlxuICB9LFxuICBcImRldkRlcGVuZGVuY2llc1wiOiB7XG4gICAgXCJAcGtnLXByLW5ldy91dGlsc1wiOiBcIndvcmtzcGFjZTpeXCIsXG4gICAgXCJjaXR0eVwiOiBcIl4wLjEuNlwiLFxuICAgIFwidHN1cFwiOiBcIl44LjAuMlwiXG4gIH1cbn1cbiIsICJleHBvcnQgY29uc3QgY3JlYXRlRGVmYXVsdFRlbXBsYXRlID0gKFxuICBkZXBlbmRlbmNpZXM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4pID0+ICh7XG4gIFwiaW5kZXguanNcIjogXCJcIixcbiAgXCJSRUFETUUubWRcIjogYFxuIyBEZWZhdWx0IFRlbXBsYXRlXG5cblRoaXMgaXMgYSB0ZW1wbGF0ZSB0aGF0IGxldmVyYWdlcyB0aGUgZXhwZXJpbWVudGFsIHRlbXBsYXRlcyBmZWF0dXJlIGluIHRoZSBcXGBwa2cucHIubmV3XFxgIHRvb2wuXG5cbiMjIE92ZXJ2aWV3XG5cblRlbXBsYXRlcyBhcmUgcGFydGljdWxhcmx5IHVzZWZ1bCBmb3IgY3JlYXRpbmcgbGl2ZSwgaW50ZXJhY3RpdmUgZXhhbXBsZXMgb2YgeW91ciBwYWNrYWdlcywgd2hpY2ggY2FuIGJlIHZlcnkgYmVuZWZpY2lhbCBmb3IgYm90aCBkZXZlbG9wbWVudCBhbmQgZG9jdW1lbnRhdGlvbiBwdXJwb3Nlcy5cblxuQXMgYSB1c2VyLCB5b3UgY2FuIGNoZWNrIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhbmQgc2VlIHRoZSBuZXcgZ2VuZXJhdGVkIHBhY2thZ2VzISBZb3UgY2FuIGp1c3QgY29weSB0aG9zZSBhbmQgcHV0IHRoZW0gaW4geW91ciBwYWNrYWdlLmpzb24gb3IgaW5zdGFsbCB0aGVtIHdpdGggeW91ciBmYXZvcml0ZSBwYWNrYWdlIG1hbmFnZXIuXG5cbiR7T2JqZWN0LnZhbHVlcyhkZXBlbmRlbmNpZXMpXG4gIC5tYXAoXG4gICAgKHVybCkgPT4gYFxuXFxgXFxgXFxgc2hcbm5wbSBpICR7dXJsfVxuXFxgXFxgXFxgXG5gLFxuICApXG4gIC5qb2luKFwiXCIpfVxuXG4jIyBVc2FnZVxuXG5UbyB1c2UgdGhpcyBmZWF0dXJlIGFzIGEgbWFpbnRhaW5lciwgeW91IGNhbiBydW4gdGhlIGZvbGxvd2luZyBjb21tYW5kOlxuXG5cXGBcXGBcXGBzaFxubnB4IHBrZy1wci1uZXcgcHVibGlzaCAnLi9wYWNrYWdlcy9BJyAtLXRlbXBsYXRlICcuL2V4YW1wbGVzLyonXG5cXGBcXGBcXGBcblxuIyMgQmVuZWZpdHNcblxuLSBJbnRlcmFjdGl2ZSBEZW1vczogQXV0b21hdGljYWxseSBjcmVhdGUgbGl2ZSBkZW1vcyB0aGF0IHVzZXJzIGNhbiBpbnRlcmFjdCB3aXRoIGRpcmVjdGx5IGluIHRoZWlyIGJyb3dzZXIuXG4tIEVuaGFuY2VkIFRlc3Rpbmc6IFF1aWNrbHkgc3BpbiB1cCBlbnZpcm9ubWVudHMgdG8gdGVzdCB5b3VyIHBhY2thZ2UgaW4gZGlmZmVyZW50IHNjZW5hcmlvcy5cbi0gSW1wcm92ZWQgU2hhcmluZzogRWFzaWx5IHNoYXJlIHdvcmtpbmcgZXhhbXBsZXMgb2YgeW91ciBwYWNrYWdlIHdpdGggY29sbGFib3JhdG9ycyBvciB1c2VycyB3aXRob3V0IG5lZWRpbmcgdGhlbSB0byBzZXQgdXAgdGhlaXIgZW52aXJvbm1lbnQuXG5gLFxuICBcInBhY2thZ2UuanNvblwiOiBKU09OLnN0cmluZ2lmeShcbiAgICB7XG4gICAgICBuYW1lOiBcImRlZmF1bHRcIixcbiAgICAgIHZlcnNpb246IFwiMS4wLjBcIixcbiAgICAgIGRlc2NyaXB0aW9uOiBcImdlbmVyYXRlZCBieSBwa2cucHIubmV3XCIsXG4gICAgICBtYWluOiBcImluZGV4LmpzXCIsXG4gICAgICBkZXBlbmRlbmNpZXMsXG4gICAgICBrZXl3b3JkczogW10sXG4gICAgICBhdXRob3I6IFwicGtnLnByLm5ld1wiLFxuICAgICAgbGljZW5zZTogXCJJU0NcIixcbiAgICB9LFxuICAgIG51bGwsXG4gICAgMixcbiAgKSxcbn0pO1xuIl0sCiAgIm1hcHBpbmdzIjogIjs7Ozs7Ozs7Ozs7QUFxRUEsU0FBUyxnQkFBZ0IsT0FBTztBQUM5QixNQUFJLFVBQVUsUUFBUSxPQUFPLFVBQVUsVUFBVTtBQUMvQyxXQUFPO0FBQUEsRUFDVDtBQUNBLFFBQU0sWUFBWSxPQUFPLGVBQWUsS0FBSztBQUM3QyxNQUFJLGNBQWMsUUFBUSxjQUFjLE9BQU8sYUFBYSxPQUFPLGVBQWUsU0FBUyxNQUFNLE1BQU07QUFDckcsV0FBTztBQUFBLEVBQ1Q7QUFDQSxNQUFJLE9BQU8sWUFBWSxPQUFPO0FBQzVCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSSxPQUFPLGVBQWUsT0FBTztBQUMvQixXQUFPLE9B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T0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFNBQU8sTUFBSSxNQUFJQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsUUFBTSxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLQSxNQUFHLE9BQUtBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsT0FBS0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUssT0FBS0EsTUFBR0EsTUFBRyxPQUFLLE9BQUtBLE1BQUdBLE1BQUcsT0FBSyxPQUFLQSxNQUFHQSxNQUFHLE9BQUtBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTUEsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTUEsTUFBRyxRQUFNQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU0sUUFBTUEsTUFBR0EsTUFBRyxRQUFNLFFBQU1BLE1BQUdBLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsUUFBTSxRQUFNQSxNQUFHQSxNQUFHLFFBQU1BLE1BQUcsU0FBT0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU8sU0FBT0EsTUFBR0EsTUFBRyxTQUFPLFNBQU9BLE1BQUdBLE1BQUcsU0FBTyxTQUFPQSxNQUFHQSxNQUFHLFNBQU9BLE1BQUcsU0FBTyxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsVUFBUSxVQUFRQSxNQUFHQSxNQUFHLFVBQVEsVUFBUUEsTUFBR0EsTUFBRyxVQUFRLFVBQVFBLE1BQUdBLE1BQUcsV0FBUyxXQUFTQSxNQUFHQSxNQUFHLFVBQVEsTUFBSTtBQUFBLE1BQUcsR0FBRUwsR0FBRSxrQkFBZ0IsU0FBU0MsSUFBRTtBQUFDLFlB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QUcsR0FBRSxPQUFPQyxNQUFHLFdBQVNBLEtBQUUsS0FBR0EsSUFBRUQsRUFBQyxHQUFFQTtBQUFHLElBQUksS0FBRyxjQUFjLEVBQUM7QUFBQSxNQUFDLFlBQVlDLElBQUU7QUFBQyxjQUFNQSxJQUFFLEtBQUUsR0FBRSxFQUFFLE1BQUssU0FBUyxHQUFFLEVBQUUsTUFBSyxVQUFTLENBQUMsR0FBRSxLQUFLLFVBQVFBLEdBQUUsU0FBUSxLQUFLLFFBQU0sQ0FBQyxHQUFHQSxHQUFFLGlCQUFlLENBQUMsQ0FBQyxHQUFFLEtBQUssU0FBTyxLQUFLLElBQUksS0FBSyxRQUFRLFVBQVUsQ0FBQyxFQUFDLE9BQU1ELEdBQUMsTUFBSUEsT0FBSUMsR0FBRSxRQUFRLEdBQUUsQ0FBQyxHQUFFLEtBQUssR0FBRyxPQUFNLENBQUFELE9BQUc7QUFBQyxVQUFBQSxPQUFJLE9BQUssS0FBSyxVQUFVO0FBQUEsUUFBRSxDQUFDLEdBQUUsS0FBSyxHQUFHLFVBQVMsQ0FBQUEsT0FBRztBQUFDLGtCQUFPQSxJQUFFO0FBQUEsWUFBQyxLQUFJO0FBQUEsWUFBTyxLQUFJO0FBQUssbUJBQUssU0FBTyxLQUFLLFdBQVMsSUFBRSxLQUFLLFFBQVEsU0FBTyxJQUFFLEtBQUssU0FBTztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQUEsWUFBTyxLQUFJO0FBQVEsbUJBQUssU0FBTyxLQUFLLFdBQVMsS0FBSyxRQUFRLFNBQU8sSUFBRSxJQUFFLEtBQUssU0FBTztBQUFFO0FBQUEsWUFBTSxLQUFJO0FBQVEsbUJBQUssWUFBWTtBQUFFO0FBQUEsVUFBSztBQUFBLFFBQUMsQ0FBQztBQUFBLE1BQUU7QUFBQSxNQUFDLElBQUksU0FBUTtBQUFDLGVBQU8sS0FBSyxRQUFRLEtBQUssTUFBTSxFQUFFO0FBQUEsTUFBSztBQUFBLE1BQUMsWUFBVztBQUFDLGNBQU1DLEtBQUUsS0FBSyxNQUFNLFdBQVMsS0FBSyxRQUFRO0FBQU8sYUFBSyxRQUFNQSxLQUFFLENBQUMsSUFBRSxLQUFLLFFBQVEsSUFBSSxDQUFBRCxPQUFHQSxHQUFFLEtB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QUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFRQSxNQUFLLE9BQ2xCQSxPQUFNLE9BQ05BLE1BQUssT0FBUUEsTUFBSyxPQUNsQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBUUEsTUFBSyxPQUNsQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE9BQU0sT0FDTkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsT0FBTSxPQUNOQSxPQUFNLE9BQ05BLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxNQUFLLE9BQVNBLE1BQUssT0FDbkJBLE1BQUssT0FBU0EsTUFBSyxPQUNuQkEsTUFBSyxPQUFTQSxNQUFLLE9BQ25CQSxPQUFNLFFBQ05BLE1BQUssUUFBU0EsTUFBSyxRQUNuQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFNBQ05BLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxPQUFNLFNBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssV0FDckJBLE1BQUssV0FBWUEsTUFBSztBQUMzQjtBQUVBLFNBQVMsWUFBWUEsSUFBRztBQUN2QixTQUFPQSxPQUFNLFNBQ1RBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLO0FBQ3pCO0FBRUEsU0FBUyxPQUFPQSxJQUFHO0FBQ2xCLFNBQU9BLE1BQUssUUFBVUEsTUFBSyxRQUN2QkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxNQUFLLFFBQVVBLE1BQUssUUFDcEJBLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsTUFBSyxRQUFVQSxNQUFLLFFBQ3BCQSxPQUFNLFFBQ05BLE1BQUssUUFBVUEsTUFBSyxRQUNwQkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFFBQ05BLE9BQU0sUUFDTkEsT0FBTSxRQUNOQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE9BQU0sU0FDTkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxPQUFNLFNBQ05BLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVVBLE1BQUssU0FDcEJBLE1BQUssU0FBVUEsTUFBSyxTQUNwQkEsTUFBSyxTQUFVQSxNQUFLLFNBQ3BCQSxNQUFLLFNBQVdBLE1BQUssU0FDckJBLE9BQU0sU0FDTkEsT0FBTSxTQUNOQSxNQUFLLFNBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxPQUFNLFVBQ05BLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE9BQU0sVUFDTkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsT0FBTSxVQUNOQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFBV0EsTUFBSyxVQUNyQkEsTUFBSyxVQUFXQSxNQUFLLFVBQ3JCQSxNQUFLLFVBQVdBLE1BQUssVUFDckJBLE1BQUssVUFB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RUEsUUFBTSxjQUFjO0FBQUE7QUFHcEIsUUFBTSxhQUFhLGtCQUFrQixRQUFRO0FBQzdDLE1BQUksQ0FBQyxZQUFZO0FBQ2YsVUFBTSxJQUFJO0FBQUEsTUFDUiwwREFBMEQsV0FBVztBQUFBLEVBQ3pFLFdBQVc7QUFBQSxJQUNUO0FBQUEsRUFDRjtBQUVBLFFBQU0sUUFBUSxvQkFBb0IsVUFBVTtBQUM1QyxNQUFJLENBQUMsT0FBTztBQUNWLFVBQU0sSUFBSTtBQUFBLE1BQ1IsK0RBQStELFdBQVcscUJBQXFCLFVBQVU7QUFBQSxFQUM3RyxXQUFXO0FBQUEsSUFDVDtBQUFBLEVBQ0Y7QUFDRjtBQUVBLGVBQWUsWUFBWUEsSUFBVztBQUNwQyxNQUFJO0FBQ0YsV0FBTyxNQUFNLEdBQUcsU0FBU0EsSUFBRyxNQUFNO0FBQUEsRUFDcEMsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7QUFFQSxlQUFlLGdCQUFnQkEsSUFBVztBQUN4QyxRQUFNLFdBQVcsTUFBTSxZQUFZQSxFQUFDO0FBQ3BDLE1BQUksYUFBYSxNQUFNO0FBQ3JCLFdBQU87QUFBQSxFQUNUO0FBQ0EsTUFBSTtBQUNGLFdBQU8saUJBQWlCLFFBQVE7QUFBQSxFQUNsQyxRQUFRO0FBQ04sV0FBTztBQUFBLEVBQ1Q7QUFDRjtBQUVBLFNBQVMsaUJBQWlCLFVBQWtCO0FBQzFDLE1BQUk7QUFDRixXQUFPLEtBQUssTUFBTSxRQUFRO0FBQUEsRUFDNUIsUUFBUTtBQUNOLFdBQU87QUFBQSxFQUNUO0FBQ0Y7IiwKICAibmFtZXMiOiBbImRlZmF1bHRzIiwgInAiLCAiYyIsICJpIiwgImwiLCAieCIsICJ0ZXh0IiwgImkiLCAieCIsICJ5IiwgImkiLCAicCIsICJhcmd2IiwgImVudiIsICJpc0NvbG9yU3VwcG9ydGVkIiwgInJlcGxhY2VDbG9zZSIsICJjcmVhdGVDb2xvcnMiLCAiRiIsICJ1IiwgInQiLCAicyIsICJXIiwgIkMiLCAiRCIsICJhIiwgIm4iLCAiQiIsICJjIiwgInAiLCAiRyIsICJhbnNpUmVnZXgiLCAic3RyaXBBbnNpIiwgIngiLCAiZW52IiwgIl8iLCAibSIsICJnZXRDb2xvciIsICJjcmVhdGVDb25zb2xhIiwgIlQiLCAiQSIsICJyIiwgImwiLCAiSSIsICJSIiwgInkiLCAiYyIsICJMIiwgIk8iLCAiTiIsICJQIiwgInVuaWNvZGUiLCAicyIsICJyZWdleCIsICJpIiwgIl9fZGVmUHJvcCIsICJhIiwgImMiLCAiZCIsICJnIiwgImkiLCAibCIsICJjIiwgInAiLCAieCIsICJrIiwgImRlZmF1bHRzIiwgImEiLCAicCIsICJfIiwgImkiLCAiayIsICJzdGRvdXQiXQp9Cg==