@getopenpay/openpay-js-react 0.4.0-alpha.14b159a → 0.4.0-alpha.9036020

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.
Files changed (27) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-D27ZUwES-Fs2_XlvE.js → Resource-CLJV_lq7-BDMhF9VB.js} +3 -3
  3. package/dist/SimpleSpanProcessor-CIN9vYKM-B7fNG1ea.js +957 -0
  4. package/dist/detect-resources-CMmLUgV3-BEXAWy3v.js +854 -0
  5. package/dist/diag-api-SP_N8rPO-1r1fv8fM.js +6 -0
  6. package/dist/{index-CLZnrBkZ-B9kNtPY2.js → index-B3YNeP-z-BBn4jCdv.js} +24 -24
  7. package/dist/{index-BwJmUmOs-C0ELUJPf.js → index-BWt9540e-RdGzi4ah.js} +2 -2
  8. package/dist/{index-CIVF63I--DDc2aqLP.js → index-CIsF7Ua1-BV_Slwli.js} +5 -5
  9. package/dist/{index-EtlEzZ0F-Bf8UKuAj.js → index-CTkJQsUq-RKtUGvx0.js} +23 -23
  10. package/dist/{index-Dj6XrVyV-BmIT5YgA.js → index-CaixfagH-RlofVA62.js} +68 -68
  11. package/dist/{index-D7RBuymZ-Bk0XSY02.js → index-DT-YBC1M-D5tPoDHS.js} +2 -2
  12. package/dist/index-DfquoU8T.js +8208 -0
  13. package/dist/{index-Cr5vhHkB-BCLtQznG.js → index-ER4R7lcd-MBdtmj8g.js} +10 -10
  14. package/dist/{index-BM1yCGXw-NuvOKfCS.js → index-TQ0eWeC0-GzeRDDgj.js} +6 -6
  15. package/dist/{index-49-Q7vy4-B_Ki4KzE.js → index-uasDwvc7-D6y8BxZn.js} +63 -63
  16. package/dist/index.d.ts +0 -96
  17. package/dist/index.js +10 -12
  18. package/dist/{metrics-api-CLs6Jtak-gSk8gJmV.js → metrics-api-CBc6Bort-DregKpiW.js} +14 -14
  19. package/dist/{sdk-info-9G2VJmnW-BMO0q7o3.js → sdk-info-Ds3JTI7U-N1XA0sbd.js} +15 -15
  20. package/dist/{url-BD1As9sn-CmQFvorR.js → url-DTzaufTD-HAN48j2i.js} +57 -57
  21. package/dist/{utils-0n9-mW4b-Cp3fkkMP.js → utils-DKGFT3av-BIW_JHsd.js} +8 -8
  22. package/dist/{utils-fl3H4RKx-B7I8IFm-.js → utils-DVGk1Z7n-DDQC7EBb.js} +2 -2
  23. package/package.json +1 -1
  24. package/dist/SimpleSpanProcessor-Dpuu3s91-ds7CX89q.js +0 -957
  25. package/dist/detect-resources-D6sk4LS7-D0Z6Zsq0.js +0 -854
  26. package/dist/diag-api-fkA_sv1Q-BF-zdEoL.js +0 -6
  27. package/dist/index-L4_qTCrV.js +0 -8296
@@ -1,24 +1,24 @@
1
- import { y as P, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Pt, a as Ot, O as At, dE as Et, W as wt, g as Rt } from "./url-BD1As9sn-CmQFvorR.js";
2
- import { U as E, l as K, j as w, G as jt, k as W, L } from "./index-L4_qTCrV.js";
3
- import { r as d } from "./diag-api-fkA_sv1Q-BF-zdEoL.js";
4
- import { a as Ct, A as G } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
5
- import { bo as Nt, bp as It, br as xt, bs as Dt, bt as Mt, bq as kt, bm as Ut, bu as Lt, O as $t, bn as Bt, bv as Ft } from "./sdk-info-9G2VJmnW-BMO0q7o3.js";
6
- import { l as zt } from "./utils-BGeftTvk-CchVJ54o.js";
1
+ import { y as O, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Ot, a as Pt, O as At, dE as Et, W as wt, g as Rt } from "./url-DTzaufTD-HAN48j2i.js";
2
+ import { O as E, c as K, U as w, H as Ct, R as W, M as $ } from "./index-DfquoU8T.js";
3
+ import { r as d } from "./diag-api-SP_N8rPO-1r1fv8fM.js";
4
+ import { a as jt, A as J } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
5
+ import { bo as Nt, bp as It, br as xt, bs as Dt, bt as Mt, bq as Ut, bm as kt, bu as $t, O as Lt, bn as Bt, bv as Ft } from "./sdk-info-Ds3JTI7U-N1XA0sbd.js";
6
+ import { l as Ht } from "./utils-BGeftTvk-CchVJ54o.js";
7
7
  var p;
