@kontur.candy/tools 2.191.0 → 2.192.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/README.md +5 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js +4 -1
- package/distr/Common/CandyApiClient/CandyApiClient.js.map +1 -1
- package/distr/Common/CandyApiClient/FakeCandyApiClient.js +4 -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/CandyApiClient/Types/DraftActions/CombineFufResult.js +8 -2
- package/distr/Common/CandyApiClient/Types/DraftActions/CombineFufResult.js.map +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js +1 -1
- package/distr/Common/CandyApiClient/Types/DraftActions/FileProperties.js.map +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolveInnerPathRequest.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js +6 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ResolvePathResponse.js.map +1 -0
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js +1 -1
- package/distr/Common/CandyApiClient/Types/ErrorLog/ServerErrorLog.js.map +1 -1
- package/distr/Common/FormPathUtils.js +1 -1
- package/distr/Common/FormPathUtils.js.map +1 -1
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js +11 -2
- package/distr/Tools/src/CLICommands/BuildForms/BuildFormsOptions.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js +24 -0
- package/distr/Tools/src/CLICommands/BuildForms/ClearSourceMapForProduction.js.map +1 -0
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +2 -9
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +4 -16
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +3 -8
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js.map +1 -1
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +1 -21
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js.map +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +2 -2
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js.map +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +2 -2
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js.map +1 -1
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js +2 -15
- package/distr/Tools/src/CLICommands/RenameFiles/RunRenameFiles.js.map +1 -1
- package/distr/Tools/src/CandyCLI.js +5 -1
- package/distr/Tools/src/CandyCLI.js.map +1 -1
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +5 -2
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js.map +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 +128 -100
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +80 -52
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -225,10 +225,10 @@
|
|
|
225
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
|
-
function
|
|
231
|
+
function s(e, t) {
|
|
232
232
|
return e.length === t;
|
|
233
233
|
}
|
|
234
234
|
function d(e) {
|
|
@@ -245,16 +245,16 @@
|
|
|
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(c, "reject", "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(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
251
|
return e.length > 0;
|
|
252
252
|
}, "arrayHasAtLeastOneItem", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
253
253
|
if (!d(e)) throw new Error("Array must be not empty");
|
|
254
254
|
}, "ensureArrayIsNotEmpty", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
255
|
-
if (!
|
|
255
|
+
if (!s(e, t)) throw new Error("Array should has length ".concat(t));
|
|
256
256
|
}, "ensureArrayHasLength", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e, t) {
|
|
257
|
-
if (!
|
|
257
|
+
if (!l(e, t)) throw new Error("Array must have minimal length ".concat(t));
|
|
258
258
|
}, "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
259
|
return "".concat(e);
|
|
260
260
|
}, "ensureAndGetString", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Common\\TypingUtils.ts"), n.register(function (e) {
|
|
@@ -293,7 +293,7 @@
|
|
|
293
293
|
function c(e) {
|
|
294
294
|
return "string" != typeof e && (e = String(e)), e;
|
|
295
295
|
}
|
|
296
|
-
function
|
|
296
|
+
function l(e) {
|
|
297
297
|
var t = {
|
|
298
298
|
next: function () {
|
|
299
299
|
var t = e.shift();
|
|
@@ -307,8 +307,8 @@
|
|
|
307
307
|
return t;
|
|
308
308
|
}), t;
|
|
309
309
|
}
|
|
310
|
-
function
|
|
311
|
-
this.map = {}, e instanceof
|
|
310
|
+
function s(e) {
|
|
311
|
+
this.map = {}, e instanceof s ? e.forEach(function (e, t) {
|
|
312
312
|
this.append(t, e);
|
|
313
313
|
}, this) : Array.isArray(e) ? e.forEach(function (e) {
|
|
314
314
|
if (2 != e.length) throw new TypeError("Headers constructor: expected name/value pair to be length 2, found" + e.length);
|
|
@@ -375,36 +375,36 @@
|
|
|
375
375
|
return this.text().then(JSON.parse);
|
|
376
376
|
}, this;
|
|
377
377
|
}
|
|
378
|
-
|
|
378
|
+
s.prototype.append = function (e, t) {
|
|
379
379
|
e = u(e), t = c(t);
|
|
380
380
|
var r = this.map[e];
|
|
381
381
|
this.map[e] = r ? r + ", " + t : t;
|
|
382
|
-
},
|
|
382
|
+
}, s.prototype.delete = function (e) {
|
|
383
383
|
delete this.map[u(e)];
|
|
384
|
-
},
|
|
384
|
+
}, s.prototype.get = function (e) {
|
|
385
385
|
return e = u(e), this.has(e) ? this.map[e] : null;
|
|
386
|
-
},
|
|
386
|
+
}, s.prototype.has = function (e) {
|
|
387
387
|
return this.map.hasOwnProperty(u(e));
|
|
388
|
-
},
|
|
388
|
+
}, s.prototype.set = function (e, t) {
|
|
389
389
|
this.map[u(e)] = c(t);
|
|
390
|
-
},
|
|
390
|
+
}, s.prototype.forEach = function (e, t) {
|
|
391
391
|
for (var r in this.map) this.map.hasOwnProperty(r) && e.call(t, this.map[r], r, this);
|
|
392
|
-
},
|
|
392
|
+
}, s.prototype.keys = function () {
|
|
393
393
|
var e = [];
|
|
394
394
|
return this.forEach(function (t, r) {
|
|
395
395
|
e.push(r);
|
|
396
|
-
}),
|
|
397
|
-
},
|
|
396
|
+
}), l(e);
|
|
397
|
+
}, s.prototype.values = function () {
|
|
398
398
|
var e = [];
|
|
399
399
|
return this.forEach(function (t) {
|
|
400
400
|
e.push(t);
|
|
401
|
-
}),
|
|
402
|
-
},
|
|
401
|
+
}), l(e);
|
|
402
|
+
}, s.prototype.entries = function () {
|
|
403
403
|
var e = [];
|
|
404
404
|
return this.forEach(function (t, r) {
|
|
405
405
|
e.push([r, t]);
|
|
406
|
-
}),
|
|
407
|
-
}, n.iterable && (
|
|
406
|
+
}), l(e);
|
|
407
|
+
}, n.iterable && (s.prototype[Symbol.iterator] = s.prototype.entries);
|
|
408
408
|
var m = ["CONNECT", "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT", "TRACE"];
|
|
409
409
|
function _(e, t) {
|
|
410
410
|
if (!(this instanceof _)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
@@ -413,9 +413,9 @@
|
|
|
413
413
|
i = (t = t || {}).body;
|
|
414
414
|
if (e instanceof _) {
|
|
415
415
|
if (e.bodyUsed) throw new TypeError("Already read");
|
|
416
|
-
this.url = e.url, this.credentials = e.credentials, t.headers || (this.headers = new
|
|
416
|
+
this.url = e.url, this.credentials = e.credentials, t.headers || (this.headers = new s(e.headers)), this.method = e.method, this.mode = e.mode, this.signal = e.signal, i || null == e._bodyInit || (i = e._bodyInit, e.bodyUsed = !0);
|
|
417
417
|
} else this.url = String(e);
|
|
418
|
-
if (this.credentials = t.credentials || this.credentials || "same-origin", !t.headers && this.headers || (this.headers = new
|
|
418
|
+
if (this.credentials = t.credentials || this.credentials || "same-origin", !t.headers && this.headers || (this.headers = new s(t.headers)), this.method = (n = (r = t.method || this.method || "GET").toUpperCase(), m.indexOf(n) > -1 ? n : r), this.mode = t.mode || this.mode || null, this.signal = t.signal || this.signal || function () {
|
|
419
419
|
if ("AbortController" in o) return new AbortController().signal;
|
|
420
420
|
}(), this.referrer = null, ("GET" === this.method || "HEAD" === this.method) && i) throw new TypeError("Body not allowed for GET or HEAD requests");
|
|
421
421
|
if (this._initBody(i), !("GET" !== this.method && "HEAD" !== this.method || "no-store" !== t.cache && "no-cache" !== t.cache)) {
|
|
@@ -437,7 +437,7 @@
|
|
|
437
437
|
function v(e, t) {
|
|
438
438
|
if (!(this instanceof v)) throw new TypeError('Please use the "new" operator, this DOM object constructor cannot be called as a function.');
|
|
439
439
|
if (t || (t = {}), this.type = "default", this.status = void 0 === t.status ? 200 : t.status, this.status < 200 || this.status > 599) throw new RangeError("Failed to construct 'Response': The status provided (0) is outside the range [200, 599].");
|
|
440
|
-
this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === t.statusText ? "" : "" + t.statusText, this.headers = new
|
|
440
|
+
this.ok = this.status >= 200 && this.status < 300, this.statusText = void 0 === t.statusText ? "" : "" + t.statusText, this.headers = new s(t.headers), this.url = t.url || "", this._initBody(e);
|
|
441
441
|
}
|
|
442
442
|
_.prototype.clone = function () {
|
|
443
443
|
return new _(this, {
|
|
@@ -447,7 +447,7 @@
|
|
|
447
447
|
return new v(this._bodyInit, {
|
|
448
448
|
status: this.status,
|
|
449
449
|
statusText: this.statusText,
|
|
450
|
-
headers: new
|
|
450
|
+
headers: new s(this.headers),
|
|
451
451
|
url: this.url
|
|
452
452
|
});
|
|
453
453
|
}, v.error = function () {
|
|
@@ -481,16 +481,16 @@
|
|
|
481
481
|
return new Promise(function (r, i) {
|
|
482
482
|
var a = new _(e, t);
|
|
483
483
|
if (a.signal && a.signal.aborted) return i(new E("Aborted", "AbortError"));
|
|
484
|
-
var
|
|
484
|
+
var l = new XMLHttpRequest();
|
|
485
485
|
function d() {
|
|
486
|
-
|
|
486
|
+
l.abort();
|
|
487
487
|
}
|
|
488
|
-
if (
|
|
488
|
+
if (l.onload = function () {
|
|
489
489
|
var e,
|
|
490
490
|
t,
|
|
491
491
|
o = {
|
|
492
|
-
statusText:
|
|
493
|
-
headers: (e =
|
|
492
|
+
statusText: l.statusText,
|
|
493
|
+
headers: (e = l.getAllResponseHeaders() || "", t = new s(), e.replace(/\r?\n[\t ]+/g, " ").split("\r").map(function (e) {
|
|
494
494
|
return 0 === e.indexOf("\n") ? e.substr(1, e.length) : e;
|
|
495
495
|
}).forEach(function (e) {
|
|
496
496
|
var r = e.split(":"),
|
|
@@ -505,45 +505,45 @@
|
|
|
505
505
|
}
|
|
506
506
|
}), t)
|
|
507
507
|
};
|
|
508
|
-
0 === a.url.indexOf("file://") && (
|
|
509
|
-
var n = "response" in
|
|
508
|
+
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");
|
|
509
|
+
var n = "response" in l ? l.response : l.responseText;
|
|
510
510
|
setTimeout(function () {
|
|
511
511
|
r(new v(n, o));
|
|
512
512
|
}, 0);
|
|
513
|
-
},
|
|
513
|
+
}, l.onerror = function () {
|
|
514
514
|
setTimeout(function () {
|
|
515
515
|
i(new TypeError("Network request failed"));
|
|
516
516
|
}, 0);
|
|
517
|
-
},
|
|
517
|
+
}, l.ontimeout = function () {
|
|
518
518
|
setTimeout(function () {
|
|
519
519
|
i(new TypeError("Network request timed out"));
|
|
520
520
|
}, 0);
|
|
521
|
-
},
|
|
521
|
+
}, l.onabort = function () {
|
|
522
522
|
setTimeout(function () {
|
|
523
523
|
i(new E("Aborted", "AbortError"));
|
|
524
524
|
}, 0);
|
|
525
|
-
},
|
|
525
|
+
}, l.open(a.method, function (e) {
|
|
526
526
|
try {
|
|
527
527
|
return "" === e && o.location.href ? o.location.href : e;
|
|
528
528
|
} catch (t) {
|
|
529
529
|
return e;
|
|
530
530
|
}
|
|
531
|
-
}(a.url), !0), "include" === a.credentials ?
|
|
531
|
+
}(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
532
|
var f = [];
|
|
533
533
|
Object.getOwnPropertyNames(t.headers).forEach(function (e) {
|
|
534
|
-
f.push(u(e)),
|
|
534
|
+
f.push(u(e)), l.setRequestHeader(e, c(t.headers[e]));
|
|
535
535
|
}), a.headers.forEach(function (e, t) {
|
|
536
|
-
-1 === f.indexOf(t) &&
|
|
536
|
+
-1 === f.indexOf(t) && l.setRequestHeader(t, e);
|
|
537
537
|
});
|
|
538
538
|
} else a.headers.forEach(function (e, t) {
|
|
539
|
-
|
|
539
|
+
l.setRequestHeader(t, e);
|
|
540
540
|
});
|
|
541
|
-
a.signal && (a.signal.addEventListener("abort", d),
|
|
542
|
-
4 ===
|
|
543
|
-
}),
|
|
541
|
+
a.signal && (a.signal.addEventListener("abort", d), l.onreadystatechange = function () {
|
|
542
|
+
4 === l.readyState && a.signal.removeEventListener("abort", d);
|
|
543
|
+
}), l.send(void 0 === a._bodyInit ? null : a._bodyInit);
|
|
544
544
|
});
|
|
545
545
|
}
|
|
546
|
-
w.polyfill = !0, o.fetch || (o.fetch = w, o.Headers =
|
|
546
|
+
w.polyfill = !0, o.fetch || (o.fetch = w, o.Headers = s, o.Request = _, o.Response = v);
|
|
547
547
|
var C,
|
|
548
548
|
k = r(163),
|
|
549
549
|
A = r(500),
|
|
@@ -604,15 +604,15 @@
|
|
|
604
604
|
return o;
|
|
605
605
|
}
|
|
606
606
|
function H() {}
|
|
607
|
-
function
|
|
607
|
+
function M(e) {
|
|
608
608
|
return "string" == typeof e ? "false" !== e && "true" === e : Boolean(e);
|
|
609
609
|
}
|
|
610
|
-
function
|
|
610
|
+
function F() {
|
|
611
611
|
var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "",
|
|
612
612
|
t = r.g.CF.keformsUrl || "";
|
|
613
613
|
return "".concat(t, "/").concat(e).replace(/([^:])\/{2,}/g, "$1/");
|
|
614
614
|
}
|
|
615
|
-
function
|
|
615
|
+
function D(e, t) {
|
|
616
616
|
if (void 0 === t) return e;
|
|
617
617
|
for (var r = [], o = 0, n = Object.keys(t); o < n.length; o++) {
|
|
618
618
|
var i = n[o],
|
|
@@ -621,7 +621,7 @@
|
|
|
621
621
|
}
|
|
622
622
|
return 0 === r.length ? e : e + "?" + r.join("&");
|
|
623
623
|
}
|
|
624
|
-
function
|
|
624
|
+
function U(e) {
|
|
625
625
|
return new RegExp("^(?:".concat(e.replace(/\./g, "\\.").replace(/\*/g, "[a-z0-9-._]+"), ")$")).test(r.g.location.host);
|
|
626
626
|
}
|
|
627
627
|
function G(e) {
|
|
@@ -639,19 +639,19 @@
|
|
|
639
639
|
a,
|
|
640
640
|
u = [],
|
|
641
641
|
c = !0,
|
|
642
|
-
|
|
642
|
+
l = !1;
|
|
643
643
|
try {
|
|
644
644
|
if (i = (r = r.call(e)).next, 0 === t) {
|
|
645
645
|
if (Object(r) !== r) return;
|
|
646
646
|
c = !1;
|
|
647
647
|
} else for (; !(c = (o = i.call(r)).done) && (u.push(o.value), u.length !== t); c = !0);
|
|
648
648
|
} catch (e) {
|
|
649
|
-
|
|
649
|
+
l = !0, n = e;
|
|
650
650
|
} finally {
|
|
651
651
|
try {
|
|
652
652
|
if (!c && null != r.return && (a = r.return(), Object(a) !== a)) return;
|
|
653
653
|
} finally {
|
|
654
|
-
if (
|
|
654
|
+
if (l) throw n;
|
|
655
655
|
}
|
|
656
656
|
}
|
|
657
657
|
return u;
|
|
@@ -687,18 +687,18 @@
|
|
|
687
687
|
var a = n && !r.g[n],
|
|
688
688
|
u = "true" === G("debug") ? "" : ".min",
|
|
689
689
|
c = [],
|
|
690
|
-
|
|
690
|
+
l = {
|
|
691
691
|
v: i,
|
|
692
692
|
resourceZone: e.resourceZone
|
|
693
693
|
};
|
|
694
694
|
c.push(function (e) {
|
|
695
|
-
return A.q.styleSheet(
|
|
695
|
+
return A.q.styleSheet(F(D("static/public/styles/".concat(o).concat(u, ".css"), l)), !0, e);
|
|
696
696
|
}), c.push(function (e) {
|
|
697
|
-
return A.q.script(
|
|
697
|
+
return A.q.script(F(D("static/public/scripts/".concat(o).concat(u, ".js"), l)), e);
|
|
698
698
|
}), a && c.push(function (e) {
|
|
699
|
-
return A.q.styleSheet(
|
|
699
|
+
return A.q.styleSheet(F(D("static/public/styles/candy_".concat(n).concat(u, ".css"), l)), !1, e);
|
|
700
700
|
}, function (e) {
|
|
701
|
-
return A.q.script(
|
|
701
|
+
return A.q.script(F(D("static/public/scripts/candy_".concat(n).concat(u, ".js"), l)), e);
|
|
702
702
|
}), x(c, t);
|
|
703
703
|
}
|
|
704
704
|
}
|
|
@@ -719,13 +719,13 @@
|
|
|
719
719
|
a = null,
|
|
720
720
|
u = t.ns,
|
|
721
721
|
c = t.draftId;
|
|
722
|
-
if (
|
|
723
|
-
var
|
|
724
|
-
|
|
722
|
+
if (U(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 {
|
|
723
|
+
var l = null !== (o = t.resourceZone) && void 0 !== o ? o : G("resourceZone"),
|
|
724
|
+
s = D(F((0, P.I)({
|
|
725
725
|
ns: u,
|
|
726
726
|
draftId: c
|
|
727
727
|
})), {
|
|
728
|
-
resourceZone:
|
|
728
|
+
resourceZone: l
|
|
729
729
|
}),
|
|
730
730
|
d = {
|
|
731
731
|
method: "GET"
|
|
@@ -734,14 +734,14 @@
|
|
|
734
734
|
var f;
|
|
735
735
|
d.credentials = "omit", d.headers = null !== (f = d.headers) && void 0 !== f ? f : {}, d.headers.Authorization = "AUTH.SID ".concat(t.authentication.authSid);
|
|
736
736
|
} else d.credentials = "omit";
|
|
737
|
-
(null !== (n = t.fetch) && void 0 !== n ? n : w)(
|
|
737
|
+
(null !== (n = t.fetch) && void 0 !== n ? n : w)(s, d).then(function (e) {
|
|
738
738
|
return e.json();
|
|
739
739
|
}).then(function (o) {
|
|
740
740
|
var n,
|
|
741
741
|
a,
|
|
742
742
|
u,
|
|
743
743
|
c,
|
|
744
|
-
|
|
744
|
+
s,
|
|
745
745
|
d = o.gfv,
|
|
746
746
|
f = o.engineVersion,
|
|
747
747
|
y = T(T(T({
|
|
@@ -761,8 +761,8 @@
|
|
|
761
761
|
feedbackEnabled: null !== (a = t.feedbackEnabled) && void 0 !== a ? a : o.feedbackEnabled,
|
|
762
762
|
isDisabledCleanForm: null !== (u = t.isDisabledCleanForm) && void 0 !== u && u,
|
|
763
763
|
isDisabledCloseButton: null !== (c = t.isDisabledCloseButton) && void 0 !== c && c,
|
|
764
|
-
isDisabledCloseAndSaveButton: null !== (
|
|
765
|
-
resourceZone:
|
|
764
|
+
isDisabledCloseAndSaveButton: null !== (s = t.isDisabledCloseAndSaveButton) && void 0 !== s && s,
|
|
765
|
+
resourceZone: l
|
|
766
766
|
});
|
|
767
767
|
R({
|
|
768
768
|
gfv: y.gfv,
|
|
@@ -788,10 +788,10 @@
|
|
|
788
788
|
z = {
|
|
789
789
|
start: V,
|
|
790
790
|
entryPoint: {},
|
|
791
|
-
partialRenderingForIE8:
|
|
791
|
+
partialRenderingForIE8: M("{partialRenderingForIE8}"),
|
|
792
792
|
keformsUrl: "{keformsUrl}"
|
|
793
793
|
};
|
|
794
|
-
r.g.CF = z, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(H, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(
|
|
794
|
+
r.g.CF = z, (K = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && (K.register(H, "defaultCallback", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(M, "parseBool", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(F, "url", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(D, "buildUrl", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(U, "isAllowed", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(G, "getParameterByName", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(x, "runParallel", "C:\\BuildAgent\\work\\forms-root-candy\\candy\\Engine\\src\\Forms\\Client\\Client.ts"), K.register(function (e, t) {
|
|
795
795
|
try {
|
|
796
796
|
var r,
|
|
797
797
|
o,
|
|
@@ -800,8 +800,8 @@
|
|
|
800
800
|
a,
|
|
801
801
|
u,
|
|
802
802
|
c,
|
|
803
|
-
s,
|
|
804
803
|
l,
|
|
804
|
+
s,
|
|
805
805
|
d,
|
|
806
806
|
f = e.split(".").slice(0, 3).map(function (e) {
|
|
807
807
|
return parseInt(e, 10);
|
|
@@ -809,7 +809,7 @@
|
|
|
809
809
|
y = t.split(".").slice(0, 3).map(function (e) {
|
|
810
810
|
return parseInt(e, 10);
|
|
811
811
|
});
|
|
812
|
-
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 !== (
|
|
812
|
+
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));
|
|
813
813
|
} catch (e) {
|
|
814
814
|
return !1;
|
|
815
815
|
}
|
|
@@ -869,7 +869,7 @@
|
|
|
869
869
|
a = i.iterator || "@@iterator",
|
|
870
870
|
u = i.asyncIterator || "@@asyncIterator",
|
|
871
871
|
c = i.toStringTag || "@@toStringTag";
|
|
872
|
-
function
|
|
872
|
+
function l(e, t, r) {
|
|
873
873
|
return Object.defineProperty(e, t, {
|
|
874
874
|
value: r,
|
|
875
875
|
enumerable: !0,
|
|
@@ -878,13 +878,13 @@
|
|
|
878
878
|
}), e[t];
|
|
879
879
|
}
|
|
880
880
|
try {
|
|
881
|
-
|
|
881
|
+
l({}, "");
|
|
882
882
|
} catch (e) {
|
|
883
|
-
|
|
883
|
+
l = function (e, t, r) {
|
|
884
884
|
return e[t] = r;
|
|
885
885
|
};
|
|
886
886
|
}
|
|
887
|
-
function
|
|
887
|
+
function s(e, t, r, o) {
|
|
888
888
|
var i = t && t.prototype instanceof _ ? t : _,
|
|
889
889
|
a = Object.create(i.prototype),
|
|
890
890
|
u = new B(o || []);
|
|
@@ -905,7 +905,7 @@
|
|
|
905
905
|
};
|
|
906
906
|
}
|
|
907
907
|
}
|
|
908
|
-
t.wrap =
|
|
908
|
+
t.wrap = s;
|
|
909
909
|
var f = "suspendedStart",
|
|
910
910
|
y = "suspendedYield",
|
|
911
911
|
p = "executing",
|
|
@@ -915,7 +915,7 @@
|
|
|
915
915
|
function g() {}
|
|
916
916
|
function v() {}
|
|
917
917
|
var b = {};
|
|
918
|
-
|
|
918
|
+
l(b, a, function () {
|
|
919
919
|
return this;
|
|
920
920
|
});
|
|
921
921
|
var E = Object.getPrototypeOf,
|
|
@@ -924,7 +924,7 @@
|
|
|
924
924
|
var C = v.prototype = _.prototype = Object.create(b);
|
|
925
925
|
function k(e) {
|
|
926
926
|
["next", "throw", "return"].forEach(function (t) {
|
|
927
|
-
|
|
927
|
+
l(e, t, function (e) {
|
|
928
928
|
return this._invoke(t, e);
|
|
929
929
|
});
|
|
930
930
|
});
|
|
@@ -933,14 +933,14 @@
|
|
|
933
933
|
function r(n, i, a, u) {
|
|
934
934
|
var c = d(e[n], e, i);
|
|
935
935
|
if ("throw" !== c.type) {
|
|
936
|
-
var
|
|
937
|
-
|
|
938
|
-
return
|
|
936
|
+
var l = c.arg,
|
|
937
|
+
s = l.value;
|
|
938
|
+
return s && "object" == _typeof(s) && o.call(s, "__await") ? t.resolve(s.__await).then(function (e) {
|
|
939
939
|
r("next", e, a, u);
|
|
940
940
|
}, function (e) {
|
|
941
941
|
r("throw", e, a, u);
|
|
942
|
-
}) : t.resolve(
|
|
943
|
-
|
|
942
|
+
}) : t.resolve(s).then(function (e) {
|
|
943
|
+
l.value = e, a(l);
|
|
944
944
|
}, function (e) {
|
|
945
945
|
return r("throw", e, a, u);
|
|
946
946
|
});
|
|
@@ -984,15 +984,15 @@
|
|
|
984
984
|
o.dispatchException(o.arg);
|
|
985
985
|
} else "return" === o.method && o.abrupt("return", o.arg);
|
|
986
986
|
n = p;
|
|
987
|
-
var
|
|
988
|
-
if ("normal" ===
|
|
989
|
-
if (n = o.done ? h : y,
|
|
987
|
+
var l = d(t, r, o);
|
|
988
|
+
if ("normal" === l.type) {
|
|
989
|
+
if (n = o.done ? h : y, l.arg === m) continue;
|
|
990
990
|
return {
|
|
991
|
-
value:
|
|
991
|
+
value: l.arg,
|
|
992
992
|
done: o.done
|
|
993
993
|
};
|
|
994
994
|
}
|
|
995
|
-
"throw" ===
|
|
995
|
+
"throw" === l.type && (n = h, o.method = "throw", o.arg = l.arg);
|
|
996
996
|
}
|
|
997
997
|
};
|
|
998
998
|
}
|
|
@@ -1042,26 +1042,26 @@
|
|
|
1042
1042
|
}), n(v, "constructor", {
|
|
1043
1043
|
value: g,
|
|
1044
1044
|
configurable: !0
|
|
1045
|
-
}), g.displayName =
|
|
1045
|
+
}), g.displayName = l(v, c, "GeneratorFunction"), t.isGeneratorFunction = function (e) {
|
|
1046
1046
|
var t = "function" == typeof e && e.constructor;
|
|
1047
1047
|
return !!t && (t === g || "GeneratorFunction" === (t.displayName || t.name));
|
|
1048
1048
|
}, t.mark = function (e) {
|
|
1049
|
-
return Object.setPrototypeOf ? Object.setPrototypeOf(e, v) : (e.__proto__ = v,
|
|
1049
|
+
return Object.setPrototypeOf ? Object.setPrototypeOf(e, v) : (e.__proto__ = v, l(e, c, "GeneratorFunction")), e.prototype = Object.create(C), e;
|
|
1050
1050
|
}, t.awrap = function (e) {
|
|
1051
1051
|
return {
|
|
1052
1052
|
__await: e
|
|
1053
1053
|
};
|
|
1054
|
-
}, k(A.prototype),
|
|
1054
|
+
}, k(A.prototype), l(A.prototype, u, function () {
|
|
1055
1055
|
return this;
|
|
1056
1056
|
}), t.AsyncIterator = A, t.async = function (e, r, o, n, i) {
|
|
1057
1057
|
void 0 === i && (i = Promise);
|
|
1058
|
-
var a = new A(
|
|
1058
|
+
var a = new A(s(e, r, o, n), i);
|
|
1059
1059
|
return t.isGeneratorFunction(r) ? a : a.next().then(function (e) {
|
|
1060
1060
|
return e.done ? e.value : a.next();
|
|
1061
1061
|
});
|
|
1062
|
-
}, k(C),
|
|
1062
|
+
}, k(C), l(C, c, "Generator"), l(C, a, function () {
|
|
1063
1063
|
return this;
|
|
1064
|
-
}),
|
|
1064
|
+
}), l(C, "toString", function () {
|
|
1065
1065
|
return "[object Generator]";
|
|
1066
1066
|
}), t.keys = function (e) {
|
|
1067
1067
|
var t = Object(e),
|
|
@@ -1097,14 +1097,14 @@
|
|
|
1097
1097
|
if ("root" === a.tryLoc) return n("end");
|
|
1098
1098
|
if (a.tryLoc <= this.prev) {
|
|
1099
1099
|
var c = o.call(a, "catchLoc"),
|
|
1100
|
-
|
|
1101
|
-
if (c &&
|
|
1100
|
+
l = o.call(a, "finallyLoc");
|
|
1101
|
+
if (c && l) {
|
|
1102
1102
|
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1103
1103
|
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1104
1104
|
} else if (c) {
|
|
1105
1105
|
if (this.prev < a.catchLoc) return n(a.catchLoc, !0);
|
|
1106
1106
|
} else {
|
|
1107
|
-
if (!
|
|
1107
|
+
if (!l) throw Error("try statement without catch or finally");
|
|
1108
1108
|
if (this.prev < a.finallyLoc) return n(a.finallyLoc);
|
|
1109
1109
|
}
|
|
1110
1110
|
}
|
|
@@ -1270,6 +1270,11 @@
|
|
|
1270
1270
|
value: function (e) {
|
|
1271
1271
|
throw new Error("Method not implemented.");
|
|
1272
1272
|
}
|
|
1273
|
+
}, {
|
|
1274
|
+
key: "cancelSelectRelative",
|
|
1275
|
+
value: function () {
|
|
1276
|
+
throw new Error("Method not implemented.");
|
|
1277
|
+
}
|
|
1273
1278
|
}, {
|
|
1274
1279
|
key: "getNavigationPathMapper",
|
|
1275
1280
|
value: function () {
|
|
@@ -1406,6 +1411,24 @@
|
|
|
1406
1411
|
value: function (e) {
|
|
1407
1412
|
throw new Error("not implemented");
|
|
1408
1413
|
}
|
|
1414
|
+
}, {
|
|
1415
|
+
key: "mergeRelative",
|
|
1416
|
+
value: function () {
|
|
1417
|
+
throw new Error("not implemented");
|
|
1418
|
+
}
|
|
1419
|
+
}, {
|
|
1420
|
+
key: "patchRelative",
|
|
1421
|
+
value: function () {
|
|
1422
|
+
throw new Error("not implemented");
|
|
1423
|
+
}
|
|
1424
|
+
}, {
|
|
1425
|
+
key: "sendMetrics",
|
|
1426
|
+
value: function (e, t) {}
|
|
1427
|
+
}, {
|
|
1428
|
+
key: "matchEmployee",
|
|
1429
|
+
value: function (e) {
|
|
1430
|
+
throw new Error("not implemented");
|
|
1431
|
+
}
|
|
1409
1432
|
}, {
|
|
1410
1433
|
key: "reloadInner",
|
|
1411
1434
|
value: (_reloadInner = _asyncToGenerator(_regeneratorRuntime().mark(function e() {
|
|
@@ -1510,6 +1533,11 @@
|
|
|
1510
1533
|
value: function (e) {
|
|
1511
1534
|
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1512
1535
|
}
|
|
1536
|
+
}, {
|
|
1537
|
+
key: "preferredInterdocumentTransfer",
|
|
1538
|
+
value: function (e) {
|
|
1539
|
+
throw new _Common_Errors__WEBPACK_IMPORTED_MODULE_0__.EH();
|
|
1540
|
+
}
|
|
1513
1541
|
}, {
|
|
1514
1542
|
key: "createFiasApiClient",
|
|
1515
1543
|
value: function (e) {
|
|
@@ -1605,12 +1633,12 @@
|
|
|
1605
1633
|
}
|
|
1606
1634
|
r.d(t, {
|
|
1607
1635
|
q: function () {
|
|
1608
|
-
return
|
|
1636
|
+
return l;
|
|
1609
1637
|
}
|
|
1610
1638
|
}), e = r.hmd(e), (o = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.enterModule : void 0) && o(e), "undefined" != typeof reactHotLoaderGlobal && reactHotLoaderGlobal.default.signature;
|
|
1611
1639
|
var u,
|
|
1612
1640
|
c,
|
|
1613
|
-
|
|
1641
|
+
l = function () {
|
|
1614
1642
|
return e = function e() {
|
|
1615
1643
|
!function (e, t) {
|
|
1616
1644
|
if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function");
|
|
@@ -1645,7 +1673,7 @@
|
|
|
1645
1673
|
}), e;
|
|
1646
1674
|
var e, t;
|
|
1647
1675
|
}();
|
|
1648
|
-
(u = "undefined" != typeof reactHotLoaderGlobal ? reactHotLoaderGlobal.default : void 0) && u.register(
|
|
1676
|
+
(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);
|
|
1649
1677
|
}
|
|
1650
1678
|
},
|
|
1651
1679
|
__webpack_module_cache__ = {};
|
|
@@ -1683,4 +1711,4 @@
|
|
|
1683
1711
|
};
|
|
1684
1712
|
var __webpack_exports__ = __webpack_require__(591);
|
|
1685
1713
|
})();
|
|
1686
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsImMiLCJzIiwibCIsImYiLCJrdSIsIm1lc3NhZ2UiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInkiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwIiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJoIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibSIsIl8iLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkMiLCJrIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJGIiwiTSIsIkNGIiwia2Vmb3Jtc1VybCIsIlUiLCJlbmNvZGVVUklDb21wb25lbnQiLCJEIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwicSIsInN0eWxlU2hlZXQiLCJzY3JpcHQiLCJOIiwicHVibGljRm9ybSIsImNhdGNoIiwiViIsImtvbnR1ckRvbWFpbnMiLCJhdXRob3JpemVkIiwiYXV0aGVudGljYXRpb24iLCJhdXRoU2lkIiwiQXV0aG9yaXphdGlvbiIsImNhdWxkcm9uQXBpVXJsIiwiaXNUZXN0U2VydmVyIiwicmVuZGVyQ2FjaGluZ0ZvcklFOCIsIm5vcm1hbGl6YXRpb25PblNlcnZlciIsIm5vcm1hdGl2ZVVybCIsInNob3dOYXZpZ2F0aW9uU2lkZWJhciIsIm9uUmVtb3ZlQXR0YWNobWVudCIsImZlZWRiYWNrRW5hYmxlZCIsImlzRGlzYWJsZWRDbGVhbkZvcm0iLCJpc0Rpc2FibGVkQ2xvc2VCdXR0b24iLCJpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uIiwidGhlbWUiLCJ0ZW1wbGF0ZXNBcGkiLCJyZW5kZXJGb3JtIiwiSyIsIlciLCJ6Iiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aCIsIl9JTlRFUk5BTF9fZ2V0U2VsZWN0RnVuY3Rpb25Gb3JEaXNhYmxlRW1wbG95ZWVJblNTIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsIl9yZWxvYWRJbm5lciIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbnZhciBnID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKSB8fFxuICB7fVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZyAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZyAmJlxuICAgICdCbG9iJyBpbiBnICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kJyArIGhlYWRlci5sZW5ndGgpXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5fbm9Cb2R5KSByZXR1cm5cbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB2YXIgbWF0Y2ggPSAvY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGJsb2IudHlwZSlcbiAgdmFyIGVuY29kaW5nID0gbWF0Y2ggPyBtYXRjaFsxXSA6ICd1dGYtOCdcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fbm9Cb2R5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXInKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydDT05ORUNUJywgJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BPU1QnLCAnUFVUJywgJ1RSQUNFJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWwgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ0Fib3J0Q29udHJvbGxlcicgaW4gZykge1xuICAgICAgdmFyIGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICByZXR1cm4gY3RybC5zaWduYWw7XG4gICAgfVxuICB9KCkpO1xuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZXNwb25zZSAnICsgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgaWYgKHRoaXMuc3RhdHVzIDwgMjAwIHx8IHRoaXMuc3RhdHVzID4gNTk5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uXCIpXG4gIH1cbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLm9rID0gZmFsc2VcbiAgcmVzcG9uc2Uuc3RhdHVzID0gMFxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGcuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICAvLyBUaGlzIGNoZWNrIGlmIHNwZWNpZmljYWxseSBmb3Igd2hlbiBhIHVzZXIgZmV0Y2hlcyBhIGZpbGUgbG9jYWxseSBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICAgICAgLy8gT25seSBpZiB0aGUgc3RhdHVzIGlzIG91dCBvZiBhIG5vcm1hbCByYW5nZVxuICAgICAgaWYgKHJlcXVlc3QudXJsLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9PT0gMCAmJiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID4gNTk5KSkge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IDIwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0JykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGcubG9jYXRpb24uaHJlZiA/IGcubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXJcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyB8fCAoZy5IZWFkZXJzICYmIGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIGcuSGVhZGVycykpKSB7XG4gICAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIG5hbWVzLnB1c2gobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnLmZldGNoKSB7XG4gIGcuZmV0Y2ggPSBmZXRjaFxuICBnLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGcuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZy5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuaW1wb3J0IHsgQWxsSWNvbk5hbWVzIH0gZnJvbSBcInJlYWN0LXVpXCI7XG5cbmltcG9ydCB7IEVycm9yRmlyc3RDYWxsYmFjaywgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHsgTG9hZEludG9Eb2N1bWVudCB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQgfSBmcm9tIFwiLi4vVHlwZXMvSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2VcIjtcbmltcG9ydCB7IGdldENsaWVudERyYWZ0SW5mb1VybCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybFwiO1xuaW1wb3J0IHsgQVVPT3B0aW9ucyB9IGZyb20gXCIuLi9UeXBlcy9BVU9PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dEV2ZW50c1N0YXRpYyB9IGZyb20gXCIuLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTGF5b3V0RXZlbnRzL0xheW91dEV2ZW50c1wiO1xuXG5pbXBvcnQgeyBjbGllbnRTZXR0aW5ncyB9IGZyb20gXCIuL0NsaWVudFNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIH0gZnJvbSBcIi4vTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtXCI7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG50eXBlIEVuZ2luZUVudHJ5UG9pbnQgPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlc2NyaXB0aW9uIHtcbiAgICBpY29uOiBBbGxJY29uTmFtZXM7XG4gICAgdGV4dD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgaGludD86IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpZD86IHN0cmluZztcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiaW1wb3J0IHtcbiAgICBFbXBsb3llZSxcbiAgICBFbXBsb3llZUxpc3QsXG4gICAgR2V0RW1wbG95ZWVMaXN0UmVxdWVzdCxcbiAgICBHZXRXb3JraW5nRXZlbnRMaXN0UmVxdWVzdCxcbiAgICBXb3JraW5nRXZlbnRMaXN0LFxufSBmcm9tIFwiQHNrYmtvbnR1ci9zdGFmZi1zZWxlY3Rvci13aWRnZXRcIjtcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gXCJFbmdpbmUvc3JjL0VuZ2luZS9Gb3JtL01vZGVsQ2hhbmdlRXZlbnRMaXN0ZW5lclwiO1xuXG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9FcnJvcnNcIjtcbmltcG9ydCB0eXBlIHsgU3RlcCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9Gb3JtUGFydHMvVG91ci9Ub3VyVHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgU2VydmVyRXJyb3JMb2cgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0Vycm9yTG9nL1NlcnZlckVycm9yTG9nXCI7XG5pbXBvcnQgdHlwZSB7IEJpbmRpbmdQYXRoLCBNb2RlbFZhbHVlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0NvcmVUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBFeHRlcm5hbEhvb2tGdW5jdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9FdmVudE1hbmFnZW1lbnQvRXh0ZXJuYWxFdmVudHMvRXh0ZXJuYWxIb29rRnVuY3Rpb25cIjtcbmltcG9ydCB0eXBlIHsgUmVhZG9ubHlNb2RlbENodW5rIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL01vZGVsU3RvcmluZy9Nb2RlbENodW5rXCI7XG5pbXBvcnQgdHlwZSB7IFBpY2tsaXN0UXVlcnlSZXNwb25zZSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9QaWNrbGlzdHMvUGlja2xpc3RUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJUHVibGljRm9ybSB9IGZyb20gXCIuLi8uLi9QdWJsaWNGb3JtL0lQdWJsaWNGb3JtXCI7XG5pbXBvcnQgeyBNb2RlbEV2ZW50c0xpc3RlbmVyIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9Nb2RlbEV2ZW50cy9Nb2RlbEV2ZW50XCI7XG5pbXBvcnQgeyBEaWdlc3RRdWVyeUZpbHRlciB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvRGlnZXN0QXBpQ2xpZW50L1R5cGVzL0RpZ2VzdFF1ZXJ5RmlsdGVyXCI7XG5pbXBvcnQgeyBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0Zvcm0vSUZvcm1Nb2RlbEFjY2Vzc29yXCI7XG5pbXBvcnQgeyBNb2RhbE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kYWxNYW5hZ2VyL0lNb2RhbFN0YXRlXCI7XG5pbXBvcnQgeyBBYnNvbHV0ZVJlc29sdmVkTW9kZWxQYXRoIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9Nb2RlbFBhdGgvTW9kZWxQYXRoXCI7XG5pbXBvcnQgeyBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzLCBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vUHVibGljRm9ybS9Jbml0U2VjdGlvbkxpZ2h0Ym94XCI7XG5pbXBvcnQgeyBNYXNzQWN0aW9uUGFyYW1ldGVycyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvTWFzc0FjdGlvbnMvTWFzc0FjdGlvblBhcmFtZXRlcnNcIjtcbmltcG9ydCB7IFByaW50VHlwZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvUHJpbnQvUHJpbnRUeXBlXCI7XG5pbXBvcnQgeyBGaWFzQXBpLCBGaWFzQ2xpZW50SW5pdE9wdGlvbnMgfSBmcm9tIFwiLi4vLi4vLi4vQ29udHJvbHMvVmFsdWVFZGl0b3JzL0ZpYXMvRmlhc0lucHV0L0ZpYXNBcGlcIjtcbmltcG9ydCB7IEluc3RhbmNlc0RlbGV0aW5nUnVsZSB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvSW5zdGFuY2VzRGVsZXRpbmcvSW5zdGFuY2VzRGVsZXRpbmdSdWxlXCI7XG5pbXBvcnQgeyBDb21iaW5lRnVmUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9EcmFmdEFjdGlvbnMvQ29tYmluZUZ1ZlJlc3VsdFwiO1xuaW1wb3J0IHsgSUNhbmR5Q29tcG9uZW50SGFuZGxlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0NvbXBvbmVudEhhbmRsZVJlZ2lzdHJ5L0lDYW5keUNvbXBvbmVudEhhbmRsZVwiO1xuaW1wb3J0IHsgTmF2aWdhdGlvblBhdGhNYXBwZXIgfSBmcm9tIFwiLi4vLi4vSW5qZWN0YWJsZU1vZHVsZXMvSW5qZWN0YWJsZUVuZ2luZU1vZHVsZXNcIjtcbmltcG9ydCB7IEltcG9ydEVtcGxveWVyRG9jdW1lbnRzT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9TdGFmZlNlcnZpY2VJbnRlZ3JhdGlvbi9FbXBsb3llZVNlcnZpY2VUeXBlc1wiO1xuaW1wb3J0IHsgVGFiSW5mb3NTdGF0ZSB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9NdWx0aUNvbnRyb2xzL1RhYnMvU3RvcmUvVGFiSW5mb3NTdGF0ZVwiO1xuXG5pbXBvcnQgeyBJTGVnYWN5Rm9ybSB9IGZyb20gXCIuL0lMZWdhY3lGb3JtXCI7XG5cbmV4cG9ydCB0eXBlIE1vZGVsRXZlbnRQYXRoID1cbiAgICB8IFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcInJlbW92ZVwiLCBzdHJpbmddXG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIl07XG5cbmV4cG9ydCBmdW5jdGlvbiBtb2RlbENoYW5nZUV2ZW50UGF0aChwYXRoPzogc3RyaW5nLCBmaWVsZE5hbWU/OiBzdHJpbmcpOiBNb2RlbEV2ZW50UGF0aCB7XG4gICAgaWYgKGZpZWxkTmFtZSAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHBhdGggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aCwgZmllbGROYW1lXTtcbiAgICB9XG4gICAgaWYgKHBhdGggIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBwYXRoXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCJdO1xufVxuXG5mdW5jdGlvbiBtYXBDaHVua1ZhbHVlcyhjaHVuazogUmVhZG9ubHlNb2RlbENodW5rKTogQXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9PiB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGNodW5rKVxuICAgICAgICAuZmlsdGVyKHBhdGggPT4gY2h1bmtbcGF0aF0gJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGNodW5rW3BhdGhdLCBcInZhbHVlXCIpKVxuICAgICAgICAubWFwKHBhdGggPT4ge1xuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gY2h1bmtbcGF0aF07XG4gICAgICAgICAgICBpZiAocmVzdWx0ID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IFtwYXRoXTogcmVzdWx0LnZhbHVlIH07XG4gICAgICAgIH0pO1xufVxuXG5mdW5jdGlvbiByZWR1Y2VDaHVua1ZhbHVlcyhjaHVua3M6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgIHJldHVybiBjaHVua3MucmVkdWNlKFxuICAgICAgICAocmVzdWx0LCBjaHVuaykgPT4gKHtcbiAgICAgICAgICAgIC4uLnJlc3VsdCxcbiAgICAgICAgICAgIC4uLmNodW5rLFxuICAgICAgICB9KSxcbiAgICAgICAge31cbiAgICApO1xufVxuXG5jbGFzcyBMZWdhY3lQdWJsaWNGb3JtIGltcGxlbWVudHMgSVB1YmxpY0Zvcm0ge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZm9ybTogSUxlZ2FjeUZvcm07XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZm9ybTogSUxlZ2FjeUZvcm0pIHtcbiAgICAgICAgdGhpcy5mb3JtID0gZm9ybTtcbiAgICB9XG5cbiAgICBwdWJsaWMgbmF2aWdhdGVCeUhpZ2hsYW5kZXJQYXRocyhwYXRoczogc3RyaW5nW10pOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmF2aWdhdGlvblBhdGhNYXBwZXIoKTogTmF2aWdhdGlvblBhdGhNYXBwZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9fSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyhcbiAgICAgICAgcGF0aFNwZWM6IHN0cmluZ1xuICAgICk6IFByb21pc2U8KGVtcGxveWVlOiBFbXBsb3llZSkgPT4gYm9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9kYWxVbml0T3BlbmVkSW5zdGFuY2UocGFnZUlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhYnNTdGF0ZSgpOiBUYWJJbmZvc1N0YXRlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRpb25QYXRoOiBzdHJpbmcpOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZXJEb2N1bWVudHMob3B0aW9uczogSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMoZW1wbG95ZWVzOiBFbXBsb3llZVtdLCBvcHRpb25zPzogeyBzY2VuYXJpbz86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludChwcmludFR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIHRocm93IEVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc3RvcEF1dG9zZW5kKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udW5tb3VudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnVubW91bnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG91clN0ZXBzKCk6IFN0ZXBbXSB7XG4gICAgICAgIC8vIEZvciBvbGQga2V3ZWJcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDQrdGC0L4g0LIg0YHRgtCw0YDRi9GFINC00LLQuNC20LrQsNGFINGC0YPRgiDRgtCw0LrQvtC5INCy0YvQt9C+0LJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWRhdG9yLnZhbGlkYXRlQWxsKGtleXMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWRkaXRpb25hbEVtcGxveWVlSW5mbyhmaWx0ZXJzOiBHZXRFbXBsb3llZUxpc3RSZXF1ZXN0KTogUHJvbWlzZTxFbXBsb3llZUxpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyByZWxvYWRJbm5lcigpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRXb3JraW5nRXZlbnRzRm9yRW1wbG95ZWUoZmlsdGVyczogR2V0V29ya2luZ0V2ZW50TGlzdFJlcXVlc3QpOiBQcm9taXNlPFdvcmtpbmdFdmVudExpc3QgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNFcnJvcnMoKTogYm9vbGVhbiB7XG4gICAgICAgIGNvbnN0IGVycm9yQ291bnQgPSB0aGlzLmZvcm0ubW9kZWwuZ2V0KHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKTtcbiAgICAgICAgcmV0dXJuIGVycm9yQ291bnQgIT0gdW5kZWZpbmVkICYmIGVycm9yQ291bnQgPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkVycm9yc0NvdW50Q2hhbmdlZChsaXN0ZW5lcjogTW9kZWxFdmVudHNMaXN0ZW5lcik6IHZvaWQge1xuICAgICAgICB0aGlzLmZvcm0uZXZlbnRNYW5hZ2VyLm9uKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmZFcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vZmYobW9kZWxDaGFuZ2VFdmVudFBhdGgodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290LCBcImVycm9yc0NvdW50XCIpLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIHNldChwYXRoT3JNb2RlbENodW5rOiB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogc3RyaW5nLCB2YWx1ZTogTW9kZWxWYWx1ZSk6IHZvaWQgfCBQcm9taXNlPHZvaWQ+O1xuICAgIHB1YmxpYyBzZXQoXG4gICAgICAgIHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZyB8IHsgW3BhdGg6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9LFxuICAgICAgICB2YWx1ZT86IE1vZGVsVmFsdWVcbiAgICApOiB2b2lkIHwgUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIHBhdGhPck1vZGVsQ2h1bmsgIT09IG51bGwgJiZcbiAgICAgICAgICAgIHR5cGVvZiBwYXRoT3JNb2RlbENodW5rICE9PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayA9PT0gXCJvYmplY3RcIiAmJlxuICAgICAgICAgICAgIUFycmF5LmlzQXJyYXkocGF0aE9yTW9kZWxDaHVuaylcbiAgICAgICAgKSB7XG4gICAgICAgICAgICBjb25zdCBpbm5lckNodW5rID0gT2JqZWN0LmtleXMocGF0aE9yTW9kZWxDaHVuaykucmVkdWNlPFJlYWRvbmx5TW9kZWxDaHVuaz4oXG4gICAgICAgICAgICAgICAgKHJlc3VsdCwgcGF0aCkgPT4gKHsgW3BhdGhdOiB7IHZhbHVlOiBwYXRoT3JNb2RlbENodW5rW3BhdGhdIH0sIC4uLnJlc3VsdCB9KSxcbiAgICAgICAgICAgICAgICB7fVxuICAgICAgICAgICAgKTtcblxuICAgICAgICAgICAgdGhpcy5mb3JtLm1vZGVsLmZpbGwoaW5uZXJDaHVuayk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5zZXQocGF0aE9yTW9kZWxDaHVuaywgXCJ2YWx1ZVwiLCB2YWx1ZSk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLnNldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3Igb2JqZWN0IHdpdGggcGF0aC12YWx1ZSBwYWlyc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0KHBhdGhPckFycmF5OiBzdHJpbmcgfCBzdHJpbmdbXSk6IHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHBhdGhPckFycmF5KSkge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKFxuICAgICAgICAgICAgICAgIHBhdGhPckFycmF5XG4gICAgICAgICAgICAgICAgICAgIC5tYXAocGF0aCA9PiBtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsocGF0aCkpKVxuICAgICAgICAgICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tYW55XG4gICAgICAgICAgICAgICAgICAgIC5yZWR1Y2U8QXJyYXk8eyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9Pj4oKHJlc3VsdCwgYXJyYXkpID0+IHJlc3VsdC5jb25jYXQoYXJyYXkpLCBbXSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIHBhdGhPckFycmF5ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGhPckFycmF5KSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHBhdGhPckFycmF5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhtYXBDaHVua1ZhbHVlcyh0aGlzLmZvcm0ubW9kZWwuZ2V0Q2h1bmsodGhpcy5mb3JtLnNldHRpbmdzLmZvcm1Sb290KSkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcImZvcm0uZ2V0KCkgcGFyYW1ldGVyIHNob3VsZCBiZSBzdHJpbmcgcGF0aCBvciBhcnJheSBvZiBwYXRoc1wiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VmFsdWUocGF0aDogc3RyaW5nKTogTW9kZWxWYWx1ZSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgICAgICByZXR1cm4gdGhpcy5mb3JtLm1vZGVsLmdldChwYXRoLCBcInZhbHVlXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjb3B5U3VidHJlZShcbiAgICAgICAgc291cmNlQmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgdGFyZ2V0QmluZGluZ1BhdGg6IEJpbmRpbmdQYXRoIHwgQWJzb2x1dGVSZXNvbHZlZE1vZGVsUGF0aCxcbiAgICAgICAgZG9Ob3RDb3B5UGF0aHM/OiBzdHJpbmdbXVxuICAgICk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRJbnN0YW5jZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRDaGlsZHJlbihwYXRoOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHV1aWRHZW5lcmF0ZSgpOiBzdHJpbmcge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG93TW9kYWwob3B0aW9uczogTW9kYWxPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFNlY3Rpb24ob3B0aW9uczogSW5pdFNlY3Rpb25Gb3JtTGlnaHRib3hPcHRpb25zKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbGxJbml0U2VjdGlvbihvcHRpb25zOiBDYWxsSW5pdFNlY3Rpb25MaWdodGJveFByb3BzKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGNyZWF0ZUZpYXNBcGlDbGllbnQob3B0aW9uczogRmlhc0NsaWVudEluaXRPcHRpb25zKTogRmlhc0FwaSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5FbXBsb3llZUVkaXRvcihlbXBsb3llZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkNvbnRyb2xJZkV4aXN0KHBhdGg6IEJpbmRpbmdQYXRoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9GaWVsZHNUb0F1dG9WYWx1ZShwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5zdXJlSW5zdGFuY2VGdWxseUxvYWRlZChcbiAgICAgICAgYmluZGluZ1BhdGg6IHN0cmluZyB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIC4uLmluc3RhbmNlczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzQnlSdWxlcyhydWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG5wKCk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OTEpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9D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
|
|
1714
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJuIiwiaSIsImEiLCJlIiwiY29uY2F0IiwibnMiLCJkcmFmdElkIiwiciIsImQiLCJ0IiwiSSIsImhtZCIsIm8iLCJyZWFjdEhvdExvYWRlckdsb2JhbCIsImVudGVyTW9kdWxlIiwiZGVmYXVsdCIsInNpZ25hdHVyZSIsInJlZ2lzdGVyIiwibGVhdmVNb2R1bGUiLCJtb2R1bGUiLCJfX3dlYnBhY2tfZXhwb3J0c19fIiwiX193ZWJwYWNrX3JlcXVpcmVfXyIsIl90eXBlb2YiLCJTeW1ib2wiLCJpdGVyYXRvciIsImNvbnN0cnVjdG9yIiwicHJvdG90eXBlIiwiX2NsYXNzQ2FsbENoZWNrIiwiVHlwZUVycm9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJsZW5ndGgiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsIl90b1Byb3BlcnR5S2V5Iiwia2V5IiwiX2NyZWF0ZUNsYXNzIiwiX3RvUHJpbWl0aXZlIiwidG9QcmltaXRpdmUiLCJjYWxsIiwiU3RyaW5nIiwiTnVtYmVyIiwiX2NhbGxTdXBlciIsIl9nZXRQcm90b3R5cGVPZiIsIl9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuIiwiX2lzTmF0aXZlUmVmbGVjdENvbnN0cnVjdCIsIlJlZmxlY3QiLCJjb25zdHJ1Y3QiLCJhcHBseSIsIl9hc3NlcnRUaGlzSW5pdGlhbGl6ZWQiLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsImNyZWF0ZSIsInZhbHVlIiwiX3NldFByb3RvdHlwZU9mIiwiX3dyYXBOYXRpdmVTdXBlciIsIk1hcCIsIl9pc05hdGl2ZUZ1bmN0aW9uIiwiaGFzIiwiZ2V0Iiwic2V0IiwiX2NvbnN0cnVjdCIsImFyZ3VtZW50cyIsInB1c2giLCJiaW5kIiwiQm9vbGVhbiIsInZhbHVlT2YiLCJGdW5jdGlvbiIsInRvU3RyaW5nIiwiaW5kZXhPZiIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiZ2V0UHJvdG90eXBlT2YiLCJFSCIsIk5vdEltcGxlbWVudGVkRXJyb3IiLCJfX3NpZ25hdHVyZV9fIiwiQXBwbGljYXRpb25FcnJvciIsIl9FcnJvciIsIm5hbWUiLCJfX3JlYWN0c3RhbmRpbl9fcmVnZW5lcmF0ZUJ5RXZhbCIsImNvZGUiLCJldmFsIiwiRXJyb3IiLCJfQXBwbGljYXRpb25FcnJvciIsIk5vdFN1cHBvcnRlZEVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IyIiwiSW52YWxpZFByb2dyYW1TdGF0ZUVycm9yIiwiX0FwcGxpY2F0aW9uRXJyb3IzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJfQXBwbGljYXRpb25FcnJvcjQiLCJUeXBpbmdFcnJvciIsIl9BcHBsaWNhdGlvbkVycm9yNSIsInJlYWN0SG90TG9hZGVyIiwidSIsImMiLCJsIiwicyIsImYiLCJrdSIsIm1lc3NhZ2UiLCJ0cmltIiwic2xpY2UiLCJnbG9iYWxUaGlzIiwic2VsZiIsImciLCJzZWFyY2hQYXJhbXMiLCJpdGVyYWJsZSIsImJsb2IiLCJCbG9iIiwiZm9ybURhdGEiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwiaXNWaWV3IiwidGVzdCIsInRvTG93ZXJDYXNlIiwibmV4dCIsInNoaWZ0IiwiZG9uZSIsIm1hcCIsImZvckVhY2giLCJhcHBlbmQiLCJBcnJheSIsImlzQXJyYXkiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiX25vQm9keSIsImJvZHlVc2VkIiwiUHJvbWlzZSIsInJlamVjdCIsIm9ubG9hZCIsInJlc3VsdCIsIm9uZXJyb3IiLCJlcnJvciIsInkiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJwIiwiVWludDhBcnJheSIsImJ5dGVMZW5ndGgiLCJidWZmZXIiLCJoIiwiX2luaXRCb2R5IiwiX2JvZHlJbml0IiwiX2JvZHlUZXh0IiwiaXNQcm90b3R5cGVPZiIsIl9ib2R5QmxvYiIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsIlVSTFNlYXJjaFBhcmFtcyIsIkRhdGFWaWV3IiwiX2JvZHlBcnJheUJ1ZmZlciIsImhlYWRlcnMiLCJ0eXBlIiwicmVzb2x2ZSIsImJ5dGVPZmZzZXQiLCJ0aGVuIiwidGV4dCIsImV4ZWMiLCJyZWFkQXNUZXh0IiwiZnJvbUNoYXJDb2RlIiwiam9pbiIsImpzb24iLCJKU09OIiwicGFyc2UiLCJkZWxldGUiLCJoYXNPd25Qcm9wZXJ0eSIsImtleXMiLCJ2YWx1ZXMiLCJlbnRyaWVzIiwibSIsIl8iLCJib2R5IiwidXJsIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJtb2RlIiwic2lnbmFsIiwidG9VcHBlckNhc2UiLCJBYm9ydENvbnRyb2xsZXIiLCJyZWZlcnJlciIsImNhY2hlIiwicmVwbGFjZSIsIkRhdGUiLCJnZXRUaW1lIiwic3BsaXQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJ2Iiwic3RhdHVzIiwiUmFuZ2VFcnJvciIsIm9rIiwic3RhdHVzVGV4dCIsImNsb25lIiwiYiIsInJlZGlyZWN0IiwibG9jYXRpb24iLCJFIiwiRE9NRXhjZXB0aW9uIiwic3RhY2siLCJ3IiwiYWJvcnRlZCIsIlhNTEh0dHBSZXF1ZXN0IiwiYWJvcnQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJzdWJzdHIiLCJjb25zb2xlIiwid2FybiIsInJlc3BvbnNlVVJMIiwicmVzcG9uc2UiLCJyZXNwb25zZVRleHQiLCJzZXRUaW1lb3V0Iiwib250aW1lb3V0Iiwib25hYm9ydCIsIm9wZW4iLCJocmVmIiwid2l0aENyZWRlbnRpYWxzIiwicmVzcG9uc2VUeXBlIiwiSGVhZGVycyIsInNldFJlcXVlc3RIZWFkZXIiLCJhZGRFdmVudExpc3RlbmVyIiwib25yZWFkeXN0YXRlY2hhbmdlIiwicmVhZHlTdGF0ZSIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzZW5kIiwicG9seWZpbGwiLCJmZXRjaCIsIlJlcXVlc3QiLCJSZXNwb25zZSIsIkMiLCJrIiwiQSIsIlAiLCJPIiwiTCIsIlMiLCJCIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiVCIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiaiIsIkgiLCJNIiwiRiIsIkNGIiwia2Vmb3Jtc1VybCIsIkQiLCJlbmNvZGVVUklDb21wb25lbnQiLCJVIiwiUmVnRXhwIiwiaG9zdCIsIkciLCJzZWFyY2giLCJmaW5kIiwicmV0dXJuIiwiZnJvbSIsIngiLCJSIiwiZ2Z2IiwiZW5naW5lVmVyc2lvbiIsInJlc291cmNlc1ZlcnNpb24iLCJlbnRyeVBvaW50IiwicmVzb3VyY2Vab25lIiwicSIsInN0eWxlU2hlZXQiLCJzY3JpcHQiLCJOIiwicHVibGljRm9ybSIsImNhdGNoIiwiViIsImtvbnR1ckRvbWFpbnMiLCJhdXRob3JpemVkIiwiYXV0aGVudGljYXRpb24iLCJhdXRoU2lkIiwiQXV0aG9yaXphdGlvbiIsImNhdWxkcm9uQXBpVXJsIiwiaXNUZXN0U2VydmVyIiwicmVuZGVyQ2FjaGluZ0ZvcklFOCIsIm5vcm1hbGl6YXRpb25PblNlcnZlciIsIm5vcm1hdGl2ZVVybCIsInNob3dOYXZpZ2F0aW9uU2lkZWJhciIsIm9uUmVtb3ZlQXR0YWNobWVudCIsImZlZWRiYWNrRW5hYmxlZCIsImlzRGlzYWJsZWRDbGVhbkZvcm0iLCJpc0Rpc2FibGVkQ2xvc2VCdXR0b24iLCJpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uIiwidGhlbWUiLCJ0ZW1wbGF0ZXNBcGkiLCJyZW5kZXJGb3JtIiwiSyIsIlciLCJ6Iiwic3RhcnQiLCJwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4IiwicGFyc2VJbnQiLCJjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIiwiX0NvbW1vbl9FcnJvcnNfX1dFQlBBQ0tfSU1QT1JURURfTU9EVUxFXzBfXyIsIl9yZWdlbmVyYXRvclJ1bnRpbWUiLCJhc3luY0l0ZXJhdG9yIiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJhcmciLCJ3cmFwIiwiX2ludm9rZSIsIl9fYXdhaXQiLCJkZWxlZ2F0ZSIsInNlbnQiLCJfc2VudCIsImRpc3BhdGNoRXhjZXB0aW9uIiwiYWJydXB0IiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJjb21wbGV0aW9uIiwicmVzZXQiLCJpc05hTiIsImRpc3BsYXlOYW1lIiwiaXNHZW5lcmF0b3JGdW5jdGlvbiIsIm1hcmsiLCJhd3JhcCIsIkFzeW5jSXRlcmF0b3IiLCJhc3luYyIsInJldmVyc2UiLCJwb3AiLCJwcmV2IiwiY2hhckF0Iiwic3RvcCIsInJ2YWwiLCJjb21wbGV0ZSIsImZpbmlzaCIsImRlbGVnYXRlWWllbGQiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJfYXN5bmNUb0dlbmVyYXRvciIsIm93bktleXMiLCJfb2JqZWN0U3ByZWFkIiwiX2RlZmluZVByb3BlcnR5IiwibW9kZWxDaGFuZ2VFdmVudFBhdGgiLCJtYXBDaHVua1ZhbHVlcyIsInJlZHVjZUNodW5rVmFsdWVzIiwicmVkdWNlIiwiTGVnYWN5UHVibGljRm9ybSIsImZvcm0iLCJfdmFsaWRhdGVDaGlsZHJlbkJ5UGF0aCIsIl9JTlRFUk5BTF9fZ2V0U2VsZWN0RnVuY3Rpb25Gb3JEaXNhYmxlRW1wbG95ZWVJblNTIiwicGlja2xpc3RzUHJvdmlkZXIiLCJnZXREaWdlc3RBcGlQaWNrbGlzdCIsInF1ZXJ5IiwiZXZlbnRNYW5hZ2VyIiwib24iLCJvZmYiLCJjaGFuZ2VTZXQiLCJzdG9wQXV0b3NlbmQiLCJ1bm1vdW50IiwibW9kZWwiLCJnZXRDaHVuayIsInNldHRpbmdzIiwiZm9ybVJvb3QiLCJ2YWxpZGF0b3IiLCJ2YWxpZGF0ZUFsbCIsIl9yZWxvYWRJbm5lciIsImZpbGwiLCJkb2N1bWVudCIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZG9jdW1lbnRFbGVtZW50IiwiY3JlYXRlRWxlbWVudCIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInNyYyIsInNldEF0dHJpYnV0ZSIsImFwcGVuZENoaWxkIiwiX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fIiwiZXhwb3J0cyIsImlkIiwibG9hZGVkIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsIndpbmRvdyIsImNoaWxkcmVuIl0sInNvdXJjZXMiOlsid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vR2V0Q2xpZW50RHJhZnRJbmZvVXJsLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0NvbW1vbi9FcnJvcnMudHMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvQ29tbW9uL1R5cGluZ1V0aWxzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL25vZGVfbW9kdWxlcy93aGF0d2ctZmV0Y2gvZmV0Y2guanMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2UvRW5naW5lL3NyYy9Gb3Jtcy9DbGllbnQvQ2xpZW50LnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0NsaWVudFNldHRpbmdzLnRzIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL0VuZ2luZS9zcmMvRm9ybXMvQ2xpZW50L0xlZ2FjeVB1YmxpY0Zvcm0vQ3JlYXRlTGVnYWN5UHVibGljRm9ybS50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS9FbmdpbmUvc3JjL0hlbHBlcnMvTG9hZEludG9Eb2N1bWVudC50cyIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9ydW50aW1lL2dsb2JhbCIsIndlYnBhY2s6Ly9Aa29udHVyLmNhbmR5L3dvcmtzcGFjZS93ZWJwYWNrL3J1bnRpbWUvaGFybW9ueSBtb2R1bGUgZGVjb3JhdG9yIiwid2VicGFjazovL0Brb250dXIuY2FuZHkvd29ya3NwYWNlL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vQGtvbnR1ci5jYW5keS93b3Jrc3BhY2Uvd2VicGFjay9zdGFydHVwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERyYWZ0RnVsbElkIH0gZnJvbSBcIi4uL1R5cGVzL0RyYWZ0RnVsbElkXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRDbGllbnREcmFmdEluZm9VcmwoZHJhZnRJZDogRHJhZnRGdWxsSWQpIHtcbiAgICAvLyBOT1RFINCt0YLQsCDRhNGD0L3QutGG0LjRjyDQvtCx0YrRj9Cy0LvQtdC90LAg0L7RgtC00LXQu9GM0L3Qviwg0LjQsdC+INC+0L3QsCDQstGF0L7QtNC40YIg0LIg0YHQvtGB0YLQsNCyIGNsaWVudC5qcyDQuFxuICAgIC8vINC90LUg0LTQvtC70LbQvdC+INC/0YDQvtC40YHRhdC+0LTQuNGC0Ywg0YPRgtC10LbQtdC70LXQvdC40Y8gY2xpZW50LmpzLdCwXG4gICAgcmV0dXJuIGB2MS9ucy8ke2RyYWZ0SWQubnN9L2RyYWZ0cy8ke2RyYWZ0SWQuZHJhZnRJZH0vY2xpZW50LWRyYWZ0LWluZm9gO1xufVxuIiwiZXhwb3J0IGNsYXNzIEFwcGxpY2F0aW9uRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gICAgcHVibGljIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZykge1xuICAgICAgICBzdXBlcihtZXNzYWdlKTtcbiAgICAgICAgdGhpcy5uYW1lID0gdGhpcy5jb25zdHJ1Y3Rvci5uYW1lO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE5vdEltcGxlbWVudGVkRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiT3BlcmF0aW9uIG5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBOb3RTdXBwb3J0ZWRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKG1lc3NhZ2UgPz8gXCJPcGVyYXRpb24gbm90IHN1cHBvcnRlZFwiKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkUHJvZ3JhbVN0YXRlRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IobWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcIkludmFsaWQgcHJvZ3JhbSBzdGF0ZVwiICsgKG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gXCI6IFwiICsgbWVzc2FnZSA6IFwiXCIpKTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbnZhbGlkQXJndW1lbnRFcnJvciBleHRlbmRzIEFwcGxpY2F0aW9uRXJyb3Ige1xuICAgIHB1YmxpYyBjb25zdHJ1Y3Rvcihhcmd1bWVudE5hbWU6IHN0cmluZywgbWVzc2FnZT86IHN0cmluZykge1xuICAgICAgICBzdXBlcihcbiAgICAgICAgICAgIG1lc3NhZ2UgIT0gdW5kZWZpbmVkID8gYCR7bWVzc2FnZX0gKGFyZ3VtZW50OiAke2FyZ3VtZW50TmFtZX0pYCA6IGBJbnZhbGlkIGFyZ3VtZW50IHZhbHVlOiAke2FyZ3VtZW50TmFtZX1gXG4gICAgICAgICk7XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwaW5nRXJyb3IgZXh0ZW5kcyBBcHBsaWNhdGlvbkVycm9yIHtcbiAgICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKFwiSW52YWxpZCB0eXBpbmdcIik7XG4gICAgfVxufVxuIiwiLyoqKlxuICog0KHRgtGA0L7Qs9C+0YLQuNC/0LjQt9C40YDQvtCy0LDQvdC90LDRjyDQt9Cw0LzQtdC90LAg0LTQu9GPIEJvb2xlYW4oLi4uKVxuICog0J7QsdGL0YfQvdC+INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8gWy4uLl0uZmlsdGVyKGlzTm90TnVsbE9yVW5kZWZpbmVkKVxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JVbmRlZmluZWQ8VD4oaW5wdXQ6IFQpOiBpbnB1dCBpcyBOb25OdWxsYWJsZTxUPiB7XG4gICAgcmV0dXJuIGlucHV0ICE9IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVVua25vd25FcnJvcihlcnJvcjogdW5rbm93bik6IHVuZGVmaW5lZCB8IHN0cmluZyB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgcmV0dXJuIHR5cGVvZiBlcnJvciA9PT0gXCJvYmplY3RcIiAmJiBlcnJvcj8uW1wibWVzc2FnZVwiXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5vdE51bGxPclVuZGVmaW5lZDxUPihpbnB1dDogVCk6IGFzc2VydHMgaW5wdXQgaXMgTm9uTnVsbGFibGU8VD4ge1xuICAgIGlmICghaXNOb3ROdWxsT3JVbmRlZmluZWQoaW5wdXQpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVmFsdWUgbXVzdCBiZSBkZWZpbmVkYCk7XG4gICAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbm9vcCgpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG5cbmV4cG9ydCB0eXBlIEVycm9yRmlyc3RDYWxsYmFjazxUPiA9ICguLi5hcmdzOiBbRXJyb3IsIG51bGwgfCB1bmRlZmluZWRdIHwgW251bGwgfCB1bmRlZmluZWQsIFRdIHwgW0Vycm9yXSkgPT4gdm9pZDtcblxuZXhwb3J0IGZ1bmN0aW9uIHJlamVjdChtZXNzYWdlPzogc3RyaW5nIHwgRXJyb3IpOiBuZXZlciB7XG4gICAgaWYgKHR5cGVvZiBtZXNzYWdlID09PSBcInN0cmluZ1wiIHx8IG1lc3NhZ2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlID8/IFwiVW5kZWZpbmVkIGlzIG5vdCBhbGxvd2VkXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG1lc3NhZ2U7XG4gICAgfVxufVxuXG50eXBlIEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMgeyBsZW5ndGg6IFRMZW5ndGggfVxuICAgID8gVFJlc3RcbiAgICA6IEFycmF5T2ZMZW5ndGg8VEl0ZW0sIFRMZW5ndGgsIFtUSXRlbSwgLi4uVFJlc3RdPjtcblxuZXhwb3J0IHR5cGUgTWluTGVuZ3RoQXJyYXk8VEl0ZW0sIFRMZW5ndGggZXh0ZW5kcyBudW1iZXIsIFRSZXN0IGV4dGVuZHMgVEl0ZW1bXSA9IFtdPiA9IFRSZXN0IGV4dGVuZHMge1xuICAgIGxlbmd0aDogVExlbmd0aDtcbn1cbiAgICA/IFsuLi5UUmVzdCwgLi4uVEl0ZW1bXV1cbiAgICA6IE1pbkxlbmd0aEFycmF5PFRJdGVtLCBUTGVuZ3RoLCBbLi4uVFJlc3QsIFRJdGVtXT47XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0xlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIG1pbkxlbmd0aDogVE51bVxuKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPj0gbWluTGVuZ3RoO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWluTGVuZ3RoT3JVbmRlZmluZWQ8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IFRbXSxcbiAgICBtaW5MZW5ndGg6IFROdW1cbik6IHVuZGVmaW5lZCB8IE1pbkxlbmd0aEFycmF5PFQsIFROdW0+IHtcbiAgICBpZiAoaXNMZW5ndGhHcmVhdGVyVGhlbk9yRXF1YWwoaXRlbXMsIG1pbkxlbmd0aCkpIHtcbiAgICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNMZW5ndGg8VCwgVE51bSBleHRlbmRzIG51bWJlcj4oXG4gICAgaXRlbXM6IHJlYWRvbmx5IFRbXSxcbiAgICBsZW5ndGg6IFROdW1cbik6IGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPT09IGxlbmd0aDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5SXNOb3RFbXB0eTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlIYXNBdExlYXN0T25lSXRlbTxUPihpdGVtczogcmVhZG9ubHkgVFtdKTogaXRlbXMgaXMgTWluTGVuZ3RoQXJyYXk8VCwgMT4ge1xuICAgIHJldHVybiBpdGVtcy5sZW5ndGggPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQXJyYXlJc05vdEVtcHR5PFQ+KGl0ZW1zOiByZWFkb25seSBUW10pOiBhc3NlcnRzIGl0ZW1zIGlzIE1pbkxlbmd0aEFycmF5PFQsIDE+IHtcbiAgICBpZiAoIWFycmF5SXNOb3RFbXB0eShpdGVtcykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBtdXN0IGJlIG5vdCBlbXB0eWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZUFycmF5SGFzTGVuZ3RoPFQsIFROdW0gZXh0ZW5kcyBudW1iZXI+KFxuICAgIGl0ZW1zOiByZWFkb25seSBUW10sXG4gICAgbGVuZ3RoOiBUTnVtXG4pOiBhc3NlcnRzIGl0ZW1zIGlzIEFycmF5T2ZMZW5ndGg8VCwgVE51bT4ge1xuICAgIGlmICghYXJyYXlIYXNMZW5ndGgoaXRlbXMsIGxlbmd0aCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBBcnJheSBzaG91bGQgaGFzIGxlbmd0aCAke2xlbmd0aH1gKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnN1cmVBcnJheUxlbmd0aEdyZWF0ZXJUaGVuT3JFcXVhbDxULCBUTnVtIGV4dGVuZHMgbnVtYmVyPihcbiAgICBpdGVtczogcmVhZG9ubHkgVFtdLFxuICAgIGxlbmd0aDogVE51bVxuKTogYXNzZXJ0cyBpdGVtcyBpcyBBcnJheU9mTGVuZ3RoPFQsIFROdW0+IHtcbiAgICBpZiAoIWlzTGVuZ3RoR3JlYXRlclRoZW5PckVxdWFsKGl0ZW1zLCBsZW5ndGgpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQXJyYXkgbXVzdCBoYXZlIG1pbmltYWwgbGVuZ3RoICR7bGVuZ3RofWApO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU5ldmVyKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogdm9pZCB7XG4gICAgLy8gbm9vcFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZW5zdXJlQW5kR2V0U3RyaW5nKG5ldmVyQXJndW1lbnQ6IG5ldmVyKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7bmV2ZXJBcmd1bWVudH1gO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcnVuQXN5bmNBY3Rpb24oYWN0aW9uOiAoKSA9PiBQcm9taXNlPHZvaWQ+KTogdm9pZCB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1mbG9hdGluZy1wcm9taXNlc1xuICAgIGFjdGlvbigpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gaW5wdXQgPT0gdW5kZWZpbmVkIHx8IGlucHV0ID09PSBcIlwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOb3ROdWxsT3JFbXB0eShpbnB1dDogc3RyaW5nIHwgdW5kZWZpbmVkKTogaW5wdXQgaXMgc3RyaW5nIHtcbiAgICByZXR1cm4gIWlzTnVsbE9yRW1wdHkoaW5wdXQpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNOdWxsT3JXaGl0ZVNwYWNlKGlucHV0OiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsKTogaW5wdXQgaXMgdW5kZWZpbmVkIHwgbnVsbCB7XG4gICAgcmV0dXJuIGlucHV0ID09IHVuZGVmaW5lZCB8fCBpbnB1dC50cmltKCkgPT09IFwiXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0cmltTGFzdFNsYXNoKHVybDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdXJsLnNsaWNlKC0xKSA9PT0gXCIvXCIgPyB1cmwuc2xpY2UoMCwgLTEpIDogdXJsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0SXM8VD4odmFsdWU6IFQpOiB2b2lkIHtcbiAgICAvLyBub29wXG59XG4iLCIvKiBlc2xpbnQtZGlzYWJsZSBuby1wcm90b3R5cGUtYnVpbHRpbnMgKi9cbnZhciBnID1cbiAgKHR5cGVvZiBnbG9iYWxUaGlzICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWxUaGlzKSB8fFxuICAodHlwZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnICYmIHNlbGYpIHx8XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgJiYgZ2xvYmFsKSB8fFxuICB7fVxuXG52YXIgc3VwcG9ydCA9IHtcbiAgc2VhcmNoUGFyYW1zOiAnVVJMU2VhcmNoUGFyYW1zJyBpbiBnLFxuICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gZyAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgYmxvYjpcbiAgICAnRmlsZVJlYWRlcicgaW4gZyAmJlxuICAgICdCbG9iJyBpbiBnICYmXG4gICAgKGZ1bmN0aW9uKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9KSgpLFxuICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBnLFxuICBhcnJheUJ1ZmZlcjogJ0FycmF5QnVmZmVyJyBpbiBnXG59XG5cbmZ1bmN0aW9uIGlzRGF0YVZpZXcob2JqKSB7XG4gIHJldHVybiBvYmogJiYgRGF0YVZpZXcucHJvdG90eXBlLmlzUHJvdG90eXBlT2Yob2JqKVxufVxuXG5pZiAoc3VwcG9ydC5hcnJheUJ1ZmZlcikge1xuICB2YXIgdmlld0NsYXNzZXMgPSBbXG4gICAgJ1tvYmplY3QgSW50OEFycmF5XScsXG4gICAgJ1tvYmplY3QgVWludDhBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQ4Q2xhbXBlZEFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MTZBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQxNkFycmF5XScsXG4gICAgJ1tvYmplY3QgSW50MzJBcnJheV0nLFxuICAgICdbb2JqZWN0IFVpbnQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQzMkFycmF5XScsXG4gICAgJ1tvYmplY3QgRmxvYXQ2NEFycmF5XSdcbiAgXVxuXG4gIHZhciBpc0FycmF5QnVmZmVyVmlldyA9XG4gICAgQXJyYXlCdWZmZXIuaXNWaWV3IHx8XG4gICAgZnVuY3Rpb24ob2JqKSB7XG4gICAgICByZXR1cm4gb2JqICYmIHZpZXdDbGFzc2VzLmluZGV4T2YoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG9iaikpID4gLTFcbiAgICB9XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuICB9XG4gIGlmICgvW15hLXowLTlcXC0jJCUmJyorLl5fYHx+IV0vaS50ZXN0KG5hbWUpIHx8IG5hbWUgPT09ICcnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWU6IFwiJyArIG5hbWUgKyAnXCInKVxuICB9XG4gIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplVmFsdWUodmFsdWUpIHtcbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcbiAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcbiAgfVxuICByZXR1cm4gdmFsdWVcbn1cblxuLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBmb3IgdGhlIHZhbHVlIGxpc3RcbmZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gIHZhciBpdGVyYXRvciA9IHtcbiAgICBuZXh0OiBmdW5jdGlvbigpIHtcbiAgICAgIHZhciB2YWx1ZSA9IGl0ZW1zLnNoaWZ0KClcbiAgICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGl0ZXJhdG9yXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgdGhpcy5tYXAgPSB7fVxuXG4gIGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuICAgIGhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgfSwgdGhpcylcbiAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGhlYWRlcnMpKSB7XG4gICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgaWYgKGhlYWRlci5sZW5ndGggIT0gMikge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdIZWFkZXJzIGNvbnN0cnVjdG9yOiBleHBlY3RlZCBuYW1lL3ZhbHVlIHBhaXIgdG8gYmUgbGVuZ3RoIDIsIGZvdW5kJyArIGhlYWRlci5sZW5ndGgpXG4gICAgICB9XG4gICAgICB0aGlzLmFwcGVuZChoZWFkZXJbMF0sIGhlYWRlclsxXSlcbiAgICB9LCB0aGlzKVxuICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtcbiAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhoZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMuYXBwZW5kKG5hbWUsIGhlYWRlcnNbbmFtZV0pXG4gICAgfSwgdGhpcylcbiAgfVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICBuYW1lID0gbm9ybWFsaXplTmFtZShuYW1lKVxuICB2YWx1ZSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxuICB2YXIgb2xkVmFsdWUgPSB0aGlzLm1hcFtuYW1lXVxuICB0aGlzLm1hcFtuYW1lXSA9IG9sZFZhbHVlID8gb2xkVmFsdWUgKyAnLCAnICsgdmFsdWUgOiB2YWx1ZVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4gIHJldHVybiB0aGlzLmhhcyhuYW1lKSA/IHRoaXMubWFwW25hbWVdIDogbnVsbFxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4gIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5hbWUpKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSA9IG5vcm1hbGl6ZVZhbHVlKHZhbHVlKVxufVxuXG5IZWFkZXJzLnByb3RvdHlwZS5mb3JFYWNoID0gZnVuY3Rpb24oY2FsbGJhY2ssIHRoaXNBcmcpIHtcbiAgZm9yICh2YXIgbmFtZSBpbiB0aGlzLm1hcCkge1xuICAgIGlmICh0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB0aGlzLm1hcFtuYW1lXSwgbmFtZSwgdGhpcylcbiAgICB9XG4gIH1cbn1cblxuSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKG5hbWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gIHZhciBpdGVtcyA9IFtdXG4gIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgIGl0ZW1zLnB1c2godmFsdWUpXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9IGZ1bmN0aW9uKCkge1xuICB2YXIgaXRlbXMgPSBbXVxuICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pXG4gIH0pXG4gIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbn1cblxuaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXNcbn1cblxuZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuICBpZiAoYm9keS5fbm9Cb2R5KSByZXR1cm5cbiAgaWYgKGJvZHkuYm9keVVzZWQpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gIH1cbiAgYm9keS5ib2R5VXNlZCA9IHRydWVcbn1cblxuZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgIH1cbiAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmVqZWN0KHJlYWRlci5lcnJvcilcbiAgICB9XG4gIH0pXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNBcnJheUJ1ZmZlcihibG9iKSB7XG4gIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gIHZhciBwcm9taXNlID0gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJsb2IpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRCbG9iQXNUZXh0KGJsb2IpIHtcbiAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcbiAgdmFyIHByb21pc2UgPSBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuICB2YXIgbWF0Y2ggPSAvY2hhcnNldD0oW0EtWmEtejAtOV8tXSspLy5leGVjKGJsb2IudHlwZSlcbiAgdmFyIGVuY29kaW5nID0gbWF0Y2ggPyBtYXRjaFsxXSA6ICd1dGYtOCdcbiAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYiwgZW5jb2RpbmcpXG4gIHJldHVybiBwcm9taXNlXG59XG5cbmZ1bmN0aW9uIHJlYWRBcnJheUJ1ZmZlckFzVGV4dChidWYpIHtcbiAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYpXG4gIHZhciBjaGFycyA9IG5ldyBBcnJheSh2aWV3Lmxlbmd0aClcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHZpZXcubGVuZ3RoOyBpKyspIHtcbiAgICBjaGFyc1tpXSA9IFN0cmluZy5mcm9tQ2hhckNvZGUodmlld1tpXSlcbiAgfVxuICByZXR1cm4gY2hhcnMuam9pbignJylcbn1cblxuZnVuY3Rpb24gYnVmZmVyQ2xvbmUoYnVmKSB7XG4gIGlmIChidWYuc2xpY2UpIHtcbiAgICByZXR1cm4gYnVmLnNsaWNlKDApXG4gIH0gZWxzZSB7XG4gICAgdmFyIHZpZXcgPSBuZXcgVWludDhBcnJheShidWYuYnl0ZUxlbmd0aClcbiAgICB2aWV3LnNldChuZXcgVWludDhBcnJheShidWYpKVxuICAgIHJldHVybiB2aWV3LmJ1ZmZlclxuICB9XG59XG5cbmZ1bmN0aW9uIEJvZHkoKSB7XG4gIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXG4gIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgIC8qXG4gICAgICBmZXRjaC1tb2NrIHdyYXBzIHRoZSBSZXNwb25zZSBvYmplY3QgaW4gYW4gRVM2IFByb3h5IHRvXG4gICAgICBwcm92aWRlIHVzZWZ1bCB0ZXN0IGhhcm5lc3MgZmVhdHVyZXMgc3VjaCBhcyBmbHVzaC4gSG93ZXZlciwgb25cbiAgICAgIEVTNSBicm93c2VycyB3aXRob3V0IGZldGNoIG9yIFByb3h5IHN1cHBvcnQgcG9sbHlmaWxscyBtdXN0IGJlIHVzZWQ7XG4gICAgICB0aGUgcHJveHktcG9sbHlmaWxsIGlzIHVuYWJsZSB0byBwcm94eSBhbiBhdHRyaWJ1dGUgdW5sZXNzIGl0IGV4aXN0c1xuICAgICAgb24gdGhlIG9iamVjdCBiZWZvcmUgdGhlIFByb3h5IGlzIGNyZWF0ZWQuIFRoaXMgY2hhbmdlIGVuc3VyZXNcbiAgICAgIFJlc3BvbnNlLmJvZHlVc2VkIGV4aXN0cyBvbiB0aGUgaW5zdGFuY2UsIHdoaWxlIG1haW50YWluaW5nIHRoZVxuICAgICAgc2VtYW50aWMgb2Ygc2V0dGluZyBSZXF1ZXN0LmJvZHlVc2VkIGluIHRoZSBjb25zdHJ1Y3RvciBiZWZvcmVcbiAgICAgIF9pbml0Qm9keSBpcyBjYWxsZWQuXG4gICAgKi9cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1hc3NpZ25cbiAgICB0aGlzLmJvZHlVc2VkID0gdGhpcy5ib2R5VXNlZFxuICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgIGlmICghYm9keSkge1xuICAgICAgdGhpcy5fbm9Cb2R5ID0gdHJ1ZTtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gJydcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmZvcm1EYXRhICYmIEZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keS50b1N0cmluZygpXG4gICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIHN1cHBvcnQuYmxvYiAmJiBpc0RhdGFWaWV3KGJvZHkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5LmJ1ZmZlcilcbiAgICAgIC8vIElFIDEwLTExIGNhbid0IGhhbmRsZSBhIERhdGFWaWV3IGJvZHkuXG4gICAgICB0aGlzLl9ib2R5SW5pdCA9IG5ldyBCbG9iKFt0aGlzLl9ib2R5QXJyYXlCdWZmZXJdKVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5hcnJheUJ1ZmZlciAmJiAoQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkgfHwgaXNBcnJheUJ1ZmZlclZpZXcoYm9keSkpKSB7XG4gICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIgPSBidWZmZXJDbG9uZShib2R5KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYm9keSlcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICd0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlCbG9iLnR5cGUpXG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNoUGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICB0aGlzLmJsb2IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkXG4gICAgICB9XG5cbiAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKVxuICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QXJyYXlCdWZmZXIpIHtcbiAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keUFycmF5QnVmZmVyXSkpXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0pKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuYXJyYXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcbiAgICBpZiAodGhpcy5fYm9keUFycmF5QnVmZmVyKSB7XG4gICAgICB2YXIgaXNDb25zdW1lZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICBpZiAoaXNDb25zdW1lZCkge1xuICAgICAgICByZXR1cm4gaXNDb25zdW1lZFxuICAgICAgfSBlbHNlIGlmIChBcnJheUJ1ZmZlci5pc1ZpZXcodGhpcy5fYm9keUFycmF5QnVmZmVyKSkge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKFxuICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5idWZmZXIuc2xpY2UoXG4gICAgICAgICAgICB0aGlzLl9ib2R5QXJyYXlCdWZmZXIuYnl0ZU9mZnNldCxcbiAgICAgICAgICAgIHRoaXMuX2JvZHlBcnJheUJ1ZmZlci5ieXRlT2Zmc2V0ICsgdGhpcy5fYm9keUFycmF5QnVmZmVyLmJ5dGVMZW5ndGhcbiAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUFycmF5QnVmZmVyKVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgYXMgQXJyYXlCdWZmZXInKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgaWYgKHJlamVjdGVkKSB7XG4gICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcbiAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlBcnJheUJ1ZmZlcikge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZWFkQXJyYXlCdWZmZXJBc1RleHQodGhpcy5fYm9keUFycmF5QnVmZmVyKSlcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQnKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuICAgIH1cbiAgfVxuXG4gIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG4gICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAgIH1cbiAgfVxuXG4gIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpXG4gIH1cblxuICByZXR1cm4gdGhpc1xufVxuXG4vLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbnZhciBtZXRob2RzID0gWydDT05ORUNUJywgJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BBVENIJywgJ1BPU1QnLCAnUFVUJywgJ1RSQUNFJ11cblxuZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2FzZSgpXG4gIHJldHVybiBtZXRob2RzLmluZGV4T2YodXBjYXNlZCkgPiAtMSA/IHVwY2FzZWQgOiBtZXRob2Rcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFJlcXVlc3QpKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUGxlYXNlIHVzZSB0aGUgXCJuZXdcIiBvcGVyYXRvciwgdGhpcyBET00gb2JqZWN0IGNvbnN0cnVjdG9yIGNhbm5vdCBiZSBjYWxsZWQgYXMgYSBmdW5jdGlvbi4nKVxuICB9XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge31cbiAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblxuICBpZiAoaW5wdXQgaW5zdGFuY2VvZiBSZXF1ZXN0KSB7XG4gICAgaWYgKGlucHV0LmJvZHlVc2VkKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgIH1cbiAgICB0aGlzLnVybCA9IGlucHV0LnVybFxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhpbnB1dC5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgIHRoaXMubW9kZSA9IGlucHV0Lm1vZGVcbiAgICB0aGlzLnNpZ25hbCA9IGlucHV0LnNpZ25hbFxuICAgIGlmICghYm9keSAmJiBpbnB1dC5fYm9keUluaXQgIT0gbnVsbCkge1xuICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHRoaXMudXJsID0gU3RyaW5nKGlucHV0KVxuICB9XG5cbiAgdGhpcy5jcmVkZW50aWFscyA9IG9wdGlvbnMuY3JlZGVudGlhbHMgfHwgdGhpcy5jcmVkZW50aWFscyB8fCAnc2FtZS1vcmlnaW4nXG4gIGlmIChvcHRpb25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVhZGVycylcbiAgfVxuICB0aGlzLm1ldGhvZCA9IG5vcm1hbGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgdGhpcy5tb2RlID0gb3B0aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG4gIHRoaXMuc2lnbmFsID0gb3B0aW9ucy5zaWduYWwgfHwgdGhpcy5zaWduYWwgfHwgKGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoJ0Fib3J0Q29udHJvbGxlcicgaW4gZykge1xuICAgICAgdmFyIGN0cmwgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICByZXR1cm4gY3RybC5zaWduYWw7XG4gICAgfVxuICB9KCkpO1xuICB0aGlzLnJlZmVycmVyID0gbnVsbFxuXG4gIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpICYmIGJvZHkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gIH1cbiAgdGhpcy5faW5pdEJvZHkoYm9keSlcblxuICBpZiAodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09PSAnSEVBRCcpIHtcbiAgICBpZiAob3B0aW9ucy5jYWNoZSA9PT0gJ25vLXN0b3JlJyB8fCBvcHRpb25zLmNhY2hlID09PSAnbm8tY2FjaGUnKSB7XG4gICAgICAvLyBTZWFyY2ggZm9yIGEgJ18nIHBhcmFtZXRlciBpbiB0aGUgcXVlcnkgc3RyaW5nXG4gICAgICB2YXIgcmVQYXJhbVNlYXJjaCA9IC8oWz8mXSlfPVteJl0qL1xuICAgICAgaWYgKHJlUGFyYW1TZWFyY2gudGVzdCh0aGlzLnVybCkpIHtcbiAgICAgICAgLy8gSWYgaXQgYWxyZWFkeSBleGlzdHMgdGhlbiBzZXQgdGhlIHZhbHVlIHdpdGggdGhlIGN1cnJlbnQgdGltZVxuICAgICAgICB0aGlzLnVybCA9IHRoaXMudXJsLnJlcGxhY2UocmVQYXJhbVNlYXJjaCwgJyQxXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKCkpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBPdGhlcndpc2UgYWRkIGEgbmV3ICdfJyBwYXJhbWV0ZXIgdG8gdGhlIGVuZCB3aXRoIHRoZSBjdXJyZW50IHRpbWVcbiAgICAgICAgdmFyIHJlUXVlcnlTdHJpbmcgPSAvXFw/L1xuICAgICAgICB0aGlzLnVybCArPSAocmVRdWVyeVN0cmluZy50ZXN0KHRoaXMudXJsKSA/ICcmJyA6ICc/JykgKyAnXz0nICsgbmV3IERhdGUoKS5nZXRUaW1lKClcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXF1ZXN0KHRoaXMsIHtib2R5OiB0aGlzLl9ib2R5SW5pdH0pXG59XG5cbmZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG4gIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcbiAgYm9keVxuICAgIC50cmltKClcbiAgICAuc3BsaXQoJyYnKVxuICAgIC5mb3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9KVxuICByZXR1cm4gZm9ybVxufVxuXG5mdW5jdGlvbiBwYXJzZUhlYWRlcnMocmF3SGVhZGVycykge1xuICB2YXIgaGVhZGVycyA9IG5ldyBIZWFkZXJzKClcbiAgLy8gUmVwbGFjZSBpbnN0YW5jZXMgb2YgXFxyXFxuIGFuZCBcXG4gZm9sbG93ZWQgYnkgYXQgbGVhc3Qgb25lIHNwYWNlIG9yIGhvcml6b250YWwgdGFiIHdpdGggYSBzcGFjZVxuICAvLyBodHRwczovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNzIzMCNzZWN0aW9uLTMuMlxuICB2YXIgcHJlUHJvY2Vzc2VkSGVhZGVycyA9IHJhd0hlYWRlcnMucmVwbGFjZSgvXFxyP1xcbltcXHQgXSsvZywgJyAnKVxuICAvLyBBdm9pZGluZyBzcGxpdCB2aWEgcmVnZXggdG8gd29yayBhcm91bmQgYSBjb21tb24gSUUxMSBidWcgd2l0aCB0aGUgY29yZS1qcyAzLjYuMCByZWdleCBwb2x5ZmlsbFxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZ2l0aHViL2ZldGNoL2lzc3Vlcy83NDhcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3psb2lyb2NrL2NvcmUtanMvaXNzdWVzLzc1MVxuICBwcmVQcm9jZXNzZWRIZWFkZXJzXG4gICAgLnNwbGl0KCdcXHInKVxuICAgIC5tYXAoZnVuY3Rpb24oaGVhZGVyKSB7XG4gICAgICByZXR1cm4gaGVhZGVyLmluZGV4T2YoJ1xcbicpID09PSAwID8gaGVhZGVyLnN1YnN0cigxLCBoZWFkZXIubGVuZ3RoKSA6IGhlYWRlclxuICAgIH0pXG4gICAgLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgICAgdmFyIHBhcnRzID0gbGluZS5zcGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gcGFydHMuc2hpZnQoKS50cmltKClcbiAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOicpLnRyaW0oKVxuICAgICAgICB0cnkge1xuICAgICAgICAgIGhlYWRlcnMuYXBwZW5kKGtleSwgdmFsdWUpXG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY29uc29sZS53YXJuKCdSZXNwb25zZSAnICsgZXJyb3IubWVzc2FnZSlcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pXG4gIHJldHVybiBoZWFkZXJzXG59XG5cbkJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuZXhwb3J0IGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7XG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZXNwb25zZSkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQbGVhc2UgdXNlIHRoZSBcIm5ld1wiIG9wZXJhdG9yLCB0aGlzIERPTSBvYmplY3QgY29uc3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLicpXG4gIH1cbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9XG4gIH1cblxuICB0aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1cyA9PT0gdW5kZWZpbmVkID8gMjAwIDogb3B0aW9ucy5zdGF0dXNcbiAgaWYgKHRoaXMuc3RhdHVzIDwgMjAwIHx8IHRoaXMuc3RhdHVzID4gNTk5KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoXCJGYWlsZWQgdG8gY29uc3RydWN0ICdSZXNwb25zZSc6IFRoZSBzdGF0dXMgcHJvdmlkZWQgKDApIGlzIG91dHNpZGUgdGhlIHJhbmdlIFsyMDAsIDU5OV0uXCIpXG4gIH1cbiAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1RleHQgPT09IHVuZGVmaW5lZCA/ICcnIDogJycgKyBvcHRpb25zLnN0YXR1c1RleHRcbiAgdGhpcy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG4gIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxufVxuXG5Cb2R5LmNhbGwoUmVzcG9uc2UucHJvdG90eXBlKVxuXG5SZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuICAgIHN0YXR1czogdGhpcy5zdGF0dXMsXG4gICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxuICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG4gICAgdXJsOiB0aGlzLnVybFxuICB9KVxufVxuXG5SZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xuICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMjAwLCBzdGF0dXNUZXh0OiAnJ30pXG4gIHJlc3BvbnNlLm9rID0gZmFsc2VcbiAgcmVzcG9uc2Uuc3RhdHVzID0gMFxuICByZXNwb25zZS50eXBlID0gJ2Vycm9yJ1xuICByZXR1cm4gcmVzcG9uc2Vcbn1cblxudmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBbMzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cblJlc3BvbnNlLnJlZGlyZWN0ID0gZnVuY3Rpb24odXJsLCBzdGF0dXMpIHtcbiAgaWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBjb2RlJylcbiAgfVxuXG4gIHJldHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRpb246IHVybH19KVxufVxuXG5leHBvcnQgdmFyIERPTUV4Y2VwdGlvbiA9IGcuRE9NRXhjZXB0aW9uXG50cnkge1xuICBuZXcgRE9NRXhjZXB0aW9uKClcbn0gY2F0Y2ggKGVycikge1xuICBET01FeGNlcHRpb24gPSBmdW5jdGlvbihtZXNzYWdlLCBuYW1lKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZVxuICAgIHRoaXMubmFtZSA9IG5hbWVcbiAgICB2YXIgZXJyb3IgPSBFcnJvcihtZXNzYWdlKVxuICAgIHRoaXMuc3RhY2sgPSBlcnJvci5zdGFja1xuICB9XG4gIERPTUV4Y2VwdGlvbi5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKEVycm9yLnByb3RvdHlwZSlcbiAgRE9NRXhjZXB0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IERPTUV4Y2VwdGlvblxufVxuXG5leHBvcnQgZnVuY3Rpb24gZmV0Y2goaW5wdXQsIGluaXQpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXF1ZXN0ID0gbmV3IFJlcXVlc3QoaW5wdXQsIGluaXQpXG5cbiAgICBpZiAocmVxdWVzdC5zaWduYWwgJiYgcmVxdWVzdC5zaWduYWwuYWJvcnRlZCkge1xuICAgICAgcmV0dXJuIHJlamVjdChuZXcgRE9NRXhjZXB0aW9uKCdBYm9ydGVkJywgJ0Fib3J0RXJyb3InKSlcbiAgICB9XG5cbiAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgIGZ1bmN0aW9uIGFib3J0WGhyKCkge1xuICAgICAgeGhyLmFib3J0KClcbiAgICB9XG5cbiAgICB4aHIub25sb2FkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgIGhlYWRlcnM6IHBhcnNlSGVhZGVycyh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkgfHwgJycpXG4gICAgICB9XG4gICAgICAvLyBUaGlzIGNoZWNrIGlmIHNwZWNpZmljYWxseSBmb3Igd2hlbiBhIHVzZXIgZmV0Y2hlcyBhIGZpbGUgbG9jYWxseSBmcm9tIHRoZSBmaWxlIHN5c3RlbVxuICAgICAgLy8gT25seSBpZiB0aGUgc3RhdHVzIGlzIG91dCBvZiBhIG5vcm1hbCByYW5nZVxuICAgICAgaWYgKHJlcXVlc3QudXJsLmluZGV4T2YoJ2ZpbGU6Ly8nKSA9PT0gMCAmJiAoeGhyLnN0YXR1cyA8IDIwMCB8fCB4aHIuc3RhdHVzID4gNTk5KSkge1xuICAgICAgICBvcHRpb25zLnN0YXR1cyA9IDIwMDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3RhdHVzID0geGhyLnN0YXR1cztcbiAgICAgIH1cbiAgICAgIG9wdGlvbnMudXJsID0gJ3Jlc3BvbnNlVVJMJyBpbiB4aHIgPyB4aHIucmVzcG9uc2VVUkwgOiBvcHRpb25zLmhlYWRlcnMuZ2V0KCdYLVJlcXVlc3QtVVJMJylcbiAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH0sIDApXG4gICAgfVxuXG4gICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgdGltZWQgb3V0JykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIHhoci5vbmFib3J0ID0gZnVuY3Rpb24oKSB7XG4gICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IERPTUV4Y2VwdGlvbignQWJvcnRlZCcsICdBYm9ydEVycm9yJykpXG4gICAgICB9LCAwKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGZpeFVybCh1cmwpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiB1cmwgPT09ICcnICYmIGcubG9jYXRpb24uaHJlZiA/IGcubG9jYXRpb24uaHJlZiA6IHVybFxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICByZXR1cm4gdXJsXG4gICAgICB9XG4gICAgfVxuXG4gICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIGZpeFVybChyZXF1ZXN0LnVybCksIHRydWUpXG5cbiAgICBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ2luY2x1ZGUnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgIH0gZWxzZSBpZiAocmVxdWVzdC5jcmVkZW50aWFscyA9PT0gJ29taXQnKSB7XG4gICAgICB4aHIud2l0aENyZWRlbnRpYWxzID0gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhyKSB7XG4gICAgICBpZiAoc3VwcG9ydC5ibG9iKSB7XG4gICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidcbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIHN1cHBvcnQuYXJyYXlCdWZmZXJcbiAgICAgICkge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0gJ2FycmF5YnVmZmVyJ1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpbml0ICYmIHR5cGVvZiBpbml0LmhlYWRlcnMgPT09ICdvYmplY3QnICYmICEoaW5pdC5oZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycyB8fCAoZy5IZWFkZXJzICYmIGluaXQuaGVhZGVycyBpbnN0YW5jZW9mIGcuSGVhZGVycykpKSB7XG4gICAgICB2YXIgbmFtZXMgPSBbXTtcbiAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluaXQuaGVhZGVycykuZm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG4gICAgICAgIG5hbWVzLnB1c2gobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgbm9ybWFsaXplVmFsdWUoaW5pdC5oZWFkZXJzW25hbWVdKSlcbiAgICAgIH0pXG4gICAgICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICBpZiAobmFtZXMuaW5kZXhPZihuYW1lKSA9PT0gLTEpIHtcbiAgICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcbiAgICAgICAgeGhyLnNldFJlcXVlc3RIZWFkZXIobmFtZSwgdmFsdWUpXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChyZXF1ZXN0LnNpZ25hbCkge1xuICAgICAgcmVxdWVzdC5zaWduYWwuYWRkRXZlbnRMaXN0ZW5lcignYWJvcnQnLCBhYm9ydFhocilcblxuICAgICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICAvLyBET05FIChzdWNjZXNzIG9yIGZhaWx1cmUpXG4gICAgICAgIGlmICh4aHIucmVhZHlTdGF0ZSA9PT0gNCkge1xuICAgICAgICAgIHJlcXVlc3Quc2lnbmFsLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2Fib3J0JywgYWJvcnRYaHIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB4aHIuc2VuZCh0eXBlb2YgcmVxdWVzdC5fYm9keUluaXQgPT09ICd1bmRlZmluZWQnID8gbnVsbCA6IHJlcXVlc3QuX2JvZHlJbml0KVxuICB9KVxufVxuXG5mZXRjaC5wb2x5ZmlsbCA9IHRydWVcblxuaWYgKCFnLmZldGNoKSB7XG4gIGcuZmV0Y2ggPSBmZXRjaFxuICBnLkhlYWRlcnMgPSBIZWFkZXJzXG4gIGcuUmVxdWVzdCA9IFJlcXVlc3RcbiAgZy5SZXNwb25zZSA9IFJlc3BvbnNlXG59XG4iLCIvKiB0c2xpbnQ6ZGlzYWJsZTpuby1udWxsLWtleXdvcmQgbm8tYW55IG5vLXVuc2FmZS1hbnkgKi9cbmltcG9ydCB7IGZldGNoIH0gZnJvbSBcIndoYXR3Zy1mZXRjaFwiO1xuaW1wb3J0IHsgQWxsSWNvbk5hbWVzIH0gZnJvbSBcInJlYWN0LXVpXCI7XG5cbmltcG9ydCB7IEVycm9yRmlyc3RDYWxsYmFjaywgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHR5cGUgeyBJRm9ybSB9IGZyb20gXCIuLi8uLi9FbmdpbmUvRm9ybS9JRm9ybVwiO1xuaW1wb3J0IHsgTG9hZEludG9Eb2N1bWVudCB9IGZyb20gXCIuLi8uLi9IZWxwZXJzL0xvYWRJbnRvRG9jdW1lbnRcIjtcbmltcG9ydCB0eXBlIHsgSVB1YmxpY0Zvcm0gfSBmcm9tIFwiLi4vUHVibGljRm9ybS9JUHVibGljRm9ybVwiO1xuaW1wb3J0IHR5cGUgeyBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQgfSBmcm9tIFwiLi4vVHlwZXMvSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50XCI7XG5pbXBvcnQgdHlwZSB7IENsaWVudERyYWZ0SW5mb1Jlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9DbGllbnREcmFmdEluZm8vQ2xpZW50RHJhZnRJbmZvUmVzcG9uc2VcIjtcbmltcG9ydCB7IGdldENsaWVudERyYWZ0SW5mb1VybCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvQ2xpZW50RHJhZnRJbmZvL0dldENsaWVudERyYWZ0SW5mb1VybFwiO1xuaW1wb3J0IHsgQVVPT3B0aW9ucyB9IGZyb20gXCIuLi9UeXBlcy9BVU9PcHRpb25zXCI7XG5pbXBvcnQgdHlwZSB7IExheW91dEV2ZW50c1N0YXRpYyB9IGZyb20gXCIuLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTGF5b3V0RXZlbnRzL0xheW91dEV2ZW50c1wiO1xuXG5pbXBvcnQgeyBjbGllbnRTZXR0aW5ncyB9IGZyb20gXCIuL0NsaWVudFNldHRpbmdzXCI7XG5pbXBvcnQgeyBjcmVhdGVMZWdhY3lQdWJsaWNGb3JtIH0gZnJvbSBcIi4vTGVnYWN5UHVibGljRm9ybS9DcmVhdGVMZWdhY3lQdWJsaWNGb3JtXCI7XG5cbnR5cGUgRm9ybUNvbnRhaW5lciA9IHN0cmluZyB8IEhUTUxFbGVtZW50O1xuXG50eXBlIEVuZ2luZUVudHJ5UG9pbnQgPSAoKSA9PiB2b2lkO1xuXG5leHBvcnQgaW50ZXJmYWNlIEFjdGlvbkRlc2NyaXB0aW9uIHtcbiAgICBpY29uOiBBbGxJY29uTmFtZXM7XG4gICAgdGV4dD86IHN0cmluZyB8ICgoKSA9PiBzdHJpbmcpO1xuICAgIG9uQ2xpY2s6ICgpID0+IHZvaWQ7XG4gICAgaGludD86IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBpZDogc3RyaW5nO1xuICAgIHRpZD86IHN0cmluZztcbiAgICB3ZWlnaHQ6IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFJlbmRlckZvcm1TZXR0aW5ncyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2VzVmVyc2lvbjogc3RyaW5nO1xuICAgIHRoZW1lPzogdW5kZWZpbmVkIHwgbnVsbCB8IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgcmVuZGVyRm9ybTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludDtcbiAgICB0ZW1wbGF0ZXNBcGk/OiBJS2VXZWJUZW1wbGF0ZXNBcGlDbGllbnQ7XG4gICAgcGFuZWxBY3Rpb25zPzogQWN0aW9uRGVzY3JpcHRpb25bXTtcbn1cblxudHlwZSBTdGFydEZvcm1GdW5jID0gKHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLCBleHRlbmRlZFNldHRpbmdzOiBSZW5kZXJGb3JtU2V0dGluZ3MpID0+IFByb21pc2U8SUZvcm0+O1xuXG5pbnRlcmZhY2UgQ2FuZHlHbG9iYWxJbmplY3RlZFZhciB7XG4gICAgc3RhcnQ6IChwYWdlQ29udGVudDogRm9ybUNvbnRhaW5lciwgb3B0aW9uczogU3RhcnRGb3JtT3B0aW9ucywgY2FsbGJhY2s/OiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+KSA9PiB2b2lkO1xuICAgIGtlZm9ybXNVcmw/OiBzdHJpbmc7XG4gICAgcGFydGlhbFJlbmRlcmluZ0ZvcklFODogYm9vbGVhbjtcbiAgICBlbnRyeVBvaW50OiB7IFtrZXk6IHN0cmluZ106IFN0YXJ0Rm9ybUZ1bmMgfTtcbiAgICBsb2FkRXJyb3I/OiB1bmtub3duO1xufVxuXG5kZWNsYXJlIGdsb2JhbCB7XG4gICAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgICAgIENGOiBDYW5keUdsb2JhbEluamVjdGVkVmFyO1xuICAgIH1cblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbmFtZXNwYWNlXG4gICAgbmFtZXNwYWNlIE5vZGVKUyB7XG4gICAgICAgIGludGVyZmFjZSBHbG9iYWwge1xuICAgICAgICAgICAgQ0Y6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXI7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBXaW5kb3c7XG5cbmZ1bmN0aW9uIGRlZmF1bHRDYWxsYmFjaygpOiB2b2lkIHtcbiAgICAvKiBlbXB0eSAqL1xufVxuXG5mdW5jdGlvbiBwYXJzZUJvb2wodmFsdWU6IHVua25vd24pOiBib29sZWFuIHtcbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIGlmICh2YWx1ZSA9PT0gXCJmYWxzZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbHVlID09PSBcInRydWVcIikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gQm9vbGVhbih2YWx1ZSk7XG59XG5cbmZ1bmN0aW9uIHVybChyZWxhdGl2ZVVybDogc3RyaW5nID0gXCJcIik6IHN0cmluZyB7XG4gICAgY29uc3QgYmFzZVVybCA9IGdsb2JhbC5DRi5rZWZvcm1zVXJsIHx8IFwiXCI7XG5cbiAgICByZXR1cm4gYCR7YmFzZVVybH0vJHtyZWxhdGl2ZVVybH1gLnJlcGxhY2UoLyhbXjpdKVxcL3syLH0vZywgXCIkMS9cIik7XG59XG5cbmZ1bmN0aW9uIGJ1aWxkVXJsKHBhdGg6IHN0cmluZywgcGFyYW1zOiB7IFtwYXJhbU5hbWU6IHN0cmluZ106IHVuZGVmaW5lZCB8IHN0cmluZyB9KTogc3RyaW5nIHtcbiAgICBpZiAocGFyYW1zID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHBhdGg7XG4gICAgfVxuICAgIGNvbnN0IHF1ZXJ5UGFydHM6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBwYXJhbU5hbWUgb2YgT2JqZWN0LmtleXMocGFyYW1zKSkge1xuICAgICAgICBjb25zdCBwYXJhbVZhbHVlID0gcGFyYW1zW3BhcmFtTmFtZV07XG4gICAgICAgIGlmIChwYXJhbVZhbHVlICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgcXVlcnlQYXJ0cy5wdXNoKGAke3BhcmFtTmFtZX09JHtlbmNvZGVVUklDb21wb25lbnQocGFyYW1WYWx1ZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHF1ZXJ5UGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cbiAgICByZXR1cm4gcGF0aCArIFwiP1wiICsgcXVlcnlQYXJ0cy5qb2luKFwiJlwiKTtcbn1cblxuZnVuY3Rpb24gaXNBbGxvd2VkKGRvbWFpbnM6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBuZXcgUmVnRXhwKGBeKD86JHtkb21haW5zLnJlcGxhY2UoL1xcLi9nLCBcIlxcXFwuXCIpLnJlcGxhY2UoL1xcKi9nLCBcIlthLXowLTktLl9dK1wiKX0pJGApLnRlc3QoXG4gICAgICAgIGdsb2JhbC5sb2NhdGlvbi5ob3N0XG4gICAgKTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyYW1ldGVyQnlOYW1lKG5hbWU6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIChcbiAgICAgICAgKGdsb2JhbC5sb2NhdGlvbi5zZWFyY2hcbiAgICAgICAgICAgIC50cmltKClcbiAgICAgICAgICAgIC5yZXBsYWNlKC9eKFxcP3wjfCYpLywgXCJcIilcbiAgICAgICAgICAgIC5zcGxpdChcIiZcIilcbiAgICAgICAgICAgIC5tYXAocGFyYW0gPT4gcGFyYW0ucmVwbGFjZSgvXFwrL2csIFwiIFwiKS5zcGxpdChcIj1cIikubWFwKGRlY29kZVVSSUNvbXBvbmVudCkpXG4gICAgICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6dHJpcGxlLWVxdWFsc1xuICAgICAgICAgICAgLmZpbmQoKFtrZXldKSA9PiBrZXkgPT0gbmFtZSkgfHwgW10pWzFdXG4gICAgKTtcbn1cblxudHlwZSBUYXNrID0gKGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCkgPT4gdm9pZDtcblxuZnVuY3Rpb24gcnVuUGFyYWxsZWwodGFza3M6IFRhc2tbXSwgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgbGV0IGNvbXBsZXRlZCA9IDA7XG5cbiAgICB0YXNrcy5mb3JFYWNoKHRhc2sgPT4ge1xuICAgICAgICB0YXNrKGVycm9yID0+IHtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbXBsZXRlZCA9IHRhc2tzLmxlbmd0aDtcbiAgICAgICAgICAgICAgICBjYWxsYmFjayhlcnJvcik7XG5cbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb21wbGV0ZWQgKz0gMTtcbiAgICAgICAgICAgIGlmIChjb21wbGV0ZWQgPT09IHRhc2tzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuXG5pbnRlcmZhY2UgU3RhcnRGb3JtU2V0dGluZyB7XG4gICAgZ2Z2OiBzdHJpbmc7XG4gICAgZW5naW5lVmVyc2lvbj86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgcmVzb3VyY2Vab25lPzogc3RyaW5nO1xuICAgIHJlc291cmNlc1ZlcnNpb246IHN0cmluZztcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwobGVmdDogc3RyaW5nLCByaWdodDogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgdHJ5IHtcbiAgICAgICAgY29uc3QgbGVmdE51bWJlcnMgPSBsZWZ0XG4gICAgICAgICAgICAuc3BsaXQoXCIuXCIpXG4gICAgICAgICAgICAuc2xpY2UoMCwgMylcbiAgICAgICAgICAgIC5tYXAoeCA9PiBwYXJzZUludCh4LCAxMCkpO1xuICAgICAgICBjb25zdCByaWdodE51bWJlcnMgPSByaWdodFxuICAgICAgICAgICAgLnNwbGl0KFwiLlwiKVxuICAgICAgICAgICAgLnNsaWNlKDAsIDMpXG4gICAgICAgICAgICAubWFwKHggPT4gcGFyc2VJbnQoeCwgMTApKTtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChsZWZ0TnVtYmVyc1swXSA/PyAwKSA+IChyaWdodE51bWJlcnNbMF0gPz8gMCkgfHxcbiAgICAgICAgICAgICgobGVmdE51bWJlcnNbMF0gPz8gMCkgPT09IChyaWdodE51bWJlcnNbMF0gPz8gMCkgJiZcbiAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID4gKHJpZ2h0TnVtYmVyc1sxXSA/PyAwKSB8fFxuICAgICAgICAgICAgICAgICAgICAoKGxlZnROdW1iZXJzWzFdID8/IDApID09PSAocmlnaHROdW1iZXJzWzFdID8/IDApICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAobGVmdE51bWJlcnNbMl0gPz8gMCkgPj0gKHJpZ2h0TnVtYmVyc1syXSA/PyAwKSkpKVxuICAgICAgICApO1xuICAgIH0gY2F0Y2gge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBsb2FkRm9ybShzZXR0aW5nczogU3RhcnRGb3JtU2V0dGluZywgY2FsbGJhY2s6IChlcnJvcj86IG51bGwgfCB1bmRlZmluZWQgfCBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgIGNvbnN0IHsgZ2Z2LCBlbmdpbmVWZXJzaW9uLCByZXNvdXJjZXNWZXJzaW9uIH0gPSBzZXR0aW5ncztcblxuICAgIGlmIChnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgaXNOZWVkRW5naW5lID0gZW5naW5lVmVyc2lvbiAmJiAhZ2xvYmFsW2VuZ2luZVZlcnNpb25dO1xuICAgIGNvbnN0IG5vU3R5bGVzRm9yR2Z2ID0gZmFsc2U7IC8vIGVuZ2luZVZlcnNpb24gIT0gdW5kZWZpbmVkICYmIChpc0VuZ2luZVZlcnNpb25HcmVhdGVyVGhhbk9yRXF1YWwoZW5naW5lVmVyc2lvbiwgXCI0LjIxNC4wXCIpIHx8IGVuZ2luZVZlcnNpb24gPT09IFwibG9jYWxcIik7XG4gICAgY29uc3QgbmVlZExvYWRTdHlsZXNGb3JHZnYgPSAhbm9TdHlsZXNGb3JHZnY7XG4gICAgY29uc3QgbWluID0gZ2V0UGFyYW1ldGVyQnlOYW1lKFwiZGVidWdcIikgPT09IFwidHJ1ZVwiID8gXCJcIiA6IFwiLm1pblwiO1xuICAgIGNvbnN0IHRhc2tzOiBUYXNrW10gPSBbXTtcblxuICAgIGNvbnN0IHBhcmFtcyA9IHsgdjogcmVzb3VyY2VzVmVyc2lvbiwgcmVzb3VyY2Vab25lOiBzZXR0aW5ncy5yZXNvdXJjZVpvbmUgfTtcbiAgICBpZiAobmVlZExvYWRTdHlsZXNGb3JHZnYpIHtcbiAgICAgICAgdGFza3MucHVzaChjYiA9PlxuICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KHVybChidWlsZFVybChgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtnZnZ9JHttaW59LmNzc2AsIHBhcmFtcykpLCB0cnVlLCBjYilcbiAgICAgICAgKTtcbiAgICB9XG4gICAgdGFza3MucHVzaChjYiA9PiBMb2FkSW50b0RvY3VtZW50LnNjcmlwdCh1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy8ke2dmdn0ke21pbn0uanNgLCBwYXJhbXMpKSwgY2IpKTtcblxuICAgIGlmIChpc05lZWRFbmdpbmUpIHtcbiAgICAgICAgdGFza3MucHVzaChcbiAgICAgICAgICAgIGNiID0+XG4gICAgICAgICAgICAgICAgTG9hZEludG9Eb2N1bWVudC5zdHlsZVNoZWV0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc3R5bGVzL2NhbmR5XyR7ZW5naW5lVmVyc2lvbn0ke21pbn0uY3NzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICBjYlxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICBjYiA9PlxuICAgICAgICAgICAgICAgIExvYWRJbnRvRG9jdW1lbnQuc2NyaXB0KFxuICAgICAgICAgICAgICAgICAgICB1cmwoYnVpbGRVcmwoYHN0YXRpYy9wdWJsaWMvc2NyaXB0cy9jYW5keV8ke2VuZ2luZVZlcnNpb259JHttaW59LmpzYCwgcGFyYW1zKSksXG4gICAgICAgICAgICAgICAgICAgIGNiXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIHJ1blBhcmFsbGVsKHRhc2tzLCBjYWxsYmFjayk7XG59XG5cbmZ1bmN0aW9uIHJlbmRlckZvcm0oXG4gICAgcGFnZUNvbnRlbnQ6IEZvcm1Db250YWluZXIsXG4gICAgZXh0ZW5kZWRTZXR0aW5nczogUmVuZGVyRm9ybVNldHRpbmdzLFxuICAgIGNhbGxiYWNrOiBFcnJvckZpcnN0Q2FsbGJhY2s8SVB1YmxpY0Zvcm0+XG4pOiB2b2lkIHtcbiAgICBjb25zdCBmb3JtRW50cnlQb2ludCA9XG4gICAgICAgIGdsb2JhbC5DRi5lbnRyeVBvaW50W2V4dGVuZGVkU2V0dGluZ3MuZ2Z2XSA/PyByZWplY3QoYEZvcm0gZW50cnkgcG9pbnQgJHtleHRlbmRlZFNldHRpbmdzLmdmdn0gbm90IGZvdW5kLmApO1xuICAgIGZvcm1FbnRyeVBvaW50KHBhZ2VDb250ZW50LCBleHRlbmRlZFNldHRpbmdzKVxuICAgICAgICAudGhlbihmb3JtID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHB1YmxpY0Zvcm0gPSBmb3JtLnB1YmxpY0Zvcm0gfHwgY3JlYXRlTGVnYWN5UHVibGljRm9ybShmb3JtKTtcblxuICAgICAgICAgICAgY2FsbGJhY2sobnVsbCwgcHVibGljRm9ybSk7XG4gICAgICAgIH0pXG4gICAgICAgIC5jYXRjaChjYWxsYmFjayk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhcnRGb3JtT3B0aW9ucyBleHRlbmRzIFBhcnRpYWw8QVVPT3B0aW9ucz4ge1xuICAgIG5zOiBzdHJpbmc7XG4gICAgZHJhZnRJZDogc3RyaW5nO1xuICAgIGdmdj86IHN0cmluZztcbiAgICByZXNvdXJjZVpvbmU/OiBzdHJpbmc7XG4gICAgdGVtcGxhdGVzQXBpPzogSUtlV2ViVGVtcGxhdGVzQXBpQ2xpZW50O1xuICAgIGZlZWRiYWNrRW5hYmxlZD86IGJvb2xlYW47XG4gICAgaXNEaXNhYmxlZENsb3NlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uPzogYm9vbGVhbjtcbiAgICBpc0Rpc2FibGVkQ2xlYW5Gb3JtPzogYm9vbGVhbjtcbiAgICB0aGVtZT86IHVuZGVmaW5lZCB8IG51bGwgfCBzdHJpbmc7XG4gICAgYXV0aGVudGljYXRpb24/OiBcImJyb3dzZXItY3JlZGVudGlhbHMtaW5jbHVkZVwiIHwgeyBhdXRoU2lkOiBzdHJpbmcgfTtcbiAgICBmZXRjaD86IHR5cGVvZiBmZXRjaDtcbiAgICBtb2RlbD86IHsgW3BhdGg6IHN0cmluZ106IHVua25vd24gfTtcbiAgICBwYW5lbEFjdGlvbnM/OiBBY3Rpb25EZXNjcmlwdGlvbltdO1xuICAgIGV2ZW50RW1pdHRlcj86IExheW91dEV2ZW50c1N0YXRpYztcbiAgICBlbXBsb3llcklkPzogc3RyaW5nO1xuICAgIHNob3dOYXZpZ2F0aW9uU2lkZWJhcj86IGJvb2xlYW47XG4gICAgb25SZW1vdmVBdHRhY2htZW50PzogKCkgPT4gdm9pZDtcbn1cblxuZnVuY3Rpb24gZ2V0RW5naW5lRW50cnlQb2ludChlbmdpbmVWZXJzaW9uOiB1bmRlZmluZWQgfCBudWxsIHwgc3RyaW5nKTogdW5kZWZpbmVkIHwgRW5naW5lRW50cnlQb2ludCB7XG4gICAgaWYgKGVuZ2luZVZlcnNpb24gPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW5zYWZlLXJldHVyblxuICAgIHJldHVybiBnbG9iYWxbZW5naW5lVmVyc2lvbl0gJiYgZ2xvYmFsW2VuZ2luZVZlcnNpb25dLmRlZmF1bHQ7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0KFxuICAgIHBhZ2VDb250ZW50OiBGb3JtQ29udGFpbmVyLFxuICAgIG9wdGlvbnM6IFN0YXJ0Rm9ybU9wdGlvbnMsXG4gICAgY2FsbGJhY2s6IEVycm9yRmlyc3RDYWxsYmFjazxJUHVibGljRm9ybT4gPSBkZWZhdWx0Q2FsbGJhY2tcbik6IHZvaWQge1xuICAgIGxldCBlcnJvciA9IG51bGw7XG4gICAgY29uc3QgeyBucywgZHJhZnRJZCB9ID0gb3B0aW9ucztcblxuICAgIGlmICghaXNBbGxvd2VkKGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMpKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwiZG9tYWluLnVudHJ1c3RlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFjbGllbnRTZXR0aW5ncy5hdXRob3JpemVkKSB7XG4gICAgICAgIGVycm9yID0gbmV3IEVycm9yKFwidXNlci51bmF1dGhlbnRpY2F0ZWRcIik7XG4gICAgfSBlbHNlIGlmICghZHJhZnRJZCkge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMuZHJhZnRJZCBpcyByZXF1aXJlZFwiKTtcbiAgICB9IGVsc2UgaWYgKCFucykge1xuICAgICAgICBlcnJvciA9IG5ldyBFcnJvcihcIm9wdGlvbnMubnMgaXMgcmVxdWlyZWRcIik7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIGNhbGxiYWNrKGVycm9yKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc291cmNlWm9uZSA9IG9wdGlvbnMucmVzb3VyY2Vab25lID8/IGdldFBhcmFtZXRlckJ5TmFtZShcInJlc291cmNlWm9uZVwiKTtcbiAgICBjb25zdCBjbGllbnREcmFmdFVybCA9IGJ1aWxkVXJsKHVybChnZXRDbGllbnREcmFmdEluZm9VcmwoeyBuczogbnMsIGRyYWZ0SWQ6IGRyYWZ0SWQgfSkpLCB7XG4gICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVxdWVzdE9wdGlvbnM6IFJlcXVlc3RJbml0ID0geyBtZXRob2Q6IFwiR0VUXCIgfTtcbiAgICBpZiAob3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PSB1bmRlZmluZWQgfHwgb3B0aW9ucy5hdXRoZW50aWNhdGlvbiA9PT0gXCJicm93c2VyLWNyZWRlbnRpYWxzLWluY2x1ZGVcIikge1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5jcmVkZW50aWFscyA9IFwiaW5jbHVkZVwiO1xuICAgIH0gZWxzZSBpZiAoXCJhdXRoU2lkXCIgaW4gb3B0aW9ucy5hdXRoZW50aWNhdGlvbiAmJiBvcHRpb25zLmF1dGhlbnRpY2F0aW9uLmF1dGhTaWQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmhlYWRlcnMgPSByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzID8/IHt9O1xuICAgICAgICByZXF1ZXN0T3B0aW9ucy5oZWFkZXJzW1wiQXV0aG9yaXphdGlvblwiXSA9IGBBVVRILlNJRCAke29wdGlvbnMuYXV0aGVudGljYXRpb24uYXV0aFNpZH1gO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcXVlc3RPcHRpb25zLmNyZWRlbnRpYWxzID0gXCJvbWl0XCI7XG4gICAgfVxuICAgIGNvbnN0IGZldGNoSW1wbCA9IG9wdGlvbnMuZmV0Y2ggPz8gZmV0Y2g7XG5cbiAgICBmZXRjaEltcGwoY2xpZW50RHJhZnRVcmwsIHJlcXVlc3RPcHRpb25zKVxuICAgICAgICAudGhlbih4ID0+IHguanNvbigpKVxuICAgICAgICAudGhlbigoY2xpZW50RHJhZnRJbmZvOiBDbGllbnREcmFmdEluZm9SZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgZ2Z2ID0gY2xpZW50RHJhZnRJbmZvLmdmdjtcbiAgICAgICAgICAgIGNvbnN0IGVuZ2luZVZlcnNpb24gPSBjbGllbnREcmFmdEluZm8uZW5naW5lVmVyc2lvbjtcbiAgICAgICAgICAgIGNvbnN0IGV4dGVuZGVkU2V0dGluZ3MgPSB7XG4gICAgICAgICAgICAgICAgYXV0aG9yaXplZDogY2xpZW50U2V0dGluZ3MuYXV0aG9yaXplZCxcbiAgICAgICAgICAgICAgICBjYXVsZHJvbkFwaVVybDogY2xpZW50U2V0dGluZ3MuY2F1bGRyb25BcGlVcmwsXG4gICAgICAgICAgICAgICAgaXNUZXN0U2VydmVyOiBjbGllbnRTZXR0aW5ncy5pc1Rlc3RTZXJ2ZXIsXG4gICAgICAgICAgICAgICAgcmVuZGVyQ2FjaGluZ0ZvcklFODogY2xpZW50U2V0dGluZ3MucmVuZGVyQ2FjaGluZ0ZvcklFOCxcbiAgICAgICAgICAgICAgICBub3JtYWxpemF0aW9uT25TZXJ2ZXI6IGNsaWVudFNldHRpbmdzLm5vcm1hbGl6YXRpb25PblNlcnZlcixcbiAgICAgICAgICAgICAgICBub3JtYXRpdmVVcmw6IGNsaWVudFNldHRpbmdzLm5vcm1hdGl2ZVVybCxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXNWZXJzaW9uOiBjbGllbnRTZXR0aW5ncy5yZXNvdXJjZXNWZXJzaW9uLFxuICAgICAgICAgICAgICAgIGtvbnR1ckRvbWFpbnM6IGNsaWVudFNldHRpbmdzLmtvbnR1ckRvbWFpbnMsXG4gICAgICAgICAgICAgICAgc2hvd05hdmlnYXRpb25TaWRlYmFyOiBvcHRpb25zLnNob3dOYXZpZ2F0aW9uU2lkZWJhciA/PyB0cnVlLFxuICAgICAgICAgICAgICAgIG9uUmVtb3ZlQXR0YWNobWVudDogb3B0aW9ucy5vblJlbW92ZUF0dGFjaG1lbnQsXG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICAuLi5jbGllbnREcmFmdEluZm8sXG4gICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgZW5naW5lVmVyc2lvbjogZW5naW5lVmVyc2lvbixcbiAgICAgICAgICAgICAgICBmZWVkYmFja0VuYWJsZWQ6IG9wdGlvbnMuZmVlZGJhY2tFbmFibGVkID8/IGNsaWVudERyYWZ0SW5mby5mZWVkYmFja0VuYWJsZWQsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsZWFuRm9ybTogb3B0aW9ucy5pc0Rpc2FibGVkQ2xlYW5Gb3JtID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIGlzRGlzYWJsZWRDbG9zZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VCdXR0b24gPz8gZmFsc2UsXG4gICAgICAgICAgICAgICAgaXNEaXNhYmxlZENsb3NlQW5kU2F2ZUJ1dHRvbjogb3B0aW9ucy5pc0Rpc2FibGVkQ2xvc2VBbmRTYXZlQnV0dG9uID8/IGZhbHNlLFxuICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogcmVzb3VyY2Vab25lLFxuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgbG9hZEZvcm0oXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBnZnY6IGV4dGVuZGVkU2V0dGluZ3MuZ2Z2LFxuICAgICAgICAgICAgICAgICAgICBlbmdpbmVWZXJzaW9uOiBleHRlbmRlZFNldHRpbmdzLmVuZ2luZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlWm9uZTogZXh0ZW5kZWRTZXR0aW5ncy5yZXNvdXJjZVpvbmUsXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlc1ZlcnNpb246IGV4dGVuZGVkU2V0dGluZ3MucmVzb3VyY2VzVmVyc2lvbixcbiAgICAgICAgICAgICAgICAgICAgdGhlbWU6IGV4dGVuZGVkU2V0dGluZ3MudGhlbWUsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBsb2FkRXJyb3IgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9hZEVycm9yIHx8ICFnbG9iYWwuQ0YuZW50cnlQb2ludFtnZnZdKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYGR5bmFtaWMgbG9hZGluZyBpcyBub3Qgc3VwcG9ydGVkIGZvciBnZnYgJHtnZnZ9YCkpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlbmRlciA9IGdldEVuZ2luZUVudHJ5UG9pbnQoZW5naW5lVmVyc2lvbik7XG5cbiAgICAgICAgICAgICAgICAgICAgcmVuZGVyRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VDb250ZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmV4dGVuZGVkU2V0dGluZ3MsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVzQXBpOiBvcHRpb25zLnRlbXBsYXRlc0FwaSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJGb3JtOiByZW5kZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICApO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goY2FsbGJhY2spO1xufVxuXG5jb25zdCBDYW5keUNsaWVudEV4cG9ydHM6IENhbmR5R2xvYmFsSW5qZWN0ZWRWYXIgPSB7XG4gICAgc3RhcnQ6IHN0YXJ0LFxuICAgIGVudHJ5UG9pbnQ6IHt9LFxuICAgIHBhcnRpYWxSZW5kZXJpbmdGb3JJRTg6IHBhcnNlQm9vbChcIntwYXJ0aWFsUmVuZGVyaW5nRm9ySUU4fVwiKSxcbiAgICBrZWZvcm1zVXJsOiBcIntrZWZvcm1zVXJsfVwiLFxufTtcblxuZ2xvYmFsLkNGID0gQ2FuZHlDbGllbnRFeHBvcnRzO1xuXG5leHBvcnQgeyBDYW5keUNsaWVudEV4cG9ydHMgfTtcbiIsImZ1bmN0aW9uIHBhcnNlQm9vbCh2YWx1ZTogdW5rbm93bik6IGJvb2xlYW4ge1xuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgaWYgKHZhbHVlID09PSBcImZhbHNlXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodmFsdWUgPT09IFwidHJ1ZVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiBCb29sZWFuKHZhbHVlKTtcbn1cblxuZXhwb3J0IGNvbnN0IGNsaWVudFNldHRpbmdzID0ge1xuICAgIGF1dGhvcml6ZWQ6IHBhcnNlQm9vbChcInthdXRob3JpemVkfVwiKSxcbiAgICBjYXVsZHJvbkFwaVVybDogXCJ7Y2F1bGRyb25BcGlVcmx9XCIsXG4gICAgaXNUZXN0U2VydmVyOiBwYXJzZUJvb2woXCJ7aXNUZXN0U2VydmVyfVwiKSxcbiAgICByZW5kZXJDYWNoaW5nRm9ySUU4OiBwYXJzZUJvb2woXCJ7cmVuZGVyQ2FjaGluZ0ZvcklFOH1cIiksXG4gICAgbm9ybWFsaXphdGlvbk9uU2VydmVyOiBwYXJzZUJvb2woXCJ7bm9ybWFsaXphdGlvbk9uU2VydmVyfVwiKSxcbiAgICBub3JtYXRpdmVVcmw6IFwie25vcm1hdGl2ZVVybH1cIixcbiAgICByZXNvdXJjZXNWZXJzaW9uOiBcIntyZXNvdXJjZXNWZXJzaW9ufVwiLFxuICAgIGtvbnR1ckRvbWFpbnM6IFwie2tvbnR1ckRvbWFpbnN9XCIsXG59O1xuIiwiaW1wb3J0IHtcbiAgICBFbXBsb3llZSxcbiAgICBFbXBsb3llZUxpc3QsXG4gICAgR2V0RW1wbG95ZWVzV2l0aEFjdGl2ZVBlcmlvZFF1ZXJ5LFxuICAgIEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0LFxuICAgIE1hdGNoRW1wbG95ZWVSZXF1ZXN0LFxuICAgIE1hdGNoRW1wbG95ZWVSZXNwb25zZSxcbiAgICBNZXJnZVJlbGF0aXZlUmVzcG9uc2UsXG4gICAgUGF0Y2hSZWxhdGl2ZVJlc3BvbnNlLFxuICAgIFdvcmtpbmdFdmVudExpc3QsXG59IGZyb20gXCJAc2tia29udHVyL3N0YWZmLXNlbGVjdG9yLXdpZGdldFwiO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSBcIkVuZ2luZS9zcmMvRW5naW5lL0Zvcm0vTW9kZWxDaGFuZ2VFdmVudExpc3RlbmVyXCI7XG5cbmltcG9ydCB7IE5vdEltcGxlbWVudGVkRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0Vycm9yc1wiO1xuaW1wb3J0IHR5cGUgeyBTdGVwIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL0Zvcm1QYXJ0cy9Ub3VyL1RvdXJUeXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJFcnJvckxvZyB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vQ2FuZHlBcGlDbGllbnQvVHlwZXMvRXJyb3JMb2cvU2VydmVyRXJyb3JMb2dcIjtcbmltcG9ydCB0eXBlIHsgQmluZGluZ1BhdGgsIE1vZGVsVmFsdWUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29yZVR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IEV4dGVybmFsSG9va0Z1bmN0aW9uIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL0V2ZW50TWFuYWdlbWVudC9FeHRlcm5hbEV2ZW50cy9FeHRlcm5hbEhvb2tGdW5jdGlvblwiO1xuaW1wb3J0IHR5cGUgeyBSZWFkb25seU1vZGVsQ2h1bmsgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvTW9kZWxTdG9yaW5nL01vZGVsQ2h1bmtcIjtcbmltcG9ydCB0eXBlIHsgUGlja2xpc3RRdWVyeVJlc3BvbnNlIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Db3JlL1BpY2tsaXN0cy9QaWNrbGlzdFR5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IElGb3JtIH0gZnJvbSBcIi4uLy4uLy4uL0VuZ2luZS9Gb3JtL0lGb3JtXCI7XG5pbXBvcnQgdHlwZSB7IElQdWJsaWNGb3JtIH0gZnJvbSBcIi4uLy4uL1B1YmxpY0Zvcm0vSVB1YmxpY0Zvcm1cIjtcbmltcG9ydCB7IE1vZGVsRXZlbnRzTGlzdGVuZXIgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvRXZlbnRNYW5hZ2VtZW50L01vZGVsRXZlbnRzL01vZGVsRXZlbnRcIjtcbmltcG9ydCB7IERpZ2VzdFF1ZXJ5RmlsdGVyIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9EaWdlc3RBcGlDbGllbnQvVHlwZXMvRGlnZXN0UXVlcnlGaWx0ZXJcIjtcbmltcG9ydCB7IElVcGRhdGVGb3JtTW9kZWxBY2Nlc3NvciB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvRm9ybS9JRm9ybU1vZGVsQWNjZXNzb3JcIjtcbmltcG9ydCB7IE1vZGFsT3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9FbmdpbmUvQ29yZS9Nb2RhbE1hbmFnZXIvSU1vZGFsU3RhdGVcIjtcbmltcG9ydCB7IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGggfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL01vZGVsUGF0aC9Nb2RlbFBhdGhcIjtcbmltcG9ydCB7XG4gICAgQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyxcbiAgICBJbml0U2VjdGlvbkZvcm1MaWdodGJveE9wdGlvbnMsXG4gICAgUHJlZmVycmVkSW50ZXJkb2N1bWVudFRyYW5zZmVyUHJvcHMsXG59IGZyb20gXCIuLi8uLi9QdWJsaWNGb3JtL0luaXRTZWN0aW9uTGlnaHRib3hcIjtcbmltcG9ydCB7IE1hc3NBY3Rpb25QYXJhbWV0ZXJzIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9NYXNzQWN0aW9ucy9NYXNzQWN0aW9uUGFyYW1ldGVyc1wiO1xuaW1wb3J0IHsgUHJpbnRUeXBlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9QcmludC9QcmludFR5cGVcIjtcbmltcG9ydCB7IEZpYXNBcGksIEZpYXNDbGllbnRJbml0T3B0aW9ucyB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9WYWx1ZUVkaXRvcnMvRmlhcy9GaWFzSW5wdXQvRmlhc0FwaVwiO1xuaW1wb3J0IHsgSW5zdGFuY2VzRGVsZXRpbmdSdWxlIH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9DYW5keUFwaUNsaWVudC9UeXBlcy9JbnN0YW5jZXNEZWxldGluZy9JbnN0YW5jZXNEZWxldGluZ1J1bGVcIjtcbmltcG9ydCB7IENvbWJpbmVGdWZSZXN1bHQgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0NhbmR5QXBpQ2xpZW50L1R5cGVzL0RyYWZ0QWN0aW9ucy9Db21iaW5lRnVmUmVzdWx0XCI7XG5pbXBvcnQgeyBJQ2FuZHlDb21wb25lbnRIYW5kbGUgfSBmcm9tIFwiLi4vLi4vLi4vRW5naW5lL0NvcmUvQ29tcG9uZW50SGFuZGxlUmVnaXN0cnkvSUNhbmR5Q29tcG9uZW50SGFuZGxlXCI7XG5pbXBvcnQgeyBOYXZpZ2F0aW9uUGF0aE1hcHBlciB9IGZyb20gXCIuLi8uLi9JbmplY3RhYmxlTW9kdWxlcy9JbmplY3RhYmxlRW5naW5lTW9kdWxlc1wiO1xuaW1wb3J0IHsgSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zIH0gZnJvbSBcIi4uLy4uLy4uL1N0YWZmU2VydmljZUludGVncmF0aW9uL0VtcGxveWVlU2VydmljZVR5cGVzXCI7XG5pbXBvcnQgeyBUYWJJbmZvc1N0YXRlIH0gZnJvbSBcIi4uLy4uLy4uL0NvbnRyb2xzL011bHRpQ29udHJvbHMvVGFicy9TdG9yZS9UYWJJbmZvc1N0YXRlXCI7XG5pbXBvcnQgeyBNZXRyaWNzUGF5bG9hZCB9IGZyb20gXCIuLi8uLi8uLi9Db250cm9scy9JbnRlcm5hbHMvTWV0cmljcy9NZXRyaWNzUHJvdmlkZXJcIjtcblxuaW1wb3J0IHsgSUxlZ2FjeUZvcm0gfSBmcm9tIFwiLi9JTGVnYWN5Rm9ybVwiO1xuXG5leHBvcnQgdHlwZSBNb2RlbEV2ZW50UGF0aCA9XG4gICAgfCBbXCJtb2RlbFwiLCBcImNoYW5nZVwiLCBzdHJpbmcsIHN0cmluZ11cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCIsIHN0cmluZywgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJyZW1vdmVcIiwgc3RyaW5nXVxuICAgIHwgW1wibW9kZWxcIiwgXCJjaGFuZ2VcIl1cbiAgICB8IFtcIm1vZGVsXCIsIFwicmVtb3ZlXCJdO1xuXG5leHBvcnQgZnVuY3Rpb24gbW9kZWxDaGFuZ2VFdmVudFBhdGgocGF0aD86IHN0cmluZywgZmllbGROYW1lPzogc3RyaW5nKTogTW9kZWxFdmVudFBhdGgge1xuICAgIGlmIChmaWVsZE5hbWUgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChwYXRoID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUGF0aCBtdXN0IGJlIGRlZmluZWRcIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtcIm1vZGVsXCIsIFwiY2hhbmdlXCIsIHBhdGgsIGZpZWxkTmFtZV07XG4gICAgfVxuICAgIGlmIChwYXRoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gW1wibW9kZWxcIiwgXCJjaGFuZ2VcIiwgcGF0aF07XG4gICAgfVxuICAgIHJldHVybiBbXCJtb2RlbFwiLCBcImNoYW5nZVwiXTtcbn1cblxuZnVuY3Rpb24gbWFwQ2h1bmtWYWx1ZXMoY2h1bms6IFJlYWRvbmx5TW9kZWxDaHVuayk6IEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4ge1xuICAgIHJldHVybiBPYmplY3Qua2V5cyhjaHVuaylcbiAgICAgICAgLmZpbHRlcihwYXRoID0+IGNodW5rW3BhdGhdICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjaHVua1twYXRoXSwgXCJ2YWx1ZVwiKSlcbiAgICAgICAgLm1hcChwYXRoID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGNodW5rW3BhdGhdO1xuICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge307XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyBbcGF0aF06IHJlc3VsdC52YWx1ZSB9O1xuICAgICAgICB9KTtcbn1cblxuZnVuY3Rpb24gcmVkdWNlQ2h1bmtWYWx1ZXMoY2h1bmtzOiBBcnJheTx7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0+KTogeyBbcGF0aDogc3RyaW5nXTogTW9kZWxWYWx1ZSB9IHtcbiAgICByZXR1cm4gY2h1bmtzLnJlZHVjZShcbiAgICAgICAgKHJlc3VsdCwgY2h1bmspID0+ICh7XG4gICAgICAgICAgICAuLi5yZXN1bHQsXG4gICAgICAgICAgICAuLi5jaHVuayxcbiAgICAgICAgfSksXG4gICAgICAgIHt9XG4gICAgKTtcbn1cblxuY2xhc3MgTGVnYWN5UHVibGljRm9ybSBpbXBsZW1lbnRzIElQdWJsaWNGb3JtIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZvcm06IElMZWdhY3lGb3JtO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKGZvcm06IElMZWdhY3lGb3JtKSB7XG4gICAgICAgIHRoaXMuZm9ybSA9IGZvcm07XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlQnlIaWdobGFuZGVyUGF0aHMocGF0aHM6IHN0cmluZ1tdKTogUHJvbWlzZTxJQ2FuZHlDb21wb25lbnRIYW5kbGUgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGNhbmNlbFNlbGVjdFJlbGF0aXZlKCk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TmF2aWdhdGlvblBhdGhNYXBwZXIoKTogTmF2aWdhdGlvblBhdGhNYXBwZXIge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYmF0Y2hVcGRhdGUodXBkYXRlUHJvYzogKHVwZGF0ZUFjY2Vzc29yOiBJVXBkYXRlRm9ybU1vZGVsQWNjZXNzb3IpID0+IHZvaWQpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIHJ1bkNoZWNrKCk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0RXJyb3JMb2coZXJyb3JMb2c6IFBhcnRpYWw8U2VydmVyRXJyb3JMb2c+KTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyB2YWxpZGF0ZUNoaWxkcmVuQnlQYXRoKHBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgX19JTlRFUk5BTF9faW1wb3J0RnJvbUVtcGxveWVlU2VydmljZSgpOiBQcm9taXNlPEVtcGxveWVlW10gfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIF9fSU5URVJOQUxfX2dldFNlbGVjdEZ1bmN0aW9uRm9yRGlzYWJsZUVtcGxveWVlSW5TUyhcbiAgICAgICAgcGF0aFNwZWM6IHN0cmluZ1xuICAgICk6IFByb21pc2U8KGVtcGxveWVlOiBFbXBsb3llZSkgPT4gYm9vbGVhbj4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0TW9kYWxVbml0T3BlbmVkSW5zdGFuY2UocGFnZUlkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQgfCBudWxsIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFRhYnNTdGF0ZSgpOiBUYWJJbmZvc1N0YXRlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIG5hdmlnYXRlKG5hdmlnYXRpb25QYXRoOiBzdHJpbmcpOiBQcm9taXNlPElDYW5keUNvbXBvbmVudEhhbmRsZSB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJNZXRob2Qgbm90IGltcGxlbWVudGVkLlwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaW1wb3J0RW1wbG95ZXJEb2N1bWVudHMob3B0aW9uczogSW1wb3J0RW1wbG95ZXJEb2N1bWVudHNPcHRpb25zKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBpbXBvcnRFbXBsb3llZXMoZW1wbG95ZWVzOiBFbXBsb3llZVtdLCBvcHRpb25zPzogeyBzY2VuYXJpbz86IHN0cmluZyB9KTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmludChwcmludFR5cGU6IFByaW50VHlwZSwgYm9keT86IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIk1ldGhvZCBub3QgaW1wbGVtZW50ZWQuXCIpO1xuICAgIH1cbiAgICBwdWJsaWMgcnVuTWFzc0FjdGlvbihhY3Rpb25JZDogc3RyaW5nLCBwYXJhbWV0ZXJzPzogTWFzc0FjdGlvblBhcmFtZXRlcnMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEJ5R0lkKGdJZDogc3RyaW5nLCBmaWx0ZXI/OiBEaWdlc3RRdWVyeUZpbHRlcik6IFByb21pc2U8UGlja2xpc3RRdWVyeVJlc3BvbnNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0ucGlja2xpc3RzUHJvdmlkZXIuZ2V0RGlnZXN0QXBpUGlja2xpc3QoZ0lkKS5xdWVyeShmaWx0ZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub24oW1wiZm9ybVwiLCBldmVudE5hbWVdLCBsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgcHVibGljIG9mZihldmVudE5hbWU6IHN0cmluZywgbGlzdGVuZXI6IEV4dGVybmFsSG9va0Z1bmN0aW9uKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKFtcImZvcm1cIiwgZXZlbnROYW1lXSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1vZGVsQ2hhbmdlKHBhdGg6IHN0cmluZyB8IHN0cmluZ1tdLCBsaXN0ZW5lcjogdW5rbm93bik6IFN1YnNjcmlwdGlvbiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgIHRocm93IEVycm9yKFwiZm9ybS5vbk1vZGVsQ2hhbmdlKCkgaXMgbm90IHN1cHBvcnRlZCB5ZXRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIHNhdmUoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY2xvc2UoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRoaXMuZm9ybS5jaGFuZ2VTZXQuc3RvcEF1dG9zZW5kKCk7XG4gICAgICAgIGlmICh0aGlzLmZvcm0udW5tb3VudCkge1xuICAgICAgICAgICAgdGhpcy5mb3JtLnVubW91bnQoKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0uY2hhbmdlU2V0LnNlbmQoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0VG91clN0ZXBzKCk6IFN0ZXBbXSB7XG4gICAgICAgIC8vIEZvciBvbGQga2V3ZWJcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHB1YmxpYyB2YWxpZGF0ZSgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QpKTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZSDQrdGC0L4g0LIg0YHRgtCw0YDRi9GFINC00LLQuNC20LrQsNGFINGC0YPRgiDRgtCw0LrQvtC5INCy0YvQt9C+0LJcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnNhZmUtcmV0dXJuXG4gICAgICAgIHJldHVybiB0aGlzLmZvcm0udmFsaWRhdG9yLnZhbGlkYXRlQWxsKGtleXMpO1xuICAgIH1cbiAgICBwdWJsaWMgZ2V0QWRkaXRpb25hbEVtcGxveWVlSW5mbyhmaWx0ZXJzOiBHZXRFbXBsb3llZXNXaXRoQWN0aXZlUGVyaW9kUXVlcnkpOiBQcm9taXNlPEVtcGxveWVlTGlzdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJub3QgaW1wbGVtZW50ZWRcIik7XG4gICAgfVxuXG4gICAgcHVibGljIG1lcmdlUmVsYXRpdmUoKTogUHJvbWlzZTxNZXJnZVJlbGF0aXZlUmVzcG9uc2UgfCB1bmRlZmluZWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwibm90IGltcGxlbWVudGVkXCIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwYXRjaFJlbGF0aXZlKCk6IFByb21pc2U8UGF0Y2hSZWxhdGl2ZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2VuZE1ldHJpY3MoYWN0aW9uOiBzdHJpbmcsIHBheWxvYWQ/OiBNZXRyaWNzUGF5bG9hZCk6IHZvaWQge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHB1YmxpYyBtYXRjaEVtcGxveWVlKHF1ZXJ5OiBNYXRjaEVtcGxveWVlUmVxdWVzdCk6IFByb21pc2U8TWF0Y2hFbXBsb3llZVJlc3BvbnNlPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVsb2FkSW5uZXIoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0V29ya2luZ0V2ZW50c0ZvckVtcGxveWVlKGZpbHRlcnM6IEdldFdvcmtpbmdFdmVudExpc3RSZXF1ZXN0KTogUHJvbWlzZTxXb3JraW5nRXZlbnRMaXN0IHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIm5vdCBpbXBsZW1lbnRlZFwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgaGFzRXJyb3JzKCk6IGJvb2xlYW4ge1xuICAgICAgICBjb25zdCBlcnJvckNvdW50ID0gdGhpcy5mb3JtLm1vZGVsLmdldCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIik7XG4gICAgICAgIHJldHVybiBlcnJvckNvdW50ICE9IHVuZGVmaW5lZCAmJiBlcnJvckNvdW50ID4gMDtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25FcnJvcnNDb3VudENoYW5nZWQobGlzdGVuZXI6IE1vZGVsRXZlbnRzTGlzdGVuZXIpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5mb3JtLmV2ZW50TWFuYWdlci5vbihtb2RlbENoYW5nZUV2ZW50UGF0aCh0aGlzLmZvcm0uc2V0dGluZ3MuZm9ybVJvb3QsIFwiZXJyb3JzQ291bnRcIiksIGxpc3RlbmVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmRXJyb3JzQ291bnRDaGFuZ2VkKGxpc3RlbmVyOiBNb2RlbEV2ZW50c0xpc3RlbmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMuZm9ybS5ldmVudE1hbmFnZXIub2ZmKG1vZGVsQ2hhbmdlRXZlbnRQYXRoKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCwgXCJlcnJvcnNDb3VudFwiKSwgbGlzdGVuZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQocGF0aE9yTW9kZWxDaHVuazogeyBbcGF0aDogc3RyaW5nXTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KHBhdGhPck1vZGVsQ2h1bms6IHN0cmluZywgdmFsdWU6IE1vZGVsVmFsdWUpOiB2b2lkIHwgUHJvbWlzZTx2b2lkPjtcbiAgICBwdWJsaWMgc2V0KFxuICAgICAgICBwYXRoT3JNb2RlbENodW5rOiBzdHJpbmcgfCB7IFtwYXRoOiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfSxcbiAgICAgICAgdmFsdWU/OiBNb2RlbFZhbHVlXG4gICAgKTogdm9pZCB8IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBwYXRoT3JNb2RlbENodW5rICE9PSBudWxsICYmXG4gICAgICAgICAgICB0eXBlb2YgcGF0aE9yTW9kZWxDaHVuayAhPT0gXCJzdHJpbmdcIiAmJlxuICAgICAgICAgICAgdHlwZW9mIHBhdGhPck1vZGVsQ2h1bmsgPT09IFwib2JqZWN0XCIgJiZcbiAgICAgICAgICAgICFBcnJheS5pc0FycmF5KHBhdGhPck1vZGVsQ2h1bmspXG4gICAgICAgICkge1xuICAgICAgICAgICAgY29uc3QgaW5uZXJDaHVuayA9IE9iamVjdC5rZXlzKHBhdGhPck1vZGVsQ2h1bmspLnJlZHVjZTxSZWFkb25seU1vZGVsQ2h1bms+KFxuICAgICAgICAgICAgICAgIChyZXN1bHQsIHBhdGgpID0+ICh7IFtwYXRoXTogeyB2YWx1ZTogcGF0aE9yTW9kZWxDaHVua1twYXRoXSB9LCAuLi5yZXN1bHQgfSksXG4gICAgICAgICAgICAgICAge31cbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIHRoaXMuZm9ybS5tb2RlbC5maWxsKGlubmVyQ2h1bmspO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JNb2RlbENodW5rID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICB0aGlzLmZvcm0ubW9kZWwuc2V0KHBhdGhPck1vZGVsQ2h1bmssIFwidmFsdWVcIiwgdmFsdWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiZm9ybS5zZXQoKSBwYXJhbWV0ZXIgc2hvdWxkIGJlIHN0cmluZyBwYXRoIG9yIG9iamVjdCB3aXRoIHBhdGgtdmFsdWUgcGFpcnNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldChwYXRoT3JBcnJheTogc3RyaW5nIHwgc3RyaW5nW10pOiB7IFtwYXRoOiBzdHJpbmddOiBNb2RlbFZhbHVlIH0ge1xuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoT3JBcnJheSkpIHtcbiAgICAgICAgICAgIHJldHVybiByZWR1Y2VDaHVua1ZhbHVlcyhcbiAgICAgICAgICAgICAgICBwYXRoT3JBcnJheVxuICAgICAgICAgICAgICAgICAgICAubWFwKHBhdGggPT4gbWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHBhdGgpKSlcbiAgICAgICAgICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm5vLWFueVxuICAgICAgICAgICAgICAgICAgICAucmVkdWNlPEFycmF5PHsgW3BhdGg6IHN0cmluZ106IE1vZGVsVmFsdWUgfT4+KChyZXN1bHQsIGFycmF5KSA9PiByZXN1bHQuY29uY2F0KGFycmF5KSwgW10pXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiBwYXRoT3JBcnJheSA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgcmV0dXJuIHJlZHVjZUNodW5rVmFsdWVzKG1hcENodW5rVmFsdWVzKHRoaXMuZm9ybS5tb2RlbC5nZXRDaHVuayhwYXRoT3JBcnJheSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwYXRoT3JBcnJheSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICByZXR1cm4gcmVkdWNlQ2h1bmtWYWx1ZXMobWFwQ2h1bmtWYWx1ZXModGhpcy5mb3JtLm1vZGVsLmdldENodW5rKHRoaXMuZm9ybS5zZXR0aW5ncy5mb3JtUm9vdCkpKTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJmb3JtLmdldCgpIHBhcmFtZXRlciBzaG91bGQgYmUgc3RyaW5nIHBhdGggb3IgYXJyYXkgb2YgcGF0aHNcIik7XG4gICAgfVxuXG4gICAgcHVibGljIGdldFZhbHVlKHBhdGg6IHN0cmluZyk6IE1vZGVsVmFsdWUge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVuc2FmZS1yZXR1cm5cbiAgICAgICAgcmV0dXJuIHRoaXMuZm9ybS5tb2RlbC5nZXQocGF0aCwgXCJ2YWx1ZVwiKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY29weVN1YnRyZWUoXG4gICAgICAgIHNvdXJjZUJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIHRhcmdldEJpbmRpbmdQYXRoOiBCaW5kaW5nUGF0aCB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIGRvTm90Q29weVBhdGhzPzogc3RyaW5nW11cbiAgICApOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkSW5zdGFuY2UocGF0aDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Q2hpbGRyZW4ocGF0aDogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1dWlkR2VuZXJhdGUoKTogc3RyaW5nIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2hvd01vZGFsKG9wdGlvbnM6IE1vZGFsT3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRTZWN0aW9uKG9wdGlvbnM6IEluaXRTZWN0aW9uRm9ybUxpZ2h0Ym94T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBjYWxsSW5pdFNlY3Rpb24ob3B0aW9uczogQ2FsbEluaXRTZWN0aW9uTGlnaHRib3hQcm9wcyk6IHZvaWQge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBwcmVmZXJyZWRJbnRlcmRvY3VtZW50VHJhbnNmZXIob3B0aW9uczogUHJlZmVycmVkSW50ZXJkb2N1bWVudFRyYW5zZmVyUHJvcHMpOiB2b2lkIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG4gICAgcHVibGljIGNyZWF0ZUZpYXNBcGlDbGllbnQob3B0aW9uczogRmlhc0NsaWVudEluaXRPcHRpb25zKTogRmlhc0FwaSB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9wZW5FbXBsb3llZUVkaXRvcihlbXBsb3llZUlkOiBzdHJpbmcpIHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2UocGF0aDogc3RyaW5nLCBpbnN0YW5jZTogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZUluc3RhbmNlcyhwYXRoOiBzdHJpbmcsIGluc3RhbmNlczogc3RyaW5nW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZm9jdXNPbkNvbnRyb2xJZkV4aXN0KHBhdGg6IEJpbmRpbmdQYXRoKTogdm9pZCB7XG4gICAgICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHNldEF1dG9GaWVsZHNUb0F1dG9WYWx1ZShwYXRoUHJlZml4ZXM6IHN0cmluZ1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodW5kZWZpbmVkKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZW5zdXJlSW5zdGFuY2VGdWxseUxvYWRlZChcbiAgICAgICAgYmluZGluZ1BhdGg6IHN0cmluZyB8IEFic29sdXRlUmVzb2x2ZWRNb2RlbFBhdGgsXG4gICAgICAgIC4uLmluc3RhbmNlczogc3RyaW5nW11cbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC5cIik7XG4gICAgfVxuXG4gICAgcHVibGljIGN1c3RvbU5vcm1hbGl6ZShub3JtYWxpemVySWQ6IHN0cmluZywgcGF0aFByZWZpeGVzOiBzdHJpbmdbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbiAgICBwdWJsaWMgcmVtb3ZlSW5zdGFuY2VzQnlSdWxlcyhydWxlczogSW5zdGFuY2VzRGVsZXRpbmdSdWxlW10pOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgY3JlYXRlRG5wKCk6IFByb21pc2U8Q29tYmluZUZ1ZlJlc3VsdCB8IHVuZGVmaW5lZD4ge1xuICAgICAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUxlZ2FjeVB1YmxpY0Zvcm0oZm9ybTogSUZvcm0pOiBJUHVibGljRm9ybSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIHJldHVybiBuZXcgTGVnYWN5UHVibGljRm9ybShmb3JtIGFzIElMZWdhY3lGb3JtKTtcbn1cbiIsIi8vIHRzbGludDpkaXNhYmxlIG5vLXVuc2FmZS1hbnlcbmV4cG9ydCBjbGFzcyBMb2FkSW50b0RvY3VtZW50IHtcbiAgICBwdWJsaWMgc3RhdGljIHNjcmlwdCh1cmk6IHN0cmluZywgY2FsbGJhY2s6IChlcnJvcj86IEVycm9yKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgICAgIGxldCBzY3JpcHRMb2FkZWQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSB8fCBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgICAgIGNvbnN0IHNjcmlwdDogYW55ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcblxuICAgICAgICBmdW5jdGlvbiBsb2FkSGFuZGxlcigpOiB2b2lkIHtcbiAgICAgICAgICAgIGlmIChzY3JpcHRMb2FkZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghc2NyaXB0LnJlYWR5U3RhdGUgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwibG9hZGVkXCIgfHwgc2NyaXB0LnJlYWR5U3RhdGUgPT09IFwiY29tcGxldGVcIikge1xuICAgICAgICAgICAgICAgIHNjcmlwdExvYWRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmcgdGhlIHVzZXIgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gdGhlIHNjcmlwdCBjb21wbGV0ZXMgdG8gbG9hZC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogVGhpcyBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBpbiBJRSBldmVuIHVwb24gZXJyb3IuIEluIGFueVxuICAgICAgICAvLyBjYXNlIGl0IGlzIHRoZSBjbGllbnQncyByZXNwb25zaWJpbGl0eSB0byB2ZXJpZnkgdGhhdCB0aGUgc2NyaXB0IHJhblxuICAgICAgICAvLyBzdWNjZXNzZnVsbHkuXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSBsb2FkSGFuZGxlcjtcbiAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGxvYWRIYW5kbGVyO1xuXG4gICAgICAgIC8vIEFkZCBhbiBlcnJvciBjYWxsYmFjay5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogTm90IHN1cHBvcnRlZCBpbiBJRS5cbiAgICAgICAgc2NyaXB0Lm9uZXJyb3IgPSAoKSA9PiB7XG4gICAgICAgICAgICBpZiAoc2NyaXB0LnBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgICAgICBzY3JpcHQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzY3JpcHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzY3JpcHQuXCIpKTtcbiAgICAgICAgfTtcblxuICAgICAgICAvLyBBZGQgdGhlIHNjcmlwdCBlbGVtZW50IHRvIHRoZSBkb2N1bWVudC5cbiAgICAgICAgLy8gTk9URSh1c2VyKTogU2FmYXJpIG5ldmVyIGxvYWRzIHRoZSBzY3JpcHQgaWYgd2UgZG9uJ3Qgc2V0XG4gICAgICAgIC8vIHRoZSBzcmMgYXR0cmlidXRlIGJlZm9yZSBhcHBlbmRpbmcuXG4gICAgICAgIHNjcmlwdC5zcmMgPSB1cmk7XG4gICAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoXCJjcm9zc29yaWdpblwiLCBcInVzZS1jcmVkZW50aWFsc1wiKTtcbiAgICAgICAgaGVhZC5hcHBlbmRDaGlsZChzY3JpcHQpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgc3R5bGVTaGVldCh1cmk6IHN0cmluZywgaWdub3JlRXJyb3I6IGJvb2xlYW4sIGNhbGxiYWNrOiAoZXJyb3I/OiBFcnJvcikgPT4gdm9pZCk6IHZvaWQge1xuICAgICAgICBjb25zdCByZXNvbHZlID0gKCkgPT4gY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgY29uc3QgcmVqZWN0ID0gKCkgPT4ge1xuICAgICAgICAgICAgaWYgKGlnbm9yZUVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sodW5kZWZpbmVkKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKFwiRXJyb3Igd2hpbGUgbG9hZGluZyBzdHlsZXNoZWV0LlwiKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgY29uc3QgaGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiaGVhZFwiKVswXSA/PyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcblxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcInJlbFwiLCBcInN0eWxlc2hlZXRcIik7XG4gICAgICAgIGxpbmsuc2V0QXR0cmlidXRlKFwidHlwZVwiLCBcInRleHQvY3NzXCIpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIHJlc29sdmUpO1xuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZWplY3QpO1xuICAgICAgICBoZWFkLmFwcGVuZENoaWxkKGxpbmspO1xuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZShcImhyZWZcIiwgdXJpKTtcbiAgICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdGlkOiBtb2R1bGVJZCxcblx0XHRsb2FkZWQ6IGZhbHNlLFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcblx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBkZWZpbml0aW9uKSB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5obWQgPSBmdW5jdGlvbihtb2R1bGUpIHtcblx0bW9kdWxlID0gT2JqZWN0LmNyZWF0ZShtb2R1bGUpO1xuXHRpZiAoIW1vZHVsZS5jaGlsZHJlbikgbW9kdWxlLmNoaWxkcmVuID0gW107XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShtb2R1bGUsICdleHBvcnRzJywge1xuXHRcdGVudW1lcmFibGU6IHRydWUsXG5cdFx0c2V0OiBmdW5jdGlvbigpIHtcblx0XHRcdHRocm93IG5ldyBFcnJvcignRVMgTW9kdWxlcyBtYXkgbm90IGFzc2lnbiBtb2R1bGUuZXhwb3J0cyBvciBleHBvcnRzLiosIFVzZSBFU00gZXhwb3J0IHN5bnRheCwgaW5zdGVhZDogJyArIG1vZHVsZS5pZCk7XG5cdFx0fVxuXHR9KTtcblx0cmV0dXJuIG1vZHVsZTtcbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqLCBwcm9wKSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKTsgfSIsIi8vIHN0YXJ0dXBcbi8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuLy8gVGhpcyBlbnRyeSBtb2R1bGUgaXMgcmVmZXJlbmNlZCBieSBvdGhlciBtb2R1bGVzIHNvIGl0IGNhbid0IGJlIGlubGluZWRcbnZhciBfX3dlYnBhY2tfZXhwb3J0c19fID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OTEpO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQU1DQSxDQUFBLEVBSm9DQyxDQUFBO1FBQTlCLFNBQVNDLEVBQXNCQyxDQUFBO1VBR2xDLE9BQU8sU0FBUEMsTUFBQSxDQUFnQkQsQ0FBQSxDQUFRRSxFQUFBLEVBQUUsWUFBQUQsTUFBQSxDQUFXRCxDQUFBLENBQVFHLE9BQUEsRUFBTyxxQkFDeEQ7UUFBQTtRQUFBQyxDQUFBLENBQUFDLENBQUEsQ0FBQUMsQ0FBQTtVQUFBQyxDQUFBLFdBQUFBLENBQUE7WUFBQSxPQUFBUixDQUFBO1VBQUE7UUFBQSxJQUFBQyxDQUFBLEdBQUFJLENBQUEsQ0FBQUksR0FBQSxDQUFBUixDQUFBLElBQUFTLENBQUEseUJBQUFDLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFDLFdBQUEsY0FBQUYsQ0FBQSxDQUFBVCxDQUFBLHlCQUFBVSxvQkFBQSxJQUFBQSxvQkFBQSxDQUFBRSxPQUFBLENBQUFDLFNBQUEsR0FBQ2hCLENBQUEseUJBQUFhLG9CQUFBLEdBQUFBLG9CQUFBLENBQUFFLE9BQUEsY0FBQWYsQ0FBQSxDQUFBaUIsUUFBQSxDQUplZixDQUFBLEVBQXFCLCtJQUFBRCxDQUFBLHlCQUFBWSxvQkFBQSxHQUFBQSxvQkFBQSxDQUFBSyxXQUFBLGNBQUFqQixDQUFBLENBQUFFLENBQUE7TUFBQTtNQUFBLGVBQUFnQixNQUFBLEVBQUFDLG1CQUFBLEVBQUFDLG1CQUFBO1FBQUEsU0FBQUMsUUFBQW5CLENBQUE7VUFBQSxPQUFBbUIsT0FBQSx3QkFBQUMsTUFBQSx1QkFBQUEsTUFBQSxDQUFBQyxRQUFBLGFBQUFyQixDQUFBO1lBQUEsY0FBQUEsQ0FBQTtVQUFBLGNBQUFBLENBQUE7WUFBQSxPQUFBQSxDQUFBLHlCQUFBb0IsTUFBQSxJQUFBcEIsQ0FBQSxDQUFBc0IsV0FBQSxLQUFBRixNQUFBLElBQUFwQixD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
|