@kontur.candy/tools 2.202.0 → 2.203.0
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/distr/Common/CandyApiClient/CandyApiClient.js +9 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +7 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js +1 -1
- package/distr/Common/CandyApiClient/ICandyApiClient.js.map +1 -1
- package/distr/Common/FSPrinterClient/FSPrinterClient.js +22 -6
- package/distr/Common/FSPrinterClient/FSPrinterClient.js.map +1 -1
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js +1 -1
- package/distr/Common/FSPrinterClient/IFSPrinterClient.js.map +1 -1
- package/distr/Common/HttpClient/HttpClient.js +5 -1
- package/distr/Common/HttpClient/HttpClient.js.map +1 -1
- package/distr/Common/HttpClient/IHttpClient.js +1 -1
- package/distr/Common/HttpClient/IHttpClient.js.map +1 -1
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js +3 -3
- package/distr/Common/ModelPath/AbsoluteModelFieldPath.js.map +1 -1
- package/distr/Common/ModelPath/ModelPath.js +10 -1
- package/distr/Common/ModelPath/ModelPath.js.map +1 -1
- package/distr/Common/TypingUtils.js +8 -1
- package/distr/Common/TypingUtils.js.map +1 -1
- package/distr/Common/UseTypedSelector.js +3 -2
- package/distr/Common/UseTypedSelector.js.map +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +104 -96
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +14 -9
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -222,10 +222,10 @@
|
|
|
222
222
|
function u(e) {
|
|
223
223
|
return null != e;
|
|
224
224
|
}
|
|
225
|
-
function
|
|
225
|
+
function c(e) {
|
|
226
226
|
throw "string" == typeof e || null == e ? new Error(null != e ? e : "Undefined is not allowed") : e;
|
|
227
227
|
}
|
|
228
|
-
function
|
|
228
|
+
function l(e, t) {
|
|
229
229
|
return e.length >= t;
|
|
230
230
|
}
|
|
231
231
|
function s(e, t) {
|
|
@@ -239,22 +239,25 @@
|
|
|
239
239
|
}
|
|
240
240
|
r.d(t, {
|
|
241
241
|
ku: function () {
|
|
242
|
-
return
|
|
242
|
+
return c;
|
|
243
243
|
}
|
|
244
244
|
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature, (n = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (n.register(u, "isNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
245
245
|
return "object" === a(e) && (null == e ? void 0 : e.message);
|
|
246
246
|
}, "stringifyUnknownError", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
247
247
|
if (!u(e)) throw new Error("Value must be defined");
|
|
248
|
-
}, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(
|
|
249
|
-
if (
|
|
250
|
-
}, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(
|
|
248
|
+
}, "ensureNotNullOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function () {}, "noop", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(c, "reject", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(l, "isLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
249
|
+
if (l(e, t)) return e;
|
|
250
|
+
}, "minLengthOrUndefined", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
251
|
+
if (!Array.isArray(e)) throw new Error("Must be an array!");
|
|
252
|
+
return e;
|
|
253
|
+
}, "ensureIsArray", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(s, "arrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(d, "arrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
251
254
|
return e.length > 0;
|
|
252
255
|
}, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
253
256
|
if (!d(e)) throw new Error("Array must be not empty");
|
|
254
257
|
}, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
255
258
|
if (!s(e, t)) throw new Error("Array should has length ".concat(t));
|
|
256
259
|
}, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
257
|
-
if (!
|
|
260
|
+
if (!l(e, t)) throw new Error("Array must have minimal length ".concat(t));
|
|
258
261
|
}, "ensureArrayLengthGreaterThenOrEqual", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {}, "ensureNever", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
259
262
|
return "".concat(e);
|
|
260
263
|
}, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
@@ -290,10 +293,10 @@
|
|
|
290
293
|
if ("string" != typeof e && (e = String(e)), /[^a-z0-9\-#$%&'*+.^_`|~!]/i.test(e) || "" === e) throw new TypeError('Invalid character in header field name: "' + e + '"');
|
|
291
294
|
return e.toLowerCase();
|
|
292
295
|
}
|
|
293
|
-
function
|
|
296
|
+
function c(e) {
|
|
294
297
|
return "string" != typeof e && (e = String(e)), e;
|
|
295
298
|
}
|
|
296
|
-
function
|
|
299
|
+
function l(e) {
|
|
297
300
|
var t = {
|
|
298
301
|
next: function () {
|
|
299
302
|
var t = e.shift();
|
|
@@ -376,7 +379,7 @@
|
|
|
376
379
|
}, this;
|
|
377
380
|
}
|
|
378
381
|
s.prototype.append = function (e, t) {
|
|
379
|
-
e = u(e), t =
|
|
382
|
+
e = u(e), t = c(t);
|
|
380
383
|
var r = this.map[e];
|
|
381
384
|
this.map[e] = r ? r + ", " + t : t;
|
|
382
385
|
}, s.prototype.delete = function (e) {
|
|
@@ -386,24 +389,24 @@
|
|
|
386
389
|
}, s.prototype.has = function (e) {
|
|
387
390
|
return this.map.hasOwnProperty(u(e));
|
|
388
391
|
}, s.prototype.set = function (e, t) {
|
|
389
|
-
this.map[u(e)] =
|
|
392
|
+
this.map[u(e)] = c(t);
|
|
390
393
|
}, s.prototype.forEach = function (e, t) {
|
|
391
394
|
for (var r in this.map) this.map.hasOwnProperty(r) && e.call(t, this.map[r], r, this);
|
|
392
395
|
}, s.prototype.keys = function () {
|
|
393
396
|
var e = [];
|
|
394
397
|
return this.forEach(function (t, r) {
|
|
395
398
|
e.push(r);
|
|
396
|
-
}),
|
|
399
|
+
}), l(e);
|
|
397
400
|
}, s.prototype.values = function () {
|
|
398
401
|
var e = [];
|
|
399
402
|
return this.forEach(function (t) {
|
|
400
403
|
e.push(t);
|
|
401
|
-
}),
|
|
404
|
+
}), l(e);
|
|
402
405
|
}, s.prototype.entries = function () {
|
|
403
406
|
var e = [];
|
|
404
407
|
return this.forEach(function (t, r) {
|
|
405
408
|
e.push([r, t]);
|
|
406
|
-
}),
|
|
409
|
+
}), l(e);
|
|
407
410
|
}, n.iterable && (s.prototype[Symbol.iterator] = s.prototype.entries);
|
|
408
411
|
var m = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
409
412
|
function _(e, t) {
|
|
@@ -481,16 +484,16 @@
|
|
|
481
484
|
return new Promise(function (r, i) {
|
|
482
485
|
var a = new _(e, t);
|
|
483
486
|
if (a.signal && a.signal.aborted) return i(new E("Aborted", "AbortError"));
|
|
484
|
-
var
|
|
487
|
+
var l = new XMLHttpRequest();
|
|
485
488
|
function d() {
|
|
486
|
-
|
|
489
|
+
l.abort();
|
|
487
490
|
}
|
|
488
|
-
if (
|
|
491
|
+
if (l.onload = function () {
|
|
489
492
|
var e,
|
|
490
493
|
t,
|
|
491
494
|
o = {
|
|
492
|
-
statusText:
|
|
493
|
-
headers: (e =
|
|
495
|
+
statusText: l.statusText,
|
|
496
|
+
headers: (e = l.getAllResponseHeaders() || "", t = new s(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
|
|
494
497
|
return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
|
|
495
498
|
}).forEach(function (e) {
|
|
496
499
|
var r = e.split(":"),
|
|
@@ -505,42 +508,42 @@
|
|
|
505
508
|
}
|
|
506
509
|
}), t)
|
|
507
510
|
};
|
|
508
|
-
0 === a.url.indexOf("file://") && (
|
|
509
|
-
var n = "response" in
|
|
511
|
+
0 === a.url.indexOf("file://") && (l.status < 200 || l.status > 599) ? o.status = 200 : o.status = l.status, o.url = "responseURL" in l ? l.responseURL : o.headers.get("X-Request-URL");
|
|
512
|
+
var n = "response" in l ? l.response : l.responseText;
|
|
510
513
|
setTimeout(function () {
|
|
511
514
|
r(new v(n, o));
|
|
512
515
|
}, 0);
|
|
513
|
-
},
|
|
516
|
+
}, l.onerror = function () {
|
|
514
517
|
setTimeout(function () {
|
|
515
518
|
i(new TypeError("Network request failed"));
|
|
516
519
|
}, 0);
|
|
517
|
-
},
|
|
520
|
+
}, l.ontimeout = function () {
|
|
518
521
|
setTimeout(function () {
|
|
519
522
|
i(new TypeError("Network request timed out"));
|
|
520
523
|
}, 0);
|
|
521
|
-
},
|
|
524
|
+
}, l.onabort = function () {
|
|
522
525
|
setTimeout(function () {
|
|
523
526
|
i(new E("Aborted", "AbortError"));
|
|
524
527
|
}, 0);
|
|
525
|
-
},
|
|
528
|
+
}, l.open(a.method, function (e) {
|
|
526
529
|
try {
|
|
527
530
|
return "" === e && o.location.href ? o.location.href : e;
|
|
528
531
|
} catch (t) {
|
|
529
532
|
return e;
|
|
530
533
|
}
|
|
531
|
-
}(a.url), !0), "include" === a.credentials ?
|
|
534
|
+
}(a.url), !0), "include" === a.credentials ? l.withCredentials = !0 : "omit" === a.credentials && (l.withCredentials = !1), "responseType" in l && (n.blob ? l.responseType = "blob" : n.arrayBuffer && (l.responseType = "arraybuffer")), t && "object" == typeof t.headers && !(t.headers instanceof s || o.Headers && t.headers instanceof o.Headers)) {
|
|
532
535
|
var f = [];
|
|
533
536
|
Object.getOwnPropertyNames(t.headers).forEach(function (e) {
|
|
534
|
-
f.push(u(e)),
|
|
537
|
+
f.push(u(e)), l.setRequestHeader(e, c(t.headers[e]));
|
|
535
538
|
}), a.headers.forEach(function (e, t) {
|
|
536
|
-
-1 === f.indexOf(t) &&
|
|
539
|
+
-1 === f.indexOf(t) && l.setRequestHeader(t, e);
|
|
537
540
|
});
|
|
538
541
|
} else a.headers.forEach(function (e, t) {
|
|
539
|
-
|
|
542
|
+
l.setRequestHeader(t, e);
|
|
540
543
|
});
|
|
541
|
-
a.signal && (a.signal.addEventListener("abort", d),
|
|
542
|
-
4 ===
|
|
543
|
-
}),
|
|
544
|
+
a.signal && (a.signal.addEventListener("abort", d), l.onreadystatechange = function () {
|
|
545
|
+
4 === l.readyState && a.signal.removeEventListener("abort", d);
|
|
546
|
+
}), l.send(void 0 === a._bodyInit ? null : a._bodyInit);
|
|
544
547
|
});
|
|
545
548
|
}
|
|
546
549
|
w.polyfill = !0, o.fetch || (o.fetch = w, o.Headers = s, o.Request = _, o.Response = v);
|
|
@@ -612,7 +615,7 @@
|
|
|
612
615
|
t = r.g.CF.keformsUrl || "";
|
|
613
616
|
return "".concat(t, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
|
|
614
617
|
}
|
|
615
|
-
function
|
|
618
|
+
function U(e, t) {
|
|
616
619
|
if (void 0 === t) return e;
|
|
617
620
|
for (var r = [], o = 0, n = Object.keys(t); o < n.length; o++) {
|
|
618
621
|
var i = n[o],
|
|
@@ -621,7 +624,7 @@
|
|
|
621
624
|
}
|
|
622
625
|
return 0 === r.length ? e : e + "?" + r.join("&");
|
|
623
626
|
}
|
|
624
|
-
function
|
|
627
|
+
function D(e) {
|
|
625
628
|
return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(r.g.location.host);
|
|
626
629
|
}
|
|
627
630
|
function G(e) {
|
|
@@ -638,20 +641,20 @@
|
|
|
638
641
|
i,
|
|
639
642
|
a,
|
|
640
643
|
u = [],
|
|
641
|
-
|
|
642
|
-
|
|
644
|
+
c = !0,
|
|
645
|
+
l = !1;
|
|
643
646
|
try {
|
|
644
647
|
if (i = (r = r.call(e)).next, 0 === t) {
|
|
645
648
|
if (Object(r) !== r) return;
|
|
646
|
-
|
|
647
|
-
} else for (; !(
|
|
649
|
+
c = !1;
|
|
650
|
+
} else for (; !(c = (o = i.call(r)).done) && (u.push(o.value), u.length !== t); c = !0);
|
|
648
651
|
} catch (e) {
|
|
649
|
-
|
|
652
|
+
l = !0, n = e;
|
|
650
653
|
} finally {
|
|
651
654
|
try {
|
|
652
|
-
if (!
|
|
655
|
+
if (!c && null != r.return && (a = r.return(), Object(a) !== a)) return;
|
|
653
656
|
} finally {
|
|
654
|
-
if (
|
|
657
|
+
if (l) throw n;
|
|
655
658
|
}
|
|
656
659
|
}
|
|
657
660
|
return u;
|
|
@@ -686,17 +689,17 @@
|
|
|
686
689
|
var i = n && !r.g[n],
|
|
687
690
|
a = "true" === G("debug") ? "" : ".min",
|
|
688
691
|
u = [],
|
|
689
|
-
|
|
692
|
+
c = {
|
|
690
693
|
resourceZone: e.resourceZone
|
|
691
694
|
};
|
|
692
695
|
u.push(function (e) {
|
|
693
|
-
return A.q.styleSheet(F(
|
|
696
|
+
return A.q.styleSheet(F(U("static/public/styles/".concat(o).concat(a, ".css"), c)), !0, e);
|
|
694
697
|
}), u.push(function (e) {
|
|
695
|
-
return A.q.script(F(
|
|
698
|
+
return A.q.script(F(U("static/public/scripts/".concat(o).concat(a, ".js"), c)), e);
|
|
696
699
|
}), i && u.push(function (e) {
|
|
697
|
-
return A.q.styleSheet(F(
|
|
700
|
+
return A.q.styleSheet(F(U("static/public/styles/candy_".concat(n).concat(a, ".css"), c)), !1, e);
|
|
698
701
|
}, function (e) {
|
|
699
|
-
return A.q.script(F(
|
|
702
|
+
return A.q.script(F(U("static/public/scripts/candy_".concat(n).concat(a, ".js"), c)), e);
|
|
700
703
|
}), x(u, t);
|
|
701
704
|
}
|
|
702
705
|
}
|
|
@@ -716,14 +719,14 @@
|
|
|
716
719
|
i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : H,
|
|
717
720
|
a = null,
|
|
718
721
|
u = t.ns,
|
|
719
|
-
|
|
720
|
-
if (
|
|
721
|
-
var
|
|
722
|
-
s =
|
|
722
|
+
c = t.draftId;
|
|
723
|
+
if (D(O.r.konturDomains) ? O.r.authorized ? c ? u || (a = new Error("options.ns is required")) : a = new Error("options.draftId is required") : a = new Error("user.unauthenticated") : a = new Error("domain.untrusted"), a) i(a);else {
|
|
724
|
+
var l = null !== (o = t.resourceZone) && void 0 !== o ? o : G("resourceZone"),
|
|
725
|
+
s = U(F((0, P.I)({
|
|
723
726
|
ns: u,
|
|
724
|
-
draftId:
|
|
727
|
+
draftId: c
|
|
725
728
|
})), {
|
|
726
|
-
resourceZone:
|
|
729
|
+
resourceZone: l
|
|
727
730
|
}),
|
|
728
731
|
d = {
|
|
729
732
|
method: "GET"
|
|
@@ -738,7 +741,7 @@
|
|
|
738
741
|
var n,
|
|
739
742
|
a,
|
|
740
743
|
u,
|
|
741
|
-
|
|
744
|
+
c,
|
|
742
745
|
s,
|
|
743
746
|
d = o.gfv,
|
|
744
747
|
f = o.engineVersion,
|
|
@@ -757,9 +760,9 @@
|
|
|
757
760
|
engineVersion: f,
|
|
758
761
|
feedbackEnabled: null !== (a = t.feedbackEnabled) && void 0 !== a ? a : o.feedbackEnabled,
|
|
759
762
|
isDisabledCleanForm: null !== (u = t.isDisabledCleanForm) && void 0 !== u && u,
|
|
760
|
-
isDisabledCloseButton: null !== (
|
|
763
|
+
isDisabledCloseButton: null !== (c = t.isDisabledCloseButton) && void 0 !== c && c,
|
|
761
764
|
isDisabledCloseAndSaveButton: null !== (s = t.isDisabledCloseAndSaveButton) && void 0 !== s && s,
|
|
762
|
-
resourceZone:
|
|
765
|
+
resourceZone: l
|
|
763
766
|
});
|
|
764
767
|
R({
|
|
765
768
|
gfv: y.gfv,
|
|
@@ -787,7 +790,7 @@
|
|
|
787
790
|
partialRenderingForIE8: M("{partialRenderingForIE8}"),
|
|
788
791
|
keformsUrl: "{keformsUrl}"
|
|
789
792
|
};
|
|
790
|
-
r.g.CF = z, (V = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (V.register(H, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(M, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(F, "url", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(
|
|
793
|
+
r.g.CF = z, (V = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (V.register(H, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(M, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(F, "url", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(U, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(D, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), V.register(function (e, t) {
|
|
791
794
|
try {
|
|
792
795
|
var r,
|
|
793
796
|
o,
|
|
@@ -795,8 +798,8 @@
|
|
|
795
798
|
i,
|
|
796
799
|
a,
|
|
797
800
|
u,
|
|
798
|
-
l,
|
|
799
801
|
c,
|
|
802
|
+
l,
|
|
800
803
|
s,
|
|
801
804
|
d,
|
|
802
805
|
f = e.split(".").slice(0, 3).map(function (e) {
|
|
@@ -805,7 +808,7 @@
|
|
|
805
808
|
y = t.split(".").slice(0, 3).map(function (e) {
|
|
806
809
|
return parseInt(e, 10);
|
|
807
810
|
});
|
|
808
|
-
return (null !== (r = f[0]) && void 0 !== r ? r : 0) > (null !== (o = y[0]) && void 0 !== o ? o : 0) || (null !== (n = f[0]) && void 0 !== n ? n : 0) === (null !== (i = y[0]) && void 0 !== i ? i : 0) && ((null !== (a = f[1]) && void 0 !== a ? a : 0) > (null !== (u = y[1]) && void 0 !== u ? u : 0) || (null !== (
|
|
811
|
+
return (null !== (r = f[0]) && void 0 !== r ? r : 0) > (null !== (o = y[0]) && void 0 !== o ? o : 0) || (null !== (n = f[0]) && void 0 !== n ? n : 0) === (null !== (i = y[0]) && void 0 !== i ? i : 0) && ((null !== (a = f[1]) && void 0 !== a ? a : 0) > (null !== (u = y[1]) && void 0 !== u ? u : 0) || (null !== (c = f[1]) && void 0 !== c ? c : 0) === (null !== (l = y[1]) && void 0 !== l ? l : 0) && (null !== (s = f[2]) && void 0 !== s ? s : 0) >= (null !== (d = y[2]) && void 0 !== d ? d : 0));
|
|
809
812
|
} catch (e) {
|
|
810
813
|
return !1;
|
|
811
814
|
}
|
|
@@ -863,8 +866,8 @@
|
|
|
863
866
|
i = "function" == typeof Symbol ? Symbol : {},
|
|
864
867
|
a = i.iterator || "@@iterator",
|
|
865
868
|
u = i.asyncIterator || "@@asyncIterator",
|
|
866
|
-
|
|
867
|
-
function
|
|
869
|
+
c = i.toStringTag || "@@toStringTag";
|
|
870
|
+
function l(e, t, r) {
|
|
868
871
|
return Object.defineProperty(e, t, {
|
|
869
872
|
value: r,
|
|
870
873
|
enumerable: !0,
|
|
@@ -873,9 +876,9 @@
|
|
|
873
876
|
}), e[t];
|
|
874
877
|
}
|
|
875
878
|
try {
|
|
876
|
-
|
|
879
|
+
l({}, "");
|
|
877
880
|
} catch (e) {
|
|
878
|
-
|
|
881
|
+
l = function (e, t, r) {
|
|
879
882
|
return e[t] = r;
|
|
880
883
|
};
|
|
881
884
|
}
|
|
@@ -910,7 +913,7 @@
|
|
|
910
913
|
function g() {}
|
|
911
914
|
function v() {}
|
|
912
915
|
var b = {};
|
|
913
|
-
|
|
916
|
+
l(b, a, function () {
|
|
914
917
|
return this;
|
|
915
918
|
});
|
|
916
919
|
var E = Object.getPrototypeOf,
|
|
@@ -919,28 +922,28 @@
|
|
|
919
922
|
var C = v.prototype = _.prototype = Object.create(b);
|
|
920
923
|
function k(e) {
|
|
921
924
|
["next", "throw", "return"].forEach(function (t) {
|
|
922
|
-
|
|
925
|
+
l(e, t, function (e) {
|
|
923
926
|
return this._invoke(t, e);
|
|
924
927
|
});
|
|
925
928
|
});
|
|
926
929
|
}
|
|
927
930
|
function A(e, t) {
|
|
928
931
|
function r(n, i, a, u) {
|
|
929
|
-
var
|
|
930
|
-
if ("throw" !==
|
|
931
|
-
var
|
|
932
|
-
s =
|
|
932
|
+
var c = d(e[n], e, i);
|
|
933
|
+
if ("throw" !== c.type) {
|
|
934
|
+
var l = c.arg,
|
|
935
|
+
s = l.value;
|
|
933
936
|
return s && "object" == _typeof(s) && o.call(s, "__await") ? t.resolve(s.__await).then(function (e) {
|
|
934
937
|
r("next", e, a, u);
|
|
935
938
|
}, function (e) {
|
|
936
939
|
r("throw", e, a, u);
|
|
937
940
|
}) : t.resolve(s).then(function (e) {
|
|
938
|
-
|
|
941
|
+
l.value = e, a(l);
|
|
939
942
|
}, function (e) {
|
|
940
943
|
return r("throw", e, a, u);
|
|
941
944
|
});
|
|
942
945
|
}
|
|
943
|
-
u(
|
|
946
|
+
u(c.arg);
|
|
944
947
|
}
|
|
945
948
|
var i;
|
|
946
949
|
n(this, "_invoke", {
|
|
@@ -968,10 +971,10 @@
|
|
|
968
971
|
for (o.method = i, o.arg = a;;) {
|
|
969
972
|
var u = o.delegate;
|
|
970
973
|
if (u) {
|
|
971
|
-
var
|
|
972
|
-
if (
|
|
973
|
-
if (
|
|
974
|
-
return
|
|
974
|
+
var c = O(u, o);
|
|
975
|
+
if (c) {
|
|
976
|
+
if (c === m) continue;
|
|
977
|
+
return c;
|
|
975
978
|
}
|
|
976
979
|
}
|
|
977
980
|
if ("next" === o.method) o.sent = o._sent = o.arg;else if ("throw" === o.method) {
|
|
@@ -979,15 +982,15 @@
|
|
|
979
982
|
o.dispatchException(o.arg);
|
|
980
983
|
} else "return" === o.method && o.abrupt("return", o.arg);
|
|
981
984
|
n = p;
|
|
982
|
-
var
|
|
983
|
-
if ("normal" ===
|
|
984
|
-
if (n = o.done ? h : y,
|
|
985
|
+
var l = d(t, r, o);
|
|
986
|
+
if ("normal" === l.type) {
|
|
987
|
+
if (n = o.done ? h : y, l.arg === m) continue;
|
|
985
988
|
return {
|
|
986
|
-
value:
|
|
989
|
+
value: l.arg,
|
|
987
990
|
done: o.done
|
|
988
991
|
};
|
|
989
992
|
}
|
|
990
|
-
"throw" ===
|
|
993
|
+
"throw" === l.type && (n = h, o.method = "throw", o.arg = l.arg);
|
|
991
994
|
}
|
|
992
995
|
};
|
|
993
996
|
}
|
|
@@ -1037,16 +1040,16 @@
|
|
|
1037
1040
|
}), n(v, "constructor", {
|
|
1038
1041
|
value: g,
|
|
1039
1042
|
configurable: !0
|
|
1040
|
-
}), g.displayName =
|
|
1043
|
+
}), g.displayName = l(v, c, "GeneratorFunction"), t.isGeneratorFunction = function (e) {
|
|
1041
1044
|
var t = "function" == typeof e && e.constructor;
|
|
1042
1045
|
return !!t && (t === g || "GeneratorFunction" === (t.displayName || t.name));
|
|
1043
1046
|
}, t.mark = function (e) {
|
|
1044
|
-
return Object.setPrototypeOf ? Object.setPrototypeOf(e, v) : (e.__proto__ = v,
|
|
1047
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, v) : (e.__proto__ = v, l(e, c, "GeneratorFunction")), e.prototype = Object.create(C), e;
|
|
1045
1048
|
}, t.awrap = function (e) {
|
|
1046
1049
|
return {
|
|
1047
1050
|
__await: e
|
|
1048
1051
|
};
|
|
1049
|
-
}, k(A.prototype),
|
|
1052
|
+
}, k(A.prototype), l(A.prototype, u, function () {
|
|
1050
1053
|
return this;
|
|
1051
1054
|
}), t.AsyncIterator = A, t.async = function (e, r, o, n, i) {
|
|
1052
1055
|
void 0 === i && (i = Promise);
|
|
@@ -1054,9 +1057,9 @@
|
|
|
1054
1057
|
return t.isGeneratorFunction(r) ? a : a.next().then(function (e) {
|
|
1055
1058
|
return e.done ? e.value : a.next();
|
|
1056
1059
|
});
|
|
1057
|
-
}, k(C),
|
|
1060
|
+
}, k(C), l(C, c, "Generator"), l(C, a, function () {
|
|
1058
1061
|
return this;
|
|
1059
|
-
}),
|
|
1062
|
+
}), l(C, "toString", function () {
|
|
1060
1063
|
return "[object Generator]";
|
|
1061
1064
|
}), t.keys = function (e) {
|
|
1062
1065
|
var t = Object(e),
|
|
@@ -1091,15 +1094,15 @@
|
|
|
1091
1094
|
u = a.completion;
|
|
1092
1095
|
if ("root" === a.tryLoc) return n("end");
|
|
1093
1096
|
if (a.tryLoc <= this.prev) {
|
|
1094
|
-
var
|
|
1095
|
-
|
|
1096
|
-
if (
|
|
1097
|
+
var c = o.call(a, "catchLoc"),
|
|
1098
|
+
l = o.call(a, "finallyLoc");
|
|
1099
|
+
if (c && l) {
|
|
1097
1100
|
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1098
1101
|
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1099
|
-
} else if (
|
|
1102
|
+
} else if (c) {
|
|
1100
1103
|
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1101
1104
|
} else {
|
|
1102
|
-
if (!
|
|
1105
|
+
if (!l) throw Error("try statement without catch or finally");
|
|
1103
1106
|
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1104
1107
|
}
|
|
1105
1108
|
}
|
|
@@ -1153,11 +1156,11 @@
|
|
|
1153
1156
|
function asyncGeneratorStep(e, t, r, o, n, i, a) {
|
|
1154
1157
|
try {
|
|
1155
1158
|
var u = e[i](a),
|
|
1156
|
-
|
|
1159
|
+
c = u.value;
|
|
1157
1160
|
} catch (e) {
|
|
1158
1161
|
return void r(e);
|
|
1159
1162
|
}
|
|
1160
|
-
u.done ? t(
|
|
1163
|
+
u.done ? t(c) : Promise.resolve(c).then(o, n);
|
|
1161
1164
|
}
|
|
1162
1165
|
function _asyncToGenerator(e) {
|
|
1163
1166
|
return function () {
|
|
@@ -1588,6 +1591,11 @@
|
|
|
1588
1591
|
value: function () {
|
|
1589
1592
|
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1590
1593
|
}
|
|
1594
|
+
}, {
|
|
1595
|
+
key: "getSelectedInstances",
|
|
1596
|
+
value: function (e, t, r) {
|
|
1597
|
+
return Promise.resolve([]);
|
|
1598
|
+
}
|
|
1591
1599
|
}, {
|
|
1592
1600
|
key: "__reactstandin__regenerateByEval",
|
|
1593
1601
|
value: function __reactstandin__regenerateByEval(key, code) {
|
|
@@ -1633,12 +1641,12 @@
|
|
|
1633
1641
|
}
|
|
1634
1642
|
r.d(t, {
|
|
1635
1643
|
q: function () {
|
|
1636
|
-
return
|
|
1644
|
+
return l;
|
|
1637
1645
|
}
|
|
1638
1646
|
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
1639
1647
|
var u,
|
|
1640
|
-
|
|
1641
|
-
|
|
1648
|
+
c,
|
|
1649
|
+
l = function () {
|
|
1642
1650
|
return e = function e() {
|
|
1643
1651
|
!function (e, t) {
|
|
1644
1652
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
@@ -1673,7 +1681,7 @@
|
|
|
1673
1681
|
}), e;
|
|
1674
1682
|
var e, t;
|
|
1675
1683
|
}();
|
|
1676
|
-
(u = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && u.register(
|
|
1684
|
+
(u = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && u.register(l, "LoadIntoDocument", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Helpers\\LoadIntoDocument.ts"), (c = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.leaveModule : void 0) && c(e);
|
|
1677
1685
|
}
|
|
1678
1686
|
},
|
|
1679
1687
|
__webpack_module_cache__ = {};
|
|
@@ -1711,4 +1719,4 @@
|
|
|
1711
1719
|
};
|
|
1712
1720
|
var __webpack_exports__ = __webpack_require__(591);
|
|
1713
1721
|
})();
|
|
1714
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsImwiLCJjIiwicyIsImYiLCJrdSIsIm1lc3NhZ2UiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInkiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwIiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJoIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibSIsIl8iLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkMiLCJrIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJNIiwiRiIsIkNGIiwia2Vmb3Jtc1VybCIsIkQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJVIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsImVudHJ5UG9pbnQiLCJyZXNvdXJjZVpvbmUiLCJxIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIk4iLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJLIiwia29udHVyRG9tYWlucyIsImF1dGhvcml6ZWQiLCJhdXRoZW50aWNhdGlvbiIsImF1dGhTaWQiLCJBdXRob3JpemF0aW9uIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwic2hvd05hdmlnYXRpb25TaWRlYmFyIiwib25SZW1vdmVBdHRhY2htZW50IiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsInRlbXBsYXRlc0FwaSIsInJlbmRlckZvcm0iLCJWIiwiVyIsInoiLCJzdGFydCIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJwYXJzZUludCIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJfQ29tbW9uX0Vycm9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImFyZyIsIndyYXAiLCJfaW52b2tlIiwiX19hd2FpdCIsImRlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsImF3cmFwIiwiQXN5bmNJdGVyYXRvciIsImFzeW5jIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwib3duS2V5cyIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsIm1hcENodW5rVmFsdWVzIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwiZm9ybSIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwiX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MiLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNoYW5nZVNldCIsInN0b3BBdXRvc2VuZCIsInVubW91bnQiLCJtb2RlbCIsImdldENodW5rIiwic2V0dGluZ3MiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiX3JlbG9hZElubmVyIiwiZmlsbCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJkb2N1bWVudEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwic3JjIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwid2luZG93IiwiY2hpbGRyZW4iXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmwudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0Vycm9ycy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vVHlwaW5nVXRpbHMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvSGVscGVycy9Mb2FkSW50b0RvY3VtZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudERyYWZ0SW5mb1VybChkcmFmdElkOiBEcmFmdEZ1bGxJZCkge1xuICAgIC8vIE5PVEUg0K3RgtCwINGE0YPQvdC60YbQuNGPINC+0LHRitGP0LLQu9C10L3QsCDQvtGC0LTQtdC70YzQvdC+LCDQuNCx0L4g0L7QvdCwINCy0YXQvtC00LjRgiDQsiDRgdC+0YHRgtCw0LIgY2xpZW50LmpzINC4XG4gICAgLy8g0L3QtSDQtNC+0LvQttC90L4g0L/RgNC+0LjRgdGF0L7QtNC40YLRjCDRg9GC0LXQttC10LvQtdC90LjRjyBjbGllbnQuanMt0LBcbiAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRJZC5uc30vZHJhZnRzLyR7ZHJhZnRJZC5kcmFmdElkfS9jbGllbnQtZHJhZnQtaW5mb2A7XG59XG4iLCJleHBvcnQgY2xhc3MgQXBwbGljYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJPcGVyYXRpb24gbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSA/PyBcIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQcm9ncmFtU3RhdGVFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIgKyAobWVzc2FnZSAhPSB1bmRlZmluZWQgPyBcIjogXCIgKyBtZXNzYWdlIDogXCJcIikpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iLCIvKioqXG4gKiDQodGC0YDQvtCz0L7RgtC40L/QuNC30LjRgNC+0LLQsNC90L3QsNGPINC30LDQvNC10L3QsCDQtNC70Y8gQm9vbGVhbiguLi4pXG4gKiDQntCx0YvRh9C90L4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyBbLi4uXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGlucHV0IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bkVycm9yKGVycm9yOiB1bmtub3duKTogdW5kZWZpbmVkIHwgc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIGVycm9yPy5bXCJtZXNzYWdlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUKTogYXNzZXJ0cyBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgaWYgKCFpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGRlZmluZWRgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JGaXJzdENhbGxiYWNrPFQ+ID0gKC4uLmFyZ3M6IFtFcnJvciwgbnVsbCB8IHVuZGVmaW5lZF0gfCBbbnVsbCB8IHVuZGVmaW5lZCwgVF0gfCBbRXJyb3JdKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0KG1lc3NhZ2U/OiBzdHJpbmcgfCBFcnJvcik6IG5ldmVyIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgfHwgbWVzc2FnZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJVbmRlZmluZWQgaXMgbm90IGFsbG93ZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbWVzc2FnZTtcbiAgICB9XG59XG5cbnR5cGUgQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7IGxlbmd0aDogVExlbmd0aCB9XG4gICAgPyBUUmVzdFxuICAgIDogQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCwgW1RJdGVtLCAuLi5UUmVzdF0+O1xuXG5leHBvcnQgdHlwZSBNaW5MZW5ndGhBcnJheTxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7XG4gICAgbGVuZ3RoOiBUTGVuZ3RoO1xufVxuICAgID8gWy4uLlRSZXN0LCAuLi5USXRlbVtdXVxuICAgIDogTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGgsIFsuLi5UUmVzdCwgVEl0ZW1dPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbWluTGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+PSBtaW5MZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGhPclVuZGVmaW5lZDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogdW5kZWZpbmVkIHwgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIGlmIChpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbWluTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUhhc0xlbmd0aDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA9PT0gbGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUhhc0F0TGVhc3RPbmVJdGVtPFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+IDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUlzTm90RW1wdHk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGFzc2VydHMgaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIGlmICghYXJyYXlJc05vdEVtcHR5KGl0ZW1zKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IG11c3QgYmUgbm90IGVtcHR5YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGFzc2VydHMgaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgaWYgKCFhcnJheUhhc0xlbmd0aChpdGVtcywgbGVuZ3RoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IHNob3VsZCBoYXMgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5TGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGhhdmUgbWluaW1hbCBsZW5ndGggJHtsZW5ndGh9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTmV2ZXIobmV2ZXJBcmd1bWVudDogbmV2ZXIpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBbmRHZXRTdHJpbmcobmV2ZXJBcmd1bWVudDogbmV2ZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtuZXZlckFyZ3VtZW50fWA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBydW5Bc3luY0FjdGlvbihhY3Rpb246ICgpID0+IFByb21pc2U8dm9pZD4pOiB2b2lkIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgYWN0aW9uKCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPckVtcHR5KGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBpbnB1dCBpcyB1bmRlZmluZWQge1xuICAgIHJldHVybiBpbnB1dCA9PSB1bmRlZmluZWQgfHwgaW5wdXQgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPckVtcHR5KGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQpOiBpbnB1dCBpcyBzdHJpbmcge1xuICAgIHJldHVybiAhaXNOdWxsT3JFbXB0eShpbnB1dCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc051bGxPcldoaXRlU3BhY2UoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwpOiBpbnB1dCBpcyB1bmRlZmluZWQgfCBudWxsIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0LnRyaW0oKSA9PT0gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRyaW1MYXN0U2xhc2godXJsOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiB1cmwuc2xpY2UoLTEpID09PSBcIi9cIiA/IHVybC5zbGljZSgwLCAtMSkgOiB1cmw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRJczxUPih2YWx1ZTogVCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvdHlwZS1idWlsdGlucyAqL1xudmFyIGcgPVxuICAodHlwZW9mIGdsb2JhbFRoaXMgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbFRoaXMpIHx8XG4gICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcgJiYgc2VsZikgfHxcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVuZGVmXG4gICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwpIHx8XG4gIHt9XG5cbnZhciBzdXBwb3J0ID0ge1xuICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIGcsXG4gIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBnICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuICBibG9iOlxuICAgICdGaWxlUmVhZGVyJyBpbiBnICYmXG4gICAgJ0Jsb2InIGluIGcgJiZcbiAgICAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAgICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0pKCksXG4gIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIGcsXG4gIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIGdcbn1cblxuZnVuY3Rpb24gaXNEYXRhVmlldyhvYmopIHtcbiAgcmV0dXJuIG9iaiAmJiBEYXRhVmlldy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihvYmopXG59XG5cbmlmIChzdXBwb3J0LmFycmF5QnVmZmVyKSB7XG4gIHZhciB2aWV3Q2xhc3NlcyA9IFtcbiAgICAnW29iamVjdCBJbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhDbGFtcGVkQXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBJbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBGbG9hdDY0QXJyYXldJ1xuICBdXG5cbiAgdmFyIGlzQXJyYXlCdWZmZXJWaWV3ID1cbiAgICBBcnJheUJ1ZmZlci5pc1ZpZXcgfHxcbiAgICBmdW5jdGlvbihvYmopIHtcbiAgICAgIHJldHVybiBvYmogJiYgdmlld0NsYXNzZXMuaW5kZXhPZihPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqKSkgPiAtMVxuICAgIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG4gIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICBuYW1lID0gU3RyaW5nKG5hbWUpXG4gIH1cbiAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXl9gfH4hXS9pLnRlc3QobmFtZSkgfHwgbmFtZSA9PT0gJycpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZTogXCInICsgbmFtZSArICdcIicpXG4gIH1cbiAgcmV0dXJuIG5hbWUudG9Mb3dlckNhc2UoKVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICB9XG4gIHJldHVybiB2YWx1ZVxufVxuXG4vLyBCdWlsZCBhIGRlc3RydWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuZnVuY3Rpb24gaXRlcmF0b3JGb3IoaXRlbXMpIHtcbiAgdmFyIGl0ZXJhdG9yID0ge1xuICAgIG5leHQ6IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gaXRlcmF0b3JcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaXRlcmF0b3Jcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuICB0aGlzLm1hcCA9IHt9XG5cbiAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCB2YWx1ZSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoaGVhZGVycykpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICBpZiAoaGVhZGVyLmxlbmd0aCAhPSAyKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0hlYWRlcnMgY29uc3RydWN0b3I6IGV4cGVjdGVkIG5hbWUvdmFsdWUgcGFpciB0byBiZSBsZW5ndGggMiwgZm91bmQnICsgaGVhZGVyLmxlbmd0aClcbiAgICAgIH1cbiAgICAgIHRoaXMuYXBwZW5kKGhlYWRlclswXSwgaGVhZGVyWzFdKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoaGVhZGVycykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlcbiAgICB9LCB0aGlzKVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4gIHZhciBvbGRWYWx1ZSA9IHRoaXMubWFwW25hbWVdXG4gIHRoaXMubWFwW25hbWVdID0gb2xkVmFsdWUgPyBvbGRWYWx1ZSArICcsICcgKyB2YWx1ZSA6IHZhbHVlXG59XG5cbkhlYWRlcnMucHJvdG90eXBlWydkZWxldGUnXSA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgZGVsZXRlIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgcmV0dXJuIHRoaXMuaGFzKG5hbWUpID8gdGhpcy5tYXBbbmFtZV0gOiBudWxsXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuICBmb3IgKHZhciBuYW1lIGluIHRoaXMubWFwKSB7XG4gICAgaWYgKHRoaXMubWFwLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHRoaXMubWFwW25hbWVdLCBuYW1lLCB0aGlzKVxuICAgIH1cbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2gobmFtZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgaXRlbXMucHVzaCh2YWx1ZSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgIGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSlcbiAgfSlcbiAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxufVxuXG5pZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICBIZWFkZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xufVxuXG5mdW5jdGlvbiBjb25zdW1lZChib2R5KSB7XG4gIGlmIChib2R5Ll9ub0JvZHkpIHJldHVyblxuICBpZiAoYm9keS5ib2R5VXNlZCkge1xuICAgIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcbiAgfVxuICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxufVxuXG5mdW5jdGlvbiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICByZWFkZXIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG4gICAgfVxuICAgIHJlYWRlci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgIH1cbiAgfSlcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVmZmVyKGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHZhciBtYXRjaCA9IC9jaGFyc2V0PShbQS1aYS16MC05Xy1dKykvLmV4ZWMoYmxvYi50eXBlKVxuICB2YXIgZW5jb2RpbmcgPSBtYXRjaCA/IG1hdGNoWzFdIDogJ3V0Zi04J1xuICByZWFkZXIucmVhZEFzVGV4dChibG9iLCBlbmNvZGluZylcbiAgcmV0dXJuIHByb21pc2Vcbn1cblxuZnVuY3Rpb24gcmVhZEFycmF5QnVmZmVyQXNUZXh0KGJ1Zikge1xuICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1ZilcbiAgdmFyIGNoYXJzID0gbmV3IEFycmF5KHZpZXcubGVuZ3RoKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmlldy5sZW5ndGg7IGkrKykge1xuICAgIGNoYXJzW2ldID0gU3RyaW5nLmZyb21DaGFyQ29kZSh2aWV3W2ldKVxuICB9XG4gIHJldHVybiBjaGFycy5qb2luKCcnKVxufVxuXG5mdW5jdGlvbiBidWZmZXJDbG9uZShidWYpIHtcbiAgaWYgKGJ1Zi5zbGljZSkge1xuICAgIHJldHVybiBidWYuc2xpY2UoMClcbiAgfSBlbHNlIHtcbiAgICB2YXIgdmlldyA9IG5ldyBVaW50OEFycmF5KGJ1Zi5ieXRlTGVuZ3RoKVxuICAgIHZpZXcuc2V0KG5ldyBVaW50OEFycmF5KGJ1ZikpXG4gICAgcmV0dXJuIHZpZXcuYnVmZmVyXG4gIH1cbn1cblxuZnVuY3Rpb24gQm9keSgpIHtcbiAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgdGhpcy5faW5pdEJvZHkgPSBmdW5jdGlvbihib2R5KSB7XG4gICAgLypcbiAgICAgIGZldGNoLW1vY2sgd3JhcHMgdGhlIFJlc3BvbnNlIG9iamVjdCBpbiBhbiBFUzYgUHJveHkgdG9cbiAgICAgIHByb3ZpZGUgdXNlZnVsIHRlc3QgaGFybmVzcyBmZWF0dXJlcyBzdWNoIGFzIGZsdXNoLiBIb3dldmVyLCBvblxuICAgICAgRVM1IGJyb3dzZXJzIHdpdGhvdXQgZmV0Y2ggb3IgUHJveHkgc3VwcG9ydCBwb2xseWZpbGxzIG11c3QgYmUgdXNlZDtcbiAgICAgIHRoZSBwcm94eS1wb2xseWZpbGwgaXMgdW5hYmxlIHRvIHByb3h5IGFuIGF0dHJpYnV0ZSB1bmxlc3MgaXQgZXhpc3RzXG4gICAgICBvbiB0aGUgb2JqZWN0IGJlZm9yZSB0aGUgUHJveHkgaXMgY3JlYXRlZC4gVGhpcyBjaGFuZ2UgZW5zdXJlc1xuICAgICAgUmVzcG9uc2UuYm9keVVzZWQgZXhpc3RzIG9uIHRoZSBpbnN0YW5jZSwgd2hpbGUgbWFpbnRhaW5pbmcgdGhlXG4gICAgICBzZW1hbnRpYyBvZiBzZXR0aW5nIFJlcXVlc3QuYm9keVVzZWQgaW4gdGhlIGNvbnN0cnVjdG9yIGJlZm9yZVxuICAgICAgX2luaXRCb2R5IGlzIGNhbGxlZC5cbiAgICAqL1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWFzc2lnblxuICAgIHRoaXMuYm9keVVzZWQgPSB0aGlzLmJvZHlVc2VkXG4gICAgdGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgaWYgKCFib2R5KSB7XG4gICAgICB0aGlzLl9ub0JvZHkgPSB0cnVlO1xuICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlGb3JtRGF0YSA9IGJvZHlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5nKClcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgc3VwcG9ydC5ibG9iICYmIGlzRGF0YVZpZXcoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkuYnVmZmVyKVxuICAgICAgLy8gSUUgMTAtMTEgY2FuJ3QgaGFuZGxlIGEgRGF0YVZpZXcgYm9keS5cbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gbmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIChBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSB8fCBpc0FycmF5QnVmZmVyVmlldyhib2R5KSkpIHtcbiAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlciA9IGJ1ZmZlckNsb25lKGJvZHkpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChib2R5KVxuICAgIH1cblxuICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcbiAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHZhciBpc0NvbnN1bWVkID0gY29uc3VtZWQodGhpcylcbiAgICAgIGlmIChpc0NvbnN1bWVkKSB7XG4gICAgICAgIHJldHVybiBpc0NvbnN1bWVkXG4gICAgICB9IGVsc2UgaWYgKEFycmF5QnVmZmVyLmlzVmlldyh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoXG4gICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ1ZmZlci5zbGljZShcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0LFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQgKyB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZUxlbmd0aFxuICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpXG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNBcnJheUJ1ZmZlcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBhcyBBcnJheUJ1ZmZlcicpXG4gICAgfVxuICB9XG5cbiAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3RlZFxuICAgIH1cblxuICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlYWRBcnJheUJ1ZmZlckFzVGV4dCh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpKVxuICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgfVxuICB9XG5cbiAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICB0aGlzLmZvcm1EYXRhID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgfVxuICB9XG5cbiAgdGhpcy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgfVxuXG4gIHJldHVybiB0aGlzXG59XG5cbi8vIEhUVFAgbWV0aG9kcyB3aG9zZSBjYXBpdGFsaXphdGlvbiBzaG91bGQgYmUgbm9ybWFsaXplZFxudmFyIG1ldGhvZHMgPSBbJ0NPTk5FQ1QnLCAnREVMRVRFJywgJ0dFVCcsICdIRUFEJywgJ09QVElPTlMnLCAnUEFUQ0gnLCAnUE9TVCcsICdQVVQnLCAnVFJBQ0UnXVxuXG5mdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgcmV0dXJuIG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xID8gdXBjYXNlZCA6IG1ldGhvZFxufVxuXG5leHBvcnQgZnVuY3Rpb24gUmVxdWVzdChpbnB1dCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVxdWVzdCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cblxuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fVxuICB2YXIgYm9keSA9IG9wdGlvbnMuYm9keVxuXG4gIGlmIChpbnB1dCBpbnN0YW5jZW9mIFJlcXVlc3QpIHtcbiAgICBpZiAoaW5wdXQuYm9keVVzZWQpIHtcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG4gICAgfVxuICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxzXG4gICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gaW5wdXQubWV0aG9kXG4gICAgdGhpcy5tb2RlID0gaW5wdXQubW9kZVxuICAgIHRoaXMuc2lnbmFsID0gaW5wdXQuc2lnbmFsXG4gICAgaWYgKCFib2R5ICYmIGlucHV0Ll9ib2R5SW5pdCAhPSBudWxsKSB7XG4gICAgICBib2R5ID0gaW5wdXQuX2JvZHlJbml0XG4gICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdGhpcy51cmwgPSBTdHJpbmcoaW5wdXQpXG4gIH1cblxuICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdzYW1lLW9yaWdpbidcbiAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5oZWFkZXJzKSB7XG4gICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB9XG4gIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgdGhpcy5zaWduYWwgPSBvcHRpb25zLnNpZ25hbCB8fCB0aGlzLnNpZ25hbCB8fCAoZnVuY3Rpb24gKCkge1xuICAgIGlmICgnQWJvcnRDb250cm9sbGVyJyBpbiBnKSB7XG4gICAgICB2YXIgY3RybCA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIHJldHVybiBjdHJsLnNpZ25hbDtcbiAgICB9XG4gIH0oKSk7XG4gIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0JvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3RzJylcbiAgfVxuICB0aGlzLl9pbml0Qm9keShib2R5KVxuXG4gIGlmICh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykge1xuICAgIGlmIChvcHRpb25zLmNhY2hlID09PSAnbm8tc3RvcmUnIHx8IG9wdGlvbnMuY2FjaGUgPT09ICduby1jYWNoZScpIHtcbiAgICAgIC8vIFNlYXJjaCBmb3IgYSAnXycgcGFyYW1ldGVyIGluIHRoZSBxdWVyeSBzdHJpbmdcbiAgICAgIHZhciByZVBhcmFtU2VhcmNoID0gLyhbPyZdKV89W14mXSovXG4gICAgICBpZiAocmVQYXJhbVNlYXJjaC50ZXN0KHRoaXMudXJsKSkge1xuICAgICAgICAvLyBJZiBpdCBhbHJlYWR5IGV4aXN0cyB0aGVuIHNldCB0aGUgdmFsdWUgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHRoaXMudXJsID0gdGhpcy51cmwucmVwbGFjZShyZVBhcmFtU2VhcmNoLCAnJDFfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVyd2lzZSBhZGQgYSBuZXcgJ18nIHBhcmFtZXRlciB0byB0aGUgZW5kIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB2YXIgcmVRdWVyeVN0cmluZyA9IC9cXD8vXG4gICAgICAgIHRoaXMudXJsICs9IChyZVF1ZXJ5U3RyaW5nLnRlc3QodGhpcy51cmwpID8gJyYnIDogJz8nKSArICdfPScgKyBuZXcgRGF0ZSgpLmdldFRpbWUoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5SZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcywge2JvZHk6IHRoaXMuX2JvZHlJbml0fSlcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICBib2R5XG4gICAgLnRyaW0oKVxuICAgIC5zcGxpdCgnJicpXG4gICAgLmZvckVhY2goZnVuY3Rpb24oYnl0ZXMpIHtcbiAgICAgIGlmIChieXRlcykge1xuICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG4gICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc9JykucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25lbnQodmFsdWUpKVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBmb3JtXG59XG5cbmZ1bmN0aW9uIHBhcnNlSGVhZGVycyhyYXdIZWFkZXJzKSB7XG4gIHZhciBoZWFkZXJzID0gbmV3IEhlYWRlcnMoKVxuICAvLyBSZXBsYWNlIGluc3RhbmNlcyBvZiBcXHJcXG4gYW5kIFxcbiBmb2xsb3dlZCBieSBhdCBsZWFzdCBvbmUgc3BhY2Ugb3IgaG9yaXpvbnRhbCB0YWIgd2l0aCBhIHNwYWNlXG4gIC8vIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM3MjMwI3NlY3Rpb24tMy4yXG4gIHZhciBwcmVQcm9jZXNzZWRIZWFkZXJzID0gcmF3SGVhZGVycy5yZXBsYWNlKC9cXHI/XFxuW1xcdCBdKy9nLCAnICcpXG4gIC8vIEF2b2lkaW5nIHNwbGl0IHZpYSByZWdleCB0byB3b3JrIGFyb3VuZCBhIGNvbW1vbiBJRTExIGJ1ZyB3aXRoIHRoZSBjb3JlLWpzIDMuNi4wIHJlZ2V4IHBvbHlmaWxsXG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9naXRodWIvZmV0Y2gvaXNzdWVzLzc0OFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vemxvaXJvY2svY29yZS1qcy9pc3N1ZXMvNzUxXG4gIHByZVByb2Nlc3NlZEhlYWRlcnNcbiAgICAuc3BsaXQoJ1xccicpXG4gICAgLm1hcChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHJldHVybiBoZWFkZXIuaW5kZXhPZignXFxuJykgPT09IDAgPyBoZWFkZXIuc3Vic3RyKDEsIGhlYWRlci5sZW5ndGgpIDogaGVhZGVyXG4gICAgfSlcbiAgICAuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6JylcbiAgICAgIHZhciBrZXkgPSBwYXJ0cy5zaGlmdCgpLnRyaW0oKVxuICAgICAgaWYgKGtleSkge1xuICAgICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6JykudHJpbSgpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaGVhZGVycy5hcHBlbmQoa2V5LCB2YWx1ZSlcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ1Jlc3BvbnNlICcgKyBlcnJvci5tZXNzYWdlKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGhlYWRlcnNcbn1cblxuQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXG5leHBvcnQgZnVuY3Rpb24gUmVzcG9uc2UoYm9keUluaXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlc3BvbnNlKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuICBpZiAoIW9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0ge31cbiAgfVxuXG4gIHRoaXMudHlwZSA9ICdkZWZhdWx0J1xuICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzID09PSB1bmRlZmluZWQgPyAyMDAgOiBvcHRpb25zLnN0YXR1c1xuICBpZiAodGhpcy5zdGF0dXMgPCAyMDAgfHwgdGhpcy5zdGF0dXMgPiA1OTkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcihcIkZhaWxlZCB0byBjb25zdHJ1Y3QgJ1Jlc3BvbnNlJzogVGhlIHN0YXR1cyBwcm92aWRlZCAoMCkgaXMgb3V0c2lkZSB0aGUgcmFuZ2UgWzIwMCwgNTk5XS5cIilcbiAgfVxuICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYmIHRoaXMuc3RhdHVzIDwgMzAwXG4gIHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dCA9PT0gdW5kZWZpbmVkID8gJycgOiAnJyArIG9wdGlvbnMuc3RhdHVzVGV4dFxuICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIHRoaXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG59XG5cbkJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cblJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG4gICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICB1cmw6IHRoaXMudXJsXG4gIH0pXG59XG5cblJlc3BvbnNlLmVycm9yID0gZnVuY3Rpb24oKSB7XG4gIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiAyMDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgcmVzcG9uc2Uub2sgPSBmYWxzZVxuICByZXNwb25zZS5zdGF0dXMgPSAwXG4gIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gIHJldHVybiByZXNwb25zZVxufVxuXG52YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblxuUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykgPT09IC0xKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICB9XG5cbiAgcmV0dXJuIG5ldyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJsfX0pXG59XG5cbmV4cG9ydCB2YXIgRE9NRXhjZXB0aW9uID0gZy5ET01FeGNlcHRpb25cbnRyeSB7XG4gIG5ldyBET01FeGNlcHRpb24oKVxufSBjYXRjaCAoZXJyKSB7XG4gIERPTUV4Y2VwdGlvbiA9IGZ1bmN0aW9uKG1lc3NhZ2UsIG5hbWUpIHtcbiAgICB0aGlzLm1lc3NhZ2UgPSBtZXNzYWdlXG4gICAgdGhpcy5uYW1lID0gbmFtZVxuICAgIHZhciBlcnJvciA9IEVycm9yKG1lc3NhZ2UpXG4gICAgdGhpcy5zdGFjayA9IGVycm9yLnN0YWNrXG4gIH1cbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoRXJyb3IucHJvdG90eXBlKVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRE9NRXhjZXB0aW9uXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmZXRjaChpbnB1dCwgaW5pdCkge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFyIHJlcXVlc3QgPSBuZXcgUmVxdWVzdChpbnB1dCwgaW5pdClcblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCAmJiByZXF1ZXN0LnNpZ25hbC5hYm9ydGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgIH1cblxuICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKVxuXG4gICAgZnVuY3Rpb24gYWJvcnRYaHIoKSB7XG4gICAgICB4aHIuYWJvcnQoKVxuICAgIH1cblxuICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciBvcHRpb25zID0ge1xuICAgICAgICBzdGF0dXNUZXh0OiB4aHIuc3RhdHVzVGV4dCxcbiAgICAgICAgaGVhZGVyczogcGFyc2VIZWFkZXJzKHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSB8fCAnJylcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgY2hlY2sgaWYgc3BlY2lmaWNhbGx5IGZvciB3aGVuIGEgdXNlciBmZXRjaGVzIGEgZmlsZSBsb2NhbGx5IGZyb20gdGhlIGZpbGUgc3lzdGVtXG4gICAgICAvLyBPbmx5IGlmIHRoZSBzdGF0dXMgaXMgb3V0IG9mIGEgbm9ybWFsIHJhbmdlXG4gICAgICBpZiAocmVxdWVzdC51cmwuaW5kZXhPZignZmlsZTovLycpID09PSAwICYmICh4aHIuc3RhdHVzIDwgMjAwIHx8IHhoci5zdGF0dXMgPiA1OTkpKSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0gMjAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSB4aHIuc3RhdHVzO1xuICAgICAgfVxuICAgICAgb3B0aW9ucy51cmwgPSAncmVzcG9uc2VVUkwnIGluIHhociA/IHhoci5yZXNwb25zZVVSTCA6IG9wdGlvbnMuaGVhZGVycy5nZXQoJ1gtUmVxdWVzdC1VUkwnKVxuICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5yZXNwb25zZVRleHRcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHksIG9wdGlvbnMpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9udGltZW91dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCB0aW1lZCBvdXQnKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZml4VXJsKHVybCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHVybCA9PT0gJycgJiYgZy5sb2NhdGlvbi5ocmVmID8gZy5sb2NhdGlvbi5ocmVmIDogdXJsXG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB1cmxcbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgZml4VXJsKHJlcXVlc3QudXJsKSwgdHJ1ZSlcblxuICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG4gICAgfSBlbHNlIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnb21pdCcpIHtcbiAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIpIHtcbiAgICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgc3VwcG9ydC5hcnJheUJ1ZmZlclxuICAgICAgKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGluaXQgJiYgdHlwZW9mIGluaXQuaGVhZGVycyA9PT0gJ29iamVjdCcgJiYgIShpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzIHx8IChnLkhlYWRlcnMgJiYgaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgZy5IZWFkZXJzKSkpIHtcbiAgICAgIHZhciBuYW1lcyA9IFtdO1xuICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaW5pdC5oZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgbmFtZXMucHVzaChub3JtYWxpemVOYW1lKG5hbWUpKVxuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCBub3JtYWxpemVWYWx1ZShpbml0LmhlYWRlcnNbbmFtZV0pKVxuICAgICAgfSlcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIGlmIChuYW1lcy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsKSB7XG4gICAgICByZXF1ZXN0LnNpZ25hbC5hZGRFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuXG4gICAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIC8vIERPTkUgKHN1Y2Nlc3Mgb3IgZmFpbHVyZSlcbiAgICAgICAgaWYgKHhoci5yZWFkeVN0YXRlID09PSA0KSB7XG4gICAgICAgICAgcmVxdWVzdC5zaWduYWwucmVtb3ZlRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG4gIH0pXG59XG5cbmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXG5pZiAoIWcuZmV0Y2gpIHtcbiAgZy5mZXRjaCA9IGZldGNoXG4gIGcuSGVhZGVycyA9IEhlYWRlcnNcbiAgZy5SZXF1ZXN0ID0gUmVxdWVzdFxuICBnLlJlc3BvbnNlID0gUmVzcG9uc2Vcbn1cbiIsIi8qIHRzbGludDpkaXNhYmxlOm5vLW51bGwta2V5d29yZCBuby1hbnkgbm8tdW5zYWZlLWFueSAqL1xuaW1wb3J0IHsgZmV0Y2ggfSBmcm9tIFwid2hhdHdnLWZldGNoXCI7XG5pbXBvcnQgeyBBbGxJY29uTmFtZXMgfSBmcm9tIFwicmVhY3QtdWlcIjtcblxuaW1wb3J0IHsgRXJyb3JGaXJzdENhbGxiYWNrLCByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgeyBMb2FkSW50b0RvY3VtZW50IH0gZnJvbSBcIi4uLy4uL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudFwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElLZVdlYlRlbXBsYXRlc0FwaUNsaWVudCB9IGZyb20gXCIuLi9UeXBlcy9JS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnRcIjtcbmltcG9ydCB0eXBlIHsgQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9DbGllbnREcmFmdEluZm9SZXNwb25zZVwiO1xuaW1wb3J0IHsgZ2V0Q2xpZW50RHJhZnRJbmZvVXJsIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsXCI7XG5pbXBvcnQgeyBBVU9PcHRpb25zIH0gZnJvbSBcIi4uL1R5cGVzL0FVT09wdGlvbnNcIjtcbmltcG9ydCB0eXBlIHsgTGF5b3V0RXZlbnRzU3RhdGljIH0gZnJvbSBcIi4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9MYXlvdXRFdmVudHMvTGF5b3V0RXZlbnRzXCI7XG5cbmltcG9ydCB7IGNsaWVudFNldHRpbmdzIH0gZnJvbSBcIi4vQ2xpZW50U2V0dGluZ3NcIjtcbmltcG9ydCB7IGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi9MZWdhY3lQdWJsaWNGb3JtL0NyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm1cIjtcblxudHlwZSBGb3JtQ29udGFpbmVyID0gc3RyaW5nIHwgSFRNTEVsZW1lbnQ7XG5cbnR5cGUgRW5naW5lRW50cnlQb2ludCA9ICgpID0+IHZvaWQ7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uRGVzY3JpcHRpb24ge1xuICAgIGljb246IEFsbEljb25OYW1lcztcbiAgICB0ZXh0Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XG4gICAgb25DbGljazogKCkgPT4gdm9pZDtcbiAgICBoaW50PzogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIGlkOiBzdHJpbmc7XG4gICAgdGlkPzogc3RyaW5nO1xuICAgIHdlaWdodDogbnVtYmVyO1xufVxuXG5pbnRlcmZhY2UgUmVuZGVyRm9ybVNldHRpbmdzIHtcbiAgICBnZnY6IHN0cmluZztcbiAgICBlbmdpbmVWZXJzaW9uPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlbmRlckZvcm06IHVuZGVmaW5lZCB8IEVuZ2luZUVudHJ5UG9pbnQ7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG59XG5cbnR5cGUgU3RhcnRGb3JtRnVuYyA9IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzKSA9PiBQcm9taXNlPElGb3JtPjtcblxuaW50ZXJmYWNlIENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIge1xuICAgIHN0YXJ0OiAocGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsIGNhbGxiYWNrPzogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPikgPT4gdm9pZDtcbiAgICBrZWZvcm1zVXJsPzogc3RyaW5nO1xuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IGJvb2xlYW47XG4gICAgZW50cnlQb2ludDogeyBba2V5OiBzdHJpbmddOiBTdGFydEZvcm1GdW5jIH07XG4gICAgbG9hZEVycm9yPzogdW5rbm93bjtcbn1cblxuZGVjbGFyZSBnbG9iYWwge1xuICAgIGludGVyZmFjZSBXaW5kb3cge1xuICAgICAgICBDRjogQ2FuZHlHbG9iYWxJbmplY3RlZFZhcjtcbiAgICB9XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLW5hbWVzcGFjZVxuICAgIG5hbWVzcGFjZSBOb2RlSlMge1xuICAgICAgICBpbnRlcmZhY2UgR2xvYmFsIHtcbiAgICAgICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgICAgICB9XG4gICAgfVxufVxuXG5kZWNsYXJlIGNvbnN0IGdsb2JhbDogV2luZG93O1xuXG5mdW5jdGlvbiBkZWZhdWx0Q2FsbGJhY2soKTogdm9pZCB7XG4gICAgLyogZW1wdHkgKi9cbn1cblxuZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5mdW5jdGlvbiB1cmwocmVsYXRpdmVVcmw6IHN0cmluZyA9IFwiXCIpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJhc2VVcmwgPSBnbG9iYWwuQ0Yua2Vmb3Jtc1VybCB8fCBcIlwiO1xuXG4gICAgcmV0dXJuIGAke2Jhc2VVcmx9LyR7cmVsYXRpdmVVcmx9YC5yZXBsYWNlKC8oW146XSlcXC97Mix9L2csIFwiJDEvXCIpO1xufVxuXG5mdW5jdGlvbiBidWlsZFVybChwYXRoOiBzdHJpbmcsIHBhcmFtczogeyBbcGFyYW1OYW1lOiBzdHJpbmddOiB1bmRlZmluZWQgfCBzdHJpbmcgfSk6IHN0cmluZyB7XG4gICAgaWYgKHBhcmFtcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICBjb25zdCBxdWVyeVBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGFyYW1OYW1lIG9mIE9iamVjdC5rZXlzKHBhcmFtcykpIHtcbiAgICAgICAgY29uc3QgcGFyYW1WYWx1ZSA9IHBhcmFtc1twYXJhbU5hbWVdO1xuICAgICAgICBpZiAocGFyYW1WYWx1ZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHF1ZXJ5UGFydHMucHVzaChgJHtwYXJhbU5hbWV9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtVmFsdWUpfWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmIChxdWVyeVBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGggKyBcIj9cIiArIHF1ZXJ5UGFydHMuam9pbihcIiZcIik7XG59XG5cbmZ1bmN0aW9uIGlzQWxsb3dlZChkb21haW5zOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChgXig/OiR7ZG9tYWlucy5yZXBsYWNlKC9cXC4vZywgXCJcXFxcLlwiKS5yZXBsYWNlKC9cXCovZywgXCJbYS16MC05LS5fXStcIil9KSRgKS50ZXN0KFxuICAgICAgICBnbG9iYWwubG9jYXRpb24uaG9zdFxuICAgICk7XG59XG5cbmZ1bmN0aW9uIGdldFBhcmFtZXRlckJ5TmFtZShuYW1lOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiAoXG4gICAgICAgIChnbG9iYWwubG9jYXRpb24uc2VhcmNoXG4gICAgICAgICAgICAudHJpbSgpXG4gICAgICAgICAgICAucmVwbGFjZSgvXihcXD98I3wmKS8sIFwiXCIpXG4gICAgICAgICAgICAuc3BsaXQoXCImXCIpXG4gICAgICAgICAgICAubWFwKHBhcmFtID0+IHBhcmFtLnJlcGxhY2UoL1xcKy9nLCBcIiBcIikuc3BsaXQoXCI9XCIpLm1hcChkZWNvZGVVUklDb21wb25lbnQpKVxuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnRyaXBsZS1lcXVhbHNcbiAgICAgICAgICAgIC5maW5kKChba2V5XSkgPT4ga2V5ID09IG5hbWUpIHx8IFtdKVsxXVxuICAgICk7XG59XG5cbnR5cGUgVGFzayA9IChjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpID0+IHZvaWQ7XG5cbmZ1bmN0aW9uIHJ1blBhcmFsbGVsKHRhc2tzOiBUYXNrW10sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGxldCBjb21wbGV0ZWQgPSAwO1xuXG4gICAgdGFza3MuZm9yRWFjaCh0YXNrID0+IHtcbiAgICAgICAgdGFzayhlcnJvciA9PiB7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjb21wbGV0ZWQgPSB0YXNrcy5sZW5ndGg7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29tcGxldGVkICs9IDE7XG4gICAgICAgICAgICBpZiAoY29tcGxldGVkID09PSB0YXNrcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9KTtcbn1cblxuaW50ZXJmYWNlIFN0YXJ0Rm9ybVNldHRpbmcge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICBrb250dXJEb21haW5zOiBjbGllbnRTZXR0aW5ncy5rb250dXJEb21haW5zLFxuICAgICAgICAgICAgICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcjogb3B0aW9ucy5zaG93TmF2aWdhdGlvblNpZGViYXIgPz8gdHJ1ZSxcbiAgICAgICAgICAgICAgICBvblJlbW92ZUF0dGFjaG1lbnQ6IG9wdGlvbnMub25SZW1vdmVBdHRhY2htZW50LFxuICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgLi4uY2xpZW50RHJhZnRJbmZvLFxuICAgICAgICAgICAgICAgIGdmdjogZ2Z2LFxuICAgICAgICAgICAgICAgIGVuZ2luZVZlcnNpb246IGVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgZmVlZGJhY2tFbmFibGVkOiBvcHRpb25zLmZlZWRiYWNrRW5hYmxlZCA/PyBjbGllbnREcmFmdEluZm8uZmVlZGJhY2tFbmFibGVkLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbGVhbkZvcm06IG9wdGlvbnMuaXNEaXNhYmxlZENsZWFuRm9ybSA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b246IG9wdGlvbnMuaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbiA/PyBmYWxzZSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IHJlc291cmNlWm9uZSxcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGxvYWRGb3JtKFxuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgZ2Z2OiBleHRlbmRlZFNldHRpbmdzLmdmdixcbiAgICAgICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZXh0ZW5kZWRTZXR0aW5ncy5lbmdpbmVWZXJzaW9uLFxuICAgICAgICAgICAgICAgICAgICByZXNvdXJjZVpvbmU6IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgICAgICAgICB0aGVtZTogZXh0ZW5kZWRTZXR0aW5ncy50aGVtZSxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGxvYWRFcnJvciA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2FkRXJyb3IgfHwgIWdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrKG5ldyBFcnJvcihgZHluYW1pYyBsb2FkaW5nIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGdmdiAke2dmdn1gKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcmVuZGVyID0gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uKTtcblxuICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtKFxuICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUNvbnRlbnQsXG4gICAgICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZXh0ZW5kZWRTZXR0aW5ncyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZXNBcGk6IG9wdGlvbnMudGVtcGxhdGVzQXBpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm06IHJlbmRlcixcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmNvbnN0IENhbmR5Q2xpZW50RXhwb3J0czogQ2FuZHlHbG9iYWxJbmplY3RlZFZhciA9IHtcbiAgICBzdGFydDogc3RhcnQsXG4gICAgZW50cnlQb2ludDoge30sXG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogcGFyc2VCb29sKFwie3BhcnRpYWxSZW5kZXJpbmdGb3JJRTh9XCIpLFxuICAgIGtlZm9ybXNVcmw6IFwie2tlZm9ybXNVcmx9XCIsXG59O1xuXG5nbG9iYWwuQ0YgPSBDYW5keUNsaWVudEV4cG9ydHM7XG5cbmV4cG9ydCB7IENhbmR5Q2xpZW50RXhwb3J0cyB9O1xuIiwiZnVuY3Rpb24gcGFyc2VCb29sKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICBpZiAodmFsdWUgPT09IFwiZmFsc2VcIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJ0cnVlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIEJvb2xlYW4odmFsdWUpO1xufVxuXG5leHBvcnQgY29uc3QgY2xpZW50U2V0dGluZ3MgPSB7XG4gICAgYXV0aG9yaXplZDogcGFyc2VCb29sKFwie2F1dGhvcml6ZWR9XCIpLFxuICAgIGNhdWxkcm9uQXBpVXJsOiBcIntjYXVsZHJvbkFwaVVybH1cIixcbiAgICBpc1Rlc3RTZXJ2ZXI6IHBhcnNlQm9vbChcIntpc1Rlc3RTZXJ2ZXJ9XCIpLFxuICAgIHJlbmRlckNhY2hpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntyZW5kZXJDYWNoaW5nRm9ySUU4fVwiKSxcbiAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IHBhcnNlQm9vbChcIntub3JtYWxpemF0aW9uT25TZXJ2ZXJ9XCIpLFxuICAgIG5vcm1hdGl2ZVVybDogXCJ7bm9ybWF0aXZlVXJsfVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiaW1wb3J0IHtcbiAgICBFbXBsb3llZSxcbiAgICBFbXBsb3llZUxpc3QsXG4gICAgR2V0RW1wbG95ZWVzV2l0aEFjdGl2ZVBlcmlvZFF1ZXJ5LFxuICAgIEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0LFxuICAgIE1hdGNoRW1wbG95ZWVSZXF1ZXN0LFxuICAgIE1hdGNoRW1wbG95ZWVSZXNwb25zZSxcbiAgICBNZXJnZVJlbGF0aXZlUmVzcG9uc2UsXG4gICAgUGF0Y2hSZWxhdGl2ZVJlc3BvbnNlLFxuICAgIFdvcmtpbmdFdmVudExpc3QsXG59IGZyb20gXCJAc2tia29udHVyL3N0YWZmLXNlbGVjdG9yLXdpZGdldFwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcIkVuZ2luZS9zcmMvRW5naW5lL0Zvcm0vTW9kZWxDaGFuZ2VFdmVudExpc3RlbmVyXCI7XG5cbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0Vycm9yc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGVwIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL0Zvcm1QYXJ0cy9Ub3VyL1RvdXJUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1BhdGgsIE1vZGVsVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsSG9va0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9FeHRlcm5hbEV2ZW50cy9FeHRlcm5hbEhvb2tGdW5jdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBSZWFkb25seU1vZGVsQ2h1bmsgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kZWxTdG9yaW5nL01vZGVsQ2h1bmtcIjtcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB7IE1vZGVsRXZlbnRzTGlzdGVuZXIgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L01vZGVsRXZlbnRzL01vZGVsRXZlbnRcIjtcbmltcG9ydCB7IERpZ2VzdFF1ZXJ5RmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvVHlwZXMvRGlnZXN0UXVlcnlGaWx0ZXJcIjtcbmltcG9ydCB7IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvRm9ybS9JRm9ybU1vZGVsQWNjZXNzb3JcIjtcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RhbE1hbmFnZXIvSU1vZGFsU3RhdGVcIjtcbmltcG9ydCB7IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL01vZGVsUGF0aC9Nb2RlbFBhdGhcIjtcbmltcG9ydCB7XG4gICAgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyxcbiAgICBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMsXG4gICAgUHJlZmVycmVkSW50ZXJkb2N1bWVudFRyYW5zZmVyUHJvcHMsXG59IGZyb20gXCIuLi8uLi9QdWJsaWNGb3JtL0luaXRTZWN0aW9uTGlnaHRib3hcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9NYXNzQWN0aW9ucy9NYXNzQWN0aW9uUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUHJpbnRUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9QcmludC9QcmludFR5cGVcIjtcbmltcG9ydCB7IEZpYXNBcGksIEZpYXNDbGllbnRJbml0T3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9WYWx1ZUVkaXRvcnMvRmlhcy9GaWFzSW5wdXQvRmlhc0FwaVwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9JbnN0YW5jZXNEZWxldGluZy9JbnN0YW5jZXNEZWxldGluZ1J1bGVcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0RyYWZ0QWN0aW9ucy9Db21iaW5lRnVmUmVzdWx0XCI7XG5pbXBvcnQgeyBJQ2FuZHlDb21wb25lbnRIYW5kbGUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29tcG9uZW50SGFuZGxlUmVnaXN0cnkvSUNhbmR5Q29tcG9uZW50SGFuZGxlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUGF0aE1hcHBlciB9IGZyb20gXCIuLi8uLi9JbmplY3RhYmxlTW9kdWxlcy9JbmplY3RhYmxlRW5naW5lTW9kdWxlc1wiO1xuaW1wb3J0IHtcbiAgICBFbXBsb3llck5vcm1hbGl6ZWRUYWcsXG4gICAgSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zLFxufSBmcm9tIFwiLi4vLi4vLi4vU3RhZmZTZXJ2aWNlSW50ZWdyYXRpb24vRW1wbG95ZWVTZXJ2aWNlVHlwZXNcIjtcbmltcG9ydCB7IFRhYkluZm9zU3RhdGUgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvTXVsdGlDb250cm9scy9UYWJzL1N0b3JlL1RhYkluZm9zU3RhdGVcIjtcbmltcG9ydCB7IE1ldHJpY3NQYXlsb2FkIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL0ludGVybmFscy9NZXRyaWNzL01ldHJpY3NQcm92aWRlclwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVCeUhpZ2hsYW5kZXJQYXRocyhwYXRoczogc3RyaW5nW10pOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2FuY2VsU2VsZWN0UmVsYXRpdmUoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXROYXZpZ2F0aW9uUGF0aE1hcHBlcigpOiBOYXZpZ2F0aW9uUGF0aE1hcHBlciB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBiYXRjaFVwZGF0ZSh1cGRhdGVQcm9jOiAodXBkYXRlQWNjZXNzb3I6IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvcikgPT4gdm9pZCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcnVuQ2hlY2soKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRFcnJvckxvZyhlcnJvckxvZzogUGFydGlhbDxTZXJ2ZXJFcnJvckxvZz4pOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHZhbGlkYXRlQ2hpbGRyZW5CeVBhdGgocGF0aDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBfX0lOVEVSTkFMX19pbXBvcnRGcm9tRW1wbG95ZWVTZXJ2aWNlKCk6IFByb21pc2U8RW1wbG95ZWVbXSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgX19JTlRFUk5BTF9fZ2V0U2VsZWN0RnVuY3Rpb25Gb3JEaXNhYmxlRW1wbG95ZWVJblNTKFxuICAgICAgICBwYXRoU3BlYzogc3RyaW5nXG4gICAgKTogUHJvbWlzZTwoZW1wbG95ZWU6IEVtcGxveWVlKSA9PiBib29sZWFuPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRNb2RhbFVuaXRPcGVuZWRJbnN0YW5jZShwYWdlSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB8IG51bGwge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VGFic1N0YXRlKCk6IFRhYkluZm9zU3RhdGUge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGUobmF2aWdhdGlvblBhdGg6IHN0cmluZyk6IFByb21pc2U8SUNhbmR5Q29tcG9uZW50SGFuZGxlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llckRvY3VtZW50cyhcbiAgICAgICAgb3B0aW9uczogSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zXG4gICAgKTogUHJvbWlzZTxFbXBsb3llck5vcm1hbGl6ZWRUYWcgfCB1bmRlZmluZWQgfCBudWxsPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMoZW1wbG95ZWVzOiBFbXBsb3llZVtdLCBvcHRpb25zPzogeyBzY2VuYXJpbz86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludChwcmludFR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIHRocm93IEVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc3RvcEF1dG9zZW5kKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udW5tb3VudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnVubW91bnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG91clN0ZXBzKCk6IFN0ZXBbXSB7XG4gICAgICAgIC8vIEZvciBvbGQga2V3ZWJcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDQrdGC0L4g0LIg0YHRgtCw0YDRi9GFINC00LLQuNC20LrQsNGFINGC0YPRgiDRgtCw0LrQvtC5INCy0YvQt9C+0LJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWRhdG9yLnZhbGlkYXRlQWxsKGtleXMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWRkaXRpb25hbEVtcGxveWVlSW5mbyhmaWx0ZXJzOiBHZXRFbXBsb3llZXNXaXRoQWN0aXZlUGVyaW9kUXVlcnkpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEVtcGxveWVlcygpOiBQcm9taXNlPEVtcGxveWVlTGlzdD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIG1lcmdlUmVsYXRpdmUoKTogUHJvbWlzZTxNZXJnZVJlbGF0aXZlUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaFJlbGF0aXZlKCk6IFByb21pc2U8UGF0Y2hSZWxhdGl2ZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZE1ldHJpY3MoYWN0aW9uOiBzdHJpbmcsIHBheWxvYWQ/OiBNZXRyaWNzUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaEVtcGxveWVlKHF1ZXJ5OiBNYXRjaEVtcGxveWVlUmVxdWVzdCk6IFByb21pc2U8TWF0Y2hFbXBsb3llZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkSW5uZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXIob3B0aW9uczogUHJlZmVycmVkSW50ZXJkb2N1bWVudFRyYW5zZmVyUHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIGNyZWF0ZUZpYXNBcGlDbGllbnQob3B0aW9uczogRmlhc0NsaWVudEluaXRPcHRpb25zKTogRmlhc0FwaSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5FbXBsb3llZUVkaXRvcihlbXBsb3llZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkNvbnRyb2xJZkV4aXN0KHBhdGg6IEJpbmRpbmdQYXRoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9GaWVsZHNUb0F1dG9WYWx1ZShwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5zdXJlSW5zdGFuY2VGdWxseUxvYWRlZChcbiAgICAgICAgYmluZGluZ1BhdGg6IHN0cmluZyB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIC4uLmluc3RhbmNlczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzQnlSdWxlcyhydWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG5wKCk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OTEpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNBQVNDLEVBQXNCQyxDQUFBO1VBR2xDLE9BQU8sU0FBUEMsTUFBQSxDQUFnQkQsQ0FBQSxDQUFRRSxFQUFBLEVBQUUsWUFBQUQsTUFBQSxDQUFXRCxDQUFBLENBQVFHLE9BQUEsRUFBTyxxQkFDeEQ7UUFBQTtRQUFBQyxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBQyxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBUixDQUFBO1VBQUE7UUFBQSxJQUFBQyxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsR0FBQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQUplZixDQUFBLEVBQXFCLCtJQUFBRCxDQUFBLHlCQUFBWSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFqQixDQUFBLENBQUFFLENBQUE7TUFBQTtNQUFBLGVBQUFnQixNQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBO1FBQUEsU0FBQUMsUUFBQW5CLENBQUE7VUFBQSxPQUFBbUIsT0FBQSx3QkFBQUMsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFyQixDQUFBO1lBQUEsY0FBQUEsQ0FBQTtVQUFBLGNBQUFBLENBQUE7WUFBQSxPQUFBQSxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBc0IsV0FBQSxLQUFBRixNQUFBLElBQUFwQixDQUFBLEtBQUFvQixNQUFBLENBQUFHLFNBQUEscUJBQUF2QixDQUFBO1VBQUEsR0FBQW1CLE9BQUEsQ0FBQW5CLENBQUE7UUFBQTtRQUFBLElBQUFXLFdBQUE7UUFBQSxTQUFBYSxnQkFBQXhCLENBQUEsRUFBQU0sQ0FBQTtVQUFBLE1BQUFOLENBQUEsWUFBQU0sQ0FBQSxhQUFBbUIsU0FBQTtRQUFBO1FBQUEsU0FBQUMsa0JBQUExQixDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBRixDQUFBLE1BQUFBLENBQUEsR0FBQUUsQ0FBQSxDQUFBcUIsTUFBQSxFQUFBdkIsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUgsQ0FBQSxDQUFBRixDQUFBO1lBQUFLLENBQUEsQ0FBQW1CLFVBQUEsR0FBQW5CLENBQUEsQ0FBQW1CLFVBQUEsUUFBQW5CLENBQUEsQ0FBQW9CLFlBQUEsa0JBQUFwQixDQUFBLEtBQUFBLENBQUEsQ0FBQXFCLFFBQUEsUUFBQUMsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFpQyxjQUFBLENBQUF4QixDQUFBLENBQUF5QixHQUFBLEdBQUF6QixDQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUEwQixhQUFBbkMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxPQUFBRSxDQUFBLElBQUFvQixpQkFBQSxDQUFBMUIsQ0FBQSxDQUFBdUIsU0FBQSxFQUFBakIsQ0FBQSxHQUFBRixDQUFBLElBQUFzQixpQkFBQSxDQUFBMUIsQ0FBQSxFQUFBSSxDQUFBLEdBQUEyQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUE7WUFBQThCLFFBQUE7VUFBQSxJQUFBOUIsQ0FBQTtRQUFBO1FBQUEsU0FBQWlDLGVBQUFqQyxDQUFBO1VBQUEsSUFBQU0sQ0FBQSxHQUFBOEIsWUFBQSxDQUFBcEMsQ0FBQTtVQUFBLG1CQUFBbUIsT0FBQSxDQUFBYixDQUFBLElBQUFBLENBQUEsR0FBQUEsQ0FBQTtRQUFBO1FBQUEsU0FBQThCLGFBQUFwQyxDQUFBLEVBQUFNLENBQUE7VUFBQSxnQkFBQWEsT0FBQSxDQUFBbkIsQ0FBQSxNQUFBQSxDQUFBLFNBQUFBLENBQUE7VUFBQSxJQUFBSSxDQUFBLEdBQUFKLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQWlCLFdBQUE7VUFBQSxlQUFBakMsQ0FBQTtZQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBa0MsSUFBQSxDQUFBdEMsQ0FBQSxFQUFBTSxDQUFBO1lBQUEsZ0JBQUFhLE9BQUEsQ0FBQVYsQ0FBQSxVQUFBQSxDQUFBO1lBQUEsVUFBQWdCLFNBQUE7VUFBQTtVQUFBLHFCQUFBbkIsQ0FBQSxHQUFBaUMsTUFBQSxHQUFBQyxNQUFBLEVBQUF4QyxDQUFBO1FBQUE7UUFBQSxTQUFBeUMsV0FBQXpDLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsT0FBQUUsQ0FBQSxHQUFBb0MsZUFBQSxDQUFBcEMsQ0FBQSxHQUFBcUMsMEJBQUEsQ0FBQTNDLENBQUEsRUFBQTRDLHlCQUFBLEtBQUFDLE9BQUEsQ0FBQUMsU0FBQSxDQUFBeEMsQ0FBQSxFQUFBRixDQUFBLFFBQUFzQyxlQUFBLENBQUExQyxDQUFBLEVBQUFzQixXQUFBLElBQUFoQixDQUFBLENBQUF5QyxLQUFBLENBQUEvQyxDQUFBLEVBQUFJLENBQUE7UUFBQTtRQUFBLFNBQUF1QywyQkFBQTNDLENBQUEsRUFBQU0sQ0FBQTtVQUFBLElBQUFBLENBQUEsaUJBQUFhLE9BQUEsQ0FBQWIsQ0FBQSwwQkFBQUEsQ0FBQSxVQUFBQSxDQUFBO1VBQUEsZUFBQUEsQ0FBQSxZQUFBbUIsU0FBQTtVQUFBLE9BQUF1QixzQkFBQSxDQUFBaEQsQ0FBQTtRQUFBO1FBQUEsU0FBQWdELHVCQUFBaEQsQ0FBQTtVQUFBLGVBQUFBLENBQUEsWUFBQWlELGNBQUE7VUFBQSxPQUFBakQsQ0FBQTtRQUFBO1FBQUEsU0FBQWtELFVBQUFsRCxDQUFBLEVBQUFNLENBQUE7VUFBQSx5QkFBQUEsQ0FBQSxhQUFBQSxDQUFBLFlBQUFtQixTQUFBO1VBQUF6QixDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQW9CLE1BQUEsQ0FBQTdDLENBQUEsSUFBQUEsQ0FBQSxDQUFBaUIsU0FBQTtZQUFBRCxXQUFBO2NBQUE4QixLQUFBLEVBQUFwRCxDQUFBO2NBQUE4QixRQUFBO2NBQUFELFlBQUE7WUFBQTtVQUFBLElBQUFFLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQTtZQUFBOEIsUUFBQTtVQUFBLElBQUF4QixDQUFBLElBQUErQyxlQUFBLENBQUFyRCxDQUFBLEVBQUFNLENBQUE7UUFBQTtRQUFBLFNBQUFnRCxpQkFBQXRELENBQUE7VUFBQSxJQUFBTSxDQUFBLHdCQUFBaUQsR0FBQSxPQUFBQSxHQUFBO1VBQUEsT0FBQUQsZ0JBQUEsWUFBQUEsQ0FBQXRELENBQUE7WUFBQSxhQUFBQSxDQUFBLEtBQUF3RCxpQkFBQSxDQUFBeEQsQ0FBQSxVQUFBQSxDQUFBO1lBQUEseUJBQUFBLENBQUEsWUFBQXlCLFNBQUE7WUFBQSxlQUFBbkIsQ0FBQTtjQUFBLElBQUFBLENBQUEsQ0FBQW1ELEdBQUEsQ0FBQXpELENBQUEsVUFBQU0sQ0FBQSxDQUFBb0QsR0FBQSxDQUFBMUQsQ0FBQTtjQUFBTSxDQUFBLENBQUFxRCxHQUFBLENBQUEzRCxDQUFBLEVBQUFJLENBQUE7WUFBQTtZQUFBLFNBQUFBLEVBQUE7Y0FBQSxPQUFBd0QsVUFBQSxDQUFBNUQsQ0FBQSxFQUFBNkQsU0FBQSxFQUFBbkIsZUFBQSxPQUFBcEIsV0FBQTtZQUFBO1lBQUEsT0FBQWxCLENBQUEsQ0FBQW1CLFNBQUEsR0FBQVEsTUFBQSxDQUFBb0IsTUFBQSxDQUFBbkQsQ0FBQSxDQUFBdUIsU0FBQTtjQUFBRCxXQUFBO2dCQUFBOEIsS0FBQSxFQUFBaEQsQ0FBQTtnQkFBQXdCLFVBQUE7Z0JBQUFFLFFBQUE7Z0JBQUFELFlBQUE7Y0FBQTtZQUFBLElBQUF3QixlQUFBLENBQUFqRCxDQUFBLEVBQUFKLENBQUE7VUFBQSxHQUFBc0QsZ0JBQUEsQ0FBQXRELENBQUE7UUFBQTtRQUFBLFNBQUE0RCxXQUFBNUQsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxJQUFBd0MseUJBQUEsV0FBQUMsT0FBQSxDQUFBQyxTQUFBLENBQUFDLEtBQUEsT0FBQWMsU0FBQTtVQUFBLElBQUFwRCxDQUFBO1VBQUFBLENBQUEsQ0FBQXFELElBQUEsQ0FBQWYsS0FBQSxDQUFBdEMsQ0FBQSxFQUFBSCxDQUFBO1VBQUEsSUFBQVQsQ0FBQSxRQUFBRyxDQUFBLENBQUErRCxJQUFBLENBQUFoQixLQUFBLENBQUEvQyxDQUFBLEVBQUFTLENBQUE7VUFBQSxPQUFBTCxDQUFBLElBQUFpRCxlQUFBLENBQUF4RCxDQUFBLEVBQUFPLENBQUEsQ0FBQW1CLFNBQUEsR0FBQTFCLENBQUE7UUFBQTtRQUFBLFNBQUErQywwQkFBQTtVQUFBO1lBQUEsSUFBQTVDLENBQUEsSUFBQWdFLE9BQUEsQ0FBQXpDLFNBQUEsQ0FBQTBDLE9BQUEsQ0FBQTNCLElBQUEsQ0FBQU8sT0FBQSxDQUFBQyxTQUFBLENBQUFrQixPQUFBO1VBQUEsU0FBQWhFLENBQUE7VUFBQSxRQUFBNEMseUJBQUEsWUFBQUEsQ0FBQTtZQUFBLFNBQUE1QyxDQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUF3RCxrQkFBQXhELENBQUE7VUFBQTtZQUFBLGNBQUFrRSxRQUFBLENBQUFDLFFBQUEsQ0FBQTdCLElBQUEsQ0FBQXRDLENBQUEsRUFBQW9FLE9BQUE7VUFBQSxTQUFBOUQsQ0FBQTtZQUFBLDRCQUFBTixDQUFBO1VBQUE7UUFBQTtRQUFBLFNBQUFxRCxnQkFBQXJELENBQUEsRUFBQU0sQ0FBQTtVQUFBLE9BQUErQyxlQUFBLEdBQUF0QixNQUFBLENBQUFzQyxjQUFBLEdBQUF0QyxNQUFBLENBQUFzQyxjQUFBLENBQUFOLElBQUEsZUFBQS9ELENBQUEsRUFBQU0sQ0FBQTtZQUFBLE9BQUFOLENBQUEsQ0FBQXNFLFNBQUEsR0FBQWhFLENBQUEsRUFBQU4sQ0FBQTtVQUFBLEdBQUFxRCxlQUFBLENBQUFyRCxDQUFBLEVBQUFNLENBQUE7UUFBQTtRQUFBLFNBQUFvQyxnQkFBQTFDLENBQUE7VUFBQSxPQUFBMEMsZUFBQSxHQUFBWCxNQUFBLENBQUFzQyxjQUFBLEdBQUF0QyxNQUFBLENBQUF3QyxjQUFBLENBQUFSLElBQUEsZUFBQS9ELENBQUE7WUFBQSxPQUFBQSxDQUFBLENBQUFzRSxTQUFBLElBQUF2QyxNQUFBLENBQUF3QyxjQUFBLENBQUF2RSxDQUFBO1VBQUEsR0FBQTBDLGVBQUEsQ0FBQTFDLENBQUE7UUFBQTtRQUFBa0IsbUJBQUEsQ0FBQWIsQ0FBQSxDQUFBWSxtQkFBQTtVQUFBdUQsRUFBQSxXQUFBQSxDQUFBO1lBQUEsT0FBQUMsbUJBQUE7VUFBQTtRQUFBLElBQUF6RCxNQUFBLEdBQUFFLG1CQUFBLENBQUFWLEdBQUEsQ0FBQVEsTUFBQSxHQUFBTCxXQUFBLHlCQUFBRCxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBQyxXQUFBLFdBQUFBLFdBQUEsSUFBQUEsV0FBQSxDQUFBSyxNQUFBO1FBQUEsSUFBQTBELGFBQUEseUJBQUFoRSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsYUFBQWIsQ0FBQTtZQUFBLE9BQUFBLENBQUE7VUFBQTtVQ0Z4QjJFLGdCQUFBLEdBQWdCLFVBQUFDLE1BQUE7WUFDekIsU0FBQUQsaUJBQW1CM0UsQ0FBQTtjQUFpQixJQUFBTSxDQUFBO2NBRUUsT0FGRmtCLGVBQUEsT0FBQW1ELGdCQUFBLElBQ2hDckUsQ0FBQSxHQUFBbUMsVUFBQSxPQUFBa0MsZ0JBQUEsR0FBTTNFLENBQUEsSUFDRDZFLElBQUEsR0FBT3ZFLENBQUEsQ0FBS2dCLFdBQUEsQ0FBWXVELElBQUEsRUFBS3ZFLENBQ3RDO1lBQUE7WUFBQyxPQUFBNEMsU0FBQSxDQUFBeUIsZ0JBQUEsRUFBQUMsTUFBQSxHQUFBekMsWUFBQSxDQUFBd0MsZ0JBQUE7Y0FBQXpDLEdBQUE7Y0FBQWtCLEtBQUEsV0FBQTBCLGlDQUFBNUMsR0FBQSxFQUFBNkMsSUFBQTtnQkFBQSxLQUFBN0MsR0FBQSxJQUFBOEMsSUFBQSxDQUFBRCxJQUFBO2NBQUE7WUFBQTtVQUFBLENBSndCLENBSXhCekIsZ0JBQUEsQ0FKaUMyQixLQUFBO1VBT3pCUixtQkFBQSxHQUFtQixVQUFBUyxpQkFBQTtZQUM1QixTQUFBVCxvQkFBQTtjQUFxQixPQUFBakQsZUFBQSxPQUFBaUQsbUJBQUEsR0FBQWhDLFVBQUEsT0FBQWdDLG1CQUFBLEdBQ1gsNkJBQ1Y7WUFBQTtZQUFDLE9BQUF2QixTQUFBLENBQUF1QixtQkFBQSxFQUFBUyxpQkFBQSxHQUFBL0MsWUFBQSxDQUFBc0MsbUJBQUE7Y0FBQXZDLEdBQUE7Y0FBQWtCLEtBQUEsV0FBQTBCLGlDQUFBNUMsR0FBQSxFQUFBNkMsSUFBQTtnQkFBQSxLQUFBN0MsR0FBQSxJQUFBOEMsSUFBQSxDQUFBRCxJQUFBO2NBQUE7WUFBQTtVQUFBLENBSDJCLENBQVNKLGdCQUFBO1VBTTVCUSxpQkFBQSxHQUFpQixVQUFBQyxrQkFBQTtZQUMxQixTQUFBRCxrQkFBbUJuRixDQUFBO2NBQWtCLE9BQUF3QixlQUFBLE9BQUEyRCxpQkFBQSxHQUFBMUMsVUFBQSxPQUFBMEMsaUJBQUEsR0FDM0IsUUFBQW5GLENBQUEsR0FBQUEsQ0FBQSxHQUFXLDJCQUNyQjtZQUFBO1lBQUMsT0FBQWtELFNBQUEsQ0FBQWlDLGlCQUFBLEVBQUFDLGtCQUFBLEdBQUFqRCxZQUFBLENBQUFnRCxpQkFBQTtjQUFBakQsR0FBQTtjQUFBa0IsS0FBQSxXQUFBMEIsaUNBQUE1QyxHQUFBLEVBQUE2QyxJQUFBO2dCQUFBLEtBQUE3QyxHQUFBLElBQUE4QyxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBO1VBQUEsQ0FIeUIsQ0FBU0osZ0JBQUE7VUFNMUJVLHdCQUFBLEdBQXdCLFVBQUFDLGtCQUFBO1lBQ2pDLFNBQUFELHlCQUFtQnJGLENBQUE7Y0FBa0IsT0FBQXdCLGVBQUEsT0FBQTZELHdCQUFBLEdBQUE1QyxVQUFBLE9BQUE0Qyx3QkFBQSxHQUMzQiwyQkFBc0MsUUFBWHJGLENBQUEsR0FBdUIsT0FBT0EsQ0FBQSxHQUFVLEtBQzdFO1lBQUE7WUFBQyxPQUFBa0QsU0FBQSxDQUFBbUMsd0JBQUEsRUFBQUMsa0JBQUEsR0FBQW5ELFlBQUEsQ0FBQWtELHdCQUFBO2NBQUFuRCxHQUFBO2NBQUFrQixLQUFBLFdBQUEwQixpQ0FBQTVDLEdBQUEsRUFBQTZDLElBQUE7Z0JBQUEsS0FBQTdDLEdBQUEsSUFBQThDLElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUE7VUFBQSxDQUhnQyxDQUFTSixnQkFBQTtVQU1qQ1ksb0JBQUEsR0FBb0IsVUFBQUMsa0JBQUE7WUFDN0IsU0FBQUQscUJBQW1CdkYsQ0FBQSxFQUFzQk0sQ0FBQTtjQUFrQixPQUFBa0IsZUFBQSxPQUFBK0Qsb0JBQUEsR0FBQTlDLFVBQUEsT0FBQThDLG9CQUFBLEdBRXhDLFFBQVhqRixDQUFBLEdBQXVCLEdBQUhMLE1BQUEsQ0FBTUssQ0FBQSxFQUFPLGdCQUFBTCxNQUFBLENBQWVELENBQUEsRUFBWSxrQ0FBQUMsTUFBQSxDQUFpQ0QsQ0FBQSxHQUVyRztZQUFBO1lBQUMsT0FBQWtELFNBQUEsQ0FBQXFDLG9CQUFBLEVBQUFDLGtCQUFBLEdBQUFyRCxZQUFBLENBQUFvRCxvQkFBQTtjQUFBckQsR0FBQTtjQUFBa0IsS0FBQSxXQUFBMEIsaUNBQUE1QyxHQUFBLEVBQUE2QyxJQUFBO2dCQUFBLEtBQUE3QyxHQUFBLElBQUE4QyxJQUFBLENBQUFELElBQUE7Y0FBQTtZQUFBO1VBQUEsQ0FMNEIsQ0FBU0osZ0JBQUE7VUFRN0JjLFdBQUEsR0FBVyxVQUFBQyxrQkFBQTtZQUNwQixTQUFBRCxZQUFBO2NBQXFCLE9BQUFqRSxlQUFBLE9BQUFpRSxXQUFBLEdBQUFoRCxVQUFBLE9BQUFnRCxXQUFBLEdBQ1gsa0JBQ1Y7WUFBQTtZQUFDLE9BQUF2QyxTQUFBLENBQUF1QyxXQUFBLEVBQUFDLGtCQUFBLEdBQUF2RCxZQUFBLENBQUFzRCxXQUFBO2NBQUF2RCxHQUFBO2NBQUFrQixLQUFBLFdBQUEwQixpQ0FBQTVDLEdBQUEsRUFBQTZDLElBQUE7Z0JBQUEsS0FBQTdDLEdBQUEsSUFBQThDLElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUE7VUFBQSxDQUhtQixDQUFTSixnQkFBQTtVQUloQ2dCLGNBQUE7VUFKdUI1RSxXQUFBO1FBSXZCNEUsY0FBQSx5QkFBQWpGLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsV0FBQStFLGNBQUEsS0FBQUEsY0FBQSxDQUFBN0UsUUFBQSxDQXJDWTZELGdCQUFBLEVBQWdCLHlGQUFBZ0IsY0FBQSxDQUFBN0UsUUFBQSxDQU9oQjJELG1CQUFBLEVBQW1CLDRGQUFBa0IsY0FBQSxDQUFBN0UsUUFBQSxDQU1uQnFFLGlCQUFBLEVBQWlCLDBGQUFBUSxjQUFBLENBQUE3RSxRQUFBLENBTWpCdUUsd0JBQUEsRUFBd0IsaUdBQUFNLGNBQUEsQ0FBQTdFLFFBQUEsQ0FNeEJ5RSxvQkFBQSxFQUFvQiw2RkFBQUksY0FBQSxDQUFBN0UsUUFBQSxDQVFwQjJFLFdBQUEsRUFBVyxxRkFBQTFFLFdBQUEseUJBQUFMLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFDLE1BQUE7TUFBQTtNQUFBLGVBQUFoQixDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQUFBLElBQUFLLENBQUEsRUNpR3ZCWixDQUFBLEVBRnVCQyxDQUFBO1FBQUEsU0FBQUMsRUFBQUMsQ0FBQTtVQUFBLE9BQUFELENBQUEsd0JBQUFxQixNQUFBLHVCQUFBQSxNQUFBLENBQUFDLFFBQUEsYUFBQXJCLENBQUE7WUFBQSxjQUFBQSxDQUFBO1VBQUEsY0FBQUEsQ0FBQTtZQUFBLE9BQUFBLENBQUEseUJBQUFvQixNQUFBLElBQUFwQixDQUFBLENBQUFzQixXQUFBLEtBQUFGLE1BQUEsSUFBQXBCLENBQUEsS0FBQW9CLE1BQUEsQ0FBQUcsU0FBQSxxQkFBQXZCLENBQUE7VUFBQSxHQUFBRCxDQUFBLENBQUFDLENBQUE7UUFBQTtRQTVIakIsU0FBUzRGLEVBQXdCNUYsQ0FBQTtVQUNwQyxPQUFnQixRQUFUQSxDQUNYO1FBQUE7UUFtQk8sU0FBUzZGLEVBQU83RixDQUFBO1VBQ25CLE1BQXVCLG1CQUFaQSxDQUFBLElBQW1DLFFBQVhBLENBQUEsR0FDekIsSUFBSWlGLEtBQUEsQ0FBTSxRQUFBakYsQ0FBQSxHQUFBQSxDQUFBLEdBQVcsOEJBRXJCQSxDQUVkO1FBQUE7UUFZTyxTQUFTOEYsRUFDWjlGLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsSUFBVXJCLENBQzNCO1FBQUE7UUFZTyxTQUFTeUYsRUFDWi9GLENBQUEsRUFDQU0sQ0FBQTtVQUVBLE9BQU9OLENBQUEsQ0FBTTJCLE1BQUEsS0FBV3JCLENBQzVCO1FBQUE7UUFFTyxTQUFTRCxFQUFtQkwsQ0FBQTtVQUMvQixPQUFPQSxDQUFBLENBQU0yQixNQUFBLEdBQVMsQ0FDMUI7UUFBQTtRQTJDTyxTQUFTcUUsRUFBY2hHLENBQUE7VUFDMUIsT0FBZ0IsUUFBVEEsQ0FBQSxJQUFnQyxPQUFWQSxDQUNqQztRQUFBO1FBQUFJLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUEyRixFQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBSixDQUFBO1VBQUE7UUFBQSxJQUFBN0YsQ0FBQSxHQUFBSSxDQUFBLENBQUFJLEdBQUEsQ0FBQVIsQ0FBQSxJQUFBUyxDQUFBLHlCQUFBQyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBQyxXQUFBLGNBQUFGLENBQUEsQ0FBQVQsQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBLEdBZ0JDaEIsQ0FBQSx5QkFBQWEsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxlQUFBZixDQUFBLENBQUFpQixRQUFBLENBOUhlOEUsQ0FBQSxFQUFvQixrR0FBQS9GLENBQUEsQ0FBQWlCLFFBQUEsQ0FJN0IsVUFBK0JkLENBQUE7VUFFbEMsT0FBd0IsYUFBakJELENBQUEsQ0FBT0MsQ0FBQSxNQUFzQixRQUFBQSxDQUFBLFFBQUssSUFBTEEsQ0FBQSxDQUFpQmtHLE9BQUEsQ0FDekQ7UUFBQSxHQUhxQyxtR0FBQXJHLENBQUEsQ0FBQWlCLFFBQUEsQ0FLOUIsVUFBcUNkLENBQUE7VUFDeEMsS0FBSzRGLENBQUEsQ0FBcUI1RixDQUFBLEdBQ3RCLE1BQU0sSUFBSWlGLEtBQUEsQ0FBTSx3QkFFeEI7UUFBQSxHQUp3QyxzR0FBQXBGLENBQUEsQ0FBQWlCLFFBQUEsQ0FNakMsYUFDSCxHQURnQixrRkFBQWpCLENBQUEsQ0FBQWlCLFFBQUEsQ0FNSitFLENBQUEsRUFBTSxvRkFBQWhHLENBQUEsQ0FBQWlCLFFBQUEsQ0FrQk5nRixDQUFBLEVBQTBCLHdHQUFBakcsQ0FBQSxDQUFBaUIsUUFBQSxDQU9uQyxVQUNIZCxDQUFBLEVBQ0FNLENBQUE7VUFFQSxJQUFJd0YsQ0FBQSxDQUEyQjlGLENBQUEsRUFBT00sQ0FBQSxHQUNsQyxPQUFPTixDQUdmO1FBQUEsR0FSb0Msa0dBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FVcEJpRixDQUFBLEVBQWMsNEZBQUFsRyxDQUFBLENBQUFpQixRQUFBLENBT2RULENBQUEsRUFBZSw2RkFBQVIsQ0FBQSxDQUFBaUIsUUFBQSxDQUl4QixVQUFtQ2QsQ0FBQTtVQUN0QyxPQUFPQSxDQUFBLENBQU0yQixNQUFBLEdBQVMsQ0FDMUI7UUFBQSxHQUZzQyxvR0FBQTlCLENBQUEsQ0FBQWlCLFFBQUEsQ0FJL0IsVUFBa0NkLENBQUE7VUFDckMsS0FBS0ssQ0FBQSxDQUFnQkwsQ0FBQSxHQUNqQixNQUFNLElBQUlpRixLQUFBLENBQU0sMEJBRXhCO1FBQUEsR0FKcUMsbUdBQUFwRixDQUFBLENBQUFpQixRQUFBLENBTTlCLFVBQ0hkLENBQUEsRUFDQU0sQ0FBQTtVQUVBLEtBQUt5RixDQUFBLENBQWUvRixDQUFBLEVBQU9NLENBQUEsR0FDdkIsTUFBTSxJQUFJMkUsS0FBQSxDQUFNLDJCQUFEaEYsTUFBQSxDQUE0QkssQ0FBQSxFQUVuRDtRQUFBLEdBUG9DLGtHQUFBVCxDQUFBLENBQUFpQixRQUFBLENBUzdCLFVBQ0hkLENBQUEsRUFDQU0sQ0FBQTtVQUVBLEtBQUt3RixDQUFBLENBQTJCOUYsQ0FBQSxFQUFPTSxDQUFBLEdBQ25DLE1BQU0sSUFBSTJFLEtBQUEsQ0FBTSxrQ0FBRGhGLE1BQUEsQ0FBbUNLLENBQUEsRUFFMUQ7UUFBQSxHQVBtRCxpSEFBQVQsQ0FBQSxDQUFBaUIsUUFBQSxDQVM1QyxVQUFxQmQsQ0FBQSxHQUN4QixHQUR1Qix5RkFBQUgsQ0FBQSxDQUFBaUIsUUFBQSxDQUlwQixVQUE0QmQsQ0FBQTtVQUMvQixPQUFPLEdBQVBDLE1BQUEsQ0FBVUQsQ0FBQSxDQUNkO1FBQUEsR0FGa0MsZ0dBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FJM0IsVUFBd0JkLENBQUE7VUFFM0JBLENBQUEsRUFDSjtRQUFBLEdBSDhCLDRGQUFBSCxDQUFBLENBQUFpQixRQUFBLENBS2RrRixDQUFBLEVBQWEsMkZBQUFuRyxDQUFBLENBQUFpQixRQUFBLENBSXRCLFVBQTBCZCxDQUFBO1VBQzdCLFFBQVFnRyxDQUFBLENBQWNoRyxDQUFBLENBQzFCO1FBQUEsR0FGZ0MsOEZBQUFILENBQUEsQ0FBQWlCLFFBQUEsQ0FJekIsVUFBNEJkLENBQUE7VUFDL0IsT0FBZ0IsUUFBVEEsQ0FBQSxJQUF1QyxPQUFqQkEsQ0FBQSxDQUFNbUcsSUFBQSxFQUN2QztRQUFBLEdBRmtDLGdHQUFBdEcsQ0FBQSxDQUFBaUIsUUFBQSxDQUkzQixVQUF1QmQsQ0FBQTtVQUMxQixPQUF5QixRQUFsQkEsQ0FBQSxDQUFJb0csS0FBQSxFQUFPLEtBQWFwRyxDQUFBLENBQUlvRyxLQUFBLENBQU0sSUFBSSxLQUFLcEcsQ0FDdEQ7UUFBQSxHQUY2QiwyRkFBQUgsQ0FBQSxDQUFBaUIsUUFBQSxDQUl0QixVQUFxQmQsQ0FBQSxHQUN4QixHQURvQix3RkFBQUYsQ0FBQSx5QkFBQVksb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUssV0FBQSxjQUFBakIsQ0FBQSxDQUFBRSxDQUFBO01BQUE7TUFBQSxlQUFBQSxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQy9IeEIsSUFBSUssQ0FBQSxHQUNxQixzQkFBZjRGLFVBQUEsSUFBOEJBLFVBQUEsSUFDckIsc0JBQVRDLElBQUEsSUFBd0JBLElBQUEsU0FFYixNQUFYbEcsQ0FBQSxDQUFBbUcsQ0FBQSxJQUEwQm5HLENBQUEsQ0FBQW1HLENBQUEsSUFDbEMsQ0FBQztVQUVDMUcsQ0FBQSxHQUFVO1lBQ1oyRyxZQUFBLEVBQWMscUJBQXFCL0YsQ0FBQTtZQUNuQ2dHLFFBQUEsRUFBVSxZQUFZaEcsQ0FBQSxJQUFLLGNBQWNXLE1BQUE7WUFDekNzRixJQUFBLEVBQ0UsZ0JBQWdCakcsQ0FBQSxJQUNoQixVQUFVQSxDQUFBLElBQ1Y7Y0FDRTtnQkFFRSxPQURBLElBQUlrRyxJQUFBLEtBQ0csQ0FDVDtjQUFBLENBQUUsUUFBTzNHLENBQUE7Z0JBQ1AsUUFBTyxDQUNUO2NBQUE7WUFDRCxDQVBEO1lBUUY0RyxRQUFBLEVBQVUsY0FBY25HLENBQUE7WUFDeEJvRyxXQUFBLEVBQWEsaUJBQWlCcEc7VUFBQTtRQU9oQyxJQUFJWixDQUFBLENBQVFnSCxXQUFBLEVBQ1YsSUFBSS9HLENBQUEsR0FBYyxDQUNoQixzQkFDQSx1QkFDQSw4QkFDQSx1QkFDQSx3QkFDQSx1QkFDQSx3QkFDQSx5QkFDQTtVQUdFQyxDQUFBLEdBQ0YrRyxXQUFBLENBQVlDLE1BQUEsSUFDWixVQUFTL0csQ0FBQTtZQUNQLE9BQU9BLENBQUEsSUFBT0YsQ0FBQSxDQUFZc0UsT0FBQSxDQUFRckMsTUFBQSxDQUFPUixTQUFBLENBQVU0QyxRQUFBLENBQVM3QixJQUFBLENBQUt0QyxDQUFBLE1BQVMsQ0FDNUU7VUFBQTtRQUdKLFNBQVM0RixFQUFjNUYsQ0FBQTtVQUlyQixJQUhvQixtQkFBVEEsQ0FBQSxLQUNUQSxDQUFBLEdBQU91QyxNQUFBLENBQU92QyxDQUFBLElBRVosNkJBQTZCZ0gsSUFBQSxDQUFLaEgsQ0FBQSxLQUFrQixPQUFUQSxDQUFBLEVBQzdDLE1BQU0sSUFBSXlCLFNBQUEsQ0FBVSw4Q0FBOEN6QixDQUFBLEdBQU87VUFFM0UsT0FBT0EsQ0FBQSxDQUFLaUgsV0FBQSxFQUNkO1FBQUE7UUFFQSxTQUFTcEIsRUFBZTdGLENBQUE7VUFJdEIsT0FIcUIsbUJBQVZBLENBQUEsS0FDVEEsQ0FBQSxHQUFRdUMsTUFBQSxDQUFPdkMsQ0FBQSxJQUVWQSxDQUNUO1FBQUE7UUFHQSxTQUFTOEYsRUFBWTlGLENBQUE7VUFDbkIsSUFBSU0sQ0FBQSxHQUFXO1lBQ2I0RyxJQUFBLEVBQU0sU0FBQUEsQ0FBQTtjQUNKLElBQUk1RyxDQUFBLEdBQVFOLENBQUEsQ0FBTW1ILEtBQUE7Y0FDbEIsT0FBTztnQkFBQ0MsSUFBQSxPQUFnQixNQUFWOUcsQ0FBQTtnQkFBcUI4QyxLQUFBLEVBQU85QztjQUFBLENBQzVDO1lBQUE7VUFBQTtVQVNGLE9BTklULENBQUEsQ0FBUTRHLFFBQUEsS0FDVm5HLENBQUEsQ0FBU2MsTUFBQSxDQUFPQyxRQUFBLElBQVk7WUFDMUIsT0FBT2YsQ0FDVDtVQUFBLElBR0tBLENBQ1Q7UUFBQTtRQUVPLFNBQVN5RixFQUFRL0YsQ0FBQTtVQUN0QixLQUFLcUgsR0FBQSxHQUFNLENBQUMsR0FFUnJILENBQUEsWUFBbUIrRixDQUFBLEdBQ3JCL0YsQ0FBQSxDQUFRc0gsT0FBQSxDQUFRLFVBQVN0SCxDQUFBLEVBQU9NLENBQUE7WUFDOUIsS0FBS2lILE1BQUEsQ0FBT2pILENBQUEsRUFBTU4sQ0FBQSxDQUNwQjtVQUFBLEdBQUcsUUFDTXdILEtBQUEsQ0FBTUMsT0FBQSxDQUFRekgsQ0FBQSxJQUN2QkEsQ0FBQSxDQUFRc0gsT0FBQSxDQUFRLFVBQVN0SCxDQUFBO1lBQ3ZCLElBQXFCLEtBQWpCQSxDQUFBLENBQU8yQixNQUFBLEVBQ1QsTUFBTSxJQUFJRixTQUFBLENBQVUsd0VBQXdFekIsQ0FBQSxDQUFPMkIsTUFBQTtZQUVyRyxLQUFLNEYsTUFBQSxDQUFPdkgsQ0FBQSxDQUFPLElBQUlBLENBQUEsQ0FBTyxHQUNoQztVQUFBLEdBQUcsUUFDTUEsQ0FBQSxJQUNUK0IsTUFBQSxDQUFPMkYsbUJBQUEsQ0FBb0IxSCxDQUFBLEVBQVNzSCxPQUFBLENBQVEsVUFBU2hILENBQUE7WUFDbkQsS0FBS2lILE1BQUEsQ0FBT2pILENBQUEsRUFBTU4sQ0FBQSxDQUFRTSxDQUFBLEVBQzVCO1VBQUEsR0FBRyxLQUVQO1FBQUE7UUE4REEsU0FBU0QsRUFBU0wsQ0FBQTtVQUNoQixLQUFJQSxDQUFBLENBQUsySCxPQUFBLEVBQ1QsT0FBSTNILENBQUEsQ0FBSzRILFFBQUEsR0FDQUMsT0FBQSxDQUFRQyxNQUFBLENBQU8sSUFBSXJHLFNBQUEsQ0FBVSx5QkFFdEN6QixDQUFBLENBQUs0SCxRQUFBLElBQVcsRUFDbEI7UUFBQTtRQUVBLFNBQVM1QixFQUFnQmhHLENBQUE7VUFDdkIsT0FBTyxJQUFJNkgsT0FBQSxDQUFRLFVBQVN2SCxDQUFBLEVBQVNGLENBQUE7WUFDbkNKLENBQUEsQ0FBTytILE1BQUEsR0FBUztjQUNkekgsQ0FBQSxDQUFRTixDQUFBLENBQU9nSSxNQUFBLENBQ2pCO1lBQUEsR0FDQWhJLENBQUEsQ0FBT2lJLE9BQUEsR0FBVTtjQUNmN0gsQ0FBQSxDQUFPSixDQUFBLENBQU9rSSxLQUFBLENBQ2hCO1lBQUEsQ0FDRjtVQUFBLEVBQ0Y7UUFBQTtRQUVBLFNBQVNDLEVBQXNCbkksQ0FBQTtVQUM3QixJQUFJTSxDQUFBLEdBQVMsSUFBSThILFVBQUE7WUFDYmhJLENBQUEsR0FBVTRGLENBQUEsQ0FBZ0IxRixDQUFBO1VBRTlCLE9BREFBLENBQUEsQ0FBTytILGlCQUFBLENBQWtCckksQ0FBQSxHQUNsQkksQ0FDVDtRQUFBO1FBcUJBLFNBQVNrSSxFQUFZdEksQ0FBQTtVQUNuQixJQUFJQSxDQUFBLENBQUlvRyxLQUFBLEVBQ04sT0FBT3BHLENBQUEsQ0FBSW9HLEtBQUEsQ0FBTTtVQUVqQixJQUFJOUYsQ0FBQSxHQUFPLElBQUlpSSxVQUFBLENBQVd2SSxDQUFBLENBQUl3SSxVQUFBO1VBRTlCLE9BREFsSSxDQUFBLENBQUtxRCxHQUFBLENBQUksSUFBSTRFLFVBQUEsQ0FBV3ZJLENBQUEsSUFDakJNLENBQUEsQ0FBS21JLE1BRWhCO1FBQUE7UUFFQSxTQUFTQyxFQUFBO1VBcUhQLE9BcEhBLEtBQUtkLFFBQUEsSUFBVyxHQUVoQixLQUFLZSxTQUFBLEdBQVksVUFBUzNJLENBQUE7WUF0TTVCLElBQW9CTSxDQUFBO1lBa05oQixLQUFLc0gsUUFBQSxHQUFXLEtBQUtBLFFBQUEsRUFDckIsS0FBS2dCLFNBQUEsR0FBWTVJLENBQUEsRUFDWkEsQ0FBQSxHQUdzQixtQkFBVEEsQ0FBQSxHQUNoQixLQUFLNkksU0FBQSxHQUFZN0ksQ0FBQSxHQUNSSCxDQUFBLENBQVE2RyxJQUFBLElBQVFDLElBQUEsQ0FBS3BGLFNBQUEsQ0FBVXVILGFBQUEsQ0FBYzlJLENBQUEsSUFDdEQsS0FBSytJLFNBQUEsR0FBWS9JLENBQUEsR0FDUkgsQ0FBQSxDQUFRK0csUUFBQSxJQUFZb0MsUUFBQSxDQUFTekgsU0FBQSxDQUFVdUgsYUFBQSxDQUFjOUksQ0FBQSxJQUM5RCxLQUFLaUosYUFBQSxHQUFnQmpKLENBQUEsR0FDWkgsQ0FBQSxDQUFRMkcsWUFBQSxJQUFnQjBDLGVBQUEsQ0FBZ0IzSCxTQUFBLENBQVV1SCxhQUFBLENBQWM5SSxDQUFBLElBQ3pFLEtBQUs2SSxTQUFBLEdBQVk3SSxDQUFBLENBQUttRSxRQUFBLEtBQ2J0RSxDQUFBLENBQVFnSCxXQUFBLElBQWVoSCxDQUFBLENBQVE2RyxJQUFBLEtBL04xQnBHLENBQUEsR0ErTjZDTixDQUFBLEtBOU5qRG1KLFFBQUEsQ0FBUzVILFNBQUEsQ0FBVXVILGFBQUEsQ0FBY3hJLENBQUEsS0ErTjNDLEtBQUs4SSxnQkFBQSxHQUFtQmQsQ0FBQSxDQUFZdEksQ0FBQSxDQUFLeUksTUFBQSxHQUV6QyxLQUFLRyxTQUFBLEdBQVksSUFBSWpDLElBQUEsQ0FBSyxDQUFDLEtBQUt5QyxnQkFBQSxNQUN2QnZKLENBQUEsQ0FBUWdILFdBQUEsS0FBZ0JDLFdBQUEsQ0FBWXZGLFNBQUEsQ0FBVXVILGFBQUEsQ0FBYzlJLENBQUEsS0FBU0QsQ0FBQSxDQUFrQkMsQ0FBQSxLQUNoRyxLQUFLb0osZ0JBQUEsR0FBbUJkLENBQUEsQ0FBWXRJLENBQUEsSUFFcEMsS0FBSzZJLFNBQUEsR0FBWTdJLENBQUEsR0FBTytCLE1BQUEsQ0FBT1IsU0FBQSxDQUFVNEMsUUFBQSxDQUFTN0IsSUFBQSxDQUFLdEMsQ0FBQSxLQWpCdkQsS0FBSzJILE9BQUEsSUFBVSxHQUNmLEtBQUtrQixTQUFBLEdBQVksS0FtQmQsS0FBS1EsT0FBQSxDQUFRM0YsR0FBQSxDQUFJLG9CQUNBLG1CQUFUMUQsQ0FBQSxHQUNULEtBQUtxSixPQUFBLENBQVExRixHQUFBLENBQUksZ0JBQWdCLDhCQUN4QixLQUFLb0YsU0FBQSxJQUFhLEtBQUtBLFNBQUEsQ0FBVU8sSUFBQSxHQUMxQyxLQUFLRCxPQUFBLENBQVExRixHQUFBLENBQUksZ0JBQWdCLEtBQUtvRixTQUFBLENBQVVPLElBQUEsSUFDdkN6SixDQUFBLENBQVEyRyxZQUFBLElBQWdCMEMsZUFBQSxDQUFnQjNILFNBQUEsQ0FBVXVILGFBQUEsQ0FBYzlJLENBQUEsS0FDekUsS0FBS3FKLE9BQUEsQ0FBUTFGLEdBQUEsQ0FBSSxnQkFBZ0IsbURBR3ZDO1VBQUEsR0FFSTlELENBQUEsQ0FBUTZHLElBQUEsS0FDVixLQUFLQSxJQUFBLEdBQU87WUFDVixJQUFJMUcsQ0FBQSxHQUFXSyxDQUFBLENBQVM7WUFDeEIsSUFBSUwsQ0FBQSxFQUNGLE9BQU9BLENBQUE7WUFHVCxJQUFJLEtBQUsrSSxTQUFBLEVBQ1AsT0FBT2xCLE9BQUEsQ0FBUTBCLE9BQUEsQ0FBUSxLQUFLUixTQUFBO1lBQ3ZCLElBQUksS0FBS0ssZ0JBQUEsRUFDZCxPQUFPdkIsT0FBQSxDQUFRMEIsT0FBQSxDQUFRLElBQUk1QyxJQUFBLENBQUssQ0FBQyxLQUFLeUMsZ0JBQUE7WUFDakMsSUFBSSxLQUFLSCxhQUFBLEVBQ2QsTUFBTSxJQUFJaEUsS0FBQSxDQUFNO1lBRWhCLE9BQU80QyxPQUFBLENBQVEwQixPQUFBLENBQVEsSUFBSTVDLElBQUEsQ0FBSyxDQUFDLEtBQUtrQyxTQUFBLEdBRTFDO1VBQUEsSUFHRixLQUFLaEMsV0FBQSxHQUFjO1lBQ2pCLElBQUksS0FBS3VDLGdCQUFBLEVBRVAsT0FEaUIvSSxDQUFBLENBQVMsVUFHZnlHLFdBQUEsQ0FBWUMsTUFBQSxDQUFPLEtBQUtxQyxnQkFBQSxJQUMxQnZCLE9BQUEsQ0FBUTBCLE9BQUEsQ0FDYixLQUFLSCxnQkFBQSxDQUFpQlgsTUFBQSxDQUFPckMsS0FBQSxDQUMzQixLQUFLZ0QsZ0JBQUEsQ0FBaUJJLFVBQUEsRUFDdEIsS0FBS0osZ0JBQUEsQ0FBaUJJLFVBQUEsR0FBYSxLQUFLSixnQkFBQSxDQUFpQlosVUFBQSxLQUl0RFgsT0FBQSxDQUFRMEIsT0FBQSxDQUFRLEtBQUtILGdCQUFBO1lBRXpCLElBQUl2SixDQUFBLENBQVE2RyxJQUFBLEVBQ2pCLE9BQU8sS0FBS0EsSUFBQSxHQUFPK0MsSUFBQSxDQUFLdEIsQ0FBQTtZQUV4QixNQUFNLElBQUlsRCxLQUFBLENBQU0sZ0NBRXBCO1VBQUEsR0FFQSxLQUFLeUUsSUFBQSxHQUFPO1lBQ1YsSUF4SG9CMUosQ0FBQTtjQUNsQk0sQ0FBQTtjQUNBRixDQUFBO2NBQ0FLLENBQUE7Y0FDQVosQ0FBQTtjQW9IRUMsQ0FBQSxHQUFXTyxDQUFBLENBQVM7WUFDeEIsSUFBSVAsQ0FBQSxFQUNGLE9BQU9BLENBQUE7WUFHVCxJQUFJLEtBQUtpSixTQUFBLEVBQ1AsT0E5SGtCL0ksQ0FBQSxHQThISSxLQUFLK0ksU0FBQSxFQTVIM0IzSSxDQUFBLEdBQVU0RixDQUFBLENBRFYxRixDQUFBLEdBQVMsSUFBSThILFVBQUEsS0FHYnZJLENBQUEsSUFEQVksQ0FBQSxHQUFRLDJCQUEyQmtKLElBQUEsQ0FBSzNKLENBQUEsQ0FBS3NKLElBQUEsS0FDMUI3SSxDQUFBLENBQU0sS0FBSyxTQUNsQ0gsQ0FBQSxDQUFPc0osVUFBQSxDQUFXNUosQ0FBQSxFQUFNSCxDQUFBLEdBQ2pCTyxDQUFBO1lBeUhFLElBQUksS0FBS2dKLGdCQUFBLEVBQ2QsT0FBT3ZCLE9BQUEsQ0FBUTBCLE9BQUEsQ0F2SHJCLFVBQStCdkosQ0FBQTtjQUk3QixLQUhBLElBQUlNLENBQUEsR0FBTyxJQUFJaUksVUFBQSxDQUFXdkksQ0FBQSxHQUN0QkksQ0FBQSxHQUFRLElBQUlvSCxLQUFBLENBQU1sSCxDQUFBLENBQUtxQixNQUFBLEdBRWxCbEIsQ0FBQSxHQUFJLEdBQUdBLENBQUEsR0FBSUgsQ0FBQSxDQUFLcUIsTUFBQSxFQUFRbEIsQ0FBQSxJQUMvQkwsQ0FBQSxDQUFNSyxDQUFBLElBQUs4QixNQUFBLENBQU9zSCxZQUFBLENBQWF2SixDQUFBLENBQUtHLENBQUE7Y0FFdEMsT0FBT0wsQ0FBQSxDQUFNMEosSUFBQSxDQUFLLEdBQ3BCO1lBQUEsQ0ErRzZCLENBQXNCLEtBQUtWLGdCQUFBO1lBQzdDLElBQUksS0FBS0gsYUFBQSxFQUNkLE1BQU0sSUFBSWhFLEtBQUEsQ0FBTTtZQUVoQixPQUFPNEMsT0FBQSxDQUFRMEIsT0FBQSxDQUFRLEtBQUtWLFNBQUEsQ0FFaEM7VUFBQSxHQUVJaEosQ0FBQSxDQUFRK0csUUFBQSxLQUNWLEtBQUtBLFFBQUEsR0FBVztZQUNkLE9BQU8sS0FBSzhDLElBQUEsR0FBT0QsSUFBQSxDQUFLbEQsQ0FBQSxDQUMxQjtVQUFBLElBR0YsS0FBS3dELElBQUEsR0FBTztZQUNWLE9BQU8sS0FBS0wsSUFBQSxHQUFPRCxJQUFBLENBQUtPLElBQUEsQ0FBS0MsS0FBQSxDQUMvQjtVQUFBLEdBRU8sSUFDVDtRQUFBO1FBek9BbEUsQ0FBQSxDQUFReEUsU0FBQSxDQUFVZ0csTUFBQSxHQUFTLFVBQVN2SCxDQUFBLEVBQU1NLENBQUE7VUFDeENOLENBQUEsR0FBTzRGLENBQUEsQ0FBYzVGLENBQUEsR0FDckJNLENBQUEsR0FBUXVGLENBQUEsQ0FBZXZGLENBQUE7VUFDdkIsSUFBSUYsQ0FBQSxHQUFXLEtBQUtpSCxHQUFBLENBQUlySCxDQUFBO1VBQ3hCLEtBQUtxSCxHQUFBLENBQUlySCxDQUFBLElBQVFJLENBQUEsR0FBV0EsQ0FBQSxHQUFXLE9BQU9FLENBQUEsR0FBUUEsQ0FDeEQ7UUFBQSxHQUVBeUYsQ0FBQSxDQUFReEUsU0FBQSxDQUFrQjJJLE1BQUEsR0FBSSxVQUFTbEssQ0FBQTtVQUFBLE9BQzlCLEtBQUtxSCxHQUFBLENBQUl6QixDQUFBLENBQWM1RixDQUFBLEVBQ2hDO1FBQUEsR0FFQStGLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVW1DLEdBQUEsR0FBTSxVQUFTMUQsQ0FBQTtVQUUvQixPQURBQSxDQUFBLEdBQU80RixDQUFBLENBQWM1RixDQUFBLEdBQ2QsS0FBS3lELEdBQUEsQ0FBSXpELENBQUEsSUFBUSxLQUFLcUgsR0FBQSxDQUFJckgsQ0FBQSxJQUFRLElBQzNDO1FBQUEsR0FFQStGLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVWtDLEdBQUEsR0FBTSxVQUFTekQsQ0FBQTtVQUMvQixPQUFPLEtBQUtxSCxHQUFBLENBQUk4QyxjQUFBLENBQWV2RSxDQUFBLENBQWM1RixDQUFBLEVBQy9DO1FBQUEsR0FFQStGLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVW9DLEdBQUEsR0FBTSxVQUFTM0QsQ0FBQSxFQUFNTSxDQUFBO1VBQ3JDLEtBQUsrRyxHQUFBLENBQUl6QixDQUFBLENBQWM1RixDQUFBLEtBQVM2RixDQUFBLENBQWV2RixDQUFBLENBQ2pEO1FBQUEsR0FFQXlGLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVStGLE9BQUEsR0FBVSxVQUFTdEgsQ0FBQSxFQUFVTSxDQUFBO1VBQzdDLEtBQUssSUFBSUYsQ0FBQSxJQUFRLEtBQUtpSCxHQUFBLEVBQ2hCLEtBQUtBLEdBQUEsQ0FBSThDLGNBQUEsQ0FBZS9KLENBQUEsS0FDMUJKLENBQUEsQ0FBU3NDLElBQUEsQ0FBS2hDLENBQUEsRUFBUyxLQUFLK0csR0FBQSxDQUFJakgsQ0FBQSxHQUFPQSxDQUFBLEVBQU0sS0FHbkQ7UUFBQSxHQUVBMkYsQ0FBQSxDQUFReEUsU0FBQSxDQUFVNkksSUFBQSxHQUFPO1VBQ3ZCLElBQUlwSyxDQUFBLEdBQVE7VUFJWixPQUhBLEtBQUtzSCxPQUFBLENBQVEsVUFBU2hILENBQUEsRUFBT0YsQ0FBQTtZQUMzQkosQ0FBQSxDQUFNOEQsSUFBQSxDQUFLMUQsQ0FBQSxDQUNiO1VBQUEsSUFDTzBGLENBQUEsQ0FBWTlGLENBQUEsQ0FDckI7UUFBQSxHQUVBK0YsQ0FBQSxDQUFReEUsU0FBQSxDQUFVOEksTUFBQSxHQUFTO1VBQ3pCLElBQUlySyxDQUFBLEdBQVE7VUFJWixPQUhBLEtBQUtzSCxPQUFBLENBQVEsVUFBU2hILENBQUE7WUFDcEJOLENBQUEsQ0FBTThELElBQUEsQ0FBS3hELENBQUEsQ0FDYjtVQUFBLElBQ093RixDQUFBLENBQVk5RixDQUFBLENBQ3JCO1FBQUEsR0FFQStGLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVStJLE9BQUEsR0FBVTtVQUMxQixJQUFJdEssQ0FBQSxHQUFRO1VBSVosT0FIQSxLQUFLc0gsT0FBQSxDQUFRLFVBQVNoSCxDQUFBLEVBQU9GLENBQUE7WUFDM0JKLENBQUEsQ0FBTThELElBQUEsQ0FBSyxDQUFDMUQsQ0FBQSxFQUFNRSxDQUFBLEVBQ3BCO1VBQUEsSUFDT3dGLENBQUEsQ0FBWTlGLENBQUEsQ0FDckI7UUFBQSxHQUVJSCxDQUFBLENBQVE0RyxRQUFBLEtBQ1ZWLENBQUEsQ0FBUXhFLFNBQUEsQ0FBVUgsTUFBQSxDQUFPQyxRQUFBLElBQVkwRSxDQUFBLENBQVF4RSxTQUFBLENBQVUrSSxPQUFBO1FBbUx6RCxJQUFJQyxDQUFBLEdBQVUsQ0FBQyxXQUFXLFVBQVUsT0FBTyxRQUFRLFdBQVcsU0FBUyxRQUFRLE9BQU87UUFPL0UsU0FBU0MsRUFBUXhLLENBQUEsRUFBT00sQ0FBQTtVQUM3QixNQUFNLGdCQUFnQmtLLENBQUEsR0FDcEIsTUFBTSxJQUFJL0ksU0FBQSxDQUFVO1VBSXRCLElBWHVCckIsQ0FBQTtZQUNuQlAsQ0FBQTtZQVVBQyxDQUFBLElBREpRLENBQUEsR0FBVUEsQ0FBQSxJQUFXLENBQUMsR0FDSG1LLElBQUE7VUFFbkIsSUFBSXpLLENBQUEsWUFBaUJ3SyxDQUFBLEVBQVM7WUFDNUIsSUFBSXhLLENBQUEsQ0FBTTRILFFBQUEsRUFDUixNQUFNLElBQUluRyxTQUFBLENBQVU7WUFFdEIsS0FBS2lKLEdBQUEsR0FBTTFLLENBQUEsQ0FBTTBLLEdBQUEsRUFDakIsS0FBS0MsV0FBQSxHQUFjM0ssQ0FBQSxDQUFNMkssV0FBQSxFQUNwQnJLLENBQUEsQ0FBUStJLE9BQUEsS0FDWCxLQUFLQSxPQUFBLEdBQVUsSUFBSXRELENBQUEsQ0FBUS9GLENBQUEsQ0FBTXFKLE9BQUEsSUFFbkMsS0FBS3VCLE1BQUEsR0FBUzVLLENBQUEsQ0FBTTRLLE1BQUEsRUFDcEIsS0FBS0MsSUFBQSxHQUFPN0ssQ0FBQSxDQUFNNkssSUFBQSxFQUNsQixLQUFLQyxNQUFBLEdBQVM5SyxDQUFBLENBQU04SyxNQUFBLEVBQ2ZoTCxDQUFBLElBQTJCLFFBQW5CRSxDQUFBLENBQU00SSxTQUFBLEtBQ2pCOUksQ0FBQSxHQUFPRSxDQUFBLENBQU00SSxTQUFBLEVBQ2I1SSxDQUFBLENBQU00SCxRQUFBLElBQVcsRUFFckI7VUFBQSxPQUNFLEtBQUs4QyxHQUFBLEdBQU1uSSxNQUFBLENBQU92QyxDQUFBO1VBaUJwQixJQWRBLEtBQUsySyxXQUFBLEdBQWNySyxDQUFBLENBQVFxSyxXQUFBLElBQWUsS0FBS0EsV0FBQSxJQUFlLGdCQUMxRHJLLENBQUEsQ0FBUStJLE9BQUEsSUFBWSxLQUFLQSxPQUFBLEtBQzNCLEtBQUtBLE9BQUEsR0FBVSxJQUFJdEQsQ0FBQSxDQUFRekYsQ0FBQSxDQUFRK0ksT0FBQSxJQUVyQyxLQUFLdUIsTUFBQSxJQXBDRC9LLENBQUEsSUFEbUJPLENBQUEsR0FxQ09FLENBQUEsQ0FBUXNLLE1BQUEsSUFBVSxLQUFLQSxNQUFBLElBQVUsT0FwQzFDRyxXQUFBLElBQ2RSLENBQUEsQ0FBUW5HLE9BQUEsQ0FBUXZFLENBQUEsS0FBWSxJQUFJQSxDQUFBLEdBQVVPLENBQUEsR0FvQ2pELEtBQUt5SyxJQUFBLEdBQU92SyxDQUFBLENBQVF1SyxJQUFBLElBQVEsS0FBS0EsSUFBQSxJQUFRLE1BQ3pDLEtBQUtDLE1BQUEsR0FBU3hLLENBQUEsQ0FBUXdLLE1BQUEsSUFBVSxLQUFLQSxNQUFBLElBQVc7WUFDOUMsSUFBSSxxQkFBcUJySyxDQUFBLEVBRXZCLE9BRFcsSUFBSXVLLGVBQUEsR0FDSEYsTUFFaEI7VUFBQSxDQUwrQyxJQU0vQyxLQUFLRyxRQUFBLEdBQVcsT0FFSyxVQUFoQixLQUFLTCxNQUFBLElBQW9DLFdBQWhCLEtBQUtBLE1BQUEsS0FBc0I5SyxDQUFBLEVBQ3ZELE1BQU0sSUFBSTJCLFNBQUEsQ0FBVTtVQUl0QixJQUZBLEtBQUtrSCxTQUFBLENBQVU3SSxDQUFBLEtBRUssVUFBaEIsS0FBSzhLLE1BQUEsSUFBb0MsV0FBaEIsS0FBS0EsTUFBQSxJQUNWLGVBQWxCdEssQ0FBQSxDQUFRNEssS0FBQSxJQUEwQyxlQUFsQjVLLENBQUEsQ0FBUTRLLEtBQUEsR0FBc0I7WUFFaEUsSUFBSW5MLENBQUEsR0FBZ0I7WUFDaEJBLENBQUEsQ0FBY2lILElBQUEsQ0FBSyxLQUFLMEQsR0FBQSxJQUUxQixLQUFLQSxHQUFBLEdBQU0sS0FBS0EsR0FBQSxDQUFJUyxPQUFBLENBQVFwTCxDQUFBLEVBQWUsU0FBUyxJQUFJcUwsSUFBQSxHQUFPQyxPQUFBLE1BSS9ELEtBQUtYLEdBQUEsS0FEZSxLQUNPMUQsSUFBQSxDQUFLLEtBQUswRCxHQUFBLElBQU8sTUFBTSxPQUFPLE9BQU8sSUFBSVUsSUFBQSxHQUFPQyxPQUFBLEVBRS9FO1VBQUE7UUFFSjtRQU1BLFNBQVM5RSxFQUFPdkcsQ0FBQTtVQUNkLElBQUlNLENBQUEsR0FBTyxJQUFJMEksUUFBQTtVQVlmLE9BWEFoSixDQUFBLENBQ0dtRyxJQUFBLEdBQ0FtRixLQUFBLENBQU0sS0FDTmhFLE9BQUEsQ0FBUSxVQUFTdEgsQ0FBQTtZQUNoQixJQUFJQSxDQUFBLEVBQU87Y0FDVCxJQUFJSSxDQUFBLEdBQVFKLENBQUEsQ0FBTXNMLEtBQUEsQ0FBTTtnQkFDcEI3SyxDQUFBLEdBQU9MLENBQUEsQ0FBTStHLEtBQUEsR0FBUWdFLE9BQUEsQ0FBUSxPQUFPO2dCQUNwQ3RMLENBQUEsR0FBUU8sQ0FBQSxDQUFNMEosSUFBQSxDQUFLLEtBQUtxQixPQUFBLENBQVEsT0FBTztjQUMzQzdLLENBQUEsQ0FBS2lILE1BQUEsQ0FBT2dFLGtCQUFBLENBQW1COUssQ0FBQSxHQUFPOEssa0JBQUEsQ0FBbUIxTCxDQUFBLEVBQzNEO1lBQUE7VUFDRixJQUNLUyxDQUNUO1FBQUE7UUFnQ08sU0FBU2tMLEVBQVN4TCxDQUFBLEVBQVVNLENBQUE7VUFDakMsTUFBTSxnQkFBZ0JrTCxDQUFBLEdBQ3BCLE1BQU0sSUFBSS9KLFNBQUEsQ0FBVTtVQVF0QixJQU5LbkIsQ0FBQSxLQUNIQSxDQUFBLEdBQVUsQ0FBQyxJQUdiLEtBQUtnSixJQUFBLEdBQU8sV0FDWixLQUFLbUMsTUFBQSxRQUE0QixNQUFuQm5MLENBQUEsQ0FBUW1MLE1BQUEsR0FBdUIsTUFBTW5MLENBQUEsQ0FBUW1MLE1BQUEsRUFDdkQsS0FBS0EsTUFBQSxHQUFTLE9BQU8sS0FBS0EsTUFBQSxHQUFTLEtBQ3JDLE1BQU0sSUFBSUMsVUFBQSxDQUFXO1VBRXZCLEtBQUtDLEVBQUEsR0FBSyxLQUFLRixNQUFBLElBQVUsT0FBTyxLQUFLQSxNQUFBLEdBQVMsS0FDOUMsS0FBS0csVUFBQSxRQUFvQyxNQUF2QnRMLENBQUEsQ0FBUXNMLFVBQUEsR0FBMkIsS0FBSyxLQUFLdEwsQ0FBQSxDQUFRc0wsVUFBQSxFQUN2RSxLQUFLdkMsT0FBQSxHQUFVLElBQUl0RCxDQUFBLENBQVF6RixDQUFBLENBQVErSSxPQUFBLEdBQ25DLEtBQUtxQixHQUFBLEdBQU1wSyxDQUFBLENBQVFvSyxHQUFBLElBQU8sSUFDMUIsS0FBSy9CLFNBQUEsQ0FBVTNJLENBQUEsQ0FDakI7UUFBQTtRQXBFQXdLLENBQUEsQ0FBUWpKLFNBQUEsQ0FBVXNLLEtBQUEsR0FBUTtVQUN4QixPQUFPLElBQUlyQixDQUFBLENBQVEsTUFBTTtZQUFDQyxJQUFBLEVBQU0sS0FBSzdCO1VBQUEsRUFDdkM7UUFBQSxHQThDQUYsQ0FBQSxDQUFLcEcsSUFBQSxDQUFLa0ksQ0FBQSxDQUFRakosU0FBQSxHQXNCbEJtSCxDQUFBLENBQUtwRyxJQUFBLENBQUtrSixDQUFBLENBQVNqSyxTQUFBLEdBRW5CaUssQ0FBQSxDQUFTakssU0FBQSxDQUFVc0ssS0FBQSxHQUFRO1VBQ3pCLE9BQU8sSUFBSUwsQ0FBQSxDQUFTLEtBQUs1QyxTQUFBLEVBQVc7WUFDbEM2QyxNQUFBLEVBQVEsS0FBS0EsTUFBQTtZQUNiRyxVQUFBLEVBQVksS0FBS0EsVUFBQTtZQUNqQnZDLE9BQUEsRUFBUyxJQUFJdEQsQ0FBQSxDQUFRLEtBQUtzRCxPQUFBO1lBQzFCcUIsR0FBQSxFQUFLLEtBQUtBO1VBQUEsRUFFZDtRQUFBLEdBRUFjLENBQUEsQ0FBU3RELEtBQUEsR0FBUTtVQUNmLElBQUlsSSxDQUFBLEdBQVcsSUFBSXdMLENBQUEsQ0FBUyxNQUFNO1lBQUNDLE1BQUEsRUFBUTtZQUFLRyxVQUFBLEVBQVk7VUFBQTtVQUk1RCxPQUhBNUwsQ0FBQSxDQUFTMkwsRUFBQSxJQUFLLEdBQ2QzTCxDQUFBLENBQVN5TCxNQUFBLEdBQVMsR0FDbEJ6TCxDQUFBLENBQVNzSixJQUFBLEdBQU8sU0FDVHRKLENBQ1Q7UUFBQTtRQUVBLElBQUk4TCxDQUFBLEdBQW1CLENBQUMsS0FBSyxLQUFLLEtBQUssS0FBSztRQUU1Q04sQ0FBQSxDQUFTTyxRQUFBLEdBQVcsVUFBUy9MLENBQUEsRUFBS00sQ0FBQTtVQUNoQyxLQUEwQyxNQUF0Q3dMLENBQUEsQ0FBaUIxSCxPQUFBLENBQVE5RCxDQUFBLEdBQzNCLE1BQU0sSUFBSW9MLFVBQUEsQ0FBVztVQUd2QixPQUFPLElBQUlGLENBQUEsQ0FBUyxNQUFNO1lBQUNDLE1BQUEsRUFBUW5MLENBQUE7WUFBUStJLE9BQUEsRUFBUztjQUFDMkMsUUFBQSxFQUFVaE07WUFBQTtVQUFBLEVBQ2pFO1FBQUE7UUFFTyxJQUFJaU0sQ0FBQSxHQUFleEwsQ0FBQSxDQUFFeUwsWUFBQTtRQUM1QjtVQUNFLElBQUlELENBQ04sQ0FETSxDQUNOO1FBQUEsQ0FBRSxRQUFPak0sQ0FBQTtVQUFBLENBQ1BpTSxDQUFBLEdBQWUsU0FBQUMsQ0FBU2xNLENBQUEsRUFBU00sQ0FBQTtZQUMvQixLQUFLNEYsT0FBQSxHQUFVbEcsQ0FBQSxFQUNmLEtBQUs2RSxJQUFBLEdBQU92RSxDQUFBO1lBQ1osSUFBSUYsQ0FBQSxHQUFRNkUsS0FBQSxDQUFNakYsQ0FBQTtZQUNsQixLQUFLbU0sS0FBQSxHQUFRL0wsQ0FBQSxDQUFNK0wsS0FDckI7VUFBQSxHQUNhNUssU0FBQSxHQUFZUSxNQUFBLENBQU9vQixNQUFBLENBQU84QixLQUFBLENBQU0xRCxTQUFBLEdBQzdDMEssQ0FBQSxDQUFhMUssU0FBQSxDQUFVRCxXQUFBLEdBQWMySyxDQUN2QztRQUFBO1FBRU8sU0FBU0csRUFBTXBNLENBQUEsRUFBT00sQ0FBQTtVQUMzQixPQUFPLElBQUl1SCxPQUFBLENBQVEsVUFBU3pILENBQUEsRUFBU04sQ0FBQTtZQUNuQyxJQUFJQyxDQUFBLEdBQVUsSUFBSXlLLENBQUEsQ0FBUXhLLENBQUEsRUFBT00sQ0FBQTtZQUVqQyxJQUFJUCxDQUFBLENBQVErSyxNQUFBLElBQVUvSyxDQUFBLENBQVErSyxNQUFBLENBQU91QixPQUFBLEVBQ25DLE9BQU92TSxDQUFBLENBQU8sSUFBSW1NLENBQUEsQ0FBYSxXQUFXO1lBRzVDLElBQUluRyxDQUFBLEdBQU0sSUFBSXdHLGNBQUE7WUFFZCxTQUFTak0sRUFBQTtjQUNQeUYsQ0FBQSxDQUFJeUcsS0FBQSxFQUNOO1lBQUE7WUFpRUEsSUEvREF6RyxDQUFBLENBQUlpQyxNQUFBLEdBQVM7Y0FDWCxJQTVHZ0IvSCxDQUFBO2dCQUNoQk0sQ0FBQTtnQkEyR0lHLENBQUEsR0FBVTtrQkFDWm1MLFVBQUEsRUFBWTlGLENBQUEsQ0FBSThGLFVBQUE7a0JBQ2hCdkMsT0FBQSxHQTlHY3JKLENBQUEsR0E4R1E4RixDQUFBLENBQUkwRyxxQkFBQSxNQUEyQixJQTdHdkRsTSxDQUFBLEdBQVUsSUFBSXlGLENBQUEsSUFHUS9GLENBQUEsQ0FBV21MLE9BQUEsQ0FBUSxnQkFBZ0IsS0FLMURHLEtBQUEsQ0FBTSxNQUNOakUsR0FBQSxDQUFJLFVBQVNySCxDQUFBO29CQUNaLE9BQWdDLE1BQXpCQSxDQUFBLENBQU9vRSxPQUFBLENBQVEsUUFBY3BFLENBQUEsQ0FBT3lNLE1BQUEsQ0FBTyxHQUFHek0sQ0FBQSxDQUFPMkIsTUFBQSxJQUFVM0IsQ0FDeEU7a0JBQUEsR0FDQ3NILE9BQUEsQ0FBUSxVQUFTdEgsQ0FBQTtvQkFDaEIsSUFBSUksQ0FBQSxHQUFRSixDQUFBLENBQUtzTCxLQUFBLENBQU07c0JBQ25CN0ssQ0FBQSxHQUFNTCxDQUFBLENBQU0rRyxLQUFBLEdBQVFoQixJQUFBO29CQUN4QixJQUFJMUYsQ0FBQSxFQUFLO3NCQUNQLElBQUlaLENBQUEsR0FBUU8sQ0FBQSxDQUFNMEosSUFBQSxDQUFLLEtBQUszRCxJQUFBO3NCQUM1Qjt3QkFDRTdGLENBQUEsQ0FBUWlILE1BQUEsQ0FBTzlHLENBQUEsRUFBS1osQ0FBQSxDQUN0QjtzQkFBQSxDQUFFLFFBQU9HLENBQUE7d0JBQ1AwTSxPQUFBLENBQVFDLElBQUEsQ0FBSyxjQUFjM00sQ0FBQSxDQUFNa0csT0FBQSxDQUNuQztzQkFBQTtvQkFDRjtrQkFDRixJQUNLNUYsQ0FBQTtnQkFBQTtjQXlGb0MsTUFBbkNQLENBQUEsQ0FBUTJLLEdBQUEsQ0FBSXRHLE9BQUEsQ0FBUSxlQUFxQjBCLENBQUEsQ0FBSTJGLE1BQUEsR0FBUyxPQUFPM0YsQ0FBQSxDQUFJMkYsTUFBQSxHQUFTLE9BQzVFaEwsQ0FBQSxDQUFRZ0wsTUFBQSxHQUFTLE1BRWpCaEwsQ0FBQSxDQUFRZ0wsTUFBQSxHQUFTM0YsQ0FBQSxDQUFJMkYsTUFBQSxFQUV2QmhMLENBQUEsQ0FBUWlLLEdBQUEsR0FBTSxpQkFBaUI1RSxDQUFBLEdBQU1BLENBQUEsQ0FBSThHLFdBQUEsR0FBY25NLENBQUEsQ0FBUTRJLE9BQUEsQ0FBUTNGLEdBQUEsQ0FBSTtjQUMzRSxJQUFJN0QsQ0FBQSxHQUFPLGNBQWNpRyxDQUFBLEdBQU1BLENBQUEsQ0FBSStHLFFBQUEsR0FBVy9HLENBQUEsQ0FBSWdILFlBQUE7Y0FDbERDLFVBQUEsQ0FBVztnQkFDVDNNLENBQUEsQ0FBUSxJQUFJb0wsQ0FBQSxDQUFTM0wsQ0FBQSxFQUFNWSxDQUFBLEVBQzdCO2NBQUEsR0FBRyxFQUNMO1lBQUEsR0FFQXFGLENBQUEsQ0FBSW1DLE9BQUEsR0FBVTtjQUNaOEUsVUFBQSxDQUFXO2dCQUNUak4sQ0FBQSxDQUFPLElBQUkyQixTQUFBLENBQVUsMEJBQ3ZCO2NBQUEsR0FBRyxFQUNMO1lBQUEsR0FFQXFFLENBQUEsQ0FBSWtILFNBQUEsR0FBWTtjQUNkRCxVQUFBLENBQVc7Z0JBQ1RqTixDQUFBLENBQU8sSUFBSTJCLFNBQUEsQ0FBVSw2QkFDdkI7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQUVBcUUsQ0FBQSxDQUFJbUgsT0FBQSxHQUFVO2NBQ1pGLFVBQUEsQ0FBVztnQkFDVGpOLENBQUEsQ0FBTyxJQUFJbU0sQ0FBQSxDQUFhLFdBQVcsY0FDckM7Y0FBQSxHQUFHLEVBQ0w7WUFBQSxHQVVBbkcsQ0FBQSxDQUFJb0gsSUFBQSxDQUFLbk4sQ0FBQSxDQUFRNkssTUFBQSxFQVJqQixVQUFnQjVLLENBQUE7Y0FDZDtnQkFDRSxPQUFlLE9BQVJBLENBQUEsSUFBY1MsQ0FBQSxDQUFFdUwsUUFBQSxDQUFTbUIsSUFBQSxHQUFPMU0sQ0FBQSxDQUFFdUwsUUFBQSxDQUFTbUIsSUFBQSxHQUFPbk4sQ0FDM0Q7Y0FBQSxDQUFFLFFBQU9NLENBQUE7Z0JBQ1AsT0FBT04sQ0FDVDtjQUFBO1lBQ0YsQ0FFeUIsQ0FBT0QsQ0FBQSxDQUFRMkssR0FBQSxJQUFNLElBRWxCLGNBQXhCM0ssQ0FBQSxDQUFRNEssV0FBQSxHQUNWN0UsQ0FBQSxDQUFJc0gsZUFBQSxJQUFrQixJQUNXLFdBQXhCck4sQ0FBQSxDQUFRNEssV0FBQSxLQUNqQjdFLENBQUEsQ0FBSXNILGVBQUEsSUFBa0IsSUFHcEIsa0JBQWtCdEgsQ0FBQSxLQUNoQmpHLENBQUEsQ0FBUTZHLElBQUEsR0FDVlosQ0FBQSxDQUFJdUgsWUFBQSxHQUFlLFNBRW5CeE4sQ0FBQSxDQUFRZ0gsV0FBQSxLQUVSZixDQUFBLENBQUl1SCxZQUFBLEdBQWUsaUJBSW5CL00sQ0FBQSxJQUFnQyxtQkFBakJBLENBQUEsQ0FBSytJLE9BQUEsTUFBMEIvSSxDQUFBLENBQUsrSSxPQUFBLFlBQW1CdEQsQ0FBQSxJQUFZdEYsQ0FBQSxDQUFFNk0sT0FBQSxJQUFXaE4sQ0FBQSxDQUFLK0ksT0FBQSxZQUFtQjVJLENBQUEsQ0FBRTZNLE9BQUEsR0FBVztjQUN0SSxJQUFJdEgsQ0FBQSxHQUFRO2NBQ1pqRSxNQUFBLENBQU8yRixtQkFBQSxDQUFvQnBILENBQUEsQ0FBSytJLE9BQUEsRUFBUy9CLE9BQUEsQ0FBUSxVQUFTdEgsQ0FBQTtnQkFDeERnRyxDQUFBLENBQU1sQyxJQUFBLENBQUs4QixDQUFBLENBQWM1RixDQUFBLElBQ3pCOEYsQ0FBQSxDQUFJeUgsZ0JBQUEsQ0FBaUJ2TixDQUFBLEVBQU02RixDQUFBLENBQWV2RixDQUFBLENBQUsrSSxPQUFBLENBQVFySixDQUFBLEdBQ3pEO2NBQUEsSUFDQUQsQ0FBQSxDQUFRc0osT0FBQSxDQUFRL0IsT0FBQSxDQUFRLFVBQVN0SCxDQUFBLEVBQU9NLENBQUE7Z0JBQUEsQ0FDVCxNQUF6QjBGLENBQUEsQ0FBTTVCLE9BQUEsQ0FBUTlELENBQUEsS0FDaEJ3RixDQUFBLENBQUl5SCxnQkFBQSxDQUFpQmpOLENBQUEsRUFBTU4sQ0FBQSxDQUUvQjtjQUFBLEVBQ0Y7WUFBQSxPQUNFRCxDQUFBLENBQVFzSixPQUFBLENBQVEvQixPQUFBLENBQVEsVUFBU3RILENBQUEsRUFBT00sQ0FBQTtjQUN0Q3dGLENBQUEsQ0FBSXlILGdCQUFBLENBQWlCak4sQ0FBQSxFQUFNTixDQUFBLENBQzdCO1lBQUE7WUFHRUQsQ0FBQSxDQUFRK0ssTUFBQSxLQUNWL0ssQ0FBQSxDQUFRK0ssTUFBQSxDQUFPMEMsZ0JBQUEsQ0FBaUIsU0FBU25OLENBQUEsR0FFekN5RixDQUFBLENBQUkySCxrQkFBQSxHQUFxQjtjQUVBLE1BQW5CM0gsQ0FBQSxDQUFJNEgsVUFBQSxJQUNOM04sQ0FBQSxDQUFRK0ssTUFBQSxDQUFPNkMsbUJBQUEsQ0FBb0IsU0FBU3ROLENBQUEsQ0FFaEQ7WUFBQSxJQUdGeUYsQ0FBQSxDQUFJOEgsSUFBQSxNQUFrQyxNQUF0QjdOLENBQUEsQ0FBUTZJLFNBQUEsR0FBNEIsT0FBTzdJLENBQUEsQ0FBUTZJLFNBQUEsQ0FDckU7VUFBQSxFQUNGO1FBQUE7UUFFQXdELENBQUEsQ0FBTXlCLFFBQUEsSUFBVyxHQUVacE4sQ0FBQSxDQUFFcU4sS0FBQSxLQUNMck4sQ0FBQSxDQUFFcU4sS0FBQSxHQUFRMUIsQ0FBQSxFQUNWM0wsQ0FBQSxDQUFFNk0sT0FBQSxHQUFVdkgsQ0FBQSxFQUNadEYsQ0FBQSxDQUFFc04sT0FBQSxHQUFVdkQsQ0FBQSxFQUNaL0osQ0FBQSxDQUFFdU4sUUFBQSxHQUFXeEMsQ0FBQTtRQUFBLElBQUF5QyxDQUFBO1VBQUFDLENBQUEsR0FBQTlOLENBQUE7VUFBQStOLENBQUEsR0FBQS9OLENBQUE7VUFBQWdPLENBQUEsR0FBQWhPLENBQUE7VUFBQWlPLENBQUEsR0FBQWpPLENBQUE7VUFBQWtPLENBQUEsR0FBQWxPLENBQUE7UUFBQSxTQUFBbU8sRUFBQXZPLENBQUE7VUFBQSxPQUFBdU8sQ0FBQSx3QkFBQW5OLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBckIsQ0FBQTtZQUFBLGNBQUFBLENBQUE7VUFBQSxjQUFBQSxDQUFBO1lBQUEsT0FBQUEsQ0FBQSx5QkFBQW9CLE1BQUEsSUFBQXBCLENBQUEsQ0FBQXNCLFdBQUEsS0FBQUYsTUFBQSxJQUFBcEIsQ0FBQSxLQUFBb0IsTUFBQSxDQUFBRyxTQUFBLHFCQUFBdkIsQ0FBQTtVQUFBLEdBQUF1TyxDQUFBLENBQUF2TyxDQUFBO1FBQUE7UUFBQSxTQUFBd08sRUFBQXhPLENBQUEsRUFBQU0sQ0FBQTtVQUFBLElBQUFGLENBQUEsR0FBQTJCLE1BQUEsQ0FBQXFJLElBQUEsQ0FBQXBLLENBQUE7VUFBQSxJQUFBK0IsTUFBQSxDQUFBME0scUJBQUE7WUFBQSxJQUFBaE8sQ0FBQSxHQUFBc0IsTUFBQSxDQUFBME0scUJBQUEsQ0FBQXpPLENBQUE7WUFBQU0sQ0FBQSxLQUFBRyxDQUFBLEdBQUFBLENBQUEsQ0FBQWlPLE1BQUEsV0FBQXBPLENBQUE7Y0FBQSxPQUFBeUIsTUFBQSxDQUFBNE0sd0JBQUEsQ0FBQTNPLENBQUEsRUFBQU0sQ0FBQSxFQUFBc0IsVUFBQTtZQUFBLEtBQUF4QixDQUFBLENBQUEwRCxJQUFBLENBQUFmLEtBQUEsQ0FBQTNDLENBQUEsRUFBQUssQ0FBQTtVQUFBO1VBQUEsT0FBQUwsQ0FBQTtRQUFBO1FBQUEsU0FBQXdPLEVBQUE1TyxDQUFBO1VBQUEsU0FBQU0sQ0FBQSxNQUFBQSxDQUFBLEdBQUF1RCxTQUFBLENBQUFsQyxNQUFBLEVBQUFyQixDQUFBO1lBQUEsSUFBQUYsQ0FBQSxXQUFBeUQsU0FBQSxDQUFBdkQsQ0FBQSxJQUFBdUQsU0FBQSxDQUFBdkQsQ0FBQTtZQUFBQSxDQUFBLE9BQUFrTyxDQUFBLENBQUF6TSxNQUFBLENBQUEzQixDQUFBLE9BQUFrSCxPQUFBLFdBQUFoSCxDQUFBO2NBQUFDLENBQUEsQ0FBQVAsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUEsQ0FBQUUsQ0FBQTtZQUFBLEtBQUF5QixNQUFBLENBQUE4TSx5QkFBQSxHQUFBOU0sTUFBQSxDQUFBK00sZ0JBQUEsQ0FBQTlPLENBQUEsRUFBQStCLE1BQUEsQ0FBQThNLHlCQUFBLENBQUF6TyxDQUFBLEtBQUFvTyxDQUFBLENBQUF6TSxNQUFBLENBQUEzQixDQUFBLEdBQUFrSCxPQUFBLFdBQUFoSCxDQUFBO2NBQUF5QixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQSxFQUFBeUIsTUFBQSxDQUFBNE0sd0JBQUEsQ0FBQXZPLENBQUEsRUFBQUUsQ0FBQTtZQUFBO1VBQUE7VUFBQSxPQUFBTixDQUFBO1FBQUE7UUFBQSxTQUFBTyxFQUFBUCxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtVQUFBLFFBQUFFLENBQUEsYUFBQU4sQ0FBQTtZQUFBLElBQUFNLENBQUEsYUFBQU4sQ0FBQSxFQUFBTSxDQUFBO2NBQUEsZ0JBQUFpTyxDQUFBLENBQUF2TyxDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQTtjQUFBLElBQUFJLENBQUEsR0FBQUosQ0FBQSxDQUFBb0IsTUFBQSxDQUFBaUIsV0FBQTtjQUFBLGVBQUFqQyxDQUFBO2dCQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBa0MsSUFBQSxDQUFBdEMsQ0FBQTtnQkFBQSxnQkFBQXVPLENBQUEsQ0FBQTlOLENBQUEsVUFBQUEsQ0FBQTtnQkFBQSxVQUFBZ0IsU0FBQTtjQUFBO2NBQUEsT0FBQWMsTUFBQSxDQUFBdkMsQ0FBQTtZQUFBLEVBQUFBLENBQUE7WUFBQSxtQkFBQXVPLENBQUEsQ0FBQWpPLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO1VBQUEsRUFBQUEsQ0FBQSxNQUFBTixDQUFBLEdBQUErQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQTtZQUFBOEMsS0FBQSxFQUFBaEQsQ0FBQTtZQUFBd0IsVUFBQTtZQUFBQyxZQUFBO1lBQUFDLFFBQUE7VUFBQSxLQUFBOUIsQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsRUFBQUosQ0FBQTtRQUFBO1FBQUEsU0FBQStPLEVBQUEvTyxDQUFBLEVBQUFNLENBQUE7VUFBQSxTQUFBQSxDQUFBLElBQUFBLENBQUEsR0FBQU4sQ0FBQSxDQUFBMkIsTUFBQSxNQUFBckIsQ0FBQSxHQUFBTixDQUFBLENBQUEyQixNQUFBO1VBQUEsU0FBQXZCLENBQUEsTUFBQUssQ0FBQSxHQUFBK0csS0FBQSxDQUFBbEgsQ0FBQSxHQUFBRixDQUFBLEdBQUFFLENBQUEsRUFBQUYsQ0FBQSxJQUFBSyxDQUFBLENBQUFMLENBQUEsSUFBQUosQ0FBQSxDQUFBSSxDQUFBO1VBQUEsT0FBQUssQ0FBQTtRQUFBO1FDOWpCZixTQUFTdU8sRUFBQSxHQUNMO1FBR0osU0FBU0MsRUFBVWpQLENBQUE7VUFDZixPQUFxQixtQkFBVkEsQ0FBQSxHQUNPLFlBQVZBLENBQUEsSUFHVSxXQUFWQSxDQUFBLEdBS0RnRSxPQUFBLENBQVFoRSxDQUFBLENBQ25CO1FBQUE7UUFFQSxTQUFTa1AsRUFBQTtVQUFzQyxJQUFsQ2xQLENBQUEsR0FBbUI2RCxTQUFBLENBQUFsQyxNQUFBLG1CQUFBa0MsU0FBQSxNQUFBQSxTQUFBLE1BQUc7WUFDekJ2RCxDQUFBLEdBQVVGLENBQUEsQ0FBQW1HLENBQUEsQ0FBTzRJLEVBQUEsQ0FBR0MsVUFBQSxJQUFjO1VBRXhDLE9BQU8sR0FBQW5QLE1BQUEsQ0FBR0ssQ0FBQSxFQUFPLEtBQUFMLE1BQUEsQ0FBSUQsQ0FBQSxFQUFjbUwsT0FBQSxDQUFRLGlCQUFpQixNQUNoRTtRQUFBO1FBRUEsU0FBU2tFLEVBQVNyUCxDQUFBLEVBQWNNLENBQUE7VUFDNUIsU0FBZSxNQUFYQSxDQUFBLEVBQ0EsT0FBT04sQ0FBQTtVQUdYLEtBREEsSUFBTUksQ0FBQSxHQUF1QixJQUM3QkssQ0FBQSxNQUFBWixDQUFBLEdBQXdCa0MsTUFBQSxDQUFPcUksSUFBQSxDQUFLOUosQ0FBQSxHQUFPRyxDQUFBLEdBQUFaLENBQUEsQ0FBQThCLE1BQUEsRUFBQWxCLENBQUEsSUFBRTtZQUF4QyxJQUFNWCxDQUFBLEdBQVNELENBQUEsQ0FBQVksQ0FBQTtjQUNWVixDQUFBLEdBQWFPLENBQUEsQ0FBT1IsQ0FBQTtZQUNSLFFBQWRDLENBQUEsSUFDQUssQ0FBQSxDQUFXMEQsSUFBQSxDQUFLLEdBQUQ3RCxNQUFBLENBQUlILENBQUEsRUFBUyxLQUFBRyxNQUFBLENBQUlxUCxrQkFBQSxDQUFtQnZQLENBQUEsR0FFM0Q7VUFBQTtVQUNBLE9BQTBCLE1BQXRCSyxDQUFBLENBQVd1QixNQUFBLEdBQ0ozQixDQUFBLEdBRUpBLENBQUEsR0FBTyxNQUFNSSxDQUFBLENBQVcwSixJQUFBLENBQUssSUFDeEM7UUFBQTtRQUVBLFNBQVN5RixFQUFVdlAsQ0FBQTtVQUNmLE9BQU8sSUFBSXdQLE1BQUEsQ0FBTyxPQUFEdlAsTUFBQSxDQUFRRCxDQUFBLENBQVFtTCxPQUFBLENBQVEsT0FBTyxPQUFPQSxPQUFBLENBQVEsT0FBTyxpQkFBZSxPQUFNbkUsSUFBQSxDQUN2RjVHLENBQUEsQ0FBQW1HLENBQUEsQ0FBT3lGLFFBQUEsQ0FBU3lELElBQUEsQ0FFeEI7UUFBQTtRQUVBLFNBQVNDLEVBQW1CMVAsQ0FBQTtVQUN4QixRQUNLSSxDQUFBLENBQUFtRyxDQUFBLENBQU95RixRQUFBLENBQVMyRCxNQUFBLENBQ1p4SixJQUFBLEdBQ0FnRixPQUFBLENBQVEsYUFBYSxJQUNyQkcsS0FBQSxDQUFNLEtBQ05qRSxHQUFBLENBQUksVUFBQXJILENBQUE7WUFBSyxPQUFJQSxDQUFBLENBQU1tTCxPQUFBLENBQVEsT0FBTyxLQUFLRyxLQUFBLENBQU0sS0FBS2pFLEdBQUEsQ0FBSWtFLGtCQUFBLENBQW1CO1VBQUEsR0FFekVxRSxJQUFBLENBQUssVUFBQXRQLENBQUE7WUFBSyxRQUFBRixDQUFBLEdBQUxFLENBQUEsRUFBQUcsQ0FBQSxnQkFBQVQsQ0FBQTtjQUFBLElBQUF3SCxLQUFBLENBQUFDLE9BQUEsQ0FBQXpILENBQUEsVUFBQUEsQ0FBQTtZQUFBLEVBQUFJLENBQUEsZUFBQUosQ0FBQSxFQUFBTSxDQUFBO2NBQUEsSUFBQUYsQ0FBQSxXQUFBSixDQUFBLGdDQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBb0IsTUFBQSxDQUFBQyxRQUFBLEtBQUFyQixDQUFBO2NBQUEsWUFBQUksQ0FBQTtnQkFBQSxJQUFBSyxDQUFBO2tCQUFBWixDQUFBO2tCQUFBQyxDQUFBO2tCQUFBQyxDQUFBO2tCQUFBNkYsQ0FBQTtrQkFBQUMsQ0FBQTtrQkFBQUMsQ0FBQTtnQkFBQTtrQkFBQSxJQUFBaEcsQ0FBQSxJQUFBTSxDQUFBLEdBQUFBLENBQUEsQ0FBQWtDLElBQUEsQ0FBQXRDLENBQUEsR0FBQWtILElBQUEsUUFBQTVHLENBQUE7b0JBQUEsSUFBQXlCLE1BQUEsQ0FBQTNCLENBQUEsTUFBQUEsQ0FBQTtvQkFBQXlGLENBQUE7a0JBQUEsZ0JBQUFBLENBQUEsSUFBQXBGLENBQUEsR0FBQVgsQ0FBQSxDQUFBd0MsSUFBQSxDQUFBbEMsQ0FBQSxHQUFBZ0gsSUFBQSxNQUFBeEIsQ0FBQSxDQUFBOUIsSUFBQSxDQUFBckQsQ0FBQSxDQUFBMkMsS0FBQSxHQUFBd0MsQ0FBQSxDQUFBakUsTUFBQSxLQUFBckIsQ0FBQSxHQUFBdUYsQ0FBQTtnQkFBQSxTQUFBN0YsQ0FBQTtrQkFBQThGLENBQUEsT0FBQWpHLENBQUEsR0FBQUcsQ0FBQTtnQkFBQTtrQkFBQTtvQkFBQSxLQUFBNkYsQ0FBQSxZQUFBekYsQ0FBQSxDQUFBeVAsTUFBQSxLQUFBOVAsQ0FBQSxHQUFBSyxDQUFBLENBQUF5UCxNQUFBLElBQUE5TixNQUFBLENBQUFoQyxDQUFBLE1BQUFBLENBQUE7a0JBQUE7b0JBQUEsSUFBQStGLENBQUEsUUFBQWpHLENBQUE7a0JBQUE7Z0JBQUE7Z0JBQUEsT0FBQStGLENBQUE7Y0FBQTtZQUFBLEVBQUF4RixDQUFBLEVBQUFLLENBQUEsZUFBQVQsQ0FBQSxFQUFBTSxDQUFBO2NBQUEsSUFBQU4sQ0FBQTtnQkFBQSx1QkFBQUEsQ0FBQSxTQUFBK08sQ0FBQSxDQUFBL08sQ0FBQSxFQUFBTSxDQUFBO2dCQUFBLElBQUFGLENBQUEsTUFBQStELFFBQUEsQ0FBQTdCLElBQUEsQ0FBQXRDLENBQUEsRUFBQW9HLEtBQUE7Z0JBQUEsb0JBQUFoRyxDQUFBLElBQUFKLENBQUEsQ0FBQXNCLFdBQUEsS0FBQWxCLENBQUEsR0FBQUosQ0FBQSxDQUFBc0IsV0FBQSxDQUFBdUQsSUFBQSxhQUFBekUsQ0FBQSxjQUFBQSxDQUFBLEdBQUFvSCxLQUFBLENBQUFzSSxJQUFBLENBQUE5UCxDQUFBLG9CQUFBSSxDQUFBLCtDQUFBNEcsSUFBQSxDQUFBNUcsQ0FBQSxJQUFBMk8sQ0FBQSxDQUFBL08sQ0FBQSxFQUFBTSxDQUFBO2NBQUE7WUFBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7Y0FBQSxVQUFBZ0IsU0FBQTtZQUFBLEtBQUssTUFBYXpCLENBQUE7WUFBQSxJQUFBSSxDQUFBLEVBQUFLLENBQUk7VUFBQSxNQUFLLElBQUksRUFFakQ7UUFBQTtRQUlBLFNBQVNzUCxFQUFZL1AsQ0FBQSxFQUFlTSxDQUFBO1VBQ2hDLElBQUlGLENBQUEsR0FBWTtVQUVoQkosQ0FBQSxDQUFNc0gsT0FBQSxDQUFRLFVBQUE3RyxDQUFBO1lBQ1ZBLENBQUEsQ0FBSyxVQUFBQSxDQUFBO2NBQ0QsSUFBSUwsQ0FBQSxLQUFjSixDQUFBLENBQU0yQixNQUFBLEVBQXhCO2dCQUdBLElBQUlsQixDQUFBLEVBSUEsT0FIQUwsQ0FBQSxHQUFZSixDQUFBLENBQU0yQixNQUFBLE9BQ2xCckIsQ0FBQSxDQUFTRyxDQUFBO2dCQUFBLENBSWJMLENBQUEsSUFBYSxPQUNLSixDQUFBLENBQU0yQixNQUFBLElBQ3BCckIsQ0FBQSxFQVRKO2NBQUE7WUFXSixFQUNKO1VBQUEsRUFDSjtRQUFBO1FBK0JBLFNBQVMwUCxFQUFTaFEsQ0FBQSxFQUE0Qk0sQ0FBQTtVQUMxQyxJQUFRRyxDQUFBLEdBQXVCVCxDQUFBLENBQXZCaVEsR0FBQTtZQUFLcFEsQ0FBQSxHQUFrQkcsQ0FBQSxDQUFsQmtRLGFBQUE7VUFFYixJQUFJOVAsQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPNEksRUFBQSxDQUFHZ0IsVUFBQSxDQUFXMVAsQ0FBQSxHQUNyQkgsQ0FBQSxRQURKO1lBSUEsSUFBTVIsQ0FBQSxHQUFlRCxDQUFBLEtBQWtCTyxDQUFBLENBQUFtRyxDQUFBLENBQU8xRyxDQUFBO2NBR3hDRSxDQUFBLEdBQXNDLFdBQWhDMlAsQ0FBQSxDQUFtQixXQUFzQixLQUFLO2NBQ3BEOUosQ0FBQSxHQUFnQjtjQUVoQkMsQ0FBQSxHQUFTO2dCQUFFdUssWUFBQSxFQUFjcFEsQ0FBQSxDQUFTb1E7Y0FBQTtZQUVwQ3hLLENBQUEsQ0FBTTlCLElBQUEsQ0FBSyxVQUFBOUQsQ0FBQTtjQUFFLE9BQ1RtTyxDQUFBLENBQUFrQyxDQUFBLENBQWlCQyxVQUFBLENBQVdwQixDQUFBLENBQUlHLENBQUEsQ0FBUyx3QkFBRHBQLE1BQUEsQ0FBeUJRLENBQUEsRUFBR1IsTUFBQSxDQUFHRixDQUFBLEVBQUcsU0FBUThGLENBQUEsS0FBVSxHQUFNN0YsQ0FBQSxDQUFHO1lBQUEsSUFHN0c0RixDQUFBLENBQU05QixJQUFBLENBQUssVUFBQTlELENBQUE7Y0FBRSxPQUFJbU8sQ0FBQSxDQUFBa0MsQ0FBQSxDQUFpQkUsTUFBQSxDQUFPckIsQ0FBQSxDQUFJRyxDQUFBLENBQVMseUJBQURwUCxNQUFBLENBQTBCUSxDQUFBLEVBQUdSLE1BQUEsQ0FBR0YsQ0FBQSxFQUFHLFFBQU84RixDQUFBLElBQVU3RixDQUFBLENBQUc7WUFBQSxJQUV4R0YsQ0FBQSxJQUNBOEYsQ0FBQSxDQUFNOUIsSUFBQSxDQUNGLFVBQUE5RCxDQUFBO2NBQUUsT0FDRW1PLENBQUEsQ0FBQWtDLENBQUEsQ0FBaUJDLFVBQUEsQ0FDYnBCLENBQUEsQ0FBSUcsQ0FBQSxDQUFTLDhCQUFEcFAsTUFBQSxDQUErQkosQ0FBQSxFQUFhSSxNQUFBLENBQUdGLENBQUEsRUFBRyxTQUFROEYsQ0FBQSxLQUN0RSxHQUNBN0YsQ0FBQSxDQUNIO1lBQUEsR0FDTCxVQUFBQSxDQUFBO2NBQUUsT0FDRW1PLENBQUEsQ0FBQWtDLENBQUEsQ0FBaUJFLE1BQUEsQ0FDYnJCLENBQUEsQ0FBSUcsQ0FBQSxDQUFTLCtCQUFEcFAsTUFBQSxDQUFnQ0osQ0FBQSxFQUFhSSxNQUFBLENBQUdGLENBQUEsRUFBRyxRQUFPOEYsQ0FBQSxJQUN0RTdGLENBQUEsQ0FDSDtZQUFBLElBSWIrUCxDQUFBLENBQVluSyxDQUFBLEVBQU90RixDQUFBLENBL0JuQjtVQUFBO1FBZ0NKO1FBRUEsU0FBU2tRLEVBQ0x4USxDQUFBLEVBQ0FNLENBQUEsRUFDQUcsQ0FBQTtVQUNJLElBQUFaLENBQUE7VUFBQSxDQUUwQyxVQUQxQkEsQ0FBQSxHQUNoQk8sQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPNEksRUFBQSxDQUFHZ0IsVUFBQSxDQUFXN1AsQ0FBQSxDQUFpQjJQLEdBQUEsV0FBSSxNQUFBcFEsQ0FBQSxHQUFBQSxDQUFBLElBQUksR0FBQXFPLENBQUEsQ0FBQWpJLEVBQUEsRUFBTyxvQkFBRGhHLE1BQUEsQ0FBcUJLLENBQUEsQ0FBaUIyUCxHQUFBLEVBQUcsaUJBQ2xGalEsQ0FBQSxFQUFhTSxDQUFBLEVBQ3ZCbUosSUFBQSxDQUFLLFVBQUF6SixDQUFBO1lBQ0YsSUFBTU0sQ0FBQSxHQUFhTixDQUFBLENBQUt5USxVQUFBLEtBQWMsR0FBQW5DLENBQUEsQ0FBQTlDLENBQUEsRUFBdUJ4TCxDQUFBO1lBRTdEUyxDQUFBLENBQVMsTUFBTUgsQ0FBQSxDQUNuQjtVQUFBLEdBQUVvUSxLQUFBLENBQ0tqUSxDQUFBLENBQ2Y7UUFBQTtRQXVCQSxTQUFTNFAsRUFBb0JyUSxDQUFBO1VBQ3pCLElBQXFCLFFBQWpCQSxDQUFBLEVBSUosT0FBT0ksQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPdkcsQ0FBQSxLQUFrQkksQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPdkcsQ0FBQSxFQUFjWSxPQUN6RDtRQUFBO1FBRUEsU0FBUytQLEVBQ0wzUSxDQUFBLEVBQ0FNLENBQUE7VUFFSSxJQUFBRyxDQUFBO1lBQUFaLENBQUE7WUFESkMsQ0FBQSxHQUF5QytELFNBQUEsQ0FBQWxDLE1BQUEsbUJBQUFrQyxTQUFBLE1BQUFBLFNBQUEsTUFBR21MLENBQUE7WUFFeENqUCxDQUFBLEdBQVE7WUFDSjZGLENBQUEsR0FBZ0J0RixDQUFBLENBQWhCSixFQUFBO1lBQUkyRixDQUFBLEdBQVl2RixDQUFBLENBQVpILE9BQUE7VUFZWixJQVZLb1AsQ0FBQSxDQUFVbEIsQ0FBQSxDQUFBak8sQ0FBQSxDQUFld1EsYUFBQSxJQUVsQnZDLENBQUEsQ0FBQWpPLENBQUEsQ0FBZXlRLFVBQUEsR0FFZmhMLENBQUEsR0FFQUQsQ0FBQSxLQUNSN0YsQ0FBQSxHQUFRLElBQUlrRixLQUFBLENBQU0sNkJBRmxCbEYsQ0FBQSxHQUFRLElBQUlrRixLQUFBLENBQU0saUNBRmxCbEYsQ0FBQSxHQUFRLElBQUlrRixLQUFBLENBQU0sMEJBRmxCbEYsQ0FBQSxHQUFRLElBQUlrRixLQUFBLENBQU0scUJBU2xCbEYsQ0FBQSxFQUNBRCxDQUFBLENBQVNDLENBQUEsT0FEYjtZQUtBLElBQU0rRixDQUFBLEdBQW1DLFVBQXZCckYsQ0FBQSxHQUFHSCxDQUFBLENBQVE4UCxZQUFBLFVBQVksTUFBQTNQLENBQUEsR0FBQUEsQ0FBQSxHQUFJaVAsQ0FBQSxDQUFtQjtjQUMxRDNKLENBQUEsR0FBaUJzSixDQUFBLENBQVNILENBQUEsRUFBSSxHQUFBZCxDQUFBLENBQUE3TixDQUFBLEVBQXNCO2dCQUFFTCxFQUFBLEVBQUkwRixDQUFBO2dCQUFJekYsT0FBQSxFQUFTMEY7Y0FBQSxLQUFhO2dCQUN0RnVLLFlBQUEsRUFBY3RLO2NBQUE7Y0FHWnpGLENBQUEsR0FBOEI7Z0JBQUV1SyxNQUFBLEVBQVE7Y0FBQTtZQUM5QyxJQUE4QixRQUExQnRLLENBQUEsQ0FBUXdRLGNBQUEsSUFBMEQsa0NBQTNCeFEsQ0FBQSxDQUFRd1EsY0FBQSxFQUMvQ3pRLENBQUEsQ0FBZXNLLFdBQUEsR0FBYyxlQUMxQixJQUFJLGFBQWFySyxDQUFBLENBQVF3USxjQUFBLElBQW9ELFFBQWxDeFEsQ0FBQSxDQUFRd1EsY0FBQSxDQUFlQyxPQUFBLEVBQXNCO2NBQUEsSUFBQS9LLENBQUE7Y0FDM0YzRixDQUFBLENBQWVzSyxXQUFBLEdBQWMsUUFDN0J0SyxDQUFBLENBQWVnSixPQUFBLEdBQWdDLFVBQXpCckQsQ0FBQSxHQUFHM0YsQ0FBQSxDQUFlZ0osT0FBQSxVQUFPLE1BQUFyRCxDQUFBLEdBQUFBLENBQUEsR0FBSSxDQUFDLEdBQ3BEM0YsQ0FBQSxDQUFlZ0osT0FBQSxDQUF1QjJILGFBQUEsR0FBSSxZQUFIL1EsTUFBQSxDQUFlSyxDQUFBLENBQVF3USxjQUFBLENBQWVDLE9BQUEsQ0FDakY7WUFBQSxPQUNJMVEsQ0FBQSxDQUFlc0ssV0FBQSxHQUFjO1lBQUEsQ0FFRixVQUFoQjlLLENBQUEsR0FBR1MsQ0FBQSxDQUFRd04sS0FBQSxVQUFLLE1BQUFqTyxDQUFBLEdBQUFBLENBQUEsR0FBSXVNLENBQUEsRUFFekJyRyxDQUFBLEVBQWdCMUYsQ0FBQSxFQUNyQm9KLElBQUEsQ0FBSyxVQUFBekosQ0FBQTtjQUFDLE9BQUlBLENBQUEsQ0FBRStKLElBQUEsRUFBTTtZQUFBLEdBQ2xCTixJQUFBLENBQUssVUFBQ2hKLENBQUE7Y0FBNkMsSUFBQVosQ0FBQTtnQkFBQUUsQ0FBQTtnQkFBQTZGLENBQUE7Z0JBQUFDLENBQUE7Z0JBQUFFLENBQUE7Z0JBQzFDMUYsQ0FBQSxHQUFNSSxDQUFBLENBQWdCd1AsR0FBQTtnQkFDdEJqSyxDQUFBLEdBQWdCdkYsQ0FBQSxDQUFnQnlQLGFBQUE7Z0JBQ2hDL0gsQ0FBQSxHQUFnQnlHLENBQUEsQ0FBQUEsQ0FBQSxDQUFBQSxDQUFBO2tCQUNsQmlDLFVBQUEsRUFBWXhDLENBQUEsQ0FBQWpPLENBQUEsQ0FBZXlRLFVBQUE7a0JBQzNCSSxjQUFBLEVBQWdCNUMsQ0FBQSxDQUFBak8sQ0FBQSxDQUFlNlEsY0FBQTtrQkFDL0JDLFlBQUEsRUFBYzdDLENBQUEsQ0FBQWpPLENBQUEsQ0FBZThRLFlBQUE7a0JBQzdCQyxtQkFBQSxFQUFxQjlDLENBQUEsQ0FBQWpPLENBQUEsQ0FBZStRLG1CQUFBO2tCQUNwQ0MscUJBQUEsRUFBdUIvQyxDQUFBLENBQUFqTyxDQUFBLENBQWVnUixxQkFBQTtrQkFDdENDLFlBQUEsRUFBY2hELENBQUEsQ0FBQWpPLENBQUEsQ0FBZWlSLFlBQUE7a0JBQzdCVCxhQUFBLEVBQWV2QyxDQUFBLENBQUFqTyxDQUFBLENBQWV3USxhQUFBO2tCQUM5QlUscUJBQUEsRUFBb0QsVUFBL0J6UixDQUFBLEdBQUVTLENBQUEsQ0FBUWdSLHFCQUFBLFVBQXFCLE1BQUF6UixDQUFBLElBQUFBLENBQUE7a0JBQ3BEMFIsa0JBQUEsRUFBb0JqUixDQUFBLENBQVFpUjtnQkFBQSxHQUN6QmpSLENBQUEsR0FDQUcsQ0FBQSxHQUFlO2tCQUNsQndQLEdBQUEsRUFBSzVQLENBQUE7a0JBQ0w2UCxhQUFBLEVBQWVsSyxDQUFBO2tCQUNmd0wsZUFBQSxFQUF3QyxVQUF6QnpSLENBQUEsR0FBRU8sQ0FBQSxDQUFRa1IsZUFBQSxVQUFlLE1BQUF6UixDQUFBLEdBQUFBLENBQUEsR0FBSVUsQ0FBQSxDQUFnQitRLGVBQUE7a0JBQzVEQyxtQkFBQSxFQUFnRCxVQUE3QjdMLENBQUEsR0FBRXRGLENBQUEsQ0FBUW1SLG1CQUFBLFVBQW1CLE1BQUE3TCxDQUFBLElBQUFBLENBQUE7a0JBQ2hEOEwscUJBQUEsRUFBb0QsVUFBL0I3TCxDQUFBLEdBQUV2RixDQUFBLENBQVFvUixxQkFBQSxVQUFxQixNQUFBN0wsQ0FBQSxJQUFBQSxDQUFBO2tCQUNwRDhMLDRCQUFBLEVBQWtFLFVBQXRDNUwsQ0FBQSxHQUFFekYsQ0FBQSxDQUFRcVIsNEJBQUEsVUFBNEIsTUFBQTVMLENBQUEsSUFBQUEsQ0FBQTtrQkFDbEVxSyxZQUFBLEVBQWN0SztnQkFBQTtjQUdsQmtLLENBQUEsQ0FDSTtnQkFDSUMsR0FBQSxFQUFLOUgsQ0FBQSxDQUFpQjhILEdBQUE7Z0JBQ3RCQyxhQUFBLEVBQWUvSCxDQUFBLENBQWlCK0gsYUFBQTtnQkFDaENFLFlBQUEsRUFBY2pJLENBQUEsQ0FBaUJpSSxZQUFBO2dCQUMvQndCLEtBQUEsRUFBT3pKLENBQUEsQ0FBaUJ5SjtjQUFBLEdBRTVCLFVBQUFuUixDQUFBO2dCQUNJLEtBQUlBLENBQUEsSUFBY0wsQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPNEksRUFBQSxDQUFHZ0IsVUFBQSxDQUFXOVAsQ0FBQSxHQUF2QztrQkFJQSxJQUFNUixDQUFBLEdBQVN3USxDQUFBLENBQW9CckssQ0FBQTtrQkFFbkN3SyxDQUFBLENBQ0l4USxDQUFBLEVBQVc0TyxDQUFBLENBQUFBLENBQUEsS0FFSnpHLENBQUEsR0FBZ0I7b0JBQ25CMEosWUFBQSxFQUFjdlIsQ0FBQSxDQUFRdVIsWUFBQTtvQkFDdEJDLFVBQUEsRUFBWWpTO2tCQUFBLElBRWhCQyxDQUFBLENBVko7Z0JBQUEsT0FGSUEsQ0FBQSxDQUFTLElBQUltRixLQUFBLENBQU0sNENBQURoRixNQUFBLENBQTZDSSxDQUFBLEdBY3ZFO2NBQUEsRUFFUjtZQUFBLEdBQUVxUSxLQUFBLENBQ0s1USxDQUFBLENBdkVYO1VBQUE7UUF3RUo7UUFBQUUsQ0FBQSxHQUFBSSxDQUFBLENBQUFJLEdBQUEsQ0FBQVIsQ0FBQSxJQUFBaU8sQ0FBQSx5QkFBQXZOLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQXNOLENBQUEsQ0FBQWpPLENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQTtRQUVBLElBUzhCa1IsQ0FBQTtVQVRrQkMsQ0FBQTtVQUExQ0MsQ0FBQSxHQUE2QztZQUMvQ0MsS0FBQSxFQUFPdkIsQ0FBQTtZQUNQUixVQUFBLEVBQVksQ0FBQztZQUNiZ0Msc0JBQUEsRUFBd0JsRCxDQUFBLENBQVU7WUFDbENHLFVBQUEsRUFBWTtVQUFBO1FBR2hCaFAsQ0FBQSxDQUFBbUcsQ0FBQSxDQUFPNEksRUFBQSxHQUFLOEMsQ0FBQSxHQUVrQkYsQ0FBQSx5QkFBQXJSLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsZUFBQW1SLENBQUEsQ0FBQWpSLFFBQUEsQ0E1U3JCa08sQ0FBQSxFQUFlLDRHQUFBK0MsQ0FBQSxDQUFBalIsUUFBQSxDQUlmbU8sQ0FBQSxFQUFTLHNHQUFBOEMsQ0FBQSxDQUFBalIsUUFBQSxDQWFUb08sQ0FBQSxFQUFHLGdHQUFBNkMsQ0FBQSxDQUFBalIsUUFBQSxDQU1IdU8sQ0FBQSxFQUFRLHFHQUFBMEMsQ0FBQSxDQUFBalIsUUFBQSxDQWlCUnlPLENBQUEsRUFBUyxzR0FBQXdDLENBQUEsQ0FBQWpSLFFBQUEsQ0FNVDRPLENBQUEsRUFBa0IsK0dBQUFxQyxDQUFBLENBQUFqUixRQUFBLENBY2xCaVAsQ0FBQSxFQUFXLHdHQUFBZ0MsQ0FBQSxDQUFBalIsUUFBQSxDQTZCYixVQUEyQ2QsQ0FBQSxFQUFjTSxDQUFBO1VBQzVEO1lBQUksSUFBQUYsQ0FBQTtjQUFBSyxDQUFBO2NBQUFaLENBQUE7Y0FBQUMsQ0FBQTtjQUFBQyxDQUFBO2NBQUE2RixDQUFBO2NBQUFDLENBQUE7Y0FBQUMsQ0FBQTtjQUFBQyxDQUFBO2NBQUExRixDQUFBO2NBQ00yRixDQUFBLEdBQWNoRyxDQUFBLENBQ2ZzTCxLQUFBLENBQU0sS0FDTmxGLEtBQUEsQ0FBTSxHQUFHLEdBQ1RpQixHQUFBLENBQUksVUFBQXJILENBQUE7Z0JBQUMsT0FBSW9TLFFBQUEsQ0FBU3BTLENBQUEsRUFBRyxHQUFHO2NBQUE7Y0FDdkJtSSxDQUFBLEdBQWU3SCxDQUFBLENBQ2hCZ0wsS0FBQSxDQUFNLEtBQ05sRixLQUFBLENBQU0sR0FBRyxHQUNUaUIsR0FBQSxDQUFJLFVBQUFySCxDQUFBO2dCQUFDLE9BQUlvUyxRQUFBLENBQVNwUyxDQUFBLEVBQUcsR0FBRztjQUFBO1lBQzdCLFFBQ21CLFVBQWZJLENBQUEsR0FBQzRGLENBQUEsQ0FBWSxZQUFFLE1BQUE1RixDQUFBLEdBQUFBLENBQUEsR0FBSSxNQUFxQixVQUFwQkssQ0FBQSxHQUFLMEgsQ0FBQSxDQUFhLFlBQUUsTUFBQTFILENBQUEsR0FBQUEsQ0FBQSxHQUFJLE9BQzVCLFVBQWZaLENBQUEsR0FBQ21HLENBQUEsQ0FBWSxZQUFFLE1BQUFuRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxRQUF1QixVQUF0QkMsQ0FBQSxHQUFPcUksQ0FBQSxDQUFhLFlBQUUsTUFBQXJJLENBQUEsR0FBQUEsQ0FBQSxHQUFJLFFBQzNCLFVBQWZDLENBQUEsR0FBQ2lHLENBQUEsQ0FBWSxZQUFFLE1BQUFqRyxDQUFBLEdBQUFBLENBQUEsR0FBSSxNQUFxQixVQUFwQjZGLENBQUEsR0FBS3VDLENBQUEsQ0FBYSxZQUFFLE1BQUF2QyxDQUFBLEdBQUFBLENBQUEsR0FBSSxPQUN6QixVQUFmQyxDQUFBLEdBQUNHLENBQUEsQ0FBWSxZQUFFLE1BQUFILENBQUEsR0FBQUEsQ0FBQSxHQUFJLFFBQXVCLFVBQXRCQyxDQUFBLEdBQU9xQyxDQUFBLENBQWEsWUFBRSxNQUFBckMsQ0FBQSxHQUFBQSxDQUFBLEdBQUksT0FDNUIsVUFBZkMsQ0FBQSxHQUFDQyxDQUFBLENBQVksWUFBRSxNQUFBRCxDQUFBLEdBQUFBLENBQUEsR0FBSSxPQUFzQixVQUFyQjFGLENBQUEsR0FBTThILENBQUEsQ0FBYSxZQUFFLE1BQUE5SCxDQUFBLEdBQUFBLENBQUEsR0FBSSxHQUVqRTtVQUFBLENBQUUsUUFBQUwsQ0FBQTtZQUNFLFFBQU8sQ0FDWDtVQUFBO1FBQ0osR0FwQmlELDhIQUFBK1IsQ0FBQSxDQUFBalIsUUFBQSxDQXNCeENrUCxDQUFBLEVBQVEscUdBQUErQixDQUFBLENBQUFqUixRQUFBLENBd0NSMFAsQ0FBQSxFQUFVLHVHQUFBdUIsQ0FBQSxDQUFBalIsUUFBQSxDQXFDVnVQLENBQUEsRUFBbUIsZ0hBQUEwQixDQUFBLENBQUFqUixRQUFBLENBUW5CNlAsQ0FBQSxFQUFLLGtHQUFBb0IsQ0FBQSxDQUFBalIsUUFBQSxDQStGUm1SLENBQUEsRUFBMEMsaUhBQUFELENBQUEseUJBQUF0UixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFpUixDQUFBLENBQUFoUyxDQUFBO01BQUE7TUFBQSxlQUFBQSxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQUFBLElBQUFLLENBQUE7UUNyV2hELFNBQVNaLEVBQVVHLENBQUE7VUFDZixPQUFxQixtQkFBVkEsQ0FBQSxHQUNPLFlBQVZBLENBQUEsSUFHVSxXQUFWQSxDQUFBLEdBS0RnRSxPQUFBLENBQVFoRSxDQUFBLENBQ25CO1FBQUE7UUFBQUksQ0FBQSxDQUFBQyxDQUFBLENBQUFDLENBQUE7VUFBQUYsQ0FBQSxXQUFBQSxDQUFBO1lBQUEsT0FBQXdGLENBQUE7VUFBQTtRQUFBLElBQUE1RixDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUE7UUFFTyxJQVFMZixDQUFBO1VBUnlCQyxDQUFBO1VBQWQ2RixDQUFBLEdBQWlCO1lBQzFCaUwsVUFBQSxFQUFZaFIsQ0FBQSxDQUFVO1lBQ3RCb1IsY0FBQSxFQUFnQjtZQUNoQkMsWUFBQSxFQUFjclIsQ0FBQSxDQUFVO1lBQ3hCc1IsbUJBQUEsRUFBcUJ0UixDQUFBLENBQVU7WUFDL0J1UixxQkFBQSxFQUF1QnZSLENBQUEsQ0FBVTtZQUNqQ3dSLFlBQUEsRUFBYztZQUNkVCxhQUFBLEVBQWU7VUFBQTtRQUFBLENBQ2pCOVEsQ0FBQSx5QkFBQVksb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxlQUFBZCxDQUFBLENBQUFnQixRQUFBLENBckJPakIsQ0FBQSxFQUFTLDhHQUFBQyxDQUFBLENBQUFnQixRQUFBLENBYUw4RSxDQUFBLEVBQWMscUhBQUE3RixDQUFBLHlCQUFBVyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFoQixDQUFBLENBQUFDLENBQUE7TUFBQTtNQUFBLGVBQUFnQixNQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBO1FBQUFBLG1CQUFBLENBQUFiLENBQUEsQ0FBQVksbUJBQUE7VUFBQXVLLENBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUE2RyxzQkFBQTtVQUFBO1FBQUE7UUFBQSxJQUFBQywyQ0FBQSxHQUFBcFIsbUJBQUE7VUFBQVAsV0FBQTtRQUFBLFNBQUFRLFFBQUFuQixDQUFBO1VBQUEsT0FBQW1CLE9BQUEsd0JBQUFDLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBckIsQ0FBQTtZQUFBLGNBQUFBLENBQUE7VUFBQSxjQUFBQSxDQUFBO1lBQUEsT0FBQUEsQ0FBQSx5QkFBQW9CLE1BQUEsSUFBQXBCLENBQUEsQ0FBQXNCLFdBQUEsS0FBQUYsTUFBQSxJQUFBcEIsQ0FBQSxLQUFBb0IsTUFBQSxDQUFBRyxTQUFBLHFCQUFBdkIsQ0FBQTtVQUFBLEdBQUFtQixPQUFBLENBQUFuQixDQUFBO1FBQUE7UUFBQSxTQUFBdVMsb0JBQUE7VUNaM0JBLG1CQUFBLFlBQUFBLENBQUE7WUFBQSxPQUFBalMsQ0FBQTtVQUFBO1VBQUEsSUFBQU4sQ0FBQTtZQUFBTSxDQUFBO1lBQUFGLENBQUEsR0FBQTJCLE1BQUEsQ0FBQVIsU0FBQTtZQUFBZCxDQUFBLEdBQUFMLENBQUEsQ0FBQStKLGNBQUE7WUFBQXRLLENBQUEsR0FBQWtDLE1BQUEsQ0FBQUMsY0FBQSxjQUFBaEMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQUosQ0FBQSxDQUFBTSxDQUFBLElBQUFGLENBQUEsQ0FBQWdELEtBQUE7WUFBQTtZQUFBdEQsQ0FBQSx3QkFBQXNCLE1BQUEsR0FBQUEsTUFBQTtZQUFBckIsQ0FBQSxHQUFBRCxDQUFBLENBQUF1QixRQUFBO1lBQUF1RSxDQUFBLEdBQUE5RixDQUFBLENBQUEwUyxhQUFBO1lBQUEzTSxDQUFBLEdBQUEvRixDQUFBLENBQUEyUyxXQUFBO1VBQUEsU0FBQTNNLEVBQUE5RixDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtZQUFBLE9BQUEyQixNQUFBLENBQUFDLGNBQUEsQ0FBQWhDLENBQUEsRUFBQU0sQ0FBQTtjQUFBOEMsS0FBQSxFQUFBaEQsQ0FBQTtjQUFBd0IsVUFBQTtjQUFBQyxZQUFBO2NBQUFDLFFBQUE7WUFBQSxJQUFBOUIsQ0FBQSxDQUFBTSxDQUFBO1VBQUE7VUFBQTtZQUFBd0YsQ0FBQTtVQUFBLFNBQUE5RixDQUFBO1lBQUE4RixDQUFBLFlBQUE0TSxDQUFBMVMsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7Y0FBQSxPQUFBSixDQUFBLENBQUFNLENBQUEsSUFBQUYsQ0FBQTtZQUFBO1VBQUE7VUFBQSxTQUFBMkYsRUFBQS9GLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7WUFBQSxJQUFBWCxDQUFBLEdBQUFRLENBQUEsSUFBQUEsQ0FBQSxDQUFBaUIsU0FBQSxZQUFBaUosQ0FBQSxHQUFBbEssQ0FBQSxHQUFBa0ssQ0FBQTtjQUFBekssQ0FBQSxHQUFBZ0MsTUFBQSxDQUFBb0IsTUFBQSxDQUFBckQsQ0FBQSxDQUFBeUIsU0FBQTtjQUFBcUUsQ0FBQSxPQUFBNEksQ0FBQSxDQUFBL04sQ0FBQTtZQUFBLE9BQUFaLENBQUEsQ0FBQUUsQ0FBQTtjQUFBcUQsS0FBQSxFQUFBZ0wsQ0FBQSxDQUFBcE8sQ0FBQSxFQUFBSSxDQUFBLEVBQUF3RixDQUFBO1lBQUEsSUFBQTdGLENBQUE7VUFBQTtVQUFBLFNBQUFNLEVBQUFMLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1lBQUE7Y0FBQTtnQkFBQWtKLElBQUE7Z0JBQUFxSixHQUFBLEVBQUEzUyxDQUFBLENBQUFzQyxJQUFBLENBQUFoQyxDQUFBLEVBQUFGLENBQUE7Y0FBQTtZQUFBLFNBQUFKLENBQUE7Y0FBQTtnQkFBQXNKLElBQUE7Z0JBQUFxSixHQUFBLEVBQUEzUztjQUFBO1lBQUE7VUFBQTtVQUFBTSxDQUFBLENBQUFzUyxJQUFBLEdBQUE3TSxDQUFBO1VBQUEsSUFBQUMsQ0FBQTtZQUFBbUMsQ0FBQTtZQUFBRyxDQUFBO1lBQUFJLENBQUE7WUFBQTZCLENBQUE7VUFBQSxTQUFBQyxFQUFBO1VBQUEsU0FBQWpFLEVBQUE7VUFBQSxTQUFBaUYsRUFBQTtVQUFBLElBQUFNLENBQUE7VUFBQWhHLENBQUEsQ0FBQWdHLENBQUEsRUFBQS9MLENBQUE7WUFBQTtVQUFBO1VBQUEsSUFBQWtNLENBQUEsR0FBQWxLLE1BQUEsQ0FBQXdDLGNBQUE7WUFBQTZILENBQUEsR0FBQUgsQ0FBQSxJQUFBQSxDQUFBLENBQUFBLENBQUEsQ0FBQTJDLENBQUE7VUFBQXhDLENBQUEsSUFBQUEsQ0FBQSxLQUFBaE0sQ0FBQSxJQUFBSyxDQUFBLENBQUE2QixJQUFBLENBQUE4SixDQUFBLEVBQUFyTSxDQUFBLE1BQUErTCxDQUFBLEdBQUFNLENBQUE7VUFBQSxJQUFBNkIsQ0FBQSxHQUFBekMsQ0FBQSxDQUFBakssU0FBQSxHQUFBaUosQ0FBQSxDQUFBakosU0FBQSxHQUFBUSxNQUFBLENBQUFvQixNQUFBLENBQUEySSxDQUFBO1VBQUEsU0FBQW9DLEVBQUFsTyxDQUFBO1lBQUEsNEJBQUFzSCxPQUFBLFdBQUFoSCxDQUFBO2NBQUF3RixDQUFBLENBQUE5RixDQUFBLEVBQUFNLENBQUEsWUFBQU4sQ0FBQTtnQkFBQSxZQUFBNlMsT0FBQSxDQUFBdlMsQ0FBQSxFQUFBTixDQUFBO2NBQUE7WUFBQTtVQUFBO1VBQUEsU0FBQW1PLEVBQUFuTyxDQUFBLEVBQUFNLENBQUE7WUFBQSxTQUFBRixFQUFBUCxDQUFBLEVBQUFDLENBQUEsRUFBQUMsQ0FBQSxFQUFBNkYsQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQXhGLENBQUEsQ0FBQUwsQ0FBQSxDQUFBSCxDQUFBLEdBQUFHLENBQUEsRUFBQUYsQ0FBQTtjQUFBLGdCQUFBK0YsQ0FBQSxDQUFBeUQsSUFBQTtnQkFBQSxJQUFBeEQsQ0FBQSxHQUFBRCxDQUFBLENBQUE4TSxHQUFBO2tCQUFBNU0sQ0FBQSxHQUFBRCxDQUFBLENBQUExQyxLQUFBO2dCQUFBLE9BQUEyQyxDQUFBLGdCQUFBNUUsT0FBQSxDQUFBNEUsQ0FBQSxLQUFBdEYsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBeUQsQ0FBQSxlQUFBekYsQ0FBQSxDQUFBaUosT0FBQSxDQUFBeEQsQ0FBQSxDQUFBK00sT0FBQSxFQUFBckosSUFBQSxXQUFBekosQ0FBQTtrQkFBQUksQ0FBQSxTQUFBSixDQUFBLEVBQUFELENBQUEsRUFBQTZGLENBQUE7Z0JBQUEsYUFBQTVGLENBQUE7a0JBQUFJLENBQUEsVUFBQUosQ0FBQSxFQUFBRCxDQUFBLEVBQUE2RixDQUFBO2dCQUFBLEtBQUF0RixDQUFBLENBQUFpSixPQUFBLENBQUF4RCxDQUFBLEVBQUEwRCxJQUFBLFdBQUF6SixDQUFBO2tCQUFBOEYsQ0FBQSxDQUFBMUMsS0FBQSxHQUFBcEQsQ0FBQSxFQUFBRCxDQUFBLENBQUErRixDQUFBO2dCQUFBLGFBQUE5RixDQUFBO2tCQUFBLE9BQUFJLENBQUEsVUFBQUosQ0FBQSxFQUFBRCxDQUFBLEVBQUE2RixDQUFBO2dCQUFBO2NBQUE7Y0FBQUEsQ0FBQSxDQUFBQyxDQUFBLENBQUE4TSxHQUFBO1lBQUE7WUFBQSxJQUFBN1MsQ0FBQTtZQUFBRCxDQUFBO2NBQUF1RCxLQUFBLFdBQUFBLENBQUFwRCxDQUFBLEVBQUFTLENBQUE7Z0JBQUEsU0FBQVosRUFBQTtrQkFBQSxXQUFBUyxDQUFBLFdBQUFBLENBQUEsRUFBQVQsQ0FBQTtvQkFBQU8sQ0FBQSxDQUFBSixDQUFBLEVBQUFTLENBQUEsRUFBQUgsQ0FBQSxFQUFBVCxDQUFBO2tCQUFBO2dCQUFBO2dCQUFBLE9BQUFDLENBQUEsR0FBQUEsQ0FBQSxHQUFBQSxDQUFBLENBQUEySixJQUFBLENBQUE1SixDQUFBLEVBQUFBLENBQUEsSUFBQUEsQ0FBQTtjQUFBO1lBQUE7VUFBQTtVQUFBLFNBQUF1TyxFQUFBOU4sQ0FBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7WUFBQSxJQUFBWixDQUFBLEdBQUFtRyxDQUFBO1lBQUEsaUJBQUFsRyxDQUFBLEVBQUFDLENBQUE7Y0FBQSxJQUFBRixDQUFBLEtBQUF5SSxDQUFBLFFBQUFyRCxLQUFBO2NBQUEsSUFBQXBGLENBQUEsS0FBQTZJLENBQUE7Z0JBQUEsZ0JBQUE1SSxDQUFBLFFBQUFDLENBQUE7Z0JBQUE7a0JBQUFxRCxLQUFBLEVBQUFwRCxDQUFBO2tCQUFBb0gsSUFBQTtnQkFBQTtjQUFBO2NBQUEsS0FBQTNHLENBQUEsQ0FBQW1LLE1BQUEsR0FBQTlLLENBQUEsRUFBQVcsQ0FBQSxDQUFBa1MsR0FBQSxHQUFBNVMsQ0FBQTtnQkFBQSxJQUFBNkYsQ0FBQSxHQUFBbkYsQ0FBQSxDQUFBc1MsUUFBQTtnQkFBQSxJQUFBbk4sQ0FBQTtrQkFBQSxJQUFBQyxDQUFBLEdBQUF3SSxDQUFBLENBQUF6SSxDQUFBLEVBQUFuRixDQUFBO2tCQUFBLElBQUFvRixDQUFBO29CQUFBLElBQUFBLENBQUEsS0FBQTBFLENBQUE7b0JBQUEsT0FBQTFFLENBQUE7a0JBQUE7Z0JBQUE7Z0JBQUEsZUFBQXBGLENBQUEsQ0FBQW1LLE1BQUEsRUFBQW5LLENBQUEsQ0FBQXVTLElBQUEsR0FBQXZTLENBQUEsQ0FBQXdTLEtBQUEsR0FBQXhTLENBQUEsQ0FBQWtTLEdBQUEsc0JBQUFsUyxDQUFBLENBQUFtSyxNQUFBO2tCQUFBLElBQUEvSyxDQUFBLEtBQUFtRyxDQUFBLFFBQUFuRyxDQUFBLEdBQUE2SSxDQUFBLEVBQUFqSSxDQUFBLENBQUFrUyxHQUFBO2tCQUFBbFMsQ0FBQSxDQUFBeVMsaUJBQUEsQ0FBQXpTLENBQUEsQ0FBQWtTLEdBQUE7Z0JBQUEsb0JBQUFsUyxDQUFBLENBQUFtSyxNQUFBLElBQUFuSyxDQUFBLENBQUEwUyxNQUFBLFdBQUExUyxDQUFBLENBQUFrUyxHQUFBO2dCQUFBOVMsQ0FBQSxHQUFBeUksQ0FBQTtnQkFBQSxJQUFBeEMsQ0FBQSxHQUFBekYsQ0FBQSxDQUFBQyxDQUFBLEVBQUFGLENBQUEsRUFBQUssQ0FBQTtnQkFBQSxpQkFBQXFGLENBQUEsQ0FBQXdELElBQUE7a0JBQUEsSUFBQXpKLENBQUEsR0FBQVksQ0FBQSxDQUFBMkcsSUFBQSxHQUFBc0IsQ0FBQSxHQUFBUCxDQUFBLEVBQUFyQyxDQUFBLENBQUE2TSxHQUFBLEtBQUFwSSxDQUFBO2tCQUFBO29CQUFBbkgsS0FBQSxFQUFBMEMsQ0FBQSxDQUFBNk0sR0FBQTtvQkFBQXZMLElBQUEsRUFBQTNHLENBQUEsQ0FBQTJHO2tCQUFBO2dCQUFBO2dCQUFBLFlBQUF0QixDQUFBLENBQUF3RCxJQUFBLEtBQUF6SixDQUFBLEdBQUE2SSxDQUFBLEVBQUFqSSxDQUFBLENBQUFtSyxNQUFBLFlBQUFuSyxDQUFBLENBQUFrUyxHQUFBLEdBQUE3TSxDQUFBLENBQUE2TSxHQUFBO2NBQUE7WUFBQTtVQUFBO1VBQUEsU0FBQXRFLEVBQUEvTixDQUFBLEVBQUFGLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFMLENBQUEsQ0FBQXdLLE1BQUE7Y0FBQS9LLENBQUEsR0FBQVMsQ0FBQSxDQUFBZSxRQUFBLENBQUFaLENBQUE7WUFBQSxJQUFBWixDQUFBLEtBQUFHLENBQUEsU0FBQUksQ0FBQSxDQUFBMlMsUUFBQSxxQkFBQXRTLENBQUEsSUFBQUgsQ0FBQSxDQUFBZSxRQUFBLENBQUF3TyxNQUFBLEtBQUF6UCxDQUFBLENBQUF3SyxNQUFBLGFBQUF4SyxDQUFBLENBQUF1UyxHQUFBLEdBQUEzUyxDQUFBLEVBQUFxTyxDQUFBLENBQUEvTixDQUFBLEVBQUFGLENBQUEsZUFBQUEsQ0FBQSxDQUFBd0ssTUFBQSxrQkFBQW5LLENBQUEsS0FBQUwsQ0FBQSxDQUFBd0ssTUFBQSxZQUFBeEssQ0FBQSxDQUFBdVMsR0FBQSxPQUFBbFIsU0FBQSx1Q0FBQWhCLENBQUEsaUJBQUE4SixDQUFBO1lBQUEsSUFBQXpLLENBQUEsR0FBQU8sQ0FBQSxDQUFBUixDQUFBLEVBQUFTLENBQUEsQ0FBQWUsUUFBQSxFQUFBakIsQ0FBQSxDQUFBdVMsR0FBQTtZQUFBLGdCQUFBN1MsQ0FBQSxDQUFBd0osSUFBQSxTQUFBbEosQ0FBQSxDQUFBd0ssTUFBQSxZQUFBeEssQ0FBQSxDQUFBdVMsR0FBQSxHQUFBN1MsQ0FBQSxDQUFBNlMsR0FBQSxFQUFBdlMsQ0FBQSxDQUFBMlMsUUFBQSxTQUFBeEksQ0FBQTtZQUFBLElBQUF4SyxDQUFBLEdBQUFELENBQUEsQ0FBQTZTLEdBQUE7WUFBQSxPQUFBNVMsQ0FBQSxHQUFBQSxDQUFBLENBQUFxSCxJQUFBLElBQUFoSCxDQUFBLENBQUFFLENBQUEsQ0FBQThTLFVBQUEsSUFBQXJULENBQUEsQ0FBQXFELEtBQUEsRUFBQWhELENBQUEsQ0FBQThHLElBQUEsR0FBQTVHLENBQUEsQ0FBQStTLE9BQUEsZUFBQWpULENBQUEsQ0FBQXdLLE1BQUEsS0FBQXhLLENBQUEsQ0FBQXdLLE1BQUEsV0FBQXhLLENBQUEsQ0FBQXVTLEdBQUEsR0FBQTNTLENBQUEsR0FBQUksQ0FBQSxDQUFBMlMsUUFBQSxTQUFBeEksQ0FBQSxJQUFBeEssQ0FBQSxJQUFBSyxDQUFBLENBQUF3SyxNQUFBLFlBQUF4SyxDQUFBLENBQUF1UyxHQUFBLE9BQUFsUixTQUFBLHNDQUFBckIsQ0FBQSxDQUFBMlMsUUFBQSxTQUFBeEksQ0FBQTtVQUFBO1VBQUEsU0FBQStELEVBQUF0TyxDQUFBO1lBQUEsSUFBQU0sQ0FBQTtjQUFBZ1QsTUFBQSxFQUFBdFQsQ0FBQTtZQUFBO1lBQUEsS0FBQUEsQ0FBQSxLQUFBTSxDQUFBLENBQUFpVCxRQUFBLEdBQUF2VCxDQUFBLFdBQUFBLENBQUEsS0FBQU0sQ0FBQSxDQUFBa1QsVUFBQSxHQUFBeFQsQ0FBQSxLQUFBTSxDQUFBLENBQUFtVCxRQUFBLEdBQUF6VCxDQUFBLFdBQUEwVCxVQUFBLENBQUE1UCxJQUFBLENBQUF4RCxDQUFBO1VBQUE7VUFBQSxTQUFBaU8sRUFBQXZPLENBQUE7WUFBQSxJQUFBTSxDQUFBLEdBQUFOLENBQUEsQ0FBQTJULFVBQUE7WUFBQXJULENBQUEsQ0FBQWdKLElBQUEsb0JBQUFoSixDQUFBLENBQUFxUyxHQUFBLEVBQUEzUyxDQUFBLENBQUEyVCxVQUFBLEdBQUFyVCxDQUFBO1VBQUE7VUFBQSxTQUFBa08sRUFBQXhPLENBQUE7WUFBQSxLQUFBMFQsVUFBQTtjQUFBSixNQUFBO1lBQUEsSUFBQXRULENBQUEsQ0FBQXNILE9BQUEsQ0FBQWdILENBQUEsY0FBQXNGLEtBQUE7VUFBQTtVQUFBLFNBQUFoRixFQUFBdE8sQ0FBQTtZQUFBLElBQUFBLENBQUEsV0FBQUEsQ0FBQTtjQUFBLElBQUFGLENBQUEsR0FBQUUsQ0FBQSxDQUFBUCxDQUFBO2NBQUEsSUFBQUssQ0FBQSxTQUFBQSxDQUFBLENBQUFrQyxJQUFBLENBQUFoQyxDQUFBO2NBQUEseUJBQUFBLENBQUEsQ0FBQTRHLElBQUEsU0FBQTVHLENBQUE7Y0FBQSxLQUFBdVQsS0FBQSxDQUFBdlQsQ0FBQSxDQUFBcUIsTUFBQTtnQkFBQSxJQUFBOUIsQ0FBQTtrQkFBQUMsQ0FBQSxZQUFBTSxFQUFBO29CQUFBLFNBQUFQLENBQUEsR0FBQVMsQ0FBQSxDQUFBcUIsTUFBQSxPQUFBbEIsQ0FBQSxDQUFBNkIsSUFBQSxDQUFBaEMsQ0FBQSxFQUFBVCxDQUFBLFVBQUFPLENBQUEsQ0FBQWdELEtBQUEsR0FBQTlDLENBQUEsQ0FBQVQsQ0FBQSxHQUFBTyxDQUFBLENBQUFnSCxJQUFBLE9BQUFoSCxDQUFBO29CQUFBLE9BQUFBLENBQUEsQ0FBQWdELEtBQUEsR0FBQXBELENBQUEsRUFBQUksQ0FBQSxDQUFBZ0gsSUFBQSxPQUFBaEgsQ0FBQTtrQkFBQTtnQkFBQSxPQUFBTixDQUFBLENBQUFvSCxJQUFBLEdBQUFwSCxDQUFBO2NBQUE7WUFBQTtZQUFBLFVBQUEyQixTQUFBLENBQUFOLE9BQUEsQ0FBQWIsQ0FBQTtVQUFBO1VBQUEsT0FBQWlHLENBQUEsQ0FBQWhGLFNBQUEsR0FBQWlLLENBQUEsRUFBQTNMLENBQUEsQ0FBQW9PLENBQUE7WUFBQTdLLEtBQUEsRUFBQW9JLENBQUE7WUFBQTNKLFlBQUE7VUFBQSxJQUFBaEMsQ0FBQSxDQUFBMkwsQ0FBQTtZQUFBcEksS0FBQSxFQUFBbUQsQ0FBQTtZQUFBMUUsWUFBQTtVQUFBLElBQUEwRSxDQUFBLENBQUF1TixXQUFBLEdBQUFoTyxDQUFBLENBQUEwRixDQUFBLEVBQUEzRixDQUFBLHdCQUFBdkYsQ0FBQSxDQUFBeVQsbUJBQUEsYUFBQS9ULENBQUE7WUFBQSxJQUFBTSxDQUFBLHdCQUFBTixDQUFBLElBQUFBLENBQUEsQ0FBQXNCLFdBQUE7WUFBQSxTQUFBaEIsQ0FBQSxLQUFBQSxDQUFBLEtBQUFpRyxDQUFBLDZCQUFBakcsQ0FBQSxDQUFBd1QsV0FBQSxJQUFBeFQsQ0FBQSxDQUFBdUUsSUFBQTtVQUFBLEdBQUF2RSxDQUFBLENBQUEwVCxJQUFBLGFBQUFoVSxDQUFBO1lBQUEsT0FBQStCLE1BQUEsQ0FBQXNDLGNBQUEsR0FBQXRDLE1BQUEsQ0FBQXNDLGNBQUEsQ0FBQXJFLENBQUEsRUFBQXdMLENBQUEsS0FBQXhMLENBQUEsQ0FBQXNFLFNBQUEsR0FBQWtILENBQUEsRUFBQTFGLENBQUEsQ0FBQTlGLENBQUEsRUFBQTZGLENBQUEseUJBQUE3RixDQUFBLENBQUF1QixTQUFBLEdBQUFRLE1BQUEsQ0FBQW9CLE1BQUEsQ0FBQThLLENBQUEsR0FBQWpPLENBQUE7VUFBQSxHQUFBTSxDQUFBLENBQUEyVCxLQUFBLGFBQUFqVSxDQUFBO1lBQUE7Y0FBQThTLE9BQUEsRUFBQTlTO1lBQUE7VUFBQSxHQUFBa08sQ0FBQSxDQUFBQyxDQUFBLENBQUE1TSxTQUFBLEdBQUF1RSxDQUFBLENBQUFxSSxDQUFBLENBQUE1TSxTQUFBLEVBQUFxRSxDQUFBO1lBQUE7VUFBQSxJQUFBdEYsQ0FBQSxDQUFBNFQsYUFBQSxHQUFBL0YsQ0FBQSxFQUFBN04sQ0FBQSxDQUFBNlQsS0FBQSxhQUFBblUsQ0FBQSxFQUFBSSxDQUFBLEVBQUFLLENBQUEsRUFBQVosQ0FBQSxFQUFBQyxDQUFBO1lBQUEsV0FBQUEsQ0FBQSxLQUFBQSxDQUFBLEdBQUErSCxPQUFBO1lBQUEsSUFBQTlILENBQUEsT0FBQW9PLENBQUEsQ0FBQXBJLENBQUEsQ0FBQS9GLENBQUEsRUFBQUksQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsR0FBQUMsQ0FBQTtZQUFBLE9BQUFRLENBQUEsQ0FBQXlULG1CQUFBLENBQUEzVCxDQUFBLElBQUFMLENBQUEsR0FBQUEsQ0FBQSxDQUFBbUgsSUFBQSxHQUFBdUMsSUFBQSxXQUFBekosQ0FBQTtjQUFBLE9BQUFBLENBQUEsQ0FBQW9ILElBQUEsR0FBQXBILENBQUEsQ0FBQW9ELEtBQUEsR0FBQXJELENBQUEsQ0FBQW1ILElBQUE7WUFBQTtVQUFBLEdBQUFnSCxDQUFBLENBQUFELENBQUEsR0FBQW5JLENBQUEsQ0FBQW1JLENBQUEsRUFBQXBJLENBQUEsZ0JBQUFDLENBQUEsQ0FBQW1JLENBQUEsRUFBQWxPLENBQUE7WUFBQTtVQUFBLElBQUErRixDQUFBLENBQUFtSSxDQUFBO1lBQUE7VUFBQSxJQUFBM04sQ0FBQSxDQUFBOEosSUFBQSxhQUFBcEssQ0FBQTtZQUFBLElBQUFNLENBQUEsR0FBQXlCLE1BQUEsQ0FBQS9CLENBQUE7Y0FBQUksQ0FBQTtZQUFBLFNBQUFLLENBQUEsSUFBQUgsQ0FBQSxFQUFBRixDQUFBLENBQUEwRCxJQUFBLENBQUFyRCxDQUFBO1lBQUEsT0FBQUwsQ0FBQSxDQUFBZ1UsT0FBQSxhQUFBcFUsRUFBQTtjQUFBLE9BQUFJLENBQUEsQ0FBQXVCLE1BQUE7Z0JBQUEsSUFBQWxCLENBQUEsR0FBQUwsQ0FBQSxDQUFBaVUsR0FBQTtnQkFBQSxJQUFBNVQsQ0FBQSxJQUFBSCxDQUFBLFNBQUFOLENBQUEsQ0FBQW9ELEtBQUEsR0FBQTNDLENBQUEsRUFBQVQsQ0FBQSxDQUFBb0gsSUFBQSxPQUFBcEgsQ0FBQTtjQUFBO2NBQUEsT0FBQUEsQ0FBQSxDQUFBb0gsSUFBQSxPQUFBcEgsQ0FBQTtZQUFBO1VBQUEsR0FBQU0sQ0FBQSxDQUFBK0osTUFBQSxHQUFBdUUsQ0FBQSxFQUFBSixDQUFBLENBQUFqTixTQUFBO1lBQUFELFdBQUEsRUFBQWtOLENBQUE7WUFBQW9GLEtBQUEsV0FBQUEsQ0FBQXRULENBQUE7Y0FBQSxTQUFBZ1UsSUFBQSxXQUFBcE4sSUFBQSxXQUFBOEwsSUFBQSxRQUFBQyxLQUFBLEdBQUFqVCxDQUFBLE9BQUFvSCxJQUFBLFlBQUEyTCxRQUFBLGNBQUFuSSxNQUFBLGdCQUFBK0gsR0FBQSxHQUFBM1MsQ0FBQSxPQUFBMFQsVUFBQSxDQUFBcE0sT0FBQSxDQUFBaUgsQ0FBQSxJQUFBak8sQ0FBQSxXQUFBRixDQUFBLGtCQUFBQSxDQUFBLENBQUFtVSxNQUFBLE9BQUE5VCxDQUFBLENBQUE2QixJQUFBLE9BQUFsQyxDQUFBLE1BQUF5VCxLQUFBLEVBQUF6VCxDQUFBLENBQUFnRyxLQUFBLGNBQUFoRyxDQUFBLElBQUFKLENBQUE7WUFBQTtZQUFBd1UsSUFBQSxXQUFBQSxDQUFBO2NBQUEsS0FBQXBOLElBQUE7Y0FBQSxJQUFBcEgsQ0FBQSxRQUFBMFQsVUFBQSxJQUFBQyxVQUFBO2NBQUEsZ0JBQUEzVCxDQUFBLENBQUFzSixJQUFBLFFBQUF0SixDQUFBLENBQUEyUyxHQUFBO2NBQUEsWUFBQThCLElBQUE7WUFBQTtZQUFBdkIsaUJBQUEsV0FBQUEsQ0FBQTVTLENBQUE7Y0FBQSxTQUFBOEcsSUFBQSxRQUFBOUcsQ0FBQTtjQUFBLElBQUFGLENBQUE7Y0FBQSxTQUFBUCxFQUFBWSxDQUFBLEVBQUFaLENBQUE7Z0JBQUEsT0FBQStGLENBQUEsQ0FBQTBELElBQUEsWUFBQTFELENBQUEsQ0FBQStNLEdBQUEsR0FBQXJTLENBQUEsRUFBQUYsQ0FBQSxDQUFBOEcsSUFBQSxHQUFBekcsQ0FBQSxFQUFBWixDQUFBLEtBQUFPLENBQUEsQ0FBQXdLLE1BQUEsV0FBQXhLLENBQUEsQ0FBQXVTLEdBQUEsR0FBQTNTLENBQUEsS0FBQUgsQ0FBQTtjQUFBO2NBQUEsU0FBQUMsQ0FBQSxRQUFBNFQsVUFBQSxDQUFBL1IsTUFBQSxNQUFBN0IsQ0FBQSxTQUFBQSxDQUFBO2dCQUFBLElBQUFDLENBQUEsUUFBQTJULFVBQUEsQ0FBQTVULENBQUE7a0JBQUE4RixDQUFBLEdBQUE3RixDQUFBLENBQUE0VCxVQUFBO2dCQUFBLGVBQUE1VCxDQUFBLENBQUF1VCxNQUFBLFNBQUF6VCxDQUFBO2dCQUFBLElBQUFFLENBQUEsQ0FBQXVULE1BQUEsU0FBQWdCLElBQUE7a0JBQUEsSUFBQXpPLENBQUEsR0FBQXBGLENBQUEsQ0FBQTZCLElBQUEsQ0FBQXZDLENBQUE7b0JBQUErRixDQUFBLEdBQUFyRixDQUFBLENBQUE2QixJQUFBLENBQUF2QyxDQUFBO2tCQUFBLElBQUE4RixDQUFBLElBQUFDLENBQUE7b0JBQUEsU0FBQXdPLElBQUEsR0FBQXZVLENBQUEsQ0FBQXdULFFBQUEsU0FBQTFULENBQUEsQ0FBQUUsQ0FBQSxDQUFBd1QsUUFBQTtvQkFBQSxTQUFBZSxJQUFBLEdBQUF2VSxDQUFBLENBQUF5VCxVQUFBLFNBQUEzVCxDQUFBLENBQUFFLENBQUEsQ0FBQXlULFVBQUE7a0JBQUEsV0FBQTNOLENBQUE7b0JBQUEsU0FBQXlPLElBQUEsR0FBQXZVLENBQUEsQ0FBQXdULFFBQUEsU0FBQTFULENBQUEsQ0FBQUUsQ0FBQSxDQUFBd1QsUUFBQTtrQkFBQTtvQkFBQSxLQUFBek4sQ0FBQSxRQUFBYixLQUFBO29CQUFBLFNBQUFxUCxJQUFBLEdBQUF2VSxDQUFBLENBQUF5VCxVQUFBLFNBQUEzVCxDQUFBLENBQUFFLENBQUEsQ0FBQXlULFVBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtZQUFBO1lBQUFMLE1BQUEsV0FBQUEsQ0FBQW5ULENBQUEsRUFBQU0sQ0FBQTtjQUFBLFNBQUFGLENBQUEsUUFBQXNULFVBQUEsQ0FBQS9SLE1BQUEsTUFBQXZCLENBQUEsU0FBQUEsQ0FBQTtnQkFBQSxJQUFBUCxDQUFBLFFBQUE2VCxVQUFBLENBQUF0VCxDQUFBO2dCQUFBLElBQUFQLENBQUEsQ0FBQXlULE1BQUEsU0FBQWdCLElBQUEsSUFBQTdULENBQUEsQ0FBQTZCLElBQUEsQ0FBQXpDLENBQUEsd0JBQUF5VSxJQUFBLEdBQUF6VSxDQUFBLENBQUEyVCxVQUFBO2tCQUFBLElBQUExVCxDQUFBLEdBQUFELENBQUE7a0JBQUE7Z0JBQUE7Y0FBQTtjQUFBQyxDQUFBLGlCQUFBRSxDQUFBLG1CQUFBQSxDQUFBLEtBQUFGLENBQUEsQ0FBQXdULE1BQUEsSUFBQWhULENBQUEsSUFBQUEsQ0FBQSxJQUFBUixDQUFBLENBQUEwVCxVQUFBLEtBQUExVCxDQUFBO2NBQUEsSUFBQUMsQ0FBQSxHQUFBRCxDQUFBLEdBQUFBLENBQUEsQ0FBQTZULFVBQUE7Y0FBQSxPQUFBNVQsQ0FBQSxDQUFBdUosSUFBQSxHQUFBdEosQ0FBQSxFQUFBRCxDQUFBLENBQUE0UyxHQUFBLEdBQUFyUyxDQUFBLEVBQUFSLENBQUEsU0FBQThLLE1BQUEsZ0JBQUExRCxJQUFBLEdBQUFwSCxDQUFBLENBQUEwVCxVQUFBLEVBQUFqSixDQUFBLFNBQUFtSyxRQUFBLENBQUEzVSxDQUFBO1lBQUE7WUFBQTJVLFFBQUEsV0FBQUEsQ0FBQTFVLENBQUEsRUFBQU0sQ0FBQTtjQUFBLGdCQUFBTixDQUFBLENBQUFzSixJQUFBLFFBQUF0SixDQUFBLENBQUEyUyxHQUFBO2NBQUEsbUJBQUEzUyxDQUFBLENBQUFzSixJQUFBLG1CQUFBdEosQ0FBQSxDQUFBc0osSUFBQSxRQUFBcEMsSUFBQSxHQUFBbEgsQ0FBQSxDQUFBMlMsR0FBQSxnQkFBQTNTLENBQUEsQ0FBQXNKLElBQUEsU0FBQW1MLElBQUEsUUFBQTlCLEdBQUEsR0FBQTNTLENBQUEsQ0FBQTJTLEdBQUEsT0FBQS9ILE1BQUEsa0JBQUExRCxJQUFBLHlCQUFBbEgsQ0FBQSxDQUFBc0osSUFBQSxJQUFBaEosQ0FBQSxVQUFBNEcsSUFBQSxHQUFBNUcsQ0FBQSxHQUFBaUssQ0FBQTtZQUFBO1lBQUFvSyxNQUFBLFdBQUFBLENBQUEzVSxDQUFBO2NBQUEsU0FBQU0sQ0FBQSxRQUFBb1QsVUFBQSxDQUFBL1IsTUFBQSxNQUFBckIsQ0FBQSxTQUFBQSxDQUFBO2dCQUFBLElBQUFGLENBQUEsUUFBQXNULFVBQUEsQ0FBQXBULENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxDQUFBb1QsVUFBQSxLQUFBeFQsQ0FBQSxjQUFBMFUsUUFBQSxDQUFBdFUsQ0FBQSxDQUFBdVQsVUFBQSxFQUFBdlQsQ0FBQSxDQUFBcVQsUUFBQSxHQUFBbEYsQ0FBQSxDQUFBbk8sQ0FBQSxHQUFBbUssQ0FBQTtjQUFBO1lBQUE7WUFBQW1HLEtBQUEsV0FBQUEsQ0FBQTFRLENBQUE7Y0FBQSxTQUFBTSxDQUFBLFFBQUFvVCxVQUFBLENBQUEvUixNQUFBLE1BQUFyQixDQUFBLFNBQUFBLENBQUE7Z0JBQUEsSUFBQUYsQ0FBQSxRQUFBc1QsVUFBQSxDQUFBcFQsQ0FBQTtnQkFBQSxJQUFBRixDQUFBLENBQUFrVCxNQUFBLEtBQUF0VCxDQUFBO2tCQUFBLElBQUFTLENBQUEsR0FBQUwsQ0FBQSxDQUFBdVQsVUFBQTtrQkFBQSxnQkFBQWxULENBQUEsQ0FBQTZJLElBQUE7b0JBQUEsSUFBQXpKLENBQUEsR0FBQVksQ0FBQSxDQUFBa1MsR0FBQTtvQkFBQXBFLENBQUEsQ0FBQW5PLENBQUE7a0JBQUE7a0JBQUEsT0FBQVAsQ0FBQTtnQkFBQTtjQUFBO2NBQUEsTUFBQW9GLEtBQUE7WUFBQTtZQUFBMlAsYUFBQSxXQUFBQSxDQUFBdFUsQ0FBQSxFQUFBRixDQUFBLEVBQUFLLENBQUE7Y0FBQSxZQUFBc1MsUUFBQTtnQkFBQTFSLFFBQUEsRUFBQXVOLENBQUEsQ0FBQXRPLENBQUE7Z0JBQUE4UyxVQUFBLEVBQUFoVCxDQUFBO2dCQUFBaVQsT0FBQSxFQUFBNVM7Y0FBQSxtQkFBQW1LLE1BQUEsVUFBQStILEdBQUEsR0FBQTNTLENBQUEsR0FBQXVLLENBQUE7WUFBQTtVQUFBLEdBQUFqSyxDQUFBO1FBQUE7UUFBQSxTQUFBdVUsbUJBQUE3VSxDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQSxFQUFBSyxDQUFBLEVBQUFaLENBQUEsRUFBQUMsQ0FBQSxFQUFBQyxDQUFBO1VBQUE7WUFBQSxJQUFBNkYsQ0FBQSxHQUFBNUYsQ0FBQSxDQUFBRixDQUFBLEVBQUFDLENBQUE7Y0FBQThGLENBQUEsR0FBQUQsQ0FBQSxDQUFBeEMsS0FBQTtVQUFBLFNBQUFwRCxDQUFBO1lBQUEsWUFBQUksQ0FBQSxDQUFBSixDQUFBO1VBQUE7VUFBQTRGLENBQUEsQ0FBQXdCLElBQUEsR0FBQTlHLENBQUEsQ0FBQXVGLENBQUEsSUFBQWdDLE9BQUEsQ0FBQTBCLE9BQUEsQ0FBQTFELENBQUEsRUFBQTRELElBQUEsQ0FBQWhKLENBQUEsRUFBQVosQ0FBQTtRQUFBO1FBQUEsU0FBQWlWLGtCQUFBOVUsQ0FBQTtVQUFBO1lBQUEsSUFBQU0sQ0FBQTtjQUFBRixDQUFBLEdBQUF5RCxTQUFBO1lBQUEsV0FBQWdFLE9BQUEsV0FBQXBILENBQUEsRUFBQVosQ0FBQTtjQUFBLElBQUFDLENBQUEsR0FBQUUsQ0FBQSxDQUFBK0MsS0FBQSxDQUFBekMsQ0FBQSxFQUFBRixDQUFBO2NBQUEsU0FBQUwsRUFBQUMsQ0FBQTtnQkFBQTZVLGtCQUFBLENBQUEvVSxDQUFBLEVBQUFXLENBQUEsRUFBQVosQ0FBQSxFQUFBRSxDQUFBLEVBQUE2RixDQUFBLFVBQUE1RixDQUFBO2NBQUE7Y0FBQSxTQUFBNEYsRUFBQTVGLENBQUE7Z0JBQUE2VSxrQkFBQSxDQUFBL1UsQ0FBQSxFQUFBVyxDQUFBLEVBQUFaLENBQUEsRUFBQUUsQ0FBQSxFQUFBNkYsQ0FBQSxXQUFBNUYsQ0FBQTtjQUFBO2NBQUFELENBQUE7WUFBQTtVQUFBO1FBQUE7UUFBQSxTQUFBeUIsZ0JBQUF4QixDQUFBLEVBQUFNLENBQUE7VUFBQSxNQUFBTixDQUFBLFlBQUFNLENBQUEsYUFBQW1CLFNBQUE7UUFBQTtRQUFBLFNBQUFDLGtCQUFBMUIsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsU0FBQUYsQ0FBQSxNQUFBQSxDQUFBLEdBQUFFLENBQUEsQ0FBQXFCLE1BQUEsRUFBQXZCLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQTtZQUFBSyxDQUFBLENBQUFtQixVQUFBLEdBQUFuQixDQUFBLENBQUFtQixVQUFBLFFBQUFuQixDQUFBLENBQUFvQixZQUFBLGtCQUFBcEIsQ0FBQSxLQUFBQSxDQUFBLENBQUFxQixRQUFBLFFBQUFDLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBaUMsY0FBQSxDQUFBeEIsQ0FBQSxDQUFBeUIsR0FBQSxHQUFBekIsQ0FBQTtVQUFBO1FBQUE7UUFBQSxTQUFBMEIsYUFBQW5DLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBO1VBQUEsT0FBQUUsQ0FBQSxJQUFBb0IsaUJBQUEsQ0FBQTFCLENBQUEsQ0FBQXVCLFNBQUEsRUFBQWpCLENBQUEsR0FBQUYsQ0FBQSxJQUFBc0IsaUJBQUEsQ0FBQTFCLENBQUEsRUFBQUksQ0FBQSxHQUFBMkIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBO1lBQUE4QixRQUFBO1VBQUEsSUFBQTlCLENBQUE7UUFBQTtRQUFBLFNBQUErVSxRQUFBL1UsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsSUFBQUYsQ0FBQSxHQUFBMkIsTUFBQSxDQUFBcUksSUFBQSxDQUFBcEssQ0FBQTtVQUFBLElBQUErQixNQUFBLENBQUEwTSxxQkFBQTtZQUFBLElBQUFoTyxDQUFBLEdBQUFzQixNQUFBLENBQUEwTSxxQkFBQSxDQUFBek8sQ0FBQTtZQUFBTSxDQUFBLEtBQUFHLENBQUEsR0FBQUEsQ0FBQSxDQUFBaU8sTUFBQSxXQUFBcE8sQ0FBQTtjQUFBLE9BQUF5QixNQUFBLENBQUE0TSx3QkFBQSxDQUFBM08sQ0FBQSxFQUFBTSxDQUFBLEVBQUFzQixVQUFBO1lBQUEsS0FBQXhCLENBQUEsQ0FBQTBELElBQUEsQ0FBQWYsS0FBQSxDQUFBM0MsQ0FBQSxFQUFBSyxDQUFBO1VBQUE7VUFBQSxPQUFBTCxDQUFBO1FBQUE7UUFBQSxTQUFBNFUsY0FBQWhWLENBQUE7VUFBQSxTQUFBTSxDQUFBLE1BQUFBLENBQUEsR0FBQXVELFNBQUEsQ0FBQWxDLE1BQUEsRUFBQXJCLENBQUE7WUFBQSxJQUFBRixDQUFBLFdBQUF5RCxTQUFBLENBQUF2RCxDQUFBLElBQUF1RCxTQUFBLENBQUF2RCxDQUFBO1lBQUFBLENBQUEsT0FBQXlVLE9BQUEsQ0FBQWhULE1BQUEsQ0FBQTNCLENBQUEsT0FBQWtILE9BQUEsV0FBQWhILENBQUE7Y0FBQTJVLGVBQUEsQ0FBQWpWLENBQUEsRUFBQU0sQ0FBQSxFQUFBRixDQUFBLENBQUFFLENBQUE7WUFBQSxLQUFBeUIsTUFBQSxDQUFBOE0seUJBQUEsR0FBQTlNLE1BQUEsQ0FBQStNLGdCQUFBLENBQUE5TyxDQUFBLEVBQUErQixNQUFBLENBQUE4TSx5QkFBQSxDQUFBek8sQ0FBQSxLQUFBMlUsT0FBQSxDQUFBaFQsTUFBQSxDQUFBM0IsQ0FBQSxHQUFBa0gsT0FBQSxXQUFBaEgsQ0FBQTtjQUFBeUIsTUFBQSxDQUFBQyxjQUFBLENBQUFoQyxDQUFBLEVBQUFNLENBQUEsRUFBQXlCLE1BQUEsQ0FBQTRNLHdCQUFBLENBQUF2TyxDQUFBLEVBQUFFLENBQUE7WUFBQTtVQUFBO1VBQUEsT0FBQU4sQ0FBQTtRQUFBO1FBQUEsU0FBQWlWLGdCQUFBalYsQ0FBQSxFQUFBTSxDQUFBLEVBQUFGLENBQUE7VUFBQSxRQUFBRSxDQUFBLEdBQUEyQixjQUFBLENBQUEzQixDQUFBLE1BQUFOLENBQUEsR0FBQStCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBTSxDQUFBO1lBQUE4QyxLQUFBLEVBQUFoRCxDQUFBO1lBQUF3QixVQUFBO1lBQUFDLFlBQUE7WUFBQUMsUUFBQTtVQUFBLEtBQUE5QixDQUFBLENBQUFNLENBQUEsSUFBQUYsQ0FBQSxFQUFBSixDQUFBO1FBQUE7UUFBQSxTQUFBaUMsZUFBQWpDLENBQUE7VUFBQSxJQUFBTSxDQUFBLEdBQUE4QixZQUFBLENBQUFwQyxDQUFBO1VBQUEsbUJBQUFtQixPQUFBLENBQUFiLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO1FBQUE7UUFBQSxTQUFBOEIsYUFBQXBDLENBQUEsRUFBQU0sQ0FBQTtVQUFBLGdCQUFBYSxPQUFBLENBQUFuQixDQUFBLE1BQUFBLENBQUEsU0FBQUEsQ0FBQTtVQUFBLElBQUFJLENBQUEsR0FBQUosQ0FBQSxDQUFBb0IsTUFBQSxDQUFBaUIsV0FBQTtVQUFBLGVBQUFqQyxDQUFBO1lBQUEsSUFBQUssQ0FBQSxHQUFBTCxDQUFBLENBQUFrQyxJQUFBLENBQUF0QyxDQUFBLEVBQUFNLENBQUE7WUFBQSxnQkFBQWEsT0FBQSxDQUFBVixDQUFBLFVBQUFBLENBQUE7WUFBQSxVQUFBZ0IsU0FBQTtVQUFBO1VBQUEscUJBQUFuQixDQUFBLEdBQUFpQyxNQUFBLEdBQUFDLE1BQUEsRUFBQXhDLENBQUE7UUFBQTtRQUFBZ0IsTUFBQSxHQUFBRSxtQkFBQSxDQUFBVixHQUFBLENBQUFRLE1BQUEsR0FBQUwsV0FBQSx5QkFBQUQsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxXQUFBQSxXQUFBLElBQUFBLFdBQUEsQ0FBQUssTUFBQTtRQUFBLElBQUEwRCxhQUFBLHlCQUFBaEUsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBLGFBQUFiLENBQUE7VUFBQSxPQUFBQSxDQUFBO1FBQUE7UUF1RE8sU0FBU2tWLHFCQUFxQmxWLENBQUEsRUFBZU0sQ0FBQTtVQUNoRCxJQUFpQixRQUFiQSxDQUFBLEVBQXdCO1lBQ3hCLElBQVksUUFBUk4sQ0FBQSxFQUNBLE1BQU0sSUFBSWlGLEtBQUEsQ0FBTTtZQUVwQixPQUFPLENBQUMsU0FBUyxVQUFVakYsQ0FBQSxFQUFNTSxDQUFBLENBQ3JDO1VBQUE7VUFDQSxPQUFZLFFBQVJOLENBQUEsR0FDTyxDQUFDLFNBQVMsVUFBVUEsQ0FBQSxJQUV4QixDQUFDLFNBQVMsU0FDckI7UUFBQTtRQUVBLFNBQVNtVixlQUFlblYsQ0FBQTtVQUNwQixPQUFPK0IsTUFBQSxDQUFPcUksSUFBQSxDQUFLcEssQ0FBQSxFQUNkME8sTUFBQSxDQUFPLFVBQUFwTyxDQUFBO1lBQUksT0FBSU4sQ0FBQSxDQUFNTSxDQUFBLEtBQVN5QixNQUFBLENBQU9SLFNBQUEsQ0FBVTRJLGNBQUEsQ0FBZTdILElBQUEsQ0FBS3RDLENBQUEsQ0FBTU0sQ0FBQSxHQUFPLFFBQVE7VUFBQSxHQUN4RitHLEdBQUEsQ0FBSSxVQUFBL0csQ0FBQTtZQUNELElBQU1GLENBQUEsR0FBU0osQ0FBQSxDQUFNTSxDQUFBO1lBQ3JCLE9BQWMsUUFBVkYsQ0FBQSxHQUNPLENBQUMsSUFFWjZVLGVBQUEsS0FBVTNVLENBQUEsRUFBT0YsQ0FBQSxDQUFPZ0QsS0FBQSxDQUM1QjtVQUFBLEVBQ1I7UUFBQTtRQUVBLFNBQVNnUyxrQkFBa0JwVixDQUFBO1VBQ3ZCLE9BQU9BLENBQUEsQ0FBT3FWLE1BQUEsQ0FDVixVQUFDclYsQ0FBQSxFQUFRTSxDQUFBO1lBQUssT0FBQTBVLGFBQUEsQ0FBQUEsYUFBQSxLQUNQaFYsQ0FBQSxHQUNBTSxDQUFBLENBQUs7VUFBQSxHQUVaLENBQUMsRUFFVDtRQUFBO1FBQUMsSUFFS2dWLGdCQUFBLEdBQWdCO1lBR2xCLFNBQUFBLGlCQUFtQnRWLENBQUE7Y0FBbUJ3QixlQUFBLE9BQUE4VCxnQkFBQSxRQUZyQkMsSUFBQSxRQUFJLEdBR2pCLEtBQUtBLElBQUEsR0FBT3ZWLENBQ2hCO1lBQUE7WUFBQyxPQUFBbUMsWUFBQSxDQUFBbVQsZ0JBQUE7Y0FBQXBULEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFpQ3BELENBQUE7Z0JBQzdCLE1BQU0sSUFBSWlGLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLE1BQU0sSUFBSTZCLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLE1BQU0sSUFBSTZCLEtBQUEsQ0FBTSwwQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFtQnBELENBQUE7Z0JBQ2YsTUFBTSxJQUFJaUYsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksTUFBTSxJQUFJNkIsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQW1CcEQsQ0FBQTtnQkFDZixNQUFNLElBQUlpRixLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEdBQUFvUyx1QkFBQSxHQUFBVixpQkFBQSxDQUFBdkMsbUJBQUEsR0FBQXlCLElBQUEsQ0FFRCxTQUFBaFUsRUFBb0NNLENBQUE7Z0JBQVksT0FBQWlTLG1CQUFBLEdBQUFLLElBQUEsV0FBQTVTLENBQUE7a0JBQUEsaUJBQUFBLENBQUEsQ0FBQXNVLElBQUEsR0FBQXRVLENBQUEsQ0FBQWtILElBQUE7b0JBQUE7c0JBQUEsTUFDdEMsSUFBSWpDLEtBQUEsQ0FBTTtvQkFBMEI7b0JBQUE7c0JBQUEsT0FBQWpGLENBQUEsQ0FBQXdVLElBQUE7a0JBQUE7Z0JBQUEsR0FBQXhVLENBQUE7Y0FBQSxLQUM3QyxVQUFBQSxDQUFBO2dCQUFBLE9BQUF3Vix1QkFBQSxDQUFBelMsS0FBQSxPQUFBYyxTQUFBO2NBQUE7WUFBQTtjQUFBM0IsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksTUFBTSxJQUFJNkIsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxHQUFBcVMsa0RBQUEsR0FBQVgsaUJBQUEsQ0FBQXZDLG1CQUFBLEdBQUF5QixJQUFBLENBRUQsU0FBQWhVLEVBQ0lNLENBQUE7Z0JBQWdCLE9BQUFpUyxtQkFBQSxHQUFBSyxJQUFBLFdBQUE1UyxDQUFBO2tCQUFBLGlCQUFBQSxDQUFBLENBQUFzVSxJQUFBLEdBQUF0VSxDQUFBLENBQUFrSCxJQUFBO29CQUFBO3NCQUFBLE1BRVYsSUFBSWpDLEtBQUEsQ0FBTTtvQkFBMEI7b0JBQUE7c0JBQUEsT0FBQWpGLENBQUEsQ0FBQXdVLElBQUE7a0JBQUE7Z0JBQUEsR0FBQXhVLENBQUE7Y0FBQSxLQUM3QyxVQUFBQSxDQUFBO2dCQUFBLE9BQUF5VixrREFBQSxDQUFBMVMsS0FBQSxPQUFBYyxTQUFBO2NBQUE7WUFBQTtjQUFBM0IsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQWtDcEQsQ0FBQTtnQkFDOUIsTUFBTSxJQUFJaUYsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksTUFBTSxJQUFJNkIsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQWdCcEQsQ0FBQTtnQkFDWixNQUFNLElBQUlpRixLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FDSXBELENBQUE7Z0JBRUEsTUFBTSxJQUFJaUYsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQXVCcEQsQ0FBQSxFQUF1Qk0sQ0FBQTtnQkFDMUMsTUFBTSxJQUFJMkUsS0FBQSxDQUFNLDBCQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQWFwRCxDQUFBLEVBQXNCTSxDQUFBO2dCQUMvQixNQUFNLElBQUkyRSxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEVBQ0QsU0FBQUEsQ0FBcUJwRCxDQUFBLEVBQWtCTSxDQUFBO2dCQUNuQyxNQUFNLElBQUkyRSxLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBZ0JwRCxDQUFBLEVBQWFNLENBQUE7Z0JBQ3pCLE9BQU8sS0FBS2lWLElBQUEsQ0FBS0csaUJBQUEsQ0FBa0JDLG9CQUFBLENBQXFCM1YsQ0FBQSxFQUFLNFYsS0FBQSxDQUFNdFYsQ0FBQSxDQUN2RTtjQUFBO1lBQUEsR0FBQztjQUFBNEIsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQVVwRCxDQUFBLEVBQW1CTSxDQUFBO2dCQUN6QixLQUFLaVYsSUFBQSxDQUFLTSxZQUFBLENBQWFDLEVBQUEsQ0FBRyxDQUFDLFFBQVE5VixDQUFBLEdBQVlNLENBQUEsQ0FDbkQ7Y0FBQTtZQUFBLEdBQUM7Y0FBQTRCLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFXcEQsQ0FBQSxFQUFtQk0sQ0FBQTtnQkFDMUIsS0FBS2lWLElBQUEsQ0FBS00sWUFBQSxDQUFhRSxHQUFBLENBQUksQ0FBQyxRQUFRL1YsQ0FBQSxHQUFZTSxDQUFBLENBQ3BEO2NBQUE7WUFBQSxHQUFDO2NBQUE0QixHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBcUJwRCxDQUFBLEVBQXlCTSxDQUFBO2dCQUUxQyxNQUFNMkUsS0FBQSxDQUFNLDRDQUNoQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksT0FBTyxLQUFLbVMsSUFBQSxDQUFLUyxTQUFBLENBQVVwSSxJQUFBLEVBQy9CO2NBQUE7WUFBQSxHQUFDO2NBQUExTCxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBQTtnQkFNSSxPQUxBLEtBQUttUyxJQUFBLENBQUtTLFNBQUEsQ0FBVUMsWUFBQSxJQUNoQixLQUFLVixJQUFBLENBQUtXLE9BQUEsSUFDVixLQUFLWCxJQUFBLENBQUtXLE9BQUEsSUFHUCxLQUFLWCxJQUFBLENBQUtTLFNBQUEsQ0FBVXBJLElBQUEsRUFDL0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQTFMLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUVJLE9BQU8sRUFDWDtjQUFBO1lBQUEsR0FBQztjQUFBbEIsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksSUFBTXBELENBQUEsR0FBTytCLE1BQUEsQ0FBT3FJLElBQUEsQ0FBSyxLQUFLbUwsSUFBQSxDQUFLWSxLQUFBLENBQU1DLFFBQUEsQ0FBUyxLQUFLYixJQUFBLENBQUtjLFFBQUEsQ0FBU0MsUUFBQTtnQkFHckUsT0FBTyxLQUFLZixJQUFBLENBQUtnQixTQUFBLENBQVVDLFdBQUEsQ0FBWXhXLENBQUEsQ0FDM0M7Y0FBQTtZQUFBLEdBQUM7Y0FBQWtDLEdBQUE7Y0FBQWtCLEtBQUEsRUFDRCxTQUFBQSxDQUFpQ3BELENBQUE7Z0JBQzdCLE1BQU0sSUFBSWlGLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLE1BQU0sSUFBSTZCLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLE1BQU0sSUFBSTZCLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLE1BQU0sSUFBSTZCLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFtQnBELENBQUEsRUFBZ0JNLENBQUEsR0FFbkM7WUFBQSxHQUFDO2NBQUE0QixHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBcUJwRCxDQUFBO2dCQUNqQixNQUFNLElBQUlpRixLQUFBLENBQU0sa0JBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEdBQUFxVCxZQUFBLEdBQUEzQixpQkFBQSxDQUFBdkMsbUJBQUEsR0FBQXlCLElBQUEsQ0FFRCxTQUFBaFUsRUFBQTtnQkFBQSxPQUFBdVMsbUJBQUEsR0FBQUssSUFBQSxXQUFBNVMsQ0FBQTtrQkFBQSxpQkFBQUEsQ0FBQSxDQUFBc1UsSUFBQSxHQUFBdFUsQ0FBQSxDQUFBa0gsSUFBQTtvQkFBQTtzQkFBQSxNQUNVLElBQUlqQyxLQUFBLENBQU07b0JBQWtCO29CQUFBO3NCQUFBLE9BQUFqRixDQUFBLENBQUF3VSxJQUFBO2tCQUFBO2dCQUFBLEdBQUF4VSxDQUFBO2NBQUEsS0FDckM7Z0JBQUEsT0FBQXlXLFlBQUEsQ0FBQTFULEtBQUEsT0FBQWMsU0FBQTtjQUFBO1lBQUE7Y0FBQTNCLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFtQ3BELENBQUE7Z0JBQy9CLE1BQU0sSUFBSWlGLEtBQUEsQ0FBTSxrQkFDcEI7Y0FBQTtZQUFBLEdBQUM7Y0FBQS9DLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFBO2dCQUNJLElBQU1wRCxDQUFBLEdBQWEsS0FBS3VWLElBQUEsQ0FBS1ksS0FBQSxDQUFNelMsR0FBQSxDQUFJLEtBQUs2UixJQUFBLENBQUtjLFFBQUEsQ0FBU0MsUUFBQSxFQUFVO2dCQUNwRSxPQUFxQixRQUFkdFcsQ0FBQSxJQUEyQkEsQ0FBQSxHQUFhLENBQ25EO2NBQUE7WUFBQSxHQUFDO2NBQUFrQyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBNEJwRCxDQUFBO2dCQUN4QixLQUFLdVYsSUFBQSxDQUFLTSxZQUFBLENBQWFDLEVBQUEsQ0FBR1osb0JBQUEsQ0FBcUIsS0FBS0ssSUFBQSxDQUFLYyxRQUFBLENBQVNDLFFBQUEsRUFBVSxnQkFBZ0J0VyxDQUFBLENBQ2hHO2NBQUE7WUFBQSxHQUFDO2NBQUFrQyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBNkJwRCxDQUFBO2dCQUN6QixLQUFLdVYsSUFBQSxDQUFLTSxZQUFBLENBQWFFLEdBQUEsQ0FBSWIsb0JBQUEsQ0FBcUIsS0FBS0ssSUFBQSxDQUFLYyxRQUFBLENBQVNDLFFBQUEsRUFBVSxnQkFBZ0J0VyxDQUFBLENBQ2pHO2NBQUE7WUFBQSxHQUFDO2NBQUFrQyxHQUFBO2NBQUFrQixLQUFBLEVBSUQsU0FBQUEsQ0FDSXBELENBQUEsRUFDQU0sQ0FBQTtnQkFFQSxJQUN5QixTQUFyQk4sQ0FBQSxJQUM0QixtQkFBckJBLENBQUEsSUFDcUIsYUFBNUJtQixPQUFBLENBQU9uQixDQUFBLEtBQ053SCxLQUFBLENBQU1DLE9BQUEsQ0FBUXpILENBQUEsR0FKbkI7a0JBZUEsSUFBZ0MsbUJBQXJCQSxDQUFBLEVBS1gsTUFBTSxJQUFJaUYsS0FBQSxDQUFNO2tCQUpaLEtBQUtzUSxJQUFBLENBQUtZLEtBQUEsQ0FBTXhTLEdBQUEsQ0FBSTNELENBQUEsRUFBa0IsU0FBU00sQ0FBQSxDQUhuRDtnQkFBQSxPQWJBO2tCQU1JLElBQU1GLENBQUEsR0FBYTJCLE1BQUEsQ0FBT3FJLElBQUEsQ0FBS3BLLENBQUEsRUFBa0JxVixNQUFBLENBQzdDLFVBQUMvVSxDQUFBLEVBQVFGLENBQUE7b0JBQUksT0FBQTRVLGFBQUEsQ0FBQUMsZUFBQSxLQUFTN1UsQ0FBQSxFQUFPO3NCQUFFZ0QsS0FBQSxFQUFPcEQsQ0FBQSxDQUFpQkksQ0FBQTtvQkFBQSxJQUFZRSxDQUFBLENBQU07a0JBQUEsR0FDekUsQ0FBQztrQkFHTCxLQUFLaVYsSUFBQSxDQUFLWSxLQUFBLENBQU1PLElBQUEsQ0FBS3RXLENBQUEsQ0FFekI7Z0JBQUE7Y0FRSjtZQUFBLEdBQUM7Y0FBQThCLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFXcEQsQ0FBQTtnQkFBZ0UsSUFBQU0sQ0FBQTtnQkFDdkUsSUFBSWtILEtBQUEsQ0FBTUMsT0FBQSxDQUFRekgsQ0FBQSxHQUNkLE9BQU9vVixpQkFBQSxDQUNIcFYsQ0FBQSxDQUNLcUgsR0FBQSxDQUFJLFVBQUFySCxDQUFBO2tCQUFJLE9BQUltVixjQUFBLENBQWU3VSxDQUFBLENBQUtpVixJQUFBLENBQUtZLEtBQUEsQ0FBTUMsUUFBQSxDQUFTcFcsQ0FBQSxFQUFNO2dCQUFBLEdBRTFEcVYsTUFBQSxDQUE4QyxVQUFDclYsQ0FBQSxFQUFRTSxDQUFBO2tCQUFLLE9BQUtOLENBQUEsQ0FBT0MsTUFBQSxDQUFPSyxDQUFBLENBQU07Z0JBQUEsR0FBRTtnQkFJcEcsSUFBMkIsbUJBQWhCTixDQUFBLEVBQ1AsT0FBT29WLGlCQUFBLENBQWtCRCxjQUFBLENBQWUsS0FBS0ksSUFBQSxDQUFLWSxLQUFBLENBQU1DLFFBQUEsQ0FBU3BXLENBQUE7Z0JBR3JFLFNBQW9CLE1BQWhCQSxDQUFBLEVBQ0EsT0FBT29WLGlCQUFBLENBQWtCRCxjQUFBLENBQWUsS0FBS0ksSUFBQSxDQUFLWSxLQUFBLENBQU1DLFFBQUEsQ0FBUyxLQUFLYixJQUFBLENBQUtjLFFBQUEsQ0FBU0MsUUFBQTtnQkFFeEYsTUFBTSxJQUFJclIsS0FBQSxDQUFNLCtEQUNwQjtjQUFBO1lBQUEsR0FBQztjQUFBL0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQWdCcEQsQ0FBQTtnQkFFWixPQUFPLEtBQUt1VixJQUFBLENBQUtZLEtBQUEsQ0FBTXpTLEdBQUEsQ0FBSTFELENBQUEsRUFBTSxRQUNyQztjQUFBO1lBQUEsR0FBQztjQUFBa0MsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQ0lwRCxDQUFBLEVBQ0FNLENBQUEsRUFDQUYsQ0FBQTtnQkFFQSxNQUFNLElBQUlrUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFtQnBELENBQUE7Z0JBQ2YsTUFBTSxJQUFJc1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF0QyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBbUJwRCxDQUFBO2dCQUNmLE1BQU0sSUFBSXNTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBdEMsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksTUFBTSxJQUFJa1AsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF0QyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBaUJwRCxDQUFBO2dCQUNiLE1BQU0sSUFBSXNTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBdEMsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQWtCcEQsQ0FBQTtnQkFDZCxNQUFNLElBQUlzUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUF1QnBELENBQUE7Z0JBQ25CLE1BQU0sSUFBSXNTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBdEMsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQXNDcEQsQ0FBQTtnQkFDbEMsTUFBTSxJQUFJc1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF0QyxHQUFBO2NBQUFrQixLQUFBLEVBQ0QsU0FBQUEsQ0FBMkJwRCxDQUFBO2dCQUN2QixNQUFNLElBQUlzUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUEwQnBELENBQUE7Z0JBQ3RCLE1BQU0sSUFBSXNTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBdEMsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQXNCcEQsQ0FBQSxFQUFjTSxDQUFBO2dCQUNoQyxNQUFNLElBQUlnUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUF1QnBELENBQUEsRUFBY00sQ0FBQTtnQkFDakMsTUFBTSxJQUFJZ1MsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF0QyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBNkJwRCxDQUFBO2dCQUN6QixNQUFNLElBQUlzUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUFnQ3BELENBQUE7Z0JBQzVCLE9BQU82SCxPQUFBLENBQVEwQixPQUFBLE1BQVEsRUFDM0I7Y0FBQTtZQUFBLEdBQUM7Y0FBQXJILEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUNJcEQsQ0FBQTtnQkFHQSxNQUFNLElBQUlpRixLQUFBLENBQU0sMEJBQ3BCO2NBQUE7WUFBQSxHQUFDO2NBQUEvQyxHQUFBO2NBQUFrQixLQUFBLEVBRUQsU0FBQUEsQ0FBdUJwRCxDQUFBLEVBQXNCTSxDQUFBO2dCQUN6QyxNQUFNLElBQUlnUywyQ0FBQSxDQUFBOU4sRUFDZCxDQURjLENBQ2Q7Y0FBQTtZQUFBLEdBQUM7Y0FBQXRDLEdBQUE7Y0FBQWtCLEtBQUEsRUFDRCxTQUFBQSxDQUE4QnBELENBQUE7Z0JBQzFCLE1BQU0sSUFBSXNTLDJDQUFBLENBQUE5TixFQUNkLENBRGMsQ0FDZDtjQUFBO1lBQUEsR0FBQztjQUFBdEMsR0FBQTtjQUFBa0IsS0FBQSxFQUVELFNBQUFBLENBQUE7Z0JBQ0ksTUFBTSxJQUFJa1AsMkNBQUEsQ0FBQTlOLEVBQ2QsQ0FEYyxDQUNkO2NBQUE7WUFBQSxHQUFDO2NBQUF0QyxHQUFBO2NBQUFrQixLQUFBLFdBQUEwQixpQ0FBQTVDLEdBQUEsRUFBQTZDLElBQUE7Z0JBQUEsS0FBQTdDLEdBQUEsSUFBQThDLElBQUEsQ0FBQUQsSUFBQTtjQUFBO1lBQUE7WUF4SkEsSUFBQTBSLFlBQUEsRUFwR0FoQixrREFBQSxFQVJBRCx1QkFvUUE7VUFBQSxDQWpTaUI7VUF1U3JCN1AsY0FBQTtVQUhxQzVFLFdBQUE7UUFBL0IsU0FBU3NSLHVCQUF1QnJTLENBQUE7VUFFbkMsT0FBTyxJQUFJc1YsZ0JBQUEsQ0FBaUJ0VixDQUFBLENBQ2hDO1FBQUE7UUFBQzJGLGNBQUEseUJBQUFqRixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBRSxPQUFBLFdBQUErRSxjQUFBLEtBQUFBLGNBQUEsQ0FBQTdFLFFBQUEsQ0ExVWVvVSxvQkFBQSxFQUFvQixtSkFBQXZQLGNBQUEsQ0FBQTdFLFFBQUEsQ0FhM0JxVSxjQUFBLEVBQWMsNklBQUF4UCxjQUFBLENBQUE3RSxRQUFBLENBWWRzVSxpQkFBQSxFQUFpQixnSkFBQXpQLGNBQUEsQ0FBQTdFLFFBQUEsQ0FVcEJ3VSxnQkFBQSxFQUFnQiwrSUFBQTNQLGNBQUEsQ0FBQTdFLFFBQUEsQ0FvU051UixzQkFBQSxFQUFzQixzSkFBQXRSLFdBQUEseUJBQUFMLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFLLFdBQUEsV0FBQUEsV0FBQSxJQUFBQSxXQUFBLENBQUFDLE1BQUE7TUFBQTtNQUFBLGVBQUFoQixDQUFBLEVBQUFNLENBQUEsRUFBQUYsQ0FBQTtRQUFBLElBQUFLLENBQUE7UUFBQSxTQUFBWixFQUFBRyxDQUFBO1VBQUEsT0FBQUgsQ0FBQSx3QkFBQXVCLE1BQUEsdUJBQUFBLE1BQUEsQ0FBQUMsUUFBQSxhQUFBckIsQ0FBQTtZQUFBLGNBQUFBLENBQUE7VUFBQSxjQUFBQSxDQUFBO1lBQUEsT0FBQUEsQ0FBQSx5QkFBQW9CLE1BQUEsSUFBQXBCLENBQUEsQ0FBQXNCLFdBQUEsS0FBQUYsTUFBQSxJQUFBcEIsQ0FBQSxLQUFBb0IsTUFBQSxDQUFBRyxTQUFBLHFCQUFBdkIsQ0FBQTtVQUFBLEdBQUFILENBQUEsQ0FBQUcsQ0FBQTtRQUFBO1FBQUEsU0FBQUYsRUFBQUUsQ0FBQSxFQUFBTSxDQUFBO1VBQUEsU0FBQUYsQ0FBQSxNQUFBQSxDQUFBLEdBQUFFLENBQUEsQ0FBQXFCLE1BQUEsRUFBQXZCLENBQUE7WUFBQSxJQUFBSyxDQUFBLEdBQUFILENBQUEsQ0FBQUYsQ0FBQTtZQUFBSyxDQUFBLENBQUFtQixVQUFBLEdBQUFuQixDQUFBLENBQUFtQixVQUFBLFFBQUFuQixDQUFBLENBQUFvQixZQUFBLGtCQUFBcEIsQ0FBQSxLQUFBQSxDQUFBLENBQUFxQixRQUFBLFFBQUFDLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQSxFQUFBRCxDQUFBLENBQUFVLENBQUEsQ0FBQXlCLEdBQUEsR0FBQXpCLENBQUE7VUFBQTtRQUFBO1FBQUEsU0FBQVYsRUFBQUMsQ0FBQTtVQUFBLElBQUFNLENBQUEsYUFBQU4sQ0FBQSxFQUFBTSxDQUFBO1lBQUEsZ0JBQUFULENBQUEsQ0FBQUcsQ0FBQSxNQUFBQSxDQUFBLFNBQUFBLENBQUE7WUFBQSxJQUFBSSxDQUFBLEdBQUFKLENBQUEsQ0FBQW9CLE1BQUEsQ0FBQWlCLFdBQUE7WUFBQSxlQUFBakMsQ0FBQTtjQUFBLElBQUFLLENBQUEsR0FBQUwsQ0FBQSxDQUFBa0MsSUFBQSxDQUFBdEMsQ0FBQTtjQUFBLGdCQUFBSCxDQUFBLENBQUFZLENBQUEsVUFBQUEsQ0FBQTtjQUFBLFVBQUFnQixTQUFBO1lBQUE7WUFBQSxPQUFBYyxNQUFBLENBQUF2QyxDQUFBO1VBQUEsRUFBQUEsQ0FBQTtVQUFBLG1CQUFBSCxDQUFBLENBQUFTLENBQUEsSUFBQUEsQ0FBQSxHQUFBQSxDQUFBO1FBQUE7UUFBQUYsQ0FBQSxDQUFBQyxDQUFBLENBQUFDLENBQUE7VUFBQStQLENBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUF2SyxDQUFBO1VBQUE7UUFBQSxJQUFBOUYsQ0FBQSxHQUFBSSxDQUFBLENBQUFJLEdBQUEsQ0FBQVIsQ0FBQSxJQUFBUyxDQUFBLHlCQUFBQyxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBQyxXQUFBLGNBQUFGLENBQUEsQ0FBQVQsQ0FBQSx5QkFBQVUsb0JBQUEsSUFBQUEsb0JBQUEsQ0FBQUUsT0FBQSxDQUFBQyxTQUFBO1FBQUEsSUNoVXJDK0UsQ0FBQTtVQTlENEJDLENBQUE7VUFBaEJDLENBQUEsR0FBZ0I7WUFBQSxPQUFBOUYsQ0FBQSxZQUFBQSxFQUFBO2NBQUEsV0FBQUEsQ0FBQSxFQUFBTSxDQUFBO2dCQUFBLE1BQUFOLENBQUEsWUFBQU0sQ0FBQSxhQUFBbUIsU0FBQTtjQUFBLFFBQUF6QixDQUFBO1lBQUEsR0FBQU0sQ0FBQTtjQUFBNEIsR0FBQTtjQUFBa0IsS0FBQSxFQUN6QixTQUFBQSxDQUFxQnBELENBQUEsRUFBYU0sQ0FBQTtnQkFDOUIsSUFBSUYsQ0FBQSxJQUFlO2tCQUNiSyxDQUFBLEdBQU9rVyxRQUFBLENBQVNDLG9CQUFBLENBQXFCLFFBQVEsTUFBTUQsUUFBQSxDQUFTRSxlQUFBO2tCQUU1RGhYLENBQUEsR0FBYzhXLFFBQUEsQ0FBU0csYUFBQSxDQUFjO2dCQUUzQyxTQUFTaFgsRUFBQTtrQkFDRE0sQ0FBQSxJQUlDUCxDQUFBLENBQU82TixVQUFBLElBQW9DLGFBQXRCN04sQ0FBQSxDQUFPNk4sVUFBQSxJQUFpRCxlQUF0QjdOLENBQUEsQ0FBTzZOLFVBQUEsS0FDL0R0TixDQUFBLElBQWUsR0FDZkUsQ0FBQSxHQUVSO2dCQUFBO2dCQU1BVCxDQUFBLENBQU9rSSxNQUFBLEdBQVNqSSxDQUFBLEVBQ2hCRCxDQUFBLENBQU80TixrQkFBQSxHQUFxQjNOLENBQUEsRUFJNUJELENBQUEsQ0FBT29JLE9BQUEsR0FBVTtrQkFDVHBJLENBQUEsQ0FBT2tYLFVBQUEsSUFDUGxYLENBQUEsQ0FBT2tYLFVBQUEsQ0FBV0MsV0FBQSxDQUFZblgsQ0FBQSxHQUVsQ1MsQ0FBQSxDQUFTLElBQUkyRSxLQUFBLENBQU0sK0JBQ3ZCO2dCQUFBLEdBS0FwRixDQUFBLENBQU9vWCxHQUFBLEdBQU1qWCxDQUFBLEVBQ2JILENBQUEsQ0FBT3FYLFlBQUEsQ0FBYSxlQUFlLG9CQUNuQ3pXLENBQUEsQ0FBSzBXLFdBQUEsQ0FBWXRYLENBQUEsQ0FDckI7Y0FBQTtZQUFBLEdBQUM7Y0FBQXFDLEdBQUE7Y0FBQWtCLEtBQUEsRUFFRCxTQUFBQSxDQUF5QnBELENBQUEsRUFBYU0sQ0FBQSxFQUFzQkYsQ0FBQTtnQkFBeUMsSUFBQUssQ0FBQTtrQkFVM0ZaLENBQUEsR0FBK0MsVUFBM0NZLENBQUEsR0FBR2tXLFFBQUEsQ0FBU0Msb0JBQUEsQ0FBcUIsUUFBUSxZQUFFLE1BQUFuVyxDQUFBLEdBQUFBLENBQUEsR0FBSWtXLFFBQUEsQ0FBU0UsZUFBQTtrQkFDNUQvVyxDQUFBLEdBQU82VyxRQUFBLENBQVNHLGFBQUEsQ0FBYztnQkFFcENoWCxDQUFBLENBQUtvWCxZQUFBLENBQWEsT0FBTyxlQUN6QnBYLENBQUEsQ0FBS29YLFlBQUEsQ0FBYSxRQUFRLGFBQzFCcFgsQ0FBQSxDQUFLME4sZ0JBQUEsQ0FBaUIsUUFkTjtrQkFBSCxPQUFTcE4sQ0FBQSxNQUFTLEVBQVU7Z0JBQUEsSUFlekNOLENBQUEsQ0FBSzBOLGdCQUFBLENBQWlCLFNBZFA7a0JBRVBwTixDQUFBLENBREFFLENBQUEsUUFDUyxJQUVBLElBQUkyRSxLQUFBLENBQU0sbUNBRTNCO2dCQUFBLElBU0FwRixDQUFBLENBQUtzWCxXQUFBLENBQVlyWCxDQUFBLEdBQ2pCQSxDQUFBLENBQUtvWCxZQUFBLENBQWEsUUFBUWxYLENBQUEsQ0FDOUI7Y0FBQTtZQUFBLElBN0R5QixRQUFBRixDQUFBLENBQUFFLENBQUEsQ0FBQXVCLFNBQUEsU0FBQWpCLENBQUEsSUFBQVIsQ0FBQSxDQUFBRSxDQUFBLEVBQUFNLENBQUEsR0FBQXlCLE1BQUEsQ0FBQUMsY0FBQSxDQUFBaEMsQ0FBQTtjQUFBOEIsUUFBQTtZQUFBLElBQUE5QixDQUFBO1lBQUEsSUFBQUEsQ0FBQSxFQUFBTSxDQTZEeEI7VUFBQSxDQTdEd0I7UUFBQSxDQThENUJzRixDQUFBLHlCQUFBbEYsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxjQUFBZ0YsQ0FBQSxDQUFBOUUsUUFBQSxDQTlEWWdGLENBQUEsRUFBZ0Isa0hBQUFELENBQUEseUJBQUFuRixvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUE4RSxDQUFBLENBQUE3RixDQUFBO01BQUE7SUFBQTtJQ0F6Qm9YLHdCQUFBLEdBQTJCLENBQUM7RUFHaEMsU0FBU2xXLG9CQUFvQmxCLENBQUE7SUFFNUIsSUFBSU0sQ0FBQSxHQUFlOFcsd0JBQUEsQ0FBeUJwWCxDQUFBO0lBQzVDLFNBQXFCLE1BQWpCTSxDQUFBLEVBQ0gsT0FBT0EsQ0FBQSxDQUFhK1csT0FBQTtJQUdyQixJQUFJalgsQ0FBQSxHQUFTZ1gsd0JBQUEsQ0FBeUJwWCxDQUFBLElBQVk7TUFDakRzWCxFQUFBLEVBQUl0WCxDQUFBO01BQ0p1WCxNQUFBLEdBQVE7TUFDUkYsT0FBQSxFQUFTLENBQUM7SUFBQTtJQVVYLE9BTkFHLG1CQUFBLENBQW9CeFgsQ0FBQSxFQUFVSSxDQUFBLEVBQVFBLENBQUEsQ0FBT2lYLE9BQUEsRUFBU25XLG1CQUFBLEdBR3REZCxDQUFBLENBQU9tWCxNQUFBLElBQVMsR0FHVG5YLENBQUEsQ0FBT2lYLE9BQ2Y7RUFBQTtFQ3hCQW5XLG1CQUFBLENBQW9CYixDQUFBLEdBQUksVUFBU0wsQ0FBQSxFQUFTTSxDQUFBO0lBQ3pDLEtBQUksSUFBSUYsQ0FBQSxJQUFPRSxDQUFBLEVBQ1hZLG1CQUFBLENBQW9CVCxDQUFBLENBQUVILENBQUEsRUFBWUYsQ0FBQSxNQUFTYyxtQkFBQSxDQUFvQlQsQ0FBQSxDQUFFVCxDQUFBLEVBQVNJLENBQUEsS0FDNUUyQixNQUFBLENBQU9DLGNBQUEsQ0FBZWhDLENBQUEsRUFBU0ksQ0FBQSxFQUFLO01BQUV3QixVQUFBLEdBQVk7TUFBTThCLEdBQUEsRUFBS3BELENBQUEsQ0FBV0YsQ0FBQTtJQUFBLEVBRzNFO0VBQUEsR0NQQWMsbUJBQUEsQ0FBb0JxRixDQUFBLEdBQUk7SUFDdkIsSUFBMEIsbUJBQWZGLFVBQUEsRUFBeUIsT0FBT0EsVUFBQTtJQUMzQztNQUNDLE9BQU8sUUFBUSxJQUFJbkMsUUFBQSxDQUFTLGNBQWIsRUFDaEI7SUFBQSxDQUFFLFFBQU9sRSxDQUFBO01BQ1IsSUFBc0IsbUJBQVh5WCxNQUFBLEVBQXFCLE9BQU9BLE1BQ3hDO0lBQUE7RUFDQSxDQVB1QixJQ0F4QnZXLG1CQUFBLENBQW9CVixHQUFBLEdBQU0sVUFBU1IsQ0FBQTtJQVNsQyxRQVJBQSxDQUFBLEdBQVMrQixNQUFBLENBQU9vQixNQUFBLENBQU9uRCxDQUFBLEdBQ1gwWCxRQUFBLEtBQVUxWCxDQUFBLENBQU8wWCxRQUFBLEdBQVcsS0FDeEMzVixNQUFBLENBQU9DLGNBQUEsQ0FBZWhDLENBQUEsRUFBUSxXQUFXO01BQ3hDNEIsVUFBQSxHQUFZO01BQ1orQixHQUFBLEVBQUssU0FBQUEsQ0FBQTtRQUNKLE1BQU0sSUFBSXNCLEtBQUEsQ0FBTSw0RkFBNEZqRixDQUFBLENBQU9zWCxFQUFBLENBQ3BIO01BQUE7SUFBQSxJQUVNdFgsQ0FDUjtFQUFBLEdDVkFrQixtQkFBQSxDQUFvQlQsQ0FBQSxHQUFJLFVBQVNULENBQUEsRUFBS00sQ0FBQTtJQUFRLE9BQU95QixNQUFBLENBQU9SLFNBQUEsQ0FBVTRJLGNBQUEsQ0FBZTdILElBQUEsQ0FBS3RDLENBQUEsRUFBS00sQ0FBQSxDQUFPO0VBQUE7RUNHdEcsSUFBSVcsbUJBQUEsR0FBc0JDLG1CQUFBLENBQW9CO0FBQUEiLCJpZ25vcmVMaXN0IjpbXX0=
|
|
1722
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsImMiLCJsIiwicyIsImYiLCJrdSIsIm1lc3NhZ2UiLCJBcnJheSIsImlzQXJyYXkiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInkiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwIiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJoIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibSIsIl8iLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkMiLCJrIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJNIiwiRiIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsImVudHJ5UG9pbnQiLCJyZXNvdXJjZVpvbmUiLCJxIiwic3R5bGVTaGVldCIsInNjcmlwdCIsIk4iLCJwdWJsaWNGb3JtIiwiY2F0Y2giLCJLIiwia29udHVyRG9tYWlucyIsImF1dGhvcml6ZWQiLCJhdXRoZW50aWNhdGlvbiIsImF1dGhTaWQiLCJBdXRob3JpemF0aW9uIiwiY2F1bGRyb25BcGlVcmwiLCJpc1Rlc3RTZXJ2ZXIiLCJyZW5kZXJDYWNoaW5nRm9ySUU4Iiwibm9ybWFsaXphdGlvbk9uU2VydmVyIiwibm9ybWF0aXZlVXJsIiwic2hvd05hdmlnYXRpb25TaWRlYmFyIiwib25SZW1vdmVBdHRhY2htZW50IiwiZmVlZGJhY2tFbmFibGVkIiwiaXNEaXNhYmxlZENsZWFuRm9ybSIsImlzRGlzYWJsZWRDbG9zZUJ1dHRvbiIsImlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24iLCJ0aGVtZSIsInRlbXBsYXRlc0FwaSIsInJlbmRlckZvcm0iLCJWIiwiVyIsInoiLCJzdGFydCIsInBhcnRpYWxSZW5kZXJpbmdGb3JJRTgiLCJwYXJzZUludCIsImNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0iLCJfQ29tbW9uX0Vycm9yc19fV0VCUEFDS19JTVBPUlRFRF9NT0RVTEVfMF9fIiwiX3JlZ2VuZXJhdG9yUnVudGltZSIsImFzeW5jSXRlcmF0b3IiLCJ0b1N0cmluZ1RhZyIsImRlZmluZSIsImFyZyIsIndyYXAiLCJfaW52b2tlIiwiX19hd2FpdCIsImRlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJyZXN1bHROYW1lIiwibmV4dExvYyIsInRyeUxvYyIsImNhdGNoTG9jIiwiZmluYWxseUxvYyIsImFmdGVyTG9jIiwidHJ5RW50cmllcyIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwibWFyayIsImF3cmFwIiwiQXN5bmNJdGVyYXRvciIsImFzeW5jIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzdG9wIiwicnZhbCIsImNvbXBsZXRlIiwiZmluaXNoIiwiZGVsZWdhdGVZaWVsZCIsImFzeW5jR2VuZXJhdG9yU3RlcCIsIl9hc3luY1RvR2VuZXJhdG9yIiwib3duS2V5cyIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJtb2RlbENoYW5nZUV2ZW50UGF0aCIsIm1hcENodW5rVmFsdWVzIiwicmVkdWNlQ2h1bmtWYWx1ZXMiLCJyZWR1Y2UiLCJMZWdhY3lQdWJsaWNGb3JtIiwiZm9ybSIsIl92YWxpZGF0ZUNoaWxkcmVuQnlQYXRoIiwiX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MiLCJwaWNrbGlzdHNQcm92aWRlciIsImdldERpZ2VzdEFwaVBpY2tsaXN0IiwicXVlcnkiLCJldmVudE1hbmFnZXIiLCJvbiIsIm9mZiIsImNoYW5nZVNldCIsInN0b3BBdXRvc2VuZCIsInVubW91bnQiLCJtb2RlbCIsImdldENodW5rIiwic2V0dGluZ3MiLCJmb3JtUm9vdCIsInZhbGlkYXRvciIsInZhbGlkYXRlQWxsIiwiX3JlbG9hZElubmVyIiwiZmlsbCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJkb2N1bWVudEVsZW1lbnQiLCJjcmVhdGVFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwic3JjIiwic2V0QXR0cmlidXRlIiwiYXBwZW5kQ2hpbGQiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJleHBvcnRzIiwiaWQiLCJsb2FkZWQiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwid2luZG93IiwiY2hpbGRyZW4iXSwic291cmNlcyI6WyJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmwudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL0Vycm9ycy50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9Db21tb24vVHlwaW5nVXRpbHMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvbm9kZV9tb2R1bGVzL3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0Zvcm1zL0NsaWVudC9DbGllbnQudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50U2V0dGluZ3MudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvSGVscGVycy9Mb2FkSW50b0RvY3VtZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZ2xvYmFsIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXJtb255IG1vZHVsZSBkZWNvcmF0b3IiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3N0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHJhZnRGdWxsSWQgfSBmcm9tIFwiLi4vVHlwZXMvRHJhZnRGdWxsSWRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGdldENsaWVudERyYWZ0SW5mb1VybChkcmFmdElkOiBEcmFmdEZ1bGxJZCkge1xuICAgIC8vIE5PVEUg0K3RgtCwINGE0YPQvdC60YbQuNGPINC+0LHRitGP0LLQu9C10L3QsCDQvtGC0LTQtdC70YzQvdC+LCDQuNCx0L4g0L7QvdCwINCy0YXQvtC00LjRgiDQsiDRgdC+0YHRgtCw0LIgY2xpZW50LmpzINC4XG4gICAgLy8g0L3QtSDQtNC+0LvQttC90L4g0L/RgNC+0LjRgdGF0L7QtNC40YLRjCDRg9GC0LXQttC10LvQtdC90LjRjyBjbGllbnQuanMt0LBcbiAgICByZXR1cm4gYHYxL25zLyR7ZHJhZnRJZC5uc30vZHJhZnRzLyR7ZHJhZnRJZC5kcmFmdElkfS9jbGllbnQtZHJhZnQtaW5mb2A7XG59XG4iLCJleHBvcnQgY2xhc3MgQXBwbGljYXRpb25FcnJvciBleHRlbmRzIEVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgICAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTm90SW1wbGVtZW50ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJPcGVyYXRpb24gbm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdFN1cHBvcnRlZEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIobWVzc2FnZSA/PyBcIk9wZXJhdGlvbiBub3Qgc3VwcG9ydGVkXCIpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRQcm9ncmFtU3RhdGVFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCBwcm9ncmFtIHN0YXRlXCIgKyAobWVzc2FnZSAhPSB1bmRlZmluZWQgPyBcIjogXCIgKyBtZXNzYWdlIDogXCJcIikpO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRBcmd1bWVudEVycm9yIGV4dGVuZHMgQXBwbGljYXRpb25FcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGFyZ3VtZW50TmFtZTogc3RyaW5nLCBtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKFxuICAgICAgICAgICAgbWVzc2FnZSAhPSB1bmRlZmluZWQgPyBgJHttZXNzYWdlfSAoYXJndW1lbnQ6ICR7YXJndW1lbnROYW1lfSlgIDogYEludmFsaWQgYXJndW1lbnQgdmFsdWU6ICR7YXJndW1lbnROYW1lfWBcbiAgICAgICAgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBUeXBpbmdFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIoXCJJbnZhbGlkIHR5cGluZ1wiKTtcbiAgICB9XG59XG4iLCIvKioqXG4gKiDQodGC0YDQvtCz0L7RgtC40L/QuNC30LjRgNC+0LLQsNC90L3QsNGPINC30LDQvNC10L3QsCDQtNC70Y8gQm9vbGVhbiguLi4pXG4gKiDQntCx0YvRh9C90L4g0LjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyBbLi4uXS5maWx0ZXIoaXNOb3ROdWxsT3JVbmRlZmluZWQpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc05vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGlucHV0IGlzIE5vbk51bGxhYmxlPFQ+IHtcbiAgICByZXR1cm4gaW5wdXQgIT0gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5naWZ5VW5rbm93bkVycm9yKGVycm9yOiB1bmtub3duKTogdW5kZWZpbmVkIHwgc3RyaW5nIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICByZXR1cm4gdHlwZW9mIGVycm9yID09PSBcIm9iamVjdFwiICYmIGVycm9yPy5bXCJtZXNzYWdlXCJdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlTm90TnVsbE9yVW5kZWZpbmVkPFQ+KGlucHV0OiBUKTogYXNzZXJ0cyBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgaWYgKCFpc05vdE51bGxPclVuZGVmaW5lZChpbnB1dCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBWYWx1ZSBtdXN0IGJlIGRlZmluZWRgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCk6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IHR5cGUgRXJyb3JGaXJzdENhbGxiYWNrPFQ+ID0gKC4uLmFyZ3M6IFtFcnJvciwgbnVsbCB8IHVuZGVmaW5lZF0gfCBbbnVsbCB8IHVuZGVmaW5lZCwgVF0gfCBbRXJyb3JdKSA9PiB2b2lkO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVqZWN0KG1lc3NhZ2U/OiBzdHJpbmcgfCBFcnJvcik6IG5ldmVyIHtcbiAgICBpZiAodHlwZW9mIG1lc3NhZ2UgPT09IFwic3RyaW5nXCIgfHwgbWVzc2FnZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UgPz8gXCJVbmRlZmluZWQgaXMgbm90IGFsbG93ZWRcIik7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbWVzc2FnZTtcbiAgICB9XG59XG5cbnR5cGUgQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7IGxlbmd0aDogVExlbmd0aCB9XG4gICAgPyBUUmVzdFxuICAgIDogQXJyYXlPZkxlbmd0aDxUSXRlbSwgVExlbmd0aCwgW1RJdGVtLCAuLi5UUmVzdF0+O1xuXG5leHBvcnQgdHlwZSBNaW5MZW5ndGhBcnJheTxUSXRlbSwgVExlbmd0aCBleHRlbmRzIG51bWJlciwgVFJlc3QgZXh0ZW5kcyBUSXRlbVtdID0gW10+ID0gVFJlc3QgZXh0ZW5kcyB7XG4gICAgbGVuZ3RoOiBUTGVuZ3RoO1xufVxuICAgID8gWy4uLlRSZXN0LCAuLi5USXRlbVtdXVxuICAgIDogTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGgsIFsuLi5UUmVzdCwgVEl0ZW1dPjtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbWluTGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCBUTnVtPiB7XG4gICAgcmV0dXJuIGl0ZW1zLmxlbmd0aCA+PSBtaW5MZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtaW5MZW5ndGhPclVuZGVmaW5lZDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogdW5kZWZpbmVkIHwgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIGlmIChpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbWluTGVuZ3RoKSkge1xuICAgICAgICByZXR1cm4gaXRlbXM7XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVJc0FycmF5PFQ+KGl0ZW1zOiB1bmtub3duKTogVFtdIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoaXRlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgTXVzdCBiZSBhbiBhcnJheSFgKTtcbiAgICB9XG4gICAgcmV0dXJuIGl0ZW1zIGFzIFRbXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID09PSBsZW5ndGg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheUlzTm90RW1wdHk8VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SGFzQXRMZWFzdE9uZUl0ZW08VD4oaXRlbXM6IHJlYWRvbmx5IFRbXSk6IGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICByZXR1cm4gaXRlbXMubGVuZ3RoID4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogYXNzZXJ0cyBpdGVtcyBpcyBNaW5MZW5ndGhBcnJheTxULCAxPiB7XG4gICAgaWYgKCFhcnJheUlzTm90RW1wdHkoaXRlbXMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBiZSBub3QgZW1wdHlgKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUhhc0xlbmd0aDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWFycmF5SGFzTGVuZ3RoKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgc2hvdWxkIGhhcyBsZW5ndGggJHtsZW5ndGh9YCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWw8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGFzc2VydHMgaXRlbXMgaXMgQXJyYXlPZkxlbmd0aDxULCBUTnVtPiB7XG4gICAgaWYgKCFpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbChpdGVtcywgbGVuZ3RoKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEFycmF5IG11c3QgaGF2ZSBtaW5pbWFsIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVOZXZlcihuZXZlckFyZ3VtZW50OiBuZXZlcik6IHZvaWQge1xuICAgIC8vIG5vb3Bcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFuZEdldFN0cmluZyhuZXZlckFyZ3VtZW50OiBuZXZlcik6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke25ldmVyQXJndW1lbnR9YDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJ1bkFzeW5jQWN0aW9uKGFjdGlvbjogKCkgPT4gUHJvbWlzZTx2b2lkPik6IHZvaWQge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICBhY3Rpb24oKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dCA9PT0gXCJcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTm90TnVsbE9yRW1wdHkoaW5wdXQ6IHN0cmluZyB8IHVuZGVmaW5lZCk6IGlucHV0IGlzIHN0cmluZyB7XG4gICAgcmV0dXJuICFpc051bGxPckVtcHR5KGlucHV0KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVsbE9yV2hpdGVTcGFjZShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCk6IGlucHV0IGlzIHVuZGVmaW5lZCB8IG51bGwge1xuICAgIHJldHVybiBpbnB1dCA9PSB1bmRlZmluZWQgfHwgaW5wdXQudHJpbSgpID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJpbUxhc3RTbGFzaCh1cmw6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHVybC5zbGljZSgtMSkgPT09IFwiL1wiID8gdXJsLnNsaWNlKDAsIC0xKSA6IHVybDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydElzPFQ+KHZhbHVlOiBUKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuIiwiLyogZXNsaW50LWRpc2FibGUgbm8tcHJvdG90eXBlLWJ1aWx0aW5zICovXG52YXIgZyA9XG4gICh0eXBlb2YgZ2xvYmFsVGhpcyAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsVGhpcykgfHxcbiAgKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyAmJiBzZWxmKSB8fFxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnICYmIGdsb2JhbCkgfHxcbiAge31cblxudmFyIHN1cHBvcnQgPSB7XG4gIHNlYXJjaFBhcmFtczogJ1VSTFNlYXJjaFBhcmFtcycgaW4gZyxcbiAgaXRlcmFibGU6ICdTeW1ib2wnIGluIGcgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gIGJsb2I6XG4gICAgJ0ZpbGVSZWFkZXInIGluIGcgJiZcbiAgICAnQmxvYicgaW4gZyAmJlxuICAgIChmdW5jdGlvbigpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5ldyBCbG9iKClcbiAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gZyxcbiAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gZ1xufVxuXG5mdW5jdGlvbiBpc0RhdGFWaWV3KG9iaikge1xuICByZXR1cm4gb2JqICYmIERhdGFWaWV3LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKG9iailcbn1cblxuaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIpIHtcbiAgdmFyIHZpZXdDbGFzc2VzID0gW1xuICAgICdbb2JqZWN0IEludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50OENsYW1wZWRBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDE2QXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IEludDMyQXJyYXldJyxcbiAgICAnW29iamVjdCBVaW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IEZsb2F0NjRBcnJheV0nXG4gIF1cblxuICB2YXIgaXNBcnJheUJ1ZmZlclZpZXcgPVxuICAgIEFycmF5QnVmZmVyLmlzVmlldyB8fFxuICAgIGZ1bmN0aW9uKG9iaikge1xuICAgICAgcmV0dXJuIG9iaiAmJiB2aWV3Q2xhc3Nlcy5pbmRleE9mKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChvYmopKSA+IC0xXG4gICAgfVxufVxuXG5mdW5jdGlvbiBub3JtYWxpemVOYW1lKG5hbWUpIHtcbiAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgfVxuICBpZiAoL1teYS16MC05XFwtIyQlJicqKy5eX2B8fiFdL2kudGVzdChuYW1lKSB8fCBuYW1lID09PSAnJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lOiBcIicgKyBuYW1lICsgJ1wiJylcbiAgfVxuICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgdmFsdWUgPSBTdHJpbmcodmFsdWUpXG4gIH1cbiAgcmV0dXJuIHZhbHVlXG59XG5cbi8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5mdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuICB2YXIgaXRlcmF0b3IgPSB7XG4gICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICByZXR1cm4ge2RvbmU6IHZhbHVlID09PSB1bmRlZmluZWQsIHZhbHVlOiB2YWx1ZX1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvclxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpdGVyYXRvclxufVxuXG5leHBvcnQgZnVuY3Rpb24gSGVhZGVycyhoZWFkZXJzKSB7XG4gIHRoaXMubWFwID0ge31cblxuICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIHZhbHVlKVxuICAgIH0sIHRoaXMpXG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShoZWFkZXJzKSkge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIGlmIChoZWFkZXIubGVuZ3RoICE9IDIpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSGVhZGVycyBjb25zdHJ1Y3RvcjogZXhwZWN0ZWQgbmFtZS92YWx1ZSBwYWlyIHRvIGJlIGxlbmd0aCAyLCBmb3VuZCcgKyBoZWFkZXIubGVuZ3RoKVxuICAgICAgfVxuICAgICAgdGhpcy5hcHBlbmQoaGVhZGVyWzBdLCBoZWFkZXJbMV0pXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAgIH0sIHRoaXMpXG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcbiAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgdmFyIG9sZFZhbHVlID0gdGhpcy5tYXBbbmFtZV1cbiAgdGhpcy5tYXBbbmFtZV0gPSBvbGRWYWx1ZSA/IG9sZFZhbHVlICsgJywgJyArIHZhbHVlIDogdmFsdWVcbn1cblxuSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICByZXR1cm4gdGhpcy5oYXMobmFtZSkgPyB0aGlzLm1hcFtuYW1lXSA6IG51bGxcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuICByZXR1cm4gdGhpcy5tYXAuaGFzT3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gIGZvciAodmFyIG5hbWUgaW4gdGhpcy5tYXApIHtcbiAgICBpZiAodGhpcy5tYXAuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwodGhpc0FyZywgdGhpcy5tYXBbbmFtZV0sIG5hbWUsIHRoaXMpXG4gICAgfVxuICB9XG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChuYW1lKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUpIHtcbiAgICBpdGVtcy5wdXNoKHZhbHVlKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbkhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgdmFyIGl0ZW1zID0gW11cbiAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKVxuICB9KVxuICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG59XG5cbmlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gIEhlYWRlcnMucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl0gPSBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzXG59XG5cbmZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgaWYgKGJvZHkuX25vQm9keSkgcmV0dXJuXG4gIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpKVxuICB9XG4gIGJvZHkuYm9keVVzZWQgPSB0cnVlXG59XG5cbmZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlc29sdmUocmVhZGVyLnJlc3VsdClcbiAgICB9XG4gICAgcmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG4gICAgfVxuICB9KVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICB2YXIgcHJvbWlzZSA9IGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIHJlYWRlci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgdmFyIG1hdGNoID0gL2NoYXJzZXQ9KFtBLVphLXowLTlfLV0rKS8uZXhlYyhibG9iLnR5cGUpXG4gIHZhciBlbmNvZGluZyA9IG1hdGNoID8gbWF0Y2hbMV0gOiAndXRmLTgnXG4gIHJlYWRlci5yZWFkQXNUZXh0KGJsb2IsIGVuY29kaW5nKVxuICByZXR1cm4gcHJvbWlzZVxufVxuXG5mdW5jdGlvbiByZWFkQXJyYXlCdWZmZXJBc1RleHQoYnVmKSB7XG4gIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmKVxuICB2YXIgY2hhcnMgPSBuZXcgQXJyYXkodmlldy5sZW5ndGgpXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB2aWV3Lmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhcnNbaV0gPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHZpZXdbaV0pXG4gIH1cbiAgcmV0dXJuIGNoYXJzLmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGJ1ZmZlckNsb25lKGJ1Zikge1xuICBpZiAoYnVmLnNsaWNlKSB7XG4gICAgcmV0dXJuIGJ1Zi5zbGljZSgwKVxuICB9IGVsc2Uge1xuICAgIHZhciB2aWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ5dGVMZW5ndGgpXG4gICAgdmlldy5zZXQobmV3IFVpbnQ4QXJyYXkoYnVmKSlcbiAgICByZXR1cm4gdmlldy5idWZmZXJcbiAgfVxufVxuXG5mdW5jdGlvbiBCb2R5KCkge1xuICB0aGlzLmJvZHlVc2VkID0gZmFsc2VcblxuICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcbiAgICAvKlxuICAgICAgZmV0Y2gtbW9jayB3cmFwcyB0aGUgUmVzcG9uc2Ugb2JqZWN0IGluIGFuIEVTNiBQcm94eSB0b1xuICAgICAgcHJvdmlkZSB1c2VmdWwgdGVzdCBoYXJuZXNzIGZlYXR1cmVzIHN1Y2ggYXMgZmx1c2guIEhvd2V2ZXIsIG9uXG4gICAgICBFUzUgYnJvd3NlcnMgd2l0aG91dCBmZXRjaCBvciBQcm94eSBzdXBwb3J0IHBvbGx5ZmlsbHMgbXVzdCBiZSB1c2VkO1xuICAgICAgdGhlIHByb3h5LXBvbGx5ZmlsbCBpcyB1bmFibGUgdG8gcHJveHkgYW4gYXR0cmlidXRlIHVubGVzcyBpdCBleGlzdHNcbiAgICAgIG9uIHRoZSBvYmplY3QgYmVmb3JlIHRoZSBQcm94eSBpcyBjcmVhdGVkLiBUaGlzIGNoYW5nZSBlbnN1cmVzXG4gICAgICBSZXNwb25zZS5ib2R5VXNlZCBleGlzdHMgb24gdGhlIGluc3RhbmNlLCB3aGlsZSBtYWludGFpbmluZyB0aGVcbiAgICAgIHNlbWFudGljIG9mIHNldHRpbmcgUmVxdWVzdC5ib2R5VXNlZCBpbiB0aGUgY29uc3RydWN0b3IgYmVmb3JlXG4gICAgICBfaW5pdEJvZHkgaXMgY2FsbGVkLlxuICAgICovXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXNlbGYtYXNzaWduXG4gICAgdGhpcy5ib2R5VXNlZCA9IHRoaXMuYm9keVVzZWRcbiAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlcbiAgICBpZiAoIWJvZHkpIHtcbiAgICAgIHRoaXMuX25vQm9keSA9IHRydWU7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiBzdXBwb3J0LmJsb2IgJiYgaXNEYXRhVmlldyhib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keS5idWZmZXIpXG4gICAgICAvLyBJRSAxMC0xMSBjYW4ndCBoYW5kbGUgYSBEYXRhVmlldyBib2R5LlxuICAgICAgdGhpcy5fYm9keUluaXQgPSBuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSlcbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgKEFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpIHx8IGlzQXJyYXlCdWZmZXJWaWV3KGJvZHkpKSkge1xuICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyID0gYnVmZmVyQ2xvbmUoYm9keSlcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5ID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGJvZHkpXG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xuICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlBcnJheUJ1ZmZlcl0pKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIGJsb2InKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG4gICAgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgdmFyIGlzQ29uc3VtZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgaWYgKGlzQ29uc3VtZWQpIHtcbiAgICAgICAgcmV0dXJuIGlzQ29uc3VtZWRcbiAgICAgIH0gZWxzZSBpZiAoQXJyYXlCdWZmZXIuaXNWaWV3KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShcbiAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnVmZmVyLnNsaWNlKFxuICAgICAgICAgICAgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVPZmZzZXQsXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCArIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlTGVuZ3RoXG4gICAgICAgICAgKVxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcilcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgcmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIGFzIEFycmF5QnVmZmVyJylcbiAgICB9XG4gIH1cblxuICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICByZXR1cm4gcmVhZEJsb2JBc1RleHQodGhpcy5fYm9keUJsb2IpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUocmVhZEFycmF5QnVmZmVyQXNUZXh0KHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikpXG4gICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0JylcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICB9XG4gIH1cblxuICBpZiAoc3VwcG9ydC5mb3JtRGF0YSkge1xuICAgIHRoaXMuZm9ybURhdGEgPSBmdW5jdGlvbigpIHtcbiAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcbiAgICB9XG4gIH1cblxuICB0aGlzLmpzb24gPSBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG52YXIgbWV0aG9kcyA9IFsnQ09OTkVDVCcsICdERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BUSU9OUycsICdQQVRDSCcsICdQT1NUJywgJ1BVVCcsICdUUkFDRSddXG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU1ldGhvZChtZXRob2QpIHtcbiAgdmFyIHVwY2FzZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuICByZXR1cm4gbWV0aG9kcy5pbmRleE9mKHVwY2FzZWQpID4gLTEgPyB1cGNhc2VkIDogbWV0aG9kXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXF1ZXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1BsZWFzZSB1c2UgdGhlIFwibmV3XCIgb3BlcmF0b3IsIHRoaXMgRE9NIG9iamVjdCBjb25zdHJ1Y3RvciBjYW5ub3QgYmUgY2FsbGVkIGFzIGEgZnVuY3Rpb24uJylcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG5cbiAgaWYgKGlucHV0IGluc3RhbmNlb2YgUmVxdWVzdCkge1xuICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICB9XG4gICAgdGhpcy51cmwgPSBpbnB1dC51cmxcbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gaW5wdXQuY3JlZGVudGlhbHNcbiAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICB9XG4gICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2RcbiAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgdGhpcy5zaWduYWwgPSBpbnB1dC5zaWduYWxcbiAgICBpZiAoIWJvZHkgJiYgaW5wdXQuX2JvZHlJbml0ICE9IG51bGwpIHtcbiAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAgICAgIGlucHV0LmJvZHlVc2VkID0gdHJ1ZVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB0aGlzLnVybCA9IFN0cmluZyhpbnB1dClcbiAgfVxuXG4gIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ3NhbWUtb3JpZ2luJ1xuICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcbiAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gIH1cbiAgdGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRob2QgfHwgJ0dFVCcpXG4gIHRoaXMubW9kZSA9IG9wdGlvbnMubW9kZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICB0aGlzLnNpZ25hbCA9IG9wdGlvbnMuc2lnbmFsIHx8IHRoaXMuc2lnbmFsIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCdBYm9ydENvbnRyb2xsZXInIGluIGcpIHtcbiAgICAgIHZhciBjdHJsID0gbmV3IEFib3J0Q29udHJvbGxlcigpO1xuICAgICAgcmV0dXJuIGN0cmwuc2lnbmFsO1xuICAgIH1cbiAgfSgpKTtcbiAgdGhpcy5yZWZlcnJlciA9IG51bGxcblxuICBpZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBib2R5KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICB9XG4gIHRoaXMuX2luaXRCb2R5KGJvZHkpXG5cbiAgaWYgKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSB7XG4gICAgaWYgKG9wdGlvbnMuY2FjaGUgPT09ICduby1zdG9yZScgfHwgb3B0aW9ucy5jYWNoZSA9PT0gJ25vLWNhY2hlJykge1xuICAgICAgLy8gU2VhcmNoIGZvciBhICdfJyBwYXJhbWV0ZXIgaW4gdGhlIHF1ZXJ5IHN0cmluZ1xuICAgICAgdmFyIHJlUGFyYW1TZWFyY2ggPSAvKFs/Jl0pXz1bXiZdKi9cbiAgICAgIGlmIChyZVBhcmFtU2VhcmNoLnRlc3QodGhpcy51cmwpKSB7XG4gICAgICAgIC8vIElmIGl0IGFscmVhZHkgZXhpc3RzIHRoZW4gc2V0IHRoZSB2YWx1ZSB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdGhpcy51cmwgPSB0aGlzLnVybC5yZXBsYWNlKHJlUGFyYW1TZWFyY2gsICckMV89JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gT3RoZXJ3aXNlIGFkZCBhIG5ldyAnXycgcGFyYW1ldGVyIHRvIHRoZSBlbmQgd2l0aCB0aGUgY3VycmVudCB0aW1lXG4gICAgICAgIHZhciByZVF1ZXJ5U3RyaW5nID0gL1xcPy9cbiAgICAgICAgdGhpcy51cmwgKz0gKHJlUXVlcnlTdHJpbmcudGVzdCh0aGlzLnVybCkgPyAnJicgOiAnPycpICsgJ189JyArIG5ldyBEYXRlKCkuZ2V0VGltZSgpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cblJlcXVlc3QucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVxdWVzdCh0aGlzLCB7Ym9keTogdGhpcy5fYm9keUluaXR9KVxufVxuXG5mdW5jdGlvbiBkZWNvZGUoYm9keSkge1xuICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gIGJvZHlcbiAgICAudHJpbSgpXG4gICAgLnNwbGl0KCcmJylcbiAgICAuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYgKGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAgdmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBmb3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgcmV0dXJuIGZvcm1cbn1cblxuZnVuY3Rpb24gcGFyc2VIZWFkZXJzKHJhd0hlYWRlcnMpIHtcbiAgdmFyIGhlYWRlcnMgPSBuZXcgSGVhZGVycygpXG4gIC8vIFJlcGxhY2UgaW5zdGFuY2VzIG9mIFxcclxcbiBhbmQgXFxuIGZvbGxvd2VkIGJ5IGF0IGxlYXN0IG9uZSBzcGFjZSBvciBob3Jpem9udGFsIHRhYiB3aXRoIGEgc3BhY2VcbiAgLy8gaHR0cHM6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzcyMzAjc2VjdGlvbi0zLjJcbiAgdmFyIHByZVByb2Nlc3NlZEhlYWRlcnMgPSByYXdIZWFkZXJzLnJlcGxhY2UoL1xccj9cXG5bXFx0IF0rL2csICcgJylcbiAgLy8gQXZvaWRpbmcgc3BsaXQgdmlhIHJlZ2V4IHRvIHdvcmsgYXJvdW5kIGEgY29tbW9uIElFMTEgYnVnIHdpdGggdGhlIGNvcmUtanMgMy42LjAgcmVnZXggcG9seWZpbGxcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2dpdGh1Yi9mZXRjaC9pc3N1ZXMvNzQ4XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy83NTFcbiAgcHJlUHJvY2Vzc2VkSGVhZGVyc1xuICAgIC5zcGxpdCgnXFxyJylcbiAgICAubWFwKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgcmV0dXJuIGhlYWRlci5pbmRleE9mKCdcXG4nKSA9PT0gMCA/IGhlYWRlci5zdWJzdHIoMSwgaGVhZGVyLmxlbmd0aCkgOiBoZWFkZXJcbiAgICB9KVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGxpbmUpIHtcbiAgICAgIHZhciBwYXJ0cyA9IGxpbmUuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHBhcnRzLnNoaWZ0KCkudHJpbSgpXG4gICAgICBpZiAoa2V5KSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHBhcnRzLmpvaW4oJzonKS50cmltKClcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBoZWFkZXJzLmFwcGVuZChrZXksIHZhbHVlKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNvbnNvbGUud2FybignUmVzcG9uc2UgJyArIGVycm9yLm1lc3NhZ2UpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gaGVhZGVyc1xufVxuXG5Cb2R5LmNhbGwoUmVxdWVzdC5wcm90b3R5cGUpXG5cbmV4cG9ydCBmdW5jdGlvbiBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgUmVzcG9uc2UpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG4gIGlmICghb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSB7fVxuICB9XG5cbiAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gIHRoaXMuc3RhdHVzID0gb3B0aW9ucy5zdGF0dXMgPT09IHVuZGVmaW5lZCA/IDIwMCA6IG9wdGlvbnMuc3RhdHVzXG4gIGlmICh0aGlzLnN0YXR1cyA8IDIwMCB8fCB0aGlzLnN0YXR1cyA+IDU5OSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKFwiRmFpbGVkIHRvIGNvbnN0cnVjdCAnUmVzcG9uc2UnOiBUaGUgc3RhdHVzIHByb3ZpZGVkICgwKSBpcyBvdXRzaWRlIHRoZSByYW5nZSBbMjAwLCA1OTldLlwiKVxuICB9XG4gIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYgdGhpcy5zdGF0dXMgPCAzMDBcbiAgdGhpcy5zdGF0dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0ID09PSB1bmRlZmluZWQgPyAnJyA6ICcnICsgb3B0aW9ucy5zdGF0dXNUZXh0XG4gIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xuICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClcbn1cblxuQm9keS5jYWxsKFJlc3BvbnNlLnByb3RvdHlwZSlcblxuUmVzcG9uc2UucHJvdG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtcbiAgICBzdGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgIHN0YXR1c1RleHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxuICAgIHVybDogdGhpcy51cmxcbiAgfSlcbn1cblxuUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDIwMCwgc3RhdHVzVGV4dDogJyd9KVxuICByZXNwb25zZS5vayA9IGZhbHNlXG4gIHJlc3BvbnNlLnN0YXR1cyA9IDBcbiAgcmVzcG9uc2UudHlwZSA9ICdlcnJvcidcbiAgcmV0dXJuIHJlc3BvbnNlXG59XG5cbnZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAyLCAzMDMsIDMwNywgMzA4XVxuXG5SZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVzKSA9PT0gLTEpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG4gIH1cblxuICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbn1cblxuZXhwb3J0IHZhciBET01FeGNlcHRpb24gPSBnLkRPTUV4Y2VwdGlvblxudHJ5IHtcbiAgbmV3IERPTUV4Y2VwdGlvbigpXG59IGNhdGNoIChlcnIpIHtcbiAgRE9NRXhjZXB0aW9uID0gZnVuY3Rpb24obWVzc2FnZSwgbmFtZSkge1xuICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2VcbiAgICB0aGlzLm5hbWUgPSBuYW1lXG4gICAgdmFyIGVycm9yID0gRXJyb3IobWVzc2FnZSlcbiAgICB0aGlzLnN0YWNrID0gZXJyb3Iuc3RhY2tcbiAgfVxuICBET01FeGNlcHRpb24ucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShFcnJvci5wcm90b3R5cGUpXG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBET01FeGNlcHRpb25cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZldGNoKGlucHV0LCBpbml0KSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXG4gICAgaWYgKHJlcXVlc3Quc2lnbmFsICYmIHJlcXVlc3Quc2lnbmFsLmFib3J0ZWQpIHtcbiAgICAgIHJldHVybiByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgfVxuXG4gICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpXG5cbiAgICBmdW5jdGlvbiBhYm9ydFhocigpIHtcbiAgICAgIHhoci5hYm9ydCgpXG4gICAgfVxuXG4gICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgdmFyIG9wdGlvbnMgPSB7XG4gICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuICAgICAgICBoZWFkZXJzOiBwYXJzZUhlYWRlcnMoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKVxuICAgICAgfVxuICAgICAgLy8gVGhpcyBjaGVjayBpZiBzcGVjaWZpY2FsbHkgZm9yIHdoZW4gYSB1c2VyIGZldGNoZXMgYSBmaWxlIGxvY2FsbHkgZnJvbSB0aGUgZmlsZSBzeXN0ZW1cbiAgICAgIC8vIE9ubHkgaWYgdGhlIHN0YXR1cyBpcyBvdXQgb2YgYSBub3JtYWwgcmFuZ2VcbiAgICAgIGlmIChyZXF1ZXN0LnVybC5pbmRleE9mKCdmaWxlOi8vJykgPT09IDAgJiYgKHhoci5zdGF0dXMgPCAyMDAgfHwgeGhyLnN0YXR1cyA+IDU5OSkpIHtcbiAgICAgICAgb3B0aW9ucy5zdGF0dXMgPSAyMDA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IHhoci5zdGF0dXM7XG4gICAgICB9XG4gICAgICBvcHRpb25zLnVybCA9ICdyZXNwb25zZVVSTCcgaW4geGhyID8geGhyLnJlc3BvbnNlVVJMIDogb3B0aW9ucy5oZWFkZXJzLmdldCgnWC1SZXF1ZXN0LVVSTCcpXG4gICAgICB2YXIgYm9keSA9ICdyZXNwb25zZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShuZXcgUmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmVycm9yID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IHRpbWVkIG91dCcpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICB4aHIub25hYm9ydCA9IGZ1bmN0aW9uKCkge1xuICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBET01FeGNlcHRpb24oJ0Fib3J0ZWQnLCAnQWJvcnRFcnJvcicpKVxuICAgICAgfSwgMClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBmaXhVcmwodXJsKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gdXJsID09PSAnJyAmJiBnLmxvY2F0aW9uLmhyZWYgPyBnLmxvY2F0aW9uLmhyZWYgOiB1cmxcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgcmV0dXJuIHVybFxuICAgICAgfVxuICAgIH1cblxuICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCBmaXhVcmwocmVxdWVzdC51cmwpLCB0cnVlKVxuXG4gICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICB9IGVsc2UgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdvbWl0Jykge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhocikge1xuICAgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2Jsb2InXG4gICAgICB9IGVsc2UgaWYgKFxuICAgICAgICBzdXBwb3J0LmFycmF5QnVmZmVyXG4gICAgICApIHtcbiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcidcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaW5pdCAmJiB0eXBlb2YgaW5pdC5oZWFkZXJzID09PSAnb2JqZWN0JyAmJiAhKGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgfHwgKGcuSGVhZGVycyAmJiBpbml0LmhlYWRlcnMgaW5zdGFuY2VvZiBnLkhlYWRlcnMpKSkge1xuICAgICAgdmFyIG5hbWVzID0gW107XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhpbml0LmhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuICAgICAgICBuYW1lcy5wdXNoKG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIG5vcm1hbGl6ZVZhbHVlKGluaXQuaGVhZGVyc1tuYW1lXSkpXG4gICAgICB9KVxuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgaWYgKG5hbWVzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwpIHtcbiAgICAgIHJlcXVlc3Quc2lnbmFsLmFkZEV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG5cbiAgICAgIHhoci5vbnJlYWR5c3RhdGVjaGFuZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgLy8gRE9ORSAoc3VjY2VzcyBvciBmYWlsdXJlKVxuICAgICAgICBpZiAoeGhyLnJlYWR5U3RhdGUgPT09IDQpIHtcbiAgICAgICAgICByZXF1ZXN0LnNpZ25hbC5yZW1vdmVFdmVudExpc3RlbmVyKCdhYm9ydCcsIGFib3J0WGhyKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgfSlcbn1cblxuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG5cbmlmICghZy5mZXRjaCkge1xuICBnLmZldGNoID0gZmV0Y2hcbiAgZy5IZWFkZXJzID0gSGVhZGVyc1xuICBnLlJlcXVlc3QgPSBSZXF1ZXN0XG4gIGcuUmVzcG9uc2UgPSBSZXNwb25zZVxufVxuIiwiLyogdHNsaW50OmRpc2FibGU6bm8tbnVsbC1rZXl3b3JkIG5vLWFueSBuby11bnNhZmUtYW55ICovXG5pbXBvcnQgeyBmZXRjaCB9IGZyb20gXCJ3aGF0d2ctZmV0Y2hcIjtcbmltcG9ydCB7IEFsbEljb25OYW1lcyB9IGZyb20gXCJyZWFjdC11aVwiO1xuXG5pbXBvcnQgeyBFcnJvckZpcnN0Q2FsbGJhY2ssIHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB7IExvYWRJbnRvRG9jdW1lbnQgfSBmcm9tIFwiLi4vLi4vSGVscGVycy9Mb2FkSW50b0RvY3VtZW50XCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB0eXBlIHsgSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50IH0gZnJvbSBcIi4uL1R5cGVzL0lLZVdlYlRlbXBsYXRlc0FwaUNsaWVudFwiO1xuaW1wb3J0IHR5cGUgeyBDbGllbnREcmFmdEluZm9SZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0NsaWVudERyYWZ0SW5mb1Jlc3BvbnNlXCI7XG5pbXBvcnQgeyBnZXRDbGllbnREcmFmdEluZm9VcmwgfSBmcm9tIFwiLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0NsaWVudERyYWZ0SW5mby9HZXRDbGllbnREcmFmdEluZm9VcmxcIjtcbmltcG9ydCB7IEFVT09wdGlvbnMgfSBmcm9tIFwiLi4vVHlwZXMvQVVPT3B0aW9uc1wiO1xuaW1wb3J0IHR5cGUgeyBMYXlvdXRFdmVudHNTdGF0aWMgfSBmcm9tIFwiLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL0xheW91dEV2ZW50cy9MYXlvdXRFdmVudHNcIjtcblxuaW1wb3J0IHsgY2xpZW50U2V0dGluZ3MgfSBmcm9tIFwiLi9DbGllbnRTZXR0aW5nc1wiO1xuaW1wb3J0IHsgY3JlYXRlTGVnYWN5UHVibGljRm9ybSB9IGZyb20gXCIuL0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybVwiO1xuXG50eXBlIEZvcm1Db250YWluZXIgPSBzdHJpbmcgfCBIVE1MRWxlbWVudDtcblxudHlwZSBFbmdpbmVFbnRyeVBvaW50ID0gKCkgPT4gdm9pZDtcblxuZXhwb3J0IGludGVyZmFjZSBBY3Rpb25EZXNjcmlwdGlvbiB7XG4gICAgaWNvbjogQWxsSWNvbk5hbWVzO1xuICAgIHRleHQ/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcbiAgICBvbkNsaWNrOiAoKSA9PiB2b2lkO1xuICAgIGhpbnQ/OiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICB0aWQ/OiBzdHJpbmc7XG4gICAgd2VpZ2h0OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBSZW5kZXJGb3JtU2V0dGluZ3Mge1xuICAgIGdmdjogc3RyaW5nO1xuICAgIGVuZ2luZVZlcnNpb24/OiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChsZWZ0OiBzdHJpbmcsIHJpZ2h0OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCBsZWZ0TnVtYmVycyA9IGxlZnRcbiAgICAgICAgICAgIC5zcGxpdChcIi5cIilcbiAgICAgICAgICAgIC5zbGljZSgwLCAzKVxuICAgICAgICAgICAgLm1hcCh4ID0+IHBhcnNlSW50KHgsIDEwKSk7XG4gICAgICAgIGNvbnN0IHJpZ2h0TnVtYmVycyA9IHJpZ2h0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGxlZnROdW1iZXJzWzBdID8/IDApID4gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSB8fFxuICAgICAgICAgICAgKChsZWZ0TnVtYmVyc1swXSA/PyAwKSA9PT0gKHJpZ2h0TnVtYmVyc1swXSA/PyAwKSAmJlxuICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPiAocmlnaHROdW1iZXJzWzFdID8/IDApIHx8XG4gICAgICAgICAgICAgICAgICAgICgobGVmdE51bWJlcnNbMV0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMV0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgIChsZWZ0TnVtYmVyc1syXSA/PyAwKSA+PSAocmlnaHROdW1iZXJzWzJdID8/IDApKSkpXG4gICAgICAgICk7XG4gICAgfSBjYXRjaCB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGxvYWRGb3JtKHNldHRpbmdzOiBTdGFydEZvcm1TZXR0aW5nLCBjYWxsYmFjazogKGVycm9yPzogbnVsbCB8IHVuZGVmaW5lZCB8IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgY29uc3QgeyBnZnYsIGVuZ2luZVZlcnNpb24gfSA9IHNldHRpbmdzO1xuXG4gICAgaWYgKGdsb2JhbC5DRi5lbnRyeVBvaW50W2dmdl0pIHtcbiAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBpc05lZWRFbmdpbmUgPSBlbmdpbmVWZXJzaW9uICYmICFnbG9iYWxbZW5naW5lVmVyc2lvbl07XG4gICAgY29uc3Qgbm9TdHlsZXNGb3JHZnYgPSBmYWxzZTsgLy8gZW5naW5lVmVyc2lvbiAhPSB1bmRlZmluZWQgJiYgKGlzRW5naW5lVmVyc2lvbkdyZWF0ZXJUaGFuT3JFcXVhbChlbmdpbmVWZXJzaW9uLCBcIjQuMjE0LjBcIikgfHwgZW5naW5lVmVyc2lvbiA9PT0gXCJsb2NhbFwiKTtcbiAgICBjb25zdCBuZWVkTG9hZFN0eWxlc0ZvckdmdiA9ICFub1N0eWxlc0ZvckdmdjtcbiAgICBjb25zdCBtaW4gPSBnZXRQYXJhbWV0ZXJCeU5hbWUoXCJkZWJ1Z1wiKSA9PT0gXCJ0cnVlXCIgPyBcIlwiIDogXCIubWluXCI7XG4gICAgY29uc3QgdGFza3M6IFRhc2tbXSA9IFtdO1xuXG4gICAgY29uc3QgcGFyYW1zID0geyByZXNvdXJjZVpvbmU6IHNldHRpbmdzLnJlc291cmNlWm9uZSB9O1xuICAgIGlmIChuZWVkTG9hZFN0eWxlc0Zvckdmdikge1xuICAgICAgICB0YXNrcy5wdXNoKGNiID0+XG4gICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQodXJsKGJ1aWxkVXJsKGBzdGF0aWMvcHVibGljL3N0eWxlcy8ke2dmdn0ke21pbn0uY3NzYCwgcGFyYW1zKSksIHRydWUsIGNiKVxuICAgICAgICApO1xuICAgIH1cbiAgICB0YXNrcy5wdXNoKGNiID0+IExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7Z2Z2fSR7bWlufS5qc2AsIHBhcmFtcykpLCBjYikpO1xuXG4gICAgaWYgKGlzTmVlZEVuZ2luZSkge1xuICAgICAgICB0YXNrcy5wdXNoKFxuICAgICAgICAgICAgY2IgPT5cbiAgICAgICAgICAgICAgICBMb2FkSW50b0RvY3VtZW50LnN0eWxlU2hlZXQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvY2FuZHlfJHtlbmdpbmVWZXJzaW9ufSR7bWlufS5jc3NgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zY3JpcHQoXG4gICAgICAgICAgICAgICAgICAgIHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zY3JpcHRzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uanNgLCBwYXJhbXMpKSxcbiAgICAgICAgICAgICAgICAgICAgY2JcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcnVuUGFyYWxsZWwodGFza3MsIGNhbGxiYWNrKTtcbn1cblxuZnVuY3Rpb24gcmVuZGVyRm9ybShcbiAgICBwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lcixcbiAgICBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT5cbik6IHZvaWQge1xuICAgIGNvbnN0IGZvcm1FbnRyeVBvaW50ID1cbiAgICAgICAgZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZXh0ZW5kZWRTZXR0aW5ncy5nZnZdID8/IHJlamVjdChgRm9ybSBlbnRyeSBwb2ludCAke2V4dGVuZGVkU2V0dGluZ3MuZ2Z2fSBub3QgZm91bmQuYCk7XG4gICAgZm9ybUVudHJ5UG9pbnQocGFnZUNvbnRlbnQsIGV4dGVuZGVkU2V0dGluZ3MpXG4gICAgICAgIC50aGVuKGZvcm0gPT4ge1xuICAgICAgICAgICAgY29uc3QgcHVibGljRm9ybSA9IGZvcm0ucHVibGljRm9ybSB8fCBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtKGZvcm0pO1xuXG4gICAgICAgICAgICBjYWxsYmFjayhudWxsLCBwdWJsaWNGb3JtKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGFydEZvcm1PcHRpb25zIGV4dGVuZHMgUGFydGlhbDxBVU9PcHRpb25zPiB7XG4gICAgbnM6IHN0cmluZztcbiAgICBkcmFmdElkOiBzdHJpbmc7XG4gICAgZ2Z2Pzogc3RyaW5nO1xuICAgIHJlc291cmNlWm9uZT86IHN0cmluZztcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgZmVlZGJhY2tFbmFibGVkPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbG9zZUFuZFNhdmVCdXR0b24/OiBib29sZWFuO1xuICAgIGlzRGlzYWJsZWRDbGVhbkZvcm0/OiBib29sZWFuO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICBhdXRoZW50aWNhdGlvbj86IFwiYnJvd3Nlci1jcmVkZW50aWFscy1pbmNsdWRlXCIgfCB7IGF1dGhTaWQ6IHN0cmluZyB9O1xuICAgIGZldGNoPzogdHlwZW9mIGZldGNoO1xuICAgIG1vZGVsPzogeyBbcGF0aDogc3RyaW5nXTogdW5rbm93biB9O1xuICAgIHBhbmVsQWN0aW9ucz86IEFjdGlvbkRlc2NyaXB0aW9uW107XG4gICAgZXZlbnRFbWl0dGVyPzogTGF5b3V0RXZlbnRzU3RhdGljO1xuICAgIGVtcGxveWVySWQ/OiBzdHJpbmc7XG4gICAgc2hvd05hdmlnYXRpb25TaWRlYmFyPzogYm9vbGVhbjtcbiAgICBvblJlbW92ZUF0dGFjaG1lbnQ/OiAoKSA9PiB2b2lkO1xufVxuXG5mdW5jdGlvbiBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb246IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmcpOiB1bmRlZmluZWQgfCBFbmdpbmVFbnRyeVBvaW50IHtcbiAgICBpZiAoZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIGdsb2JhbFtlbmdpbmVWZXJzaW9uXSAmJiBnbG9iYWxbZW5naW5lVmVyc2lvbl0uZGVmYXVsdDtcbn1cblxuZnVuY3Rpb24gc3RhcnQoXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucyxcbiAgICBjYWxsYmFjazogRXJyb3JGaXJzdENhbGxiYWNrPElQdWJsaWNGb3JtPiA9IGRlZmF1bHRDYWxsYmFja1xuKTogdm9pZCB7XG4gICAgbGV0IGVycm9yID0gbnVsbDtcbiAgICBjb25zdCB7IG5zLCBkcmFmdElkIH0gPSBvcHRpb25zO1xuXG4gICAgaWYgKCFpc0FsbG93ZWQoY2xpZW50U2V0dGluZ3Mua29udHVyRG9tYWlucykpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJkb21haW4udW50cnVzdGVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIWNsaWVudFNldHRpbmdzLmF1dGhvcml6ZWQpIHtcbiAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXCJ1c2VyLnVuYXV0aGVudGljYXRlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFkcmFmdElkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwib3B0aW9ucy5kcmFmdElkIGlzIHJlcXVpcmVkXCIpO1xuICAgIH0gZWxzZSBpZiAoIW5zKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwib3B0aW9ucy5ucyBpcyByZXF1aXJlZFwiKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgY2FsbGJhY2soZXJyb3IpO1xuICAgICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2Vab25lID0gb3B0aW9ucy5yZXNvdXJjZVpvbmUgPz8gZ2V0UGFyYW1ldGVyQnlOYW1lKFwicmVzb3VyY2Vab25lXCIpO1xuICAgIGNvbnN0IGNsaWVudERyYWZ0VXJsID0gYnVpbGRVcmwodXJsKGdldENsaWVudERyYWZ0SW5mb1VybCh7IG5zOiBucywgZHJhZnRJZDogZHJhZnRJZCB9KSksIHtcbiAgICAgICAgcmVzb3VyY2Vab25lOiByZXNvdXJjZVpvbmUsXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXF1ZXN0T3B0aW9uczogUmVxdWVzdEluaXQgPSB7IG1ldGhvZDogXCJHRVRcIiB9O1xuICAgIGlmIChvcHRpb25zLmF1dGhlbnRpY2F0aW9uID09IHVuZGVmaW5lZCB8fCBvcHRpb25zLmF1dGhlbnRpY2F0aW9uID09PSBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJpbmNsdWRlXCI7XG4gICAgfSBlbHNlIGlmIChcImF1dGhTaWRcIiBpbiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uICYmIG9wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcIm9taXRcIjtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuaGVhZGVycyA9IHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPz8ge307XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnNbXCJBdXRob3JpemF0aW9uXCJdID0gYEFVVEguU0lEICR7b3B0aW9ucy5hdXRoZW50aWNhdGlvbi5hdXRoU2lkfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcmVxdWVzdE9wdGlvbnMuY3JlZGVudGlhbHMgPSBcIm9taXRcIjtcbiAgICB9XG4gICAgY29uc3QgZmV0Y2hJbXBsID0gb3B0aW9ucy5mZXRjaCA/PyBmZXRjaDtcblxuICAgIGZldGNoSW1wbChjbGllbnREcmFmdFVybCwgcmVxdWVzdE9wdGlvbnMpXG4gICAgICAgIC50aGVuKHggPT4geC5qc29uKCkpXG4gICAgICAgIC50aGVuKChjbGllbnREcmFmdEluZm86IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBnZnYgPSBjbGllbnREcmFmdEluZm8uZ2Z2O1xuICAgICAgICAgICAgY29uc3QgZW5naW5lVmVyc2lvbiA9IGNsaWVudERyYWZ0SW5mby5lbmdpbmVWZXJzaW9uO1xuICAgICAgICAgICAgY29uc3QgZXh0ZW5kZWRTZXR0aW5ncyA9IHtcbiAgICAgICAgICAgICAgICBhdXRob3JpemVkOiBjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkLFxuICAgICAgICAgICAgICAgIGNhdWxkcm9uQXBpVXJsOiBjbGllbnRTZXR0aW5ncy5jYXVsZHJvbkFwaVVybCxcbiAgICAgICAgICAgICAgICBpc1Rlc3RTZXJ2ZXI6IGNsaWVudFNldHRpbmdzLmlzVGVzdFNlcnZlcixcbiAgICAgICAgICAgICAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBjbGllbnRTZXR0aW5ncy5yZW5kZXJDYWNoaW5nRm9ySUU4LFxuICAgICAgICAgICAgICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogY2xpZW50U2V0dGluZ3Mubm9ybWFsaXphdGlvbk9uU2VydmVyLFxuICAgICAgICAgICAgICAgIG5vcm1hdGl2ZVVybDogY2xpZW50U2V0dGluZ3Mubm9ybWF0aXZlVXJsLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHRoZW1lOiBleHRlbmRlZFNldHRpbmdzLnRoZW1lLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbG9hZEVycm9yID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvYWRFcnJvciB8fCAhZ2xvYmFsLkNGLmVudHJ5UG9pbnRbZ2Z2XSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGBkeW5hbWljIGxvYWRpbmcgaXMgbm90IHN1cHBvcnRlZCBmb3IgZ2Z2ICR7Z2Z2fWApKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjb25zdCByZW5kZXIgPSBnZXRFbmdpbmVFbnRyeVBvaW50KGVuZ2luZVZlcnNpb24pO1xuXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckZvcm0oXG4gICAgICAgICAgICAgICAgICAgICAgICBwYWdlQ29udGVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5leHRlbmRlZFNldHRpbmdzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBsYXRlc0FwaTogb3B0aW9ucy50ZW1wbGF0ZXNBcGksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybTogcmVuZGVyLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKGNhbGxiYWNrKTtcbn1cblxuY29uc3QgQ2FuZHlDbGllbnRFeHBvcnRzOiBDYW5keUdsb2JhbEluamVjdGVkVmFyID0ge1xuICAgIHN0YXJ0OiBzdGFydCxcbiAgICBlbnRyeVBvaW50OiB7fSxcbiAgICBwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cGFydGlhbFJlbmRlcmluZ0ZvcklFOH1cIiksXG4gICAga2Vmb3Jtc1VybDogXCJ7a2Vmb3Jtc1VybH1cIixcbn07XG5cbmdsb2JhbC5DRiA9IENhbmR5Q2xpZW50RXhwb3J0cztcblxuZXhwb3J0IHsgQ2FuZHlDbGllbnRFeHBvcnRzIH07XG4iLCJmdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmV4cG9ydCBjb25zdCBjbGllbnRTZXR0aW5ncyA9IHtcbiAgICBhdXRob3JpemVkOiBwYXJzZUJvb2woXCJ7YXV0aG9yaXplZH1cIiksXG4gICAgY2F1bGRyb25BcGlVcmw6IFwie2NhdWxkcm9uQXBpVXJsfVwiLFxuICAgIGlzVGVzdFNlcnZlcjogcGFyc2VCb29sKFwie2lzVGVzdFNlcnZlcn1cIiksXG4gICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogcGFyc2VCb29sKFwie3JlbmRlckNhY2hpbmdGb3JJRTh9XCIpLFxuICAgIG5vcm1hbGl6YXRpb25PblNlcnZlcjogcGFyc2VCb29sKFwie25vcm1hbGl6YXRpb25PblNlcnZlcn1cIiksXG4gICAgbm9ybWF0aXZlVXJsOiBcIntub3JtYXRpdmVVcmx9XCIsXG4gICAga29udHVyRG9tYWluczogXCJ7a29udHVyRG9tYWluc31cIixcbn07XG4iLCJpbXBvcnQge1xuICAgIEVtcGxveWVlLFxuICAgIEVtcGxveWVlTGlzdCxcbiAgICBHZXRFbXBsb3llZXNXaXRoQWN0aXZlUGVyaW9kUXVlcnksXG4gICAgR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QsXG4gICAgTWF0Y2hFbXBsb3llZVJlcXVlc3QsXG4gICAgTWF0Y2hFbXBsb3llZVJlc3BvbnNlLFxuICAgIE1lcmdlUmVsYXRpdmVSZXNwb25zZSxcbiAgICBQYXRjaFJlbGF0aXZlUmVzcG9uc2UsXG4gICAgV29ya2luZ0V2ZW50TGlzdCxcbn0gZnJvbSBcIkBza2Jrb250dXIvc3RhZmYtc2VsZWN0b3Itd2lkZ2V0XCI7XG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tIFwiRW5naW5lL3NyYy9FbmdpbmUvRm9ybS9Nb2RlbENoYW5nZUV2ZW50TGlzdGVuZXJcIjtcblxuaW1wb3J0IHsgTm90SW1wbGVtZW50ZWRFcnJvciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vRXJyb3JzXCI7XG5pbXBvcnQgdHlwZSB7IFN0ZXAgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvRm9ybVBhcnRzL1RvdXIvVG91clR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFNlcnZlckVycm9yTG9nIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9FcnJvckxvZy9TZXJ2ZXJFcnJvckxvZ1wiO1xuaW1wb3J0IHR5cGUgeyBCaW5kaW5nUGF0aCwgTW9kZWxWYWx1ZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db3JlVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRXh0ZXJuYWxIb29rRnVuY3Rpb24gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L0V4dGVybmFsRXZlbnRzL0V4dGVybmFsSG9va0Z1bmN0aW9uXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWRvbmx5TW9kZWxDaHVuayB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RlbFN0b3JpbmcvTW9kZWxDaHVua1wiO1xuaW1wb3J0IHR5cGUgeyBQaWNrbGlzdFF1ZXJ5UmVzcG9uc2UgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvUGlja2xpc3RzL1BpY2tsaXN0VHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm0gfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1cIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHsgTW9kZWxFdmVudHNMaXN0ZW5lciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvTW9kZWxFdmVudHMvTW9kZWxFdmVudFwiO1xuaW1wb3J0IHsgRGlnZXN0UXVlcnlGaWx0ZXIgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L0RpZ2VzdEFwaUNsaWVudC9UeXBlcy9EaWdlc3RRdWVyeUZpbHRlclwiO1xuaW1wb3J0IHsgSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtTW9kZWxBY2Nlc3NvclwiO1xuaW1wb3J0IHsgTW9kYWxPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGFsTWFuYWdlci9JTW9kYWxTdGF0ZVwiO1xuaW1wb3J0IHsgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vTW9kZWxQYXRoL01vZGVsUGF0aFwiO1xuaW1wb3J0IHtcbiAgICBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzLFxuICAgIEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyxcbiAgICBQcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXJQcm9wcyxcbn0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSW5pdFNlY3Rpb25MaWdodGJveFwiO1xuaW1wb3J0IHsgTWFzc0FjdGlvblBhcmFtZXRlcnMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL01hc3NBY3Rpb25zL01hc3NBY3Rpb25QYXJhbWV0ZXJzXCI7XG5pbXBvcnQgeyBQcmludFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL1ByaW50L1ByaW50VHlwZVwiO1xuaW1wb3J0IHsgRmlhc0FwaSwgRmlhc0NsaWVudEluaXRPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL1ZhbHVlRWRpdG9ycy9GaWFzL0ZpYXNJbnB1dC9GaWFzQXBpXCI7XG5pbXBvcnQgeyBJbnN0YW5jZXNEZWxldGluZ1J1bGUgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0luc3RhbmNlc0RlbGV0aW5nL0luc3RhbmNlc0RlbGV0aW5nUnVsZVwiO1xuaW1wb3J0IHsgQ29tYmluZUZ1ZlJlc3VsdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRHJhZnRBY3Rpb25zL0NvbWJpbmVGdWZSZXN1bHRcIjtcbmltcG9ydCB7IElDYW5keUNvbXBvbmVudEhhbmRsZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Db21wb25lbnRIYW5kbGVSZWdpc3RyeS9JQ2FuZHlDb21wb25lbnRIYW5kbGVcIjtcbmltcG9ydCB7IE5hdmlnYXRpb25QYXRoTWFwcGVyIH0gZnJvbSBcIi4uLy4uL0luamVjdGFibGVNb2R1bGVzL0luamVjdGFibGVFbmdpbmVNb2R1bGVzXCI7XG5pbXBvcnQge1xuICAgIEVtcGxveWVyTm9ybWFsaXplZFRhZyxcbiAgICBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnMsXG59IGZyb20gXCIuLi8uLi8uLi9TdGFmZlNlcnZpY2VJbnRlZ3JhdGlvbi9FbXBsb3llZVNlcnZpY2VUeXBlc1wiO1xuaW1wb3J0IHsgVGFiSW5mb3NTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9NdWx0aUNvbnRyb2xzL1RhYnMvU3RvcmUvVGFiSW5mb3NTdGF0ZVwiO1xuaW1wb3J0IHsgTWV0cmljc1BheWxvYWQgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvSW50ZXJuYWxzL01ldHJpY3MvTWV0cmljc1Byb3ZpZGVyXCI7XG5cbmltcG9ydCB7IElMZWdhY3lGb3JtIH0gZnJvbSBcIi4vSUxlZ2FjeUZvcm1cIjtcblxuZXhwb3J0IHR5cGUgTW9kZWxFdmVudFBhdGggPVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiXTtcblxuZXhwb3J0IGZ1bmN0aW9uIG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHBhdGg/OiBzdHJpbmcsIGZpZWxkTmFtZT86IHN0cmluZyk6IE1vZGVsRXZlbnRQYXRoIHtcbiAgICBpZiAoZmllbGROYW1lICE9IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAocGF0aCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlBhdGggbXVzdCBiZSBkZWZpbmVkXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoLCBmaWVsZE5hbWVdO1xuICAgIH1cbiAgICBpZiAocGF0aCAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGhdO1xuICAgIH1cbiAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl07XG59XG5cbmZ1bmN0aW9uIG1hcENodW5rVmFsdWVzKGNodW5rOiBSZWFkb25seU1vZGVsQ2h1bmspOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+IHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMoY2h1bmspXG4gICAgICAgIC5maWx0ZXIocGF0aCA9PiBjaHVua1twYXRoXSAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoY2h1bmtbcGF0aF0sIFwidmFsdWVcIikpXG4gICAgICAgIC5tYXAocGF0aCA9PiB7XG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBjaHVua1twYXRoXTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgW3BhdGhdOiByZXN1bHQudmFsdWUgfTtcbiAgICAgICAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlZHVjZUNodW5rVmFsdWVzKGNodW5rczogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pik6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgcmV0dXJuIGNodW5rcy5yZWR1Y2UoXG4gICAgICAgIChyZXN1bHQsIGNodW5rKSA9PiAoe1xuICAgICAgICAgICAgLi4ucmVzdWx0LFxuICAgICAgICAgICAgLi4uY2h1bmssXG4gICAgICAgIH0pLFxuICAgICAgICB7fVxuICAgICk7XG59XG5cbmNsYXNzIExlZ2FjeVB1YmxpY0Zvcm0gaW1wbGVtZW50cyBJUHVibGljRm9ybSB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmb3JtOiBJTGVnYWN5Rm9ybTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihmb3JtOiBJTGVnYWN5Rm9ybSkge1xuICAgICAgICB0aGlzLmZvcm0gPSBmb3JtO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZUJ5SGlnaGxhbmRlclBhdGhzKHBhdGhzOiBzdHJpbmdbXSk6IFByb21pc2U8SUNhbmR5Q29tcG9uZW50SGFuZGxlIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYW5jZWxTZWxlY3RSZWxhdGl2ZSgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE5hdmlnYXRpb25QYXRoTWFwcGVyKCk6IE5hdmlnYXRpb25QYXRoTWFwcGVyIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGJhdGNoVXBkYXRlKHVwZGF0ZVByb2M6ICh1cGRhdGVBY2Nlc3NvcjogSVVwZGF0ZUZvcm1Nb2RlbEFjY2Vzc29yKSA9PiB2b2lkKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBydW5DaGVjaygpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEVycm9yTG9nKGVycm9yTG9nOiBQYXJ0aWFsPFNlcnZlckVycm9yTG9nPik6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aChwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIF9fSU5URVJOQUxfX2ltcG9ydEZyb21FbXBsb3llZVNlcnZpY2UoKTogUHJvbWlzZTxFbXBsb3llZVtdIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBfX0lOVEVSTkFMX19nZXRTZWxlY3RGdW5jdGlvbkZvckRpc2FibGVFbXBsb3llZUluU1MoXG4gICAgICAgIHBhdGhTcGVjOiBzdHJpbmdcbiAgICApOiBQcm9taXNlPChlbXBsb3llZTogRW1wbG95ZWUpID0+IGJvb2xlYW4+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldE1vZGFsVW5pdE9wZW5lZEluc3RhbmNlKHBhZ2VJZDogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUYWJzU3RhdGUoKTogVGFiSW5mb3NTdGF0ZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBuYXZpZ2F0ZShuYXZpZ2F0aW9uUGF0aDogc3RyaW5nKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVyRG9jdW1lbnRzKFxuICAgICAgICBvcHRpb25zOiBJbXBvcnRFbXBsb3llckRvY3VtZW50c09wdGlvbnNcbiAgICApOiBQcm9taXNlPEVtcGxveWVyTm9ybWFsaXplZFRhZyB8IHVuZGVmaW5lZCB8IG51bGw+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGltcG9ydEVtcGxveWVlcyhlbXBsb3llZXM6IEVtcGxveWVlW10sIG9wdGlvbnM/OiB7IHNjZW5hcmlvPzogc3RyaW5nIH0pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHByaW50KHByaW50VHlwZTogUHJpbnRUeXBlLCBib2R5Pzogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuICAgIHB1YmxpYyBydW5NYXNzQWN0aW9uKGFjdGlvbklkOiBzdHJpbmcsIHBhcmFtZXRlcnM/OiBNYXNzQWN0aW9uUGFyYW1ldGVycyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QnlHSWQoZ0lkOiBzdHJpbmcsIGZpbHRlcj86IERpZ2VzdFF1ZXJ5RmlsdGVyKTogUHJvbWlzZTxQaWNrbGlzdFF1ZXJ5UmVzcG9uc2U+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5waWNrbGlzdHNQcm92aWRlci5nZXREaWdlc3RBcGlQaWNrbGlzdChnSWQpLnF1ZXJ5KGZpbHRlcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihbXCJmb3JtXCIsIGV2ZW50TmFtZV0sIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGV2ZW50TmFtZTogc3RyaW5nLCBsaXN0ZW5lcjogRXh0ZXJuYWxIb29rRnVuY3Rpb24pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYoW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTW9kZWxDaGFuZ2UocGF0aDogc3RyaW5nIHwgc3RyaW5nW10sIGxpc3RlbmVyOiB1bmtub3duKTogU3Vic2NyaXB0aW9uIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWNvbnNvbGVcbiAgICAgICAgdGhyb3cgRXJyb3IoXCJmb3JtLm9uTW9kZWxDaGFuZ2UoKSBpcyBub3Qgc3VwcG9ydGVkIHlldFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2F2ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjbG9zZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhpcy5mb3JtLmNoYW5nZVNldC5zdG9wQXV0b3NlbmQoKTtcbiAgICAgICAgaWYgKHRoaXMuZm9ybS51bm1vdW50KSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0udW5tb3VudCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc2VuZCgpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRUb3VyU3RlcHMoKTogU3RlcFtdIHtcbiAgICAgICAgLy8gRm9yIG9sZCBrZXdlYlxuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIHZhbGlkYXRlKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpO1xuICAgICAgICAvLyBAdHMtaWdub3JlINCt0YLQviDQsiDRgdGC0LDRgNGL0YUg0LTQstC40LbQutCw0YUg0YLRg9GCINGC0LDQutC+0Lkg0LLRi9C30L7QslxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS52YWxpZGF0b3IudmFsaWRhdGVBbGwoa2V5cyk7XG4gICAgfVxuICAgIHB1YmxpYyBnZXRBZGRpdGlvbmFsRW1wbG95ZWVJbmZvKGZpbHRlcnM6IEdldEVtcGxveWVlc1dpdGhBY3RpdmVQZXJpb2RRdWVyeSk6IFByb21pc2U8RW1wbG95ZWVMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW1wbG95ZWVzKCk6IFByb21pc2U8RW1wbG95ZWVMaXN0PiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbWVyZ2VSZWxhdGl2ZSgpOiBQcm9taXNlPE1lcmdlUmVsYXRpdmVSZXNwb25zZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHBhdGNoUmVsYXRpdmUoKTogUHJvbWlzZTxQYXRjaFJlbGF0aXZlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZW5kTWV0cmljcyhhY3Rpb246IHN0cmluZywgcGF5bG9hZD86IE1ldHJpY3NQYXlsb2FkKTogdm9pZCB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgcHVibGljIG1hdGNoRW1wbG95ZWUocXVlcnk6IE1hdGNoRW1wbG95ZWVSZXF1ZXN0KTogUHJvbWlzZTxNYXRjaEVtcGxveWVlUmVzcG9uc2U+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRJbm5lcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXb3JraW5nRXZlbnRzRm9yRW1wbG95ZWUoZmlsdGVyczogR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QpOiBQcm9taXNlPFdvcmtpbmdFdmVudExpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVycm9yQ291bnQgPSB0aGlzLmZvcm0ubW9kZWwuZ2V0KHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ291bnQgIT0gdW5kZWZpbmVkICYmIGVycm9yQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZFcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYobW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogc3RyaW5nLCB2YWx1ZTogTW9kZWxWYWx1ZSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQoXG4gICAgICAgIHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZyB8IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LFxuICAgICAgICB2YWx1ZT86IE1vZGVsVmFsdWVcbiAgICApOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhdGhPck1vZGVsQ2h1bmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkocGF0aE9yTW9kZWxDaHVuaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNodW5rID0gT2JqZWN0LmtleXMocGF0aE9yTW9kZWxDaHVuaykucmVkdWNlPFJlYWRvbmx5TW9kZWxDaHVuaz4oXG4gICAgICAgICAgICAgICAgKHJlc3VsdCwgcGF0aCkgPT4gKHsgW3BhdGhdOiB7IHZhbHVlOiBwYXRoT3JNb2RlbENodW5rW3BhdGhdIH0sIC4uLnJlc3VsdCB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLmZpbGwoaW5uZXJDaHVuayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5zZXQocGF0aE9yTW9kZWxDaHVuaywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLnNldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3Igb2JqZWN0IHdpdGggcGF0aC12YWx1ZSBwYWlyc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHBhdGhPckFycmF5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhPckFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKFxuICAgICAgICAgICAgICAgIHBhdGhPckFycmF5XG4gICAgICAgICAgICAgICAgICAgIC5tYXAocGF0aCA9PiBtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2U8QXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pj4oKHJlc3VsdCwgYXJyYXkpID0+IHJlc3VsdC5jb25jYXQoYXJyYXkpLCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGhPckFycmF5KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhPckFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uZ2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBhcnJheSBvZiBwYXRoc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUocGF0aDogc3RyaW5nKTogTW9kZWxWYWx1ZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLm1vZGVsLmdldChwYXRoLCBcInZhbHVlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5U3VidHJlZShcbiAgICAgICAgc291cmNlQmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgdGFyZ2V0QmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgZG9Ob3RDb3B5UGF0aHM/OiBzdHJpbmdbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHV1aWRHZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93TW9kYWwob3B0aW9uczogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNlY3Rpb24ob3B0aW9uczogSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxJbml0U2VjdGlvbihvcHRpb25zOiBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHByZWZlcnJlZEludGVyZG9jdW1lbnRUcmFuc2ZlcihvcHRpb25zOiBQcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXJQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgY3JlYXRlRmlhc0FwaUNsaWVudChvcHRpb25zOiBGaWFzQ2xpZW50SW5pdE9wdGlvbnMpOiBGaWFzQXBpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb3BlbkVtcGxveWVlRWRpdG9yKGVtcGxveWVlSWQ6IHN0cmluZykge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZShwYXRoOiBzdHJpbmcsIGluc3RhbmNlOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzKHBhdGg6IHN0cmluZywgaW5zdGFuY2VzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBmb2N1c09uQ29udHJvbElmRXhpc3QocGF0aDogQmluZGluZ1BhdGgpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QXV0b0ZpZWxkc1RvQXV0b1ZhbHVlKHBhdGhQcmVmaXhlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh1bmRlZmluZWQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbnN1cmVJbnN0YW5jZUZ1bGx5TG9hZGVkKFxuICAgICAgICBiaW5kaW5nUGF0aDogc3RyaW5nIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgLi4uaW5zdGFuY2VzOiBzdHJpbmdbXVxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3VzdG9tTm9ybWFsaXplKG5vcm1hbGl6ZXJJZDogc3RyaW5nLCBwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuICAgIHB1YmxpYyByZW1vdmVJbnN0YW5jZXNCeVJ1bGVzKHJ1bGVzOiBJbnN0YW5jZXNEZWxldGluZ1J1bGVbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjcmVhdGVEbnAoKTogUHJvbWlzZTxDb21iaW5lRnVmUmVzdWx0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFNlbGVjdGVkSW5zdGFuY2VzKFxuICAgICAgICBtdWx0aXBsaWNpdHlQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhYmxlVW5pcUlkOiBzdHJpbmcsXG4gICAgICAgIHBhdGhUb0NoZWNrZWQ6IHN0cmluZ1xuICAgICk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShbXSk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtOiBJRm9ybSk6IElQdWJsaWNGb3JtIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgcmV0dXJuIG5ldyBMZWdhY3lQdWJsaWNGb3JtKGZvcm0gYXMgSUxlZ2FjeUZvcm0pO1xufVxuIiwiLy8gdHNsaW50OmRpc2FibGUgbm8tdW5zYWZlLWFueVxuZXhwb3J0IGNsYXNzIExvYWRJbnRvRG9jdW1lbnQge1xuICAgIHB1YmxpYyBzdGF0aWMgc2NyaXB0KHVyaTogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IpID0+IHZvaWQpOiB2b2lkIHtcbiAgICAgICAgbGV0IHNjcmlwdExvYWRlZCA9IGZhbHNlO1xuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdIHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnlcbiAgICAgICAgY29uc3Qgc2NyaXB0OiBhbnkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuXG4gICAgICAgIGZ1bmN0aW9uIGxvYWRIYW5kbGVyKCk6IHZvaWQge1xuICAgICAgICAgICAgaWYgKHNjcmlwdExvYWRlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFzY3JpcHQucmVhZHlTdGF0ZSB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJsb2FkZWRcIiB8fCBzY3JpcHQucmVhZHlTdGF0ZSA9PT0gXCJjb21wbGV0ZVwiKSB7XG4gICAgICAgICAgICAgICAgc2NyaXB0TG9hZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGFuZyB0aGUgdXNlciBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiB0aGUgc2NyaXB0IGNvbXBsZXRlcyB0byBsb2FkLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBUaGlzIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGluIElFIGV2ZW4gdXBvbiBlcnJvci4gSW4gYW55XG4gICAgICAgIC8vIGNhc2UgaXQgaXMgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIHZlcmlmeSB0aGF0IHRoZSBzY3JpcHQgcmFuXG4gICAgICAgIC8vIHN1Y2Nlc3NmdWxseS5cbiAgICAgICAgc2NyaXB0Lm9ubG9hZCA9IGxvYWRIYW5kbGVyO1xuICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbG9hZEhhbmRsZXI7XG5cbiAgICAgICAgLy8gQWRkIGFuIGVycm9yIGNhbGxiYWNrLlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBOb3Qgc3VwcG9ydGVkIGluIElFLlxuICAgICAgICBzY3JpcHQub25lcnJvciA9ICgpID0+IHtcbiAgICAgICAgICAgIGlmIChzY3JpcHQucGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIHNjcmlwdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHNjcmlwdC5cIikpO1xuICAgICAgICB9O1xuXG4gICAgICAgIC8vIEFkZCB0aGUgc2NyaXB0IGVsZW1lbnQgdG8gdGhlIGRvY3VtZW50LlxuICAgICAgICAvLyBOT1RFKHVzZXIpOiBTYWZhcmkgbmV2ZXIgbG9hZHMgdGhlIHNjcmlwdCBpZiB3ZSBkb24ndCBzZXRcbiAgICAgICAgLy8gdGhlIHNyYyBhdHRyaWJ1dGUgYmVmb3JlIGFwcGVuZGluZy5cbiAgICAgICAgc2NyaXB0LnNyYyA9IHVyaTtcbiAgICAgICAgc2NyaXB0LnNldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIsIFwidXNlLWNyZWRlbnRpYWxzXCIpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBzdHlsZVNoZWV0KHVyaTogc3RyaW5nLCBpZ25vcmVFcnJvcjogYm9vbGVhbiwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGNvbnN0IHJlc29sdmUgPSAoKSA9PiBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICBjb25zdCByZWplY3QgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayh1bmRlZmluZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoXCJFcnJvciB3aGlsZSBsb2FkaW5nIHN0eWxlc2hlZXQuXCIpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBjb25zdCBoZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJoZWFkXCIpWzBdID8/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgICAgICAgY29uc3QgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpO1xuXG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwicmVsXCIsIFwic3R5bGVzaGVldFwiKTtcbiAgICAgICAgbGluay5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsIFwidGV4dC9jc3NcIik7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIiwgcmVzb2x2ZSk7XG4gICAgICAgIGxpbmsuYWRkRXZlbnRMaXN0ZW5lcihcImVycm9yXCIsIHJlamVjdCk7XG4gICAgICAgIGhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwiaHJlZlwiLCB1cmkpO1xuICAgIH1cbn1cbiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0aWQ6IG1vZHVsZUlkLFxuXHRcdGxvYWRlZDogZmFsc2UsXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuXHRtb2R1bGUubG9hZGVkID0gdHJ1ZTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIGRlZmluaXRpb24pIHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5nID0gKGZ1bmN0aW9uKCkge1xuXHRpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09ICdvYmplY3QnKSByZXR1cm4gZ2xvYmFsVGhpcztcblx0dHJ5IHtcblx0XHRyZXR1cm4gdGhpcyB8fCBuZXcgRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0fSBjYXRjaCAoZSkge1xuXHRcdGlmICh0eXBlb2Ygd2luZG93ID09PSAnb2JqZWN0JykgcmV0dXJuIHdpbmRvdztcblx0fVxufSkoKTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLmhtZCA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuXHRtb2R1bGUgPSBPYmplY3QuY3JlYXRlKG1vZHVsZSk7XG5cdGlmICghbW9kdWxlLmNoaWxkcmVuKSBtb2R1bGUuY2hpbGRyZW4gPSBbXTtcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG1vZHVsZSwgJ2V4cG9ydHMnLCB7XG5cdFx0ZW51bWVyYWJsZTogdHJ1ZSxcblx0XHRzZXQ6IGZ1bmN0aW9uKCkge1xuXHRcdFx0dGhyb3cgbmV3IEVycm9yKCdFUyBNb2R1bGVzIG1heSBub3QgYXNzaWduIG1vZHVsZS5leHBvcnRzIG9yIGV4cG9ydHMuKiwgVXNlIEVTTSBleHBvcnQgc3ludGF4LCBpbnN0ZWFkOiAnICsgbW9kdWxlLmlkKTtcblx0XHR9XG5cdH0pO1xuXHRyZXR1cm4gbW9kdWxlO1xufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmosIHByb3ApIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApOyB9IiwiLy8gc3RhcnR1cFxuLy8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vLyBUaGlzIGVudHJ5IG1vZHVsZSBpcyByZWZlcmVuY2VkIGJ5IG90aGVyIG1vZHVsZXMgc28gaXQgY2FuJ3QgYmUgaW5saW5lZFxudmFyIF9fd2VicGFja19leHBvcnRzX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5MSk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O2VBTUNBLENBQUEsRUFKb0NDLENBQUE7UUFBOUIsU0FBU0MsRUFBc0JDLENBQUE7VUFHbEMsT0FBTyxTQUFQQyxNQUFBLENBQWdCRCxDQUFBLENBQVFFLEVBQUEsRUFBRSxZQUFBRCxNQUFBLENBQVdELENBQUEsQ0FBUUcsT0FBQSxFQUFPLHFCQUN4RDtRQUFBO1FBQUFDLENBQUEsQ0FBQUMsQ0FBQSxDQUFBQyxDQUFBO1VBQUFDLENBQUEsV0FBQUEsQ0FBQTtZQUFBLE9BQUFSLENBQUE7VUFBQTtRQUFBLElBQUFDLENBQUEsR0FBQUksQ0FBQSxDQUFBSSxHQUFBLENBQUFSLENBQUEsSUFBQVMsQ0FBQSx5QkFBQUMsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUMsV0FBQSxjQUFBRixDQUFBLENBQUFULENBQUEseUJBQUFVLG9CQUFBLElBQUFBLG9CQUFBLENBQUFFLE9BQUEsQ0FBQUMsU0FBQSxHQUFDaEIsQ0FBQSx5QkFBQWEsb0JBQUEsR0FBQUEsb0JBQUEsQ0FBQUUsT0FBQSxjQUFBZixDQUFBLENBQUFpQixRQUFBLENBSmVmLENBQUEsRUFBcUIsK0lBQUFELENB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
|