@getopenpay/openpay-js-react 0.3.15-alpha.72b791a → 0.3.16

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 (24) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-D8TOlEjr-B-qv3FcJ.js → Resource-ZHf3WzhQ-CXO-0aM2.js} +3 -3
  3. package/dist/{SimpleSpanProcessor-B7rEuBRv-a4Fxxnjx.js → SimpleSpanProcessor-C2RLPQpG-XmLthHn2.js} +7 -7
  4. package/dist/{detect-resources-CoWzCtyh-BLGcd0Bf.js → detect-resources-DT-mJXgd-BYQgu6Ql.js} +34 -34
  5. package/dist/diag-api-CK5inj4K-dVgEuDsq.js +6 -0
  6. package/dist/{index-HUtuiK3r-DqYCnW2e.js → index-BUomB0PZ-Dd0GFlz2.js} +5 -5
  7. package/dist/{index-BD6wDwRi-Dq3qAEFs.js → index-BcnFiKMK-DCby6mkW.js} +12 -12
  8. package/dist/{index-lSYhTdYC-X3hFMPTO.js → index-CeMHmEK0-CyiHDol_.js} +6 -6
  9. package/dist/{index-Unpme7IJ-z9dB3jf6.js → index-DUNJmiru-CLY8kuUk.js} +2 -2
  10. package/dist/{index-Cxxq_gPU-COXr17dC.js → index-DlFj36kO-DQ8H346Q.js} +2 -2
  11. package/dist/{index-FGSn80Fq-z4zEb9Y7.js → index-Dml0aEQD-CeapLryJ.js} +23 -23
  12. package/dist/index-DofLDiKM.js +8070 -0
  13. package/dist/{index-DDiS5N1--u9xRswKP.js → index-DpRS6M62-DNEfb2H-.js} +22 -22
  14. package/dist/{index-Z7u_I0fv-_P03fugB.js → index-Dr5x0s5I-BYVh9unV.js} +6 -6
  15. package/dist/{index-DTEkiSSn-UXUQHBNW.js → index-xNUSAw4J-CdpHClBz.js} +81 -81
  16. package/dist/index.js +6 -6
  17. package/dist/{metrics-api-CIq6mBFF-BEu-IBxj.js → metrics-api-CvzxMpC0-B9qnWUhg.js} +8 -8
  18. package/dist/{sdk-info-wum682QL-D0-wDuPw.js → sdk-info-BlaoCnDc-BQBaw5N_.js} +2 -2
  19. package/dist/{url-BVSq8L4l-DHQsJ0N2.js → url-gBuEZQ4W-Z3svunxV.js} +96 -96
  20. package/dist/{utils-DTpWOQzu-CE1NSUxN.js → utils-C40-BLFS-B1GCVmd5.js} +2 -2
  21. package/dist/{utils-p0tJrA3b-BwnFKyIA.js → utils-DEDfJmJQ-zyu0HvrD.js} +4 -4
  22. package/package.json +1 -1
  23. package/dist/diag-api-CS_j-083-gvfeT9eV.js +0 -6
  24. package/dist/index-DPmL7fu_.js +0 -8066