8
8
  (function(t) {
9
9
  t[t.NOT_RECORD = 0] = "NOT_RECORD", t[t.RECORD = 1] = "RECORD", t[t.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
10
10
  })(p || (p = {}));
11
11
  var I = W("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
12
- function J(t) {
12
+ function q(t) {
13
13
  return t.setValue(I, !0);
14
14
  }
15
- function Ht(t) {
15
+ function zt(t) {
16
16
  return t.deleteValue(I);
17
17
  }
18
18
  function x(t) {
19
19
  return t.getValue(I) === !0;
20
20
  }
21
- var Vt = "=", R = ";", S = ",", O = "baggage", Kt = 180, Wt = 4096, Gt = 8192, Jt = function(t, r) {
21
+ var Vt = "=", R = ";", S = ",", P = "baggage", Kt = 180, Wt = 4096, Jt = 8192, qt = function(t, r) {
22
22
  var e = typeof Symbol == "function" && t[Symbol.iterator];
23
23
  if (!e) return t;
24
24
  var n = e.call(t), o, a = [], i;
@@ -35,15 +35,15 @@ var Vt = "=", R = ";", S = ",", O = "baggage", Kt = 180, Wt = 4096, Gt = 8192, J
35
35
  }
36
36
  return a;
37
37
  };
38
- function q(t) {
38
+ function G(t) {
39
39
  return t.reduce(function(r, e) {
40
40
  var n = "" + r + (r !== "" ? S : "") + e;
41
- return n.length > Gt ? r : n;
41
+ return n.length > Jt ? r : n;
42
42
  }, "");
43
43
  }
44
44
  function Q(t) {
45
45
  return t.getAllEntries().map(function(r) {
46
- var e = Jt(r, 2), n = e[0], o = e[1], a = encodeURIComponent(n) + "=" + encodeURIComponent(o.value);
46
+ var e = qt(r, 2), n = e[0], o = e[1], a = encodeURIComponent(n) + "=" + encodeURIComponent(o.value);
47
47
  return o.metadata !== void 0 && (a += R + o.metadata.toString()), a;
48
48
  });
49
49
  }
@@ -60,7 +60,7 @@ function D(t) {
60
60
  }
61
61
  }
62
62
  }
63
- function qt(t) {
63
+ function Gt(t) {
64
64
  return typeof t != "string" || t.length === 0 ? {} : t.split(S).map(function(r) {
65
65
  return D(r);
66
66
  }).filter(function(r) {
@@ -75,15 +75,15 @@ var Qt = (
75
75
  function t() {
76
76
  }
77
77
  return t.prototype.inject = function(r, e, n) {
78
- var o = P.getBaggage(r);
78
+ var o = O.getBaggage(r);
79
79
  if (!(!o || x(r))) {
80
80
  var a = Q(o).filter(function(u) {
81
81
  return u.length <= Wt;
82
- }).slice(0, Kt), i = q(a);
83
- i.length > 0 && n.set(e, O, i);
82
+ }).slice(0, Kt), i = G(a);
83
+ i.length > 0 && n.set(e, P, i);
84
84
  }
85
85
  }, t.prototype.extract = function(r, e, n) {
86
- var o = n.get(e, O), a = Array.isArray(o) ? o.join(S) : o;
86
+ var o = n.get(e, P), a = Array.isArray(o) ? o.join(S) : o;
87
87
  if (!a)
88
88
  return r;
89
89
  var i = {};
@@ -96,9 +96,9 @@ var Qt = (
96
96
  var f = { value: c.value };
97
97
  c.metadata && (f.metadata = c.metadata), i[c.key] = f;
98
98
  }
99
- }), Object.entries(i).length === 0 ? r : P.setBaggage(r, P.createBaggage(i));
99
+ }), Object.entries(i).length === 0 ? r : O.setBaggage(r, O.createBaggage(i));
100
100
  }, t.prototype.fields = function() {
101
- return [O];
101
+ return [P];
102
102
  }, t;
103
103
  }()
104
104
  ), Xt = (
@@ -259,18 +259,18 @@ var or = function(t, r) {
259
259
  return t.concat(a || Array.prototype.slice.call(r));
260
260
  };
261
261
  function ir(t) {
262
- return btoa(String.fromCharCode.apply(String, ar([], or(G(t)), !1)));
262
+ return btoa(String.fromCharCode.apply(String, ar([], or(J(t)), !1)));
263
263
  }
264
264
  var ur = 8, lr = 16, cr = (
265
265
  /** @class */
266
266
  /* @__PURE__ */ function() {
267
267
  function t() {
268
- this.generateTraceId = $(lr), this.generateSpanId = $(ur);
268
+ this.generateTraceId = L(lr), this.generateSpanId = L(ur);
269
269
  }
270
270
  return t;
271
271
  }()
272
272
  ), h = Array(32);
273
- function $(t) {
273
+ function L(t) {
274
274
  return function() {
275
275
  for (var r = 0; r < t * 2; r++)
276
276
  h[r] = Math.floor(Math.random() * 16) + 48, h[r] >= 58 && (h[r] += 39);
@@ -333,14 +333,14 @@ var fr = function(t) {
333
333
  return this._fields.slice();
334
334
  }, t;
335
335
  }()
336
- ), j = "[_0-9a-z-*/]", yr = "[a-z]" + j + "{0,255}", dr = "[a-z0-9]" + j + "{0,240}@[a-z]" + j + "{0,13}", hr = new RegExp("^(?:" + yr + "|" + dr + ")$"), mr = /^[ -~]{0,255}[!-~]$/, gr = /,|=/;
336
+ ), C = "[_0-9a-z-*/]", yr = "[a-z]" + C + "{0,255}", dr = "[a-z0-9]" + C + "{0,240}@[a-z]" + C + "{0,13}", hr = new RegExp("^(?:" + yr + "|" + dr + ")$"), mr = /^[ -~]{0,255}[!-~]$/, gr = /,|=/;
337
337
  function vr(t) {
338
338
  return hr.test(t);
339
339
  }
340
340
  function _r(t) {
341
341
  return mr.test(t) && !gr.test(t);
342
342
  }
343
- var B = 32, Sr = 512, F = ",", z = "=", ot = (
343
+ var B = 32, Sr = 512, F = ",", H = "=", ot = (
344
344
  /** @class */
345
345
  function() {
346
346
  function t(r) {
@@ -357,11 +357,11 @@ var B = 32, Sr = 512, F = ",", z = "=", ot = (
357
357
  }, t.prototype.serialize = function() {
358
358
  var r = this;
359
359
  return this._keys().reduce(function(e, n) {
360
- return e.push(n + z + r.get(n)), e;
360
+ return e.push(n + H + r.get(n)), e;
361
361
  }, []).join(F);
362
362
  }, t.prototype._parse = function(r) {
363
363
  r.length > Sr || (this._internalState = r.split(F).reverse().reduce(function(e, n) {
364
- var o = n.trim(), a = o.indexOf(z);
364
+ var o = n.trim(), a = o.indexOf(H);
365
365
  if (a !== -1) {
366
366
  var i = o.slice(0, a), u = o.slice(a + 1, n.length);
367
367
  vr(i) && _r(u) && e.set(i, u);
@@ -375,7 +375,7 @@ var B = 32, Sr = 512, F = ",", z = "=", ot = (
375
375
  return r._internalState = new Map(this._internalState), r;
376
376
  }, t;
377
377
  }()
378
- ), m = "traceparent", g = "tracestate", br = "00", Tr = "(?!ff)[\\da-f]{2}", Pr = "(?![0]{32})[\\da-f]{32}", Or = "(?![0]{16})[\\da-f]{16}", Ar = "[\\da-f]{2}", Er = new RegExp("^\\s?(" + Tr + ")-(" + Pr + ")-(" + Or + ")-(" + Ar + ")(-.*)?\\s?$");
378
+ ), m = "traceparent", g = "tracestate", br = "00", Tr = "(?!ff)[\\da-f]{2}", Or = "(?![0]{32})[\\da-f]{32}", Pr = "(?![0]{16})[\\da-f]{16}", Ar = "[\\da-f]{2}", Er = new RegExp("^\\s?(" + Tr + ")-(" + Or + ")-(" + Pr + ")-(" + Ar + ")(-.*)?\\s?$");
379
379
  function at(t) {
380
380
  var r = Er.exec(t);
381
381
  return !r || r[1] === "00" && r[5] ? null : {
@@ -416,17 +416,17 @@ var wr = (
416
416
  return [m, g];
417
417
  }, t;
418
418
  }()
419
- ), M = W("OpenTelemetry SDK Context Key RPC_METADATA"), C;
419
+ ), M = W("OpenTelemetry SDK Context Key RPC_METADATA"), j;
420
420
  (function(t) {
421
421
  t.HTTP = "http";
422
- })(C || (C = {}));
422
+ })(j || (j = {}));
423
423
  function Rr(t, r) {
424
424
  return t.setValue(M, r);
425
425
  }
426
- function jr(t) {
426
+ function Cr(t) {
427
427
  return t.deleteValue(M);
428
428
  }
429
- function Cr(t) {
429
+ function jr(t) {
430
430
  return t.getValue(M);
431
431
  }
432
432
  var N = (
@@ -477,7 +477,7 @@ var N = (
477
477
  }
478
478
  return t.prototype.shouldSample = function(r, e) {
479
479
  return {
480
- decision: jt(e) && this._accumulate(e) < this._upperBound ? p.RECORD_AND_SAMPLED : p.NOT_RECORD
480
+ decision: Ct(e) && this._accumulate(e) < this._upperBound ? p.RECORD_AND_SAMPLED : p.NOT_RECORD
481
481
  };
482
482
  }, t.prototype.toString = function() {
483
483
  return "TraceIdRatioBased{" + this._ratio + "}";
@@ -491,28 +491,28 @@ var N = (
491
491
  return e;
492
492
  }, t;
493
493
  }()
494
- ), xr = "[object Object]", Dr = "[object Null]", Mr = "[object Undefined]", kr = Function.prototype, it = kr.toString, Ur = it.call(Object), Lr = $r(Object.getPrototypeOf, Object), ut = Object.prototype, lt = ut.hasOwnProperty, s = Symbol ? Symbol.toStringTag : void 0, ct = ut.toString;
495
- function $r(t, r) {
494
+ ), xr = "[object Object]", Dr = "[object Null]", Mr = "[object Undefined]", Ur = Function.prototype, it = Ur.toString, kr = it.call(Object), $r = Lr(Object.getPrototypeOf, Object), ut = Object.prototype, lt = ut.hasOwnProperty, s = Symbol ? Symbol.toStringTag : void 0, ct = ut.toString;
495
+ function Lr(t, r) {
496
496
  return function(e) {
497
497
  return t(r(e));
498
498
  };
499
499
  }
500
- function H(t) {
500
+ function z(t) {
501
501
  if (!Br(t) || Fr(t) !== xr)
502
502
  return !1;
503
- var r = Lr(t);
503
+ var r = $r(t);
504
504
  if (r === null)
505
505
  return !0;
506
506
  var e = lt.call(r, "constructor") && r.constructor;
507
- return typeof e == "function" && e instanceof e && it.call(e) === Ur;
507
+ return typeof e == "function" && e instanceof e && it.call(e) === kr;
508
508
  }
509
509
  function Br(t) {
510
510
  return t != null && typeof t == "object";
511
511
  }
512
512
  function Fr(t) {
513
- return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ? zr(t) : Hr(t);
513
+ return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ? Hr(t) : zr(t);
514
514
  }
515
- function zr(t) {
515
+ function Hr(t) {
516
516
  var r = lt.call(t, s), e = t[s], n = !1;
517
517
  try {
518
518
  t[s] = void 0, n = !0;
@@ -521,7 +521,7 @@ function zr(t) {
521
521
  var o = ct.call(t);
522
522
  return n && (r ? t[s] = e : delete t[s]), o;
523
523
  }
524
- function Hr(t) {
524
+ function zr(t) {
525
525
  return ct.call(t);
526
526
  }
527
527
  var Vr = 20;
@@ -565,8 +565,8 @@ function st(t, r, e, n) {
565
565
  delete o[l];
566
566
  else {
567
567
  if (y(f) && y(T)) {
568
- var k = n.get(f) || [], U = n.get(T) || [];
569
- k.push({ obj: t, key: l }), U.push({ obj: r, key: l }), n.set(f, k), n.set(T, U);
568
+ var U = n.get(f) || [], k = n.get(T) || [];
569
+ U.push({ obj: t, key: l }), k.push({ obj: r, key: l }), n.set(f, U), n.set(T, k);
570
570
  }
571
571
  o[l] = st(o[l], c, e, n);
572
572
  }
@@ -598,9 +598,9 @@ function _(t) {
598
598
  return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
599
599
  }
600
600
  function Wr(t, r) {
601
- return !(!H(t) || !H(r));
601
+ return !(!z(t) || !z(r));
602
602
  }
603
- var Gr = /* @__PURE__ */ function() {
603
+ var Jr = /* @__PURE__ */ function() {
604
604
  var t = function(r, e) {
605
605
  return t = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function(n, o) {
606
606
  n.__proto__ = o;
@@ -620,7 +620,7 @@ var Gr = /* @__PURE__ */ function() {
620
620
  }(), pt = (
621
621
  /** @class */
622
622
  function(t) {
623
- Gr(r, t);
623
+ Jr(r, t);
624
624
  function r(e) {
625
625
  var n = t.call(this, e) || this;
626
626
  return Object.setPrototypeOf(n, r.prototype), n;
@@ -628,7 +628,7 @@ var Gr = /* @__PURE__ */ function() {
628
628
  return r;
629
629
  }(Error)
630
630
  );
631
- function Jr(t, r) {
631
+ function qr(t, r) {
632
632
  var e, n = new Promise(function(o, a) {
633
633
  e = setTimeout(function() {
634
634
  a(new pt("Operation timed out."));
@@ -640,7 +640,7 @@ function Jr(t, r) {
640
640
  throw clearTimeout(e), o;
641
641
  });
642
642
  }
643
- function qr(t) {
643
+ function Gr(t) {
644
644
  return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
645
645
  }
646
646
  var Qr = (
@@ -723,7 +723,7 @@ var Qr = (
723
723
  );
724
724
  function te(t, r) {
725
725
  return new Promise(function(e) {
726
- L.with(J(L.active()), function() {
726
+ $.with(q($.active()), function() {
727
727
  t.export(r, function(n) {
728
728
  e(n);
729
729
  });
@@ -732,8 +732,8 @@ function te(t, r) {
732
732
  }
733
733
  var re = {
734
734
  getKeyPairs: Q,
735
- serializeKeyPairs: q,
736
- parseKeyPairsIntoRecord: qt,
735
+ serializeKeyPairs: G,
736
+ parseKeyPairsIntoRecord: Gt,
737
737
  parsePairKeyValue: D
738
738
  }, ee = {
739
739
  _export: te
@@ -751,37 +751,37 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
751
751
  DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Dt,
752
752
  DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: Mt,
753
753
  get ExportResultCode() {
754
- return Ct;
754
+ return jt;
755
755
  },
756
756
  ParentBasedSampler: Nr,
757
757
  get RPCType() {
758
- return C;
758
+ return j;
759
759
  },
760
760
  RandomIdGenerator: cr,
761
- SDK_INFO: kt,
761
+ SDK_INFO: Ut,
762
762
  TRACE_PARENT_HEADER: m,
763
763
  TRACE_STATE_HEADER: g,
764
764
  TimeoutError: pt,
765
765
  TraceIdRatioBasedSampler: Ir,
766
766
  TraceState: ot,
767
767
  get TracesSamplerValues() {
768
- return Ut;
768
+ return kt;
769
769
  },
770
- VERSION: Lt,
770
+ VERSION: $t,
771
771
  W3CBaggagePropagator: Qt,
772
772
  W3CTraceContextPropagator: wr,
773
- _globalThis: zt,
773
+ _globalThis: Ht,
774
774
  addHrTimes: dt,
775
775
  baggageUtils: re,
776
- callWithTimeout: Jr,
777
- deleteRPCMetadata: jr,
778
- getEnv: $t,
776
+ callWithTimeout: qr,
777
+ deleteRPCMetadata: Cr,
778
+ getEnv: Lt,
779
779
  getEnvWithoutDefaults: Bt,
780
- getRPCMetadata: Cr,
780
+ getRPCMetadata: jr,
781
781
  getTimeOrigin: ht,
782
782
  globalErrorHandler: nt,
783
783
  hexToBase64: ir,
784
- hexToBinary: G,
784
+ hexToBinary: J,
785
785
  hrTime: mt,
786
786
  hrTimeDuration: gt,
787
787
  hrTimeToMicroseconds: vt,
@@ -792,10 +792,10 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
792
792
  isAttributeKey: Z,
793
793
  isAttributeValue: Y,
794
794
  isTimeInput: Tt,
795
- isTimeInputHrTime: Pt,
795
+ isTimeInputHrTime: Ot,
796
796
  isTracingSuppressed: x,
797
- isUrlIgnored: Ot,
798
- isWrapped: qr,
797
+ isUrlIgnored: Pt,
798
+ isWrapped: Gr,
799
799
  loggingErrorHandler: rt,
800
800
  merge: Kr,
801
801
  millisToHrTime: At,
@@ -805,15 +805,15 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
805
805
  sanitizeAttributes: Yt,
806
806
  setGlobalErrorHandler: nr,
807
807
  setRPCMetadata: Rr,
808
- suppressTracing: J,
808
+ suppressTracing: q,
809
809
  timeInputToHrTime: wt,
810
810
  unrefTimer: sr,
811
- unsuppressTracing: Ht,
811
+ unsuppressTracing: zt,
812
812
  urlMatches: Rt
813
813
  }, Symbol.toStringTag, { value: "Module" }));
814
814
  export {
815
815
  Qt as J,
816
- J as W,
816
+ q as W,
817
817
  Y as Z,
818
818
  Yt as a,
819
819
  pr as b,
@@ -827,4 +827,4 @@ export {
827
827
  ee as t,
828
828
  x as w
829
829
  };
830
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRGo2WHJWeVYtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtQkQxQXM5c24tIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgVSBhcyBVZSwgbCBhcyBsciQxLCBqIGFzIGp0LCBHIGFzIEdpLCBrIGFzIGtpLCBMIGFzIExlIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1ma0Ffc3YxUS0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBhLCBBIGFzIEEkMSB9IGZyb20gJy4vRXhwb3J0UmVzdWx0LUJvMVFPd2ZvLSF+ezAwbH1+LmpzJztcbmltcG9ydCB7IGJvIGFzIFAkMSwgYnAgYXMgTSQxLCBiciBhcyBJJDEsIGJzIGFzIGtfLCBidCBhcyBKXywgYnEgYXMgWEEsIGJtIGFzIHIkMSwgYnUgYXMgJF8sIE8gYXMgT1QsIGJuIGFzIExULCBidiBhcyBVJDEgfSBmcm9tICcuL3Nkay1pbmZvLTlHMlZKbW5XLSF+ezAwZ31+LmpzJztcbmltcG9ydCB7IGwgfSBmcm9tICcuL3V0aWxzLUJHZWZ0VHZrLSF+ezAwYX1+LmpzJztcblxudmFyIHA7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9UX1JFQ09SRCA9IDBdID0gXCJOT1RfUkVDT1JEXCIsIGVbZS5SRUNPUkQgPSAxXSA9IFwiUkVDT1JEXCIsIGVbZS5SRUNPUkRfQU5EX1NBTVBMRUQgPSAyXSA9IFwiUkVDT1JEX0FORF9TQU1QTEVEXCI7XG59KShwIHx8IChwID0ge30pKTtcbnZhciBOID0ga2koXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HXCIpO1xuZnVuY3Rpb24gVyhlKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKE4sICEwKTtcbn1cbmZ1bmN0aW9uIEZlKGUpIHtcbiAgcmV0dXJuIGUuZGVsZXRlVmFsdWUoTik7XG59XG5mdW5jdGlvbiB3KGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTikgPT09ICEwO1xufVxudmFyIHplID0gXCI9XCIsIEMgPSBcIjtcIiwgUyA9IFwiLFwiLCBQID0gXCJiYWdnYWdlXCIsIGtlID0gMTgwLCBZZSA9IDQwOTYsIFhlID0gODE5MiwgV2UgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiAkKGUpIHtcbiAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICB2YXIgbiA9IFwiXCIgKyByICsgKHIgIT09IFwiXCIgPyBTIDogXCJcIikgKyB0O1xuICAgIHJldHVybiBuLmxlbmd0aCA+IFhlID8gciA6IG47XG4gIH0sIFwiXCIpO1xufVxuZnVuY3Rpb24gSihlKSB7XG4gIHJldHVybiBlLmdldEFsbEVudHJpZXMoKS5tYXAoZnVuY3Rpb24ocikge1xuICAgIHZhciB0ID0gV2UociwgMiksIG4gPSB0WzBdLCBhID0gdFsxXSwgaSA9IGVuY29kZVVSSUNvbXBvbmVudChuKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGEudmFsdWUpO1xuICAgIHJldHVybiBhLm1ldGFkYXRhICE9PSB2b2lkIDAgJiYgKGkgKz0gQyArIGEubWV0YWRhdGEudG9TdHJpbmcoKSksIGk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRChlKSB7XG4gIHZhciByID0gZS5zcGxpdChDKTtcbiAgaWYgKCEoci5sZW5ndGggPD0gMCkpIHtcbiAgICB2YXIgdCA9IHIuc2hpZnQoKTtcbiAgICBpZiAodCkge1xuICAgICAgdmFyIG4gPSB0LmluZGV4T2YoemUpO1xuICAgICAgaWYgKCEobiA8PSAwKSkge1xuICAgICAgICB2YXIgYSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZygwLCBuKS50cmltKCkpLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKG4gKyAxKS50cmltKCkpLCBvO1xuICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwICYmIChvID0gZl8oci5qb2luKEMpKSksIHsga2V5OiBhLCB2YWx1ZTogaSwgbWV0YWRhdGE6IG8gfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uICRlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlICE9IFwic3RyaW5nXCIgfHwgZS5sZW5ndGggPT09IDAgPyB7fSA6IGUuc3BsaXQoUykubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gRChyKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gciAhPT0gdm9pZCAwICYmIHIudmFsdWUubGVuZ3RoID4gMDtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gclt0LmtleV0gPSB0LnZhbHVlLCByO1xuICB9LCB7fSk7XG59XG52YXIgSmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0geV8uZ2V0QmFnZ2FnZShyKTtcbiAgICAgIGlmICghKCFhIHx8IHcocikpKSB7XG4gICAgICAgIHZhciBpID0gSihhKS5maWx0ZXIoZnVuY3Rpb24odSkge1xuICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA8PSBZZTtcbiAgICAgICAgfSkuc2xpY2UoMCwga2UpLCBvID0gJChpKTtcbiAgICAgICAgby5sZW5ndGggPiAwICYmIG4uc2V0KHQsIFAsIG8pO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIFApLCBpID0gQXJyYXkuaXNBcnJheShhKSA/IGEuam9pbihTKSA6IGE7XG4gICAgICBpZiAoIWkpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSB7fTtcbiAgICAgIGlmIChpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgdSA9IGkuc3BsaXQoUyk7XG4gICAgICByZXR1cm4gdS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgdmFyIGwgPSBEKGYpO1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIHZhciBjID0geyB2YWx1ZTogbC52YWx1ZSB9O1xuICAgICAgICAgIGwubWV0YWRhdGEgJiYgKGMubWV0YWRhdGEgPSBsLm1ldGFkYXRhKSwgb1tsLmtleV0gPSBjO1xuICAgICAgICB9XG4gICAgICB9KSwgT2JqZWN0LmVudHJpZXMobykubGVuZ3RoID09PSAwID8gciA6IHlfLnNldEJhZ2dhZ2UociwgeV8uY3JlYXRlQmFnZ2FnZShvKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1BdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyLCB0KSB7XG4gICAgICB0aGlzLl9tb25vdG9uaWNDbG9jayA9IHQsIHRoaXMuX2Vwb2NoTWlsbGlzID0gci5ub3coKSwgdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXMgPSB0Lm5vdygpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IHRoaXMuX21vbm90b25pY0Nsb2NrLm5vdygpIC0gdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXM7XG4gICAgICByZXR1cm4gdGhpcy5fZXBvY2hNaWxsaXMgKyByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcSA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSByICYmIGVbcl0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHIgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBRZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIGU7XG4gIHZhciBuID0gdC5jYWxsKGUpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChyID09PSB2b2lkIDAgfHwgci0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoICh1KSB7XG4gICAgbyA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFplKGUpIHtcbiAgdmFyIHIkMSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIGUgIT0gXCJvYmplY3RcIiB8fCBlID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoT2JqZWN0LmVudHJpZXMoZSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBRZShpLnZhbHVlLCAyKSwgdSA9IG9bMF0sIGYgPSBvWzFdO1xuICAgICAgaWYgKCFRKHUpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyB1KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIVooZikpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShmKSA/IG5bdV0gPSBmLnNsaWNlKCkgOiBuW3VdID0gZjtcbiAgICB9XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICByJDEgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyJDEpIHRocm93IHIkMS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBRKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgZS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gWihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyAhMCA6IEFycmF5LmlzQXJyYXkoZSkgPyBlcihlKSA6IGVlKGUpO1xufVxuZnVuY3Rpb24gZXIoZSkge1xuICB2YXIgciwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gcShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gaS52YWx1ZTtcbiAgICAgIGlmIChvICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFuKSB7XG4gICAgICAgICAgaWYgKGVlKG8pKSB7XG4gICAgICAgICAgICBuID0gdHlwZW9mIG87XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbyAhPT0gbilcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoICh1KSB7XG4gICAgciA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGVlKGUpIHtcbiAgc3dpdGNoICh0eXBlb2YgZSkge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiAhMDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiByZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICByLmVycm9yKHJyKGUpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJyKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgPyBlIDogSlNPTi5zdHJpbmdpZnkodHIoZSkpO1xufVxuZnVuY3Rpb24gdHIoZSkge1xuICBmb3IgKHZhciByID0ge30sIHQgPSBlOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIXJbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChyW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIHI7XG59XG52YXIgdGUgPSByZSgpO1xuZnVuY3Rpb24gbnIoZSkge1xuICB0ZSA9IGU7XG59XG5mdW5jdGlvbiBuZShlKSB7XG4gIHRyeSB7XG4gICAgdGUoZSk7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgYXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGlyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn07XG5mdW5jdGlvbiBvcihlKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBpcihbXSwgYXIoQSQxKGUpKSwgITEpKSk7XG59XG52YXIgdXIgPSA4LCBmciA9IDE2LCBsciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gVihmciksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBWKHVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0oKVxuKSwgeSA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFYoZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBlICogMjsgdCsrKVxuICAgICAgeVt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCB5W3RdID49IDU4ICYmICh5W3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCB5LnNsaWNlKDAsIGUgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBzcihlKSB7XG59XG52YXIgY3IgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgcHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSB7fSk7XG4gICAgICB2YXIgdDtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0b3JzID0gKHQgPSByLnByb3BhZ2F0b3JzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10sIHRoaXMuX2ZpZWxkcyA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLl9wcm9wYWdhdG9ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4uZmllbGRzID09IFwiZnVuY3Rpb25cIiA/IG4uZmllbGRzKCkgOiBbXTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICAgIHJldHVybiBuLmNvbmNhdChhKTtcbiAgICAgIH0sIFtdKSkpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBjcih0aGlzLl9wcm9wYWdhdG9ycyksIHUgPSBvLm5leHQoKTsgIXUuZG9uZTsgdSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGYgPSB1LnZhbHVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmLmluamVjdChyJDEsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIGYuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgbC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdSAmJiAhdS5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyJDEsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgciQxKTtcbiAgICB9LCBlLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIEkgPSBcIltfMC05YS16LSovXVwiLCBkciA9IFwiW2Etel1cIiArIEkgKyBcInswLDI1NX1cIiwgX3IgPSBcIlthLXowLTldXCIgKyBJICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBJICsgXCJ7MCwxM31cIiwgeXIgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgZHIgKyBcInxcIiArIF9yICsgXCIpJFwiKSwgdnIgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIGhyID0gLyx8PS87XG5mdW5jdGlvbiBtcihlKSB7XG4gIHJldHVybiB5ci50ZXN0KGUpO1xufVxuZnVuY3Rpb24gZ3IoZSkge1xuICByZXR1cm4gdnIudGVzdChlKSAmJiAhaHIudGVzdChlKTtcbn1cbnZhciBVID0gMzIsIFNyID0gNTEyLCBIID0gXCIsXCIsIEsgPSBcIj1cIiwgYWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgciAmJiB0aGlzLl9wYXJzZShyKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICAgIHZhciBuID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiBuLl9pbnRlcm5hbFN0YXRlLmhhcyhyKSAmJiBuLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShyKSwgbi5faW50ZXJuYWxTdGF0ZS5zZXQociwgdCksIG47XG4gICAgfSwgZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihyKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gdC5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICByZXR1cm4gdC5wdXNoKG4gKyBLICsgci5nZXQobikpLCB0O1xuICAgICAgfSwgW10pLmpvaW4oSCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3BhcnNlID0gZnVuY3Rpb24ocikge1xuICAgICAgci5sZW5ndGggPiBTciB8fCAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IHIuc3BsaXQoSCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHZhciBhID0gbi50cmltKCksIGkgPSBhLmluZGV4T2YoSyk7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIHZhciBvID0gYS5zbGljZSgwLCBpKSwgdSA9IGEuc2xpY2UoaSArIDEsIG4ubGVuZ3RoKTtcbiAgICAgICAgICBtcihvKSAmJiBncih1KSAmJiB0LnNldChvLCB1KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpLCB0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemUgPiBVICYmICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCwgVSkpKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2tleXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2Nsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IG5ldyBlKCk7XG4gICAgICByZXR1cm4gci5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksIHI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB2ID0gXCJ0cmFjZXBhcmVudFwiLCBoID0gXCJ0cmFjZXN0YXRlXCIsIEFyID0gXCIwMFwiLCBFciA9IFwiKD8hZmYpW1xcXFxkYS1mXXsyfVwiLCBUciA9IFwiKD8hWzBdezMyfSlbXFxcXGRhLWZdezMyfVwiLCBQciA9IFwiKD8hWzBdezE2fSlbXFxcXGRhLWZdezE2fVwiLCBSciA9IFwiW1xcXFxkYS1mXXsyfVwiLCBPciA9IG5ldyBSZWdFeHAoXCJeXFxcXHM/KFwiICsgRXIgKyBcIiktKFwiICsgVHIgKyBcIiktKFwiICsgUHIgKyBcIiktKFwiICsgUnIgKyBcIikoLS4qKT9cXFxccz8kXCIpO1xuZnVuY3Rpb24gaWUoZSkge1xuICB2YXIgciA9IE9yLmV4ZWMoZSk7XG4gIHJldHVybiAhciB8fCByWzFdID09PSBcIjAwXCIgJiYgcls1XSA/IG51bGwgOiB7XG4gICAgdHJhY2VJZDogclsyXSxcbiAgICBzcGFuSWQ6IHJbM10sXG4gICAgdHJhY2VGbGFnczogcGFyc2VJbnQocls0XSwgMTYpXG4gIH07XG59XG52YXIgYnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gVWUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpIHx8ICFsciQxKGEpKSkge1xuICAgICAgICB2YXIgaSA9IEFyICsgXCItXCIgKyBhLnRyYWNlSWQgKyBcIi1cIiArIGEuc3BhbklkICsgXCItMFwiICsgTnVtYmVyKGEudHJhY2VGbGFncyB8fCBqdC5OT05FKS50b1N0cmluZygxNik7XG4gICAgICAgIG4uc2V0KHQsIHYsIGkpLCBhLnRyYWNlU3RhdGUgJiYgbi5zZXQodCwgaCwgYS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCB2KTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0gaWUoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiByO1xuICAgICAgby5pc1JlbW90ZSA9ICEwO1xuICAgICAgdmFyIHUgPSBuLmdldCh0LCBoKTtcbiAgICAgIGlmICh1KSB7XG4gICAgICAgIHZhciBmID0gQXJyYXkuaXNBcnJheSh1KSA/IHUuam9pbihcIixcIikgOiB1O1xuICAgICAgICBvLnRyYWNlU3RhdGUgPSBuZXcgYWUodHlwZW9mIGYgPT0gXCJzdHJpbmdcIiA/IGYgOiB2b2lkIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFVlLnNldFNwYW5Db250ZXh0KHIsIG8pO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFt2LCBoXTtcbiAgICB9LCBlO1xuICB9KClcbiksIEwgPSBraShcIk9wZW5UZWxlbWV0cnkgU0RLIENvbnRleHQgS2V5IFJQQ19NRVRBREFUQVwiKSwgajtcbihmdW5jdGlvbihlKSB7XG4gIGUuSFRUUCA9IFwiaHR0cFwiO1xufSkoaiB8fCAoaiA9IHt9KSk7XG5mdW5jdGlvbiBDcihlLCByKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKEwsIHIpO1xufVxuZnVuY3Rpb24gSXIoZSkge1xuICByZXR1cm4gZS5kZWxldGVWYWx1ZShMKTtcbn1cbmZ1bmN0aW9uIGpyKGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTCk7XG59XG52YXIgTSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogcC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBtID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBNciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHZhciB0LCBuLCBhLCBpO1xuICAgICAgdGhpcy5fcm9vdCA9IHIucm9vdCwgdGhpcy5fcm9vdCB8fCAobmUobmV3IEVycm9yKFwiUGFyZW50QmFzZWRTYW1wbGVyIG11c3QgaGF2ZSBhIHJvb3Qgc2FtcGxlciBjb25maWd1cmVkXCIpKSwgdGhpcy5fcm9vdCA9IG5ldyBtKCkpLCB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkID0gKHQgPSByLnJlbW90ZVBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBuZXcgbSgpLCB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkID0gKG4gPSByLnJlbW90ZVBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIG4gIT09IHZvaWQgMCA/IG4gOiBuZXcgTSgpLCB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQgPSAoYSA9IHIubG9jYWxQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IG0oKSwgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkID0gKGkgPSByLmxvY2FsUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgaSAhPT0gdm9pZCAwID8gaSA6IG5ldyBNKCk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihyLCB0LCBuLCBhLCBpLCBvKSB7XG4gICAgICB2YXIgdSA9IFVlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgcmV0dXJuICF1IHx8ICFsciQxKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYganQuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBqdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IEdpKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBMZS53aXRoKFcoTGUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxTQUFlO0FBQ3ZFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxTQUFTLEtB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TyxhQUFhLEVBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQzsiLAogICJuYW1lcyI6IFsieV8iLCAiZl8iLCAiSF8iLCAicl8iLCAicF8iLCAid2UiLCAia2UkMSIsICJ4ZSIsICJRZSQxIiwgIlhlJDEiLCAicWUkMSIsICJOXyIsICJaZSQxIiwgIk8iLCAiUiQxIiwgIldlJDEiLCAiZ18iLCAiVWUiLCAibHIkMSIsICJqdCIsICJHaSIsICJraSIsICJyIiwgImEiLCAiQSQxIiwgIlAkMSIsICJNJDEiLCAiSSQxIiwgImtfIiwgIkpfIiwgIlhBIiwgInIkMSIsICIkXyIsICJPVCIsICJMVCIsICJVJDEiLCAibCIsICJlIiwgIk4iLCAiVyIsICJGZSIsICJ3IiwgInplIiwgIkMiLCAiUCIsICJrZSIsICJZZSIsICJYZSIsICJXZSIsICJ0IiwgImkiLCAibyIsICIkIiwgIkoiLCAiJGUiLCAiSmUiLCAiZiIsICJjIiwgInFlIiwgInEiLCAiUWUiLCAiWmUiLCAiUSIsICJaIiwgImVyIiwgImVlIiwgInJlIiwgInRyIiwgInRlIiwgIm5lIiwgImFyIiwgImlyIiwgIm9yIiwgImZyIiwgImxyIiwgIlYiLCAieSIsICJjciIsICJJIiwgImRyIiwgIl9yIiwgInlyIiwgInZyIiwgImhyIiwgIm1yIiwgImdyIiwgIlUiLCAiSCIsICJLIiwgImFlIiwgInYiLCAiaCIsICJBciIsICJFciIsICJUciIsICJQciIsICJSciIsICJPciIsICJpZSIsICJiciIsICJMIiwgImoiLCAiQ3IiLCAiSXIiLCAianIiLCAiTSIsICJtIiwgIk1yIiwgIk5yIiwgIndyIiwgIkxyIiwgInhyIiwgIm9lIiwgIkdyIiwgIkJyIiwgIlZyIiwgInVlIiwgImZlIiwgImxlIiwgIkYiLCAiVXIiLCAiSHIiLCAiS3IiLCAiRnIiLCAienIiLCAia3IiLCAic2UiLCAiUiIsICJBIiwgImciLCAiY2UiLCAiZCIsICJZciIsICJFIiwgInoiLCAieCIsICJHIiwgIlhyIiwgInBlIiwgIldyIiwgIiRyIiwgIkpyIiwgInFyIiwgIlFyIiwgIlpyIiwgImV0IiwgIkxlIiwgInJ0IiwgInR0IiwgImx0Il0KfQo=
830
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQ2FpeGZhZ0gtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtRFR6YXVmVEQtIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgTyBhcyBPZSwgYyBhcyBjciQxLCBVIGFzIFV0LCBIIGFzIEhpLCBSIGFzIFJpLCBNIGFzIE1lIH0gZnJvbSAnLi9pbmRleC0hfnswMDR9fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1TUF9OOHJQTy0hfnswMDd9fi5qcyc7XG5pbXBvcnQgeyBhLCBBIGFzIEEkMSB9IGZyb20gJy4vRXhwb3J0UmVzdWx0LUJvMVFPd2ZvLSF+ezAwbH1+LmpzJztcbmltcG9ydCB7IGJvIGFzIFAkMSwgYnAgYXMgTSQxLCBiciBhcyBJJDEsIGJzIGFzIGtfLCBidCBhcyBKXywgYnEgYXMgWEEsIGJtIGFzIHIkMSwgYnUgYXMgJF8sIE8gYXMgT1QsIGJuIGFzIExULCBidiBhcyBVJDEgfSBmcm9tICcuL3Nkay1pbmZvLURzM0pUSTdVLSF+ezAwZ31+LmpzJztcbmltcG9ydCB7IGwgfSBmcm9tICcuL3V0aWxzLUJHZWZ0VHZrLSF+ezAwYX1+LmpzJztcblxudmFyIHA7XG4oZnVuY3Rpb24oZSkge1xuICBlW2UuTk9UX1JFQ09SRCA9IDBdID0gXCJOT1RfUkVDT1JEXCIsIGVbZS5SRUNPUkQgPSAxXSA9IFwiUkVDT1JEXCIsIGVbZS5SRUNPUkRfQU5EX1NBTVBMRUQgPSAyXSA9IFwiUkVDT1JEX0FORF9TQU1QTEVEXCI7XG59KShwIHx8IChwID0ge30pKTtcbnZhciBOID0gUmkoXCJPcGVuVGVsZW1ldHJ5IFNESyBDb250ZXh0IEtleSBTVVBQUkVTU19UUkFDSU5HXCIpO1xuZnVuY3Rpb24gVyhlKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKE4sICEwKTtcbn1cbmZ1bmN0aW9uIEZlKGUpIHtcbiAgcmV0dXJuIGUuZGVsZXRlVmFsdWUoTik7XG59XG5mdW5jdGlvbiB3KGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTikgPT09ICEwO1xufVxudmFyIHplID0gXCI9XCIsIEMgPSBcIjtcIiwgUyA9IFwiLFwiLCBQID0gXCJiYWdnYWdlXCIsIGtlID0gMTgwLCBZZSA9IDQwOTYsIFhlID0gODE5MiwgV2UgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiAkKGUpIHtcbiAgcmV0dXJuIGUucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICB2YXIgbiA9IFwiXCIgKyByICsgKHIgIT09IFwiXCIgPyBTIDogXCJcIikgKyB0O1xuICAgIHJldHVybiBuLmxlbmd0aCA+IFhlID8gciA6IG47XG4gIH0sIFwiXCIpO1xufVxuZnVuY3Rpb24gSihlKSB7XG4gIHJldHVybiBlLmdldEFsbEVudHJpZXMoKS5tYXAoZnVuY3Rpb24ocikge1xuICAgIHZhciB0ID0gV2UociwgMiksIG4gPSB0WzBdLCBhID0gdFsxXSwgaSA9IGVuY29kZVVSSUNvbXBvbmVudChuKSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGEudmFsdWUpO1xuICAgIHJldHVybiBhLm1ldGFkYXRhICE9PSB2b2lkIDAgJiYgKGkgKz0gQyArIGEubWV0YWRhdGEudG9TdHJpbmcoKSksIGk7XG4gIH0pO1xufVxuZnVuY3Rpb24gRChlKSB7XG4gIHZhciByID0gZS5zcGxpdChDKTtcbiAgaWYgKCEoci5sZW5ndGggPD0gMCkpIHtcbiAgICB2YXIgdCA9IHIuc2hpZnQoKTtcbiAgICBpZiAodCkge1xuICAgICAgdmFyIG4gPSB0LmluZGV4T2YoemUpO1xuICAgICAgaWYgKCEobiA8PSAwKSkge1xuICAgICAgICB2YXIgYSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZygwLCBuKS50cmltKCkpLCBpID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKG4gKyAxKS50cmltKCkpLCBvO1xuICAgICAgICByZXR1cm4gci5sZW5ndGggPiAwICYmIChvID0gZl8oci5qb2luKEMpKSksIHsga2V5OiBhLCB2YWx1ZTogaSwgbWV0YWRhdGE6IG8gfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uICRlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlICE9IFwic3RyaW5nXCIgfHwgZS5sZW5ndGggPT09IDAgPyB7fSA6IGUuc3BsaXQoUykubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gRChyKTtcbiAgfSkuZmlsdGVyKGZ1bmN0aW9uKHIpIHtcbiAgICByZXR1cm4gciAhPT0gdm9pZCAwICYmIHIudmFsdWUubGVuZ3RoID4gMDtcbiAgfSkucmVkdWNlKGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gclt0LmtleV0gPSB0LnZhbHVlLCByO1xuICB9LCB7fSk7XG59XG52YXIgSmUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0geV8uZ2V0QmFnZ2FnZShyKTtcbiAgICAgIGlmICghKCFhIHx8IHcocikpKSB7XG4gICAgICAgIHZhciBpID0gSihhKS5maWx0ZXIoZnVuY3Rpb24odSkge1xuICAgICAgICAgIHJldHVybiB1Lmxlbmd0aCA8PSBZZTtcbiAgICAgICAgfSkuc2xpY2UoMCwga2UpLCBvID0gJChpKTtcbiAgICAgICAgby5sZW5ndGggPiAwICYmIG4uc2V0KHQsIFAsIG8pO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIFApLCBpID0gQXJyYXkuaXNBcnJheShhKSA/IGEuam9pbihTKSA6IGE7XG4gICAgICBpZiAoIWkpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSB7fTtcbiAgICAgIGlmIChpLmxlbmd0aCA9PT0gMClcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgdSA9IGkuc3BsaXQoUyk7XG4gICAgICByZXR1cm4gdS5mb3JFYWNoKGZ1bmN0aW9uKGYpIHtcbiAgICAgICAgdmFyIGwgPSBEKGYpO1xuICAgICAgICBpZiAobCkge1xuICAgICAgICAgIHZhciBjID0geyB2YWx1ZTogbC52YWx1ZSB9O1xuICAgICAgICAgIGwubWV0YWRhdGEgJiYgKGMubWV0YWRhdGEgPSBsLm1ldGFkYXRhKSwgb1tsLmtleV0gPSBjO1xuICAgICAgICB9XG4gICAgICB9KSwgT2JqZWN0LmVudHJpZXMobykubGVuZ3RoID09PSAwID8gciA6IHlfLnNldEJhZ2dhZ2UociwgeV8uY3JlYXRlQmFnZ2FnZShvKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW1BdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyLCB0KSB7XG4gICAgICB0aGlzLl9tb25vdG9uaWNDbG9jayA9IHQsIHRoaXMuX2Vwb2NoTWlsbGlzID0gci5ub3coKSwgdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXMgPSB0Lm5vdygpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUubm93ID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IHRoaXMuX21vbm90b25pY0Nsb2NrLm5vdygpIC0gdGhpcy5fcGVyZm9ybWFuY2VNaWxsaXM7XG4gICAgICByZXR1cm4gdGhpcy5fZXBvY2hNaWxsaXMgKyByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcSA9IGZ1bmN0aW9uKGUpIHtcbiAgdmFyIHIgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSByICYmIGVbcl0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChlKTtcbiAgaWYgKGUgJiYgdHlwZW9mIGUubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gZSAmJiBuID49IGUubGVuZ3RoICYmIChlID0gdm9pZCAwKSwgeyB2YWx1ZTogZSAmJiBlW24rK10sIGRvbmU6ICFlIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKHIgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBRZSA9IGZ1bmN0aW9uKGUsIHIpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBlW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIGU7XG4gIHZhciBuID0gdC5jYWxsKGUpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChyID09PSB2b2lkIDAgfHwgci0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoICh1KSB7XG4gICAgbyA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFplKGUpIHtcbiAgdmFyIHIkMSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIGUgIT0gXCJvYmplY3RcIiB8fCBlID09IG51bGwpXG4gICAgcmV0dXJuIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoT2JqZWN0LmVudHJpZXMoZSkpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBRZShpLnZhbHVlLCAyKSwgdSA9IG9bMF0sIGYgPSBvWzFdO1xuICAgICAgaWYgKCFRKHUpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIGtleTogXCIgKyB1KTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIVooZikpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShmKSA/IG5bdV0gPSBmLnNsaWNlKCkgOiBuW3VdID0gZjtcbiAgICB9XG4gIH0gY2F0Y2ggKGwpIHtcbiAgICByJDEgPSB7IGVycm9yOiBsIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyJDEpIHRocm93IHIkMS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBRKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgJiYgZS5sZW5ndGggPiAwO1xufVxuZnVuY3Rpb24gWihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyAhMCA6IEFycmF5LmlzQXJyYXkoZSkgPyBlcihlKSA6IGVlKGUpO1xufVxuZnVuY3Rpb24gZXIoZSkge1xuICB2YXIgciwgdCwgbjtcbiAgdHJ5IHtcbiAgICBmb3IgKHZhciBhID0gcShlKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gaS52YWx1ZTtcbiAgICAgIGlmIChvICE9IG51bGwpIHtcbiAgICAgICAgaWYgKCFuKSB7XG4gICAgICAgICAgaWYgKGVlKG8pKSB7XG4gICAgICAgICAgICBuID0gdHlwZW9mIG87XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgbyAhPT0gbilcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoICh1KSB7XG4gICAgciA9IHsgZXJyb3I6IHUgfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgaSAmJiAhaS5kb25lICYmICh0ID0gYS5yZXR1cm4pICYmIHQuY2FsbChhKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKHIpIHRocm93IHIuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGVlKGUpIHtcbiAgc3dpdGNoICh0eXBlb2YgZSkge1xuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJzdHJpbmdcIjpcbiAgICAgIHJldHVybiAhMDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiByZSgpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGUpIHtcbiAgICByLmVycm9yKHJyKGUpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIHJyKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgPyBlIDogSlNPTi5zdHJpbmdpZnkodHIoZSkpO1xufVxuZnVuY3Rpb24gdHIoZSkge1xuICBmb3IgKHZhciByID0ge30sIHQgPSBlOyB0ICE9PSBudWxsOyApXG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkuZm9yRWFjaChmdW5jdGlvbihuKSB7XG4gICAgICBpZiAoIXJbbl0pIHtcbiAgICAgICAgdmFyIGEgPSB0W25dO1xuICAgICAgICBhICYmIChyW25dID0gU3RyaW5nKGEpKTtcbiAgICAgIH1cbiAgICB9KSwgdCA9IE9iamVjdC5nZXRQcm90b3R5cGVPZih0KTtcbiAgcmV0dXJuIHI7XG59XG52YXIgdGUgPSByZSgpO1xuZnVuY3Rpb24gbnIoZSkge1xuICB0ZSA9IGU7XG59XG5mdW5jdGlvbiBuZShlKSB7XG4gIHRyeSB7XG4gICAgdGUoZSk7XG4gIH0gY2F0Y2gge1xuICB9XG59XG52YXIgYXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIGlyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn07XG5mdW5jdGlvbiBvcihlKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBpcihbXSwgYXIoQSQxKGUpKSwgITEpKSk7XG59XG52YXIgdXIgPSA4LCBmciA9IDE2LCBsciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHRoaXMuZ2VuZXJhdGVUcmFjZUlkID0gVihmciksIHRoaXMuZ2VuZXJhdGVTcGFuSWQgPSBWKHVyKTtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0oKVxuKSwgeSA9IEFycmF5KDMyKTtcbmZ1bmN0aW9uIFYoZSkge1xuICByZXR1cm4gZnVuY3Rpb24oKSB7XG4gICAgZm9yICh2YXIgdCA9IDA7IHQgPCBlICogMjsgdCsrKVxuICAgICAgeVt0XSA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDE2KSArIDQ4LCB5W3RdID49IDU4ICYmICh5W3RdICs9IDM5KTtcbiAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShudWxsLCB5LnNsaWNlKDAsIGUgKiAyKSk7XG4gIH07XG59XG5mdW5jdGlvbiBzcihlKSB7XG59XG52YXIgY3IgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgcHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICByID09PSB2b2lkIDAgJiYgKHIgPSB7fSk7XG4gICAgICB2YXIgdDtcbiAgICAgIHRoaXMuX3Byb3BhZ2F0b3JzID0gKHQgPSByLnByb3BhZ2F0b3JzKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogW10sIHRoaXMuX2ZpZWxkcyA9IEFycmF5LmZyb20obmV3IFNldCh0aGlzLl9wcm9wYWdhdG9ycy5tYXAoZnVuY3Rpb24obikge1xuICAgICAgICByZXR1cm4gdHlwZW9mIG4uZmllbGRzID09IFwiZnVuY3Rpb25cIiA/IG4uZmllbGRzKCkgOiBbXTtcbiAgICAgIH0pLnJlZHVjZShmdW5jdGlvbihuLCBhKSB7XG4gICAgICAgIHJldHVybiBuLmNvbmNhdChhKTtcbiAgICAgIH0sIFtdKSkpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuaW5qZWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICB2YXIgYSwgaTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGZvciAodmFyIG8gPSBjcih0aGlzLl9wcm9wYWdhdG9ycyksIHUgPSBvLm5leHQoKTsgIXUuZG9uZTsgdSA9IG8ubmV4dCgpKSB7XG4gICAgICAgICAgdmFyIGYgPSB1LnZhbHVlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmLmluamVjdChyJDEsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIGYuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgbC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKGwpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IGwgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgdSAmJiAhdS5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyJDEsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgciQxKTtcbiAgICB9LCBlLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCBlO1xuICB9KClcbiksIEkgPSBcIltfMC05YS16LSovXVwiLCBkciA9IFwiW2Etel1cIiArIEkgKyBcInswLDI1NX1cIiwgX3IgPSBcIlthLXowLTldXCIgKyBJICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBJICsgXCJ7MCwxM31cIiwgeXIgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgZHIgKyBcInxcIiArIF9yICsgXCIpJFwiKSwgdnIgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIGhyID0gLyx8PS87XG5mdW5jdGlvbiBtcihlKSB7XG4gIHJldHVybiB5ci50ZXN0KGUpO1xufVxuZnVuY3Rpb24gZ3IoZSkge1xuICByZXR1cm4gdnIudGVzdChlKSAmJiAhaHIudGVzdChlKTtcbn1cbnZhciBVID0gMzIsIFNyID0gNTEyLCBIID0gXCIsXCIsIEsgPSBcIj1cIiwgYWUgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZShyKSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFN0YXRlID0gLyogQF9fUFVSRV9fICovIG5ldyBNYXAoKSwgciAmJiB0aGlzLl9wYXJzZShyKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICAgIHZhciBuID0gdGhpcy5fY2xvbmUoKTtcbiAgICAgIHJldHVybiBuLl9pbnRlcm5hbFN0YXRlLmhhcyhyKSAmJiBuLl9pbnRlcm5hbFN0YXRlLmRlbGV0ZShyKSwgbi5faW50ZXJuYWxTdGF0ZS5zZXQociwgdCksIG47XG4gICAgfSwgZS5wcm90b3R5cGUudW5zZXQgPSBmdW5jdGlvbihyKSB7XG4gICAgICB2YXIgdCA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gdC5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIHQ7XG4gICAgfSwgZS5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHRoaXMuX2ludGVybmFsU3RhdGUuZ2V0KHIpO1xuICAgIH0sIGUucHJvdG90eXBlLnNlcmlhbGl6ZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2tleXMoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICByZXR1cm4gdC5wdXNoKG4gKyBLICsgci5nZXQobikpLCB0O1xuICAgICAgfSwgW10pLmpvaW4oSCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX3BhcnNlID0gZnVuY3Rpb24ocikge1xuICAgICAgci5sZW5ndGggPiBTciB8fCAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IHIuc3BsaXQoSCkucmV2ZXJzZSgpLnJlZHVjZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHZhciBhID0gbi50cmltKCksIGkgPSBhLmluZGV4T2YoSyk7XG4gICAgICAgIGlmIChpICE9PSAtMSkge1xuICAgICAgICAgIHZhciBvID0gYS5zbGljZSgwLCBpKSwgdSA9IGEuc2xpY2UoaSArIDEsIG4ubGVuZ3RoKTtcbiAgICAgICAgICBtcihvKSAmJiBncih1KSAmJiB0LnNldChvLCB1KTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICAgIH0sIC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCkpLCB0aGlzLl9pbnRlcm5hbFN0YXRlLnNpemUgPiBVICYmICh0aGlzLl9pbnRlcm5hbFN0YXRlID0gbmV3IE1hcChBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUuZW50cmllcygpKS5yZXZlcnNlKCkuc2xpY2UoMCwgVSkpKSk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2tleXMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuX2ludGVybmFsU3RhdGUua2V5cygpKS5yZXZlcnNlKCk7XG4gICAgfSwgZS5wcm90b3R5cGUuX2Nsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgciA9IG5ldyBlKCk7XG4gICAgICByZXR1cm4gci5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAodGhpcy5faW50ZXJuYWxTdGF0ZSksIHI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB2ID0gXCJ0cmFjZXBhcmVudFwiLCBoID0gXCJ0cmFjZXN0YXRlXCIsIEFyID0gXCIwMFwiLCBFciA9IFwiKD8hZmYpW1xcXFxkYS1mXXsyfVwiLCBUciA9IFwiKD8hWzBdezMyfSlbXFxcXGRhLWZdezMyfVwiLCBQciA9IFwiKD8hWzBdezE2fSlbXFxcXGRhLWZdezE2fVwiLCBSciA9IFwiW1xcXFxkYS1mXXsyfVwiLCBPciA9IG5ldyBSZWdFeHAoXCJeXFxcXHM/KFwiICsgRXIgKyBcIiktKFwiICsgVHIgKyBcIiktKFwiICsgUHIgKyBcIiktKFwiICsgUnIgKyBcIikoLS4qKT9cXFxccz8kXCIpO1xuZnVuY3Rpb24gaWUoZSkge1xuICB2YXIgciA9IE9yLmV4ZWMoZSk7XG4gIHJldHVybiAhciB8fCByWzFdID09PSBcIjAwXCIgJiYgcls1XSA/IG51bGwgOiB7XG4gICAgdHJhY2VJZDogclsyXSxcbiAgICBzcGFuSWQ6IHJbM10sXG4gICAgdHJhY2VGbGFnczogcGFyc2VJbnQocls0XSwgMTYpXG4gIH07XG59XG52YXIgYnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gT2UuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpIHx8ICFjciQxKGEpKSkge1xuICAgICAgICB2YXIgaSA9IEFyICsgXCItXCIgKyBhLnRyYWNlSWQgKyBcIi1cIiArIGEuc3BhbklkICsgXCItMFwiICsgTnVtYmVyKGEudHJhY2VGbGFncyB8fCBVdC5OT05FKS50b1N0cmluZygxNik7XG4gICAgICAgIG4uc2V0KHQsIHYsIGkpLCBhLnRyYWNlU3RhdGUgJiYgbi5zZXQodCwgaCwgYS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCB2KTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0gaWUoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiByO1xuICAgICAgby5pc1JlbW90ZSA9ICEwO1xuICAgICAgdmFyIHUgPSBuLmdldCh0LCBoKTtcbiAgICAgIGlmICh1KSB7XG4gICAgICAgIHZhciBmID0gQXJyYXkuaXNBcnJheSh1KSA/IHUuam9pbihcIixcIikgOiB1O1xuICAgICAgICBvLnRyYWNlU3RhdGUgPSBuZXcgYWUodHlwZW9mIGYgPT0gXCJzdHJpbmdcIiA/IGYgOiB2b2lkIDApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIE9lLnNldFNwYW5Db250ZXh0KHIsIG8pO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFt2LCBoXTtcbiAgICB9LCBlO1xuICB9KClcbiksIEwgPSBSaShcIk9wZW5UZWxlbWV0cnkgU0RLIENvbnRleHQgS2V5IFJQQ19NRVRBREFUQVwiKSwgajtcbihmdW5jdGlvbihlKSB7XG4gIGUuSFRUUCA9IFwiaHR0cFwiO1xufSkoaiB8fCAoaiA9IHt9KSk7XG5mdW5jdGlvbiBDcihlLCByKSB7XG4gIHJldHVybiBlLnNldFZhbHVlKEwsIHIpO1xufVxuZnVuY3Rpb24gSXIoZSkge1xuICByZXR1cm4gZS5kZWxldGVWYWx1ZShMKTtcbn1cbmZ1bmN0aW9uIGpyKGUpIHtcbiAgcmV0dXJuIGUuZ2V0VmFsdWUoTCk7XG59XG52YXIgTSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKCkge1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogcC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBtID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLlJFQ09SRF9BTkRfU0FNUExFRFxuICAgICAgfTtcbiAgICB9LCBlLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiQWx3YXlzT25TYW1wbGVyXCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBNciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHZhciB0LCBuLCBhLCBpO1xuICAgICAgdGhpcy5fcm9vdCA9IHIucm9vdCwgdGhpcy5fcm9vdCB8fCAobmUobmV3IEVycm9yKFwiUGFyZW50QmFzZWRTYW1wbGVyIG11c3QgaGF2ZSBhIHJvb3Qgc2FtcGxlciBjb25maWd1cmVkXCIpKSwgdGhpcy5fcm9vdCA9IG5ldyBtKCkpLCB0aGlzLl9yZW1vdGVQYXJlbnRTYW1wbGVkID0gKHQgPSByLnJlbW90ZVBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBuZXcgbSgpLCB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkID0gKG4gPSByLnJlbW90ZVBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIG4gIT09IHZvaWQgMCA/IG4gOiBuZXcgTSgpLCB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQgPSAoYSA9IHIubG9jYWxQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiBhICE9PSB2b2lkIDAgPyBhIDogbmV3IG0oKSwgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkID0gKGkgPSByLmxvY2FsUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgaSAhPT0gdm9pZCAwID8gaSA6IG5ldyBNKCk7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbihyLCB0LCBuLCBhLCBpLCBvKSB7XG4gICAgICB2YXIgdSA9IE9lLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgcmV0dXJuICF1IHx8ICFjciQxKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgVXQuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBVdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IEhpKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBNZS53aXRoKFcoTWUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBTSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3ZFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxT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QUUsT0FBTyxTQUFTLENBQUMsQ0FBQzsiLAogICJuYW1lcyI6IFsieV8iLCAiZl8iLCAiSF8iLCAicl8iLCAicF8iLCAid2UiLCAia2UkMSIsICJ4ZSIsICJRZSQxIiwgIlhlJDEiLCAicWUkMSIsICJOXyIsICJaZSQxIiwgIk8iLCAiUiQxIiwgIldlJDEiLCAiZ18iLCAiT2UiLCAiY3IkMSIsICJVdCIsICJIaSIsICJSaSIsICJNZSIsICJyIiwgImEiLCAiQSQxIiwgIlAkMSIsICJNJDEiLCAiSSQxIiwgImtfIiwgIkpfIiwgIlhBIiwgInIkMSIsICIkXyIsICJPVCIsICJMVCIsICJVJDEiLCAibCIsICJlIiwgIk4iLCAiVyIsICJGZSIsICJ3IiwgInplIiwgIkMiLCAia2UiLCAiWWUiLCAiWGUiLCAiV2UiLCAidCIsICJpIiwgIm8iLCAiJCIsICJKIiwgIiRlIiwgIkplIiwgImYiLCAiYyIsICJxZSIsICJxIiwgIlFlIiwgIlplIiwgIlEiLCAiWiIsICJlciIsICJlZSIsICJyZSIsICJ0ciIsICJ0ZSIsICJuZSIsICJhciIsICJpciIsICJvciIsICJmciIsICJsciIsICJWIiwgInkiLCAiY3IiLCAiSSIsICJkciIsICJfciIsICJ5ciIsICJ2ciIsICJociIsICJtciIsICJnciIsICJVIiwgIkgiLCAiSyIsICJhZSIsICJ2IiwgImgiLCAiQXIiLCAiRXIiLCAiVHIiLCAiUnIiLCAiT3IiLCAiaWUiLCAiYnIiLCAiTCIsICJDciIsICJJciIsICJNIiwgIm0iLCAiTXIiLCAiTnIiLCAid3IiLCAiTHIiLCAieHIiLCAib2UiLCAiR3IiLCAiQnIiLCAiVnIiLCAidWUiLCAiZmUiLCAibGUiLCAiRiIsICJVciIsICJIciIsICJLciIsICJGciIsICJ6ciIsICJrciIsICJzZSIsICJSIiwgIkEiLCAiZyIsICJjZSIsICJkIiwgIllyIiwgIkUiLCAieiIsICJ4IiwgIkciLCAiWHIiLCAicGUiLCAiV3IiLCAiJHIiLCAiSnIiLCAicXIiLCAiUXIiLCAiWnIiLCAiZXQiLCAicnQiLCAidHQiLCAibHQiXQp9Cg==