@getopenpay/openpay-js-react 0.5.24 → 0.5.25

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 (22) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{Resource-CkzRJFLK-DrakBOKi.js → Resource-CpYeGio5-Crlrtvzx.js} +2 -2
  3. package/dist/{SimpleSpanProcessor-CsKZmetr-7bolxekP.js → SimpleSpanProcessor-gnSJN3jD-DOHVdqI6.js} +7 -7
  4. package/dist/{detect-resources-Cbn1yeTm-BS8VwG8h.js → detect-resources-BQutTEeG-CLQLes2c.js} +6 -6
  5. package/dist/{diag-api-DVkGgAmn-D-PvTcQE.js → diag-api-DQpLxQUF-Bq4RIuXi.js} +2 -2
  6. package/dist/{index-FGM34aTH-O91OdbMB.js → index-BxfodL6B-wW9M3hrZ.js} +30 -30
  7. package/dist/{index-Cu_OtSzC-DnSePhWJ.js → index-By2_XDEC-BWEZq0hE.js} +2 -2
  8. package/dist/{index-B7CxIjD1-BxxbzKMR.js → index-CvuCprS8-B_Yax6-R.js} +2 -2
  9. package/dist/{index-CpNtjsp5-DvlNE7zh.js → index-DZ1Er9UK-CFqxcZP4.js} +2 -2
  10. package/dist/{index-DCDsdYNg-OdVBUxEC.js → index-Dbr9bp6a-sEQgAlIq.js} +5 -5
  11. package/dist/{index-vQf5w_NB.js → index-DznVXDC2.js} +620 -618
  12. package/dist/{index-CSfMP6Kj-CtSF2v5c.js → index-NCAOVimP-BcCtrd4O.js} +51 -51
  13. package/dist/{index-ClnmWL0z-_K3B0iCN.js → index-TeVCMfiW-BtVV3Emw.js} +6 -6
  14. package/dist/{index-DRervXie-DX5FnDIf.js → index-gOa9aopa-oVE-SOM0.js} +5 -5
  15. package/dist/{index-BZhfdKBi-BNPQ0llZ.js → index-mdlHE8Fi-DDx5Cjgi.js} +2 -2
  16. package/dist/index.js +8 -8
  17. package/dist/{metrics-api-BLX8s64K-BhfsXJTs.js → metrics-api-l2AFyrzy-MaTXNkC6.js} +5 -5
  18. package/dist/{suppress-tracing-e5fAQV2c-CzUqEsrg.js → suppress-tracing-D5T6gdNh-B4bDPm8x.js} +2 -2
  19. package/dist/{url-F6qLqPpe-B-2pUcwP.js → url-CHzjVJbO-CQh_-bbK.js} +2 -2
  20. package/dist/{utils-CN4slj5M-fMxML58J.js → utils-D8tO_9FV-Dz_8ziJx.js} +4 -4
  21. package/dist/{utils-DDVteQnH-ByupavEF.js → utils-DAJoEkd6-DqcqG-Cu.js} +2 -2
  22. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
- import { y as v, h as B, dC as St, g as dt, w as yt, dG as It, O as At, a as ht, dH as mt, dE as vt, dK as gt, c as Ct, dL as Nt, dD as Mt, dF as bt, p as Ut, dJ as wt, dI as Dt } from "./url-F6qLqPpe-B-2pUcwP.js";
2
- import { a as X, u as J, s as Bt } from "./suppress-tracing-e5fAQV2c-CzUqEsrg.js";
3
- import { r as O } from "./diag-api-DVkGgAmn-D-PvTcQE.js";
1
+ import { y as v, h as B, dC as St, g as dt, w as yt, dG as It, O as At, a as ht, dH as mt, dE as vt, dK as gt, c as Ct, dL as Nt, dD as Mt, dF as bt, p as Ut, dJ as Dt, dI as wt } from "./url-CHzjVJbO-CQh_-bbK.js";
2
+ import { a as X, u as J, s as Bt } from "./suppress-tracing-D5T6gdNh-B4bDPm8x.js";
3
+ import { r as O } from "./diag-api-DQpLxQUF-Bq4RIuXi.js";
4
4
  import { A as Q, a as Xt } from "./ExportResult-BacsqwKA-wgTHEn_9.js";