@@ -1,4 +1,4 @@
1
- import { I as s, g as e, r as o, D as p, n, S, i as c, j as l, a as m, G as t, P as i, o as d, O as P, W as B, z as I } from "./SimpleSpanProcessor-B7rEuBRv-a4Fxxnjx.js";
1
+ import { I as s, g as e, r as o, D as p, n, S, i as c, j as l, a as m, G as t, P as i, o as d, O as P, W as B, z as I } from "./SimpleSpanProcessor-C2RLPQpG-XmLthHn2.js";
2
2
  export {
3
3
  s as AlwaysOffSampler,
4
4
  e as AlwaysOnSampler,
@@ -16,4 +16,4 @@ export {
16
16
  B as TraceIdRatioBasedSampler,
17
17
  I as Tracer
18
18
  };
19
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQ3h4cV9nUFUtIX57MDAxfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IEkgYXMgQWx3YXlzT2ZmU2FtcGxlciwgZyBhcyBBbHdheXNPblNhbXBsZXIsIHIgYXMgQmFzaWNUcmFjZXJQcm92aWRlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIG4gYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGkgYXMgSW5NZW1vcnlTcGFuRXhwb3J0ZXIsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIGEgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIG8gYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgTyBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItQjdyRXVCUnYtIX57MDAyfX4uanMnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQWMsS0FBTEEsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBOEIsR0FBMEIsR0FBc0IsS0FBTEMsR0FBZ0MsS0FBTEMsR0FBNkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBNEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBZ0IsS0FBTEMsR0FBb0MsS0FBTEMsU0FBbUI7IiwKICAibmFtZXMiOiBbIkkiLCAiZyIsICJyIiwgIkQiLCAiaSIsICJqIiwgImEiLCAiRyIsICJQIiwgIm8iLCAiTyIsICJXIiwgInoiXQp9Cg==
19
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRGxGajM2a08tIX57MDAxfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImV4cG9ydCB7IEkgYXMgQWx3YXlzT2ZmU2FtcGxlciwgZyBhcyBBbHdheXNPblNhbXBsZXIsIHIgYXMgQmFzaWNUcmFjZXJQcm92aWRlciwgRCBhcyBCYXRjaFNwYW5Qcm9jZXNzb3IsIG4gYXMgQ29uc29sZVNwYW5FeHBvcnRlciwgUyBhcyBGb3JjZUZsdXNoU3RhdGUsIGkgYXMgSW5NZW1vcnlTcGFuRXhwb3J0ZXIsIGogYXMgTm9vcFNwYW5Qcm9jZXNzb3IsIGEgYXMgUGFyZW50QmFzZWRTYW1wbGVyLCBHIGFzIFJhbmRvbUlkR2VuZXJhdG9yLCBQIGFzIFNhbXBsaW5nRGVjaXNpb24sIG8gYXMgU2ltcGxlU3BhblByb2Nlc3NvciwgTyBhcyBTcGFuLCBXIGFzIFRyYWNlSWRSYXRpb0Jhc2VkU2FtcGxlciwgeiBhcyBUcmFjZXIgfSBmcm9tICcuL1NpbXBsZVNwYW5Qcm9jZXNzb3ItQzJSTFBRcEctIX57MDAyfX4uanMnOyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQWMsS0FBTEEsR0FBNEIsS0FBTEMsR0FBMkIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBOEIsR0FBMEIsR0FBc0IsS0FBTEMsR0FBZ0MsS0FBTEMsR0FBNkIsS0FBTEMsR0FBOEIsS0FBTEMsR0FBNkIsS0FBTEMsR0FBNEIsS0FBTEMsR0FBK0IsS0FBTEMsR0FBZ0IsS0FBTEMsR0FBb0MsS0FBTEMsU0FBbUI7IiwKICAibmFtZXMiOiBbIkkiLCAiZyIsICJyIiwgIkQiLCAiaSIsICJqIiwgImEiLCAiRyIsICJQIiwgIm8iLCAiTyIsICJXIiwgInoiXQp9Cg==
@@ -1,9 +1,9 @@
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-BVSq8L4l-DHQsJ0N2.js";
2
- import { D as E, b as K, a as w, V as Ct, k as W, N as L } from "./index-DPmL7fu_.js";
3
- import { r as d } from "./diag-api-CS_j-083-gvfeT9eV.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-gBuEZQ4W-Z3svunxV.js";
2
+ import { D as E, a as K, O as w, z as Ct, I as W, N as L } from "./index-DofLDiKM.js";
3
+ import { r as d } from "./diag-api-CK5inj4K-dVgEuDsq.js";
4
4
  import { a as jt, A as J } from "./ExportResult-Bo1QOwfo-BBnR58Dk.js";
5
- import { bo as Nt, bp as It, br as Dt, bs as xt, bt as Mt, bq as kt, bm as Ut, bu as Lt, O as $t, bn as Bt, bv as Ft } from "./sdk-info-wum682QL-D0-wDuPw.js";
6
- import { l as Vt } from "./utils-BGeftTvk-CchVJ54o.js";
5
+ import { bo as Nt, bp as It, br as Dt, bs as xt, bt as Mt, bq as kt, bm as Ut, bu as Lt, O as $t, bn as Bt, bv as Ft } from "./sdk-info-BlaoCnDc-BQBaw5N_.js";
6
+ import { l as zt } 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";
@@ -12,13 +12,13 @@ var I = W("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
12
12
  function q(t) {
13
13
  return t.setValue(I, !0);
14
14
  }
15
- function zt(t) {
15
+ function Ht(t) {
16
16
  return t.deleteValue(I);
17
17
  }
18
18
  function D(t) {
19
19
  return t.getValue(I) === !0;
20
20
  }
21
- var Ht = "=", R = ";", S = ",", P = "baggage", Kt = 180, Wt = 4096, Jt = 8192, qt = 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;
@@ -52,7 +52,7 @@ function x(t) {
52
52
  if (!(r.length <= 0)) {
53
53
  var e = r.shift();
54
54
  if (e) {
55
- var n = e.indexOf(Ht);
55
+ var n = e.indexOf(Vt);
56
56
  if (!(n <= 0)) {
57
57
  var o = decodeURIComponent(e.substring(0, n).trim()), a = decodeURIComponent(e.substring(n + 1).trim()), i;
58
58
  return r.length > 0 && (i = yt(r.join(R))), { key: o, value: a, metadata: i };
@@ -340,7 +340,7 @@ function vr(t) {
340
340
  function _r(t) {
341
341
  return mr.test(t) && !gr.test(t);
342
342
  }
343
- var B = 32, Sr = 512, F = ",", V = "=", ot = (
343
+ var B = 32, Sr = 512, F = ",", z = "=", ot = (
344
344
  /** @class */
345
345
  function() {
346
346
  function t(r) {
@@ -357,11 +357,11 @@ var B = 32, Sr = 512, F = ",", V = "=", 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 + V + r.get(n)), e;
360
+ return e.push(n + z + 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(V);
364
+ var o = n.trim(), a = o.indexOf(z);
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);
@@ -497,7 +497,7 @@ function $r(t, r) {
497
497
  return t(r(e));
498
498
  };
499
499
  }
500
- function z(t) {
500
+ function H(t) {
501
501
  if (!Br(t) || Fr(t) !== Dr)
502
502
  return !1;
503
503
  var r = Lr(t);
@@ -510,9 +510,9 @@ 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 : xr : s && s in Object(t) ? Vr(t) : zr(t);
513
+ return t == null ? t === void 0 ? Mr : xr : s && s in Object(t) ? zr(t) : Hr(t);
514
514
  }
515
- function Vr(t) {
515
+ function zr(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,10 +521,10 @@ function Vr(t) {
521
521
  var o = ct.call(t);
522
522
  return n && (r ? t[s] = e : delete t[s]), o;
523
523
  }
524
- function zr(t) {
524
+ function Hr(t) {
525
525
  return ct.call(t);
526
526
  }
527
- var Hr = 20;
527
+ var Vr = 20;
528
528
  function Kr() {
529
529
  for (var t = [], r = 0; r < arguments.length; r++)
530
530
  t[r] = arguments[r];
@@ -538,7 +538,7 @@ function A(t) {
538
538
  function st(t, r, e, n) {
539
539
  e === void 0 && (e = 0);
540
540
  var o;
541
- if (!(e > Hr)) {
541
+ if (!(e > Vr)) {
542
542
  if (e++, _(t) || _(r) || ft(r))
543
543
  o = A(r);
544
544
  else if (b(t)) {
@@ -561,7 +561,7 @@ function st(t, r, e, n) {
561
561
  typeof c > "u" ? delete o[l] : o[l] = c;
562
562
  else {
563
563
  var f = o[l], T = c;
564
- if (H(t, l, n) || H(r, l, n))
564
+ if (V(t, l, n) || V(r, l, n))
565
565
  delete o[l];
566
566
  else {
567
567
  if (y(f) && y(T)) {
@@ -577,7 +577,7 @@ function st(t, r, e, n) {
577
577
  return o;
578
578
  }
579
579
  }
580
- function H(t, r, e) {
580
+ function V(t, r, e) {
581
581
  for (var n = e.get(t[r]) || [], o = 0, a = n.length; o < a; o++) {
582
582
  var i = n[o];
583
583
  if (i.key === r && i.obj === t)
@@ -598,7 +598,7 @@ 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 !(!z(t) || !z(r));
601
+ return !(!H(t) || !H(r));
602
602
  }
603
603
  var Jr = /* @__PURE__ */ function() {
604
604
  var t = function(r, e) {
@@ -770,7 +770,7 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
770
770
  VERSION: Lt,
771
771
  W3CBaggagePropagator: Qt,
772
772
  W3CTraceContextPropagator: wr,
773
- _globalThis: Vt,
773
+ _globalThis: zt,
774
774
  addHrTimes: dt,
775
775
  baggageUtils: re,
776
776
  callWithTimeout: qr,
@@ -808,7 +808,7 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
808
808
  suppressTracing: q,
809
809
  timeInputToHrTime: wt,
810
810
  unrefTimer: sr,
811
- unsuppressTracing: zt,
811
+ unsuppressTracing: Ht,
812
812
  urlMatches: Rt
813
813
  }, Symbol.toStringTag, { value: "Module" }));
814
814
  export {
@@ -827,4 +827,4 @@ export {
827
827
  ee as t,
828
828
  D as w
829
829
  };
830
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRkdTbjgwRnEtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtQlZTcThMNGwtIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgRCBhcyBEZSwgYiBhcyBhbiwgYSBhcyBPdCwgViBhcyBWaSwgayBhcyBraSwgTiBhcyBOZSB9IGZyb20gJy4vaW5kZXgtIX57MDA0fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktQ1Nfai0wODMtIX57MDA3fX4uanMnO1xuaW1wb3J0IHsgYSwgQSBhcyBBJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBibyBhcyBQJDEsIGJwIGFzIE0kMSwgYnIgYXMgSSQxLCBicyBhcyBrXywgYnQgYXMgSl8sIGJxIGFzIFhBLCBibSBhcyByJDEsIGJ1IGFzICRfLCBPIGFzIE9ULCBibiBhcyBMVCwgYnYgYXMgVSQxIH0gZnJvbSAnLi9zZGstaW5mby13dW02ODJRTC0hfnswMGd9fi5qcyc7XG5pbXBvcnQgeyBsIH0gZnJvbSAnLi91dGlscy1CR2VmdFR2ay0hfnswMGF9fi5qcyc7XG5cbnZhciBwO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkocCB8fCAocCA9IHt9KSk7XG52YXIgTiA9IGtpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgU1VQUFJFU1NfVFJBQ0lOR1wiKTtcbmZ1bmN0aW9uIFcoZSkge1xuICByZXR1cm4gZS5zZXRWYWx1ZShOLCAhMCk7XG59XG5mdW5jdGlvbiBGZShlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKE4pO1xufVxuZnVuY3Rpb24gdyhlKSB7XG4gIHJldHVybiBlLmdldFZhbHVlKE4pID09PSAhMDtcbn1cbnZhciB6ZSA9IFwiPVwiLCBDID0gXCI7XCIsIFMgPSBcIixcIiwgUCA9IFwiYmFnZ2FnZVwiLCBrZSA9IDE4MCwgWWUgPSA0MDk2LCBYZSA9IDgxOTIsIFdlID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gJChlKSB7XG4gIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgciArIChyICE9PSBcIlwiID8gUyA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBYZSA/IHIgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIEooZSkge1xuICByZXR1cm4gZS5nZXRBbGxFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgdCA9IFdlKHIsIDIpLCBuID0gdFswXSwgYSA9IHRbMV0sIGkgPSBlbmNvZGVVUklDb21wb25lbnQobikgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhLnZhbHVlKTtcbiAgICByZXR1cm4gYS5tZXRhZGF0YSAhPT0gdm9pZCAwICYmIChpICs9IEMgKyBhLm1ldGFkYXRhLnRvU3RyaW5nKCkpLCBpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEQoZSkge1xuICB2YXIgciA9IGUuc3BsaXQoQyk7XG4gIGlmICghKHIubGVuZ3RoIDw9IDApKSB7XG4gICAgdmFyIHQgPSByLnNoaWZ0KCk7XG4gICAgaWYgKHQpIHtcbiAgICAgIHZhciBuID0gdC5pbmRleE9mKHplKTtcbiAgICAgIGlmICghKG4gPD0gMCkpIHtcbiAgICAgICAgdmFyIGEgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoMCwgbikudHJpbSgpKSwgaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhuICsgMSkudHJpbSgpKSwgbztcbiAgICAgICAgcmV0dXJuIHIubGVuZ3RoID4gMCAmJiAobyA9IGZfKHIuam9pbihDKSkpLCB7IGtleTogYSwgdmFsdWU6IGksIG1ldGFkYXRhOiBvIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiAkZShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSAhPSBcInN0cmluZ1wiIHx8IGUubGVuZ3RoID09PSAwID8ge30gOiBlLnNwbGl0KFMpLm1hcChmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIEQocik7XG4gIH0pLmZpbHRlcihmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIHIgIT09IHZvaWQgMCAmJiByLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH0pLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgcmV0dXJuIHJbdC5rZXldID0gdC52YWx1ZSwgcjtcbiAgfSwge30pO1xufVxudmFyIEplID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IHlfLmdldEJhZ2dhZ2Uocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpKSkge1xuICAgICAgICB2YXIgaSA9IEooYSkuZmlsdGVyKGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICByZXR1cm4gdS5sZW5ndGggPD0gWWU7XG4gICAgICAgIH0pLnNsaWNlKDAsIGtlKSwgbyA9ICQoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBQLCBvKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBQKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oUykgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIHUgPSBpLnNwbGl0KFMpO1xuICAgICAgcmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgIHZhciBsID0gRChmKTtcbiAgICAgICAgaWYgKGwpIHtcbiAgICAgICAgICB2YXIgYyA9IHsgdmFsdWU6IGwudmFsdWUgfTtcbiAgICAgICAgICBsLm1ldGFkYXRhICYmIChjLm1ldGFkYXRhID0gbC5tZXRhZGF0YSksIG9bbC5rZXldID0gYztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IHIgOiB5Xy5zZXRCYWdnYWdlKHIsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtQXTtcbiAgICB9LCBlO1xuICB9KClcbiksIHFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IHIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgcjtcbiAgICB9LCBlO1xuICB9KClcbiksIHEgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgUWUgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBaZShlKSB7XG4gIHZhciByJDEsIHQsIG4gPSB7fTtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgZSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSBxKE9iamVjdC5lbnRyaWVzKGUpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gUWUoaS52YWx1ZSwgMiksIHUgPSBvWzBdLCBmID0gb1sxXTtcbiAgICAgIGlmICghUSh1KSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFaKGYpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIEFycmF5LmlzQXJyYXkoZikgPyBuW3VdID0gZi5zbGljZSgpIDogblt1XSA9IGY7XG4gICAgfVxuICB9IGNhdGNoIChsKSB7XG4gICAgciQxID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAociQxKSB0aHJvdyByJDEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuZnVuY3Rpb24gUShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiICYmIGUubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIFooZSkge1xuICByZXR1cm4gZSA9PSBudWxsID8gITAgOiBBcnJheS5pc0FycmF5KGUpID8gZXIoZSkgOiBlZShlKTtcbn1cbmZ1bmN0aW9uIGVyKGUpIHtcbiAgdmFyIHIsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoZSksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChlZShvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAodSkge1xuICAgIHIgPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gITA7XG59XG5mdW5jdGlvbiBlZShlKSB7XG4gIHN3aXRjaCAodHlwZW9mIGUpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gITA7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gcmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgci5lcnJvcihycihlKSk7XG4gIH07XG59XG5mdW5jdGlvbiBycihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiID8gZSA6IEpTT04uc3RyaW5naWZ5KHRyKGUpKTtcbn1cbmZ1bmN0aW9uIHRyKGUpIHtcbiAgZm9yICh2YXIgciA9IHt9LCB0ID0gZTsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFyW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAocltuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiByO1xufVxudmFyIHRlID0gcmUoKTtcbmZ1bmN0aW9uIG5yKGUpIHtcbiAgdGUgPSBlO1xufVxuZnVuY3Rpb24gbmUoZSkge1xuICB0cnkge1xuICAgIHRlKGUpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIGFyID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBpciA9IGZ1bmN0aW9uKGUsIHIsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gci5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHIpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsIDAsIG4pKSwgaVtuXSA9IHJbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyKSk7XG59O1xuZnVuY3Rpb24gb3IoZSkge1xuICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgaXIoW10sIGFyKEEkMShlKSksICExKSkpO1xufVxudmFyIHVyID0gOCwgZnIgPSAxNiwgbHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFYoZnIpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gVih1cik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9KClcbiksIHkgPSBBcnJheSgzMik7XG5mdW5jdGlvbiBWKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZSAqIDI7IHQrKylcbiAgICAgIHlbdF0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikgKyA0OCwgeVt0XSA+PSA1OCAmJiAoeVt0XSArPSAzOSk7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgeS5zbGljZSgwLCBlICogMikpO1xuICB9O1xufVxuZnVuY3Rpb24gc3IoZSkge1xufVxudmFyIGNyID0gZnVuY3Rpb24oZSkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IHIgJiYgZVtyXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IociA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIHByID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgciA9PT0gdm9pZCAwICYmIChyID0ge30pO1xuICAgICAgdmFyIHQ7XG4gICAgICB0aGlzLl9wcm9wYWdhdG9ycyA9ICh0ID0gci5wcm9wYWdhdG9ycykgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFtdLCB0aGlzLl9maWVsZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5fcHJvcGFnYXRvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmZpZWxkcyA9PSBcImZ1bmN0aW9uXCIgPyBuLmZpZWxkcygpIDogW107XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24obiwgYSkge1xuICAgICAgICByZXR1cm4gbi5jb25jYXQoYSk7XG4gICAgICB9LCBbXSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIkMSwgdCwgbikge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gY3IodGhpcy5fcHJvcGFnYXRvcnMpLCB1ID0gby5uZXh0KCk7ICF1LmRvbmU7IHUgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBmID0gdS52YWx1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZi5pbmplY3QociQxLCB0LCBuKTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gaW5qZWN0IHdpdGggXCIgKyBmLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIGwubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIGEgPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHUgJiYgIXUuZG9uZSAmJiAoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGFnYXRvcnMucmVkdWNlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaS5leHRyYWN0KGEsIHQsIG4pO1xuICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGV4dHJhY3Qgd2l0aCBcIiArIGkuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgby5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIHIkMSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzLnNsaWNlKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBJID0gXCJbXzAtOWEtei0qL11cIiwgZHIgPSBcIlthLXpdXCIgKyBJICsgXCJ7MCwyNTV9XCIsIF9yID0gXCJbYS16MC05XVwiICsgSSArIFwiezAsMjQwfUBbYS16XVwiICsgSSArIFwiezAsMTN9XCIsIHlyID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIGRyICsgXCJ8XCIgKyBfciArIFwiKSRcIiksIHZyID0gL15bIC1+XXswLDI1NX1bIS1+XSQvLCBociA9IC8sfD0vO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4geXIudGVzdChlKTtcbn1cbmZ1bmN0aW9uIGdyKGUpIHtcbiAgcmV0dXJuIHZyLnRlc3QoZSkgJiYgIWhyLnRlc3QoZSk7XG59XG52YXIgVSA9IDMyLCBTciA9IDUxMiwgSCA9IFwiLFwiLCBLID0gXCI9XCIsIGFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIgJiYgdGhpcy5fcGFyc2Uocik7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihyLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMocikgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIG4uX2ludGVybmFsU3RhdGUuc2V0KHIsIHQpLCBuO1xuICAgIH0sIGUucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKHIpLCB0O1xuICAgIH0sIGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChyKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgSyArIHIuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKEgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHIubGVuZ3RoID4gU3IgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSByLnNwbGl0KEgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKEspO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIHUgPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgbXIobykgJiYgZ3IodSkgJiYgdC5zZXQobywgdSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4gVSAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIFUpKSkpO1xuICAgIH0sIGUucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgICAgcmV0dXJuIHIuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgdiA9IFwidHJhY2VwYXJlbnRcIiwgaCA9IFwidHJhY2VzdGF0ZVwiLCBBciA9IFwiMDBcIiwgRXIgPSBcIig/IWZmKVtcXFxcZGEtZl17Mn1cIiwgVHIgPSBcIig/IVswXXszMn0pW1xcXFxkYS1mXXszMn1cIiwgUHIgPSBcIig/IVswXXsxNn0pW1xcXFxkYS1mXXsxNn1cIiwgUnIgPSBcIltcXFxcZGEtZl17Mn1cIiwgT3IgPSBuZXcgUmVnRXhwKFwiXlxcXFxzPyhcIiArIEVyICsgXCIpLShcIiArIFRyICsgXCIpLShcIiArIFByICsgXCIpLShcIiArIFJyICsgXCIpKC0uKik/XFxcXHM/JFwiKTtcbmZ1bmN0aW9uIGllKGUpIHtcbiAgdmFyIHIgPSBPci5leGVjKGUpO1xuICByZXR1cm4gIXIgfHwgclsxXSA9PT0gXCIwMFwiICYmIHJbNV0gPyBudWxsIDoge1xuICAgIHRyYWNlSWQ6IHJbMl0sXG4gICAgc3BhbklkOiByWzNdLFxuICAgIHRyYWNlRmxhZ3M6IHBhcnNlSW50KHJbNF0sIDE2KVxuICB9O1xufVxudmFyIGJyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IERlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgaWYgKCEoIWEgfHwgdyhyKSB8fCAhYW4oYSkpKSB7XG4gICAgICAgIHZhciBpID0gQXIgKyBcIi1cIiArIGEudHJhY2VJZCArIFwiLVwiICsgYS5zcGFuSWQgKyBcIi0wXCIgKyBOdW1iZXIoYS50cmFjZUZsYWdzIHx8IE90Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgdiwgaSksIGEudHJhY2VTdGF0ZSAmJiBuLnNldCh0LCBoLCBhLnRyYWNlU3RhdGUuc2VyaWFsaXplKCkpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIHYpO1xuICAgICAgaWYgKCFhKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShhKSA/IGFbMF0gOiBhO1xuICAgICAgaWYgKHR5cGVvZiBpICE9IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSBpZShpKTtcbiAgICAgIGlmICghbylcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICBvLmlzUmVtb3RlID0gITA7XG4gICAgICB2YXIgdSA9IG4uZ2V0KHQsIGgpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIGYgPSBBcnJheS5pc0FycmF5KHUpID8gdS5qb2luKFwiLFwiKSA6IHU7XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBhZSh0eXBlb2YgZiA9PSBcInN0cmluZ1wiID8gZiA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gRGUuc2V0U3BhbkNvbnRleHQociwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW3YsIGhdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTCA9IGtpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBqO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5IVFRQID0gXCJodHRwXCI7XG59KShqIHx8IChqID0ge30pKTtcbmZ1bmN0aW9uIENyKGUsIHIpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUoTCwgcik7XG59XG5mdW5jdGlvbiBJcihlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKEwpO1xufVxuZnVuY3Rpb24ganIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShMKTtcbn1cbnZhciBNID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIG0gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHAuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIE1yID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdmFyIHQsIG4sIGEsIGk7XG4gICAgICB0aGlzLl9yb290ID0gci5yb290LCB0aGlzLl9yb290IHx8IChuZShuZXcgRXJyb3IoXCJQYXJlbnRCYXNlZFNhbXBsZXIgbXVzdCBoYXZlIGEgcm9vdCBzYW1wbGVyIGNvbmZpZ3VyZWRcIikpLCB0aGlzLl9yb290ID0gbmV3IG0oKSksIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQgPSAodCA9IHIucmVtb3RlUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IG5ldyBtKCksIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQgPSAobiA9IHIucmVtb3RlUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IG5ldyBNKCksIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZCA9IChhID0gci5sb2NhbFBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiBuZXcgbSgpLCB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQgPSAoaSA9IHIubG9jYWxQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbmV3IE0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHIsIHQsIG4sIGEsIGksIG8pIHtcbiAgICAgIHZhciB1ID0gRGUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICByZXR1cm4gIXUgfHwgIWFuKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgT3QuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBPdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IFZpKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBOZS53aXRoKFcoTmUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3JFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxTQUFTLEtB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RUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDOyIsCiAgIm5hbWVzIjogWyJ5XyIsICJmXyIsICJIXyIsICJyXyIsICJwXyIsICJ3ZSIsICJrZSQxIiwgInhlIiwgIlFlJDEiLCAiWGUkMSIsICJxZSQxIiwgIk5fIiwgIlplJDEiLCAiTyIsICJSJDEiLCAiV2UkMSIsICJnXyIsICJEZSIsICJhbiIsICJPdCIsICJWaSIsICJraSIsICJOZSIsICJyIiwgImEiLCAiQSQxIiwgIlAkMSIsICJNJDEiLCAiSSQxIiwgImtfIiwgIkpfIiwgIlhBIiwgInIkMSIsICIkXyIsICJPVCIsICJMVCIsICJVJDEiLCAibCIsICJlIiwgIk4iLCAiVyIsICJGZSIsICJ3IiwgInplIiwgIkMiLCAia2UiLCAiWWUiLCAiWGUiLCAiV2UiLCAidCIsICJpIiwgIm8iLCAiJCIsICJKIiwgIkQiLCAiJGUiLCAiSmUiLCAiZiIsICJjIiwgInFlIiwgInEiLCAiUWUiLCAiWmUiLCAiUSIsICJaIiwgImVyIiwgImVlIiwgInJlIiwgInRyIiwgInRlIiwgIm5lIiwgImFyIiwgImlyIiwgIm9yIiwgImZyIiwgImxyIiwgIlYiLCAieSIsICJjciIsICJJIiwgImRyIiwgIl9yIiwgInlyIiwgInZyIiwgImhyIiwgIm1yIiwgImdyIiwgIlUiLCAiSCIsICJLIiwgImFlIiwgInYiLCAiaCIsICJBciIsICJFciIsICJUciIsICJSciIsICJPciIsICJpZSIsICJiciIsICJMIiwgIkNyIiwgIklyIiwgIk0iLCAibSIsICJNciIsICJOciIsICJ3ciIsICJEciIsICJMciIsICJ4ciIsICJvZSIsICJHciIsICJCciIsICJWciIsICJ1ZSIsICJmZSIsICJsZSIsICJGIiwgIlVyIiwgIkhyIiwgIktyIiwgIkZyIiwgInpyIiwgImtyIiwgInNlIiwgIlIiLCAiQSIsICJnIiwgImNlIiwgImQiLCAiWXIiLCAiRSIsICJ6IiwgIngiLCAiRyIsICJYciIsICJwZSIsICJXciIsICIkciIsICJKciIsICJxciIsICJRciIsICJaciIsICJldCIsICJydCIsICJ0dCIsICJsdCJdCn0K
830
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRG1sMGFFUUQtIX57MDBqfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtZ0J1RVpRNFctIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgRCBhcyBEZSwgYSBhcyBhbiwgTyBhcyBPdCwgeiBhcyB6aSwgSSBhcyBJaSwgTiBhcyBOZSB9IGZyb20gJy4vaW5kZXgtIX57MDA0fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktQ0s1aW5qNEstIX57MDA3fX4uanMnO1xuaW1wb3J0IHsgYSwgQSBhcyBBJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CbzFRT3dmby0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBibyBhcyBQJDEsIGJwIGFzIE0kMSwgYnIgYXMgSSQxLCBicyBhcyBrXywgYnQgYXMgSl8sIGJxIGFzIFhBLCBibSBhcyByJDEsIGJ1IGFzICRfLCBPIGFzIE9ULCBibiBhcyBMVCwgYnYgYXMgVSQxIH0gZnJvbSAnLi9zZGstaW5mby1CbGFvQ25EYy0hfnswMGd9fi5qcyc7XG5pbXBvcnQgeyBsIH0gZnJvbSAnLi91dGlscy1CR2VmdFR2ay0hfnswMGF9fi5qcyc7XG5cbnZhciBwO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkocCB8fCAocCA9IHt9KSk7XG52YXIgTiA9IElpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgU1VQUFJFU1NfVFJBQ0lOR1wiKTtcbmZ1bmN0aW9uIFcoZSkge1xuICByZXR1cm4gZS5zZXRWYWx1ZShOLCAhMCk7XG59XG5mdW5jdGlvbiBGZShlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKE4pO1xufVxuZnVuY3Rpb24gdyhlKSB7XG4gIHJldHVybiBlLmdldFZhbHVlKE4pID09PSAhMDtcbn1cbnZhciB6ZSA9IFwiPVwiLCBDID0gXCI7XCIsIFMgPSBcIixcIiwgUCA9IFwiYmFnZ2FnZVwiLCBrZSA9IDE4MCwgWWUgPSA0MDk2LCBYZSA9IDgxOTIsIFdlID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gJChlKSB7XG4gIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgciArIChyICE9PSBcIlwiID8gUyA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBYZSA/IHIgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIEooZSkge1xuICByZXR1cm4gZS5nZXRBbGxFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgdCA9IFdlKHIsIDIpLCBuID0gdFswXSwgYSA9IHRbMV0sIGkgPSBlbmNvZGVVUklDb21wb25lbnQobikgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhLnZhbHVlKTtcbiAgICByZXR1cm4gYS5tZXRhZGF0YSAhPT0gdm9pZCAwICYmIChpICs9IEMgKyBhLm1ldGFkYXRhLnRvU3RyaW5nKCkpLCBpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEQoZSkge1xuICB2YXIgciA9IGUuc3BsaXQoQyk7XG4gIGlmICghKHIubGVuZ3RoIDw9IDApKSB7XG4gICAgdmFyIHQgPSByLnNoaWZ0KCk7XG4gICAgaWYgKHQpIHtcbiAgICAgIHZhciBuID0gdC5pbmRleE9mKHplKTtcbiAgICAgIGlmICghKG4gPD0gMCkpIHtcbiAgICAgICAgdmFyIGEgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoMCwgbikudHJpbSgpKSwgaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhuICsgMSkudHJpbSgpKSwgbztcbiAgICAgICAgcmV0dXJuIHIubGVuZ3RoID4gMCAmJiAobyA9IGZfKHIuam9pbihDKSkpLCB7IGtleTogYSwgdmFsdWU6IGksIG1ldGFkYXRhOiBvIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiAkZShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSAhPSBcInN0cmluZ1wiIHx8IGUubGVuZ3RoID09PSAwID8ge30gOiBlLnNwbGl0KFMpLm1hcChmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIEQocik7XG4gIH0pLmZpbHRlcihmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIHIgIT09IHZvaWQgMCAmJiByLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH0pLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgcmV0dXJuIHJbdC5rZXldID0gdC52YWx1ZSwgcjtcbiAgfSwge30pO1xufVxudmFyIEplID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IHlfLmdldEJhZ2dhZ2Uocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpKSkge1xuICAgICAgICB2YXIgaSA9IEooYSkuZmlsdGVyKGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICByZXR1cm4gdS5sZW5ndGggPD0gWWU7XG4gICAgICAgIH0pLnNsaWNlKDAsIGtlKSwgbyA9ICQoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBQLCBvKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBQKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oUykgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIHUgPSBpLnNwbGl0KFMpO1xuICAgICAgcmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgIHZhciBsID0gRChmKTtcbiAgICAgICAgaWYgKGwpIHtcbiAgICAgICAgICB2YXIgYyA9IHsgdmFsdWU6IGwudmFsdWUgfTtcbiAgICAgICAgICBsLm1ldGFkYXRhICYmIChjLm1ldGFkYXRhID0gbC5tZXRhZGF0YSksIG9bbC5rZXldID0gYztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IHIgOiB5Xy5zZXRCYWdnYWdlKHIsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtQXTtcbiAgICB9LCBlO1xuICB9KClcbiksIHFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IHIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgcjtcbiAgICB9LCBlO1xuICB9KClcbiksIHEgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgUWUgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBaZShlKSB7XG4gIHZhciByJDEsIHQsIG4gPSB7fTtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgZSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSBxKE9iamVjdC5lbnRyaWVzKGUpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gUWUoaS52YWx1ZSwgMiksIHUgPSBvWzBdLCBmID0gb1sxXTtcbiAgICAgIGlmICghUSh1KSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFaKGYpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIEFycmF5LmlzQXJyYXkoZikgPyBuW3VdID0gZi5zbGljZSgpIDogblt1XSA9IGY7XG4gICAgfVxuICB9IGNhdGNoIChsKSB7XG4gICAgciQxID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAociQxKSB0aHJvdyByJDEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuZnVuY3Rpb24gUShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiICYmIGUubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIFooZSkge1xuICByZXR1cm4gZSA9PSBudWxsID8gITAgOiBBcnJheS5pc0FycmF5KGUpID8gZXIoZSkgOiBlZShlKTtcbn1cbmZ1bmN0aW9uIGVyKGUpIHtcbiAgdmFyIHIsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoZSksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChlZShvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAodSkge1xuICAgIHIgPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gITA7XG59XG5mdW5jdGlvbiBlZShlKSB7XG4gIHN3aXRjaCAodHlwZW9mIGUpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gITA7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gcmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgci5lcnJvcihycihlKSk7XG4gIH07XG59XG5mdW5jdGlvbiBycihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiID8gZSA6IEpTT04uc3RyaW5naWZ5KHRyKGUpKTtcbn1cbmZ1bmN0aW9uIHRyKGUpIHtcbiAgZm9yICh2YXIgciA9IHt9LCB0ID0gZTsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFyW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAocltuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiByO1xufVxudmFyIHRlID0gcmUoKTtcbmZ1bmN0aW9uIG5yKGUpIHtcbiAgdGUgPSBlO1xufVxuZnVuY3Rpb24gbmUoZSkge1xuICB0cnkge1xuICAgIHRlKGUpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIGFyID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBpciA9IGZ1bmN0aW9uKGUsIHIsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gci5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHIpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsIDAsIG4pKSwgaVtuXSA9IHJbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyKSk7XG59O1xuZnVuY3Rpb24gb3IoZSkge1xuICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgaXIoW10sIGFyKEEkMShlKSksICExKSkpO1xufVxudmFyIHVyID0gOCwgZnIgPSAxNiwgbHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFYoZnIpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gVih1cik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9KClcbiksIHkgPSBBcnJheSgzMik7XG5mdW5jdGlvbiBWKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZSAqIDI7IHQrKylcbiAgICAgIHlbdF0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikgKyA0OCwgeVt0XSA+PSA1OCAmJiAoeVt0XSArPSAzOSk7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgeS5zbGljZSgwLCBlICogMikpO1xuICB9O1xufVxuZnVuY3Rpb24gc3IoZSkge1xufVxudmFyIGNyID0gZnVuY3Rpb24oZSkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IHIgJiYgZVtyXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IociA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIHByID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgciA9PT0gdm9pZCAwICYmIChyID0ge30pO1xuICAgICAgdmFyIHQ7XG4gICAgICB0aGlzLl9wcm9wYWdhdG9ycyA9ICh0ID0gci5wcm9wYWdhdG9ycykgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFtdLCB0aGlzLl9maWVsZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5fcHJvcGFnYXRvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmZpZWxkcyA9PSBcImZ1bmN0aW9uXCIgPyBuLmZpZWxkcygpIDogW107XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24obiwgYSkge1xuICAgICAgICByZXR1cm4gbi5jb25jYXQoYSk7XG4gICAgICB9LCBbXSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIkMSwgdCwgbikge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gY3IodGhpcy5fcHJvcGFnYXRvcnMpLCB1ID0gby5uZXh0KCk7ICF1LmRvbmU7IHUgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBmID0gdS52YWx1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZi5pbmplY3QociQxLCB0LCBuKTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gaW5qZWN0IHdpdGggXCIgKyBmLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIGwubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIGEgPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHUgJiYgIXUuZG9uZSAmJiAoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGFnYXRvcnMucmVkdWNlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaS5leHRyYWN0KGEsIHQsIG4pO1xuICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGV4dHJhY3Qgd2l0aCBcIiArIGkuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgby5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIHIkMSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzLnNsaWNlKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBJID0gXCJbXzAtOWEtei0qL11cIiwgZHIgPSBcIlthLXpdXCIgKyBJICsgXCJ7MCwyNTV9XCIsIF9yID0gXCJbYS16MC05XVwiICsgSSArIFwiezAsMjQwfUBbYS16XVwiICsgSSArIFwiezAsMTN9XCIsIHlyID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIGRyICsgXCJ8XCIgKyBfciArIFwiKSRcIiksIHZyID0gL15bIC1+XXswLDI1NX1bIS1+XSQvLCBociA9IC8sfD0vO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4geXIudGVzdChlKTtcbn1cbmZ1bmN0aW9uIGdyKGUpIHtcbiAgcmV0dXJuIHZyLnRlc3QoZSkgJiYgIWhyLnRlc3QoZSk7XG59XG52YXIgVSA9IDMyLCBTciA9IDUxMiwgSCA9IFwiLFwiLCBLID0gXCI9XCIsIGFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIgJiYgdGhpcy5fcGFyc2Uocik7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihyLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMocikgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIG4uX2ludGVybmFsU3RhdGUuc2V0KHIsIHQpLCBuO1xuICAgIH0sIGUucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKHIpLCB0O1xuICAgIH0sIGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChyKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgSyArIHIuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKEgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHIubGVuZ3RoID4gU3IgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSByLnNwbGl0KEgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKEspO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIHUgPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgbXIobykgJiYgZ3IodSkgJiYgdC5zZXQobywgdSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4gVSAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIFUpKSkpO1xuICAgIH0sIGUucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgICAgcmV0dXJuIHIuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgdiA9IFwidHJhY2VwYXJlbnRcIiwgaCA9IFwidHJhY2VzdGF0ZVwiLCBBciA9IFwiMDBcIiwgRXIgPSBcIig/IWZmKVtcXFxcZGEtZl17Mn1cIiwgVHIgPSBcIig/IVswXXszMn0pW1xcXFxkYS1mXXszMn1cIiwgUHIgPSBcIig/IVswXXsxNn0pW1xcXFxkYS1mXXsxNn1cIiwgUnIgPSBcIltcXFxcZGEtZl17Mn1cIiwgT3IgPSBuZXcgUmVnRXhwKFwiXlxcXFxzPyhcIiArIEVyICsgXCIpLShcIiArIFRyICsgXCIpLShcIiArIFByICsgXCIpLShcIiArIFJyICsgXCIpKC0uKik/XFxcXHM/JFwiKTtcbmZ1bmN0aW9uIGllKGUpIHtcbiAgdmFyIHIgPSBPci5leGVjKGUpO1xuICByZXR1cm4gIXIgfHwgclsxXSA9PT0gXCIwMFwiICYmIHJbNV0gPyBudWxsIDoge1xuICAgIHRyYWNlSWQ6IHJbMl0sXG4gICAgc3BhbklkOiByWzNdLFxuICAgIHRyYWNlRmxhZ3M6IHBhcnNlSW50KHJbNF0sIDE2KVxuICB9O1xufVxudmFyIGJyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IERlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgaWYgKCEoIWEgfHwgdyhyKSB8fCAhYW4oYSkpKSB7XG4gICAgICAgIHZhciBpID0gQXIgKyBcIi1cIiArIGEudHJhY2VJZCArIFwiLVwiICsgYS5zcGFuSWQgKyBcIi0wXCIgKyBOdW1iZXIoYS50cmFjZUZsYWdzIHx8IE90Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgdiwgaSksIGEudHJhY2VTdGF0ZSAmJiBuLnNldCh0LCBoLCBhLnRyYWNlU3RhdGUuc2VyaWFsaXplKCkpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIHYpO1xuICAgICAgaWYgKCFhKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShhKSA/IGFbMF0gOiBhO1xuICAgICAgaWYgKHR5cGVvZiBpICE9IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSBpZShpKTtcbiAgICAgIGlmICghbylcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICBvLmlzUmVtb3RlID0gITA7XG4gICAgICB2YXIgdSA9IG4uZ2V0KHQsIGgpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIGYgPSBBcnJheS5pc0FycmF5KHUpID8gdS5qb2luKFwiLFwiKSA6IHU7XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBhZSh0eXBlb2YgZiA9PSBcInN0cmluZ1wiID8gZiA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gRGUuc2V0U3BhbkNvbnRleHQociwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW3YsIGhdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTCA9IElpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBqO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5IVFRQID0gXCJodHRwXCI7XG59KShqIHx8IChqID0ge30pKTtcbmZ1bmN0aW9uIENyKGUsIHIpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUoTCwgcik7XG59XG5mdW5jdGlvbiBJcihlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKEwpO1xufVxuZnVuY3Rpb24ganIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShMKTtcbn1cbnZhciBNID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIG0gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHAuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIE1yID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdmFyIHQsIG4sIGEsIGk7XG4gICAgICB0aGlzLl9yb290ID0gci5yb290LCB0aGlzLl9yb290IHx8IChuZShuZXcgRXJyb3IoXCJQYXJlbnRCYXNlZFNhbXBsZXIgbXVzdCBoYXZlIGEgcm9vdCBzYW1wbGVyIGNvbmZpZ3VyZWRcIikpLCB0aGlzLl9yb290ID0gbmV3IG0oKSksIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQgPSAodCA9IHIucmVtb3RlUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IG5ldyBtKCksIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQgPSAobiA9IHIucmVtb3RlUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IG5ldyBNKCksIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZCA9IChhID0gci5sb2NhbFBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiBuZXcgbSgpLCB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQgPSAoaSA9IHIubG9jYWxQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbmV3IE0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHIsIHQsIG4sIGEsIGksIG8pIHtcbiAgICAgIHZhciB1ID0gRGUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICByZXR1cm4gIXUgfHwgIWFuKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgT3QuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBPdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHppKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBOZS53aXRoKFcoTmUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3JFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxTQUFTLEtB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RUFBRSxPQUFPLFNBQVMsQ0FBQyxDQUFDOyIsCiAgIm5hbWVzIjogWyJ5XyIsICJmXyIsICJIXyIsICJyXyIsICJwXyIsICJ3ZSIsICJrZSQxIiwgInhlIiwgIlFlJDEiLCAiWGUkMSIsICJxZSQxIiwgIk5fIiwgIlplJDEiLCAiTyIsICJSJDEiLCAiV2UkMSIsICJnXyIsICJEZSIsICJhbiIsICJPdCIsICJ6aSIsICJJaSIsICJOZSIsICJyIiwgImEiLCAiQSQxIiwgIlAkMSIsICJNJDEiLCAiSSQxIiwgImtfIiwgIkpfIiwgIlhBIiwgInIkMSIsICIkXyIsICJPVCIsICJMVCIsICJVJDEiLCAibCIsICJlIiwgIk4iLCAiVyIsICJGZSIsICJ3IiwgInplIiwgIkMiLCAia2UiLCAiWWUiLCAiWGUiLCAiV2UiLCAidCIsICJpIiwgIm8iLCAiJCIsICJKIiwgIkQiLCAiJGUiLCAiSmUiLCAiZiIsICJjIiwgInFlIiwgInEiLCAiUWUiLCAiWmUiLCAiUSIsICJaIiwgImVyIiwgImVlIiwgInJlIiwgInRyIiwgInRlIiwgIm5lIiwgImFyIiwgImlyIiwgIm9yIiwgImZyIiwgImxyIiwgIlYiLCAieSIsICJjciIsICJJIiwgImRyIiwgIl9yIiwgInlyIiwgInZyIiwgImhyIiwgIm1yIiwgImdyIiwgIlUiLCAiSCIsICJLIiwgImFlIiwgInYiLCAiaCIsICJBciIsICJFciIsICJUciIsICJSciIsICJPciIsICJpZSIsICJiciIsICJMIiwgIkNyIiwgIklyIiwgIk0iLCAibSIsICJNciIsICJOciIsICJ3ciIsICJEciIsICJMciIsICJ4ciIsICJvZSIsICJHciIsICJCciIsICJWciIsICJ1ZSIsICJmZSIsICJsZSIsICJGIiwgIlVyIiwgIkhyIiwgIktyIiwgIkZyIiwgInpyIiwgImtyIiwgInNlIiwgIlIiLCAiQSIsICJnIiwgImNlIiwgImQiLCAiWXIiLCAiRSIsICJ6IiwgIngiLCAiRyIsICJYciIsICJwZSIsICJXciIsICIkciIsICJKciIsICJxciIsICJRciIsICJaciIsICJldCIsICJydCIsICJ0dCIsICJsdCJdCn0K