single-scripture-rcl 3.4.14 → 3.4.15-beta.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
2
2
|
function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return e; }; var t, e = {}, r = Object.prototype, n = r.hasOwnProperty, o = Object.defineProperty || function (t, e, r) { t[e] = r.value; }, i = "function" == typeof Symbol ? Symbol : {}, a = i.iterator || "@@iterator", c = i.asyncIterator || "@@asyncIterator", u = i.toStringTag || "@@toStringTag"; function define(t, e, r) { return Object.defineProperty(t, e, { value: r, enumerable: !0, configurable: !0, writable: !0 }), t[e]; } try { define({}, ""); } catch (t) { define = function define(t, e, r) { return t[e] = r; }; } function wrap(t, e, r, n) { var i = e && e.prototype instanceof Generator ? e : Generator, a = Object.create(i.prototype), c = new Context(n || []); return o(a, "_invoke", { value: makeInvokeMethod(t, r, c) }), a; } function tryCatch(t, e, r) { try { return { type: "normal", arg: t.call(e, r) }; } catch (t) { return { type: "throw", arg: t }; } } e.wrap = wrap; var h = "suspendedStart", l = "suspendedYield", f = "executing", s = "completed", y = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var p = {}; define(p, a, function () { return this; }); var d = Object.getPrototypeOf, v = d && d(d(values([]))); v && v !== r && n.call(v, a) && (p = v); var g = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(p); function defineIteratorMethods(t) { ["next", "throw", "return"].forEach(function (e) { define(t, e, function (t) { return this._invoke(e, t); }); }); } function AsyncIterator(t, e) { function invoke(r, o, i, a) { var c = tryCatch(t[r], t, o); if ("throw" !== c.type) { var u = c.arg, h = u.value; return h && "object" == _typeof(h) && n.call(h, "__await") ? e.resolve(h.__await).then(function (t) { invoke("next", t, i, a); }, function (t) { invoke("throw", t, i, a); }) : e.resolve(h).then(function (t) { u.value = t, i(u); }, function (t) { return invoke("throw", t, i, a); }); } a(c.arg); } var r; o(this, "_invoke", { value: function value(t, n) { function callInvokeWithMethodAndArg() { return new e(function (e, r) { invoke(t, n, e, r); }); } return r = r ? r.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(e, r, n) { var o = h; return function (i, a) { if (o === f) throw new Error("Generator is already running"); if (o === s) { if ("throw" === i) throw a; return { value: t, done: !0 }; } for (n.method = i, n.arg = a;;) { var c = n.delegate; if (c) { var u = maybeInvokeDelegate(c, n); if (u) { if (u === y) continue; return u; } } if ("next" === n.method) n.sent = n._sent = n.arg;else if ("throw" === n.method) { if (o === h) throw o = s, n.arg; n.dispatchException(n.arg); } else "return" === n.method && n.abrupt("return", n.arg); o = f; var p = tryCatch(e, r, n); if ("normal" === p.type) { if (o = n.done ? s : l, p.arg === y) continue; return { value: p.arg, done: n.done }; } "throw" === p.type && (o = s, n.method = "throw", n.arg = p.arg); } }; } function maybeInvokeDelegate(e, r) { var n = r.method, o = e.iterator[n]; if (o === t) return r.delegate = null, "throw" === n && e.iterator["return"] && (r.method = "return", r.arg = t, maybeInvokeDelegate(e, r), "throw" === r.method) || "return" !== n && (r.method = "throw", r.arg = new TypeError("The iterator does not provide a '" + n + "' method")), y; var i = tryCatch(o, e.iterator, r.arg); if ("throw" === i.type) return r.method = "throw", r.arg = i.arg, r.delegate = null, y; var a = i.arg; return a ? a.done ? (r[e.resultName] = a.value, r.next = e.nextLoc, "return" !== r.method && (r.method = "next", r.arg = t), r.delegate = null, y) : a : (r.method = "throw", r.arg = new TypeError("iterator result is not an object"), r.delegate = null, y); } function pushTryEntry(t) { var e = { tryLoc: t[0] }; 1 in t && (e.catchLoc = t[1]), 2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]), this.tryEntries.push(e); } function resetTryEntry(t) { var e = t.completion || {}; e.type = "normal", delete e.arg, t.completion = e; } function Context(t) { this.tryEntries = [{ tryLoc: "root" }], t.forEach(pushTryEntry, this), this.reset(!0); } function values(e) { if (e || "" === e) { var r = e[a]; if (r) return r.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) { var o = -1, i = function next() { for (; ++o < e.length;) if (n.call(e, o)) return next.value = e[o], next.done = !1, next; return next.value = t, next.done = !0, next; }; return i.next = i; } } throw new TypeError(_typeof(e) + " is not iterable"); } return GeneratorFunction.prototype = GeneratorFunctionPrototype, o(g, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), o(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, u, "GeneratorFunction"), e.isGeneratorFunction = function (t) { var e = "function" == typeof t && t.constructor; return !!e && (e === GeneratorFunction || "GeneratorFunction" === (e.displayName || e.name)); }, e.mark = function (t) { return Object.setPrototypeOf ? Object.setPrototypeOf(t, GeneratorFunctionPrototype) : (t.__proto__ = GeneratorFunctionPrototype, define(t, u, "GeneratorFunction")), t.prototype = Object.create(g), t; }, e.awrap = function (t) { return { __await: t }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, c, function () { return this; }), e.AsyncIterator = AsyncIterator, e.async = function (t, r, n, o, i) { void 0 === i && (i = Promise); var a = new AsyncIterator(wrap(t, r, n, o), i); return e.isGeneratorFunction(r) ? a : a.next().then(function (t) { return t.done ? t.value : a.next(); }); }, defineIteratorMethods(g), define(g, u, "Generator"), define(g, a, function () { return this; }), define(g, "toString", function () { return "[object Generator]"; }), e.keys = function (t) { var e = Object(t), r = []; for (var n in e) r.push(n); return r.reverse(), function next() { for (; r.length;) { var t = r.pop(); if (t in e) return next.value = t, next.done = !1, next; } return next.done = !0, next; }; }, e.values = values, Context.prototype = { constructor: Context, reset: function reset(e) { if (this.prev = 0, this.next = 0, this.sent = this._sent = t, this.done = !1, this.delegate = null, this.method = "next", this.arg = t, this.tryEntries.forEach(resetTryEntry), !e) for (var r in this) "t" === r.charAt(0) && n.call(this, r) && !isNaN(+r.slice(1)) && (this[r] = t); }, stop: function stop() { this.done = !0; var t = this.tryEntries[0].completion; if ("throw" === t.type) throw t.arg; return this.rval; }, dispatchException: function dispatchException(e) { if (this.done) throw e; var r = this; function handle(n, o) { return a.type = "throw", a.arg = e, r.next = n, o && (r.method = "next", r.arg = t), !!o; } for (var o = this.tryEntries.length - 1; o >= 0; --o) { var i = this.tryEntries[o], a = i.completion; if ("root" === i.tryLoc) return handle("end"); if (i.tryLoc <= this.prev) { var c = n.call(i, "catchLoc"), u = n.call(i, "finallyLoc"); if (c && u) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } else if (c) { if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); } else { if (!u) throw new Error("try statement without catch or finally"); if (this.prev < i.finallyLoc) return handle(i.finallyLoc); } } } }, abrupt: function abrupt(t, e) { for (var r = this.tryEntries.length - 1; r >= 0; --r) { var o = this.tryEntries[r]; if (o.tryLoc <= this.prev && n.call(o, "finallyLoc") && this.prev < o.finallyLoc) { var i = o; break; } } i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null); var a = i ? i.completion : {}; return a.type = t, a.arg = e, i ? (this.method = "next", this.next = i.finallyLoc, y) : this.complete(a); }, complete: function complete(t, e) { if ("throw" === t.type) throw t.arg; return "break" === t.type || "continue" === t.type ? this.next = t.arg : "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e), y; }, finish: function finish(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.finallyLoc === t) return this.complete(r.completion, r.afterLoc), resetTryEntry(r), y; } }, "catch": function _catch(t) { for (var e = this.tryEntries.length - 1; e >= 0; --e) { var r = this.tryEntries[e]; if (r.tryLoc === t) { var n = r.completion; if ("throw" === n.type) { var o = n.arg; resetTryEntry(r); } return o; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(e, r, n) { return this.delegate = { iterator: values(e), resultName: r, nextLoc: n }, "next" === this.method && (this.arg = t), y; } }, e; }
|
|
3
|
-
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
4
3
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
5
4
|
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
|
5
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
6
6
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
7
7
|
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
8
8
|
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
@@ -81,7 +81,7 @@ import { isEqual } from '@react-hookz/deep-equal';
|
|
|
81
81
|
import { getVerses } from 'bible-reference-range';
|
|
82
82
|
import { ScripturePane, ScriptureSelector } from '..';
|
|
83
83
|
import { useScriptureSettings } from '../../hooks/useScriptureSettings';
|
|
84
|
-
import { cleanupVerseObjects, fixOccurrence, getBookNameFromUsfmFileName, getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible } from '../../utils/ScriptureSettings';
|
|
84
|
+
import { cleanupVerseObjects, fetchBibleBook, fixOccurrence, getBookNameFromUsfmFileName, getResourceLink, getResourceMessage, getScriptureVersionSettings, isOriginalBible } from '../../utils/ScriptureSettings';
|
|
85
85
|
import { delay } from '../../utils/delay';
|
|
86
86
|
import { areMapsTheSame } from '../../utils/maps';
|
|
87
87
|
import { Title } from '../ScripturePane/styled';
|
|
@@ -214,6 +214,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
214
214
|
saveClicked: false,
|
|
215
215
|
saveContent: null,
|
|
216
216
|
saveDiffPatch: false,
|
|
217
|
+
saveFullBibleContent: null,
|
|
217
218
|
selections: new Map(),
|
|
218
219
|
showAlignmentPopup: false,
|
|
219
220
|
startSave: false,
|
|
@@ -238,6 +239,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
238
239
|
saveClicked = state.saveClicked,
|
|
239
240
|
saveContent = state.saveContent,
|
|
240
241
|
saveDiffPatch = state.saveDiffPatch,
|
|
242
|
+
saveFullBibleContent = state.saveFullBibleContent,
|
|
241
243
|
selections = state.selections,
|
|
242
244
|
showAlignmentPopup = state.showAlignmentPopup,
|
|
243
245
|
startSave = state.startSave,
|
|
@@ -671,81 +673,146 @@ export default function ScriptureCard(_ref2) {
|
|
|
671
673
|
onSaveEditPatch = _useEdit.onSaveEditPatch;
|
|
672
674
|
React.useEffect(function () {
|
|
673
675
|
// when we get a save saveError
|
|
674
|
-
if (saveError && isSaveError) {
|
|
676
|
+
if (saveError && isSaveError && !startSave) {
|
|
677
|
+
// if error then show after save completes, since we may retry
|
|
675
678
|
console.log("save error", saveError);
|
|
676
679
|
onResourceError && onResourceError(null, false, null, "Error saving ".concat(languageId_, "_").concat(resourceId, " ").concat(saveError), true);
|
|
677
680
|
}
|
|
678
|
-
}, [saveError, isSaveError]);
|
|
681
|
+
}, [saveError, isSaveError, startSave]);
|
|
679
682
|
React.useEffect(function () {
|
|
680
683
|
// when startSave goes true, save edits to user branch and then clear startSave
|
|
684
|
+
function _saveSuccesful() {
|
|
685
|
+
console.log("saveChangesToCloud() - save scripture edits success");
|
|
686
|
+
setCardsSaving(function (prevCardsSaving) {
|
|
687
|
+
return prevCardsSaving.filter(function (cardId) {
|
|
688
|
+
return cardId !== cardResourceId;
|
|
689
|
+
});
|
|
690
|
+
});
|
|
691
|
+
setState({
|
|
692
|
+
startSave: false
|
|
693
|
+
});
|
|
694
|
+
var unsavedCardIndices = Object.keys(unsavedChangesList);
|
|
695
|
+
if (unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length) {
|
|
696
|
+
var _iterator = _createForOfIteratorHelper(unsavedCardIndices),
|
|
697
|
+
_step;
|
|
698
|
+
try {
|
|
699
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
700
|
+
var cardIndex = _step.value;
|
|
701
|
+
var clearChanges = unsavedChangesList[cardIndex].clearChanges;
|
|
702
|
+
clearChanges && clearChanges();
|
|
703
|
+
}
|
|
704
|
+
} catch (err) {
|
|
705
|
+
_iterator.e(err);
|
|
706
|
+
} finally {
|
|
707
|
+
_iterator.f();
|
|
708
|
+
}
|
|
709
|
+
}
|
|
710
|
+
console.info('saveChangesToCloud() - Reloading resource');
|
|
711
|
+
setState({
|
|
712
|
+
startSave: false,
|
|
713
|
+
readyForFetch: true,
|
|
714
|
+
saveFullBibleContent: null,
|
|
715
|
+
saveContent: null,
|
|
716
|
+
ref: userEditBranchName
|
|
717
|
+
});
|
|
718
|
+
delay(100).then(function () {
|
|
719
|
+
setCardsSaving(function (prevCardsSaving) {
|
|
720
|
+
return prevCardsSaving.filter(function (cardId) {
|
|
721
|
+
return cardId !== cardResourceId;
|
|
722
|
+
});
|
|
723
|
+
});
|
|
724
|
+
scriptureConfig === null || scriptureConfig === void 0 || scriptureConfig.reloadResource(sha, userEditBranchName);
|
|
725
|
+
});
|
|
726
|
+
return true;
|
|
727
|
+
}
|
|
681
728
|
var _saveEdit = /*#__PURE__*/function () {
|
|
682
729
|
var _ref4 = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
|
|
683
|
-
var
|
|
730
|
+
var uploadFunction, success, error, results, _saveContent, fileSha, savedBibleUsfm, editedBibleUsfm, upToDate, diffPatch;
|
|
684
731
|
return _regeneratorRuntime().wrap(function _callee$(_context) {
|
|
685
732
|
while (1) switch (_context.prev = _context.next) {
|
|
686
733
|
case 0:
|
|
687
734
|
// begin uploading new USFM
|
|
688
735
|
console.info("saveChangesToCloud() - Using sha: ".concat(sha));
|
|
689
|
-
|
|
736
|
+
uploadFunction = onSaveEdit;
|
|
690
737
|
if (saveDiffPatch) {
|
|
691
|
-
|
|
738
|
+
uploadFunction = onSaveEditPatch; // if we are sending up a diffpatch, we will use this method
|
|
692
739
|
}
|
|
693
740
|
_context.next = 5;
|
|
694
|
-
return
|
|
695
|
-
// push change to server
|
|
696
|
-
if (success) {
|
|
697
|
-
console.log("saveChangesToCloud() - save scripture edits success");
|
|
698
|
-
setCardsSaving(function (prevCardsSaving) {
|
|
699
|
-
return prevCardsSaving.filter(function (cardId) {
|
|
700
|
-
return cardId !== cardResourceId;
|
|
701
|
-
});
|
|
702
|
-
});
|
|
703
|
-
setState({
|
|
704
|
-
startSave: false
|
|
705
|
-
});
|
|
706
|
-
var unsavedCardIndices = Object.keys(unsavedChangesList);
|
|
707
|
-
if (unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length) {
|
|
708
|
-
var _iterator = _createForOfIteratorHelper(unsavedCardIndices),
|
|
709
|
-
_step;
|
|
710
|
-
try {
|
|
711
|
-
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
712
|
-
var cardIndex = _step.value;
|
|
713
|
-
var clearChanges = unsavedChangesList[cardIndex].clearChanges;
|
|
714
|
-
clearChanges && clearChanges();
|
|
715
|
-
}
|
|
716
|
-
} catch (err) {
|
|
717
|
-
_iterator.e(err);
|
|
718
|
-
} finally {
|
|
719
|
-
_iterator.f();
|
|
720
|
-
}
|
|
721
|
-
}
|
|
722
|
-
console.info('saveChangesToCloud() - Reloading resource');
|
|
723
|
-
setState({
|
|
724
|
-
startSave: false,
|
|
725
|
-
readyForFetch: true,
|
|
726
|
-
ref: userEditBranchName
|
|
727
|
-
});
|
|
728
|
-
delay(100).then(function () {
|
|
729
|
-
setCardsSaving(function (prevCardsSaving) {
|
|
730
|
-
return prevCardsSaving.filter(function (cardId) {
|
|
731
|
-
return cardId !== cardResourceId;
|
|
732
|
-
});
|
|
733
|
-
});
|
|
734
|
-
scriptureConfig === null || scriptureConfig === void 0 || scriptureConfig.reloadResource(sha, userEditBranchName);
|
|
735
|
-
});
|
|
736
|
-
} else {
|
|
737
|
-
console.error('saveChangesToCloud() - saving changed scripture failed');
|
|
738
|
-
setCardsSaving(function (prevCardsSaving) {
|
|
739
|
-
return prevCardsSaving.filter(function (cardId) {
|
|
740
|
-
return cardId !== cardResourceId;
|
|
741
|
-
});
|
|
742
|
-
});
|
|
743
|
-
setState({
|
|
744
|
-
startSave: false
|
|
745
|
-
});
|
|
746
|
-
}
|
|
747
|
-
});
|
|
741
|
+
return uploadFunction(userEditBranchName);
|
|
748
742
|
case 5:
|
|
743
|
+
success = _context.sent;
|
|
744
|
+
// push change to server
|
|
745
|
+
error = success ? null : 'saving changed scripture failed';
|
|
746
|
+
if (success) {
|
|
747
|
+
_context.next = 33;
|
|
748
|
+
break;
|
|
749
|
+
}
|
|
750
|
+
// if save failed, attempt a retry
|
|
751
|
+
console.error('saveChangesToCloud() - saving changed scripture failed, retrying');
|
|
752
|
+
_context.next = 11;
|
|
753
|
+
return delay(100);
|
|
754
|
+
case 11:
|
|
755
|
+
_context.next = 13;
|
|
756
|
+
return fetchBibleBook(server, httpConfig, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.resource, scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.reference);
|
|
757
|
+
case 13:
|
|
758
|
+
results = _context.sent;
|
|
759
|
+
error = results === null || results === void 0 ? void 0 : results.error;
|
|
760
|
+
_saveContent = saveContent;
|
|
761
|
+
fileSha = null;
|
|
762
|
+
savedBibleUsfm = results === null || results === void 0 ? void 0 : results.bibleUsfm;
|
|
763
|
+
editedBibleUsfm = saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent["new"];
|
|
764
|
+
upToDate = savedBibleUsfm === editedBibleUsfm; // check if new bible content differs from latest on repo
|
|
765
|
+
if (error) {
|
|
766
|
+
_context.next = 33;
|
|
767
|
+
break;
|
|
768
|
+
}
|
|
769
|
+
if (!upToDate) {
|
|
770
|
+
_context.next = 26;
|
|
771
|
+
break;
|
|
772
|
+
}
|
|
773
|
+
// if the data we are trying to save matches what is now on the server there is nothing to do
|
|
774
|
+
console.log('saveChangesToCloud() - data was correctly uploaded, so nothing more to do');
|
|
775
|
+
success = true;
|
|
776
|
+
_context.next = 33;
|
|
777
|
+
break;
|
|
778
|
+
case 26:
|
|
779
|
+
if (saveDiffPatch) {
|
|
780
|
+
// regenerate the patch against the latest content
|
|
781
|
+
diffPatch = getPatch(saveFullBibleContent === null || saveFullBibleContent === void 0 ? void 0 : saveFullBibleContent.filename, savedBibleUsfm, editedBibleUsfm, false);
|
|
782
|
+
_saveContent = diffPatch;
|
|
783
|
+
fileSha = results === null || results === void 0 ? void 0 : results.sha;
|
|
784
|
+
}
|
|
785
|
+
_context.next = 29;
|
|
786
|
+
return delay(100);
|
|
787
|
+
case 29:
|
|
788
|
+
_context.next = 31;
|
|
789
|
+
return uploadFunction(userEditBranchName, _saveContent, fileSha);
|
|
790
|
+
case 31:
|
|
791
|
+
success = _context.sent;
|
|
792
|
+
// push change to server
|
|
793
|
+
if (!success) {
|
|
794
|
+
error = 'saving changed scripture failed on second attempt';
|
|
795
|
+
} else {
|
|
796
|
+
console.log('saveChangesToCloud() - save successful on second attempt');
|
|
797
|
+
}
|
|
798
|
+
case 33:
|
|
799
|
+
if (!(!error && success)) {
|
|
800
|
+
_context.next = 35;
|
|
801
|
+
break;
|
|
802
|
+
}
|
|
803
|
+
return _context.abrupt("return", _saveSuccesful());
|
|
804
|
+
case 35:
|
|
805
|
+
console.error("saveChangesToCloud() - ".concat(error || 'unknown save error'));
|
|
806
|
+
setCardsSaving(function (prevCardsSaving) {
|
|
807
|
+
return prevCardsSaving.filter(function (cardId) {
|
|
808
|
+
return cardId !== cardResourceId;
|
|
809
|
+
});
|
|
810
|
+
});
|
|
811
|
+
setState({
|
|
812
|
+
startSave: false
|
|
813
|
+
});
|
|
814
|
+
return _context.abrupt("return", false);
|
|
815
|
+
case 39:
|
|
749
816
|
case "end":
|
|
750
817
|
return _context.stop();
|
|
751
818
|
}
|
|
@@ -813,12 +880,12 @@ export default function ScriptureCard(_ref2) {
|
|
|
813
880
|
}
|
|
814
881
|
function _getReadyForSave() {
|
|
815
882
|
_getReadyForSave = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee2() {
|
|
816
|
-
var createEditBranch, branch, unsavedCardIndices,
|
|
883
|
+
var createEditBranch, branch, unsavedCardIndices, bibleUsfmInitial, bibleUsfmNew, mergeFail, _cardNum, _iterator2, _step2, cardIndex, _unsavedChangesList$_, getChanges, _state, newUsfm, _getChanges, _ref5, updatedVerseObjects, _saveDiffPatch, _saveFullBibleContent, _saveContent, newBookJson, _iterator3, _step3, _cardIndex, _cardNum2, _unsavedChangesList$_2, _getChanges2, _state2, _newUsfm, _getChanges3, newVerseText, _ref6, _updatedVerseObjects, targetVerseObjects_, _AlignmentHelpers$upd, targetVerseObjects, _scriptureConfig$reso11, filename, diffPatch;
|
|
817
884
|
return _regeneratorRuntime().wrap(function _callee2$(_context2) {
|
|
818
885
|
while (1) switch (_context2.prev = _context2.next) {
|
|
819
886
|
case 0:
|
|
820
887
|
if (!saveClicked) {
|
|
821
|
-
_context2.next =
|
|
888
|
+
_context2.next = 74;
|
|
822
889
|
break;
|
|
823
890
|
}
|
|
824
891
|
createEditBranch = !_usingUserBranch;
|
|
@@ -872,13 +939,13 @@ export default function ScriptureCard(_ref2) {
|
|
|
872
939
|
console.log("saveChangesToCloud - getting verse changes");
|
|
873
940
|
unsavedCardIndices = Object.keys(unsavedChangesList);
|
|
874
941
|
if (!(unsavedCardIndices !== null && unsavedCardIndices !== void 0 && unsavedCardIndices.length)) {
|
|
875
|
-
_context2.next =
|
|
942
|
+
_context2.next = 74;
|
|
876
943
|
break;
|
|
877
944
|
}
|
|
878
|
-
|
|
879
|
-
|
|
945
|
+
bibleUsfmInitial = getCurrentBook(scriptureConfig, bookId); // get original USFM
|
|
946
|
+
bibleUsfmNew = bibleUsfmInitial; // make a copy to edit
|
|
880
947
|
mergeFail = false;
|
|
881
|
-
if (!
|
|
948
|
+
if (!bibleUsfmInitial) {
|
|
882
949
|
_context2.next = 53;
|
|
883
950
|
break;
|
|
884
951
|
}
|
|
@@ -900,15 +967,15 @@ export default function ScriptureCard(_ref2) {
|
|
|
900
967
|
}
|
|
901
968
|
newUsfm = void 0;
|
|
902
969
|
_getChanges = getChanges(_state), _ref5 = _getChanges.ref, updatedVerseObjects = _getChanges.updatedVerseObjects;
|
|
903
|
-
if (updatedVerseObjects &&
|
|
970
|
+
if (updatedVerseObjects && bibleUsfmNew) {
|
|
904
971
|
// just replace verse
|
|
905
|
-
newUsfm = mergeVerseObjectsIntoBibleUsfm(
|
|
972
|
+
newUsfm = mergeVerseObjectsIntoBibleUsfm(bibleUsfmNew, _ref5, updatedVerseObjects, _cardNum);
|
|
906
973
|
}
|
|
907
974
|
if (!newUsfm) {
|
|
908
975
|
_context2.next = 41;
|
|
909
976
|
break;
|
|
910
977
|
}
|
|
911
|
-
|
|
978
|
+
bibleUsfmNew = newUsfm;
|
|
912
979
|
_context2.next = 43;
|
|
913
980
|
break;
|
|
914
981
|
case 41:
|
|
@@ -930,8 +997,10 @@ export default function ScriptureCard(_ref2) {
|
|
|
930
997
|
return _context2.finish(50);
|
|
931
998
|
case 53:
|
|
932
999
|
_saveDiffPatch = false; // if true then we will send up a diffpatch instead of the whole book
|
|
1000
|
+
_saveFullBibleContent = null;
|
|
1001
|
+
_saveContent = bibleUsfmNew;
|
|
933
1002
|
if (!mergeFail) {
|
|
934
|
-
_context2.next =
|
|
1003
|
+
_context2.next = 63;
|
|
935
1004
|
break;
|
|
936
1005
|
}
|
|
937
1006
|
// if we failed to merge, fallback to brute force verse objects to USFM
|
|
@@ -966,20 +1035,20 @@ export default function ScriptureCard(_ref2) {
|
|
|
966
1035
|
} finally {
|
|
967
1036
|
_iterator3.f();
|
|
968
1037
|
}
|
|
969
|
-
|
|
1038
|
+
_saveContent = usfmjs.toUSFM(newBookJson, {
|
|
970
1039
|
forcedNewLines: true
|
|
971
1040
|
});
|
|
972
|
-
_context2.next =
|
|
1041
|
+
_context2.next = 73;
|
|
973
1042
|
break;
|
|
974
|
-
case
|
|
1043
|
+
case 63:
|
|
975
1044
|
// if only changed a few verses, we will just make a diffpatch instead of sending the whole book
|
|
976
1045
|
filename = scriptureConfig === null || scriptureConfig === void 0 || (_scriptureConfig$reso11 = scriptureConfig.resourceState) === null || _scriptureConfig$reso11 === void 0 || (_scriptureConfig$reso11 = _scriptureConfig$reso11.resource) === null || _scriptureConfig$reso11 === void 0 ? void 0 : _scriptureConfig$reso11.name; // Like "57-TIT.usfm"
|
|
977
|
-
if (!(filename &&
|
|
978
|
-
_context2.next =
|
|
1046
|
+
if (!(filename && bibleUsfmNew && bibleUsfmInitial)) {
|
|
1047
|
+
_context2.next = 73;
|
|
979
1048
|
break;
|
|
980
1049
|
}
|
|
981
|
-
if (!(
|
|
982
|
-
_context2.next =
|
|
1050
|
+
if (!(bibleUsfmInitial === bibleUsfmNew)) {
|
|
1051
|
+
_context2.next = 69;
|
|
983
1052
|
break;
|
|
984
1053
|
}
|
|
985
1054
|
// if no data change, then skip save because DCS crashes on an empty patch
|
|
@@ -988,20 +1057,27 @@ export default function ScriptureCard(_ref2) {
|
|
|
988
1057
|
saveClicked: false
|
|
989
1058
|
});
|
|
990
1059
|
return _context2.abrupt("return");
|
|
991
|
-
case
|
|
992
|
-
diffPatch = getPatch(filename,
|
|
993
|
-
bibleUsfm_ = diffPatch; // replace whole book with patch data (much shorter)
|
|
1060
|
+
case 69:
|
|
1061
|
+
diffPatch = getPatch(filename, bibleUsfmInitial, bibleUsfmNew, false);
|
|
994
1062
|
_saveDiffPatch = true;
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
1063
|
+
_saveContent = diffPatch; // replace whole book content with just patch data (much faster uploads)
|
|
1064
|
+
_saveFullBibleContent = {
|
|
1065
|
+
// keep track of patch data in case we need to retry save
|
|
1066
|
+
filename: filename,
|
|
1067
|
+
initial: bibleUsfmInitial,
|
|
1068
|
+
"new": bibleUsfmNew
|
|
1069
|
+
};
|
|
1070
|
+
case 73:
|
|
1071
|
+
if (bibleUsfmNew) {
|
|
1072
|
+
console.log("saveChangesToCloud() - saving new USFM: ".concat(bibleUsfmNew.substring(0, 100), "..."));
|
|
998
1073
|
setCardsSaving(function (prevCardsSaving) {
|
|
999
1074
|
return [].concat(_toConsumableArray(prevCardsSaving), [cardResourceId]);
|
|
1000
1075
|
});
|
|
1001
1076
|
setState({
|
|
1002
|
-
saveContent:
|
|
1077
|
+
saveContent: _saveContent,
|
|
1003
1078
|
saveClicked: false,
|
|
1004
1079
|
saveDiffPatch: _saveDiffPatch,
|
|
1080
|
+
saveFullBibleContent: _saveFullBibleContent,
|
|
1005
1081
|
startSave: true
|
|
1006
1082
|
});
|
|
1007
1083
|
} else {
|
|
@@ -1011,7 +1087,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1011
1087
|
saveClicked: false
|
|
1012
1088
|
});
|
|
1013
1089
|
}
|
|
1014
|
-
case
|
|
1090
|
+
case 74:
|
|
1015
1091
|
case "end":
|
|
1016
1092
|
return _context2.stop();
|
|
1017
1093
|
}
|
|
@@ -1432,4 +1508,4 @@ ScriptureCard.propTypes = {
|
|
|
1432
1508
|
/** use method for using local storage specific for user */
|
|
1433
1509
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1434
1510
|
};
|
|
1435
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiX2NyZWF0ZUZvck9mSXRlcmF0b3JIZWxwZXIiLCJhbGxvd0FycmF5TGlrZSIsIml0IiwiQXJyYXkiLCJpc0FycmF5IiwiX3Vuc3VwcG9ydGVkSXRlcmFibGVUb0FycmF5IiwiRiIsIl9lIiwibm9ybWFsQ29tcGxldGlvbiIsImRpZEVyciIsImVyciIsInN0ZXAiLCJfZTIiLCJhc3luY0dlbmVyYXRvclN0ZXAiLCJnZW4iLCJyZWplY3QiLCJfbmV4dCIsIl90aHJvdyIsImtleSIsImluZm8iLCJlcnJvciIsIl9hc3luY1RvR2VuZXJhdG9yIiwiZm4iLCJzZWxmIiwiYXJncyIsImFyZ3VtZW50cyIsImFwcGx5IiwidW5kZWZpbmVkIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZml4T2NjdXJyZW5jZSIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsImRlbGF5IiwiYXJlTWFwc1RoZVNhbWUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIlZlcnNlU2VsZWN0b3JQb3B1cCIsImdldFBhdGNoIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiY29tcGFyZU9iamVjdCIsInZlcnNlUmVmIiwiX3ZlcnNlRGF0YSR2ZXJzZU9iamVjIiwiX3JlZiIsImNoYXB0ZXIiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsIkpTT04iLCJzdHJpbmdpZnkiLCJhcmVWZXJzZXNTYW1lIiwidmVyc2VzRm9yUmVmMSIsInZlcnNlc0ZvclJlZjIiLCJhcmVTYW1lIiwidmVyc2UxIiwidmVyc2UyIiwiZ2V0Q3VycmVudEJvb2siLCJzY3JpcHR1cmVDb25maWciLCJib29rSWQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28yIiwiX2Jvb2tOYW1lJHRvTG93ZXJDYXNlIiwibGF0ZXN0QmlibGUiLCJyZXNvdXJjZVN0YXRlIiwicmVzb3VyY2UiLCJwcm9qZWN0SWQiLCJmaWxlbmFtZSIsImlzQm9va1ZhbGlkIiwiYm9va05hbWUiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiY29uc29sZSIsIndhcm4iLCJjb25jYXQiLCJiaWJsZVVzZm0iLCJTY3JpcHR1cmVDYXJkIiwiX3JlZjIiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28zIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNCIsIl9zY3JpcHR1cmVDb25maWckcmVzbzUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc282IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNyIsIl9hdXRoZW50aWNhdGlvbiR0b2tlbiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzkiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMCIsIl9odHRwQ29uZmlnIiwiX2h0dHBDb25maWcyIiwiX2F1dGhlbnRpY2F0aW9uJHVzZXIiLCJfdmVyc2VzRm9yUmVmMyIsIl92ZXJzZXNGb3JSZWY0IiwiYXBwUmVmIiwiYXV0aGVudGljYXRpb24iLCJib29rSW5kZXgiLCJjYXJkTnVtIiwiY2xhc3NlcyIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExhbmd1YWdlIiwiZ2V0TGV4aWNvbkRhdGEiLCJncmVla1JlcG9VcmwiLCJoZWJyZXdSZXBvVXJsIiwiaHR0cENvbmZpZyIsImlkIiwiaXNOVCIsImxvZ2dlZEluVXNlciIsIm9uTWluaW1pemUiLCJvblJlc291cmNlRXJyb3IiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImNoZWNrRm9yRWRpdEJyYW5jaCIsImN1cnJlbnRSZWZlcmVuY2UiLCJlZGl0QnJhbmNoUmVhZHkiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJsYXN0U2VsZWN0ZWRRdW90ZSIsInJlYWR5Rm9yRmV0Y2giLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2F2ZURpZmZQYXRjaCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzaG93QWxpZ25tZW50UG9wdXAiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0FsaWdubWVudFN0YXR1cyIsInZlcnNlc0ZvclJlZiIsInZlcnNlT2JqZWN0c01hcCIsInZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJfUmVhY3QkdXNlU3RhdGUyIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJfdXNlVXNlckxvY2FsU3RvcmFnZSIsIl91c2VVc2VyTG9jYWxTdG9yYWdlMiIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsIm5vQ2FjaGUiLCJfdXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRVcmxFcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoZWRSZXNvdXJjZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNpbmdPcmlnaW5hbEJpYmxlIiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsIl91c2VVc2VyQnJhbmNoIiwiY2FyZElkIiwiX3VzZVVzZXJCcmFuY2gkc3RhdGUiLCJicmFuY2hEZXRlcm1pbmVkIiwidXNlckVkaXRCcmFuY2hOYW1lIiwiX3VzaW5nVXNlckJyYW5jaCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsIl91c2VVc2VyQnJhbmNoJGFjdGlvbiIsImFjdGlvbnMiLCJzdGFydEVkaXRCcmFuY2giLCJzdGFydEVkaXQiLCJmaW5pc2hFZGl0IiwiX3VzZUJyYW5jaE1lcmdlciIsInVzZXJCcmFuY2giLCJ0b2tlbmlkIiwidG9rZW4iLCJzaGExIiwiX3VzZUJyYW5jaE1lcmdlciRzdGF0IiwibWVyZ2VUb01hc3RlciIsIm1lcmdlU3RhdHVzIiwibWVyZ2VGcm9tTWFzdGVyIiwidXBkYXRlU3RhdHVzIiwidXBkYXRlQnV0dG9uUHJvcHMiLCJpc1NhdmluZyIsIm9uVXBkYXRlIiwicmVsb2FkUmVzb3VyY2UiLCJjYWxsVXBkYXRlVXNlckJyYW5jaCIsImlzRXJyb3JEaWFsb2dPcGVuIiwib25DbG9zZUVycm9yRGlhbG9nIiwiaXNVcGRhdGVMb2FkaW5nIiwiaXNMb2FkaW5nIiwiZGlhbG9nTWVzc2FnZSIsImRpYWxvZ1RpdGxlIiwiZGlhbG9nTGluayIsImRpYWxvZ0xpbmtUb29sdGlwIiwib25NZXJnZSIsImxvZyIsIl91c2VNYXN0ZXJNZXJnZVByb3BzIiwiaXNNZXJnZUxvYWRpbmciLCJjYWxsTWVyZ2VVc2VyQnJhbmNoIiwidXNlRWZmZWN0IiwicHJldkNhcmRzTG9hZGluZyIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzgiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJjcmVhdGVFbGVtZW50IiwiZXJyb3JNZXNzYWdlIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiX3JlZmVyZW5jZSIsImlzSGVicmV3IiwiZm9udEZhY3RvciIsInNjYWxlZEZvbnRTaXplIiwiaXRlbXMiLCJfdXNlQ2FyZFN0YXRlIiwiX3VzZUNhcmRTdGF0ZSRzdGF0ZSIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3IiwiX3VzZUNhcmRTdGF0ZSRhY3Rpb25zIiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJfc2F2ZUVkaXQiLCJfcmVmNCIsIl9jYWxsZWUiLCJzYXZlRnVuY3Rpb24iLCJfY2FsbGVlJCIsIl9jb250ZXh0Iiwic3VjY2VzcyIsInByZXZDYXJkc1NhdmluZyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsIl9pdGVyYXRvciIsIl9zdGVwIiwiY2FyZEluZGV4IiwibWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsIm5ld1VzZm0iLCJjaGFwdGVyQ2h1bmtzIiwic3BsaXQiLCJjaGFwdGVySW5kZXgiLCJjdXJyZW50Q2hhcHRlciIsInZlcnNlQ2h1bmtzIiwidmVyc2VJbmRleCIsImZyb250TWF0dGVyIiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwicHJlZml4TGVuIiwiaW5kZXhPZiIsInZlcnNlTnVtTGVuIiwibmV3Q2hhcHRlciIsImpvaW4iLCJnZXRSZWFkeUZvclNhdmUiLCJfZ2V0UmVhZHlGb3JTYXZlIiwiX2NhbGxlZTIiLCJjcmVhdGVFZGl0QnJhbmNoIiwiYmlibGVVc2ZtXyIsIm1lcmdlRmFpbCIsIl9jYXJkTnVtIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXyIsIl9zdGF0ZSIsIl9nZXRDaGFuZ2VzIiwiX3JlZjUiLCJfc2F2ZURpZmZQYXRjaCIsIm5ld0Jvb2tKc29uIiwiX2l0ZXJhdG9yMyIsIl9zdGVwMyIsIl9jYXJkSW5kZXgiLCJfY2FyZE51bTIiLCJfdW5zYXZlZENoYW5nZXNMaXN0JF8yIiwiX2dldENoYW5nZXMyIiwiX3N0YXRlMiIsIl9uZXdVc2ZtIiwiX2dldENoYW5nZXMzIiwibmV3VmVyc2VUZXh0IiwiX3JlZjYiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc28xMSIsImRpZmZQYXRjaCIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInBhcnNlSW50IiwidDAiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfcmVmNyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMyIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJfdmVyc2UiLCJ2ZXJzZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidmVyc2VJdGVtIiwidm8iLCJfYm9va1ZlcnNlT2JqZWN0JF9jaGEiLCJzZXQiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUyIiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwid29yZHMiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjIiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJvbkFsaWdubWVudEZpbmlzaCIsInNhdmluZyIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJfcmVmMTAiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwiY29sb3IiLCJvbkNsaWNrIiwiY3Vyc29yIiwiRnJhZ21lbnQiLCJvcGVuIiwib25DbG9zZSIsImxpbmsiLCJsaW5rVG9vbHRpcCIsIm9uU2VsZWN0aW9ucyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IGJvb2tJZCA9IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjdXJyZW50UmVmZXJlbmNlLFxuICAgIGVkaXRCcmFuY2hSZWFkeSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCByZWZlcmVuY2VfID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UgfHwgbnVsbFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXG4gICAgICB1cGRhdGVTdGF0dXM6IG1lcmdlRnJvbU1hc3RlcixcbiAgICB9LFxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxuXG4gIGNvbnN0IHVwZGF0ZUJ1dHRvblByb3BzID0gdXNlQ29udGVudFVwZGF0ZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvblVwZGF0ZTogKCkgPT4ge1xuICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2UoKSlcbiAgICB9LFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICBpc0Vycm9yRGlhbG9nT3BlbixcbiAgICBvbkNsb3NlRXJyb3JEaWFsb2csXG4gICAgaXNMb2FkaW5nOiBpc1VwZGF0ZUxvYWRpbmcsXG4gICAgZGlhbG9nTWVzc2FnZSxcbiAgICBkaWFsb2dUaXRsZSxcbiAgICBkaWFsb2dMaW5rLFxuICAgIGRpYWxvZ0xpbmtUb29sdGlwLFxuICB9ID0gdXBkYXRlQnV0dG9uUHJvcHNcblxuICBjb25zdCBvbk1lcmdlID0gKCkgPT4ge1xuICAgIGZpbmlzaEVkaXQoKVxuICAgIGNvbnNvbGUubG9nKGBvbk1lcmdlKCkgc3dpdGNoaW5nIGJhY2sgdG8gbWFzdGVyIGFmdGVyIG1lcmdlIGFwcFJlZjpgLCBhcHBSZWYpXG4gICAgc2V0U3RhdGUoe1xuICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICByZWY6IGFwcFJlZixcbiAgICB9KVxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSwgLy8gdHJpZ2dlciByZWNoZWNrIG9mIHVzZXIgYnJhbmNoIHdoaWNoIHdpbGwgc3dpdGNoIHRoZSBicmFuY2ggYmFjayB0byBtYXN0ZXJcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBjb25zdCB7IGlzTG9hZGluZzogaXNNZXJnZUxvYWRpbmcsIGNhbGxNZXJnZVVzZXJCcmFuY2ggfSA9IHVzZU1hc3Rlck1lcmdlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uTWVyZ2UsXG4gIH0pXG5cbiAgLy8gU2luY2Ugb3JpZ2luYWwgdGV4dCAoR3JlZWsvSGVicmV3KSBzaG91bGQgbm90IGJlIGVkaXRlZCwgZG8gbm90IGluY2x1ZGVcbiAgLy8gdGhlbSBpbiBtZXJnZSBzdGF0ZSBzaW5jZSB1c2VyIHdpbGwgbm90IG1lcmdlL3B1c2ggY2hhbmdlcy5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY2FyZFJlc291cmNlSWQgJiYgIXVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgdXBkYXRlTWVyZ2VTdGF0ZSAmJiB1cGRhdGVNZXJnZVN0YXRlKFxuICAgICAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLFxuICAgICAgICBtZXJnZUZyb21NYXN0ZXIsXG4gICAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgICAgICBjYWxsTWVyZ2VVc2VyQnJhbmNoLFxuICAgICAgKVxuICAgIH1cbiAgfSxbY2FyZFJlc291cmNlSWQsIHNjcmlwdHVyZUNvbmZpZy50aXRsZSwgbWVyZ2VGcm9tTWFzdGVyLCBtZXJnZVRvTWFzdGVyXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc1VwZGF0ZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNVcGRhdGVMb2FkaW5nXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc01lcmdlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBwcmV2Q2FyZHNMb2FkaW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgfVxuICB9LCBbaXNNZXJnZUxvYWRpbmddKVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIGlmICghY2FuVXNlRWRpdEJyYW5jaCAmJiAhcmVhZHlGb3JGZXRjaCkgeyAvLyBpZiBiaWJsZSBub3QgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCBtYWtlIHN1cmUgaXQncyByZWFkeVxuICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogdHJ1ZSB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBib29rIGNoYW5nZWRgLCB7IGJvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQgfSlcblxuICAgIGlmIChjYW5Vc2VFZGl0QnJhbmNoKSB7IC8vIGlmIGJpYmxlIGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgcmVmcmVzaCBpdFxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiBmYWxzZSwgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxIH0pXG4gICAgfVxuICB9LCBbYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwocmVmZXJlbmNlLCBjdXJyZW50UmVmZXJlbmNlKSkge1xuICAgICAgLy8gY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgcmVmZXJlbmNlIGNoYW5nZWRgLCByZWZlcmVuY2UpXG4gICAgICBzZXRTdGF0ZSh7IGN1cnJlbnRSZWZlcmVuY2U6IHJlZmVyZW5jZSB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHNhdmVGdW5jdGlvbiA9IG9uU2F2ZUVkaXRQYXRjaCAvLyBpZiB3ZSBhcmUgc2VuZGluZyB1cCBhIGRpZmZwYXRjaCwgd2Ugd2lsbCB1c2UgdGhpcyBtZXRob2RcbiAgICAgIH1cbiAgICAgIGF3YWl0IHNhdmVGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgIGlmIChzdWNjZXNzKSB7XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzY3JpcHR1cmUgZWRpdHMgc3VjY2Vzc2ApXG4gICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgICAgIH0pXG4gICAgICAgICAgZGVsYXkoMTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICAgICAgfSlcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGxldCB2ZXJzZUNodW5rcyA9IGN1cnJlbnRDaGFwdGVyLnNwbGl0KCdcXFxcdiAnKVxuICAgICAgY29uc3QgdmVyc2VJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8udmVyc2UsIHZlcnNlQ2h1bmtzKVxuICAgICAgY29uc3QgZnJvbnRNYXR0ZXIgPSByZWY/LnZlcnNlID09PSAnZnJvbnQnXG5cbiAgICAgIGlmIChmcm9udE1hdHRlciB8fCB2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIG5ldyBVU0ZNIGZvciBjYXJkICR7Y2FyZE51bX0sIHZlcnNlICR7cmVmPy52ZXJzZX06fSAtICR7bmV3VmVyc2VVc2ZtLnN1YnN0cmluZygwLCAxMDApfWApXG4gICAgICAgIGlmIChmcm9udE1hdHRlcikgeyAvLyBmcm9udCBtYXR0ZXIgZ29lcyBiZWZvcmUgZmlyc3QgdmVyc2VcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzWzBdXG4gICAgICAgICAgY29uc3QgcHJlZml4TGVuID0gb2xkVmVyc2UuaW5kZXhPZignXFxuJykgLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIGZyb250IG1hdHRlciB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbMF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgcHJlZml4TGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgICAgY29uc3QgdmVyc2VOdW1MZW4gPSAocmVmPy52ZXJzZSArICcnKS5sZW5ndGggLy8gY2hhcmFjdGVycyBiZWZvcmUgdGhlIHZlcnNlIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gc2NyaXB0dXJlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBhc3luYyBmdW5jdGlvbiBnZXRSZWFkeUZvclNhdmUoKSB7XG4gICAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgICAgbGV0IGNyZWF0ZUVkaXRCcmFuY2ggPSAhX3VzaW5nVXNlckJyYW5jaFxuXG4gICAgICAgIGlmICghY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBhbHJlYWR5IHVzaW5nIHRoZSB1c2VyIGJyYW5jaFxuICAgICAgICAgIGlmICh3b3JraW5nUmVzb3VyY2VCcmFuY2ggIT09IHVzZXJFZGl0QnJhbmNoTmFtZSkge1xuICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzdGF0ZSBjb25mbGljdCAtIHNob3VsZCBiZSBpbiB1c2VyIGJyYW5jaCAke3VzZXJFZGl0QnJhbmNoTmFtZX0sIGJ1dCBhY3R1YWxseSB1c2luZyAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgY3JlYXRlRWRpdEJyYW5jaCA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGFscmVhZHkgdXNpbmcgZWRpdCBicmFuY2g6ICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIG5vdCB5ZXQgdXNpbmcgdGhlIHVzZXIgYnJhbmNoLCBjcmVhdGUgaXRcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY3JlYXRpbmcgZWRpdCBicmFuY2hgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogZmFsc2UsXG4gICAgICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgICAgICAgIHNoYTogbnVsbCxcbiAgICAgICAgICB9KSAvLyB3ZSB3aWxsIG5lZWQgYSBuZXcgc2hhIGZvciBib29rL2JyYW5jaFxuXG4gICAgICAgICAgY29uc3QgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgICAgIGlmIChicmFuY2gpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBjcmVhdGVkYClcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiB0cnVlLFxuICAgICAgICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICAgICAgICByZWY6IGJyYW5jaCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2gnKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBnZXR0aW5nIHZlcnNlIGNoYW5nZXNgKVxuICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgICAgbGV0IGJpYmxlVXNmbV8gPSBnZXRDdXJyZW50Qm9vayhzY3JpcHR1cmVDb25maWcsIGJvb2tJZCkgLy8gZ2V0IG9yaWdpbmFsIFVTRk1cbiAgICAgICAgICBsZXQgYmlibGVVc2ZtID0gYmlibGVVc2ZtXyAvLyBtYWtlIGEgY29weSB0byBlZGl0XG4gICAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtXykge1xuICAgICAgICAgICAgbGV0IGNhcmROdW0gPSAwXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgc2F2ZURpZmZQYXRjaCA9IGZhbHNlIC8vIGlmIHRydWUgdGhlbiB3ZSB3aWxsIHNlbmQgdXAgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiB0aGUgd2hvbGUgYm9va1xuXG4gICAgICAgICAgaWYgKG1lcmdlRmFpbCkgeyAvLyBpZiB3ZSBmYWlsZWQgdG8gbWVyZ2UsIGZhbGxiYWNrIHRvIGJydXRlIGZvcmNlIHZlcnNlIG9iamVjdHMgdG8gVVNGTVxuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgICB9ID0gZ2V0Q2hhbmdlcyhzdGF0ZSlcblxuICAgICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgICAgaWYgKHJlZikge1xuICAgICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHt2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c199KVxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgICAgfSBlbHNlIHsgLy8gaWYgb25seSBjaGFuZ2VkIGEgZmV3IHZlcnNlcywgd2Ugd2lsbCBqdXN0IG1ha2UgYSBkaWZmcGF0Y2ggaW5zdGVhZCBvZiBzZW5kaW5nIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgICBjb25zdCBmaWxlbmFtZSA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/Lm5hbWUgLy8gTGlrZSBcIjU3LVRJVC51c2ZtXCJcbiAgICAgICAgICAgIGlmIChmaWxlbmFtZSAmJiBiaWJsZVVzZm0gJiYgYmlibGVVc2ZtXykgeyAvLyBtYWtlIHN1cmUgd2UgaGF2ZSBldmVyeXRoaW5nIG5lZWRlZCB0byBtYWtlIGEgcGF0Y2hcbiAgICAgICAgICAgICAgaWYgKGJpYmxlVXNmbV8gPT09IGJpYmxlVXNmbSkgeyAvLyBpZiBubyBkYXRhIGNoYW5nZSwgdGhlbiBza2lwIHNhdmUgYmVjYXVzZSBEQ1MgY3Jhc2hlcyBvbiBhbiBlbXB0eSBwYXRjaFxuICAgICAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSB0aGVyZSBpcyBub3RoaW5nIHRvIHNhdmUsIHNraXBwaW5nYClcbiAgICAgICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKGZpbGVuYW1lLCBiaWJsZVVzZm1fLCBiaWJsZVVzZm0sIGZhbHNlKVxuICAgICAgICAgICAgICBiaWJsZVVzZm1fID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayB3aXRoIHBhdGNoIGRhdGEgKG11Y2ggc2hvcnRlcilcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogYmlibGVVc2ZtXyxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5wcm9qZWN0SWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBjbGVhciBzZXR0aW5ncyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICB9KVxuICB9LCBbX3JlZmVyZW5jZV0pXG5cbiAgY29uc3QgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzID0gKHJlZmVyZW5jZSwgYWxpZ25lZCkgPT4ge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHtcbiAgICAgIC4uLnByZXZTdGF0ZSxcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogeyAuLi5wcmV2U3RhdGUudmVyc2VzQWxpZ25tZW50U3RhdHVzLCBbYCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWBdOiBhbGlnbmVkIH0sXG4gICAgfSkpXG4gIH1cblxuICBsZXQgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7XG4gICAgICBjb25zdCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0gPSBzY3JpcHR1cmVDb25maWcgfHwge31cbiAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkLl92ZXJzZXNGb3JSZWYgY2hhbmdlZGAsIHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSlcbiAgICB9XG4gIH0sIFtfdmVyc2VzRm9yUmVmXSlcblxuICBpZiAoIV92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkgeyAvLyBpZiBlbXB0eSBvZiByZWZlcmVuY2VzLCBjcmVhdGUgc2luZ2xlIGVtcHR5IHJlZmVyZW5jZVxuICAgIF92ZXJzZXNGb3JSZWYgPSBbeyAuLi5yZWZlcmVuY2UgfV1cbiAgfVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSBfdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgW11cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgeyBjaGFwdGVyLCB2ZXJzZSB9ID0gX2N1cnJlbnRWZXJzZURhdGEgfHwge31cbiAgICBjb25zdCBwcm9qZWN0SWQgPSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWQgfHwgcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBwcm9qZWN0SWQsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cz17dXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3QgaGFuZGxlQWxpZ25CdXR0b25DbGljayA9ICgpID0+IHtcbiAgICBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPiAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmtCcmVhazIgaWQ9e2BpbnZhbGlkX2FsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nIzAwMCcgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyXG4gICAgICBzZWxlY3Rpb25zPXtzZWxlY3Rpb25zfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIHZlcnNlT2JqZWN0c01hcD17dmVyc2VPYmplY3RzTWFwfVxuICAgID5cbiAgICAgIDxDYXJkXG4gICAgICAgIGlkPXtgc2NyaXB0dXJlX2NhcmRfJHtjYXJkTnVtfWB9XG4gICAgICAgIHRpdGxlPXtzY3JpcHR1cmVMYWJlbH1cbiAgICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgICAgaXRlbXM9e2l0ZW1zfVxuICAgICAgICBjbGFzc2VzPXtjbGFzc2VzfVxuICAgICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgICBmaWx0ZXJzPXtmaWx0ZXJzfVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgICBzZXRGaWx0ZXJzPXtzZXRGaWx0ZXJzfVxuICAgICAgICBzZXRGb250U2l6ZT17c2V0Rm9udFNpemV9XG4gICAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgICBtYXJrZG93blZpZXc9e21hcmtkb3duVmlld31cbiAgICAgICAgc2V0TWFya2Rvd25WaWV3PXtzZXRNYXJrZG93blZpZXd9XG4gICAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICAgIGhpZGVNYXJrZG93blRvZ2dsZVxuICAgICAgICBvbk1lbnVDbG9zZT17b25NZW51Q2xvc2V9XG4gICAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkLCBzY3JpcHR1cmVUaXRsZSkgOiBudWxsfVxuICAgICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICAgIHNhdmVkPXtzdGFydFNhdmUgfHwgIWhhdmVVbnNhdmVkQ2hhbmdlc31cbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEs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
|
|
1511
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJLRVlfRk9OVF9TSVpFX0JBU0UiLCJsYWJlbCIsInN0eWxlIiwibWFyZ2luVG9wIiwid2lkdGgiLCJjb21wYXJlT2JqZWN0IiwidmVyc2VSZWYiLCJfdmVyc2VEYXRhJHZlcnNlT2JqZWMiLCJfcmVmIiwiY2hhcHRlciIsInZlcnNlIiwidmVyc2VEYXRhIiwidmVyc2VPYmplY3RzIiwiSlNPTiIsInN0cmluZ2lmeSIsImFyZVZlcnNlc1NhbWUiLCJ2ZXJzZXNGb3JSZWYxIiwidmVyc2VzRm9yUmVmMiIsImFyZVNhbWUiLCJ2ZXJzZTEiLCJ2ZXJzZTIiLCJnZXRDdXJyZW50Qm9vayIsInNjcmlwdHVyZUNvbmZpZyIsImJvb2tJZCIsIl9zY3JpcHR1cmVDb25maWckcmVzbyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzIiLCJfYm9va05hbWUkdG9Mb3dlckNhc2UiLCJsYXRlc3RCaWJsZSIsInJlc291cmNlU3RhdGUiLCJyZXNvdXJjZSIsInByb2plY3RJZCIsImZpbGVuYW1lIiwiaXNCb29rVmFsaWQiLCJib29rTmFtZSIsInRvTG93ZXJDYXNlIiwiaW5jbHVkZXMiLCJjb25zb2xlIiwid2FybiIsImNvbmNhdCIsImJpYmxlVXNmbSIsIlNjcmlwdHVyZUNhcmQiLCJfcmVmMiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzMiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc280IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzYiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc283IiwiX2F1dGhlbnRpY2F0aW9uJHRva2VuIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOSIsIl9zY3JpcHR1cmVDb25maWckcmVzbzEwIiwiX2h0dHBDb25maWciLCJfaHR0cENvbmZpZzIiLCJfYXV0aGVudGljYXRpb24kdXNlciIsIl92ZXJzZXNGb3JSZWYzIiwiX3ZlcnNlc0ZvclJlZjQiLCJhcHBSZWYiLCJhdXRoZW50aWNhdGlvbiIsImJvb2tJbmRleCIsImNhcmROdW0iLCJjbGFzc2VzIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwiZ2V0TGFuZ3VhZ2UiLCJnZXRMZXhpY29uRGF0YSIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJodHRwQ29uZmlnIiwiaWQiLCJpc05UIiwibG9nZ2VkSW5Vc2VyIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJfcmVmMiRyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJyZXNvdXJjZUxpbmsiLCJzZWxlY3RlZFF1b3RlIiwic2VydmVyIiwic2V0Q2FyZHNMb2FkaW5nTWVyZ2UiLCJzZXRDYXJkc0xvYWRpbmdVcGRhdGUiLCJzZXRDYXJkc1NhdmluZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidHJhbnNsYXRlIiwidGl0bGUiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwidXBkYXRlTWVyZ2VTdGF0ZSIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsImxhc3RTZWxlY3RlZFF1b3RlIiwicmVhZHlGb3JGZXRjaCIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzYXZlRGlmZlBhdGNoIiwic2F2ZUZ1bGxCaWJsZUNvbnRlbnQiLCJzZWxlY3Rpb25zIiwiTWFwIiwic2hvd0FsaWdubWVudFBvcHVwIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ2ZXJzZXNGb3JSZWYiLCJ2ZXJzZU9iamVjdHNNYXAiLCJ2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UiLCJfdXNlVXNlckxvY2FsU3RvcmFnZTIiLCJmb250U2l6ZSIsInNldEZvbnRTaXplIiwiaXNOVF8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2FjaGUiLCJtYXhBZ2UiLCJub0NhY2hlIiwiX3VzZVNjcmlwdHVyZVNldHRpbmdzIiwic2V0VXJsRXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaGVkUmVzb3VyY2UiLCJyZXBvIiwicmVmZXJlbmNlXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsInVwZGF0ZUJ1dHRvblByb3BzIiwiaXNTYXZpbmciLCJvblVwZGF0ZSIsInJlbG9hZFJlc291cmNlIiwiY2FsbFVwZGF0ZVVzZXJCcmFuY2giLCJpc0Vycm9yRGlhbG9nT3BlbiIsIm9uQ2xvc2VFcnJvckRpYWxvZyIsImlzVXBkYXRlTG9hZGluZyIsImlzTG9hZGluZyIsImRpYWxvZ01lc3NhZ2UiLCJkaWFsb2dUaXRsZSIsImRpYWxvZ0xpbmsiLCJkaWFsb2dMaW5rVG9vbHRpcCIsIm9uTWVyZ2UiLCJsb2ciLCJfdXNlTWFzdGVyTWVyZ2VQcm9wcyIsImlzTWVyZ2VMb2FkaW5nIiwiY2FsbE1lcmdlVXNlckJyYW5jaCIsInVzZUVmZmVjdCIsInByZXZDYXJkc0xvYWRpbmciLCJ3b3JraW5nUmVmIiwic2NyaXB0dXJlVGl0bGUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc284IiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwiY3JlYXRlRWxlbWVudCIsImVycm9yTWVzc2FnZSIsIm9uTWVudUNsb3NlIiwibGFuZ3VhZ2VJZF8iLCJsYW5ndWFnZSIsImRpcmVjdGlvbiIsIl9yZWZlcmVuY2UiLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiX3VzZUNhcmRTdGF0ZSIsIl91c2VDYXJkU3RhdGUkc3RhdGUiLCJoZWFkZXJzIiwiZmlsdGVycyIsIml0ZW1JbmRleCIsIm1hcmtkb3duVmlldyIsIl91c2VDYXJkU3RhdGUkYWN0aW9ucyIsInNldEZpbHRlcnMiLCJzZXRJdGVtSW5kZXgiLCJzZXRNYXJrZG93blZpZXciLCJyZWZTdHlsZSIsInVzZU1lbW8iLCJmb250RmFtaWx5IiwiTWF0aCIsInJvdW5kIiwiY29udGVudFN0eWxlIiwic2NyaXB0dXJlTGFiZWwiLCJkaXNhYmxlV29yZFBvcG92ZXJfIiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiX3JlZjMiLCJfcmVmMyRnZXRDaGFuZ2VzIiwiZ2V0Q2hhbmdlcyIsIl9yZWYzJGNsZWFyQ2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl9yZWYzJHN0YXRlIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsInN1YnN0cmluZyIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJfc2NyaXB0dXJlQ29uZmlnJHJlZmUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJzaGEiLCJfdXNlRWRpdCIsImNvbnRlbnQiLCJjb25maWciLCJkb250Q3JlYXRlQnJhbmNoIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJlbWFpbCIsInVzZXIiLCJicmFuY2giLCJzYXZlRXJyb3IiLCJpc1NhdmVFcnJvciIsImlzRXJyb3IiLCJvblNhdmVFZGl0Iiwib25TYXZlRWRpdFBhdGNoIiwiX3NhdmVTdWNjZXNmdWwiLCJwcmV2Q2FyZHNTYXZpbmciLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImNhcmRJbmRleCIsIl9zYXZlRWRpdCIsIl9yZWY0IiwiX2NhbGxlZSIsInVwbG9hZEZ1bmN0aW9uIiwic3VjY2VzcyIsInJlc3VsdHMiLCJfc2F2ZUNvbnRlbnQiLCJmaWxlU2hhIiwic2F2ZWRCaWJsZVVzZm0iLCJlZGl0ZWRCaWJsZVVzZm0iLCJ1cFRvRGF0ZSIsImRpZmZQYXRjaCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwiZnJvbnRNYXR0ZXIiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJwcmVmaXhMZW4iLCJpbmRleE9mIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlYWR5Rm9yU2F2ZSIsIl9nZXRSZWFkeUZvclNhdmUiLCJfY2FsbGVlMiIsImNyZWF0ZUVkaXRCcmFuY2giLCJiaWJsZVVzZm1Jbml0aWFsIiwiYmlibGVVc2ZtTmV3IiwibWVyZ2VGYWlsIiwiX2NhcmROdW0iLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfIiwiX3N0YXRlIiwiX2dldENoYW5nZXMiLCJfcmVmNSIsIl9zYXZlRGlmZlBhdGNoIiwiX3NhdmVGdWxsQmlibGVDb250ZW50IiwibmV3Qm9va0pzb24iLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2NhcmRJbmRleCIsIl9jYXJkTnVtMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXzIiLCJfZ2V0Q2hhbmdlczIiLCJfc3RhdGUyIiwiX25ld1VzZm0iLCJfZ2V0Q2hhbmdlczMiLCJuZXdWZXJzZVRleHQiLCJfcmVmNiIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZCIsInRhcmdldFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzExIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicGFyc2VJbnQiLCJ0MCIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsImluaXRpYWwiLCJfcmVmNyIsIl92ZXJzZXNGb3JSZWYiLCJuZXdTZWxlY3Rpb25zIiwidXBkYXRlU2VsZWN0aW9ucyIsIl9tYXAiLCJvcmlnaW5hbEJvb2tJZCIsImJvb2tWZXJzZU9iamVjdCIsImNoYXB0ZXJzIiwibmV3U2VsZWN0ZWRRdW90ZSIsInF1b3RlIiwiX3NlbGVjdGVkUXVvdGUkcmVmZXJlMyIsIm9yaWdpbmFsVmVyc2VzIiwic3Vic3RpdHV0ZSIsInN0YXJ0VmVyc2UiLCJsYXN0VmVyc2UiLCJfdmVyc2UiLCJ2ZXJzZXMiLCJfaXRlcmF0b3I0IiwiX3N0ZXA0IiwidmVyc2VJdGVtIiwidm8iLCJfYm9va1ZlcnNlT2JqZWN0JF9jaGEiLCJzZXQiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUyIiwic3ViUmVmIiwicXVvdGVNYXRjaGVzIiwiYm9va09iamVjdCIsIm9jY3VycmVuY2UiLCJzaXplIiwid29yZHMiLCJfa2V5IiwibWFwIiwid29yZCIsInRleHQiLCJub3JtYWxpemVTdHJpbmciLCJib29rc05vdFNhbWUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjIiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50IiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJvbkFsaWdubWVudEZpbmlzaCIsInNhdmluZyIsImhhbmRsZUFsaWduQnV0dG9uQ2xpY2siLCJvblJlbmRlclRvb2xiYXIiLCJfcmVmMTAiLCJuZXdJdGVtcyIsImFsbFZlcnNlc0FsaWduZWQiLCJldmVyeSIsImFsaWduU3RhdHVzIiwiYWxpZ25JY29uIiwiYWxpZ25CdXR0b25UZXh0IiwiY29sb3IiLCJvbkNsaWNrIiwiY3Vyc29yIiwiRnJhZ21lbnQiLCJvcGVuIiwib25DbG9zZSIsImxpbmsiLCJsaW5rVG9vbHRpcCIsIm9uU2VsZWN0aW9ucyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBmZXRjaEJpYmxlQm9vayxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcbmltcG9ydCB7IGdldFBhdGNoIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZXMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gSlNPTi5zdHJpbmdpZnkodmVyc2VEYXRhLnZlcnNlT2JqZWN0cykgOiAnJ1xuICByZXR1cm4ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VPYmplY3RzLFxuICB9XG59XG5cbi8qKlxuICogY29tcGFyZSB0d28gdmVyc2UgcmVmcyB0byBzZWUgaWYgdGhleSBhcmUgc3Vic3RhbnRpYWxseSBzaW1pbGFyXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMVxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjJcbiAqL1xuZnVuY3Rpb24gYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYxOiBhbnlbXSwgdmVyc2VzRm9yUmVmMjogYW55W10pIHtcbiAgdmVyc2VzRm9yUmVmMSA9IHZlcnNlc0ZvclJlZjEgfHwgW11cbiAgdmVyc2VzRm9yUmVmMiA9IHZlcnNlc0ZvclJlZjIgfHwgW11cbiAgbGV0IGFyZVNhbWUgPSBmYWxzZVxuXG4gIGlmICh2ZXJzZXNGb3JSZWYxLmxlbmd0aCA9PT0gdmVyc2VzRm9yUmVmMi5sZW5ndGgpIHtcbiAgICBhcmVTYW1lID0gdHJ1ZVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGw9IHZlcnNlc0ZvclJlZjEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB2ZXJzZTEgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjFbaV0pXG4gICAgICBjb25zdCB2ZXJzZTIgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjJbaV0pXG4gICAgICBhcmVTYW1lID0gaXNFcXVhbCh2ZXJzZTEsIHZlcnNlMilcblxuICAgICAgaWYgKCFhcmVTYW1lKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZVNhbWVcbn1cblxuLyoqXG4gKiBnZXQgdGhlIFVTRk0gZm9yIGJvb2tJZCBmcm9tIHNjcmlwdHVyZUNvbmZpZy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRCb29rID0gKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSA9PiB7XG4gIGNvbnN0IGxhdGVzdEJpYmxlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucHJvamVjdElkXG4gIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICBsZXQgaXNCb29rVmFsaWQgPSBmYWxzZVxuICBjb25zdCBib29rTmFtZSA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSlcbiAgaXNCb29rVmFsaWQgPSBib29rTmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuICBpZiAoIWlzQm9va1ZhbGlkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIFVTRk0gZmlsZSBpcyAke2ZpbGVuYW1lfWApXG4gIH1cbiAgaWYgKGxhdGVzdEJpYmxlPy50b0xvd2VyQ2FzZSgpICE9PSBib29rSWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBidXQgZmV0Y2hlZCBwcm9qZWN0SWQgaXMgJHtsYXRlc3RCaWJsZX1gKVxuICAgIGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgfVxuICBpZiAoaXNCb29rVmFsaWQpIHtcbiAgICBjb25zdCBiaWJsZVVzZm0gPSBzY3JpcHR1cmVDb25maWc/LmJpYmxlVXNmbTtcbiAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICByZXR1cm4gYmlibGVVc2ZtXG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBCaWJsZSBVU0ZNIG1pc3NpbmdgKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBFeHBlY3RlZCAke2Jvb2tJZH0gYnV0IGdvdCBmaWxlICR7ZmlsZW5hbWV9YClcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGFwcFJlZixcbiAgYXV0aGVudGljYXRpb24sXG4gIGJvb2tJbmRleCxcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBnZXRMYW5ndWFnZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgaHR0cENvbmZpZyxcbiAgaWQsXG4gIGlzTlQsXG4gIGxvZ2dlZEluVXNlcixcbiAgb25NaW5pbWl6ZSxcbiAgb25SZXNvdXJjZUVycm9yLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXJ2ZXIsXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGUsXG4gIHNldENhcmRzU2F2aW5nLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB1cGRhdGVNZXJnZVN0YXRlLFxufSkge1xuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoOiAwLFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlOiBudWxsLFxuICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzYXZlRGlmZlBhdGNoOiBmYWxzZSxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICBzZWxlY3Rpb25zOiBuZXcgTWFwKCksXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgICBvblNhdmVFZGl0UGF0Y2gsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIGVtYWlsOiBhdXRoZW50aWNhdGlvbj8udXNlcj8uZW1haWwsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yICYmICFzdGFydFNhdmUpIHsgLy8gaWYgZXJyb3IgdGhlbiBzaG93IGFmdGVyIHNhdmUgY29tcGxldGVzLCBzaW5jZSB3ZSBtYXkgcmV0cnlcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvciwgc3RhcnRTYXZlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgZnVuY3Rpb24gX3NhdmVTdWNjZXNmdWwoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgIGNvbnN0IHtjbGVhckNoYW5nZXN9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIH0pXG4gICAgICBkZWxheSgxMDApLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICB9KVxuICAgICAgcmV0dXJuIHRydWVcbiAgICB9XG5cbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGxldCB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFBhdGNoIC8vIGlmIHdlIGFyZSBzZW5kaW5nIHVwIGEgZGlmZnBhdGNoLCB3ZSB3aWxsIHVzZSB0aGlzIG1ldGhvZFxuICAgICAgfVxuICAgICAgbGV0IHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUpLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICBsZXQgZXJyb3IgPSBzdWNjZXNzID8gbnVsbCA6ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJ1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHsgLy8gaWYgc2F2ZSBmYWlsZWQsIGF0dGVtcHQgYSByZXRyeVxuICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHJldHJ5aW5nJylcbiAgICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIC8vIGZldGNoIHRoZSBsYXRlc3QgYm9vayBjb250ZW50LCBzbyB3ZSBjYW4gdGVsbCBpZiBsYXRlc3QgY2hhbmdlcyB3ZXJlIHNhdmVkIGFuZCBoYXZlIHRoZSBsYXRlc3QgZmlsZSBzaGFcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGZldGNoQmlibGVCb29rKHNlcnZlciwgaHR0cENvbmZpZywgc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZSwgc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UpXG4gICAgICAgIGVycm9yID0gcmVzdWx0cz8uZXJyb3JcbiAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IHNhdmVDb250ZW50XG4gICAgICAgIGxldCBmaWxlU2hhID0gbnVsbFxuICAgICAgICBjb25zdCBzYXZlZEJpYmxlVXNmbSA9IHJlc3VsdHM/LmJpYmxlVXNmbVxuICAgICAgICBjb25zdCBlZGl0ZWRCaWJsZVVzZm0gPSBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3XG4gICAgICAgIGxldCB1cFRvRGF0ZSA9IHNhdmVkQmlibGVVc2ZtID09PSBlZGl0ZWRCaWJsZVVzZm0gLy8gY2hlY2sgaWYgbmV3IGJpYmxlIGNvbnRlbnQgZGlmZmVycyBmcm9tIGxhdGVzdCBvbiByZXBvXG5cbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgIGlmICh1cFRvRGF0ZSkgeyAvLyBpZiB0aGUgZGF0YSB3ZSBhcmUgdHJ5aW5nIHRvIHNhdmUgbWF0Y2hlcyB3aGF0IGlzIG5vdyBvbiB0aGUgc2VydmVyIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGRhdGEgd2FzIGNvcnJlY3RseSB1cGxvYWRlZCwgc28gbm90aGluZyBtb3JlIHRvIGRvJylcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgICAgICAgIC8vIHJlZ2VuZXJhdGUgdGhlIHBhdGNoIGFnYWluc3QgdGhlIGxhdGVzdCBjb250ZW50XG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKHNhdmVGdWxsQmlibGVDb250ZW50Py5maWxlbmFtZSwgc2F2ZWRCaWJsZVVzZm0sIGVkaXRlZEJpYmxlVXNmbSwgZmFsc2UpXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaFxuICAgICAgICAgICAgICBmaWxlU2hhID0gcmVzdWx0cz8uc2hhXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUsIF9zYXZlQ29udGVudCwgZmlsZVNoYSkgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgZXJyb3IgPSAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCBvbiBzZWNvbmQgYXR0ZW1wdCdcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc3VjY2Vzc2Z1bCBvbiBzZWNvbmQgYXR0ZW1wdCcpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXJyb3IgJiYgc3VjY2VzcykgeyAvLyBpZiBubyBlcnJvciBtZXNzYWdlIGFuZCBzYXZlIHdhcyBhIHN1Y2Nlc3NcbiAgICAgICAgcmV0dXJuIF9zYXZlU3VjY2VzZnVsKCkgLy8gbm90aGluZyB0byBkb1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtICR7ZXJyb3IgfHwgJ3Vua25vd24gc2F2ZSBlcnJvcid9YClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtzdGFydFNhdmU6IGZhbHNlfSlcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGlmICghZWRpdEJyYW5jaFJlYWR5KSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBlZGl0IGJyYW5jaCBub3QgeWV0IGNyZWF0ZWRgKVxuICAgICAgfSBlbHNlIGlmICghc2hhKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBzYXZlIHNoYSBub3QgeWV0IHJlYWR5YClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgX3NhdmVFZGl0KClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgbGV0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG4gICAgICBjb25zdCBmcm9udE1hdHRlciA9IHJlZj8udmVyc2UgPT09ICdmcm9udCdcblxuICAgICAgaWYgKGZyb250TWF0dGVyIHx8IHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gbmV3IFVTRk0gZm9yIGNhcmQgJHtjYXJkTnVtfSwgdmVyc2UgJHtyZWY/LnZlcnNlfTp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgaWYgKGZyb250TWF0dGVyKSB7IC8vIGZyb250IG1hdHRlciBnb2VzIGJlZm9yZSBmaXJzdCB2ZXJzZVxuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbMF1cbiAgICAgICAgICBjb25zdCBwcmVmaXhMZW4gPSBvbGRWZXJzZS5pbmRleE9mKCdcXG4nKSAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZnJvbnQgbWF0dGVyIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1swXSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCBwcmVmaXhMZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aCAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgdmVyc2UgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtSW5pdGlhbCA9IGdldEN1cnJlbnRCb29rKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSAvLyBnZXQgb3JpZ2luYWwgVVNGTVxuICAgICAgICAgIGxldCBiaWJsZVVzZm1OZXcgPSBiaWJsZVVzZm1Jbml0aWFsIC8vIG1ha2UgYSBjb3B5IHRvIGVkaXRcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtTmV3KSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm1OZXcsIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtTmV3ID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzYXZlRGlmZlBhdGNoID0gZmFsc2UgLy8gaWYgdHJ1ZSB0aGVuIHdlIHdpbGwgc2VuZCB1cCBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgbGV0IF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IG51bGxcbiAgICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gYmlibGVVc2ZtTmV3XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgICB9IGVsc2UgeyAvLyBpZiBvbmx5IGNoYW5nZWQgYSBmZXcgdmVyc2VzLCB3ZSB3aWxsIGp1c3QgbWFrZSBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lICYmIGJpYmxlVXNmbU5ldyAmJiBiaWJsZVVzZm1Jbml0aWFsKSB7IC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIG1ha2UgYSBwYXRjaFxuICAgICAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCA9PT0gYmlibGVVc2ZtTmV3KSB7IC8vIGlmIG5vIGRhdGEgY2hhbmdlLCB0aGVuIHNraXAgc2F2ZSBiZWNhdXNlIERDUyBjcmFzaGVzIG9uIGFuIGVtcHR5IHBhdGNoXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2F2ZSwgc2tpcHBpbmdgKVxuICAgICAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goZmlsZW5hbWUsIGJpYmxlVXNmbUluaXRpYWwsIGJpYmxlVXNmbU5ldywgZmFsc2UpXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2ggPSB0cnVlXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaCAvLyByZXBsYWNlIHdob2xlIGJvb2sgY29udGVudCB3aXRoIGp1c3QgcGF0Y2ggZGF0YSAobXVjaCBmYXN0ZXIgdXBsb2FkcylcbiAgICAgICAgICAgICAgX3NhdmVGdWxsQmlibGVDb250ZW50ID0geyAgLy8ga2VlcCB0cmFjayBvZiBwYXRjaCBkYXRhIGluIGNhc2Ugd2UgbmVlZCB0byByZXRyeSBzYXZlXG4gICAgICAgICAgICAgICAgZmlsZW5hbWUsXG4gICAgICAgICAgICAgICAgaW5pdGlhbDogYmlibGVVc2ZtSW5pdGlhbCxcbiAgICAgICAgICAgICAgICBuZXc6IGJpYmxlVXNmbU5ldyxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1OZXcpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBuZXcgVVNGTTogJHtiaWJsZVVzZm1OZXcuc3Vic3RyaW5nKDAsIDEwMCl9Li4uYClcbiAgICAgICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIHNhdmVDb250ZW50OiBfc2F2ZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCxcbiAgICAgICAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IF9zYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICAgICAgICAgICAgc3RhcnRTYXZlOiB0cnVlLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YTogaW5jb3JyZWN0IGJvb2sgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWApXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGEgJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGdldFJlYWR5Rm9yU2F2ZSgpXG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCB7IGNoYXB0ZXIgfSA9IF9yZWZlcmVuY2UgfHwge31cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgIGxldCBuZXdTZWxlY3Rpb25zID0gbmV3IE1hcCgpXG4gICAgbGV0IHVwZGF0ZVNlbGVjdGlvbnMgPSBmYWxzZVxuICAgIGNvbnN0IF9tYXAgPSBuZXdTZWxlY3Rpb25zXG4gICAgY29uc3Qgb3JpZ2luYWxCb29rSWQgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5ib29rSWRcbiAgICBjb25zdCBib29rVmVyc2VPYmplY3QgPSBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5jaGFwdGVyc1xuICAgIGxldCBuZXdTZWxlY3RlZFF1b3RlID0gbnVsbFxuXG4gICAgLy8gaWYgd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQgdG8gY2FsY3VsYXRlIHNlbGVjdGlvbnNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdICYmIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgICBzZWxlY3RlZFF1b3RlPy5xdW90ZVxuICAgICkge1xuICAgICAgLy8gaWYgcXVvdGUgaXMgZGlmZmVyZW50IHRoYW4gbGFzdFxuICAgICAgaWYgKCFpc0VxdWFsKGxhc3RTZWxlY3RlZFF1b3RlLCBzZWxlY3RlZFF1b3RlKSB8fFxuICAgICAgICAhaXNFcXVhbCh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsVmVyc2VzID0ge31cbiAgICAgICAgY29uc3Qgc3Vic3RpdHV0ZSA9IHt9IC8vIGtlZXAgdHJhY2sgb2YgdmVyc2Ugc3Vic3RpdHV0aW9uc1xuICAgICAgICBsZXQgc3RhcnRWZXJzZSA9IF92ZXJzZXNGb3JSZWZbMF0udmVyc2VcblxuICAgICAgICBpZiAodHlwZW9mIHN0YXJ0VmVyc2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgc3RhcnRWZXJzZSA9IHBhcnNlSW50KHN0YXJ0VmVyc2UpXG4gICAgICAgIH1cblxuICAgICAgICBsZXQgbGFzdFZlcnNlID0gc3RhcnRWZXJzZVxuXG4gICAgICAgIGZvciAobGV0IGkgPSAwLCBsID0gX3ZlcnNlc0ZvclJlZi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZVJlZiA9IF92ZXJzZXNGb3JSZWZbaV1cbiAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICBjaGFwdGVyLFxuICAgICAgICAgICAgdmVyc2UsXG4gICAgICAgICAgfSA9IHZlcnNlUmVmXG4gICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgcmVtYXAgdmVyc2VzIGluIHJlZmVyZW5jZSByYW5nZSB0byBhIGxpbmVhciBzZXJpZXMgb2YgdmVyc2VzIHNvIHZlcnNlIHNwYW5zIGRvbid0IGNob2tlIGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZlxuICAgICAgICAgIGxldCBfdmVyc2UgPSBzdGFydFZlcnNlICsgaVxuICAgICAgICAgIGxhc3RWZXJzZSA9IF92ZXJzZVxuICAgICAgICAgIHN1YnN0aXR1dGVbYCR7Y2hhcHRlcn06JHtfdmVyc2V9YF0gPSBgJHtjaGFwdGVyfToke3ZlcnNlfWBcblxuICAgICAgICAgIGlmICghb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0pIHtcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdID0ge31cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgICAgIGlmICgodHlwZW9mIHZlcnNlID09PSAnc3RyaW5nJykgJiYgKHZlcnNlLmluY2x1ZGVzKCctJykpKSB7XG4gICAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICAgIGZvciAoY29uc3QgdmVyc2VJdGVtIG9mIHZlcnNlcykge1xuICAgICAgICAgICAgICBjb25zdCB2byA9IHZlcnNlSXRlbS52ZXJzZURhdGEudmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl1bX3ZlcnNlXSA9IHsgdmVyc2VPYmplY3RzIH1cbiAgICAgICAgICAgIF9tYXAuc2V0KGAke2NoYXB0ZXJ9OiR7dmVyc2V9YCwgdmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIGNyZWF0ZSBuZXcgcmVmZXJlbmNlIHJhbmdlIGZvciBuZXcgbGluZWFyIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IFtjaGFwdGVyXSA9IHNlbGVjdGVkUXVvdGU/LnJlZmVyZW5jZT8uc3BsaXQoJzonKVxuICAgICAgICBsZXQgc3ViUmVmID0gYCR7Y2hhcHRlcn06JHtzdGFydFZlcnNlfWBcblxuICAgICAgICBpZiAobGFzdFZlcnNlICE9IHN0YXJ0VmVyc2UpIHtcbiAgICAgICAgICBzdWJSZWYgKz0gYC0ke2xhc3RWZXJzZX1gXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBxdW90ZU1hdGNoZXMgPSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWYoe1xuICAgICAgICAgIGJvb2tPYmplY3Q6IG9yaWdpbmFsVmVyc2VzLFxuICAgICAgICAgIHJlZjogc3ViUmVmLFxuICAgICAgICAgIHF1b3RlOiBzZWxlY3RlZFF1b3RlPy5xdW90ZSxcbiAgICAgICAgICBvY2N1cnJlbmNlOiBzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGNvbnN0IHNlbGVjdGlvbnMgPSBuZXcgTWFwKClcblxuICAgICAgICBpZiAocXVvdGVNYXRjaGVzPy5zaXplKSB7XG4gICAgICAgICAgcXVvdGVNYXRjaGVzLmZvckVhY2goKHdvcmRzLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IF9rZXkgPSBzdWJzdGl0dXRlW2tleV1cblxuICAgICAgICAgICAgc2VsZWN0aW9ucy5zZXQoX2tleSwgd29yZHMubWFwKHdvcmQgPT4gKFxuICAgICAgICAgICAgICB7IC4uLndvcmQsIHRleHQ6IGNvcmUubm9ybWFsaXplU3RyaW5nKHdvcmQudGV4dCkgfVxuICAgICAgICAgICAgKSkpXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgICBuZXdTZWxlY3Rpb25zID0gc2VsZWN0aW9uc1xuICAgICAgICBuZXdTZWxlY3RlZFF1b3RlID0gc2VsZWN0ZWRRdW90ZVxuICAgICAgICB1cGRhdGVTZWxlY3Rpb25zID0gdHJ1ZVxuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5ld1N0YXRlOiBhbnkgPSB7fVxuXG4gICAgLy8gdXBkYXRlIHN0YXRlcyB0aGF0IGhhdmUgY2hhbmdlZFxuICAgIGlmICghYXJlTWFwc1RoZVNhbWUodmVyc2VPYmplY3RzTWFwLCBfbWFwKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VPYmplY3RzTWFwID0gX21hcFxuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8ucHJvamVjdElkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5wcm9qZWN0SWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2UsIGFsaWduZWQpID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgcHJvamVjdElkID0gY3VycmVudFJlZmVyZW5jZT8ucHJvamVjdElkIHx8IHJlZmVyZW5jZT8ucHJvamVjdElkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgcHJvamVjdElkLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkge1xuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7XG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyMwMDAnIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIEludmFsaWQnXG4gICAgfVxuXG4gICAgaWYgKHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHJlc291cmNlSWQgIT09ICdPUklHSU5BTF9TT1VSQ0UnKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGlkPXtgYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9XG4gICAgICAgICAga2V5PSdjaGVja2luZy1idXR0b24nXG4gICAgICAgICAgb25DbGljaz17aGFuZGxlQWxpZ25CdXR0b25DbGlja31cbiAgICAgICAgICB0aXRsZT17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIGFyaWEtbGFiZWw9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge2FsaWduSWNvbn1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cblxuICAgIC8vIE9ubHkgc2hvdyB0aGUgdXBkYXRlIGZyb20gbWFpbiBidXR0b24gaWYgc2NyaXB0dXJlIGlzIG5vdCBvcmlnaW5hbCB0ZXh0LlxuICAgICF1c2luZ09yaWdpbmFsQmlibGUgJiYgbmV3SXRlbXMucHVzaChcbiAgICAgIDw+XG4gICAgICAgIDxVcGRhdGVCcmFuY2hCdXR0b24gey4uLnVwZGF0ZUJ1dHRvblByb3BzfSBpc0xvYWRpbmc9e2lzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmV9Lz5cbiAgICAgICAgPEVycm9yRGlhbG9nIHRpdGxlPXtkaWFsb2dUaXRsZX0gY29udGVudD17ZGlhbG9nTWVzc2FnZX0gb3Blbj17aXNFcnJvckRpYWxvZ09wZW59IG9uQ2xvc2U9e29uQ2xvc2VFcnJvckRpYWxvZ30gaXNMb2FkaW5nPXsgaXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZSB9IGxpbms9e2RpYWxvZ0xpbmt9IGxpbmtUb29sdGlwPXtkaWFsb2dMaW5rVG9vbHRpcH0gLz5cbiAgICAgIDwvPlxuICAgIClcblxuICAgIHJldHVybiBuZXdJdGVtc1xuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgc2VsZWN0aW9ucz17c2VsZWN0aW9uc31cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIHF1b3RlPXtzZWxlY3RlZFF1b3RlPy5xdW90ZX1cbiAgICAgIG9jY3VycmVuY2U9e2ZpeE9jY3VycmVuY2Uoc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSl9XG4gICAgICB2ZXJzZU9iamVjdHNNYXA9e3ZlcnNlT2JqZWN0c01hcH1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICAgIG9uU2F2ZUVkaXQ9eygpID0+IHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IHRydWUgfSl9XG4gICAgICAgIG9uUmVuZGVyVG9vbGJhcj17b25SZW5kZXJUb29sYmFyfVxuICAgICAgPlxuICAgICAgICA8ZGl2IGlkPVwic2NyaXB0dXJlLXBhbmUtbGlzdFwiPlxuICAgICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvQ2FyZD5cbiAgICAgIDxWZXJzZVNlbGVjdG9yUG9wdXBcbiAgICAgICAgcmVzb3VyY2VJZD17cmVzb3VyY2VJZH1cbiAgICAgICAgb3Blbj17c2hvd0FsaWdubWVudFBvcHVwfVxuICAgICAgICBvbkNsb3NlPXsoKSA9PiBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UgfSl9XG4gICAgICAgIHZlcnNlc0ZvclJlZj17dmVyc2VzRm9yUmVmfVxuICAgICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3ZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgICAgb25WZXJzZVNlbGVjdD17KHZlcnNlKSA9PiBzZXRTdGF0ZSh7XG4gICAgICAgICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2UsXG4gICAgICAgICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICAgICAgfSl9XG4gICAgICAvPlxuICAgIDwvU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVDYXJkLnByb3BUeXBlcyA9IHtcbiAgLyoqIHJlcG8gYnJhbmNoIG9yIHRhZyBzdWNoIGFzIG1hc3RlciAqL1xuICBhcHBSZWY6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpbmRleCBmb3IgY3VycmVudCBib29rIChlLmcuICcwMScgZm9yICdnZW4nKSovXG4gIGJvb2tJbmRleDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHByb2plY3RJZCAoYm9va0lEKSB0byB1c2UgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCBjaGFwdGVyIG51bWJlciAqL1xuICAgIGNoYXB0ZXI6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IHZlcnNlIG51bWJlciAqL1xuICAgIHZlcnNlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKlRoaXMgaXMgY3VycmVudGx5IHNlbGVjdGVkIHF1b3RlICovXG4gIHNlbGVjdGVkUXVvdGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBzZXJ2ZXIgKGUuZy4gJ2h0dHBzOi8vZ2l0LmRvb3I0My5vcmcnKSAqL1xuICBzZXJ2ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBsb2FkaW5nIHN0YXRlICovXG4gIHNldEFyZVJlc291cmNlc0xvYWRpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHNhdmluZyBzdGF0ZSovXG4gIHNldEFyZVJlc291cmNlc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBtZXJnZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgdXBkYXRlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgc2F2aW5nIHN0YXR1cyAqL1xuICBzZXRDYXJkc1NhdmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB0aXRsZSBmb3Igc2NyaXB0dXJlIGNhcmQgKi9cbiAgdGl0bGU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB0aGUgY2FyZCdzIG1lcmdlIHN0YXRlIGluIGFwcCAqL1xuICB1cGRhdGVNZXJnZVN0YXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbn1cbiJdLCJtYXBwaW5ncyI6IjsrQ0FDQSxxSkFBQUEsbUJBQUEsWUFBQUEsb0JBQUEsV0FBQUMsQ0FBQSxTQUFBQyxDQUFBLEVBQUFELENBQUEsT0FBQUUsQ0FBQSxHQUFBQyxNQUFBLENBQUFDLFNBQUEsRUFBQUMsQ0FBQSxHQUFBSCxDQUFBLENBQUFJLGNBQUEsRUFBQUMsQ0FBQSxHQUFBSixNQUFBLENBQUFLLGNBQUEsY0FBQVAsQ0FBQSxFQUFBRCxDQUFB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
|