@getopenpay/openpay-js-react 0.5.8 → 0.5.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/.tsbuildinfo +1 -1
- package/dist/{Resource-DXWSN99b-DAKkOh-n.js → Resource-5wVf5kHV-BFyMKPut.js} +3 -3
- package/dist/{SimpleSpanProcessor-C_wSX1Yy-B4JXA5a5.js → SimpleSpanProcessor-ClAIs2OX-Clegondf.js} +12 -12
- package/dist/detect-resources-6qJS_9ea-DmtvvPnO.js +854 -0
- package/dist/diag-api-DZgsIb8r-DHXVnD-I.js +6 -0
- package/dist/index-BF58Tzha.js +9374 -0
- package/dist/{index-Mxxhwbuf-CbAv8AF4.js → index-BoejgMng-BNehAMXN.js} +5 -5
- package/dist/index-C2SwB8zN-CbKTZIhx.js +150 -0
- package/dist/{index-BAJBC1A3-Dv22oRoF.js → index-CHyoCKqX-ThIdeeHz.js} +45 -45
- package/dist/{index-DBn3eZX2-CdCkqjEQ.js → index-CX-uTKfd-CsAjh6X1.js} +42 -42
- package/dist/{index-Lx6n9QXa-DUFP0LzI.js → index-CkXoGe4J-DmtTqHSZ.js} +9 -9
- package/dist/{index-ChCDYQjn-DNNHoOwn.js → index-D9SilKKm-B6YNgTyr.js} +14 -14
- package/dist/{index-CBGl0gxH-CZZiqw2s.js → index-DGln6GPg-CTutar_n.js} +2 -2
- package/dist/{index-BiRP-fh_-DCrOlush.js → index-D_4w7LiN-BMlpymHp.js} +45 -45
- package/dist/{index-BEuzP8IN-CIr6Z-3F.js → index-DsyNNIeI-52IfAfG1.js} +2 -2
- package/dist/index.js +6 -6
- package/dist/{metrics-api-Dn70IaBr-BDQhy_Sg.js → metrics-api-DquXH3Pp-nfynnQkO.js} +13 -13
- package/dist/{sdk-info-CiVBrO_9-Di9ezpOa.js → sdk-info-CFw-hwXt-DuJp1ta1.js} +2 -2
- package/dist/{url-Br-JEIK6-DVW9AYhb.js → url-C3shoaOo-CzMoQeLC.js} +100 -100
- package/dist/{utils-CpbWyaXB-DWuAh_bd.js → utils-CItY4k0d-CRBvnyeH.js} +2 -2
- package/dist/{utils-DYqO8O07-BLqLc4Km.js → utils-Ceg2MQFl-DOAtzgSC.js} +10 -10
- package/package.json +1 -1
- package/dist/detect-resources-BIeWPtro-C40GUJl1.js +0 -854
- package/dist/diag-api-DW_FTWBc-CirvQxap.js +0 -6
- package/dist/index-BaHICPdF.js +0 -9254
- package/dist/index-C8hnJPjz-DCy9MJoA.js +0 -150
|
@@ -1,24 +1,24 @@
|
|
|
1
|
-
import { y as P, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Pt, a as Ot, O as At, dE as Et, W as wt, g as Rt } from "./url-
|
|
2
|
-
import {
|
|
3
|
-
import { r as d } from "./diag-api-
|
|
1
|
+
import { y as P, f as yt, dG as dt, dI as ht, p as mt, dD as gt, dH as vt, dJ as _t, b as St, dK as bt, dC as Tt, dF as Pt, a as Ot, O as At, dE as Et, W as wt, g as Rt } from "./url-C3shoaOo-CzMoQeLC.js";
|
|
2
|
+
import { V as E, c as H, K as w, y as Ct, t as W, U as L } from "./index-BF58Tzha.js";
|
|
3
|
+
import { r as d } from "./diag-api-DZgsIb8r-DHXVnD-I.js";
|
|
4
4
|
import { a as jt, A as J } from "./ExportResult-B-YLKMaU-DKI4wi_s.js";
|
|
5
|
-
import { bo as Nt, bp as It, br as xt, bs as Dt, bt as Mt, bq as Ut, bm as kt, bu as Lt, O as $t, bn as Bt, bv as Ft } from "./sdk-info-
|
|
6
|
-
import { l as
|
|
5
|
+
import { bo as Nt, bp as It, br as xt, bs as Dt, bt as Mt, bq as Ut, bm as kt, bu as Lt, O as $t, bn as Bt, bv as Ft } from "./sdk-info-CFw-hwXt-DuJp1ta1.js";
|
|
6
|
+
import { l as Vt } from "./utils-CX5YT7yI-BbTNmH0Z.js";
|
|
7
7
|
var p;
|
|
8
8
|
(function(t) {
|
|
9
9
|
t[t.NOT_RECORD = 0] = "NOT_RECORD", t[t.RECORD = 1] = "RECORD", t[t.RECORD_AND_SAMPLED = 2] = "RECORD_AND_SAMPLED";
|
|
10
10
|
})(p || (p = {}));
|
|
11
11
|
var I = W("OpenTelemetry SDK Context Key SUPPRESS_TRACING");
|
|
12
|
-
function
|
|
12
|
+
function q(t) {
|
|
13
13
|
return t.setValue(I, !0);
|
|
14
14
|
}
|
|
15
|
-
function
|
|
15
|
+
function Kt(t) {
|
|
16
16
|
return t.deleteValue(I);
|
|
17
17
|
}
|
|
18
18
|
function x(t) {
|
|
19
19
|
return t.getValue(I) === !0;
|
|
20
20
|
}
|
|
21
|
-
var
|
|
21
|
+
var zt = "=", R = ";", S = ",", O = "baggage", Ht = 180, Wt = 4096, Jt = 8192, qt = function(t, r) {
|
|
22
22
|
var e = typeof Symbol == "function" && t[Symbol.iterator];
|
|
23
23
|
if (!e) return t;
|
|
24
24
|
var n = e.call(t), o, a = [], i;
|
|
@@ -35,7 +35,7 @@ var Vt = "=", R = ";", S = ",", O = "baggage", Kt = 180, Wt = 4096, Jt = 8192, G
|
|
|
35
35
|
}
|
|
36
36
|
return a;
|
|
37
37
|
};
|
|
38
|
-
function
|
|
38
|
+
function G(t) {
|
|
39
39
|
return t.reduce(function(r, e) {
|
|
40
40
|
var n = "" + r + (r !== "" ? S : "") + e;
|
|
41
41
|
return n.length > Jt ? r : n;
|
|
@@ -43,7 +43,7 @@ function q(t) {
|
|
|
43
43
|
}
|
|
44
44
|
function Q(t) {
|
|
45
45
|
return t.getAllEntries().map(function(r) {
|
|
46
|
-
var e =
|
|
46
|
+
var e = qt(r, 2), n = e[0], o = e[1], a = encodeURIComponent(n) + "=" + encodeURIComponent(o.value);
|
|
47
47
|
return o.metadata !== void 0 && (a += R + o.metadata.toString()), a;
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -52,7 +52,7 @@ function D(t) {
|
|
|
52
52
|
if (!(r.length <= 0)) {
|
|
53
53
|
var e = r.shift();
|
|
54
54
|
if (e) {
|
|
55
|
-
var n = e.indexOf(
|
|
55
|
+
var n = e.indexOf(zt);
|
|
56
56
|
if (!(n <= 0)) {
|
|
57
57
|
var o = decodeURIComponent(e.substring(0, n).trim()), a = decodeURIComponent(e.substring(n + 1).trim()), i;
|
|
58
58
|
return r.length > 0 && (i = yt(r.join(R))), { key: o, value: a, metadata: i };
|
|
@@ -60,7 +60,7 @@ function D(t) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
function
|
|
63
|
+
function Gt(t) {
|
|
64
64
|
return typeof t != "string" || t.length === 0 ? {} : t.split(S).map(function(r) {
|
|
65
65
|
return D(r);
|
|
66
66
|
}).filter(function(r) {
|
|
@@ -79,7 +79,7 @@ var Qt = (
|
|
|
79
79
|
if (!(!o || x(r))) {
|
|
80
80
|
var a = Q(o).filter(function(u) {
|
|
81
81
|
return u.length <= Wt;
|
|
82
|
-
}).slice(0,
|
|
82
|
+
}).slice(0, Ht), i = G(a);
|
|
83
83
|
i.length > 0 && n.set(e, O, i);
|
|
84
84
|
}
|
|
85
85
|
}, t.prototype.extract = function(r, e, n) {
|
|
@@ -340,7 +340,7 @@ function vr(t) {
|
|
|
340
340
|
function _r(t) {
|
|
341
341
|
return mr.test(t) && !gr.test(t);
|
|
342
342
|
}
|
|
343
|
-
var B = 32, Sr = 512, F = ",",
|
|
343
|
+
var B = 32, Sr = 512, F = ",", V = "=", ot = (
|
|
344
344
|
/** @class */
|
|
345
345
|
function() {
|
|
346
346
|
function t(r) {
|
|
@@ -357,11 +357,11 @@ var B = 32, Sr = 512, F = ",", z = "=", ot = (
|
|
|
357
357
|
}, t.prototype.serialize = function() {
|
|
358
358
|
var r = this;
|
|
359
359
|
return this._keys().reduce(function(e, n) {
|
|
360
|
-
return e.push(n +
|
|
360
|
+
return e.push(n + V + r.get(n)), e;
|
|
361
361
|
}, []).join(F);
|
|
362
362
|
}, t.prototype._parse = function(r) {
|
|
363
363
|
r.length > Sr || (this._internalState = r.split(F).reverse().reduce(function(e, n) {
|
|
364
|
-
var o = n.trim(), a = o.indexOf(
|
|
364
|
+
var o = n.trim(), a = o.indexOf(V);
|
|
365
365
|
if (a !== -1) {
|
|
366
366
|
var i = o.slice(0, a), u = o.slice(a + 1, n.length);
|
|
367
367
|
vr(i) && _r(u) && e.set(i, u);
|
|
@@ -391,7 +391,7 @@ var wr = (
|
|
|
391
391
|
}
|
|
392
392
|
return t.prototype.inject = function(r, e, n) {
|
|
393
393
|
var o = E.getSpanContext(r);
|
|
394
|
-
if (!(!o || x(r) || !
|
|
394
|
+
if (!(!o || x(r) || !H(o))) {
|
|
395
395
|
var a = br + "-" + o.traceId + "-" + o.spanId + "-0" + Number(o.traceFlags || w.NONE).toString(16);
|
|
396
396
|
n.set(e, m, a), o.traceState && n.set(e, g, o.traceState.serialize());
|
|
397
397
|
}
|
|
@@ -464,7 +464,7 @@ var N = (
|
|
|
464
464
|
}
|
|
465
465
|
return t.prototype.shouldSample = function(r, e, n, o, a, i) {
|
|
466
466
|
var u = E.getSpanContext(r);
|
|
467
|
-
return !u || !
|
|
467
|
+
return !u || !H(u) ? this._root.shouldSample(r, e, n, o, a, i) : u.isRemote ? u.traceFlags & w.SAMPLED ? this._remoteParentSampled.shouldSample(r, e, n, o, a, i) : this._remoteParentNotSampled.shouldSample(r, e, n, o, a, i) : u.traceFlags & w.SAMPLED ? this._localParentSampled.shouldSample(r, e, n, o, a, i) : this._localParentNotSampled.shouldSample(r, e, n, o, a, i);
|
|
468
468
|
}, t.prototype.toString = function() {
|
|
469
469
|
return "ParentBased{root=" + this._root.toString() + ", remoteParentSampled=" + this._remoteParentSampled.toString() + ", remoteParentNotSampled=" + this._remoteParentNotSampled.toString() + ", localParentSampled=" + this._localParentSampled.toString() + ", localParentNotSampled=" + this._localParentNotSampled.toString() + "}";
|
|
470
470
|
}, t;
|
|
@@ -497,7 +497,7 @@ function $r(t, r) {
|
|
|
497
497
|
return t(r(e));
|
|
498
498
|
};
|
|
499
499
|
}
|
|
500
|
-
function
|
|
500
|
+
function K(t) {
|
|
501
501
|
if (!Br(t) || Fr(t) !== xr)
|
|
502
502
|
return !1;
|
|
503
503
|
var r = Lr(t);
|
|
@@ -510,9 +510,9 @@ function Br(t) {
|
|
|
510
510
|
return t != null && typeof t == "object";
|
|
511
511
|
}
|
|
512
512
|
function Fr(t) {
|
|
513
|
-
return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ?
|
|
513
|
+
return t == null ? t === void 0 ? Mr : Dr : s && s in Object(t) ? Vr(t) : Kr(t);
|
|
514
514
|
}
|
|
515
|
-
function
|
|
515
|
+
function Vr(t) {
|
|
516
516
|
var r = lt.call(t, s), e = t[s], n = !1;
|
|
517
517
|
try {
|
|
518
518
|
t[s] = void 0, n = !0;
|
|
@@ -521,11 +521,11 @@ function zr(t) {
|
|
|
521
521
|
var o = ct.call(t);
|
|
522
522
|
return n && (r ? t[s] = e : delete t[s]), o;
|
|
523
523
|
}
|
|
524
|
-
function
|
|
524
|
+
function Kr(t) {
|
|
525
525
|
return ct.call(t);
|
|
526
526
|
}
|
|
527
|
-
var
|
|
528
|
-
function
|
|
527
|
+
var zr = 20;
|
|
528
|
+
function Hr() {
|
|
529
529
|
for (var t = [], r = 0; r < arguments.length; r++)
|
|
530
530
|
t[r] = arguments[r];
|
|
531
531
|
for (var e = t.shift(), n = /* @__PURE__ */ new WeakMap(); t.length > 0; )
|
|
@@ -538,7 +538,7 @@ function A(t) {
|
|
|
538
538
|
function st(t, r, e, n) {
|
|
539
539
|
e === void 0 && (e = 0);
|
|
540
540
|
var o;
|
|
541
|
-
if (!(e >
|
|
541
|
+
if (!(e > zr)) {
|
|
542
542
|
if (e++, _(t) || _(r) || ft(r))
|
|
543
543
|
o = A(r);
|
|
544
544
|
else if (b(t)) {
|
|
@@ -561,7 +561,7 @@ function st(t, r, e, n) {
|
|
|
561
561
|
typeof c > "u" ? delete o[l] : o[l] = c;
|
|
562
562
|
else {
|
|
563
563
|
var f = o[l], T = c;
|
|
564
|
-
if (
|
|
564
|
+
if (z(t, l, n) || z(r, l, n))
|
|
565
565
|
delete o[l];
|
|
566
566
|
else {
|
|
567
567
|
if (y(f) && y(T)) {
|
|
@@ -577,7 +577,7 @@ function st(t, r, e, n) {
|
|
|
577
577
|
return o;
|
|
578
578
|
}
|
|
579
579
|
}
|
|
580
|
-
function
|
|
580
|
+
function z(t, r, e) {
|
|
581
581
|
for (var n = e.get(t[r]) || [], o = 0, a = n.length; o < a; o++) {
|
|
582
582
|
var i = n[o];
|
|
583
583
|
if (i.key === r && i.obj === t)
|
|
@@ -598,7 +598,7 @@ function _(t) {
|
|
|
598
598
|
return typeof t == "string" || typeof t == "number" || typeof t == "boolean" || typeof t > "u" || t instanceof Date || t instanceof RegExp || t === null;
|
|
599
599
|
}
|
|
600
600
|
function Wr(t, r) {
|
|
601
|
-
return !(!
|
|
601
|
+
return !(!K(t) || !K(r));
|
|
602
602
|
}
|
|
603
603
|
var Jr = /* @__PURE__ */ function() {
|
|
604
604
|
var t = function(r, e) {
|
|
@@ -628,7 +628,7 @@ var Jr = /* @__PURE__ */ function() {
|
|
|
628
628
|
return r;
|
|
629
629
|
}(Error)
|
|
630
630
|
);
|
|
631
|
-
function
|
|
631
|
+
function qr(t, r) {
|
|
632
632
|
var e, n = new Promise(function(o, a) {
|
|
633
633
|
e = setTimeout(function() {
|
|
634
634
|
a(new pt("Operation timed out."));
|
|
@@ -640,7 +640,7 @@ function Gr(t, r) {
|
|
|
640
640
|
throw clearTimeout(e), o;
|
|
641
641
|
});
|
|
642
642
|
}
|
|
643
|
-
function
|
|
643
|
+
function Gr(t) {
|
|
644
644
|
return typeof t == "function" && typeof t.__original == "function" && typeof t.__unwrap == "function" && t.__wrapped === !0;
|
|
645
645
|
}
|
|
646
646
|
var Qr = (
|
|
@@ -723,7 +723,7 @@ var Qr = (
|
|
|
723
723
|
);
|
|
724
724
|
function te(t, r) {
|
|
725
725
|
return new Promise(function(e) {
|
|
726
|
-
L.with(
|
|
726
|
+
L.with(q(L.active()), function() {
|
|
727
727
|
t.export(r, function(n) {
|
|
728
728
|
e(n);
|
|
729
729
|
});
|
|
@@ -732,8 +732,8 @@ function te(t, r) {
|
|
|
732
732
|
}
|
|
733
733
|
var re = {
|
|
734
734
|
getKeyPairs: Q,
|
|
735
|
-
serializeKeyPairs:
|
|
736
|
-
parseKeyPairsIntoRecord:
|
|
735
|
+
serializeKeyPairs: G,
|
|
736
|
+
parseKeyPairsIntoRecord: Gt,
|
|
737
737
|
parsePairKeyValue: D
|
|
738
738
|
}, ee = {
|
|
739
739
|
_export: te
|
|
@@ -770,10 +770,10 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
770
770
|
VERSION: Lt,
|
|
771
771
|
W3CBaggagePropagator: Qt,
|
|
772
772
|
W3CTraceContextPropagator: wr,
|
|
773
|
-
_globalThis:
|
|
773
|
+
_globalThis: Vt,
|
|
774
774
|
addHrTimes: dt,
|
|
775
775
|
baggageUtils: re,
|
|
776
|
-
callWithTimeout:
|
|
776
|
+
callWithTimeout: qr,
|
|
777
777
|
deleteRPCMetadata: Cr,
|
|
778
778
|
getEnv: $t,
|
|
779
779
|
getEnvWithoutDefaults: Bt,
|
|
@@ -795,9 +795,9 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
795
795
|
isTimeInputHrTime: Pt,
|
|
796
796
|
isTracingSuppressed: x,
|
|
797
797
|
isUrlIgnored: Ot,
|
|
798
|
-
isWrapped:
|
|
798
|
+
isWrapped: Gr,
|
|
799
799
|
loggingErrorHandler: rt,
|
|
800
|
-
merge:
|
|
800
|
+
merge: Hr,
|
|
801
801
|
millisToHrTime: At,
|
|
802
802
|
otperformance: Et,
|
|
803
803
|
parseEnvironment: Ft,
|
|
@@ -805,21 +805,21 @@ const ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
|
805
805
|
sanitizeAttributes: Yt,
|
|
806
806
|
setGlobalErrorHandler: nr,
|
|
807
807
|
setRPCMetadata: Rr,
|
|
808
|
-
suppressTracing:
|
|
808
|
+
suppressTracing: q,
|
|
809
809
|
timeInputToHrTime: wt,
|
|
810
810
|
unrefTimer: sr,
|
|
811
|
-
unsuppressTracing:
|
|
811
|
+
unsuppressTracing: Kt,
|
|
812
812
|
urlMatches: Rt
|
|
813
813
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
814
814
|
export {
|
|
815
815
|
Qt as J,
|
|
816
|
-
|
|
816
|
+
q as W,
|
|
817
817
|
Y as Z,
|
|
818
818
|
Yt as a,
|
|
819
819
|
pr as b,
|
|
820
820
|
wr as c,
|
|
821
821
|
Yr as d,
|
|
822
|
-
|
|
822
|
+
Hr as k,
|
|
823
823
|
ce as l,
|
|
824
824
|
nt as n,
|
|
825
825
|
p,
|
|
@@ -827,4 +827,4 @@ export {
|
|
|
827
827
|
ee as t,
|
|
828
828
|
x as w
|
|
829
829
|
};
|
|
830
|
-
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtREJuM2VaWDItIX57MDBrfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtQnItSkVJSzYtIX57MDA5fX4uanMnO1xuaW1wb3J0IHsgRyBhcyBHZSwgYiBhcyBibiwgSiBhcyBKdCwgdSBhcyB1cywgVyBhcyBXaSwgVSBhcyBVZSB9IGZyb20gJy4vaW5kZXgtIX57MDA1fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktRFdfRlRXQmMtIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgYSwgQSBhcyBBJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CLVlMS01hVS0hfnswMG19fi5qcyc7XG5pbXBvcnQgeyBibyBhcyBQJDEsIGJwIGFzIE0kMSwgYnIgYXMgSSQxLCBicyBhcyBrXywgYnQgYXMgSl8sIGJxIGFzIFhBLCBibSBhcyByJDEsIGJ1IGFzICRfLCBPIGFzIE9ULCBibiBhcyBMVCwgYnYgYXMgVSQxIH0gZnJvbSAnLi9zZGstaW5mby1DaVZCck9fOS0hfnswMGh9fi5qcyc7XG5pbXBvcnQgeyBsIH0gZnJvbSAnLi91dGlscy1DWDVZVDd5SS0hfnswMGJ9fi5qcyc7XG5cbnZhciBwO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkocCB8fCAocCA9IHt9KSk7XG52YXIgTiA9IFdpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgU1VQUFJFU1NfVFJBQ0lOR1wiKTtcbmZ1bmN0aW9uIFcoZSkge1xuICByZXR1cm4gZS5zZXRWYWx1ZShOLCAhMCk7XG59XG5mdW5jdGlvbiBGZShlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKE4pO1xufVxuZnVuY3Rpb24gdyhlKSB7XG4gIHJldHVybiBlLmdldFZhbHVlKE4pID09PSAhMDtcbn1cbnZhciB6ZSA9IFwiPVwiLCBDID0gXCI7XCIsIFMgPSBcIixcIiwgUCA9IFwiYmFnZ2FnZVwiLCBrZSA9IDE4MCwgWWUgPSA0MDk2LCBYZSA9IDgxOTIsIFdlID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gJChlKSB7XG4gIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgciArIChyICE9PSBcIlwiID8gUyA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBYZSA/IHIgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIEooZSkge1xuICByZXR1cm4gZS5nZXRBbGxFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgdCA9IFdlKHIsIDIpLCBuID0gdFswXSwgYSA9IHRbMV0sIGkgPSBlbmNvZGVVUklDb21wb25lbnQobikgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhLnZhbHVlKTtcbiAgICByZXR1cm4gYS5tZXRhZGF0YSAhPT0gdm9pZCAwICYmIChpICs9IEMgKyBhLm1ldGFkYXRhLnRvU3RyaW5nKCkpLCBpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEQoZSkge1xuICB2YXIgciA9IGUuc3BsaXQoQyk7XG4gIGlmICghKHIubGVuZ3RoIDw9IDApKSB7XG4gICAgdmFyIHQgPSByLnNoaWZ0KCk7XG4gICAgaWYgKHQpIHtcbiAgICAgIHZhciBuID0gdC5pbmRleE9mKHplKTtcbiAgICAgIGlmICghKG4gPD0gMCkpIHtcbiAgICAgICAgdmFyIGEgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoMCwgbikudHJpbSgpKSwgaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhuICsgMSkudHJpbSgpKSwgbztcbiAgICAgICAgcmV0dXJuIHIubGVuZ3RoID4gMCAmJiAobyA9IGZfKHIuam9pbihDKSkpLCB7IGtleTogYSwgdmFsdWU6IGksIG1ldGFkYXRhOiBvIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiAkZShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSAhPSBcInN0cmluZ1wiIHx8IGUubGVuZ3RoID09PSAwID8ge30gOiBlLnNwbGl0KFMpLm1hcChmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIEQocik7XG4gIH0pLmZpbHRlcihmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIHIgIT09IHZvaWQgMCAmJiByLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH0pLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgcmV0dXJuIHJbdC5rZXldID0gdC52YWx1ZSwgcjtcbiAgfSwge30pO1xufVxudmFyIEplID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IHlfLmdldEJhZ2dhZ2Uocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpKSkge1xuICAgICAgICB2YXIgaSA9IEooYSkuZmlsdGVyKGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICByZXR1cm4gdS5sZW5ndGggPD0gWWU7XG4gICAgICAgIH0pLnNsaWNlKDAsIGtlKSwgbyA9ICQoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBQLCBvKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBQKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oUykgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIHUgPSBpLnNwbGl0KFMpO1xuICAgICAgcmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgIHZhciBsID0gRChmKTtcbiAgICAgICAgaWYgKGwpIHtcbiAgICAgICAgICB2YXIgYyA9IHsgdmFsdWU6IGwudmFsdWUgfTtcbiAgICAgICAgICBsLm1ldGFkYXRhICYmIChjLm1ldGFkYXRhID0gbC5tZXRhZGF0YSksIG9bbC5rZXldID0gYztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IHIgOiB5Xy5zZXRCYWdnYWdlKHIsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtQXTtcbiAgICB9LCBlO1xuICB9KClcbiksIHFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IHIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgcjtcbiAgICB9LCBlO1xuICB9KClcbiksIHEgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgUWUgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBaZShlKSB7XG4gIHZhciByJDEsIHQsIG4gPSB7fTtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgZSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSBxKE9iamVjdC5lbnRyaWVzKGUpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gUWUoaS52YWx1ZSwgMiksIHUgPSBvWzBdLCBmID0gb1sxXTtcbiAgICAgIGlmICghUSh1KSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFaKGYpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIEFycmF5LmlzQXJyYXkoZikgPyBuW3VdID0gZi5zbGljZSgpIDogblt1XSA9IGY7XG4gICAgfVxuICB9IGNhdGNoIChsKSB7XG4gICAgciQxID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAociQxKSB0aHJvdyByJDEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuZnVuY3Rpb24gUShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiICYmIGUubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIFooZSkge1xuICByZXR1cm4gZSA9PSBudWxsID8gITAgOiBBcnJheS5pc0FycmF5KGUpID8gZXIoZSkgOiBlZShlKTtcbn1cbmZ1bmN0aW9uIGVyKGUpIHtcbiAgdmFyIHIsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoZSksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChlZShvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAodSkge1xuICAgIHIgPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gITA7XG59XG5mdW5jdGlvbiBlZShlKSB7XG4gIHN3aXRjaCAodHlwZW9mIGUpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gITA7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gcmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgci5lcnJvcihycihlKSk7XG4gIH07XG59XG5mdW5jdGlvbiBycihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiID8gZSA6IEpTT04uc3RyaW5naWZ5KHRyKGUpKTtcbn1cbmZ1bmN0aW9uIHRyKGUpIHtcbiAgZm9yICh2YXIgciA9IHt9LCB0ID0gZTsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFyW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAocltuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiByO1xufVxudmFyIHRlID0gcmUoKTtcbmZ1bmN0aW9uIG5yKGUpIHtcbiAgdGUgPSBlO1xufVxuZnVuY3Rpb24gbmUoZSkge1xuICB0cnkge1xuICAgIHRlKGUpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIGFyID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBpciA9IGZ1bmN0aW9uKGUsIHIsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gci5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHIpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsIDAsIG4pKSwgaVtuXSA9IHJbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyKSk7XG59O1xuZnVuY3Rpb24gb3IoZSkge1xuICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgaXIoW10sIGFyKEEkMShlKSksICExKSkpO1xufVxudmFyIHVyID0gOCwgZnIgPSAxNiwgbHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFYoZnIpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gVih1cik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9KClcbiksIHkgPSBBcnJheSgzMik7XG5mdW5jdGlvbiBWKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZSAqIDI7IHQrKylcbiAgICAgIHlbdF0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikgKyA0OCwgeVt0XSA+PSA1OCAmJiAoeVt0XSArPSAzOSk7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgeS5zbGljZSgwLCBlICogMikpO1xuICB9O1xufVxuZnVuY3Rpb24gc3IoZSkge1xufVxudmFyIGNyID0gZnVuY3Rpb24oZSkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IHIgJiYgZVtyXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IociA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIHByID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgciA9PT0gdm9pZCAwICYmIChyID0ge30pO1xuICAgICAgdmFyIHQ7XG4gICAgICB0aGlzLl9wcm9wYWdhdG9ycyA9ICh0ID0gci5wcm9wYWdhdG9ycykgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFtdLCB0aGlzLl9maWVsZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5fcHJvcGFnYXRvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmZpZWxkcyA9PSBcImZ1bmN0aW9uXCIgPyBuLmZpZWxkcygpIDogW107XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24obiwgYSkge1xuICAgICAgICByZXR1cm4gbi5jb25jYXQoYSk7XG4gICAgICB9LCBbXSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIkMSwgdCwgbikge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gY3IodGhpcy5fcHJvcGFnYXRvcnMpLCB1ID0gby5uZXh0KCk7ICF1LmRvbmU7IHUgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBmID0gdS52YWx1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZi5pbmplY3QociQxLCB0LCBuKTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gaW5qZWN0IHdpdGggXCIgKyBmLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIGwubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIGEgPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHUgJiYgIXUuZG9uZSAmJiAoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGFnYXRvcnMucmVkdWNlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaS5leHRyYWN0KGEsIHQsIG4pO1xuICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGV4dHJhY3Qgd2l0aCBcIiArIGkuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgby5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIHIkMSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzLnNsaWNlKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBJID0gXCJbXzAtOWEtei0qL11cIiwgZHIgPSBcIlthLXpdXCIgKyBJICsgXCJ7MCwyNTV9XCIsIF9yID0gXCJbYS16MC05XVwiICsgSSArIFwiezAsMjQwfUBbYS16XVwiICsgSSArIFwiezAsMTN9XCIsIHlyID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIGRyICsgXCJ8XCIgKyBfciArIFwiKSRcIiksIHZyID0gL15bIC1+XXswLDI1NX1bIS1+XSQvLCBociA9IC8sfD0vO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4geXIudGVzdChlKTtcbn1cbmZ1bmN0aW9uIGdyKGUpIHtcbiAgcmV0dXJuIHZyLnRlc3QoZSkgJiYgIWhyLnRlc3QoZSk7XG59XG52YXIgVSA9IDMyLCBTciA9IDUxMiwgSCA9IFwiLFwiLCBLID0gXCI9XCIsIGFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIgJiYgdGhpcy5fcGFyc2Uocik7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihyLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMocikgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIG4uX2ludGVybmFsU3RhdGUuc2V0KHIsIHQpLCBuO1xuICAgIH0sIGUucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKHIpLCB0O1xuICAgIH0sIGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChyKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgSyArIHIuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKEgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHIubGVuZ3RoID4gU3IgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSByLnNwbGl0KEgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKEspO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIHUgPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgbXIobykgJiYgZ3IodSkgJiYgdC5zZXQobywgdSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4gVSAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIFUpKSkpO1xuICAgIH0sIGUucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgICAgcmV0dXJuIHIuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgdiA9IFwidHJhY2VwYXJlbnRcIiwgaCA9IFwidHJhY2VzdGF0ZVwiLCBBciA9IFwiMDBcIiwgRXIgPSBcIig/IWZmKVtcXFxcZGEtZl17Mn1cIiwgVHIgPSBcIig/IVswXXszMn0pW1xcXFxkYS1mXXszMn1cIiwgUHIgPSBcIig/IVswXXsxNn0pW1xcXFxkYS1mXXsxNn1cIiwgUnIgPSBcIltcXFxcZGEtZl17Mn1cIiwgT3IgPSBuZXcgUmVnRXhwKFwiXlxcXFxzPyhcIiArIEVyICsgXCIpLShcIiArIFRyICsgXCIpLShcIiArIFByICsgXCIpLShcIiArIFJyICsgXCIpKC0uKik/XFxcXHM/JFwiKTtcbmZ1bmN0aW9uIGllKGUpIHtcbiAgdmFyIHIgPSBPci5leGVjKGUpO1xuICByZXR1cm4gIXIgfHwgclsxXSA9PT0gXCIwMFwiICYmIHJbNV0gPyBudWxsIDoge1xuICAgIHRyYWNlSWQ6IHJbMl0sXG4gICAgc3BhbklkOiByWzNdLFxuICAgIHRyYWNlRmxhZ3M6IHBhcnNlSW50KHJbNF0sIDE2KVxuICB9O1xufVxudmFyIGJyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IEdlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgaWYgKCEoIWEgfHwgdyhyKSB8fCAhYm4oYSkpKSB7XG4gICAgICAgIHZhciBpID0gQXIgKyBcIi1cIiArIGEudHJhY2VJZCArIFwiLVwiICsgYS5zcGFuSWQgKyBcIi0wXCIgKyBOdW1iZXIoYS50cmFjZUZsYWdzIHx8IEp0Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgdiwgaSksIGEudHJhY2VTdGF0ZSAmJiBuLnNldCh0LCBoLCBhLnRyYWNlU3RhdGUuc2VyaWFsaXplKCkpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIHYpO1xuICAgICAgaWYgKCFhKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShhKSA/IGFbMF0gOiBhO1xuICAgICAgaWYgKHR5cGVvZiBpICE9IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSBpZShpKTtcbiAgICAgIGlmICghbylcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICBvLmlzUmVtb3RlID0gITA7XG4gICAgICB2YXIgdSA9IG4uZ2V0KHQsIGgpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIGYgPSBBcnJheS5pc0FycmF5KHUpID8gdS5qb2luKFwiLFwiKSA6IHU7XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBhZSh0eXBlb2YgZiA9PSBcInN0cmluZ1wiID8gZiA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gR2Uuc2V0U3BhbkNvbnRleHQociwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW3YsIGhdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTCA9IFdpKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBqO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5IVFRQID0gXCJodHRwXCI7XG59KShqIHx8IChqID0ge30pKTtcbmZ1bmN0aW9uIENyKGUsIHIpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUoTCwgcik7XG59XG5mdW5jdGlvbiBJcihlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKEwpO1xufVxuZnVuY3Rpb24ganIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShMKTtcbn1cbnZhciBNID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIG0gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHAuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIE1yID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdmFyIHQsIG4sIGEsIGk7XG4gICAgICB0aGlzLl9yb290ID0gci5yb290LCB0aGlzLl9yb290IHx8IChuZShuZXcgRXJyb3IoXCJQYXJlbnRCYXNlZFNhbXBsZXIgbXVzdCBoYXZlIGEgcm9vdCBzYW1wbGVyIGNvbmZpZ3VyZWRcIikpLCB0aGlzLl9yb290ID0gbmV3IG0oKSksIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQgPSAodCA9IHIucmVtb3RlUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IG5ldyBtKCksIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQgPSAobiA9IHIucmVtb3RlUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IG5ldyBNKCksIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZCA9IChhID0gci5sb2NhbFBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiBuZXcgbSgpLCB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQgPSAoaSA9IHIubG9jYWxQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbmV3IE0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHIsIHQsIG4sIGEsIGksIG8pIHtcbiAgICAgIHZhciB1ID0gR2UuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICByZXR1cm4gIXUgfHwgIWJuKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgSnQuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBKdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHVzKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBVZS53aXRoKFcoVWUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksR0FBUyxLQUFLQyxTQUFVO0FBQ3JFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxTQUFTLEtBQUFDLFVB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QU8sU0FBUyxDQUFDLENBQUM7IiwKICAibmFtZXMiOiBbInlfIiwgImZfIiwgIkhfIiwgInJfIiwgInBfIiwgIndlIiwgImtlJDEiLCAieGUiLCAiUWUkMSIsICJYZSQxIiwgInFlJDEiLCAiTl8iLCAiWmUkMSIsICJPIiwgIlIkMSIsICJXZSQxIiwgImdfIiwgIkdlIiwgImJuIiwgIkp0IiwgInVzIiwgIlVlIiwgInIiLCAiYSIsICJBJDEiLCAiUCQxIiwgIk0kMSIsICJJJDEiLCAia18iLCAiSl8iLCAiWEEiLCAiciQxIiwgIiRfIiwgIk9UIiwgIkxUIiwgIlUkMSIsICJsIiwgImUiLCAiTiIsICJXaSIsICJXIiwgIkZlIiwgInciLCAiemUiLCAiQyIsICJQIiwgImtlIiwgIlllIiwgIlhlIiwgIldlIiwgInQiLCAiaSIsICJvIiwgIiQiLCAiSiIsICIkZSIsICJKZSIsICJmIiwgImMiLCAicWUiLCAicSIsICJRZSIsICJaZSIsICJRIiwgIloiLCAiZXIiLCAiZWUiLCAicmUiLCAidHIiLCAidGUiLCAibmUiLCAiYXIiLCAiaXIiLCAib3IiLCAiZnIiLCAibHIiLCAiViIsICJ5IiwgImNyIiwgIkkiLCAiZHIiLCAiX3IiLCAieXIiLCAidnIiLCAiaHIiLCAibXIiLCAiZ3IiLCAiVSIsICJIIiwgIksiLCAiYWUiLCAidiIsICJoIiwgIkFyIiwgIkVyIiwgIlRyIiwgIlByIiwgIlJyIiwgIk9yIiwgImllIiwgImJyIiwgIkwiLCAiQ3IiLCAiSXIiLCAiTSIsICJtIiwgIk1yIiwgIk5yIiwgIndyIiwgIkxyIiwgInhyIiwgIm9lIiwgIkdyIiwgIkJyIiwgIlZyIiwgInVlIiwgImZlIiwgImxlIiwgIkYiLCAiVXIiLCAiSHIiLCAiS3IiLCAiRnIiLCAienIiLCAia3IiLCAic2UiLCAiUiIsICJBIiwgImciLCAiY2UiLCAiZCIsICJZciIsICJFIiwgInoiLCAieCIsICJHIiwgIlhyIiwgInBlIiwgIldyIiwgIiRyIiwgIkpyIiwgInFyIiwgIlFyIiwgIlpyIiwgImV0IiwgInJ0IiwgInR0IiwgImx0Il0KfQo=
|
|
830
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiaW5kZXgtQ1gtdVRLZmQtIX57MDBrfX4uanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbImltcG9ydCB7IHkgYXMgeV8sIGYgYXMgZl8sIGRHIGFzIEhfLCBkSSBhcyByXywgcCBhcyBwXywgZEQgYXMgd2UsIGRIIGFzIGtlJDEsIGRKIGFzIHhlLCBiIGFzIFFlJDEsIGRLIGFzIFhlJDEsIGRDIGFzIHFlJDEsIGRGIGFzIE5fLCBhIGFzIFplJDEsIE8sIGRFIGFzIFIkMSwgVyBhcyBXZSQxLCBnIGFzIGdfIH0gZnJvbSAnLi91cmwtQzNzaG9hT28tIX57MDA5fX4uanMnO1xuaW1wb3J0IHsgViBhcyBWZSwgYyBhcyBDbiwgSyBhcyBLdCwgeSBhcyB5cywgdCBhcyB0cywgVSBhcyBVZSB9IGZyb20gJy4vaW5kZXgtIX57MDA1fX4uanMnO1xuaW1wb3J0IHsgciB9IGZyb20gJy4vZGlhZy1hcGktRFpnc0liOHItIX57MDA4fX4uanMnO1xuaW1wb3J0IHsgYSwgQSBhcyBBJDEgfSBmcm9tICcuL0V4cG9ydFJlc3VsdC1CLVlMS01hVS0hfnswMG19fi5qcyc7XG5pbXBvcnQgeyBibyBhcyBQJDEsIGJwIGFzIE0kMSwgYnIgYXMgSSQxLCBicyBhcyBrXywgYnQgYXMgSl8sIGJxIGFzIFhBLCBibSBhcyByJDEsIGJ1IGFzICRfLCBPIGFzIE9ULCBibiBhcyBMVCwgYnYgYXMgVSQxIH0gZnJvbSAnLi9zZGstaW5mby1DRnctaHdYdC0hfnswMGh9fi5qcyc7XG5pbXBvcnQgeyBsIH0gZnJvbSAnLi91dGlscy1DWDVZVDd5SS0hfnswMGJ9fi5qcyc7XG5cbnZhciBwO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZVtlLk5PVF9SRUNPUkQgPSAwXSA9IFwiTk9UX1JFQ09SRFwiLCBlW2UuUkVDT1JEID0gMV0gPSBcIlJFQ09SRFwiLCBlW2UuUkVDT1JEX0FORF9TQU1QTEVEID0gMl0gPSBcIlJFQ09SRF9BTkRfU0FNUExFRFwiO1xufSkocCB8fCAocCA9IHt9KSk7XG52YXIgTiA9IHRzKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgU1VQUFJFU1NfVFJBQ0lOR1wiKTtcbmZ1bmN0aW9uIFcoZSkge1xuICByZXR1cm4gZS5zZXRWYWx1ZShOLCAhMCk7XG59XG5mdW5jdGlvbiBGZShlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKE4pO1xufVxuZnVuY3Rpb24gdyhlKSB7XG4gIHJldHVybiBlLmdldFZhbHVlKE4pID09PSAhMDtcbn1cbnZhciB6ZSA9IFwiPVwiLCBDID0gXCI7XCIsIFMgPSBcIixcIiwgUCA9IFwiYmFnZ2FnZVwiLCBrZSA9IDE4MCwgWWUgPSA0MDk2LCBYZSA9IDgxOTIsIFdlID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59O1xuZnVuY3Rpb24gJChlKSB7XG4gIHJldHVybiBlLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgdmFyIG4gPSBcIlwiICsgciArIChyICE9PSBcIlwiID8gUyA6IFwiXCIpICsgdDtcbiAgICByZXR1cm4gbi5sZW5ndGggPiBYZSA/IHIgOiBuO1xuICB9LCBcIlwiKTtcbn1cbmZ1bmN0aW9uIEooZSkge1xuICByZXR1cm4gZS5nZXRBbGxFbnRyaWVzKCkubWFwKGZ1bmN0aW9uKHIpIHtcbiAgICB2YXIgdCA9IFdlKHIsIDIpLCBuID0gdFswXSwgYSA9IHRbMV0sIGkgPSBlbmNvZGVVUklDb21wb25lbnQobikgKyBcIj1cIiArIGVuY29kZVVSSUNvbXBvbmVudChhLnZhbHVlKTtcbiAgICByZXR1cm4gYS5tZXRhZGF0YSAhPT0gdm9pZCAwICYmIChpICs9IEMgKyBhLm1ldGFkYXRhLnRvU3RyaW5nKCkpLCBpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIEQoZSkge1xuICB2YXIgciA9IGUuc3BsaXQoQyk7XG4gIGlmICghKHIubGVuZ3RoIDw9IDApKSB7XG4gICAgdmFyIHQgPSByLnNoaWZ0KCk7XG4gICAgaWYgKHQpIHtcbiAgICAgIHZhciBuID0gdC5pbmRleE9mKHplKTtcbiAgICAgIGlmICghKG4gPD0gMCkpIHtcbiAgICAgICAgdmFyIGEgPSBkZWNvZGVVUklDb21wb25lbnQodC5zdWJzdHJpbmcoMCwgbikudHJpbSgpKSwgaSA9IGRlY29kZVVSSUNvbXBvbmVudCh0LnN1YnN0cmluZyhuICsgMSkudHJpbSgpKSwgbztcbiAgICAgICAgcmV0dXJuIHIubGVuZ3RoID4gMCAmJiAobyA9IGZfKHIuam9pbihDKSkpLCB7IGtleTogYSwgdmFsdWU6IGksIG1ldGFkYXRhOiBvIH07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiAkZShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSAhPSBcInN0cmluZ1wiIHx8IGUubGVuZ3RoID09PSAwID8ge30gOiBlLnNwbGl0KFMpLm1hcChmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIEQocik7XG4gIH0pLmZpbHRlcihmdW5jdGlvbihyKSB7XG4gICAgcmV0dXJuIHIgIT09IHZvaWQgMCAmJiByLnZhbHVlLmxlbmd0aCA+IDA7XG4gIH0pLnJlZHVjZShmdW5jdGlvbihyLCB0KSB7XG4gICAgcmV0dXJuIHJbdC5rZXldID0gdC52YWx1ZSwgcjtcbiAgfSwge30pO1xufVxudmFyIEplID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IHlfLmdldEJhZ2dhZ2Uocik7XG4gICAgICBpZiAoISghYSB8fCB3KHIpKSkge1xuICAgICAgICB2YXIgaSA9IEooYSkuZmlsdGVyKGZ1bmN0aW9uKHUpIHtcbiAgICAgICAgICByZXR1cm4gdS5sZW5ndGggPD0gWWU7XG4gICAgICAgIH0pLnNsaWNlKDAsIGtlKSwgbyA9ICQoaSk7XG4gICAgICAgIG8ubGVuZ3RoID4gMCAmJiBuLnNldCh0LCBQLCBvKTtcbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociwgdCwgbikge1xuICAgICAgdmFyIGEgPSBuLmdldCh0LCBQKSwgaSA9IEFycmF5LmlzQXJyYXkoYSkgPyBhLmpvaW4oUykgOiBhO1xuICAgICAgaWYgKCFpKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBvID0ge307XG4gICAgICBpZiAoaS5sZW5ndGggPT09IDApXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIHUgPSBpLnNwbGl0KFMpO1xuICAgICAgcmV0dXJuIHUuZm9yRWFjaChmdW5jdGlvbihmKSB7XG4gICAgICAgIHZhciBsID0gRChmKTtcbiAgICAgICAgaWYgKGwpIHtcbiAgICAgICAgICB2YXIgYyA9IHsgdmFsdWU6IGwudmFsdWUgfTtcbiAgICAgICAgICBsLm1ldGFkYXRhICYmIChjLm1ldGFkYXRhID0gbC5tZXRhZGF0YSksIG9bbC5rZXldID0gYztcbiAgICAgICAgfVxuICAgICAgfSksIE9iamVjdC5lbnRyaWVzKG8pLmxlbmd0aCA9PT0gMCA/IHIgOiB5Xy5zZXRCYWdnYWdlKHIsIHlfLmNyZWF0ZUJhZ2dhZ2UobykpO1xuICAgIH0sIGUucHJvdG90eXBlLmZpZWxkcyA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIFtQXTtcbiAgICB9LCBlO1xuICB9KClcbiksIHFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fbW9ub3RvbmljQ2xvY2sgPSB0LCB0aGlzLl9lcG9jaE1pbGxpcyA9IHIubm93KCksIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzID0gdC5ub3coKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLm5vdyA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSB0aGlzLl9tb25vdG9uaWNDbG9jay5ub3coKSAtIHRoaXMuX3BlcmZvcm1hbmNlTWlsbGlzO1xuICAgICAgcmV0dXJuIHRoaXMuX2Vwb2NoTWlsbGlzICsgcjtcbiAgICB9LCBlO1xuICB9KClcbiksIHEgPSBmdW5jdGlvbihlKSB7XG4gIHZhciByID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCB0ID0gciAmJiBlW3JdLCBuID0gMDtcbiAgaWYgKHQpIHJldHVybiB0LmNhbGwoZSk7XG4gIGlmIChlICYmIHR5cGVvZiBlLmxlbmd0aCA9PSBcIm51bWJlclwiKSByZXR1cm4ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGUgJiYgbiA+PSBlLmxlbmd0aCAmJiAoZSA9IHZvaWQgMCksIHsgdmFsdWU6IGUgJiYgZVtuKytdLCBkb25lOiAhZSB9O1xuICAgIH1cbiAgfTtcbiAgdGhyb3cgbmV3IFR5cGVFcnJvcihyID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xufSwgUWUgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn07XG5mdW5jdGlvbiBaZShlKSB7XG4gIHZhciByJDEsIHQsIG4gPSB7fTtcbiAgaWYgKHR5cGVvZiBlICE9IFwib2JqZWN0XCIgfHwgZSA9PSBudWxsKVxuICAgIHJldHVybiBuO1xuICB0cnkge1xuICAgIGZvciAodmFyIGEgPSBxKE9iamVjdC5lbnRyaWVzKGUpKSwgaSA9IGEubmV4dCgpOyAhaS5kb25lOyBpID0gYS5uZXh0KCkpIHtcbiAgICAgIHZhciBvID0gUWUoaS52YWx1ZSwgMiksIHUgPSBvWzBdLCBmID0gb1sxXTtcbiAgICAgIGlmICghUSh1KSkge1xuICAgICAgICByLndhcm4oXCJJbnZhbGlkIGF0dHJpYnV0ZSBrZXk6IFwiICsgdSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFaKGYpKSB7XG4gICAgICAgIHIud2FybihcIkludmFsaWQgYXR0cmlidXRlIHZhbHVlIHNldCBmb3Iga2V5OiBcIiArIHUpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIEFycmF5LmlzQXJyYXkoZikgPyBuW3VdID0gZi5zbGljZSgpIDogblt1XSA9IGY7XG4gICAgfVxuICB9IGNhdGNoIChsKSB7XG4gICAgciQxID0geyBlcnJvcjogbCB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBpICYmICFpLmRvbmUgJiYgKHQgPSBhLnJldHVybikgJiYgdC5jYWxsKGEpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAociQxKSB0aHJvdyByJDEuZXJyb3I7XG4gICAgfVxuICB9XG4gIHJldHVybiBuO1xufVxuZnVuY3Rpb24gUShlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiICYmIGUubGVuZ3RoID4gMDtcbn1cbmZ1bmN0aW9uIFooZSkge1xuICByZXR1cm4gZSA9PSBudWxsID8gITAgOiBBcnJheS5pc0FycmF5KGUpID8gZXIoZSkgOiBlZShlKTtcbn1cbmZ1bmN0aW9uIGVyKGUpIHtcbiAgdmFyIHIsIHQsIG47XG4gIHRyeSB7XG4gICAgZm9yICh2YXIgYSA9IHEoZSksIGkgPSBhLm5leHQoKTsgIWkuZG9uZTsgaSA9IGEubmV4dCgpKSB7XG4gICAgICB2YXIgbyA9IGkudmFsdWU7XG4gICAgICBpZiAobyAhPSBudWxsKSB7XG4gICAgICAgIGlmICghbikge1xuICAgICAgICAgIGlmIChlZShvKSkge1xuICAgICAgICAgICAgbiA9IHR5cGVvZiBvO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiAhMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIG8gIT09IG4pXG4gICAgICAgICAgcmV0dXJuICExO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAodSkge1xuICAgIHIgPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGkgJiYgIWkuZG9uZSAmJiAodCA9IGEucmV0dXJuKSAmJiB0LmNhbGwoYSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChyKSB0aHJvdyByLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gITA7XG59XG5mdW5jdGlvbiBlZShlKSB7XG4gIHN3aXRjaCAodHlwZW9mIGUpIHtcbiAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgY2FzZSBcImJvb2xlYW5cIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICByZXR1cm4gITA7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gcmUoKSB7XG4gIHJldHVybiBmdW5jdGlvbihlKSB7XG4gICAgci5lcnJvcihycihlKSk7XG4gIH07XG59XG5mdW5jdGlvbiBycihlKSB7XG4gIHJldHVybiB0eXBlb2YgZSA9PSBcInN0cmluZ1wiID8gZSA6IEpTT04uc3RyaW5naWZ5KHRyKGUpKTtcbn1cbmZ1bmN0aW9uIHRyKGUpIHtcbiAgZm9yICh2YXIgciA9IHt9LCB0ID0gZTsgdCAhPT0gbnVsbDsgKVxuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLmZvckVhY2goZnVuY3Rpb24obikge1xuICAgICAgaWYgKCFyW25dKSB7XG4gICAgICAgIHZhciBhID0gdFtuXTtcbiAgICAgICAgYSAmJiAocltuXSA9IFN0cmluZyhhKSk7XG4gICAgICB9XG4gICAgfSksIHQgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodCk7XG4gIHJldHVybiByO1xufVxudmFyIHRlID0gcmUoKTtcbmZ1bmN0aW9uIG5yKGUpIHtcbiAgdGUgPSBlO1xufVxuZnVuY3Rpb24gbmUoZSkge1xuICB0cnkge1xuICAgIHRlKGUpO1xuICB9IGNhdGNoIHtcbiAgfVxufVxudmFyIGFyID0gZnVuY3Rpb24oZSwgcikge1xuICB2YXIgdCA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIGVbU3ltYm9sLml0ZXJhdG9yXTtcbiAgaWYgKCF0KSByZXR1cm4gZTtcbiAgdmFyIG4gPSB0LmNhbGwoZSksIGEsIGkgPSBbXSwgbztcbiAgdHJ5IHtcbiAgICBmb3IgKDsgKHIgPT09IHZvaWQgMCB8fCByLS0gPiAwKSAmJiAhKGEgPSBuLm5leHQoKSkuZG9uZTsgKSBpLnB1c2goYS52YWx1ZSk7XG4gIH0gY2F0Y2ggKHUpIHtcbiAgICBvID0geyBlcnJvcjogdSB9O1xuICB9IGZpbmFsbHkge1xuICAgIHRyeSB7XG4gICAgICBhICYmICFhLmRvbmUgJiYgKHQgPSBuLnJldHVybikgJiYgdC5jYWxsKG4pO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBpZiAobykgdGhyb3cgby5lcnJvcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGk7XG59LCBpciA9IGZ1bmN0aW9uKGUsIHIsIHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDIpIGZvciAodmFyIG4gPSAwLCBhID0gci5sZW5ndGgsIGk7IG4gPCBhOyBuKyspXG4gICAgKGkgfHwgIShuIGluIHIpKSAmJiAoaSB8fCAoaSA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIsIDAsIG4pKSwgaVtuXSA9IHJbbl0pO1xuICByZXR1cm4gZS5jb25jYXQoaSB8fCBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChyKSk7XG59O1xuZnVuY3Rpb24gb3IoZSkge1xuICByZXR1cm4gYnRvYShTdHJpbmcuZnJvbUNoYXJDb2RlLmFwcGx5KFN0cmluZywgaXIoW10sIGFyKEEkMShlKSksICExKSkpO1xufVxudmFyIHVyID0gOCwgZnIgPSAxNiwgbHIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgICB0aGlzLmdlbmVyYXRlVHJhY2VJZCA9IFYoZnIpLCB0aGlzLmdlbmVyYXRlU3BhbklkID0gVih1cik7XG4gICAgfVxuICAgIHJldHVybiBlO1xuICB9KClcbiksIHkgPSBBcnJheSgzMik7XG5mdW5jdGlvbiBWKGUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKCkge1xuICAgIGZvciAodmFyIHQgPSAwOyB0IDwgZSAqIDI7IHQrKylcbiAgICAgIHlbdF0gPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxNikgKyA0OCwgeVt0XSA+PSA1OCAmJiAoeVt0XSArPSAzOSk7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkobnVsbCwgeS5zbGljZSgwLCBlICogMikpO1xuICB9O1xufVxuZnVuY3Rpb24gc3IoZSkge1xufVxudmFyIGNyID0gZnVuY3Rpb24oZSkge1xuICB2YXIgciA9IHR5cGVvZiBTeW1ib2wgPT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgdCA9IHIgJiYgZVtyXSwgbiA9IDA7XG4gIGlmICh0KSByZXR1cm4gdC5jYWxsKGUpO1xuICBpZiAoZSAmJiB0eXBlb2YgZS5sZW5ndGggPT0gXCJudW1iZXJcIikgcmV0dXJuIHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBlICYmIG4gPj0gZS5sZW5ndGggJiYgKGUgPSB2b2lkIDApLCB7IHZhbHVlOiBlICYmIGVbbisrXSwgZG9uZTogIWUgfTtcbiAgICB9XG4gIH07XG4gIHRocm93IG5ldyBUeXBlRXJyb3IociA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcbn0sIHByID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgciA9PT0gdm9pZCAwICYmIChyID0ge30pO1xuICAgICAgdmFyIHQ7XG4gICAgICB0aGlzLl9wcm9wYWdhdG9ycyA9ICh0ID0gci5wcm9wYWdhdG9ycykgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IFtdLCB0aGlzLl9maWVsZHMgPSBBcnJheS5mcm9tKG5ldyBTZXQodGhpcy5fcHJvcGFnYXRvcnMubWFwKGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBuLmZpZWxkcyA9PSBcImZ1bmN0aW9uXCIgPyBuLmZpZWxkcygpIDogW107XG4gICAgICB9KS5yZWR1Y2UoZnVuY3Rpb24obiwgYSkge1xuICAgICAgICByZXR1cm4gbi5jb25jYXQoYSk7XG4gICAgICB9LCBbXSkpKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLmluamVjdCA9IGZ1bmN0aW9uKHIkMSwgdCwgbikge1xuICAgICAgdmFyIGEsIGk7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKHZhciBvID0gY3IodGhpcy5fcHJvcGFnYXRvcnMpLCB1ID0gby5uZXh0KCk7ICF1LmRvbmU7IHUgPSBvLm5leHQoKSkge1xuICAgICAgICAgIHZhciBmID0gdS52YWx1ZTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZi5pbmplY3QociQxLCB0LCBuKTtcbiAgICAgICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgICAgICByLndhcm4oXCJGYWlsZWQgdG8gaW5qZWN0IHdpdGggXCIgKyBmLmNvbnN0cnVjdG9yLm5hbWUgKyBcIi4gRXJyOiBcIiArIGwubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChsKSB7XG4gICAgICAgIGEgPSB7IGVycm9yOiBsIH07XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHUgJiYgIXUuZG9uZSAmJiAoaSA9IG8ucmV0dXJuKSAmJiBpLmNhbGwobyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgaWYgKGEpIHRocm93IGEuZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCBlLnByb3RvdHlwZS5leHRyYWN0ID0gZnVuY3Rpb24ociQxLCB0LCBuKSB7XG4gICAgICByZXR1cm4gdGhpcy5fcHJvcGFnYXRvcnMucmVkdWNlKGZ1bmN0aW9uKGEsIGkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXR1cm4gaS5leHRyYWN0KGEsIHQsIG4pO1xuICAgICAgICB9IGNhdGNoIChvKSB7XG4gICAgICAgICAgci53YXJuKFwiRmFpbGVkIHRvIGV4dHJhY3Qgd2l0aCBcIiArIGkuY29uc3RydWN0b3IubmFtZSArIFwiLiBFcnI6IFwiICsgby5tZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH0sIHIkMSk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy5fZmllbGRzLnNsaWNlKCk7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBJID0gXCJbXzAtOWEtei0qL11cIiwgZHIgPSBcIlthLXpdXCIgKyBJICsgXCJ7MCwyNTV9XCIsIF9yID0gXCJbYS16MC05XVwiICsgSSArIFwiezAsMjQwfUBbYS16XVwiICsgSSArIFwiezAsMTN9XCIsIHlyID0gbmV3IFJlZ0V4cChcIl4oPzpcIiArIGRyICsgXCJ8XCIgKyBfciArIFwiKSRcIiksIHZyID0gL15bIC1+XXswLDI1NX1bIS1+XSQvLCBociA9IC8sfD0vO1xuZnVuY3Rpb24gbXIoZSkge1xuICByZXR1cm4geXIudGVzdChlKTtcbn1cbmZ1bmN0aW9uIGdyKGUpIHtcbiAgcmV0dXJuIHZyLnRlc3QoZSkgJiYgIWhyLnRlc3QoZSk7XG59XG52YXIgVSA9IDMyLCBTciA9IDUxMiwgSCA9IFwiLFwiLCBLID0gXCI9XCIsIGFlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdGhpcy5faW50ZXJuYWxTdGF0ZSA9IC8qIEBfX1BVUkVfXyAqLyBuZXcgTWFwKCksIHIgJiYgdGhpcy5fcGFyc2Uocik7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihyLCB0KSB7XG4gICAgICB2YXIgbiA9IHRoaXMuX2Nsb25lKCk7XG4gICAgICByZXR1cm4gbi5faW50ZXJuYWxTdGF0ZS5oYXMocikgJiYgbi5faW50ZXJuYWxTdGF0ZS5kZWxldGUociksIG4uX2ludGVybmFsU3RhdGUuc2V0KHIsIHQpLCBuO1xuICAgIH0sIGUucHJvdG90eXBlLnVuc2V0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdmFyIHQgPSB0aGlzLl9jbG9uZSgpO1xuICAgICAgcmV0dXJuIHQuX2ludGVybmFsU3RhdGUuZGVsZXRlKHIpLCB0O1xuICAgIH0sIGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHJldHVybiB0aGlzLl9pbnRlcm5hbFN0YXRlLmdldChyKTtcbiAgICB9LCBlLnByb3RvdHlwZS5zZXJpYWxpemUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHJldHVybiB0aGlzLl9rZXlzKCkucmVkdWNlKGZ1bmN0aW9uKHQsIG4pIHtcbiAgICAgICAgcmV0dXJuIHQucHVzaChuICsgSyArIHIuZ2V0KG4pKSwgdDtcbiAgICAgIH0sIFtdKS5qb2luKEgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9wYXJzZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHIubGVuZ3RoID4gU3IgfHwgKHRoaXMuX2ludGVybmFsU3RhdGUgPSByLnNwbGl0KEgpLnJldmVyc2UoKS5yZWR1Y2UoZnVuY3Rpb24odCwgbikge1xuICAgICAgICB2YXIgYSA9IG4udHJpbSgpLCBpID0gYS5pbmRleE9mKEspO1xuICAgICAgICBpZiAoaSAhPT0gLTEpIHtcbiAgICAgICAgICB2YXIgbyA9IGEuc2xpY2UoMCwgaSksIHUgPSBhLnNsaWNlKGkgKyAxLCBuLmxlbmd0aCk7XG4gICAgICAgICAgbXIobykgJiYgZ3IodSkgJiYgdC5zZXQobywgdSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgICB9LCAvKiBAX19QVVJFX18gKi8gbmV3IE1hcCgpKSwgdGhpcy5faW50ZXJuYWxTdGF0ZS5zaXplID4gVSAmJiAodGhpcy5faW50ZXJuYWxTdGF0ZSA9IG5ldyBNYXAoQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmVudHJpZXMoKSkucmV2ZXJzZSgpLnNsaWNlKDAsIFUpKSkpO1xuICAgIH0sIGUucHJvdG90eXBlLl9rZXlzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLl9pbnRlcm5hbFN0YXRlLmtleXMoKSkucmV2ZXJzZSgpO1xuICAgIH0sIGUucHJvdG90eXBlLl9jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHIgPSBuZXcgZSgpO1xuICAgICAgcmV0dXJuIHIuX2ludGVybmFsU3RhdGUgPSBuZXcgTWFwKHRoaXMuX2ludGVybmFsU3RhdGUpLCByO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgdiA9IFwidHJhY2VwYXJlbnRcIiwgaCA9IFwidHJhY2VzdGF0ZVwiLCBBciA9IFwiMDBcIiwgRXIgPSBcIig/IWZmKVtcXFxcZGEtZl17Mn1cIiwgVHIgPSBcIig/IVswXXszMn0pW1xcXFxkYS1mXXszMn1cIiwgUHIgPSBcIig/IVswXXsxNn0pW1xcXFxkYS1mXXsxNn1cIiwgUnIgPSBcIltcXFxcZGEtZl17Mn1cIiwgT3IgPSBuZXcgUmVnRXhwKFwiXlxcXFxzPyhcIiArIEVyICsgXCIpLShcIiArIFRyICsgXCIpLShcIiArIFByICsgXCIpLShcIiArIFJyICsgXCIpKC0uKik/XFxcXHM/JFwiKTtcbmZ1bmN0aW9uIGllKGUpIHtcbiAgdmFyIHIgPSBPci5leGVjKGUpO1xuICByZXR1cm4gIXIgfHwgclsxXSA9PT0gXCIwMFwiICYmIHJbNV0gPyBudWxsIDoge1xuICAgIHRyYWNlSWQ6IHJbMl0sXG4gICAgc3BhbklkOiByWzNdLFxuICAgIHRyYWNlRmxhZ3M6IHBhcnNlSW50KHJbNF0sIDE2KVxuICB9O1xufVxudmFyIGJyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5pbmplY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IFZlLmdldFNwYW5Db250ZXh0KHIpO1xuICAgICAgaWYgKCEoIWEgfHwgdyhyKSB8fCAhQ24oYSkpKSB7XG4gICAgICAgIHZhciBpID0gQXIgKyBcIi1cIiArIGEudHJhY2VJZCArIFwiLVwiICsgYS5zcGFuSWQgKyBcIi0wXCIgKyBOdW1iZXIoYS50cmFjZUZsYWdzIHx8IEt0Lk5PTkUpLnRvU3RyaW5nKDE2KTtcbiAgICAgICAgbi5zZXQodCwgdiwgaSksIGEudHJhY2VTdGF0ZSAmJiBuLnNldCh0LCBoLCBhLnRyYWNlU3RhdGUuc2VyaWFsaXplKCkpO1xuICAgICAgfVxuICAgIH0sIGUucHJvdG90eXBlLmV4dHJhY3QgPSBmdW5jdGlvbihyLCB0LCBuKSB7XG4gICAgICB2YXIgYSA9IG4uZ2V0KHQsIHYpO1xuICAgICAgaWYgKCFhKVxuICAgICAgICByZXR1cm4gcjtcbiAgICAgIHZhciBpID0gQXJyYXkuaXNBcnJheShhKSA/IGFbMF0gOiBhO1xuICAgICAgaWYgKHR5cGVvZiBpICE9IFwic3RyaW5nXCIpXG4gICAgICAgIHJldHVybiByO1xuICAgICAgdmFyIG8gPSBpZShpKTtcbiAgICAgIGlmICghbylcbiAgICAgICAgcmV0dXJuIHI7XG4gICAgICBvLmlzUmVtb3RlID0gITA7XG4gICAgICB2YXIgdSA9IG4uZ2V0KHQsIGgpO1xuICAgICAgaWYgKHUpIHtcbiAgICAgICAgdmFyIGYgPSBBcnJheS5pc0FycmF5KHUpID8gdS5qb2luKFwiLFwiKSA6IHU7XG4gICAgICAgIG8udHJhY2VTdGF0ZSA9IG5ldyBhZSh0eXBlb2YgZiA9PSBcInN0cmluZ1wiID8gZiA6IHZvaWQgMCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gVmUuc2V0U3BhbkNvbnRleHQociwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUuZmllbGRzID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gW3YsIGhdO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgTCA9IHRzKFwiT3BlblRlbGVtZXRyeSBTREsgQ29udGV4dCBLZXkgUlBDX01FVEFEQVRBXCIpLCBqO1xuKGZ1bmN0aW9uKGUpIHtcbiAgZS5IVFRQID0gXCJodHRwXCI7XG59KShqIHx8IChqID0ge30pKTtcbmZ1bmN0aW9uIENyKGUsIHIpIHtcbiAgcmV0dXJuIGUuc2V0VmFsdWUoTCwgcik7XG59XG5mdW5jdGlvbiBJcihlKSB7XG4gIHJldHVybiBlLmRlbGV0ZVZhbHVlKEwpO1xufVxuZnVuY3Rpb24ganIoZSkge1xuICByZXR1cm4gZS5nZXRWYWx1ZShMKTtcbn1cbnZhciBNID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUoKSB7XG4gICAgfVxuICAgIHJldHVybiBlLnByb3RvdHlwZS5zaG91bGRTYW1wbGUgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRlY2lzaW9uOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIkFsd2F5c09mZlNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIG0gPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHAuUkVDT1JEX0FORF9TQU1QTEVEXG4gICAgICB9O1xuICAgIH0sIGUucHJvdG90eXBlLnRvU3RyaW5nID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gXCJBbHdheXNPblNhbXBsZXJcIjtcbiAgICB9LCBlO1xuICB9KClcbiksIE1yID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUocikge1xuICAgICAgdmFyIHQsIG4sIGEsIGk7XG4gICAgICB0aGlzLl9yb290ID0gci5yb290LCB0aGlzLl9yb290IHx8IChuZShuZXcgRXJyb3IoXCJQYXJlbnRCYXNlZFNhbXBsZXIgbXVzdCBoYXZlIGEgcm9vdCBzYW1wbGVyIGNvbmZpZ3VyZWRcIikpLCB0aGlzLl9yb290ID0gbmV3IG0oKSksIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQgPSAodCA9IHIucmVtb3RlUGFyZW50U2FtcGxlZCkgIT09IG51bGwgJiYgdCAhPT0gdm9pZCAwID8gdCA6IG5ldyBtKCksIHRoaXMuX3JlbW90ZVBhcmVudE5vdFNhbXBsZWQgPSAobiA9IHIucmVtb3RlUGFyZW50Tm90U2FtcGxlZCkgIT09IG51bGwgJiYgbiAhPT0gdm9pZCAwID8gbiA6IG5ldyBNKCksIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZCA9IChhID0gci5sb2NhbFBhcmVudFNhbXBsZWQpICE9PSBudWxsICYmIGEgIT09IHZvaWQgMCA/IGEgOiBuZXcgbSgpLCB0aGlzLl9sb2NhbFBhcmVudE5vdFNhbXBsZWQgPSAoaSA9IHIubG9jYWxQYXJlbnROb3RTYW1wbGVkKSAhPT0gbnVsbCAmJiBpICE9PSB2b2lkIDAgPyBpIDogbmV3IE0oKTtcbiAgICB9XG4gICAgcmV0dXJuIGUucHJvdG90eXBlLnNob3VsZFNhbXBsZSA9IGZ1bmN0aW9uKHIsIHQsIG4sIGEsIGksIG8pIHtcbiAgICAgIHZhciB1ID0gVmUuZ2V0U3BhbkNvbnRleHQocik7XG4gICAgICByZXR1cm4gIXUgfHwgIUNuKHUpID8gdGhpcy5fcm9vdC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LmlzUmVtb3RlID8gdS50cmFjZUZsYWdzICYgS3QuU0FNUExFRCA/IHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQuc2hvdWxkU2FtcGxlKHIsIHQsIG4sIGEsIGksIG8pIDogdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbykgOiB1LnRyYWNlRmxhZ3MgJiBLdC5TQU1QTEVEID8gdGhpcy5fbG9jYWxQYXJlbnRTYW1wbGVkLnNob3VsZFNhbXBsZShyLCB0LCBuLCBhLCBpLCBvKSA6IHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC5zaG91bGRTYW1wbGUociwgdCwgbiwgYSwgaSwgbyk7XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlBhcmVudEJhc2Vke3Jvb3Q9XCIgKyB0aGlzLl9yb290LnRvU3RyaW5nKCkgKyBcIiwgcmVtb3RlUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX3JlbW90ZVBhcmVudFNhbXBsZWQudG9TdHJpbmcoKSArIFwiLCByZW1vdGVQYXJlbnROb3RTYW1wbGVkPVwiICsgdGhpcy5fcmVtb3RlUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50U2FtcGxlZC50b1N0cmluZygpICsgXCIsIGxvY2FsUGFyZW50Tm90U2FtcGxlZD1cIiArIHRoaXMuX2xvY2FsUGFyZW50Tm90U2FtcGxlZC50b1N0cmluZygpICsgXCJ9XCI7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCBOciA9IChcbiAgLyoqIEBjbGFzcyAqL1xuICBmdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvbiBlKHIpIHtcbiAgICAgIHIgPT09IHZvaWQgMCAmJiAociA9IDApLCB0aGlzLl9yYXRpbyA9IHIsIHRoaXMuX3JhdGlvID0gdGhpcy5fbm9ybWFsaXplKHIpLCB0aGlzLl91cHBlckJvdW5kID0gTWF0aC5mbG9vcih0aGlzLl9yYXRpbyAqIDQyOTQ5NjcyOTUpO1xuICAgIH1cbiAgICByZXR1cm4gZS5wcm90b3R5cGUuc2hvdWxkU2FtcGxlID0gZnVuY3Rpb24ociwgdCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGVjaXNpb246IHlzKHQpICYmIHRoaXMuX2FjY3VtdWxhdGUodCkgPCB0aGlzLl91cHBlckJvdW5kID8gcC5SRUNPUkRfQU5EX1NBTVBMRUQgOiBwLk5PVF9SRUNPUkRcbiAgICAgIH07XG4gICAgfSwgZS5wcm90b3R5cGUudG9TdHJpbmcgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBcIlRyYWNlSWRSYXRpb0Jhc2Vke1wiICsgdGhpcy5fcmF0aW8gKyBcIn1cIjtcbiAgICB9LCBlLnByb3RvdHlwZS5fbm9ybWFsaXplID0gZnVuY3Rpb24ocikge1xuICAgICAgcmV0dXJuIHR5cGVvZiByICE9IFwibnVtYmVyXCIgfHwgaXNOYU4ocikgPyAwIDogciA+PSAxID8gMSA6IHIgPD0gMCA/IDAgOiByO1xuICAgIH0sIGUucHJvdG90eXBlLl9hY2N1bXVsYXRlID0gZnVuY3Rpb24ocikge1xuICAgICAgZm9yICh2YXIgdCA9IDAsIG4gPSAwOyBuIDwgci5sZW5ndGggLyA4OyBuKyspIHtcbiAgICAgICAgdmFyIGEgPSBuICogOCwgaSA9IHBhcnNlSW50KHIuc2xpY2UoYSwgYSArIDgpLCAxNik7XG4gICAgICAgIHQgPSAodCBeIGkpID4+PiAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHQ7XG4gICAgfSwgZTtcbiAgfSgpXG4pLCB3ciA9IFwiW29iamVjdCBPYmplY3RdXCIsIERyID0gXCJbb2JqZWN0IE51bGxdXCIsIExyID0gXCJbb2JqZWN0IFVuZGVmaW5lZF1cIiwgeHIgPSBGdW5jdGlvbi5wcm90b3R5cGUsIG9lID0geHIudG9TdHJpbmcsIEdyID0gb2UuY2FsbChPYmplY3QpLCBCciA9IFZyKE9iamVjdC5nZXRQcm90b3R5cGVPZiwgT2JqZWN0KSwgdWUgPSBPYmplY3QucHJvdG90eXBlLCBmZSA9IHVlLmhhc093blByb3BlcnR5LCBzID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdm9pZCAwLCBsZSA9IHVlLnRvU3RyaW5nO1xuZnVuY3Rpb24gVnIoZSwgcikge1xuICByZXR1cm4gZnVuY3Rpb24odCkge1xuICAgIHJldHVybiBlKHIodCkpO1xuICB9O1xufVxuZnVuY3Rpb24gRihlKSB7XG4gIGlmICghVXIoZSkgfHwgSHIoZSkgIT09IHdyKVxuICAgIHJldHVybiAhMTtcbiAgdmFyIHIgPSBCcihlKTtcbiAgaWYgKHIgPT09IG51bGwpXG4gICAgcmV0dXJuICEwO1xuICB2YXIgdCA9IGZlLmNhbGwociwgXCJjb25zdHJ1Y3RvclwiKSAmJiByLmNvbnN0cnVjdG9yO1xuICByZXR1cm4gdHlwZW9mIHQgPT0gXCJmdW5jdGlvblwiICYmIHQgaW5zdGFuY2VvZiB0ICYmIG9lLmNhbGwodCkgPT09IEdyO1xufVxuZnVuY3Rpb24gVXIoZSkge1xuICByZXR1cm4gZSAhPSBudWxsICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBIcihlKSB7XG4gIHJldHVybiBlID09IG51bGwgPyBlID09PSB2b2lkIDAgPyBMciA6IERyIDogcyAmJiBzIGluIE9iamVjdChlKSA/IEtyKGUpIDogRnIoZSk7XG59XG5mdW5jdGlvbiBLcihlKSB7XG4gIHZhciByID0gZmUuY2FsbChlLCBzKSwgdCA9IGVbc10sIG4gPSAhMTtcbiAgdHJ5IHtcbiAgICBlW3NdID0gdm9pZCAwLCBuID0gITA7XG4gIH0gY2F0Y2gge1xuICB9XG4gIHZhciBhID0gbGUuY2FsbChlKTtcbiAgcmV0dXJuIG4gJiYgKHIgPyBlW3NdID0gdCA6IGRlbGV0ZSBlW3NdKSwgYTtcbn1cbmZ1bmN0aW9uIEZyKGUpIHtcbiAgcmV0dXJuIGxlLmNhbGwoZSk7XG59XG52YXIgenIgPSAyMDtcbmZ1bmN0aW9uIGtyKCkge1xuICBmb3IgKHZhciBlID0gW10sIHIgPSAwOyByIDwgYXJndW1lbnRzLmxlbmd0aDsgcisrKVxuICAgIGVbcl0gPSBhcmd1bWVudHNbcl07XG4gIGZvciAodmFyIHQgPSBlLnNoaWZ0KCksIG4gPSAvKiBAX19QVVJFX18gKi8gbmV3IFdlYWtNYXAoKTsgZS5sZW5ndGggPiAwOyApXG4gICAgdCA9IHNlKHQsIGUuc2hpZnQoKSwgMCwgbik7XG4gIHJldHVybiB0O1xufVxuZnVuY3Rpb24gUihlKSB7XG4gIHJldHVybiBBKGUpID8gZS5zbGljZSgpIDogZTtcbn1cbmZ1bmN0aW9uIHNlKGUsIHIsIHQsIG4pIHtcbiAgdCA9PT0gdm9pZCAwICYmICh0ID0gMCk7XG4gIHZhciBhO1xuICBpZiAoISh0ID4genIpKSB7XG4gICAgaWYgKHQrKywgZyhlKSB8fCBnKHIpIHx8IGNlKHIpKVxuICAgICAgYSA9IFIocik7XG4gICAgZWxzZSBpZiAoQShlKSkge1xuICAgICAgaWYgKGEgPSBlLnNsaWNlKCksIEEocikpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBvID0gci5sZW5ndGg7IGkgPCBvOyBpKyspXG4gICAgICAgICAgYS5wdXNoKFIocltpXSkpO1xuICAgICAgZWxzZSBpZiAoZChyKSlcbiAgICAgICAgZm9yICh2YXIgdSA9IE9iamVjdC5rZXlzKHIpLCBpID0gMCwgbyA9IHUubGVuZ3RoOyBpIDwgbzsgaSsrKSB7XG4gICAgICAgICAgdmFyIGYgPSB1W2ldO1xuICAgICAgICAgIGFbZl0gPSBSKHJbZl0pO1xuICAgICAgICB9XG4gICAgfSBlbHNlIGlmIChkKGUpKVxuICAgICAgaWYgKGQocikpIHtcbiAgICAgICAgaWYgKCFZcihlLCByKSlcbiAgICAgICAgICByZXR1cm4gcjtcbiAgICAgICAgYSA9IE9iamVjdC5hc3NpZ24oe30sIGUpO1xuICAgICAgICBmb3IgKHZhciB1ID0gT2JqZWN0LmtleXMociksIGkgPSAwLCBvID0gdS5sZW5ndGg7IGkgPCBvOyBpKyspIHtcbiAgICAgICAgICB2YXIgZiA9IHVbaV0sIGwgPSByW2ZdO1xuICAgICAgICAgIGlmIChnKGwpKVxuICAgICAgICAgICAgdHlwZW9mIGwgPiBcInVcIiA/IGRlbGV0ZSBhW2ZdIDogYVtmXSA9IGw7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgYyA9IGFbZl0sIEUgPSBsO1xuICAgICAgICAgICAgaWYgKHooZSwgZiwgbikgfHwgeihyLCBmLCBuKSlcbiAgICAgICAgICAgICAgZGVsZXRlIGFbZl07XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgaWYgKGQoYykgJiYgZChFKSkge1xuICAgICAgICAgICAgICAgIHZhciB4ID0gbi5nZXQoYykgfHwgW10sIEcgPSBuLmdldChFKSB8fCBbXTtcbiAgICAgICAgICAgICAgICB4LnB1c2goeyBvYmo6IGUsIGtleTogZiB9KSwgRy5wdXNoKHsgb2JqOiByLCBrZXk6IGYgfSksIG4uc2V0KGMsIHgpLCBuLnNldChFLCBHKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBhW2ZdID0gc2UoYVtmXSwgbCwgdCwgbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2VcbiAgICAgICAgYSA9IHI7XG4gICAgcmV0dXJuIGE7XG4gIH1cbn1cbmZ1bmN0aW9uIHooZSwgciwgdCkge1xuICBmb3IgKHZhciBuID0gdC5nZXQoZVtyXSkgfHwgW10sIGEgPSAwLCBpID0gbi5sZW5ndGg7IGEgPCBpOyBhKyspIHtcbiAgICB2YXIgbyA9IG5bYV07XG4gICAgaWYgKG8ua2V5ID09PSByICYmIG8ub2JqID09PSBlKVxuICAgICAgcmV0dXJuICEwO1xuICB9XG4gIHJldHVybiAhMTtcbn1cbmZ1bmN0aW9uIEEoZSkge1xuICByZXR1cm4gQXJyYXkuaXNBcnJheShlKTtcbn1cbmZ1bmN0aW9uIGNlKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwiZnVuY3Rpb25cIjtcbn1cbmZ1bmN0aW9uIGQoZSkge1xuICByZXR1cm4gIWcoZSkgJiYgIUEoZSkgJiYgIWNlKGUpICYmIHR5cGVvZiBlID09IFwib2JqZWN0XCI7XG59XG5mdW5jdGlvbiBnKGUpIHtcbiAgcmV0dXJuIHR5cGVvZiBlID09IFwic3RyaW5nXCIgfHwgdHlwZW9mIGUgPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgZSA9PSBcImJvb2xlYW5cIiB8fCB0eXBlb2YgZSA+IFwidVwiIHx8IGUgaW5zdGFuY2VvZiBEYXRlIHx8IGUgaW5zdGFuY2VvZiBSZWdFeHAgfHwgZSA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIFlyKGUsIHIpIHtcbiAgcmV0dXJuICEoIUYoZSkgfHwgIUYocikpO1xufVxudmFyIFhyID0gLyogQF9fUFVSRV9fICovIGZ1bmN0aW9uKCkge1xuICB2YXIgZSA9IGZ1bmN0aW9uKHIsIHQpIHtcbiAgICByZXR1cm4gZSA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fCB7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIG4uX19wcm90b19fID0gYTtcbiAgICB9IHx8IGZ1bmN0aW9uKG4sIGEpIHtcbiAgICAgIGZvciAodmFyIGkgaW4gYSkgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGEsIGkpICYmIChuW2ldID0gYVtpXSk7XG4gICAgfSwgZShyLCB0KTtcbiAgfTtcbiAgcmV0dXJuIGZ1bmN0aW9uKHIsIHQpIHtcbiAgICBpZiAodHlwZW9mIHQgIT0gXCJmdW5jdGlvblwiICYmIHQgIT09IG51bGwpXG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyh0KSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XG4gICAgZShyLCB0KTtcbiAgICBmdW5jdGlvbiBuKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IHI7XG4gICAgfVxuICAgIHIucHJvdG90eXBlID0gdCA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUodCkgOiAobi5wcm90b3R5cGUgPSB0LnByb3RvdHlwZSwgbmV3IG4oKSk7XG4gIH07XG59KCksIHBlID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKGUpIHtcbiAgICBYcihyLCBlKTtcbiAgICBmdW5jdGlvbiByKHQpIHtcbiAgICAgIHZhciBuID0gZS5jYWxsKHRoaXMsIHQpIHx8IHRoaXM7XG4gICAgICByZXR1cm4gT2JqZWN0LnNldFByb3RvdHlwZU9mKG4sIHIucHJvdG90eXBlKSwgbjtcbiAgICB9XG4gICAgcmV0dXJuIHI7XG4gIH0oRXJyb3IpXG4pO1xuZnVuY3Rpb24gV3IoZSwgcikge1xuICB2YXIgdCwgbiA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKGksIG8pIHtcbiAgICB0ID0gc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgIG8obmV3IHBlKFwiT3BlcmF0aW9uIHRpbWVkIG91dC5cIikpO1xuICAgIH0sIHIpO1xuICB9KTtcbiAgcmV0dXJuIFByb21pc2UucmFjZShbZSwgbl0pLnRoZW4oZnVuY3Rpb24oYSkge1xuICAgIHJldHVybiBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0sIGZ1bmN0aW9uKGEpIHtcbiAgICB0aHJvdyBjbGVhclRpbWVvdXQodCksIGE7XG4gIH0pO1xufVxuZnVuY3Rpb24gJHIoZSkge1xuICByZXR1cm4gdHlwZW9mIGUgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fb3JpZ2luYWwgPT0gXCJmdW5jdGlvblwiICYmIHR5cGVvZiBlLl9fdW53cmFwID09IFwiZnVuY3Rpb25cIiAmJiBlLl9fd3JhcHBlZCA9PT0gITA7XG59XG52YXIgSnIgPSAoXG4gIC8qKiBAY2xhc3MgKi9cbiAgZnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb24gZSgpIHtcbiAgICAgIHZhciByID0gdGhpcztcbiAgICAgIHRoaXMuX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbih0LCBuKSB7XG4gICAgICAgIHIuX3Jlc29sdmUgPSB0LCByLl9yZWplY3QgPSBuO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydHkoZS5wcm90b3R5cGUsIFwicHJvbWlzZVwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5fcHJvbWlzZTtcbiAgICAgIH0sXG4gICAgICBlbnVtZXJhYmxlOiAhMSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogITBcbiAgICB9KSwgZS5wcm90b3R5cGUucmVzb2x2ZSA9IGZ1bmN0aW9uKHIpIHtcbiAgICAgIHRoaXMuX3Jlc29sdmUocik7XG4gICAgfSwgZS5wcm90b3R5cGUucmVqZWN0ID0gZnVuY3Rpb24ocikge1xuICAgICAgdGhpcy5fcmVqZWN0KHIpO1xuICAgIH0sIGU7XG4gIH0oKVxuKSwgcXIgPSBmdW5jdGlvbihlLCByKSB7XG4gIHZhciB0ID0gdHlwZW9mIFN5bWJvbCA9PSBcImZ1bmN0aW9uXCIgJiYgZVtTeW1ib2wuaXRlcmF0b3JdO1xuICBpZiAoIXQpIHJldHVybiBlO1xuICB2YXIgbiA9IHQuY2FsbChlKSwgYSwgaSA9IFtdLCBvO1xuICB0cnkge1xuICAgIGZvciAoOyAociA9PT0gdm9pZCAwIHx8IHItLSA+IDApICYmICEoYSA9IG4ubmV4dCgpKS5kb25lOyApIGkucHVzaChhLnZhbHVlKTtcbiAgfSBjYXRjaCAodSkge1xuICAgIG8gPSB7IGVycm9yOiB1IH07XG4gIH0gZmluYWxseSB7XG4gICAgdHJ5IHtcbiAgICAgIGEgJiYgIWEuZG9uZSAmJiAodCA9IG4ucmV0dXJuKSAmJiB0LmNhbGwobik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGlmIChvKSB0aHJvdyBvLmVycm9yO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaTtcbn0sIFFyID0gZnVuY3Rpb24oZSwgciwgdCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMikgZm9yICh2YXIgbiA9IDAsIGEgPSByLmxlbmd0aCwgaTsgbiA8IGE7IG4rKylcbiAgICAoaSB8fCAhKG4gaW4gcikpICYmIChpIHx8IChpID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwociwgMCwgbikpLCBpW25dID0gcltuXSk7XG4gIHJldHVybiBlLmNvbmNhdChpIHx8IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKHIpKTtcbn0sIFpyID0gKFxuICAvKiogQGNsYXNzICovXG4gIGZ1bmN0aW9uKCkge1xuICAgIGZ1bmN0aW9uIGUociwgdCkge1xuICAgICAgdGhpcy5fY2FsbGJhY2sgPSByLCB0aGlzLl90aGF0ID0gdCwgdGhpcy5faXNDYWxsZWQgPSAhMSwgdGhpcy5fZGVmZXJyZWQgPSBuZXcgSnIoKTtcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJpc0NhbGxlZFwiLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDYWxsZWQ7XG4gICAgICB9LFxuICAgICAgZW51bWVyYWJsZTogITEsXG4gICAgICBjb25maWd1cmFibGU6ICEwXG4gICAgfSksIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLnByb3RvdHlwZSwgXCJwcm9taXNlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgICAgfSxcbiAgICAgIGVudW1lcmFibGU6ICExLFxuICAgICAgY29uZmlndXJhYmxlOiAhMFxuICAgIH0pLCBlLnByb3RvdHlwZS5jYWxsID0gZnVuY3Rpb24oKSB7XG4gICAgICBmb3IgKHZhciByLCB0ID0gdGhpcywgbiA9IFtdLCBhID0gMDsgYSA8IGFyZ3VtZW50cy5sZW5ndGg7IGErKylcbiAgICAgICAgblthXSA9IGFyZ3VtZW50c1thXTtcbiAgICAgIGlmICghdGhpcy5faXNDYWxsZWQpIHtcbiAgICAgICAgdGhpcy5faXNDYWxsZWQgPSAhMDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKHIgPSB0aGlzLl9jYWxsYmFjaykuY2FsbC5hcHBseShyLCBRcihbdGhpcy5fdGhhdF0sIHFyKG4pLCAhMSkpKS50aGVuKGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZXNvbHZlKGkpO1xuICAgICAgICAgIH0sIGZ1bmN0aW9uKGkpIHtcbiAgICAgICAgICAgIHJldHVybiB0Ll9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2ggKGkpIHtcbiAgICAgICAgICB0aGlzLl9kZWZlcnJlZC5yZWplY3QoaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLl9kZWZlcnJlZC5wcm9taXNlO1xuICAgIH0sIGU7XG4gIH0oKVxuKTtcbmZ1bmN0aW9uIGV0KGUsIHIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHQpIHtcbiAgICBVZS53aXRoKFcoVWUuYWN0aXZlKCkpLCBmdW5jdGlvbigpIHtcbiAgICAgIGUuZXhwb3J0KHIsIGZ1bmN0aW9uKG4pIHtcbiAgICAgICAgdChuKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn1cbnZhciBydCA9IHtcbiAgZ2V0S2V5UGFpcnM6IEosXG4gIHNlcmlhbGl6ZUtleVBhaXJzOiAkLFxuICBwYXJzZUtleVBhaXJzSW50b1JlY29yZDogJGUsXG4gIHBhcnNlUGFpcktleVZhbHVlOiBEXG59LCB0dCA9IHtcbiAgX2V4cG9ydDogZXRcbn07XG5jb25zdCBsdCA9IC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZnJlZXplKC8qIEBfX1BVUkVfXyAqLyBPYmplY3QuZGVmaW5lUHJvcGVydHkoe1xuICBfX3Byb3RvX186IG51bGwsXG4gIEFsd2F5c09mZlNhbXBsZXI6IE0sXG4gIEFsd2F5c09uU2FtcGxlcjogbSxcbiAgQW5jaG9yZWRDbG9jazogcWUsXG4gIEJpbmRPbmNlRnV0dXJlOiBacixcbiAgQ29tcG9zaXRlUHJvcGFnYXRvcjogcHIsXG4gIERFRkFVTFRfQVRUUklCVVRFX0NPVU5UX0xJTUlUOiBQJDEsXG4gIERFRkFVTFRfQVRUUklCVVRFX1ZBTFVFX0xFTkdUSF9MSU1JVDogTSQxLFxuICBERUZBVUxUX0VOVklST05NRU5UOiBJJDEsXG4gIERFRkFVTFRfU1BBTl9BVFRSSUJVVEVfUEVSX0VWRU5UX0NPVU5UX0xJTUlUOiBrXyxcbiAgREVGQVVMVF9TUEFOX0FUVFJJQlVURV9QRVJfTElOS19DT1VOVF9MSU1JVDogSl8sXG4gIGdldCBFeHBvcnRSZXN1bHRDb2RlKCkge1xuICAgIHJldHVybiBhO1xuICB9LFxuICBQYXJlbnRCYXNlZFNhbXBsZXI6IE1yLFxuICBnZXQgUlBDVHlwZSgpIHtcbiAgICByZXR1cm4gajtcbiAgfSxcbiAgUmFuZG9tSWRHZW5lcmF0b3I6IGxyLFxuICBTREtfSU5GTzogWEEsXG4gIFRSQUNFX1BBUkVOVF9IRUFERVI6IHYsXG4gIFRSQUNFX1NUQVRFX0hFQURFUjogaCxcbiAgVGltZW91dEVycm9yOiBwZSxcbiAgVHJhY2VJZFJhdGlvQmFzZWRTYW1wbGVyOiBOcixcbiAgVHJhY2VTdGF0ZTogYWUsXG4gIGdldCBUcmFjZXNTYW1wbGVyVmFsdWVzKCkge1xuICAgIHJldHVybiByJDE7XG4gIH0sXG4gIFZFUlNJT046ICRfLFxuICBXM0NCYWdnYWdlUHJvcGFnYXRvcjogSmUsXG4gIFczQ1RyYWNlQ29udGV4dFByb3BhZ2F0b3I6IGJyLFxuICBfZ2xvYmFsVGhpczogbCxcbiAgYWRkSHJUaW1lczogSF8sXG4gIGJhZ2dhZ2VVdGlsczogcnQsXG4gIGNhbGxXaXRoVGltZW91dDogV3IsXG4gIGRlbGV0ZVJQQ01ldGFkYXRhOiBJcixcbiAgZ2V0RW52OiBPVCxcbiAgZ2V0RW52V2l0aG91dERlZmF1bHRzOiBMVCxcbiAgZ2V0UlBDTWV0YWRhdGE6IGpyLFxuICBnZXRUaW1lT3JpZ2luOiByXyxcbiAgZ2xvYmFsRXJyb3JIYW5kbGVyOiBuZSxcbiAgaGV4VG9CYXNlNjQ6IG9yLFxuICBoZXhUb0JpbmFyeTogQSQxLFxuICBoclRpbWU6IHBfLFxuICBoclRpbWVEdXJhdGlvbjogd2UsXG4gIGhyVGltZVRvTWljcm9zZWNvbmRzOiBrZSQxLFxuICBoclRpbWVUb01pbGxpc2Vjb25kczogeGUsXG4gIGhyVGltZVRvTmFub3NlY29uZHM6IFFlJDEsXG4gIGhyVGltZVRvVGltZVN0YW1wOiBYZSQxLFxuICBpbnRlcm5hbDogdHQsXG4gIGlzQXR0cmlidXRlS2V5OiBRLFxuICBpc0F0dHJpYnV0ZVZhbHVlOiBaLFxuICBpc1RpbWVJbnB1dDogcWUkMSxcbiAgaXNUaW1lSW5wdXRIclRpbWU6IE5fLFxuICBpc1RyYWNpbmdTdXBwcmVzc2VkOiB3LFxuICBpc1VybElnbm9yZWQ6IFplJDEsXG4gIGlzV3JhcHBlZDogJHIsXG4gIGxvZ2dpbmdFcnJvckhhbmRsZXI6IHJlLFxuICBtZXJnZToga3IsXG4gIG1pbGxpc1RvSHJUaW1lOiBPLFxuICBvdHBlcmZvcm1hbmNlOiBSJDEsXG4gIHBhcnNlRW52aXJvbm1lbnQ6IFUkMSxcbiAgcGFyc2VUcmFjZVBhcmVudDogaWUsXG4gIHNhbml0aXplQXR0cmlidXRlczogWmUsXG4gIHNldEdsb2JhbEVycm9ySGFuZGxlcjogbnIsXG4gIHNldFJQQ01ldGFkYXRhOiBDcixcbiAgc3VwcHJlc3NUcmFjaW5nOiBXLFxuICB0aW1lSW5wdXRUb0hyVGltZTogV2UkMSxcbiAgdW5yZWZUaW1lcjogc3IsXG4gIHVuc3VwcHJlc3NUcmFjaW5nOiBGZSxcbiAgdXJsTWF0Y2hlczogZ19cbn0sIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogXCJNb2R1bGVcIiB9KSk7XG5cbmV4cG9ydCB7IEplIGFzIEosIFcsIFosIFplIGFzIGEsIHByIGFzIGIsIGJyIGFzIGMsIFpyIGFzIGQsIGtyIGFzIGssIGx0IGFzIGwsIG5lIGFzIG4sIHAsIHNyIGFzIHMsIHR0IGFzIHQsIHcgfTsiXSwKICAibWFwcGluZ3MiOiAiQUFBQSxTQUFTLEtBQUtBLEdBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUksS0FBS0MsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQU0sTUFBTUMsSUFBSSxLQUFLQyxJQUFNLE1BQU1DLElBQU0sTUFBTUMsSUFBTSxNQUFNQyxJQUFJLEtBQUtDLElBQU0sS0FBQUMsSUFBRyxNQUFNQyxJQUFLLEtBQUtDLElBQU0sS0FBS0MsVUFBVTtBQUN4TCxTQUFTLEtBQUtDLEdBQUksS0FBS0MsR0FBSSxLQUFLQyxHQUFJLEtBQUtDLElBQUksS0FBS0MsR0FBSSxLQUFLQyxTQUFVO0FBQ3JFLFNBQVMsS0FBQUMsU0FBUztBQUNsQixTQUFTLEtBQUFDLElBQUcsS0FBS0MsU0FBVztBQUM1QixTQUFTLE1BQU1DLElBQUssTUFBTUMsSUFBSyxNQUFNQyxJQUFLLE1BQU1DLElBQUksTUFBTUMsSUFBSSxNQUFNQyxJQUFJLE1BQU1DLElBQUssTUFBTUMsSUFBSSxLQUFLQyxJQUFJLE1BQU1DLElBQUksTUFBTUMsVUFBVztBQUNqSSxTQUFTLEtB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LENBQUMsQ0FBQzsiLAogICJuYW1lcyI6IFsieV8iLCAiZl8iLCAiSF8iLCAicl8iLCAicF8iLCAid2UiLCAia2UkMSIsICJ4ZSIsICJRZSQxIiwgIlhlJDEiLCAicWUkMSIsICJOXyIsICJaZSQxIiwgIk8iLCAiUiQxIiwgIldlJDEiLCAiZ18iLCAiVmUiLCAiQ24iLCAiS3QiLCAieXMiLCAidHMiLCAiVWUiLCAiciIsICJhIiwgIkEkMSIsICJQJDEiLCAiTSQxIiwgIkkkMSIsICJrXyIsICJKXyIsICJYQSIsICJyJDEiLCAiJF8iLCAiT1QiLCAiTFQiLCAiVSQxIiwgImwiLCAiZSIsICJOIiwgIlciLCAiRmUiLCAidyIsICJ6ZSIsICJDIiwgIlAiLCAia2UiLCAiWWUiLCAiWGUiLCAiV2UiLCAidCIsICJpIiwgIm8iLCAiJCIsICJKIiwgIiRlIiwgIkplIiwgImYiLCAiYyIsICJxZSIsICJxIiwgIlFlIiwgIlplIiwgIlEiLCAiWiIsICJlciIsICJlZSIsICJyZSIsICJ0ciIsICJ0ZSIsICJuZSIsICJhciIsICJpciIsICJvciIsICJmciIsICJsciIsICJWIiwgInkiLCAiY3IiLCAiSSIsICJkciIsICJfciIsICJ5ciIsICJ2ciIsICJociIsICJtciIsICJnciIsICJVIiwgIkgiLCAiSyIsICJhZSIsICJ2IiwgImgiLCAiQXIiLCAiRXIiLCAiVHIiLCAiUHIiLCAiUnIiLCAiT3IiLCAiaWUiLCAiYnIiLCAiTCIsICJDciIsICJJciIsICJNIiwgIm0iLCAiTXIiLCAiTnIiLCAid3IiLCAiTHIiLCAieHIiLCAib2UiLCAiR3IiLCAiQnIiLCAiVnIiLCAidWUiLCAiZmUiLCAibGUiLCAiRiIsICJVciIsICJIciIsICJLciIsICJGciIsICJrciIsICJzZSIsICJSIiwgIkEiLCAiZyIsICJjZSIsICJkIiwgIllyIiwgIkUiLCAieCIsICJHIiwgIlhyIiwgInBlIiwgIldyIiwgIiRyIiwgIkpyIiwgInFyIiwgIlFyIiwgIlpyIiwgImV0IiwgInJ0IiwgInR0IiwgImx0Il0KfQo=
|