5
- import { o as u, j as N, L as q, t as M, x as K, f as jt, R as xt } from "./index-vQf5w_NB.js";
6
- import { bm as Gt, bl as Ht } from "./sdk-info-ChuKu8zW-BkU0NT3O.js";
5
+ import { o as u, j as N, L as q, r as M, D as K, f as jt, R as Gt } from "./index-DznVXDC2.js";
6
+ import { bm as xt, bl as Ht } from "./sdk-info-ChuKu8zW-BkU0NT3O.js";
7
7
  var f;
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";
@@ -271,7 +271,7 @@ var _e = [
271
271
  function Ee(t) {
272
272
  return _e.indexOf(t) > -1;
273
273
  }
274
- var R = 1 / 0, L = 128, Tt = 128, ut = 128, x = {
274
+ var R = 1 / 0, L = 128, Tt = 128, ut = 128, G = {
275
275
  OTEL_SDK_DISABLED: !1,
276
276
  CONTAINER_NAME: "",
277
277
  ECS_CONTAINER_METADATA_URI_V4: "",
@@ -386,9 +386,9 @@ function fe(t, e, n) {
386
386
  o != null && (e[t] = o);
387
387
  }
388
388
  }
389
- function G(t) {
389
+ function x(t) {
390
390
  var e = {};
391
- for (var n in x) {
391
+ for (var n in G) {
392
392
  var r = n;
393
393
  switch (r) {
394
394
  case "OTEL_LOG_LEVEL":
@@ -410,11 +410,11 @@ function G(t) {
410
410
  return e;
411
411
  }
412
412
  function se() {
413
- var t = G(B);
414
- return Object.assign({}, x, t);
413
+ var t = x(B);
414
+ return Object.assign({}, G, t);
415
415
  }
416
416
  function Oe() {
417
- return G(B);
417
+ return x(B);
418
418
  }
419
419
  var pe = function(t, e) {
420
420
  var n = typeof Symbol == "function" && t[Symbol.iterator];
@@ -554,7 +554,7 @@ var $ = 32, be = 512, z = ",", Y = "=", lt = (
554
554
  return e._internalState = new Map(this._internalState), e;
555
555
  }, t;
556
556
  })()
557
- ), P = "traceparent", S = "tracestate", Ue = "00", we = "(?!ff)[\\da-f]{2}", De = "(?![0]{32})[\\da-f]{32}", Be = "(?![0]{16})[\\da-f]{16}", Xe = "[\\da-f]{2}", je = new RegExp("^\\s?(" + we + ")-(" + De + ")-(" + Be + ")-(" + Xe + ")(-.*)?\\s?$");
557
+ ), P = "traceparent", S = "tracestate", Ue = "00", De = "(?!ff)[\\da-f]{2}", we = "(?![0]{32})[\\da-f]{32}", Be = "(?![0]{16})[\\da-f]{16}", Xe = "[\\da-f]{2}", je = new RegExp("^\\s?(" + De + ")-(" + we + ")-(" + Be + ")-(" + Xe + ")(-.*)?\\s?$");
558
558
  function ct(t) {
559
559
  var e = je.exec(t);
560
560
  return !e || e[1] === "00" && e[5] ? null : {
@@ -563,7 +563,7 @@ function ct(t) {
563
563
  traceFlags: parseInt(e[4], 16)
564
564
  };
565
565
  }
566
- var xe = (
566
+ var Ge = (
567
567
  /** @class */
568
568
  (function() {
569
569
  function t() {
@@ -595,11 +595,11 @@ var xe = (
595
595
  return [P, S];
596
596
  }, t;
597
597
  })()
598
- ), H = jt("OpenTelemetry SDK Context Key RPC_METADATA"), w;
598
+ ), H = jt("OpenTelemetry SDK Context Key RPC_METADATA"), D;
599
599
  (function(t) {
600
600
  t.HTTP = "http";
601
- })(w || (w = {}));
602
- function Ge(t, e) {
601
+ })(D || (D = {}));
602
+ function xe(t, e) {
603
603
  return t.setValue(H, e);
604
604
  }
605
605
  function He(t) {
@@ -608,7 +608,7 @@ function He(t) {
608
608
  function Ve(t) {
609
609
  return t.getValue(H);
610
610
  }
611
- var D = (
611
+ var w = (
612
612
  /** @class */
613
613
  (function() {
614
614
  function t() {
@@ -639,7 +639,7 @@ var D = (
639
639
  (function() {
640
640
  function t(e) {
641
641
  var n, r, o, a;
642
- this._root = e.root, this._root || (Et(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new d()), this._remoteParentSampled = (n = e.remoteParentSampled) !== null && n !== void 0 ? n : new d(), this._remoteParentNotSampled = (r = e.remoteParentNotSampled) !== null && r !== void 0 ? r : new D(), this._localParentSampled = (o = e.localParentSampled) !== null && o !== void 0 ? o : new d(), this._localParentNotSampled = (a = e.localParentNotSampled) !== null && a !== void 0 ? a : new D();
642
+ this._root = e.root, this._root || (Et(new Error("ParentBasedSampler must have a root sampler configured")), this._root = new d()), this._remoteParentSampled = (n = e.remoteParentSampled) !== null && n !== void 0 ? n : new d(), this._remoteParentNotSampled = (r = e.remoteParentNotSampled) !== null && r !== void 0 ? r : new w(), this._localParentSampled = (o = e.localParentSampled) !== null && o !== void 0 ? o : new d(), this._localParentNotSampled = (a = e.localParentNotSampled) !== null && a !== void 0 ? a : new w();
643
643
  }
644
644
  return t.prototype.shouldSample = function(e, n, r, o, a, i) {
645
645
  var _ = N.getSpanContext(e);
@@ -656,7 +656,7 @@ var D = (
656
656
  }
657
657
  return t.prototype.shouldSample = function(e, n) {
658
658
  return {
659
- decision: xt(n) && this._accumulate(n) < this._upperBound ? f.RECORD_AND_SAMPLED : f.NOT_RECORD
659
+ decision: Gt(n) && this._accumulate(n) < this._upperBound ? f.RECORD_AND_SAMPLED : f.NOT_RECORD
660
660
  };
661
661
  }, t.prototype.toString = function() {
662
662
  return "TraceIdRatioBased{" + this._ratio + "}";
@@ -919,14 +919,14 @@ var fr = {
919
919
  };
920
920
  const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
921
921
  __proto__: null,
922
- AlwaysOffSampler: D,
922
+ AlwaysOffSampler: w,
923
923
  AlwaysOnSampler: d,
924
924
  AnchoredClock: Zt,
925
925
  BindOnceFuture: lr,
926
926
  CompositePropagator: Ae,
927
927
  DEFAULT_ATTRIBUTE_COUNT_LIMIT: L,
928
928
  DEFAULT_ATTRIBUTE_VALUE_LENGTH_LIMIT: R,
929
- DEFAULT_ENVIRONMENT: x,
929
+ DEFAULT_ENVIRONMENT: G,
930
930
  DEFAULT_SPAN_ATTRIBUTE_PER_EVENT_COUNT_LIMIT: Tt,
931
931
  DEFAULT_SPAN_ATTRIBUTE_PER_LINK_COUNT_LIMIT: ut,
932
932
  get ExportResultCode() {
@@ -934,7 +934,7 @@ const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
934
934
  },
935
935
  ParentBasedSampler: Fe,
936
936
  get RPCType() {
937
- return w;
937
+ return D;
938
938
  },
939
939
  RandomIdGenerator: de,
940
940
  SDK_INFO: Ht,
@@ -946,18 +946,18 @@ const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
946
946
  get TracesSamplerValues() {
947
947
  return A;
948
948
  },
949
- VERSION: Gt,
949
+ VERSION: xt,
950
950
  W3CBaggagePropagator: Yt,
951
- W3CTraceContextPropagator: xe,
951
+ W3CTraceContextPropagator: Ge,
952
952
  _globalThis: B,
953
- addHrTimes: Dt,
953
+ addHrTimes: wt,
954
954
  baggageUtils: fr,
955
955
  callWithTimeout: ir,
956
956
  deleteRPCMetadata: He,
957
957
  getEnv: se,
958
958
  getEnvWithoutDefaults: Oe,
959
959
  getRPCMetadata: Ve,
960
- getTimeOrigin: wt,
960
+ getTimeOrigin: Dt,
961
961
  globalErrorHandler: Et,
962
962
  hexToBase64: Le,
963
963
  hexToBinary: Q,
@@ -979,11 +979,11 @@ const dr = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
979
979
  merge: nr,
980
980
  millisToHrTime: At,
981
981
  otperformance: It,
982
- parseEnvironment: G,
982
+ parseEnvironment: x,
983
983
  parseTraceParent: ct,
984
984
  sanitizeAttributes: Jt,
985
985
  setGlobalErrorHandler: ee,
986
- setRPCMetadata: Ge,
986
+ setRPCMetadata: xe,
987
987
  suppressTracing: J,
988
988
  timeInputToHrTime: yt,
989
989
  unrefTimer: ye,
@@ -996,7 +996,7 @@ export {
996
996
  dr as P,
997
997
  Jt as Q,
998
998
  ye as S,
999
- xe as V,
999
+ Ge as V,
1000
1000
  Yt as Z,
1001
1001
  ot as a,
1002
1002
  A as b,
@@ -1009,4 +1009,4 @@ export {
1009
1009
  R as p,
1010
1010
  Ae as v
1011
1011
  };
1012
- //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtRkdNMzRhVEgtIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGggYXMgaF8sIGRDIGFzIGZfLCBnIGFzIGdfLCB3IGFzIHdlJDEsIGRHIGFzIFIkMSwgTyBhcyBPJDEsIGEgYXMgWmUkMSwgZEggYXMgTl8sIGRFIGFzIHFlJDEsIGRLIGFzIFFlJDEsIGMgYXMgeGUkMiwgZEwgYXMga2UkMSwgZEQgYXMgamUkMiwgZEYgYXMgWGUkMSwgcCBhcyBwXywgZEogYXMgcl8sIGRJIGFzIGJfIH0gZnJvbSAnLi91cmwtRjZxTHFQcGUtIX57MDBifX4uanMnO1xuaW1wb3J0IHsgYSwgdSwgcyB9IGZyb20gJy4vc3VwcHJlc3MtdHJhY2luZy1lNWZBUVYyYy0hfnswMG59fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1EVmtHZ0Ftbi0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBBIGFzIEEkMSwgYSBhcyBhJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CYWNzcXdLQS0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBvIGFzIG9lJDEsIGogYXMgamUkMSwgTCBhcyBMbiwgdCBhcyB0ciQxLCB4IGFzIHhlJDEsIGYgYXMgZnMsIFIgYXMgUnMgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGJtIGFzIHRTLCBibCBhcyBUQSB9IGZyb20gJy4vc2RrLWluZm8tQ2h1S3U4elctIX57MDBqfX4uanMnO1xuXG52YXIgbDtcbihmdW5jdGlvbihyKSB7XG4gIHJbci5OT1RfUkVDT1JEID0gMF0gPSBcIk5PVF9SRUNPUkRcIiwgcltyLlJFQ09SRCA9IDFdID0gXCJSRUNPUkRcIiwgcltyLlJFQ09SRF9BTkRfU0FNUExFRCA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKGwgfHwgKGwgPSB7fSkpO1xudmFyIHhyID0gXCI9XCIsIFUgPSBcIjtcIiwgSSA9IFwiLFwiLCBtID0gXCJiYWdnYWdlXCIsIEZyID0gMTgwLCBLciA9IDQwOTYsIFlyID0gODE5MiwgenIgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBycihyKSB7XG4gIHJldHVybiByLnJlZHVjZShmdW5jdGlvbihlLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgZSArIChlICE9PSBcIlwiID8gSSA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBZciA/IGUgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGVyKHIpIHtcbiAgcmV0dXJuIHIuZ2V0QWxsRW50cmllcygpLm1hcChmdW5jdGlvbihlKSB7XG4gICAgdmFyIHQgPSB6cihlLCAyKSwgbiA9IHRbMF0sIGEgPSB0WzFdLCBpID0gZW5jb2RlVVJJQ29tcG9uZW50KG4pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYS52YWx1ZSk7XG4gICAgcmV0dXJuIGEubWV0YWRhdGEgIT09IHZvaWQgMCAmJiAoaSArPSBVICsgYS5tZXRhZGF0YS50b1N0cmluZygpKSwgaTtcbiAgfSk7XG59XG5mdW5jdGlvbiB3KHIpIHtcbiAgdmFyIGUgPSByLnNwbGl0KFUpO1xuICBpZiAoIShlLmxlbmd0aCA8PSAwKSkge1xuICAgIHZhciB0ID0gZS5zaGlmdCgpO1xuICAgIGlmICh0KSB7XG4gICAgICB2YXIgbiA9IHQuaW5kZXhPZih4cik7XG4gICAgICBpZiAoIShuIDw9IDApKSB7XG4gICAgICAgIHZhciBhID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKDAsIG4pLnRyaW0oKSksIGkgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcobiArIDEpLnRyaW0oKSksIG87XG4gICAgICAgIHJldHVybiBlLmxlbmd0aCA+IDAgJiYgKG8gPSBmXyhlLmpvaW4oVSkpKSwgeyBrZXk6IGEsIHZhbHVlOiBpLCBtZXRhZGF0YTogbyB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gV3Iocikge1xuICByZXR1cm4gdHlwZW9mIHIgIT0gXCJzdHJpbmdcIiB8fCByLmxlbmd0aCA9PT0gMCA/IHt9IDogci5zcGxpdChJKS5tYXAoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB3KGUpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBlICE9PSB2b2lkIDAgJiYgZS52YWx1ZS5sZW5ndGggPiAwO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24oZSwgdCkge1xuICAgIHJldHVybiBlW3Qua2V5XSA9IHQudmFsdWUsIGU7XG4gIH0sIHt9KTtcbn1cbnZhciBaciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhJDEgPSB5Xy5nZXRCYWdnYWdlKGUpO1xuICAgICAgaWYgKCEoIWEkMSB8fCBhKGUpKSkge1xuICAgICAgICB2YXIgaSA9IGVyKGEkMSkuZmlsdGVyKGZ1bmN0aW9uKF8pIHtcbiAgICAgICAgICByZXR1cm4gXy5sZW5ndGggPD0gS3I7XG4gICAgICAgIH0pLnNsaWNlKDAsIEZyKSwgbyA9IHJyKGkpO1xuICAgICAgICBvLmxlbmd0aCA+IDAgJiYgbi5zZXQodCwgbSwgbyk7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gbi5nZXQodCwgbSksIGkgPSBBcnJheS5pc0FycmF5KGEpID8gYS5qb2luKEkpIDogYTtcbiAgICAgIGlmICghaSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgbyA9IHt9O1xuICAgICAgaWYgKGkubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBfID0gaS5zcGxpdChJKTtcbiAgICAgIHJldHVybiBfLmZvckVhY2goZnVuY3Rpb24oRSkge1xuICAgICAgICB2YXIgVCA9IHcoRSk7XG4gICAgICAgIGlmIChUKSB7XG4gICAgICAgICAgdmFyIHMgPSB7IHZhbHVlOiBULnZhbHVlIH07XG4gICAgICAgICAgVC5tZXRhZGF0YSAmJiAocy5tZXRhZGF0YSA9IFQubWV0YWRhdGEpLCBvW1Qua2V5XSA9IHM7XG4gICAgICAgIH1cbiAgICAgIH0pLCBPYmplY3QuZW50cmllcyhvKS5sZW5ndGggPT09IDAgPyBlIDogeV8uc2V0QmFnZ2FnZShlLCB5Xy5jcmVhdGVCYWdnYWdlKG8pKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbbV07XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgJHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IGUubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgZTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCB0ciA9IGZ1bmN0aW9uKHIpIHtcbiAgdmFyIGUgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBlICYmIHJbZV0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChyKTtcbiAgaWYgKHIgJiYgdHlwZW9mIHIubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gciAmJiBuID49IHIubGVuZ3RoICYmIChyID0gdm9pZCAwKSwgeyB2YWx1ZTogciAmJiByW24rK10sIGRvbmU6ICFyIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGUgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBKciA9IGZ1bmN0aW9uKHIsIGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiByW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIHI7XG4gIHZhciBuID0gdC5jYWxsKHIpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChlID09PSB2b2lkIDAgfHwgZS0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbyA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFFyKHIkMSkge1xuICB2YXIgZSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIHIkMSAhPSBcIm9iamVjdFwiIHx8IHIkMSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSB0cihPYmplY3QuZW50cmllcyhyJDEpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gSnIoaS52YWx1ZSwgMiksIF8gPSBvWzBdLCBFID0gb1sxXTtcbiAgICAgIGlmICghbnIoXykpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUga2V5OiBcIiArIF8pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghYXIoRSkpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgXyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShFKSA/IG5bX10gPSBFLnNsaWNlKCkgOiBuW19dID0gRTtcbiAgICB9XG4gIH0gY2F0Y2ggKFQpIHtcbiAgICBlID0geyBlcnJvcjogVCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBucihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcInN0cmluZ1wiICYmIHIubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGFyKHIpIHtcbiAgcmV0dXJuIHIgPT0gbnVsbCA/IHRydWUgOiBBcnJheS5pc0FycmF5KHIpID8gcXIocikgOiBpcihyKTtcbn1cbmZ1bmN0aW9uIHFyKHIpIHtcbiAgdmFyIGUsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHRyKHIpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBpLnZhbHVlO1xuICAgICAgaWYgKG8gIT0gbnVsbCkge1xuICAgICAgICBpZiAoIW4pIHtcbiAgICAgICAgICBpZiAoaXIobykpIHtcbiAgICAgICAgICAgIG4gPSB0eXBlb2YgbztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvICE9PSBuKVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBlID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBpcihyKSB7XG4gIHN3aXRjaCAodHlwZW9mIHIpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBvcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIkMSkge1xuICAgIHIuZXJyb3Ioa3IociQxKSk7XG4gIH07XG59XG5mdW5jdGlvbiBrcihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcInN0cmluZ1wiID8gciA6IEpTT04uc3RyaW5naWZ5KHJlKHIpKTtcbn1cbmZ1bmN0aW9uIHJlKHIpIHtcbiAgZm9yICh2YXIgZSA9IHt9LCB0ID0gcjsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFlW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAoZVtuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiBlO1xufVxudmFyIF9yID0gb3IoKTtcbmZ1bmN0aW9uIGVlKHIpIHtcbiAgX3IgPSByO1xufVxuZnVuY3Rpb24gRXIocikge1xuICB0cnkge1xuICAgIF9yKHIpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIHY7XG4oZnVuY3Rpb24ocikge1xuICByLkFsd2F5c09mZiA9IFwiYWx3YXlzX29mZlwiLCByLkFsd2F5c09uID0gXCJhbHdheXNfb25cIiwgci5QYXJlbnRCYXNlZEFsd2F5c09mZiA9IFwicGFyZW50YmFzZWRfYWx3YXlzX29mZlwiLCByLlBhcmVudEJhc2VkQWx3YXlzT24gPSBcInBhcmVudGJhc2VkX2Fsd2F5c19vblwiLCByLlBhcmVudEJhc2VkVHJhY2VJZFJhdGlvID0gXCJwYXJlbnRiYXNlZF90cmFjZWlkcmF0aW9cIiwgci5UcmFjZUlkUmF0aW8gPSBcInRyYWNlaWRyYXRpb1wiO1xufSkodiB8fCAodiA9IHt9KSk7XG52YXIgdGUgPSBcIixcIiwgbmUgPSBbXCJPVEVMX1NES19ESVNBQkxFRFwiXTtcbmZ1bmN0aW9uIGFlKHIpIHtcbiAgcmV0dXJuIG5lLmluZGV4T2YocikgPiAtMTtcbn1cbnZhciBpZSA9IFtcbiAgXCJPVEVMX0JTUF9FWFBPUlRfVElNRU9VVFwiLFxuICBcIk9URUxfQlNQX01BWF9FWFBPUlRfQkFUQ0hfU0laRVwiLFxuICBcIk9URUxfQlNQX01BWF9RVUVVRV9TSVpFXCIsXG4gIFwiT1RFTF9CU1BfU0NIRURVTEVfREVMQVlcIixcbiAgXCJPVEVMX0JMUlBfRVhQT1JUX1RJTUVPVVRcIixcbiAgXCJPVEVMX0JMUlBfTUFYX0VYUE9SVF9CQVRDSF9TSVpFXCIsXG4gIFwiT1RFTF9CTFJQX01BWF9RVUVVRV9TSVpFXCIsXG4gIFwiT1RFTF9CTFJQX1NDSEVEVUxFX0RFTEFZXCIsXG4gIFwiT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9FVkVOVF9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0xJTktfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfUE9SVFwiXG5dO1xuZnVuY3Rpb24gb2Uocikge1xuICByZXR1cm4gaWUuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIF9lID0gW1xuICBcIk9URUxfTk9fUEFUQ0hfTU9EVUxFU1wiLFxuICBcIk9URUxfUFJPUEFHQVRPUlNcIixcbiAgXCJPVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTlwiXG5dO1xuZnVuY3Rpb24gRWUocikge1xuICByZXR1cm4gX2UuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIHAgPSAxIC8gMCwgZCA9IDEyOCwgVHIgPSAxMjgsIHVyID0gMTI4LCBWID0ge1xuICBPVEVMX1NES19ESVNBQkxFRDogZmFsc2UsXG4gIENPTlRBSU5FUl9OQU1FOiBcIlwiLFxuICBFQ1NfQ09OVEFJTkVSX01FVEFEQVRBX1VSSV9WNDogXCJcIixcbiAgRUNTX0NPTlRBSU5FUl9NRVRBREFUQV9VUkk6IFwiXCIsXG4gIEhPU1ROQU1FOiBcIlwiLFxuICBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVDogXCJcIixcbiAgTkFNRVNQQUNFOiBcIlwiLFxuICBPVEVMX0JTUF9FWFBPUlRfVElNRU9VVDogM2U0LFxuICBPVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkU6IDUxMixcbiAgT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkU6IDIwNDgsXG4gIE9URUxfQlNQX1NDSEVEVUxFX0RFTEFZOiA1ZTMsXG4gIE9URUxfQkxSUF9FWFBPUlRfVElNRU9VVDogM2U0LFxuICBPVEVMX0JMUlBfTUFYX0VYUE9SVF9CQVRDSF9TSVpFOiA1MTIsXG4gIE9URUxfQkxSUF9NQVhfUVVFVUVfU0laRTogMjA0OCxcbiAgT1RFTF9CTFJQX1NDSEVEVUxFX0RFTEFZOiA1ZTMsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0FHRU5UX0hPU1Q6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0FHRU5UX1BPUlQ6IDY4MzIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9QQVNTV09SRDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfVVNFUjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9IRUFERVJTOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9aSVBLSU5fRU5EUE9JTlQ6IFwiaHR0cDovL2xvY2FsaG9zdDo5NDExL2FwaS92Mi9zcGFuc1wiLFxuICBPVEVMX0xPR19MRVZFTDogb2UkMS5JTkZPLFxuICBPVEVMX05PX1BBVENIX01PRFVMRVM6IFtdLFxuICBPVEVMX1BST1BBR0FUT1JTOiBbXCJ0cmFjZWNvbnRleHRcIiwgXCJiYWdnYWdlXCJdLFxuICBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVM6IFwiXCIsXG4gIE9URUxfU0VSVklDRV9OQU1FOiBcIlwiLFxuICBPVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBPVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVQ6IDEyOCxcbiAgT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVQ6IDEyOCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQ6IFRyLFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUOiB1cixcbiAgT1RFTF9UUkFDRVNfRVhQT1JURVI6IFwiXCIsXG4gIE9URUxfVFJBQ0VTX1NBTVBMRVI6IHYuUGFyZW50QmFzZWRBbHdheXNPbixcbiAgT1RFTF9UUkFDRVNfU0FNUExFUl9BUkc6IFwiXCIsXG4gIE9URUxfTE9HU19FWFBPUlRFUjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RFTVBPUkFMSVRZX1BSRUZFUkVOQ0U6IFwiY3VtdWxhdGl2ZVwiLFxuICBPVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTjogW11cbn07XG5mdW5jdGlvbiBUZShyLCBlLCB0KSB7XG4gIGlmICghKHR5cGVvZiB0W3JdID4gXCJ1XCIpKSB7XG4gICAgdmFyIG4gPSBTdHJpbmcodFtyXSk7XG4gICAgZVtyXSA9IG4udG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKHIsIGUsIHQsIG4sIGEpIHtcbiAgaWYgKG4gPT09IHZvaWQgMCAmJiAobiA9IC0xIC8gMCksIGEgPT09IHZvaWQgMCAmJiAoYSA9IDEgLyAwKSwgdHlwZW9mIHRbcl0gPCBcInVcIikge1xuICAgIHZhciBpID0gTnVtYmVyKHRbcl0pO1xuICAgIGlzTmFOKGkpIHx8IChpIDwgbiA/IGVbcl0gPSBuIDogaSA+IGEgPyBlW3JdID0gYSA6IGVbcl0gPSBpKTtcbiAgfVxufVxuZnVuY3Rpb24gZmUociwgZSwgdCwgbikge1xuICBuID09PSB2b2lkIDAgJiYgKG4gPSB0ZSk7XG4gIHZhciBhID0gdFtyXTtcbiAgdHlwZW9mIGEgPT0gXCJzdHJpbmdcIiAmJiAoZVtyXSA9IGEuc3BsaXQobikubWFwKGZ1bmN0aW9uKGkpIHtcbiAgICByZXR1cm4gaS50cmltKCk7XG4gIH0pKTtcbn1cbnZhciBzZSA9IHtcbiAgQUxMOiBvZSQxLkFMTCxcbiAgVkVSQk9TRTogb2UkMS5WRVJCT1NFLFxuICBERUJVRzogb2UkMS5ERUJVRyxcbiAgSU5GTzogb2UkMS5JTkZPLFxuICBXQVJOOiBvZSQxLldBUk4sXG4gIEVSUk9SOiBvZSQxLkVSUk9SLFxuICBOT05FOiBvZSQxLk5PTkVcbn07XG5mdW5jdGlvbiBsZShyLCBlLCB0KSB7XG4gIHZhciBuID0gdFtyXTtcbiAgaWYgKHR5cGVvZiBuID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgYSA9IHNlW24udG9VcHBlckNhc2UoKV07XG4gICAgYSAhPSBudWxsICYmIChlW3JdID0gYSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGoocikge1xuICB2YXIgZSA9IHt9O1xuICBmb3IgKHZhciB0IGluIFYpIHtcbiAgICB2YXIgbiA9IHQ7XG4gICAgc3dpdGNoIChuKSB7XG4gICAgICBjYXNlIFwiT1RFTF9MT0dfTEVWRUxcIjpcbiAgICAgICAgbGUobiwgZSwgcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGFlKG4pKVxuICAgICAgICAgIFRlKG4sIGUsIHIpO1xuICAgICAgICBlbHNlIGlmIChvZShuKSlcbiAgICAgICAgICB1ZShuLCBlLCByKTtcbiAgICAgICAgZWxzZSBpZiAoRWUobikpXG4gICAgICAgICAgZmUobiwgZSwgcik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhID0gcltuXTtcbiAgICAgICAgICB0eXBlb2YgYSA8IFwidVwiICYmIGEgIT09IG51bGwgJiYgKGVbbl0gPSBTdHJpbmcoYSkpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlO1xufVxuZnVuY3Rpb24gT2UoKSB7XG4gIHZhciByID0gaihoXyk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBWLCByKTtcbn1cbmZ1bmN0aW9uIGNlKCkge1xuICByZXR1cm4gaihoXyk7XG59XG52YXIgUmUgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHBlID0gZnVuY3Rpb24ociwgZSwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSBlLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gZSkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwgMCwgbikpLCBpW25dID0gZVtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTtcbn07XG5mdW5jdGlvbiBkZShyKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBwZShbXSwgUmUoQSQxKHIpKSwgZmFsc2UpKSk7XG59XG52YXIgTGUgPSA4LCBBZSA9IDE2LCBQZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFkoQWUpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gWShMZSk7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9KSgpXG4pLCBSID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gWShyKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHIgKiAyOyB0KyspXG4gICAgICBSW3RdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIFJbdF0gPj0gNTggJiYgKFJbdF0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIFIuc2xpY2UoMCwgciAqIDIpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIFNlKHIpIHtcbn1cbnZhciBJZSA9IGZ1bmN0aW9uKHIpIHtcbiAgdmFyIGUgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBlICYmIHJbZV0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChyKTtcbiAgaWYgKHIgJiYgdHlwZW9mIHIubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gciAmJiBuID49IHIubGVuZ3RoICYmIChyID0gdm9pZCAwKSwgeyB2YWx1ZTogciAmJiByW24rK10sIGRvbmU6ICFyIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGUgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCB2ZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gciQxKGUpIHtcbiAgICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IHt9KTtcbiAgICAgIHZhciB0O1xuICAgICAgdGhpcy5fcHJvcGFnYXRvcnMgPSAodCA9IGUucHJvcGFnYXRvcnMpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBbXSwgdGhpcy5fZmllbGRzID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuX3Byb3BhZ2F0b3JzLm1hcChmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygbi5maWVsZHMgPT0gXCJmdW5jdGlvblwiID8gbi5maWVsZHMoKSA6IFtdO1xuICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgICAgcmV0dXJuIG4uY29uY2F0KGEpO1xuICAgICAgfSwgW10pKSk7XG4gICAgfVxuICAgIHJldHVybiByJDEucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhLCBpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IEllKHRoaXMuX3Byb3BhZ2F0b3JzKSwgXyA9IG8ubmV4dCgpOyAhXy5kb25lOyBfID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgRSA9IF8udmFsdWU7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEUuaW5qZWN0KGUsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIEUuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgVC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IFQgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgXyAmJiAhXy5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHIkMS5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgZSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCByJDE7XG4gIH0pKClcbiksIEIgPSBcIltfMC05YS16LSovXVwiLCB5ZSA9IFwiW2Etel1cIiArIEIgKyBcInswLDI1NX1cIiwgaGUgPSBcIlthLXowLTldXCIgKyBCICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBCICsgXCJ7MCwxM31cIiwgZ2UgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgeWUgKyBcInxcIiArIGhlICsgXCIpJFwiKSwgbWUgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIENlID0gLyx8PS87XG5mdW5jdGlvbiBOZShyKSB7XG4gIHJldHVybiBnZS50ZXN0KHIpO1xufVxuZnVuY3Rpb24gTWUocikge1xuICByZXR1cm4gbWUudGVzdChyKSAmJiAhQ2UudGVzdChyKTtcbn1cbnZhciB6ID0gMzIsIFVlID0gNTEyLCBXID0gXCIsXCIsIFogPSBcIj1cIiwgZnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSkge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIGUgJiYgdGhpcy5fcGFyc2UoZSk7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMoZSkgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSksIG4uX2ludGVybmFsU3RhdGUuc2V0KGUsIHQpLCBuO1xuICAgIH0sIHIucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKGUpLCB0O1xuICAgIH0sIHIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChlKTtcbiAgICB9LCByLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgWiArIGUuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKFcpO1xuICAgIH0sIHIucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGUubGVuZ3RoID4gVWUgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSBlLnNwbGl0KFcpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKFopO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIF8gPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgTmUobykgJiYgTWUoXykgJiYgdC5zZXQobywgXyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4geiAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIHopKSkpO1xuICAgIH0sIHIucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIHIucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSBuZXcgcigpO1xuICAgICAgcmV0dXJuIGUuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCBlO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEwgPSBcInRyYWNlcGFyZW50XCIsIEEgPSBcInRyYWNlc3RhdGVcIiwgQmUgPSBcIjAwXCIsIGJlID0gXCIoPyFmZilbXFxcXGRhLWZdezJ9XCIsIERlID0gXCIoPyFbMF17MzJ9KVtcXFxcZGEtZl17MzJ9XCIsIFhlID0gXCIoPyFbMF17MTZ9KVtcXFxcZGEtZl17MTZ9XCIsIEdlID0gXCJbXFxcXGRhLWZdezJ9XCIsIHdlID0gbmV3IFJlZ0V4cChcIl5cXFxccz8oXCIgKyBiZSArIFwiKS0oXCIgKyBEZSArIFwiKS0oXCIgKyBYZSArIFwiKS0oXCIgKyBHZSArIFwiKSgtLiopP1xcXFxzPyRcIik7XG5mdW5jdGlvbiBzcihyKSB7XG4gIHZhciBlID0gd2UuZXhlYyhyKTtcbiAgcmV0dXJuICFlIHx8IGVbMV0gPT09IFwiMDBcIiAmJiBlWzVdID8gbnVsbCA6IHtcbiAgICB0cmFjZUlkOiBlWzJdLFxuICAgIHNwYW5JZDogZVszXSxcbiAgICB0cmFjZUZsYWdzOiBwYXJzZUludChlWzRdLCAxNilcbiAgfTtcbn1cbnZhciBWZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhJDEgPSBqZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgaWYgKCEoIWEkMSB8fCBhKGUpIHx8ICFMbihhJDEpKSkge1xuICAgICAgICB2YXIgaSA9IEJlICsgXCItXCIgKyBhJDEudHJhY2VJZCArIFwiLVwiICsgYSQxLnNwYW5JZCArIFwiLTBcIiArIE51bWJlcihhJDEudHJhY2VGbGFncyB8fCB0ciQxLk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgTCwgaSksIGEkMS50cmFjZVN0YXRlICYmIG4uc2V0KHQsIEEsIGEkMS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBMKTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0gc3IoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgby5pc1JlbW90ZSA9IHRydWU7XG4gICAgICB2YXIgXyA9IG4uZ2V0KHQsIEEpO1xuICAgICAgaWYgKF8pIHtcbiAgICAgICAgdmFyIEUgPSBBcnJheS5pc0FycmF5KF8pID8gXy5qb2luKFwiLFwiKSA6IF87XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBmcih0eXBlb2YgRSA9PSBcInN0cmluZ1wiID8gRSA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gamUkMS5zZXRTcGFuQ29udGV4dChlLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbTCwgQV07XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgSCA9IGZzKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBiO1xuKGZ1bmN0aW9uKHIpIHtcbiAgci5IVFRQID0gXCJodHRwXCI7XG59KShiIHx8IChiID0ge30pKTtcbmZ1bmN0aW9uIGplKHIsIGUpIHtcbiAgcmV0dXJuIHIuc2V0VmFsdWUoSCwgZSk7XG59XG5mdW5jdGlvbiBIZShyKSB7XG4gIHJldHVybiByLmRlbGV0ZVZhbHVlKEgpO1xufVxuZnVuY3Rpb24geGUocikge1xuICByZXR1cm4gci5nZXRWYWx1ZShIKTtcbn1cbnZhciBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgUCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IGwuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBGZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB2YXIgdCwgbiwgYSwgaTtcbiAgICAgIHRoaXMuX3Jvb3QgPSBlLnJvb3QsIHRoaXMuX3Jvb3QgfHwgKEVyKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgUCgpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9ICh0ID0gZS5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogbmV3IFAoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gZS5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEQoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKGEgPSBlLmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IG5ldyBQKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gZS5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgRCgpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oZSwgdCwgbiwgYSwgaSwgbykge1xuICAgICAgdmFyIF8gPSBqZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgcmV0dXJuICFfIHx8ICFMbihfKSA/IHRoaXMuX3Jvb3Quc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy5pc1JlbW90ZSA/IF8udHJhY2VGbGFncyAmIHRyJDEuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiBfLnRyYWNlRmxhZ3MgJiB0ciQxLlNBTVBMRUQgPyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZShlLCB0LCBuLCBhLCBpLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiUGFyZW50QmFzZWR7cm9vdD1cIiArIHRoaXMuX3Jvb3QudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBLZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICBlID09PSB2b2lkIDAgJiYgKGUgPSAwKSwgdGhpcy5fcmF0aW8gPSBlLCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZShlKSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBScyh0KSAmJiB0aGlzLl9hY2N1bXVsYXRlKHQpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IGwuUkVDT1JEX0FORF9TQU1QTEVEIDogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgci5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgZSAhPSBcIm51bWJlclwiIHx8IGlzTmFOKGUpID8gMCA6IGUgPj0gMSA/IDEgOiBlIDw9IDAgPyAwIDogZTtcbiAgICB9LCByLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gMDsgbiA8IGUubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBhID0gbiAqIDgsIGkgPSBwYXJzZUludChlLnNsaWNlKGEsIGEgKyA4KSwgMTYpO1xuICAgICAgICB0ID0gKHQgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICAgIH0sIHI7XG4gIH0pKClcbiksIFllID0gXCJbb2JqZWN0IE9iamVjdF1cIiwgemUgPSBcIltvYmplY3QgTnVsbF1cIiwgV2UgPSBcIltvYmplY3QgVW5kZWZpbmVkXVwiLCBaZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwgbHIgPSBaZS50b1N0cmluZywgJGUgPSBsci5jYWxsKE9iamVjdCksIEplID0gUWUoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLCBPciA9IE9iamVjdC5wcm90b3R5cGUsIGNyID0gT3IuaGFzT3duUHJvcGVydHksIGYgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB2b2lkIDAsIFJyID0gT3IudG9TdHJpbmc7XG5mdW5jdGlvbiBRZShyLCBlKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIHIoZSh0KSk7XG4gIH07XG59XG5mdW5jdGlvbiAkKHIpIHtcbiAgaWYgKCFxZShyKSB8fCBrZShyKSAhPT0gWWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB2YXIgZSA9IEplKHIpO1xuICBpZiAoZSA9PT0gbnVsbClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgdmFyIHQgPSBjci5jYWxsKGUsIFwiY29uc3RydWN0b3JcIikgJiYgZS5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiB0ID09IFwiZnVuY3Rpb25cIiAmJiB0IGluc3RhbmNlb2YgdCAmJiBsci5jYWxsKHQpID09PSAkZTtcbn1cbmZ1bmN0aW9uIHFlKHIpIHtcbiAgcmV0dXJuIHIgIT0gbnVsbCAmJiB0eXBlb2YgciA9PSBcIm9iamVjdFwiO1xufVxuZnVuY3Rpb24ga2Uocikge1xuICByZXR1cm4gciA9PSBudWxsID8gciA9PT0gdm9pZCAwID8gV2UgOiB6ZSA6IGYgJiYgZiBpbiBPYmplY3QocikgPyBydChyKSA6IGV0KHIpO1xufVxuZnVuY3Rpb24gcnQocikge1xuICB2YXIgZSA9IGNyLmNhbGwociwgZiksIHQgPSByW2ZdLCBuID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgcltmXSA9IHZvaWQgMCwgbiA9ICEwO1xuICB9IGNhdGNoIHtcbiAgfVxuICB2YXIgYSA9IFJyLmNhbGwocik7XG4gIHJldHVybiBuICYmIChlID8gcltmXSA9IHQgOiBkZWxldGUgcltmXSksIGE7XG59XG5mdW5jdGlvbiBldChyKSB7XG4gIHJldHVybiBSci5jYWxsKHIpO1xufVxudmFyIHR0ID0gMjA7XG5mdW5jdGlvbiBudCgpIHtcbiAgZm9yICh2YXIgciA9IFtdLCBlID0gMDsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKylcbiAgICByW2VdID0gYXJndW1lbnRzW2VdO1xuICBmb3IgKHZhciB0ID0gci5zaGlmdCgpLCBuID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7IHIubGVuZ3RoID4gMDsgKVxuICAgIHQgPSBwcih0LCByLnNoaWZ0KCksIDAsIG4pO1xuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIEMocikge1xuICByZXR1cm4geShyKSA/IHIuc2xpY2UoKSA6IHI7XG59XG5mdW5jdGlvbiBwcihyLCBlLCB0LCBuKSB7XG4gIHQgPT09IHZvaWQgMCAmJiAodCA9IDApO1xuICB2YXIgYTtcbiAgaWYgKCEodCA+IHR0KSkge1xuICAgIGlmICh0KyssIFMocikgfHwgUyhlKSB8fCBkcihlKSlcbiAgICAgIGEgPSBDKGUpO1xuICAgIGVsc2UgaWYgKHkocikpIHtcbiAgICAgIGlmIChhID0gci5zbGljZSgpLCB5KGUpKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbyA9IGUubGVuZ3RoOyBpIDwgbzsgaSsrKVxuICAgICAgICAgIGEucHVzaChDKGVbaV0pKTtcbiAgICAgIGVsc2UgaWYgKE8oZSkpXG4gICAgICAgIGZvciAodmFyIF8gPSBPYmplY3Qua2V5cyhlKSwgaSA9IDAsIG8gPSBfLmxlbmd0aDsgaSA8IG87IGkrKykge1xuICAgICAgICAgIHZhciBFID0gX1tpXTtcbiAgICAgICAgICBhW0VdID0gQyhlW0VdKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoTyhyKSlcbiAgICAgIGlmIChPKGUpKSB7XG4gICAgICAgIGlmICghYXQociwgZSkpXG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIGEgPSBPYmplY3QuYXNzaWduKHt9LCByKTtcbiAgICAgICAgZm9yICh2YXIgXyA9IE9iamVjdC5rZXlzKGUpLCBpID0gMCwgbyA9IF8ubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIEUgPSBfW2ldLCBUID0gZVtFXTtcbiAgICAgICAgICBpZiAoUyhUKSlcbiAgICAgICAgICAgIHR5cGVvZiBUID4gXCJ1XCIgPyBkZWxldGUgYVtFXSA6IGFbRV0gPSBUO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHMgPSBhW0VdLCBoID0gVDtcbiAgICAgICAgICAgIGlmIChKKHIsIEUsIG4pIHx8IEooZSwgRSwgbikpXG4gICAgICAgICAgICAgIGRlbGV0ZSBhW0VdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChPKHMpICYmIE8oaCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IG4uZ2V0KHMpIHx8IFtdLCBGID0gbi5nZXQoaCkgfHwgW107XG4gICAgICAgICAgICAgICAgeC5wdXNoKHsgb2JqOiByLCBrZXk6IEUgfSksIEYucHVzaCh7IG9iajogZSwga2V5OiBFIH0pLCBuLnNldChzLCB4KSwgbi5zZXQoaCwgRik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYVtFXSA9IHByKGFbRV0sIFQsIHQsIG4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlXG4gICAgICAgIGEgPSBlO1xuICAgIHJldHVybiBhO1xuICB9XG59XG5mdW5jdGlvbiBKKHIsIGUsIHQpIHtcbiAgZm9yICh2YXIgbiA9IHQuZ2V0KHJbZV0pIHx8IFtdLCBhID0gMCwgaSA9IG4ubGVuZ3RoOyBhIDwgaTsgYSsrKSB7XG4gICAgdmFyIG8gPSBuW2FdO1xuICAgIGlmIChvLmtleSA9PT0gZSAmJiBvLm9iaiA9PT0gcilcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHkocikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShyKTtcbn1cbmZ1bmN0aW9uIGRyKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIE8ocikge1xuICByZXR1cm4gIVMocikgJiYgIXkocikgJiYgIWRyKHIpICYmIHR5cGVvZiByID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBTKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHIgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgciA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgciA+IFwidVwiIHx8IHIgaW5zdGFuY2VvZiBEYXRlIHx8IHIgaW5zdGFuY2VvZiBSZWdFeHAgfHwgciA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGF0KHIsIGUpIHtcbiAgcmV0dXJuICEoISQocikgfHwgISQoZSkpO1xufVxudmFyIGl0ID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7XG4gICAgcmV0dXJuIHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBhKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IGE7XG4gICAgfSB8fCBmdW5jdGlvbihuLCBhKSB7XG4gICAgICBmb3IgKHZhciBpIGluIGEpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBpKSAmJiAobltpXSA9IGFbaV0pO1xuICAgIH0sIHIoZSwgdCk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihlLCB0KSB7XG4gICAgaWYgKHR5cGVvZiB0ICE9IFwiZnVuY3Rpb25cIiAmJiB0ICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcodCkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIHIoZSwgdCk7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICAgIH1cbiAgICBlLnByb3RvdHlwZSA9IHQgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSkoKSwgTHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKHIpIHtcbiAgICBpdChlLCByKTtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHZhciBuID0gci5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIGUucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0pKEVycm9yKVxuKTtcbmZ1bmN0aW9uIG90KHIsIGUpIHtcbiAgdmFyIHQsIG4gPSBuZXcgUHJvbWlzZShmdW5jdGlvbihpLCBvKSB7XG4gICAgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBvKG5ldyBMcihcIk9wZXJhdGlvbiB0aW1lZCBvdXQuXCIpKTtcbiAgICB9LCBlKTtcbiAgfSk7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW3IsIG5dKS50aGVuKGZ1bmN0aW9uKGEpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHQpLCBhO1xuICB9LCBmdW5jdGlvbihhKSB7XG4gICAgdGhyb3cgY2xlYXJUaW1lb3V0KHQpLCBhO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF90KHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygci5fX29yaWdpbmFsID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygci5fX3Vud3JhcCA9PSBcImZ1bmN0aW9uXCIgJiYgci5fX3dyYXBwZWQgPT09IHRydWU7XG59XG52YXIgRXQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICBlLl9yZXNvbHZlID0gdCwgZS5fcmVqZWN0ID0gbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUoZSk7XG4gICAgfSwgci5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdGhpcy5fcmVqZWN0KGUpO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIFR0ID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCB1dCA9IGZ1bmN0aW9uKHIsIGUsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gZS5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIGUpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsIDAsIG4pKSwgaVtuXSA9IGVbbl0pO1xuICByZXR1cm4gci5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSk7XG59LCBmdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlLCB0KSB7XG4gICAgICB0aGlzLl9jYWxsYmFjayA9IGUsIHRoaXMuX3RoYXQgPSB0LCB0aGlzLl9pc0NhbGxlZCA9IGZhbHNlLCB0aGlzLl9kZWZlcnJlZCA9IG5ldyBFdCgpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcImlzQ2FsbGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NhbGxlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoci5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWQucHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCByLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBlLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgoZSA9IHRoaXMuX2NhbGxiYWNrKS5jYWxsLmFwcGx5KGUsIHV0KFt0aGlzLl90aGF0XSwgVHQobiksICExKSkpLnRoZW4oZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlc29sdmUoaSk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgIHRoaXMuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgfSwgcjtcbiAgfSkoKVxuKTtcbmZ1bmN0aW9uIHN0KHIsIGUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICB4ZSQxLndpdGgodSh4ZSQxLmFjdGl2ZSgpKSwgZnVuY3Rpb24oKSB7XG4gICAgICByLmV4cG9ydChlLCBmdW5jdGlvbihuKSB7XG4gICAgICAgIHQobik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG52YXIgbHQgPSB7XG4gIGdldEtleVBhaXJzOiBlcixcbiAgc2VyaWFsaXplS2V5UGFpcnM6IHJyLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogV3IsXG4gIHBhcnNlUGFpcktleVZhbHVlOiB3XG59LCBPdCA9IHtcbiAgX2V4cG9ydDogc3Rcbn07XG5jb25zdCBQdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IEQsXG4gIEFsd2F5c09uU2FtcGxlcjogUCxcbiAgQW5jaG9yZWRDbG9jazogJHIsXG4gIEJpbmRPbmNlRnV0dXJlOiBmdCxcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogdmUsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBERUZBVUxUX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIERFRkFVTFRfRU5WSVJPTk1FTlQ6IFYsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBUcixcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogdXIsXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhJDE7XG4gIH0sXG4gIFBhcmVudEJhc2VkU2FtcGxlcjogRmUsXG4gIGdldCBSUENUeXBlKCkge1xuICAgIHJldHVybiBiO1xuICB9LFxuICBSYW5kb21JZEdlbmVyYXRvcjogUGUsXG4gIFNES19JTkZPOiBUQSxcbiAgVFJBQ0VfUEFSRU5UX0hFQURFUjogTCxcbiAgVFJBQ0VfU1RBVEVfSEVBREVSOiBBLFxuICBUaW1lb3V0RXJyb3I6IExyLFxuICBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXI6IEtlLFxuICBUcmFjZVN0YXRlOiBmcixcbiAgZ2V0IFRyYWNlc1NhbXBsZXJWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHY7XG4gIH0sXG4gIFZFUlNJT046IHRTLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogWnIsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IFZlLFxuICBfZ2xvYmFsVGhpczogaF8sXG4gIGFkZEhyVGltZXM6IGJfLFxuICBiYWdnYWdlVXRpbHM6IGx0LFxuICBjYWxsV2l0aFRpbWVvdXQ6IG90LFxuICBkZWxldGVSUENNZXRhZGF0YTogSGUsXG4gIGdldEVudjogT2UsXG4gIGdldEVudldpdGhvdXREZWZhdWx0czogY2UsXG4gIGdldFJQQ01ldGFkYXRhOiB4ZSxcbiAgZ2V0VGltZU9yaWdpbjogcl8sXG4gIGdsb2JhbEVycm9ySGFuZGxlcjogRXIsXG4gIGhleFRvQmFzZTY0OiBkZSxcbiAgaGV4VG9CaW5hcnk6IEEkMSxcbiAgaHJUaW1lOiBwXyxcbiAgaHJUaW1lRHVyYXRpb246IFhlJDEsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBqZSQyLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczoga2UkMSxcbiAgaHJUaW1lVG9OYW5vc2Vjb25kczogeGUkMixcbiAgaHJUaW1lVG9UaW1lU3RhbXA6IFFlJDEsXG4gIGludGVybmFsOiBPdCxcbiAgaXNBdHRyaWJ1dGVLZXk6IG5yLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBhcixcbiAgaXNUaW1lSW5wdXQ6IHFlJDEsXG4gIGlzVGltZUlucHV0SHJUaW1lOiBOXyxcbiAgaXNUcmFjaW5nU3VwcHJlc3NlZDogYSxcbiAgaXNVcmxJZ25vcmVkOiBaZSQxLFxuICBpc1dyYXBwZWQ6IF90LFxuICBsb2dnaW5nRXJyb3JIYW5kbGVyOiBvcixcbiAgbWVyZ2U6IG50LFxuICBtaWxsaXNUb0hyVGltZTogTyQxLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IGosXG4gIHBhcnNlVHJhY2VQYXJlbnQ6IHNyLFxuICBzYW5pdGl6ZUF0dHJpYnV0ZXM6IFFyLFxuICBzZXRHbG9iYWxFcnJvckhhbmRsZXI6IGVlLFxuICBzZXRSUENNZXRhZGF0YTogamUsXG4gIHN1cHByZXNzVHJhY2luZzogdSxcbiAgdGltZUlucHV0VG9IclRpbWU6IHdlJDEsXG4gIHVucmVmVGltZXI6IFNlLFxuICB1bnN1cHByZXNzVHJhY2luZzogcyxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEVyIGFzIEUsIE9lIGFzIE8sIFB0IGFzIFAsIFFyIGFzIFEsIFNlIGFzIFMsIFZlIGFzIFYsIFpyIGFzIFosIGFyIGFzIGEsIHYgYXMgYiwgY2UgYXMgYywgZCwgT3QgYXMgZSwgZnQgYXMgZiwgbCwgbnQgYXMgbiwgcCwgdmUgYXMgdiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxHQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQUssS0FBS0MsSUFBSyxLQUFLQyxJQUFNLE1BQU1DLElBQUksTUFBTUMsSUFBTSxNQUFNQyxJQUFNLEtBQUtDLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDN00sU0FBUyxLQUFBQyxHQUFHLEtBQUFDLEdBQUcsS0FBQUMsVUFBUztBQUN4QixTQUFTLEtBQUFDLFNBQVM7QUFDbEIsU0FBUyxLQUFLQyxHQUFLLEtBQUtDLFVBQVc7QUFDbkMsU0FBUyxLQUFLQyxHQUFNLEtBQUtDLEdBQU0sS0FBS0MsR0FBSSxLQUFLQyxHQUFNLEtBQUtDLEdBQU0sS0FBS0MsSUFBSSxLQUFLQyxVQUFVO0FBQ3RGLFNBQVMsTUFBTUMsSUFBSSxNQUFNQyxVQUFVO0FBRW5DLElBQUlDO0FBQUEsQ0FDSCxTQUFTWixHQUFHO0FBQ1gsRUFBQUEsRUFBRUEsRUFBRSxhQUFhLENBQUMsSUFBSSxjQUFjQSxFQUFFQSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVVBLEVBQUVBLEVBQUUscUJBQXFCLENBQUMsSUFBSTtBQUNoRyxHQUFHWSxNQUFNQSxJQUFJLENB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aUJBQWlCM0Y7QUFBQSxFQUNqQixtQkFBbUJmO0FBQUEsRUFDbkIsWUFBWW9GO0FBQUEsRUFDWixtQkFBbUJwRTtBQUFBLEVBQ25CLFlBQVlqQjtBQUNkLEdBQUcsT0FBTyxhQUFhLEVBQUUsT0FBTyxTQUFTLENBQUMsQ0FBQzsiLAogICJuYW1lcyI6IFsieV8iLCAiaF8iLCAiZl8iLCAiZ18iLCAid2UkMSIsICJSJDEiLCAiTyQxIiwgIlplJDEiLCAiTl8iLCAicWUkMSIsICJRZSQxIiwgInhlJDIiLCAia2UkMSIsICJqZSQyIiwgIlhlJDEiLCAicF8iLCAicl8iLCAiYl8iLCAiYSIsICJ1IiwgInMiLCAiciIsICJBJDEiLCAiYSQxIiwgIm9lJDEiLCAiamUkMSIsICJMbiIsICJ0ciQxIiwgInhlJDEiLCAiZnMiLCAiUnMiLCAidFMiLCAiVEEiLCAibCIsICJ4ciIsICJVIiwgIm0iLCAiRnIiLCAiS3IiLCAiWXIiLCAienIiLCAidCIsICJuIiwgImkiLCAibyIsICJyciIsICJlciIsICJ3IiwgIldyIiwgIlpyIiwgIiRyIiwgInRyIiwgIkpyIiwgIlFyIiwgInIkMSIsICJuciIsICJhciIsICJxciIsICJpciIsICJvciIsICJrciIsICJyZSIsICJfciIsICJFciIsICJ2IiwgInRlIiwgImFlIiwgImllIiwgIm9lIiwgInAiLCAiZCIsICJUciIsICJ1ciIsICJWIiwgImZlIiwgInNlIiwgImxlIiwgImoiLCAiT2UiLCAiY2UiLCAiUmUiLCAicGUiLCAiZGUiLCAiTGUiLCAiQWUiLCAiUGUiLCAiWSIsICJSIiwgIlNlIiwgInZlIiwgIkIiLCAieWUiLCAiaGUiLCAiZ2UiLCAibWUiLCAieiIsICJVZSIsICJXIiwgIloiLCAiZnIiLCAiTCIsICJBIiwgIkJlIiwgImJlIiwgIlhlIiwgIkdlIiwgIndlIiwgInNyIiwgIlZlIiwgImIiLCAiamUiLCAieGUiLCAiUCIsICJZZSIsICJ6ZSIsICJXZSIsICJaZSIsICJsciIsICIkZSIsICJKZSIsICJRZSIsICJPciIsICJjciIsICJmIiwgIlJyIiwgIiQiLCAicWUiLCAia2UiLCAicnQiLCAiZXQiLCAidHQiLCAibnQiLCAicHIiLCAieSIsICJTIiwgImRyIiwgIk8iLCAiYXQiLCAiaCIsICJKIiwgIngiLCAiaXQiLCAiTHIiLCAib3QiLCAiX3QiLCAiRXQiLCAiVHQiLCAidXQiLCAiZnQiLCAic3QiLCAibHQiLCAiT3QiLCAiUHQiXQp9Cg==
1012
+ //# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQnhmb2RMNkItIX57MDBpfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGggYXMgaF8sIGRDIGFzIGZfLCBnIGFzIGdfLCB3IGFzIHdlJDEsIGRHIGFzIFIkMSwgTyBhcyBPJDEsIGEgYXMgWmUkMSwgZEggYXMgTl8sIGRFIGFzIHFlJDEsIGRLIGFzIFFlJDEsIGMgYXMgeGUkMSwgZEwgYXMga2UkMSwgZEQgYXMgamUkMiwgZEYgYXMgWGUkMSwgcCBhcyBwXywgZEogYXMgcl8sIGRJIGFzIGJfIH0gZnJvbSAnLi91cmwtQ0h6alZKYk8tIX57MDBifX4uanMnO1xuaW1wb3J0IHsgYSwgdSwgcyB9IGZyb20gJy4vc3VwcHJlc3MtdHJhY2luZy1ENVQ2Z2ROaC0hfnswMG59fi5qcyc7XG5pbXBvcnQgeyByIH0gZnJvbSAnLi9kaWFnLWFwaS1EUXBMeFFVRi0hfnswMGF9fi5qcyc7XG5pbXBvcnQgeyBBIGFzIEEkMSwgYSBhcyBhJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CYWNzcXdLQS0hfnswMGx9fi5qcyc7XG5pbXBvcnQgeyBvIGFzIG9lJDEsIGogYXMgamUkMSwgTCBhcyBMbiwgciBhcyByciQxLCBEIGFzIERlJDEsIGYgYXMgZnMsIFIgYXMgUnMgfSBmcm9tICcuL2luZGV4LSF+ezAwN31+LmpzJztcbmltcG9ydCB7IGJtIGFzIHRTLCBibCBhcyBUQSB9IGZyb20gJy4vc2RrLWluZm8tQ2h1S3U4elctIX57MDBqfX4uanMnO1xuXG52YXIgbDtcbihmdW5jdGlvbihyKSB7XG4gIHJbci5OT1RfUkVDT1JEID0gMF0gPSBcIk5PVF9SRUNPUkRcIiwgcltyLlJFQ09SRCA9IDFdID0gXCJSRUNPUkRcIiwgcltyLlJFQ09SRF9BTkRfU0FNUExFRCA9IDJdID0gXCJSRUNPUkRfQU5EX1NBTVBMRURcIjtcbn0pKGwgfHwgKGwgPSB7fSkpO1xudmFyIHhyID0gXCI9XCIsIFUgPSBcIjtcIiwgSSA9IFwiLFwiLCBtID0gXCJiYWdnYWdlXCIsIEZyID0gMTgwLCBLciA9IDQwOTYsIFlyID0gODE5MiwgenIgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBycihyKSB7XG4gIHJldHVybiByLnJlZHVjZShmdW5jdGlvbihlLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgZSArIChlICE9PSBcIlwiID8gSSA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBZciA/IGUgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIGVyKHIpIHtcbiAgcmV0dXJuIHIuZ2V0QWxsRW50cmllcygpLm1hcChmdW5jdGlvbihlKSB7XG4gICAgdmFyIHQgPSB6cihlLCAyKSwgbiA9IHRbMF0sIGEgPSB0WzFdLCBpID0gZW5jb2RlVVJJQ29tcG9uZW50KG4pICsgXCI9XCIgKyBlbmNvZGVVUklDb21wb25lbnQoYS52YWx1ZSk7XG4gICAgcmV0dXJuIGEubWV0YWRhdGEgIT09IHZvaWQgMCAmJiAoaSArPSBVICsgYS5tZXRhZGF0YS50b1N0cmluZygpKSwgaTtcbiAgfSk7XG59XG5mdW5jdGlvbiB3KHIpIHtcbiAgdmFyIGUgPSByLnNwbGl0KFUpO1xuICBpZiAoIShlLmxlbmd0aCA8PSAwKSkge1xuICAgIHZhciB0ID0gZS5zaGlmdCgpO1xuICAgIGlmICh0KSB7XG4gICAgICB2YXIgbiA9IHQuaW5kZXhPZih4cik7XG4gICAgICBpZiAoIShuIDw9IDApKSB7XG4gICAgICAgIHZhciBhID0gZGVjb2RlVVJJQ29tcG9uZW50KHQuc3Vic3RyaW5nKDAsIG4pLnRyaW0oKSksIGkgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcobiArIDEpLnRyaW0oKSksIG87XG4gICAgICAgIHJldHVybiBlLmxlbmd0aCA+IDAgJiYgKG8gPSBmXyhlLmpvaW4oVSkpKSwgeyBrZXk6IGEsIHZhbHVlOiBpLCBtZXRhZGF0YTogbyB9O1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gV3Iocikge1xuICByZXR1cm4gdHlwZW9mIHIgIT0gXCJzdHJpbmdcIiB8fCByLmxlbmd0aCA9PT0gMCA/IHt9IDogci5zcGxpdChJKS5tYXAoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiB3KGUpO1xuICB9KS5maWx0ZXIoZnVuY3Rpb24oZSkge1xuICAgIHJldHVybiBlICE9PSB2b2lkIDAgJiYgZS52YWx1ZS5sZW5ndGggPiAwO1xuICB9KS5yZWR1Y2UoZnVuY3Rpb24oZSwgdCkge1xuICAgIHJldHVybiBlW3Qua2V5XSA9IHQudmFsdWUsIGU7XG4gIH0sIHt9KTtcbn1cbnZhciBaciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhJDEgPSB5Xy5nZXRCYWdnYWdlKGUpO1xuICAgICAgaWYgKCEoIWEkMSB8fCBhKGUpKSkge1xuICAgICAgICB2YXIgaSA9IGVyKGEkMSkuZmlsdGVyKGZ1bmN0aW9uKF8pIHtcbiAgICAgICAgICByZXR1cm4gXy5sZW5ndGggPD0gS3I7XG4gICAgICAgIH0pLnNsaWNlKDAsIEZyKSwgbyA9IHJyKGkpO1xuICAgICAgICBvLmxlbmd0aCA+IDAgJiYgbi5zZXQodCwgbSwgbyk7XG4gICAgICB9XG4gICAgfSwgci5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhID0gbi5nZXQodCwgbSksIGkgPSBBcnJheS5pc0FycmF5KGEpID8gYS5qb2luKEkpIDogYTtcbiAgICAgIGlmICghaSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgbyA9IHt9O1xuICAgICAgaWYgKGkubGVuZ3RoID09PSAwKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBfID0gaS5zcGxpdChJKTtcbiAgICAgIHJldHVybiBfLmZvckVhY2goZnVuY3Rpb24oRSkge1xuICAgICAgICB2YXIgVCA9IHcoRSk7XG4gICAgICAgIGlmIChUKSB7XG4gICAgICAgICAgdmFyIHMgPSB7IHZhbHVlOiBULnZhbHVlIH07XG4gICAgICAgICAgVC5tZXRhZGF0YSAmJiAocy5tZXRhZGF0YSA9IFQubWV0YWRhdGEpLCBvW1Qua2V5XSA9IHM7XG4gICAgICAgIH1cbiAgICAgIH0pLCBPYmplY3QuZW50cmllcyhvKS5sZW5ndGggPT09IDAgPyBlIDogeV8uc2V0QmFnZ2FnZShlLCB5Xy5jcmVhdGVCYWdnYWdlKG8pKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbbV07XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgJHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IGUubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgZTtcbiAgICB9LCByO1xuICB9KSgpXG4pLCB0ciA9IGZ1bmN0aW9uKHIpIHtcbiAgdmFyIGUgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBlICYmIHJbZV0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChyKTtcbiAgaWYgKHIgJiYgdHlwZW9mIHIubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gciAmJiBuID49IHIubGVuZ3RoICYmIChyID0gdm9pZCAwKSwgeyB2YWx1ZTogciAmJiByW24rK10sIGRvbmU6ICFyIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGUgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCBKciA9IGZ1bmN0aW9uKHIsIGUpIHtcbiAgdmFyIHQgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiByW1N5bWJvbC5pdGVyYXRvcl07XG4gIGlmICghdCkgcmV0dXJuIHI7XG4gIHZhciBuID0gdC5jYWxsKHIpLCBhLCBpID0gW10sIG87XG4gIHRyeSB7XG4gICAgZm9yICg7IChlID09PSB2b2lkIDAgfHwgZS0tID4gMCkgJiYgIShhID0gbi5uZXh0KCkpLmRvbmU7ICkgaS5wdXNoKGEudmFsdWUpO1xuICB9IGNhdGNoIChfKSB7XG4gICAgbyA9IHsgZXJyb3I6IF8gfTtcbiAgfSBmaW5hbGx5IHtcbiAgICB0cnkge1xuICAgICAgYSAmJiAhYS5kb25lICYmICh0ID0gbi5yZXR1cm4pICYmIHQuY2FsbChuKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaWYgKG8pIHRocm93IG8uZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBpO1xufTtcbmZ1bmN0aW9uIFFyKHIkMSkge1xuICB2YXIgZSwgdCwgbiA9IHt9O1xuICBpZiAodHlwZW9mIHIkMSAhPSBcIm9iamVjdFwiIHx8IHIkMSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSB0cihPYmplY3QuZW50cmllcyhyJDEpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gSnIoaS52YWx1ZSwgMiksIF8gPSBvWzBdLCBFID0gb1sxXTtcbiAgICAgIGlmICghbnIoXykpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUga2V5OiBcIiArIF8pO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICghYXIoRSkpIHtcbiAgICAgICAgci53YXJuKFwiSW52YWxpZCBhdHRyaWJ1dGUgdmFsdWUgc2V0IGZvciBrZXk6IFwiICsgXyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgQXJyYXkuaXNBcnJheShFKSA/IG5bX10gPSBFLnNsaWNlKCkgOiBuW19dID0gRTtcbiAgICB9XG4gIH0gY2F0Y2ggKFQpIHtcbiAgICBlID0geyBlcnJvcjogVCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG47XG59XG5mdW5jdGlvbiBucihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcInN0cmluZ1wiICYmIHIubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIGFyKHIpIHtcbiAgcmV0dXJuIHIgPT0gbnVsbCA/IHRydWUgOiBBcnJheS5pc0FycmF5KHIpID8gcXIocikgOiBpcihyKTtcbn1cbmZ1bmN0aW9uIHFyKHIpIHtcbiAgdmFyIGUsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHRyKHIpLCBpID0gYS5uZXh0KCk7ICFpLmRvbmU7IGkgPSBhLm5leHQoKSkge1xuICAgICAgdmFyIG8gPSBpLnZhbHVlO1xuICAgICAgaWYgKG8gIT0gbnVsbCkge1xuICAgICAgICBpZiAoIW4pIHtcbiAgICAgICAgICBpZiAoaXIobykpIHtcbiAgICAgICAgICAgIG4gPSB0eXBlb2YgbztcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiBvICE9PSBuKVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBlID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAoZSkgdGhyb3cgZS5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5mdW5jdGlvbiBpcihyKSB7XG4gIHN3aXRjaCAodHlwZW9mIHIpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5mdW5jdGlvbiBvcigpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIkMSkge1xuICAgIHIuZXJyb3Ioa3IociQxKSk7XG4gIH07XG59XG5mdW5jdGlvbiBrcihyKSB7XG4gIHJldHVybiB0eXBlb2YgciA9PSBcInN0cmluZ1wiID8gciA6IEpTT04uc3RyaW5naWZ5KHJlKHIpKTtcbn1cbmZ1bmN0aW9uIHJlKHIpIHtcbiAgZm9yICh2YXIgZSA9IHt9LCB0ID0gcjsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFlW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAoZVtuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiBlO1xufVxudmFyIF9yID0gb3IoKTtcbmZ1bmN0aW9uIGVlKHIpIHtcbiAgX3IgPSByO1xufVxuZnVuY3Rpb24gRXIocikge1xuICB0cnkge1xuICAgIF9yKHIpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIHY7XG4oZnVuY3Rpb24ocikge1xuICByLkFsd2F5c09mZiA9IFwiYWx3YXlzX29mZlwiLCByLkFsd2F5c09uID0gXCJhbHdheXNfb25cIiwgci5QYXJlbnRCYXNlZEFsd2F5c09mZiA9IFwicGFyZW50YmFzZWRfYWx3YXlzX29mZlwiLCByLlBhcmVudEJhc2VkQWx3YXlzT24gPSBcInBhcmVudGJhc2VkX2Fsd2F5c19vblwiLCByLlBhcmVudEJhc2VkVHJhY2VJZFJhdGlvID0gXCJwYXJlbnRiYXNlZF90cmFjZWlkcmF0aW9cIiwgci5UcmFjZUlkUmF0aW8gPSBcInRyYWNlaWRyYXRpb1wiO1xufSkodiB8fCAodiA9IHt9KSk7XG52YXIgdGUgPSBcIixcIiwgbmUgPSBbXCJPVEVMX1NES19ESVNBQkxFRFwiXTtcbmZ1bmN0aW9uIGFlKHIpIHtcbiAgcmV0dXJuIG5lLmluZGV4T2YocikgPiAtMTtcbn1cbnZhciBpZSA9IFtcbiAgXCJPVEVMX0JTUF9FWFBPUlRfVElNRU9VVFwiLFxuICBcIk9URUxfQlNQX01BWF9FWFBPUlRfQkFUQ0hfU0laRVwiLFxuICBcIk9URUxfQlNQX01BWF9RVUVVRV9TSVpFXCIsXG4gIFwiT1RFTF9CU1BfU0NIRURVTEVfREVMQVlcIixcbiAgXCJPVEVMX0JMUlBfRVhQT1JUX1RJTUVPVVRcIixcbiAgXCJPVEVMX0JMUlBfTUFYX0VYUE9SVF9CQVRDSF9TSVpFXCIsXG4gIFwiT1RFTF9CTFJQX01BWF9RVUVVRV9TSVpFXCIsXG4gIFwiT1RFTF9CTFJQX1NDSEVEVUxFX0RFTEFZXCIsXG4gIFwiT1RFTF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX0xPR1JFQ09SRF9BVFRSSUJVVEVfVkFMVUVfTEVOR1RIX0xJTUlUXCIsXG4gIFwiT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0VWRU5UX0NPVU5UX0xJTUlUXCIsXG4gIFwiT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9FVkVOVF9DT1VOVF9MSU1JVFwiLFxuICBcIk9URUxfU1BBTl9BVFRSSUJVVEVfUEVSX0xJTktfQ09VTlRfTElNSVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfVElNRU9VVFwiLFxuICBcIk9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RJTUVPVVRcIixcbiAgXCJPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19USU1FT1VUXCIsXG4gIFwiT1RFTF9FWFBPUlRFUl9KQUVHRVJfQUdFTlRfUE9SVFwiXG5dO1xuZnVuY3Rpb24gb2Uocikge1xuICByZXR1cm4gaWUuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIF9lID0gW1xuICBcIk9URUxfTk9fUEFUQ0hfTU9EVUxFU1wiLFxuICBcIk9URUxfUFJPUEFHQVRPUlNcIixcbiAgXCJPVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTlwiXG5dO1xuZnVuY3Rpb24gRWUocikge1xuICByZXR1cm4gX2UuaW5kZXhPZihyKSA+IC0xO1xufVxudmFyIHAgPSAxIC8gMCwgZCA9IDEyOCwgVHIgPSAxMjgsIHVyID0gMTI4LCBWID0ge1xuICBPVEVMX1NES19ESVNBQkxFRDogZmFsc2UsXG4gIENPTlRBSU5FUl9OQU1FOiBcIlwiLFxuICBFQ1NfQ09OVEFJTkVSX01FVEFEQVRBX1VSSV9WNDogXCJcIixcbiAgRUNTX0NPTlRBSU5FUl9NRVRBREFUQV9VUkk6IFwiXCIsXG4gIEhPU1ROQU1FOiBcIlwiLFxuICBLVUJFUk5FVEVTX1NFUlZJQ0VfSE9TVDogXCJcIixcbiAgTkFNRVNQQUNFOiBcIlwiLFxuICBPVEVMX0JTUF9FWFBPUlRfVElNRU9VVDogM2U0LFxuICBPVEVMX0JTUF9NQVhfRVhQT1JUX0JBVENIX1NJWkU6IDUxMixcbiAgT1RFTF9CU1BfTUFYX1FVRVVFX1NJWkU6IDIwNDgsXG4gIE9URUxfQlNQX1NDSEVEVUxFX0RFTEFZOiA1ZTMsXG4gIE9URUxfQkxSUF9FWFBPUlRfVElNRU9VVDogM2U0LFxuICBPVEVMX0JMUlBfTUFYX0VYUE9SVF9CQVRDSF9TSVpFOiA1MTIsXG4gIE9URUxfQkxSUF9NQVhfUVVFVUVfU0laRTogMjA0OCxcbiAgT1RFTF9CTFJQX1NDSEVEVUxFX0RFTEFZOiA1ZTMsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0FHRU5UX0hPU1Q6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0FHRU5UX1BPUlQ6IDY4MzIsXG4gIE9URUxfRVhQT1JURVJfSkFFR0VSX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX0pBRUdFUl9QQVNTV09SRDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9KQUVHRVJfVVNFUjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0VORFBPSU5UOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19FTkRQT0lOVDogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfRU5EUE9JTlQ6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9IRUFERVJTOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0hFQURFUlM6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfVElNRU9VVDogMWU0LFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19USU1FT1VUOiAxZTQsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX1RJTUVPVVQ6IDFlNCxcbiAgT1RFTF9FWFBPUlRFUl9aSVBLSU5fRU5EUE9JTlQ6IFwiaHR0cDovL2xvY2FsaG9zdDo5NDExL2FwaS92Mi9zcGFuc1wiLFxuICBPVEVMX0xPR19MRVZFTDogb2UkMS5JTkZPLFxuICBPVEVMX05PX1BBVENIX01PRFVMRVM6IFtdLFxuICBPVEVMX1BST1BBR0FUT1JTOiBbXCJ0cmFjZWNvbnRleHRcIiwgXCJiYWdnYWdlXCJdLFxuICBPVEVMX1JFU09VUkNFX0FUVFJJQlVURVM6IFwiXCIsXG4gIE9URUxfU0VSVklDRV9OQU1FOiBcIlwiLFxuICBPVEVMX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIE9URUxfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9DT1VOVF9MSU1JVDogZCxcbiAgT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogcCxcbiAgT1RFTF9MT0dSRUNPUkRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBPVEVMX1NQQU5fRVZFTlRfQ09VTlRfTElNSVQ6IDEyOCxcbiAgT1RFTF9TUEFOX0xJTktfQ09VTlRfTElNSVQ6IDEyOCxcbiAgT1RFTF9TUEFOX0FUVFJJQlVURV9QRVJfRVZFTlRfQ09VTlRfTElNSVQ6IFRyLFxuICBPVEVMX1NQQU5fQVRUUklCVVRFX1BFUl9MSU5LX0NPVU5UX0xJTUlUOiB1cixcbiAgT1RFTF9UUkFDRVNfRVhQT1JURVI6IFwiXCIsXG4gIE9URUxfVFJBQ0VTX1NBTVBMRVI6IHYuUGFyZW50QmFzZWRBbHdheXNPbixcbiAgT1RFTF9UUkFDRVNfU0FNUExFUl9BUkc6IFwiXCIsXG4gIE9URUxfTE9HU19FWFBPUlRFUjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX0lOU0VDVVJFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTUVUUklDU19JTlNFQ1VSRTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfSU5TRUNVUkU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9MT0dTX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ09NUFJFU1NJT046IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NPTVBSRVNTSU9OOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19DT01QUkVTU0lPTjogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NMSUVOVF9LRVk6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9UUkFDRVNfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ0xJRU5UX0tFWTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX1RSQUNFU19DTElFTlRfQ0VSVElGSUNBVEU6IFwiXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX0NMSUVOVF9DRVJUSUZJQ0FURTogXCJcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX0xPR1NfQ0xJRU5UX0NFUlRJRklDQVRFOiBcIlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfVFJBQ0VTX1BST1RPQ09MOiBcImh0dHAvcHJvdG9idWZcIixcbiAgT1RFTF9FWFBPUlRFUl9PVExQX01FVFJJQ1NfUFJPVE9DT0w6IFwiaHR0cC9wcm90b2J1ZlwiLFxuICBPVEVMX0VYUE9SVEVSX09UTFBfTE9HU19QUk9UT0NPTDogXCJodHRwL3Byb3RvYnVmXCIsXG4gIE9URUxfRVhQT1JURVJfT1RMUF9NRVRSSUNTX1RFTVBPUkFMSVRZX1BSRUZFUkVOQ0U6IFwiY3VtdWxhdGl2ZVwiLFxuICBPVEVMX1NFTUNPTlZfU1RBQklMSVRZX09QVF9JTjogW11cbn07XG5mdW5jdGlvbiBUZShyLCBlLCB0KSB7XG4gIGlmICghKHR5cGVvZiB0W3JdID4gXCJ1XCIpKSB7XG4gICAgdmFyIG4gPSBTdHJpbmcodFtyXSk7XG4gICAgZVtyXSA9IG4udG9Mb3dlckNhc2UoKSA9PT0gXCJ0cnVlXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIHVlKHIsIGUsIHQsIG4sIGEpIHtcbiAgaWYgKG4gPT09IHZvaWQgMCAmJiAobiA9IC0xIC8gMCksIGEgPT09IHZvaWQgMCAmJiAoYSA9IDEgLyAwKSwgdHlwZW9mIHRbcl0gPCBcInVcIikge1xuICAgIHZhciBpID0gTnVtYmVyKHRbcl0pO1xuICAgIGlzTmFOKGkpIHx8IChpIDwgbiA/IGVbcl0gPSBuIDogaSA+IGEgPyBlW3JdID0gYSA6IGVbcl0gPSBpKTtcbiAgfVxufVxuZnVuY3Rpb24gZmUociwgZSwgdCwgbikge1xuICBuID09PSB2b2lkIDAgJiYgKG4gPSB0ZSk7XG4gIHZhciBhID0gdFtyXTtcbiAgdHlwZW9mIGEgPT0gXCJzdHJpbmdcIiAmJiAoZVtyXSA9IGEuc3BsaXQobikubWFwKGZ1bmN0aW9uKGkpIHtcbiAgICByZXR1cm4gaS50cmltKCk7XG4gIH0pKTtcbn1cbnZhciBzZSA9IHtcbiAgQUxMOiBvZSQxLkFMTCxcbiAgVkVSQk9TRTogb2UkMS5WRVJCT1NFLFxuICBERUJVRzogb2UkMS5ERUJVRyxcbiAgSU5GTzogb2UkMS5JTkZPLFxuICBXQVJOOiBvZSQxLldBUk4sXG4gIEVSUk9SOiBvZSQxLkVSUk9SLFxuICBOT05FOiBvZSQxLk5PTkVcbn07XG5mdW5jdGlvbiBsZShyLCBlLCB0KSB7XG4gIHZhciBuID0gdFtyXTtcbiAgaWYgKHR5cGVvZiBuID09IFwic3RyaW5nXCIpIHtcbiAgICB2YXIgYSA9IHNlW24udG9VcHBlckNhc2UoKV07XG4gICAgYSAhPSBudWxsICYmIChlW3JdID0gYSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGoocikge1xuICB2YXIgZSA9IHt9O1xuICBmb3IgKHZhciB0IGluIFYpIHtcbiAgICB2YXIgbiA9IHQ7XG4gICAgc3dpdGNoIChuKSB7XG4gICAgICBjYXNlIFwiT1RFTF9MT0dfTEVWRUxcIjpcbiAgICAgICAgbGUobiwgZSwgcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGFlKG4pKVxuICAgICAgICAgIFRlKG4sIGUsIHIpO1xuICAgICAgICBlbHNlIGlmIChvZShuKSlcbiAgICAgICAgICB1ZShuLCBlLCByKTtcbiAgICAgICAgZWxzZSBpZiAoRWUobikpXG4gICAgICAgICAgZmUobiwgZSwgcik7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHZhciBhID0gcltuXTtcbiAgICAgICAgICB0eXBlb2YgYSA8IFwidVwiICYmIGEgIT09IG51bGwgJiYgKGVbbl0gPSBTdHJpbmcoYSkpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBlO1xufVxuZnVuY3Rpb24gT2UoKSB7XG4gIHZhciByID0gaihoXyk7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBWLCByKTtcbn1cbmZ1bmN0aW9uIGNlKCkge1xuICByZXR1cm4gaihoXyk7XG59XG52YXIgUmUgPSBmdW5jdGlvbihyLCBlKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgcltTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiByO1xuICB2YXIgbiA9IHQuY2FsbChyKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAoZSA9PT0gdm9pZCAwIHx8IGUtLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAoXykge1xuICAgIG8gPSB7IGVycm9yOiBfIH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIHBlID0gZnVuY3Rpb24ociwgZSwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSBlLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gZSkpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSwgMCwgbikpLCBpW25dID0gZVtuXSk7XG4gIHJldHVybiByLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpKTtcbn07XG5mdW5jdGlvbiBkZShyKSB7XG4gIHJldHVybiBidG9hKFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBwZShbXSwgUmUoQSQxKHIpKSwgZmFsc2UpKSk7XG59XG52YXIgTGUgPSA4LCBBZSA9IDE2LCBQZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAvKiBAX19QVVJFX18gKi8gKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFkoQWUpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gWShMZSk7XG4gICAgfVxuICAgIHJldHVybiByO1xuICB9KSgpXG4pLCBSID0gQXJyYXkoMzIpO1xuZnVuY3Rpb24gWShyKSB7XG4gIHJldHVybiBmdW5jdGlvbigpIHtcbiAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHIgKiAyOyB0KyspXG4gICAgICBSW3RdID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTYpICsgNDgsIFJbdF0gPj0gNTggJiYgKFJbdF0gKz0gMzkpO1xuICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KG51bGwsIFIuc2xpY2UoMCwgciAqIDIpKTtcbiAgfTtcbn1cbmZ1bmN0aW9uIFNlKHIpIHtcbn1cbnZhciBJZSA9IGZ1bmN0aW9uKHIpIHtcbiAgdmFyIGUgPSB0eXBlb2YgU3ltYm9sID09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIHQgPSBlICYmIHJbZV0sIG4gPSAwO1xuICBpZiAodCkgcmV0dXJuIHQuY2FsbChyKTtcbiAgaWYgKHIgJiYgdHlwZW9mIHIubGVuZ3RoID09IFwibnVtYmVyXCIpIHJldHVybiB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gciAmJiBuID49IHIubGVuZ3RoICYmIChyID0gdm9pZCAwKSwgeyB2YWx1ZTogciAmJiByW24rK10sIGRvbmU6ICFyIH07XG4gICAgfVxuICB9O1xuICB0aHJvdyBuZXcgVHlwZUVycm9yKGUgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XG59LCB2ZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gciQxKGUpIHtcbiAgICAgIGUgPT09IHZvaWQgMCAmJiAoZSA9IHt9KTtcbiAgICAgIHZhciB0O1xuICAgICAgdGhpcy5fcHJvcGFnYXRvcnMgPSAodCA9IGUucHJvcGFnYXRvcnMpICE9PSBudWxsICYmIHQgIT09IHZvaWQgMCA/IHQgOiBbXSwgdGhpcy5fZmllbGRzID0gQXJyYXkuZnJvbShuZXcgU2V0KHRoaXMuX3Byb3BhZ2F0b3JzLm1hcChmdW5jdGlvbihuKSB7XG4gICAgICAgIHJldHVybiB0eXBlb2Ygbi5maWVsZHMgPT0gXCJmdW5jdGlvblwiID8gbi5maWVsZHMoKSA6IFtdO1xuICAgICAgfSkucmVkdWNlKGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgICAgcmV0dXJuIG4uY29uY2F0KGEpO1xuICAgICAgfSwgW10pKSk7XG4gICAgfVxuICAgIHJldHVybiByJDEucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhLCBpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yICh2YXIgbyA9IEllKHRoaXMuX3Byb3BhZ2F0b3JzKSwgXyA9IG8ubmV4dCgpOyAhXy5kb25lOyBfID0gby5uZXh0KCkpIHtcbiAgICAgICAgICB2YXIgRSA9IF8udmFsdWU7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIEUuaW5qZWN0KGUsIHQsIG4pO1xuICAgICAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgICAgIHIud2FybihcIkZhaWxlZCB0byBpbmplY3Qgd2l0aCBcIiArIEUuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgVC5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gY2F0Y2ggKFQpIHtcbiAgICAgICAgYSA9IHsgZXJyb3I6IFQgfTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgXyAmJiAhXy5kb25lICYmIChpID0gby5yZXR1cm4pICYmIGkuY2FsbChvKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBpZiAoYSkgdGhyb3cgYS5lcnJvcjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sIHIkMS5wcm90b3R5cGUuZXh0cmFjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHJldHVybiB0aGlzLl9wcm9wYWdhdG9ycy5yZWR1Y2UoZnVuY3Rpb24oYSwgaSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJldHVybiBpLmV4dHJhY3QoYSwgdCwgbik7XG4gICAgICAgIH0gY2F0Y2ggKG8pIHtcbiAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gZXh0cmFjdCB3aXRoIFwiICsgaS5jb25zdHJ1Y3Rvci5uYW1lICsgXCIuIEVycjogXCIgKyBvLm1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfSwgZSk7XG4gICAgfSwgciQxLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLl9maWVsZHMuc2xpY2UoKTtcbiAgICB9LCByJDE7XG4gIH0pKClcbiksIEIgPSBcIltfMC05YS16LSovXVwiLCB5ZSA9IFwiW2Etel1cIiArIEIgKyBcInswLDI1NX1cIiwgaGUgPSBcIlthLXowLTldXCIgKyBCICsgXCJ7MCwyNDB9QFthLXpdXCIgKyBCICsgXCJ7MCwxM31cIiwgZ2UgPSBuZXcgUmVnRXhwKFwiXig/OlwiICsgeWUgKyBcInxcIiArIGhlICsgXCIpJFwiKSwgbWUgPSAvXlsgLX5dezAsMjU1fVshLX5dJC8sIENlID0gLyx8PS87XG5mdW5jdGlvbiBOZShyKSB7XG4gIHJldHVybiBnZS50ZXN0KHIpO1xufVxuZnVuY3Rpb24gTWUocikge1xuICByZXR1cm4gbWUudGVzdChyKSAmJiAhQ2UudGVzdChyKTtcbn1cbnZhciB6ID0gMzIsIFVlID0gNTEyLCBXID0gXCIsXCIsIFogPSBcIj1cIiwgZnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoZSkge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIGUgJiYgdGhpcy5fcGFyc2UoZSk7XG4gICAgfVxuICAgIHJldHVybiByLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihlLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMoZSkgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUoZSksIG4uX2ludGVybmFsU3RhdGUuc2V0KGUsIHQpLCBuO1xuICAgIH0sIHIucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKGUpLCB0O1xuICAgIH0sIHIucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChlKTtcbiAgICB9LCByLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBlID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgWiArIGUuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKFcpO1xuICAgIH0sIHIucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGUubGVuZ3RoID4gVWUgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSBlLnNwbGl0KFcpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKFopO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIF8gPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgTmUobykgJiYgTWUoXykgJiYgdC5zZXQobywgXyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4geiAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIHopKSkpO1xuICAgIH0sIHIucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIHIucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIGUgPSBuZXcgcigpO1xuICAgICAgcmV0dXJuIGUuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCBlO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIEwgPSBcInRyYWNlcGFyZW50XCIsIEEgPSBcInRyYWNlc3RhdGVcIiwgQmUgPSBcIjAwXCIsIGJlID0gXCIoPyFmZilbXFxcXGRhLWZdezJ9XCIsIERlID0gXCIoPyFbMF17MzJ9KVtcXFxcZGEtZl17MzJ9XCIsIFhlID0gXCIoPyFbMF17MTZ9KVtcXFxcZGEtZl17MTZ9XCIsIEdlID0gXCJbXFxcXGRhLWZdezJ9XCIsIHdlID0gbmV3IFJlZ0V4cChcIl5cXFxccz8oXCIgKyBiZSArIFwiKS0oXCIgKyBEZSArIFwiKS0oXCIgKyBYZSArIFwiKS0oXCIgKyBHZSArIFwiKSgtLiopP1xcXFxzPyRcIik7XG5mdW5jdGlvbiBzcihyKSB7XG4gIHZhciBlID0gd2UuZXhlYyhyKTtcbiAgcmV0dXJuICFlIHx8IGVbMV0gPT09IFwiMDBcIiAmJiBlWzVdID8gbnVsbCA6IHtcbiAgICB0cmFjZUlkOiBlWzJdLFxuICAgIHNwYW5JZDogZVszXSxcbiAgICB0cmFjZUZsYWdzOiBwYXJzZUludChlWzRdLCAxNilcbiAgfTtcbn1cbnZhciBWZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKGUsIHQsIG4pIHtcbiAgICAgIHZhciBhJDEgPSBqZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgaWYgKCEoIWEkMSB8fCBhKGUpIHx8ICFMbihhJDEpKSkge1xuICAgICAgICB2YXIgaSA9IEJlICsgXCItXCIgKyBhJDEudHJhY2VJZCArIFwiLVwiICsgYSQxLnNwYW5JZCArIFwiLTBcIiArIE51bWJlcihhJDEudHJhY2VGbGFncyB8fCByciQxLk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgTCwgaSksIGEkMS50cmFjZVN0YXRlICYmIG4uc2V0KHQsIEEsIGEkMS50cmFjZVN0YXRlLnNlcmlhbGl6ZSgpKTtcbiAgICAgIH1cbiAgICB9LCByLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24oZSwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBMKTtcbiAgICAgIGlmICghYSlcbiAgICAgICAgcmV0dXJuIGU7XG4gICAgICB2YXIgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhWzBdIDogYTtcbiAgICAgIGlmICh0eXBlb2YgaSAhPSBcInN0cmluZ1wiKVxuICAgICAgICByZXR1cm4gZTtcbiAgICAgIHZhciBvID0gc3IoaSk7XG4gICAgICBpZiAoIW8pXG4gICAgICAgIHJldHVybiBlO1xuICAgICAgby5pc1JlbW90ZSA9IHRydWU7XG4gICAgICB2YXIgXyA9IG4uZ2V0KHQsIEEpO1xuICAgICAgaWYgKF8pIHtcbiAgICAgICAgdmFyIEUgPSBBcnJheS5pc0FycmF5KF8pID8gXy5qb2luKFwiLFwiKSA6IF87XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBmcih0eXBlb2YgRSA9PSBcInN0cmluZ1wiID8gRSA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gamUkMS5zZXRTcGFuQ29udGV4dChlLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS5maWVsZHMgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBbTCwgQV07XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgSCA9IGZzKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBiO1xuKGZ1bmN0aW9uKHIpIHtcbiAgci5IVFRQID0gXCJodHRwXCI7XG59KShiIHx8IChiID0ge30pKTtcbmZ1bmN0aW9uIGplKHIsIGUpIHtcbiAgcmV0dXJuIHIuc2V0VmFsdWUoSCwgZSk7XG59XG5mdW5jdGlvbiBIZShyKSB7XG4gIHJldHVybiByLmRlbGV0ZVZhbHVlKEgpO1xufVxuZnVuY3Rpb24geGUocikge1xuICByZXR1cm4gci5nZXRWYWx1ZShIKTtcbn1cbnZhciBEID0gKFxuICAvKiogQGNsYXNzICovXG4gIChmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiByKCkge1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkZWNpc2lvbjogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPZmZTYW1wbGVyXCI7XG4gICAgfSwgcjtcbiAgfSkoKVxuKSwgUCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcigpIHtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IGwuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBGZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICB2YXIgdCwgbiwgYSwgaTtcbiAgICAgIHRoaXMuX3Jvb3QgPSBlLnJvb3QsIHRoaXMuX3Jvb3QgfHwgKEVyKG5ldyBFcnJvcihcIlBhcmVudEJhc2VkU2FtcGxlciBtdXN0IGhhdmUgYSByb290IHNhbXBsZXIgY29uZmlndXJlZFwiKSksIHRoaXMuX3Jvb3QgPSBuZXcgUCgpKSwgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZCA9ICh0ID0gZS5yZW1vdGVQYXJlbnRTYW1wbGVkKSAhPT0gbnVsbCAmJiB0ICE9PSB2b2lkIDAgPyB0IDogbmV3IFAoKSwgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZCA9IChuID0gZS5yZW1vdGVQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBuICE9PSB2b2lkIDAgPyBuIDogbmV3IEQoKSwgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkID0gKGEgPSBlLmxvY2FsUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgYSAhPT0gdm9pZCAwID8gYSA6IG5ldyBQKCksIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZCA9IChpID0gZS5sb2NhbFBhcmVudE5vdFNhbXBsZWQpICE9PSBudWxsICYmIGkgIT09IHZvaWQgMCA/IGkgOiBuZXcgRCgpO1xuICAgIH1cbiAgICByZXR1cm4gci5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24oZSwgdCwgbiwgYSwgaSwgbykge1xuICAgICAgdmFyIF8gPSBqZSQxLmdldFNwYW5Db250ZXh0KGUpO1xuICAgICAgcmV0dXJuICFfIHx8ICFMbihfKSA/IHRoaXMuX3Jvb3Quc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogXy5pc1JlbW90ZSA/IF8udHJhY2VGbGFncyAmIHJyJDEuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUoZSwgdCwgbiwgYSwgaSwgbykgOiBfLnRyYWNlRmxhZ3MgJiByciQxLlNBTVBMRUQgPyB0aGlzLl9sb2NhbFBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKGUsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnNob3VsZFNhbXBsZShlLCB0LCBuLCBhLCBpLCBvKTtcbiAgICB9LCByLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFwiUGFyZW50QmFzZWR7cm9vdD1cIiArIHRoaXMuX3Jvb3QudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIHJlbW90ZVBhcmVudE5vdFNhbXBsZWQ9XCIgKyB0aGlzLl9yZW1vdGVQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnRTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIiwgbG9jYWxQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fbG9jYWxQYXJlbnROb3RTYW1wbGVkLnRvU3RyaW5nKCkgKyBcIn1cIjtcbiAgICB9LCByO1xuICB9KSgpXG4pLCBLZSA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlKSB7XG4gICAgICBlID09PSB2b2lkIDAgJiYgKGUgPSAwKSwgdGhpcy5fcmF0aW8gPSBlLCB0aGlzLl9yYXRpbyA9IHRoaXMuX25vcm1hbGl6ZShlKSwgdGhpcy5fdXBwZXJCb3VuZCA9IE1hdGguZmxvb3IodGhpcy5fcmF0aW8gKiA0Mjk0OTY3Mjk1KTtcbiAgICB9XG4gICAgcmV0dXJuIHIucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKGUsIHQpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBScyh0KSAmJiB0aGlzLl9hY2N1bXVsYXRlKHQpIDwgdGhpcy5fdXBwZXJCb3VuZCA/IGwuUkVDT1JEX0FORF9TQU1QTEVEIDogbC5OT1RfUkVDT1JEXG4gICAgICB9O1xuICAgIH0sIHIucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJUcmFjZUlkUmF0aW9CYXNlZHtcIiArIHRoaXMuX3JhdGlvICsgXCJ9XCI7XG4gICAgfSwgci5wcm90b3R5cGUuX25vcm1hbGl6ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHJldHVybiB0eXBlb2YgZSAhPSBcIm51bWJlclwiIHx8IGlzTmFOKGUpID8gMCA6IGUgPj0gMSA/IDEgOiBlIDw9IDAgPyAwIDogZTtcbiAgICB9LCByLnByb3RvdHlwZS5fYWNjdW11bGF0ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIGZvciAodmFyIHQgPSAwLCBuID0gMDsgbiA8IGUubGVuZ3RoIC8gODsgbisrKSB7XG4gICAgICAgIHZhciBhID0gbiAqIDgsIGkgPSBwYXJzZUludChlLnNsaWNlKGEsIGEgKyA4KSwgMTYpO1xuICAgICAgICB0ID0gKHQgXiBpKSA+Pj4gMDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0O1xuICAgIH0sIHI7XG4gIH0pKClcbiksIFllID0gXCJbb2JqZWN0IE9iamVjdF1cIiwgemUgPSBcIltvYmplY3QgTnVsbF1cIiwgV2UgPSBcIltvYmplY3QgVW5kZWZpbmVkXVwiLCBaZSA9IEZ1bmN0aW9uLnByb3RvdHlwZSwgbHIgPSBaZS50b1N0cmluZywgJGUgPSBsci5jYWxsKE9iamVjdCksIEplID0gUWUoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpLCBPciA9IE9iamVjdC5wcm90b3R5cGUsIGNyID0gT3IuaGFzT3duUHJvcGVydHksIGYgPSBTeW1ib2wgPyBTeW1ib2wudG9TdHJpbmdUYWcgOiB2b2lkIDAsIFJyID0gT3IudG9TdHJpbmc7XG5mdW5jdGlvbiBRZShyLCBlKSB7XG4gIHJldHVybiBmdW5jdGlvbih0KSB7XG4gICAgcmV0dXJuIHIoZSh0KSk7XG4gIH07XG59XG5mdW5jdGlvbiAkKHIpIHtcbiAgaWYgKCFxZShyKSB8fCBrZShyKSAhPT0gWWUpXG4gICAgcmV0dXJuIGZhbHNlO1xuICB2YXIgZSA9IEplKHIpO1xuICBpZiAoZSA9PT0gbnVsbClcbiAgICByZXR1cm4gdHJ1ZTtcbiAgdmFyIHQgPSBjci5jYWxsKGUsIFwiY29uc3RydWN0b3JcIikgJiYgZS5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiB0ID09IFwiZnVuY3Rpb25cIiAmJiB0IGluc3RhbmNlb2YgdCAmJiBsci5jYWxsKHQpID09PSAkZTtcbn1cbmZ1bmN0aW9uIHFlKHIpIHtcbiAgcmV0dXJuIHIgIT0gbnVsbCAmJiB0eXBlb2YgciA9PSBcIm9iamVjdFwiO1xufVxuZnVuY3Rpb24ga2Uocikge1xuICByZXR1cm4gciA9PSBudWxsID8gciA9PT0gdm9pZCAwID8gV2UgOiB6ZSA6IGYgJiYgZiBpbiBPYmplY3QocikgPyBydChyKSA6IGV0KHIpO1xufVxuZnVuY3Rpb24gcnQocikge1xuICB2YXIgZSA9IGNyLmNhbGwociwgZiksIHQgPSByW2ZdLCBuID0gZmFsc2U7XG4gIHRyeSB7XG4gICAgcltmXSA9IHZvaWQgMCwgbiA9ICEwO1xuICB9IGNhdGNoIHtcbiAgfVxuICB2YXIgYSA9IFJyLmNhbGwocik7XG4gIHJldHVybiBuICYmIChlID8gcltmXSA9IHQgOiBkZWxldGUgcltmXSksIGE7XG59XG5mdW5jdGlvbiBldChyKSB7XG4gIHJldHVybiBSci5jYWxsKHIpO1xufVxudmFyIHR0ID0gMjA7XG5mdW5jdGlvbiBudCgpIHtcbiAgZm9yICh2YXIgciA9IFtdLCBlID0gMDsgZSA8IGFyZ3VtZW50cy5sZW5ndGg7IGUrKylcbiAgICByW2VdID0gYXJndW1lbnRzW2VdO1xuICBmb3IgKHZhciB0ID0gci5zaGlmdCgpLCBuID0gLyogQF9fUFVSRV9fICovIG5ldyBXZWFrTWFwKCk7IHIubGVuZ3RoID4gMDsgKVxuICAgIHQgPSBwcih0LCByLnNoaWZ0KCksIDAsIG4pO1xuICByZXR1cm4gdDtcbn1cbmZ1bmN0aW9uIEMocikge1xuICByZXR1cm4geShyKSA/IHIuc2xpY2UoKSA6IHI7XG59XG5mdW5jdGlvbiBwcihyLCBlLCB0LCBuKSB7XG4gIHQgPT09IHZvaWQgMCAmJiAodCA9IDApO1xuICB2YXIgYTtcbiAgaWYgKCEodCA+IHR0KSkge1xuICAgIGlmICh0KyssIFMocikgfHwgUyhlKSB8fCBkcihlKSlcbiAgICAgIGEgPSBDKGUpO1xuICAgIGVsc2UgaWYgKHkocikpIHtcbiAgICAgIGlmIChhID0gci5zbGljZSgpLCB5KGUpKVxuICAgICAgICBmb3IgKHZhciBpID0gMCwgbyA9IGUubGVuZ3RoOyBpIDwgbzsgaSsrKVxuICAgICAgICAgIGEucHVzaChDKGVbaV0pKTtcbiAgICAgIGVsc2UgaWYgKE8oZSkpXG4gICAgICAgIGZvciAodmFyIF8gPSBPYmplY3Qua2V5cyhlKSwgaSA9IDAsIG8gPSBfLmxlbmd0aDsgaSA8IG87IGkrKykge1xuICAgICAgICAgIHZhciBFID0gX1tpXTtcbiAgICAgICAgICBhW0VdID0gQyhlW0VdKTtcbiAgICAgICAgfVxuICAgIH0gZWxzZSBpZiAoTyhyKSlcbiAgICAgIGlmIChPKGUpKSB7XG4gICAgICAgIGlmICghYXQociwgZSkpXG4gICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgIGEgPSBPYmplY3QuYXNzaWduKHt9LCByKTtcbiAgICAgICAgZm9yICh2YXIgXyA9IE9iamVjdC5rZXlzKGUpLCBpID0gMCwgbyA9IF8ubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIEUgPSBfW2ldLCBUID0gZVtFXTtcbiAgICAgICAgICBpZiAoUyhUKSlcbiAgICAgICAgICAgIHR5cGVvZiBUID4gXCJ1XCIgPyBkZWxldGUgYVtFXSA6IGFbRV0gPSBUO1xuICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdmFyIHMgPSBhW0VdLCBoID0gVDtcbiAgICAgICAgICAgIGlmIChKKHIsIEUsIG4pIHx8IEooZSwgRSwgbikpXG4gICAgICAgICAgICAgIGRlbGV0ZSBhW0VdO1xuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgIGlmIChPKHMpICYmIE8oaCkpIHtcbiAgICAgICAgICAgICAgICB2YXIgeCA9IG4uZ2V0KHMpIHx8IFtdLCBGID0gbi5nZXQoaCkgfHwgW107XG4gICAgICAgICAgICAgICAgeC5wdXNoKHsgb2JqOiByLCBrZXk6IEUgfSksIEYucHVzaCh7IG9iajogZSwga2V5OiBFIH0pLCBuLnNldChzLCB4KSwgbi5zZXQoaCwgRik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgYVtFXSA9IHByKGFbRV0sIFQsIHQsIG4pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlXG4gICAgICAgIGEgPSBlO1xuICAgIHJldHVybiBhO1xuICB9XG59XG5mdW5jdGlvbiBKKHIsIGUsIHQpIHtcbiAgZm9yICh2YXIgbiA9IHQuZ2V0KHJbZV0pIHx8IFtdLCBhID0gMCwgaSA9IG4ubGVuZ3RoOyBhIDwgaTsgYSsrKSB7XG4gICAgdmFyIG8gPSBuW2FdO1xuICAgIGlmIChvLmtleSA9PT0gZSAmJiBvLm9iaiA9PT0gcilcbiAgICAgIHJldHVybiB0cnVlO1xuICB9XG4gIHJldHVybiBmYWxzZTtcbn1cbmZ1bmN0aW9uIHkocikge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShyKTtcbn1cbmZ1bmN0aW9uIGRyKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIE8ocikge1xuICByZXR1cm4gIVMocikgJiYgIXkocikgJiYgIWRyKHIpICYmIHR5cGVvZiByID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBTKHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIHIgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgciA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgciA+IFwidVwiIHx8IHIgaW5zdGFuY2VvZiBEYXRlIHx8IHIgaW5zdGFuY2VvZiBSZWdFeHAgfHwgciA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGF0KHIsIGUpIHtcbiAgcmV0dXJuICEoISQocikgfHwgISQoZSkpO1xufVxudmFyIGl0ID0gLyogQF9fUFVSRV9fICovIChmdW5jdGlvbigpIHtcbiAgdmFyIHIgPSBmdW5jdGlvbihlLCB0KSB7XG4gICAgcmV0dXJuIHIgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbihuLCBhKSB7XG4gICAgICBuLl9fcHJvdG9fXyA9IGE7XG4gICAgfSB8fCBmdW5jdGlvbihuLCBhKSB7XG4gICAgICBmb3IgKHZhciBpIGluIGEpIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhLCBpKSAmJiAobltpXSA9IGFbaV0pO1xuICAgIH0sIHIoZSwgdCk7XG4gIH07XG4gIHJldHVybiBmdW5jdGlvbihlLCB0KSB7XG4gICAgaWYgKHR5cGVvZiB0ICE9IFwiZnVuY3Rpb25cIiAmJiB0ICE9PSBudWxsKVxuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcodCkgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgIHIoZSwgdCk7XG4gICAgZnVuY3Rpb24gbigpIHtcbiAgICAgIHRoaXMuY29uc3RydWN0b3IgPSBlO1xuICAgIH1cbiAgICBlLnByb3RvdHlwZSA9IHQgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKHQpIDogKG4ucHJvdG90eXBlID0gdC5wcm90b3R5cGUsIG5ldyBuKCkpO1xuICB9O1xufSkoKSwgTHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKHIpIHtcbiAgICBpdChlLCByKTtcbiAgICBmdW5jdGlvbiBlKHQpIHtcbiAgICAgIHZhciBuID0gci5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIGUucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIGU7XG4gIH0pKEVycm9yKVxuKTtcbmZ1bmN0aW9uIG90KHIsIGUpIHtcbiAgdmFyIHQsIG4gPSBuZXcgUHJvbWlzZShmdW5jdGlvbihpLCBvKSB7XG4gICAgdCA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICBvKG5ldyBMcihcIk9wZXJhdGlvbiB0aW1lZCBvdXQuXCIpKTtcbiAgICB9LCBlKTtcbiAgfSk7XG4gIHJldHVybiBQcm9taXNlLnJhY2UoW3IsIG5dKS50aGVuKGZ1bmN0aW9uKGEpIHtcbiAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHQpLCBhO1xuICB9LCBmdW5jdGlvbihhKSB7XG4gICAgdGhyb3cgY2xlYXJUaW1lb3V0KHQpLCBhO1xuICB9KTtcbn1cbmZ1bmN0aW9uIF90KHIpIHtcbiAgcmV0dXJuIHR5cGVvZiByID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygci5fX29yaWdpbmFsID09IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2Ygci5fX3Vud3JhcCA9PSBcImZ1bmN0aW9uXCIgJiYgci5fX3dyYXBwZWQgPT09IHRydWU7XG59XG52YXIgRXQgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgKGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIHIoKSB7XG4gICAgICB2YXIgZSA9IHRoaXM7XG4gICAgICB0aGlzLl9wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICBlLl9yZXNvbHZlID0gdCwgZS5fcmVqZWN0ID0gbjtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcInByb21pc2VcIiwge1xuICAgICAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb21pc2U7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICB9KSwgci5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKGUpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUoZSk7XG4gICAgfSwgci5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24oZSkge1xuICAgICAgdGhpcy5fcmVqZWN0KGUpO1xuICAgIH0sIHI7XG4gIH0pKClcbiksIFR0ID0gZnVuY3Rpb24ociwgZSkge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIHJbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gcjtcbiAgdmFyIG4gPSB0LmNhbGwociksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKGUgPT09IHZvaWQgMCB8fCBlLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKF8pIHtcbiAgICBvID0geyBlcnJvcjogXyB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCB1dCA9IGZ1bmN0aW9uKHIsIGUsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gZS5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIGUpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUsIDAsIG4pKSwgaVtuXSA9IGVbbl0pO1xuICByZXR1cm4gci5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKSk7XG59LCBmdCA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICAoZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gcihlLCB0KSB7XG4gICAgICB0aGlzLl9jYWxsYmFjayA9IGUsIHRoaXMuX3RoYXQgPSB0LCB0aGlzLl9pc0NhbGxlZCA9IGZhbHNlLCB0aGlzLl9kZWZlcnJlZCA9IG5ldyBFdCgpO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KHIucHJvdG90eXBlLCBcImlzQ2FsbGVkXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NhbGxlZDtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCBPYmplY3QuZGVmaW5lUHJvcGVydHkoci5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVmZXJyZWQucHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pLCByLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciBlLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSB0cnVlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgoZSA9IHRoaXMuX2NhbGxiYWNrKS5jYWxsLmFwcGx5KGUsIHV0KFt0aGlzLl90aGF0XSwgVHQobiksICExKSkpLnRoZW4oZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlc29sdmUoaSk7XG4gICAgICAgICAgfSwgZnVuY3Rpb24oaSkge1xuICAgICAgICAgICAgcmV0dXJuIHQuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCAoaSkge1xuICAgICAgICAgIHRoaXMuX2RlZmVycmVkLnJlamVjdChpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHRoaXMuX2RlZmVycmVkLnByb21pc2U7XG4gICAgfSwgcjtcbiAgfSkoKVxuKTtcbmZ1bmN0aW9uIHN0KHIsIGUpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBEZSQxLndpdGgodShEZSQxLmFjdGl2ZSgpKSwgZnVuY3Rpb24oKSB7XG4gICAgICByLmV4cG9ydChlLCBmdW5jdGlvbihuKSB7XG4gICAgICAgIHQobik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59XG52YXIgbHQgPSB7XG4gIGdldEtleVBhaXJzOiBlcixcbiAgc2VyaWFsaXplS2V5UGFpcnM6IHJyLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogV3IsXG4gIHBhcnNlUGFpcktleVZhbHVlOiB3XG59LCBPdCA9IHtcbiAgX2V4cG9ydDogc3Rcbn07XG5jb25zdCBQdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IEQsXG4gIEFsd2F5c09uU2FtcGxlcjogUCxcbiAgQW5jaG9yZWRDbG9jazogJHIsXG4gIEJpbmRPbmNlRnV0dXJlOiBmdCxcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogdmUsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBkLFxuICBERUZBVUxUX0FUVFJJQlVURV9WQUxVRV9MRU5HVEhfTElNSVQ6IHAsXG4gIERFRkFVTFRfRU5WSVJPTk1FTlQ6IFYsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBUcixcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogdXIsXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhJDE7XG4gIH0sXG4gIFBhcmVudEJhc2VkU2FtcGxlcjogRmUsXG4gIGdldCBSUENUeXBlKCkge1xuICAgIHJldHVybiBiO1xuICB9LFxuICBSYW5kb21JZEdlbmVyYXRvcjogUGUsXG4gIFNES19JTkZPOiBUQSxcbiAgVFJBQ0VfUEFSRU5UX0hFQURFUjogTCxcbiAgVFJBQ0VfU1RBVEVfSEVBREVSOiBBLFxuICBUaW1lb3V0RXJyb3I6IExyLFxuICBUcmFjZUlkUmF0aW9CYXNlZFNhbXBsZXI6IEtlLFxuICBUcmFjZVN0YXRlOiBmcixcbiAgZ2V0IFRyYWNlc1NhbXBsZXJWYWx1ZXMoKSB7XG4gICAgcmV0dXJuIHY7XG4gIH0sXG4gIFZFUlNJT046IHRTLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogWnIsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IFZlLFxuICBfZ2xvYmFsVGhpczogaF8sXG4gIGFkZEhyVGltZXM6IGJfLFxuICBiYWdnYWdlVXRpbHM6IGx0LFxuICBjYWxsV2l0aFRpbWVvdXQ6IG90LFxuICBkZWxldGVSUENNZXRhZGF0YTogSGUsXG4gIGdldEVudjogT2UsXG4gIGdldEVudldpdGhvdXREZWZhdWx0czogY2UsXG4gIGdldFJQQ01ldGFkYXRhOiB4ZSxcbiAgZ2V0VGltZU9yaWdpbjogcl8sXG4gIGdsb2JhbEVycm9ySGFuZGxlcjogRXIsXG4gIGhleFRvQmFzZTY0OiBkZSxcbiAgaGV4VG9CaW5hcnk6IEEkMSxcbiAgaHJUaW1lOiBwXyxcbiAgaHJUaW1lRHVyYXRpb246IFhlJDEsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBqZSQyLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczoga2UkMSxcbiAgaHJUaW1lVG9OYW5vc2Vjb25kczogeGUkMSxcbiAgaHJUaW1lVG9UaW1lU3RhbXA6IFFlJDEsXG4gIGludGVybmFsOiBPdCxcbiAgaXNBdHRyaWJ1dGVLZXk6IG5yLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBhcixcbiAgaXNUaW1lSW5wdXQ6IHFlJDEsXG4gIGlzVGltZUlucHV0SHJUaW1lOiBOXyxcbiAgaXNUcmFjaW5nU3VwcHJlc3NlZDogYSxcbiAgaXNVcmxJZ25vcmVkOiBaZSQxLFxuICBpc1dyYXBwZWQ6IF90LFxuICBsb2dnaW5nRXJyb3JIYW5kbGVyOiBvcixcbiAgbWVyZ2U6IG50LFxuICBtaWxsaXNUb0hyVGltZTogTyQxLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IGosXG4gIHBhcnNlVHJhY2VQYXJlbnQ6IHNyLFxuICBzYW5pdGl6ZUF0dHJpYnV0ZXM6IFFyLFxuICBzZXRHbG9iYWxFcnJvckhhbmRsZXI6IGVlLFxuICBzZXRSUENNZXRhZGF0YTogamUsXG4gIHN1cHByZXNzVHJhY2luZzogdSxcbiAgdGltZUlucHV0VG9IclRpbWU6IHdlJDEsXG4gIHVucmVmVGltZXI6IFNlLFxuICB1bnN1cHByZXNzVHJhY2luZzogcyxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEVyIGFzIEUsIE9lIGFzIE8sIFB0IGFzIFAsIFFyIGFzIFEsIFNlIGFzIFMsIFZlIGFzIFYsIFpyIGFzIFosIGFyIGFzIGEsIHYgYXMgYiwgY2UgYXMgYywgZCwgT3QgYXMgZSwgZnQgYXMgZiwgbCwgbnQgYXMgbiwgcCwgdmUgYXMgdiB9OyJdLAogICJtYXBwaW5ncyI6ICJBQUFBLFNBQVMsS0FBS0EsR0FBSSxLQUFLQyxHQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQUssS0FBS0MsSUFBSyxLQUFLQyxJQUFNLE1BQU1DLElBQUksTUFBTUMsSUFBTSxNQUFNQyxJQUFNLEtBQUtDLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFNLE1BQU1DLElBQU0sS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLFVBQVU7QUFDN00sU0FBUyxLQUFBQyxHQUFHLEtBQUFDLEdBQUcsS0FBQUMsVUFBUztBQUN4QixTQUFTLEtBQUFDLFNBQVM7QUFDbEIsU0FBUyxLQUFLQyxHQUFLLEtBQUtDLFVBQVc7QUFDbkMsU0FBUyxLQUFLQyxHQUFNLEtBQUtDLEdBQU0sS0FBS0MsR0FBSSxLQUFLQyxHQUFNLEtBQUtDLEdBQU0sS0FBS0MsSUFBSSxLQUFLQyxVQUFVO0FBQ3RGLFNBQVMsTUFBTUMsSUFBSSxNQUFNQyxVQUFVO0FBRW5DLElBQUlDO0FBQUEsQ0FDSCxTQUFTWixHQUFHO0FBQ1gsRUFBQUEsRUFBRUEsRUFBRSxhQUFhLENBQUMsSUFBSSxjQUFjQSxFQUFFQSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVVBLEVBQUVBLEVBQUUscUJBQXFCLENBQUMsSUFBSTtBQUNoRyxHQUFHWSxNQUFNQSxJQUFJLENB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QUFBLEVBQ2hCLGlCQUFpQjVGO0FBQUEsRUFDakIsbUJBQW1CZjtBQUFBLEVBQ25CLFlBQVlvRjtBQUFBLEVBQ1osbUJBQW1CcEU7QUFBQSxFQUNuQixZQUFZakI7QUFDZCxHQUFHLE9BQU8sYUFBYSxFQUFFLE9BQU8sU0FBUyxDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInlfIiwgImhfIiwgImZfIiwgImdfIiwgIndlJDEiLCAiUiQxIiwgIk8kMSIsICJaZSQxIiwgIk5fIiwgInFlJDEiLCAiUWUkMSIsICJ4ZSQxIiwgImtlJDEiLCAiamUkMiIsICJYZSQxIiwgInBfIiwgInJfIiwgImJfIiwgImEiLCAidSIsICJzIiwgInIiLCAiQSQxIiwgImEkMSIsICJvZSQxIiwgImplJDEiLCAiTG4iLCAicnIkMSIsICJEZSQxIiwgImZzIiwgIlJzIiwgInRTIiwgIlRBIiwgImwiLCAieHIiLCAiVSIsICJtIiwgIkZyIiwgIktyIiwgIllyIiwgInpyIiwgInQiLCAibiIsICJpIiwgIm8iLCAicnIiLCAiZXIiLCAidyIsICJXciIsICJaciIsICIkciIsICJ0ciIsICJKciIsICJRciIsICJyJDEiLCAibnIiLCAiYXIiLCAicXIiLCAiaXIiLCAib3IiLCAia3IiLCAicmUiLCAiX3IiLCAiRXIiLCAidiIsICJ0ZSIsICJhZSIsICJpZSIsICJvZSIsICJwIiwgImQiLCAiVHIiLCAidXIiLCAiViIsICJmZSIsICJzZSIsICJsZSIsICJqIiwgIk9lIiwgImNlIiwgIlJlIiwgInBlIiwgImRlIiwgIkxlIiwgIkFlIiwgIlBlIiwgIlkiLCAiUiIsICJTZSIsICJ2ZSIsICJCIiwgInllIiwgImhlIiwgImdlIiwgIm1lIiwgInoiLCAiVWUiLCAiVyIsICJaIiwgImZyIiwgIkwiLCAiQSIsICJCZSIsICJiZSIsICJEZSIsICJYZSIsICJHZSIsICJ3ZSIsICJzciIsICJWZSIsICJiIiwgImplIiwgInhlIiwgIkQiLCAiUCIsICJZZSIsICJ6ZSIsICJXZSIsICJaZSIsICJsciIsICIkZSIsICJKZSIsICJRZSIsICJPciIsICJjciIsICJmIiwgIlJyIiwgIiQiLCAicWUiLCAia2UiLCAicnQiLCAiZXQiLCAidHQiLCAibnQiLCAicHIiLCAieSIsICJTIiwgImRyIiwgIk8iLCAiYXQiLCAiaCIsICJKIiwgIngiLCAiaXQiLCAiTHIiLCAib3QiLCAiX3QiLCAiRXQiLCAiVHQiLCAidXQiLCAiZnQiLCAic3QiLCAibHQiLCAiT3QiLCAiUHQiXQp9Cg==