single-scripture-rcl 3.4.35 → 3.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -1313,7 +1313,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1313
1313
|
var _foundOriginalContent = false;
|
|
1314
1314
|
|
|
1315
1315
|
// check if we have everything we need to get original verses
|
|
1316
|
-
if ((_versesForRef2 = _versesForRef) !== null && _versesForRef2 !== void 0 && _versesForRef2.length && bookVerseObject && bookId === originalBookId && bookVerseObject[chapter] // we need to have data for chapter
|
|
1316
|
+
if ((_versesForRef2 = _versesForRef) !== null && _versesForRef2 !== void 0 && _versesForRef2.length && bookVerseObject && bookId === originalBookId && bookVerseObject !== null && bookVerseObject !== void 0 && bookVerseObject[chapter] // we need to have data for chapter
|
|
1317
1317
|
) {
|
|
1318
1318
|
for (var i = 0, l = _versesForRef.length; i < l; i++) {
|
|
1319
1319
|
var verseRef = _versesForRef[i];
|
|
@@ -1337,7 +1337,7 @@ export default function ScriptureCard(_ref2) {
|
|
|
1337
1337
|
}
|
|
1338
1338
|
} else {
|
|
1339
1339
|
var _bookVerseObject$_cha2;
|
|
1340
|
-
verseObjects = (_bookVerseObject$_cha2 = bookVerseObject[_chapter3][verse]) === null || _bookVerseObject$_cha2 === void 0 ? void 0 : _bookVerseObject$_cha2.verseObjects;
|
|
1340
|
+
verseObjects = (_bookVerseObject$_cha2 = bookVerseObject[_chapter3]) === null || _bookVerseObject$_cha2 === void 0 || (_bookVerseObject$_cha2 = _bookVerseObject$_cha2[verse]) === null || _bookVerseObject$_cha2 === void 0 ? void 0 : _bookVerseObject$_cha2.verseObjects;
|
|
1341
1341
|
}
|
|
1342
1342
|
if (verseObjects) {
|
|
1343
1343
|
verseObjects = cleanupVerseObjects(verseObjects);
|
|
@@ -1507,15 +1507,20 @@ export default function ScriptureCard(_ref2) {
|
|
|
1507
1507
|
return newItems;
|
|
1508
1508
|
};
|
|
1509
1509
|
var selectionBookObjects = originalScriptureBookObjects === null || originalScriptureBookObjects === void 0 ? void 0 : originalScriptureBookObjects.chapters;
|
|
1510
|
+
|
|
1511
|
+
// we only want to check the target alignment if not using original bible
|
|
1512
|
+
var targetVersesForRef = usingOriginalBible ? null : _versesForRef;
|
|
1510
1513
|
return /*#__PURE__*/React.createElement(SelectionsContextProvider, {
|
|
1511
|
-
|
|
1514
|
+
highlightOnlyCompleteQuotes: true,
|
|
1512
1515
|
occurrence: fixOccurrence(selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.occurrence),
|
|
1513
1516
|
onSelections: function onSelections(newSelections) {
|
|
1514
1517
|
// console.log('onSelections', newSelections)
|
|
1515
1518
|
},
|
|
1519
|
+
originalBookObjects: selectionBookObjects || {},
|
|
1516
1520
|
quote: (selectedQuote === null || selectedQuote === void 0 ? void 0 : selectedQuote.quote) || '',
|
|
1517
1521
|
refString: selectionsRefs,
|
|
1518
|
-
selections: selections
|
|
1522
|
+
selections: selections,
|
|
1523
|
+
targetVersesForRef: targetVersesForRef
|
|
1519
1524
|
}, /*#__PURE__*/React.createElement(Card, {
|
|
1520
1525
|
id: "scripture_card_".concat(cardNum),
|
|
1521
1526
|
title: scriptureLabel,
|
|
@@ -1656,4 +1661,4 @@ ScriptureCard.propTypes = {
|
|
|
1656
1661
|
/** use method for using local storage specific for user */
|
|
1657
1662
|
useUserLocalStorage: PropTypes.func.isRequired
|
|
1658
1663
|
};
|
|
1659
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZW1wdHlDb250ZW50IiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjQiLCJfdmVyc2VzRm9yUmVmNSIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJtZXJnZUNoZWNrIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2VfIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJzYXZlSW5Qcm9ncmVzcyIsInVzZVJlZiIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY29udGV4dExpbmVzIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImZvdW5kT3JpZ2luYWxDb250ZW50IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzYXZlRnVsbEJpYmxlQ29udGVudCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzZWxlY3Rpb25zUmVmcyIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsImNoZWNrTWVyZ2VTdGF0dXMiLCJ1c2VFZmZlY3QiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsImxpbmVIZWlnaHQiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJjdXJyZW50IiwiX3NhdmVTdWNjZXNmdWwiLCJwcmV2Q2FyZHNTYXZpbmciLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImNhcmRJbmRleCIsImxvZ0NoYW5nZWQiLCJjb21tZW50IiwiaW5pdGlhbCIsImZpbmFsIiwiZGlmZiIsIl9zYXZlRWRpdCIsIl9yZWY0IiwiX2NhbGxlZSIsInVwbG9hZEZ1bmN0aW9uIiwic3VjY2VzcyIsInJlc3VsdHMiLCJfc2F2ZUNvbnRlbnQiLCJmaWxlU2hhIiwic2F2ZWRCaWJsZVVzZm0iLCJlZGl0ZWRCaWJsZVVzZm0iLCJ1cFRvRGF0ZSIsIm5ld0NvbnRleHRMaW5lcyIsImRpZmZQYXRjaCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwiZnJvbnRNYXR0ZXIiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJwcmVmaXhMZW4iLCJpbmRleE9mIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlYWR5Rm9yU2F2ZSIsIl9nZXRSZWFkeUZvclNhdmUiLCJfY2FsbGVlMiIsImNyZWF0ZUVkaXRCcmFuY2giLCJiaWJsZVVzZm1Jbml0aWFsIiwiYmlibGVVc2ZtTmV3IiwibWVyZ2VGYWlsIiwiX2NhcmROdW0iLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfIiwiX3N0YXRlIiwiX2dldENoYW5nZXMiLCJfcmVmNSIsIl9zYXZlRGlmZlBhdGNoIiwiX3NhdmVGdWxsQmlibGVDb250ZW50IiwibmV3Qm9va0pzb24iLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2NhcmRJbmRleCIsIl9jYXJkTnVtMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXzIiLCJfZ2V0Q2hhbmdlczIiLCJfc3RhdGUyIiwiX25ld1VzZm0iLCJfZ2V0Q2hhbmdlczMiLCJuZXdWZXJzZVRleHQiLCJfcmVmNiIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZCIsInRhcmdldFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzExIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicGFyc2VJbnQiLCJ0MCIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl9yZWY3IiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUzIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJ2ZXJzZUl0ZW0iLCJ2byIsIl9ib29rVmVyc2VPYmplY3QkX2NoYSIsInNldCIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTIiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJ3b3JkcyIsIl9rZXkiLCJtYXAiLCJ3b3JkIiwidGV4dCIsIm5vcm1hbGl6ZVN0cmluZyIsImJvb2tzTm90U2FtZSIsIl92ZXJzZXNGb3JSZWYyIiwiX2ZvdW5kT3JpZ2luYWxDb250ZW50IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9ib29rVmVyc2VPYmplY3QkX2NoYTIiLCJpc1ZlcnNlTm90RW1wdHkiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjMiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsImJvb2tJZF8iLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImRldGVybWluaW5nQnJhbmNoIiwib25BbGlnbm1lbnRGaW5pc2giLCJzYXZpbmciLCJoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrIiwib25SZW5kZXJUb29sYmFyIiwiX3JlZjEwIiwibmV3SXRlbXMiLCJhbGxWZXJzZXNBbGlnbmVkIiwiZXZlcnkiLCJhbGlnblN0YXR1cyIsImFsaWduSWNvbiIsImFsaWduQnV0dG9uVGV4dCIsImNvbG9yIiwib25DbGljayIsImN1cnNvciIsIkZyYWdtZW50Iiwib3BlbiIsIm9uQ2xvc2UiLCJsaW5rIiwibGlua1Rvb2x0aXAiLCJzZWxlY3Rpb25Cb29rT2JqZWN0cyIsIm9uU2VsZWN0aW9ucyIsInJlZlN0cmluZyIsInNldHRpbmdzVGl0bGUiLCJnZXRDdXN0b21Db21wb25lbnQiLCJoaWRlTWFya2Rvd25Ub2dnbGUiLCJlZGl0YWJsZSIsIm9uVmVyc2VTZWxlY3QiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwib2JqZWN0IiwibnVtYmVyIiwiYm9vbCIsImZ1bmMiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImFueSIsInNldEFyZVJlc291cmNlc0xvYWRpbmciLCJzZXRBcmVSZXNvdXJjZXNTYXZpbmciXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TY3JpcHR1cmVDYXJkL1NjcmlwdHVyZUNhcmQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlLCBTZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IEljb25CdXR0b24gfSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgUnhMaW5rMiwgUnhMaW5rQnJlYWsyIH0gZnJvbSAncmVhY3QtaWNvbnMvcngnXG5pbXBvcnQge1xuICBDYXJkLFxuICBFcnJvckRpYWxvZyxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFVwZGF0ZUJyYW5jaEJ1dHRvbixcbiAgdXNlQnJhbmNoTWVyZ2VyLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZUNvbnRlbnRVcGRhdGVQcm9wcyxcbiAgdXNlTWFzdGVyTWVyZ2VQcm9wcyxcbiAgdXNlVXNlckJyYW5jaCxcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIH0gZnJvbSAndXctcXVvdGUtaGVscGVycydcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgaXNFcXVhbCB9IGZyb20gJ0ByZWFjdC1ob29rei9kZWVwLWVxdWFsJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzIH0gZnJvbSAnYmlibGUtcmVmZXJlbmNlLXJhbmdlJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBlbXB0eUNvbnRlbnQsXG4gIGZldGNoQmlibGVCb29rLFxuICBmaXhPY2N1cnJlbmNlLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MsXG4gIGlzT3JpZ2luYWxCaWJsZSxcbn0gZnJvbSAnLi4vLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uLy4uL3V0aWxzL2RlbGF5J1xuaW1wb3J0IHsgYXJlTWFwc1RoZVNhbWUgfSBmcm9tICcuLi8uLi91dGlscy9tYXBzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgVmVyc2VTZWxlY3RvclBvcHVwIH0gZnJvbSAnLi4vVmVyc2VTZWxlY3RvclBvcHVwJ1xuaW1wb3J0IHsgZ2V0UGF0Y2ggfSBmcm9tICcuLi8uLi91dGlscy9maWxlcydcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIFZlcnNlT2JqZWN0c1R5cGUgfSBmcm9tICcuLi8uLi90eXBlcydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbi8qKlxuICogY3JlYXRlIGEgc2hvcnQgY29tcGFyaXNvbiB2ZXJzZSByZWYgb2JqZWN0IHdpdGhvdXQgYWxsIHRoZSB2ZXJzZURhdGFcbiAqIEBwYXJhbSB2ZXJzZVJlZlxuICovXG5mdW5jdGlvbiBjb21wYXJlT2JqZWN0KHZlcnNlUmVmKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHZlcnNlRGF0YSxcbiAgfSA9IHZlcnNlUmVmIHx8IHt9XG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IHZlcnNlRGF0YT8udmVyc2VPYmplY3RzPy5sZW5ndGggPyBKU09OLnN0cmluZ2lmeSh2ZXJzZURhdGEudmVyc2VPYmplY3RzKSA6ICcnXG4gIHJldHVybiB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZU9iamVjdHMsXG4gIH1cbn1cblxuLyoqXG4gKiBjb21wYXJlIHR3byB2ZXJzZSByZWZzIHRvIHNlZSBpZiB0aGV5IGFyZSBzdWJzdGFudGlhbGx5IHNpbWlsYXJcbiAqIEBwYXJhbSB2ZXJzZXNGb3JSZWYxXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMlxuICovXG5mdW5jdGlvbiBhcmVWZXJzZXNTYW1lKHZlcnNlc0ZvclJlZjE6IGFueVtdLCB2ZXJzZXNGb3JSZWYyOiBhbnlbXSkge1xuICB2ZXJzZXNGb3JSZWYxID0gdmVyc2VzRm9yUmVmMSB8fCBbXVxuICB2ZXJzZXNGb3JSZWYyID0gdmVyc2VzRm9yUmVmMiB8fCBbXVxuICBsZXQgYXJlU2FtZSA9IGZhbHNlXG5cbiAgaWYgKHZlcnNlc0ZvclJlZjEubGVuZ3RoID09PSB2ZXJzZXNGb3JSZWYyLmxlbmd0aCkge1xuICAgIGFyZVNhbWUgPSB0cnVlXG5cbiAgICBmb3IgKGxldCBpID0gMCwgbD0gdmVyc2VzRm9yUmVmMS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZlcnNlMSA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMVtpXSlcbiAgICAgIGNvbnN0IHZlcnNlMiA9IGNvbXBhcmVPYmplY3QodmVyc2VzRm9yUmVmMltpXSlcbiAgICAgIGFyZVNhbWUgPSBpc0VxdWFsKHZlcnNlMSwgdmVyc2UyKVxuXG4gICAgICBpZiAoIWFyZVNhbWUpIHtcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gYXJlU2FtZVxufVxuXG4vKipcbiAqIGdldCB0aGUgVVNGTSBmb3IgYm9va0lkIGZyb20gc2NyaXB0dXJlQ29uZmlnLlxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZUNvbmZpZ1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICovXG5leHBvcnQgY29uc3QgZ2V0Q3VycmVudEJvb2sgPSAoc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpID0+IHtcbiAgY29uc3QgbGF0ZXN0QmlibGUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gIGxldCBpc0Jvb2tWYWxpZCA9IGZhbHNlXG4gIGNvbnN0IGJvb2tOYW1lID0gZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lKGZpbGVuYW1lKVxuICBpc0Jvb2tWYWxpZCA9IGJvb2tOYW1lPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG4gIGlmICghaXNCb29rVmFsaWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgVVNGTSBmaWxlIGlzICR7ZmlsZW5hbWV9YClcbiAgfVxuICBpZiAobGF0ZXN0QmlibGU/LnRvTG93ZXJDYXNlKCkgIT09IGJvb2tJZCkge1xuICAgIGNvbnNvbGUud2FybihgQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGJ1dCBmZXRjaGVkIHByb2plY3RJZCBpcyAke2xhdGVzdEJpYmxlfWApXG4gICAgaXNCb29rVmFsaWQgPSBmYWxzZVxuICB9XG4gIGlmIChpc0Jvb2tWYWxpZCkge1xuICAgIGNvbnN0IGJpYmxlVXNmbSA9IHNjcmlwdHVyZUNvbmZpZz8uYmlibGVVc2ZtO1xuICAgIGlmIChiaWJsZVVzZm0pIHtcbiAgICAgIHJldHVybiBiaWJsZVVzZm1cbiAgICB9XG4gICAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEJpYmxlIFVTRk0gbWlzc2luZ2ApXG4gIH1cbiAgY29uc29sZS5lcnJvcihgZ2V0Q3VycmVudEJvb2soKSAtIEV4cGVjdGVkICR7Ym9va0lkfSBidXQgZ290IGZpbGUgJHtmaWxlbmFtZX1gKVxuICByZXR1cm4gbnVsbFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTY3JpcHR1cmVDYXJkKHtcbiAgYXBwUmVmLFxuICBhdXRoZW50aWNhdGlvbixcbiAgYm9va0luZGV4LFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGdldExhbmd1YWdlLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgZ3JlZWtSZXBvVXJsLFxuICBoZWJyZXdSZXBvVXJsLFxuICBodHRwQ29uZmlnLFxuICBpZCxcbiAgaXNOVCxcbiAgbG9nZ2VkSW5Vc2VyLFxuICBtZXJnZUNoZWNrLFxuICBvbk1pbmltaXplLFxuICBvblJlc291cmNlRXJyb3IsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZTogcmVmZXJlbmNlXyxcbiAgcmVzb3VyY2U6IHtcbiAgICBvd25lcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHNlbGVjdGVkUXVvdGUsXG4gIHNlcnZlcixcbiAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2UsXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZSxcbiAgc2V0Q2FyZHNTYXZpbmcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHRyYW5zbGF0ZSxcbiAgdGl0bGUsXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIHVwZGF0ZU1lcmdlU3RhdGUsXG59KSB7XG4gIGNvbnN0IHNhdmVJblByb2dyZXNzID0gUmVhY3QudXNlUmVmKGZhbHNlKTsgLy8gQWRkIHJlZiB0byB0cmFjayBzYXZlIG9wZXJhdGlvblxuICBjb25zdCBib29rSWQgPSByZWZlcmVuY2VfPy5ib29rSWQgfHwgcmVmZXJlbmNlXz8ucHJvamVjdElkIC8vIG9sZGVyIHZlcnNpb25zIHVzZSBwcm9qZWN0SWQsIHNvIGZhbGwgYmFjayB0byB0aGF0XG4gIGNvbnN0IHJlZmVyZW5jZSA9IHtcbiAgICBib29rSWQsXG4gICAgY2hhcHRlcjogcmVmZXJlbmNlXz8uY2hhcHRlcixcbiAgICB2ZXJzZTogcmVmZXJlbmNlXz8udmVyc2UsXG4gIH1cbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaDogMCxcbiAgICBjb250ZXh0TGluZXM6IDQsXG4gICAgY3VycmVudFJlZmVyZW5jZTogbnVsbCxcbiAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgIGVkaXRWZXJzZTogbnVsbCxcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudDogZmFsc2UsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBmYWxzZSxcbiAgICBsYXN0U2VsZWN0ZWRRdW90ZTogbnVsbCxcbiAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICByZWY6IGFwcFJlZixcbiAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgc2F2ZURpZmZQYXRjaDogZmFsc2UsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgc2VsZWN0aW9uczogbmV3IE1hcCgpLFxuICAgIHNlbGVjdGlvbnNSZWZzOiAnJyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgdXJsRXJyb3I6IG51bGwsXG4gICAgdXNpbmdVc2VyQnJhbmNoOiBmYWxzZSxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3Q6IHt9LFxuICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gICAgdmVyc2VPYmplY3RzTWFwOiBuZXcgTWFwKCksXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBjb250ZXh0TGluZXMsXG4gICAgY3VycmVudFJlZmVyZW5jZSxcbiAgICBlZGl0QnJhbmNoUmVhZHksXG4gICAgZWRpdFZlcnNlLCAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGJlaW5nIGVkaXR0ZWRcbiAgICBmb3VuZE9yaWdpbmFsQ29udGVudCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGUsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2F2ZURpZmZQYXRjaCxcbiAgICBzYXZlRnVsbEJpYmxlQ29udGVudCxcbiAgICBzZWxlY3Rpb25zLFxuICAgIHNlbGVjdGlvbnNSZWZzLFxuICAgIHNob3dBbGlnbm1lbnRQb3B1cCxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICB2ZXJzZU9iamVjdHNNYXAsXG4gICAgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaHR0cENvbmZpZyA9IHtcbiAgICAuLi5odHRwQ29uZmlnLFxuICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgIG5vQ2FjaGU6IHRydWUsXG4gIH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcblxuICBjb25zdCB7XG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNldFNjcmlwdHVyZSxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgfSA9IHVzZVNjcmlwdHVyZVNldHRpbmdzKHtcbiAgICBhcHBSZWY6IHJlZixcbiAgICBjYXJkTnVtLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICBodHRwQ29uZmlnLFxuICAgIGlzTlQsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgb3duZXIsXG4gICAgcmVhZHlGb3JGZXRjaCxcbiAgICByZWZlcmVuY2U6IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHNldFVybEVycm9yOiAoZXJyb3IpID0+IHNldFN0YXRlKHsgdXJsRXJyb3I6IGVycm9yIH0pLFxuICAgIHNlcnZlcixcbiAgICB0aXRsZSxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2UgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGVcbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCByZXBvID0gYCR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ubGFuZ3VhZ2VJZH1fJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWR9YFxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGNhcmRSZXNvdXJjZUlkID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkIHx8IHJlc291cmNlSWRcbiAgLy8gQHRzLWlnbm9yZVxuICBsZXQgcmVmXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnJlZiB8fCBhcHBSZWZcbiAgY29uc3QgY2FuVXNlRWRpdEJyYW5jaCA9ICEhKGxvZ2dlZEluVXNlciAmJiBhdXRoZW50aWNhdGlvbiAmJiAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJiAvLyBUUklDS1kgaWYgbm90IG9yaWdpbmFsIGxhbmd1YWdlIGFuZCB3ZSBoYXZlIGxvZ2luIGRhdGEsIHRoZW4gd2UgY2FuIHVzZSB0aGUgZWRpdCBicmFuY2hcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5pbmNsdWRlcyhsb2dnZWRJblVzZXIpKSkpIC8vIGFsc28gbWFrZSBzdXJlIG5vdCBhIHZlcnNpb24gdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBicmFuY2hEZXRlcm1pbmVkLFxuICAgICAgdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoLFxuICAgICAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc3RhcnRFZGl0OiBzdGFydEVkaXRCcmFuY2gsXG4gICAgICBmaW5pc2hFZGl0LFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBhcHBSZWYsXG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0lkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgY2FyZFJlc291cmNlSWQsXG4gICAgY2hlY2tGb3JFZGl0QnJhbmNoLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvd25lcixcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgc2VydmVyLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIH0pXG5cbiAgY29uc3QgX3VzZUJyYW5jaE1lcmdlciA9IHVzZUJyYW5jaE1lcmdlcih7IHNlcnZlciwgb3duZXIsIHJlcG8sIHVzZXJCcmFuY2g6IHVzZXJFZGl0QnJhbmNoTmFtZSwgdG9rZW5pZDogYXV0aGVudGljYXRpb24/LnRva2VuPy5zaGExIH0pXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgbWVyZ2VTdGF0dXM6IG1lcmdlVG9NYXN0ZXIsXG4gICAgICB1cGRhdGVTdGF0dXM6IG1lcmdlRnJvbU1hc3RlcixcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNoZWNrTWVyZ2VTdGF0dXMsXG4gICAgfVxuICB9ID0gX3VzZUJyYW5jaE1lcmdlclxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKG1lcmdlQ2hlY2spIHtcbiAgICAgIGNoZWNrTWVyZ2VTdGF0dXMgJiYgY2hlY2tNZXJnZVN0YXR1cygpIC8vIGV2ZXJ5IHRpbWUgbWVyZ2VDaGVjayBjaGFuZ2VzLCBjaGVjayBtZXJnZSBzdGF0dXMgYWdhaW5cbiAgICB9XG4gIH0sIFttZXJnZUNoZWNrXSlcblxuICBjb25zdCB1cGRhdGVCdXR0b25Qcm9wcyA9IHVzZUNvbnRlbnRVcGRhdGVQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25VcGRhdGU6ICgpID0+IHtcbiAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKCkpXG4gICAgfSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgaXNFcnJvckRpYWxvZ09wZW4sXG4gICAgb25DbG9zZUVycm9yRGlhbG9nLFxuICAgIGlzTG9hZGluZzogaXNVcGRhdGVMb2FkaW5nLFxuICAgIGRpYWxvZ01lc3NhZ2UsXG4gICAgZGlhbG9nVGl0bGUsXG4gICAgZGlhbG9nTGluayxcbiAgICBkaWFsb2dMaW5rVG9vbHRpcCxcbiAgfSA9IHVwZGF0ZUJ1dHRvblByb3BzXG5cbiAgY29uc3Qgb25NZXJnZSA9ICgpID0+IHtcbiAgICBmaW5pc2hFZGl0KClcbiAgICBjb25zb2xlLmxvZyhgb25NZXJnZSgpIHN3aXRjaGluZyBiYWNrIHRvIG1hc3RlciBhZnRlciBtZXJnZSBhcHBSZWY6YCwgYXBwUmVmKVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgcmVmOiBhcHBSZWYsXG4gICAgfSlcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4ge1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEsIC8vIHRyaWdnZXIgcmVjaGVjayBvZiB1c2VyIGJyYW5jaCB3aGljaCB3aWxsIHN3aXRjaCB0aGUgYnJhbmNoIGJhY2sgdG8gbWFzdGVyXG4gICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgeyBpc0xvYWRpbmc6IGlzTWVyZ2VMb2FkaW5nLCBjYWxsTWVyZ2VVc2VyQnJhbmNoIH0gPSB1c2VNYXN0ZXJNZXJnZVByb3BzKHtcbiAgICBpc1NhdmluZzogc3RhcnRTYXZlLFxuICAgIHVzZUJyYW5jaE1lcmdlcjogX3VzZUJyYW5jaE1lcmdlcixcbiAgICBvbk1lcmdlLFxuICB9KVxuXG4gIC8vIFNpbmNlIG9yaWdpbmFsIHRleHQgKEdyZWVrL0hlYnJldykgc2hvdWxkIG5vdCBiZSBlZGl0ZWQsIGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZW0gaW4gbWVyZ2Ugc3RhdGUgc2luY2UgdXNlciB3aWxsIG5vdCBtZXJnZS9wdXNoIGNoYW5nZXMuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGNhcmRSZXNvdXJjZUlkICYmICF1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIHVwZGF0ZU1lcmdlU3RhdGUgJiYgdXBkYXRlTWVyZ2VTdGF0ZShcbiAgICAgICAgY2FyZFJlc291cmNlSWQsXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZy50aXRsZSB8fCBzY3JpcHR1cmVTZXR0aW5ncy50aXRsZSxcbiAgICAgICAgbWVyZ2VGcm9tTWFzdGVyLFxuICAgICAgICBtZXJnZVRvTWFzdGVyLFxuICAgICAgICBjYWxsVXBkYXRlVXNlckJyYW5jaCxcbiAgICAgICAgY2FsbE1lcmdlVXNlckJyYW5jaCxcbiAgICAgIClcbiAgICB9XG4gIH0sW2NhcmRSZXNvdXJjZUlkLCBzY3JpcHR1cmVDb25maWcudGl0bGUsIG1lcmdlRnJvbU1hc3RlciwgbWVyZ2VUb01hc3Rlcl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNVcGRhdGVMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IFsuLi5wcmV2Q2FyZHNMb2FkaW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ1VwZGF0ZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzVXBkYXRlTG9hZGluZ10pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNZXJnZUxvYWRpbmcpIHtcbiAgICAgIHNldENhcmRzTG9hZGluZ01lcmdlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gcHJldkNhcmRzTG9hZGluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgIH1cbiAgfSwgW2lzTWVyZ2VMb2FkaW5nXSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBpZiAoIWNhblVzZUVkaXRCcmFuY2ggJiYgIXJlYWR5Rm9yRmV0Y2gpIHsgLy8gaWYgYmlibGUgbm90IGVsaWdpYmxlIGZvciB1c2VyIGJyYW5jaCwgbWFrZSBzdXJlIGl0J3MgcmVhZHlcbiAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYm9vayBjaGFuZ2VkYCwgeyBib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkIH0pXG5cbiAgICBpZiAoY2FuVXNlRWRpdEJyYW5jaCkgeyAvLyBpZiBiaWJsZSBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIHJlZnJlc2ggaXRcbiAgICAgIHNldFN0YXRlKHsgcmVhZHlGb3JGZXRjaDogZmFsc2UsIGNoZWNrRm9yRWRpdEJyYW5jaDogY2hlY2tGb3JFZGl0QnJhbmNoICsgMSB9KVxuICAgIH1cbiAgfSwgW2Jvb2tJZCwgb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHJlZmVyZW5jZSwgY3VycmVudFJlZmVyZW5jZSkpIHtcbiAgICAgIC8vIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIHJlZmVyZW5jZSBjaGFuZ2VkYCwgcmVmZXJlbmNlKVxuICAgICAgc2V0U3RhdGUoeyBjdXJyZW50UmVmZXJlbmNlOiByZWZlcmVuY2UsIGVkaXRWZXJzZTogbnVsbCB9KVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZV0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2FpdGluZyBmb3IgYnJhbmNoIGZldGNoIHRvIGNvbXBsZXRlXG4gICAgaWYgKCFyZWFkeUZvckZldGNoICYmIGJyYW5jaERldGVybWluZWQgKSB7XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCBicmFuY2hEZXRlcm1pbmVkIGlzICR7YnJhbmNoRGV0ZXJtaW5lZH0gYW5kIHdvcmtpbmdSZWYgaXMgJHt3b3JraW5nUmVmfWApXG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IHRydWUsIHJlZjogd29ya2luZ1JlZiB9KVxuICAgIH1cbiAgfSwgW2JyYW5jaERldGVybWluZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmIChfdXNpbmdVc2VyQnJhbmNoICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiBfdXNpbmdVc2VyQnJhbmNoIH0pXG4gICAgfVxuICB9LCBbX3VzaW5nVXNlckJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2UpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgLyoqXG4gICAqIHNldCBlZGl0IHN0YXRlIGZvciBzcGVjaWZpYyB2ZXJzZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2VSZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgYmVpbmcgZWRpdGVkIG9yIGZpbmlzaGVkIGVkaXRcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gdHJ1ZSB3aGVuIGVkaXRpbmdcbiAgICovXG4gIGZ1bmN0aW9uIHNldEVkaXRWZXJzZSh2ZXJzZVJlZiwgZWRpdGluZykge1xuICAgIGlmIChlZGl0aW5nICYmICh2ZXJzZVJlZiAhPT0gZWRpdFZlcnNlKSkgeyAvLyBjaGVjayBpZiB3ZSBuZWVkIHRvIHNldCBmbGFnIHRoYXQgd2UgYXJlIGVkaXRpbmcgdGhpcyB2ZXJzZVxuICAgICAgc2V0U3RhdGUoeyBlZGl0VmVyc2U6IHZlcnNlUmVmIH0pXG4gICAgfSBlbHNlIGlmICghZWRpdGluZyAmJiAodmVyc2VSZWYgPT09IGVkaXRWZXJzZSkpIHsgLy8gY2xlYXIgZWRpdCBmbGFnIGlmIGl0IGlzIGZvciBjdXJyZW50IGVkaXQgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgZWRpdFZlcnNlOiBudWxsIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3QgZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPSAhIWVkaXRWZXJzZSAvLyB3ZSBkb24ndCB3YW50IHRvIGFsbG93IGNsaWNraW5nIG9uIGNoYW5nZSBidXR0b25zIHdoaWxlIGVkaXRpbmdcblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCBfcmVmZXJlbmNlID0gY3VycmVudFJlZmVyZW5jZSB8fCByZWZlcmVuY2VcblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICAgIC4uLihpc0hlYnJldyA/IHtsaW5lSGVpZ2h0OiAnMi4wZW0nfSA6IHt9KVxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcblxuICBpZiAoZGlzYWJsZVdvcmRQb3BvdmVyID09PSB1bmRlZmluZWQpIHsgLy8gaWYgbm90IHNwZWNpZmllZCwgdGhlbiBkZXRlcm1pbmUgaWYgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VcbiAgICBkaXNhYmxlV29yZFBvcG92ZXJfID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICB9XG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBmb3VuZE9yaWdpbmFsQ29udGVudFxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiBfcmVmZXJlbmNlLFxuICAgIGVuYWJsZUVkaXQsXG4gICAgZW5hYmxlQWxpZ25tZW50LFxuICAgIGh0dHBDb25maWcsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBvcmlnaW5hbFJlcG9VcmwsXG4gICAgc2NyaXB0dXJlQ29uZmlnLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHN0YXJ0RWRpdEJyYW5jaCxcbiAgICBzZXRTYXZlZENoYW5nZXM6IF9zZXRTYXZlZENoYW5nZXMsXG4gICAgc291cmNlTGFuZ3VhZ2U6IGlzTlRfID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HLFxuICAgIHRhcmdldExhbmd1YWdlOiBsYW5ndWFnZSxcbiAgICB0aXRsZTogc2NyaXB0dXJlVGl0bGUsXG4gICAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiByZWYsXG4gIH1cblxuICAvKipcbiAgICogdGhpcyBnZXRzIGNhbGxlZCB3aGVuZXZlciBhIHNjcmlwdHVyZSBwYW5lIGhhcyBhIGNoYW5nZSBpbiBzYXZlIHN0YXRlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjdXJyZW50SW5kZXhcbiAgICogQHBhcmFtIHtib29sZWFufSBzYXZlZFxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBnZXRDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgdXNlciBjbGlja3Mgc2F2ZSBidXR0b25cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2xlYXJDaGFuZ2VzIC0gd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgc2F2ZSBoYXMgY29tcGxldGVkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBzdGF0ZSAtIGN1cnJlbnQgc3RhdGUgb2Ygd29yZCBhbGlnbm1lbnQvZWRpdFxuICAgKi9cbiAgZnVuY3Rpb24gX3NldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsIHNhdmVkLCB7IGdldENoYW5nZXMgPSBudWxsLCBjbGVhckNoYW5nZXMgPSBudWxsLCBzdGF0ZSA9IG51bGwgfSkge1xuICAgIGNvbnN0IF91bnNhdmVkQ2hhbmdlc0xpc3QgPSB7IC4uLnVuc2F2ZWRDaGFuZ2VzTGlzdCB9XG5cbiAgICBpZiAoc2F2ZWQpIHtcbiAgICAgIGlmIChfdW5zYXZlZENoYW5nZXNMaXN0Lmhhc093blByb3BlcnR5KGN1cnJlbnRJbmRleCkpIHtcbiAgICAgICAgZGVsZXRlIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF0gPSB7IGdldENoYW5nZXMsIGNsZWFyQ2hhbmdlcywgc3RhdGUgfSAvLyB1cGRhdGUgd2l0aCBsYXRlc3RcbiAgICB9XG5cbiAgICBjb25zdCBfaGF2ZVVuc2F2ZWRDaGFuZ2VzID0gISFPYmplY3Qua2V5cyhfdW5zYXZlZENoYW5nZXNMaXN0KS5sZW5ndGhcblxuICAgIGlmIChoYXZlVW5zYXZlZENoYW5nZXMgIT0gX2hhdmVVbnNhdmVkQ2hhbmdlcykge1xuICAgICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhyZXNvdXJjZUlkLCAhX2hhdmVVbnNhdmVkQ2hhbmdlcylcbiAgICAgIHNldFN0YXRlKHsgaGF2ZVVuc2F2ZWRDaGFuZ2VzOiBfaGF2ZVVuc2F2ZWRDaGFuZ2VzIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF91bnNhdmVkQ2hhbmdlc0xpc3QsIHVuc2F2ZWRDaGFuZ2VzTGlzdCkpIHtcbiAgICAgIHNldFN0YXRlKHsgdW5zYXZlZENoYW5nZXNMaXN0OiBfdW5zYXZlZENoYW5nZXNMaXN0IH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIHNlYXJjaCBjaGFwdGVyIG9yIHZlcnNlIGNodW5rIHRvIGxpbmUgdGhhdCBzdGFydHMgd2l0aCBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge251bWJlcnxzdHJpbmd9IGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7c3RyaW5nW119IGNodW5rc1xuICAgKi9cbiAgZnVuY3Rpb24gZmluZFJlZkluQXJyYXkoZmluZEl0ZW0sIGNodW5rcykge1xuICAgIGNvbnN0IHJlZl8gPSBmaW5kSXRlbSArICcnXG4gICAgY29uc3QgcmVmTGVuID0gcmVmXy5sZW5ndGhcbiAgICBjb25zdCBpbmRleCA9IGNodW5rcy5maW5kSW5kZXgoKGNodW5rLCBpZHgpID0+IHtcbiAgICAgIGlmIChpZHggPiAwKSB7XG4gICAgICAgIGlmIChjaHVuay5zdWJzdHJpbmcoMCwgcmVmTGVuKSA9PT0gcmVmXykge1xuICAgICAgICAgIGNvbnN0IG5leHRDaGFyID0gY2h1bmtbcmVmTGVuXVxuXG4gICAgICAgICAgaWYgKChuZXh0Q2hhciA+ICc5JykgfHwgKG5leHRDaGFyIDwgJzAnKSkge1xuICAgICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH0pXG4gICAgcmV0dXJuIGluZGV4XG4gIH1cblxuICBmdW5jdGlvbiBnZXRCb29rTmFtZSgpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8uYm9va0lkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5ib29rSWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2U/LnNoYVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7XG4gICAgZXJyb3I6IHNhdmVFcnJvcixcbiAgICBpc0Vycm9yOiBpc1NhdmVFcnJvcixcbiAgICBvblNhdmVFZGl0LFxuICAgIG9uU2F2ZUVkaXRQYXRjaCxcbiAgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIGRvbnRDcmVhdGVCcmFuY2g6IHRydWUsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDEwMDAwLFxuICAgICAgc2VydmVyLFxuICAgIH0sXG4gICAgYXV0aG9yOiBsb2dnZWRJblVzZXIsXG4gICAgZW1haWw6IGF1dGhlbnRpY2F0aW9uPy51c2VyPy5lbWFpbCxcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiB3ZSBnZXQgYSBzYXZlIHNhdmVFcnJvclxuICAgIGlmIChzYXZlRXJyb3IgJiYgaXNTYXZlRXJyb3IgJiYgIXN0YXJ0U2F2ZSkgeyAvLyBpZiBlcnJvciB0aGVuIHNob3cgYWZ0ZXIgc2F2ZSBjb21wbGV0ZXMsIHNpbmNlIHdlIG1heSByZXRyeVxuICAgICAgY29uc29sZS5sb2coYHNhdmUgZXJyb3JgLCBzYXZlRXJyb3IpXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3Igc2F2aW5nICR7bGFuZ3VhZ2VJZH1fJHtjYXJkUmVzb3VyY2VJZH0gJHtzYXZlRXJyb3J9YCwgdHJ1ZSlcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gZXJyb3JcbiAgICB9XG4gIH0sIFtzYXZlRXJyb3IsIGlzU2F2ZUVycm9yLCBzdGFydFNhdmVdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gc3RhcnRTYXZlIGdvZXMgdHJ1ZSwgc2F2ZSBlZGl0cyB0byB1c2VyIGJyYW5jaCBhbmQgdGhlbiBjbGVhciBzdGFydFNhdmVcbiAgICBmdW5jdGlvbiBfc2F2ZVN1Y2Nlc2Z1bCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgfSlcblxuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgY29uc3Qge2NsZWFyQ2hhbmdlc30gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgIGNsZWFyQ2hhbmdlcyAmJiBjbGVhckNoYW5nZXMoKVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuaW5mbygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBSZWxvYWRpbmcgcmVzb3VyY2UnKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICByZWFkeUZvckZldGNoOiB0cnVlLFxuICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogbnVsbCxcbiAgICAgICAgc2F2ZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHJlZjogdXNlckVkaXRCcmFuY2hOYW1lLFxuICAgICAgfSlcbiAgICAgIGRlbGF5KDEwMCkudGhlbigoKSA9PiB7XG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZShzaGEsIHVzZXJFZGl0QnJhbmNoTmFtZSlcbiAgICAgIH0pXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gZmFsc2U7IC8vIFJlc2V0IHRoZSBmbGFnIG9uIHN1Y2Nlc3NcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbG9nQ2hhbmdlZChjb21tZW50LCBpbml0aWFsLCBmaW5hbCwgZGlmZiwgc2hhKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGAke2NvbW1lbnR9IC0gc2hhOmAsIHNoYSlcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGluaXRpYWxgLCBpbml0aWFsKVxuICAgICAgY29uc29sZS5lcnJvcihgZmluYWxgLCBmaW5hbClcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGRpZmZgLCBkaWZmKVxuICAgIH1cblxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBpZiAoc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCkge1xuICAgICAgICBjb25zb2xlLmxvZygnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBTYXZlIGFscmVhZHkgaW4gcHJvZ3Jlc3MsIHNraXBwaW5nIGR1cGxpY2F0ZSBjYWxsJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IHRydWU7XG4gICAgICBjb25zb2xlLmluZm8oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gVXNpbmcgc2hhOiAke3NoYX1gKVxuICAgICAgbGV0IHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFxuICAgICAgaWYgKHNhdmVEaWZmUGF0Y2gpIHtcbiAgICAgICAgdXBsb2FkRnVuY3Rpb24gPSBvblNhdmVFZGl0UGF0Y2ggLy8gaWYgd2UgYXJlIHNlbmRpbmcgdXAgYSBkaWZmcGF0Y2gsIHdlIHdpbGwgdXNlIHRoaXMgbWV0aG9kXG4gICAgICB9XG5cbiAgICAgIGxldCBzdWNjZXNzID0gYXdhaXQgdXBsb2FkRnVuY3Rpb24odXNlckVkaXRCcmFuY2hOYW1lKS50aGVuKHIgPT4gcikuY2F0Y2goKCkgPT4gZmFsc2UpLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICBsZXQgZXJyb3IgPSBzdWNjZXNzID8gbnVsbCA6ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJ1xuXG4gICAgICBpZiAoIXN1Y2Nlc3MpIHsgLy8gaWYgc2F2ZSBmYWlsZWQsIGF0dGVtcHQgYSByZXRyeVxuICAgICAgICAvLyBsb2dDaGFuZ2VkKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQsIHNlbnQnLCBzYXZlRnVsbEJpYmxlQ29udGVudD8uaW5pdGlhbCwgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/Lm5ldywgc2F2ZUNvbnRlbnQsIHNoYSlcbiAgICAgICAgY29uc29sZS5lcnJvcihgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCByZXRyeWluZyAtIGNvbnRleHQgbGluZXMgYXJlICR7Y29udGV4dExpbmVzfSwgZGlmZjpcXG5gLCBzYXZlQ29udGVudClcbiAgICAgICAgYXdhaXQgZGVsYXkoNTAwKSAvLyBzaW5jZSB3ZSBoYWQgYW4gZXJyb3IsIHdhaXQgZm9yIGRhdGEgdG8gdXBkYXRlIG9uIHNlcnZlciBiZWZvcmUgZ2V0dGluZyB0aGUgbGF0ZXN0XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgLy8gZmV0Y2ggdGhlIGxhdGVzdCBib29rIGNvbnRlbnQsIHNvIHdlIGNhbiB0ZWxsIGlmIGxhdGVzdCBjaGFuZ2VzIHdlcmUgc2F2ZWQgYW5kIGhhdmUgdGhlIGxhdGVzdCBmaWxlIHNoYVxuICAgICAgICBjb25zdCByZXN1bHRzID0gYXdhaXQgZmV0Y2hCaWJsZUJvb2soc2VydmVyLCBodHRwQ29uZmlnLCBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlLCBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSlcbiAgICAgICAgZXJyb3IgPSByZXN1bHRzPy5lcnJvclxuICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gc2F2ZUNvbnRlbnRcbiAgICAgICAgbGV0IGZpbGVTaGEgPSBudWxsXG4gICAgICAgIGNvbnN0IHNhdmVkQmlibGVVc2ZtID0gcmVzdWx0cz8uYmlibGVVc2ZtXG4gICAgICAgIGNvbnN0IGVkaXRlZEJpYmxlVXNmbSA9IHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXdcbiAgICAgICAgbGV0IHVwVG9EYXRlID0gc2F2ZWRCaWJsZVVzZm0gPT09IGVkaXRlZEJpYmxlVXNmbSAvLyBjaGVjayBpZiBuZXcgYmlibGUgY29udGVudCBkaWZmZXJzIGZyb20gbGF0ZXN0IG9uIHJlcG9cblxuICAgICAgICBpZiAoIWVycm9yKSB7XG4gICAgICAgICAgaWYgKHVwVG9EYXRlKSB7IC8vIGlmIHRoZSBkYXRhIHdlIGFyZSB0cnlpbmcgdG8gc2F2ZSBtYXRjaGVzIHdoYXQgaXMgbm93IG9uIHRoZSBzZXJ2ZXIgdGhlcmUgaXMgbm90aGluZyB0byBkb1xuICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gZGF0YSB3YXMgY29ycmVjdGx5IHVwbG9hZGVkLCBzbyBub3RoaW5nIG1vcmUgdG8gZG8nKVxuICAgICAgICAgICAgc3VjY2VzcyA9IHRydWVcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbGV0IG5ld0NvbnRleHRMaW5lcyA9IGNvbnRleHRMaW5lcyArIDFcbiAgICAgICAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgICAgICAgIGF3YWl0IGRlbGF5KDEwMCkgLy8gYWxsb3cgVUkgdG8gdXBkYXRlIGJlZm9yZSBydW5uaW5nIGNvbXB1dGF0aW9uYWxseSBleHBlbnNpdmUgZnVuY3Rpb25cbiAgICAgICAgICAgICAgLy8gcmVnZW5lcmF0ZSB0aGUgcGF0Y2ggYWdhaW5zdCB0aGUgbGF0ZXN0IGNvbnRlbnQgYW5kIGFkZCBtb3JlIGxpbmVzIG9mIGNvbnRleHRcbiAgICAgICAgICAgICAgLy8gVFJJQ0tZIC0gd2UgaGF2ZSBub3RpY2VkIHRoYXQgRENTIHdpbGwgZmFpbCB0aGUgcGF0Y2ggc29tZXRpbWVzLCBidXQgaWYgd2UgaW5jcmVhc2UgdGhlIGNvbnRleHQgbGluZSBjb3VudCBpdCB3aWxsIHN1Y2NlZWQsIHNvIHdlIGFyZSBpbmNyZWFzaW5nIHRoZSBjb250ZXh0IGxpbmUgY291bnRcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gY29udGV4dCBsaW5lcyBhcmUgbm93ICR7bmV3Q29udGV4dExpbmVzfWApXG4gICAgICAgICAgICAgIGNvbnN0IGRpZmZQYXRjaCA9IGdldFBhdGNoKHNhdmVGdWxsQmlibGVDb250ZW50Py5maWxlbmFtZSwgc2F2ZWRCaWJsZVVzZm0sIGVkaXRlZEJpYmxlVXNmbSwgZmFsc2UsIG5ld0NvbnRleHRMaW5lcylcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoXG4gICAgICAgICAgICAgIGZpbGVTaGEgPSByZXN1bHRzPy5zaGFcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSwgX3NhdmVDb250ZW50LCBmaWxlU2hhKSAvLyBwdXNoIGNoYW5nZSB0byBzZXJ2ZXJcbiAgICAgICAgICAgIGlmICghc3VjY2Vzcykge1xuICAgICAgICAgICAgICBsb2dDaGFuZ2VkKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQsIHNlbnQnLCBzYXZlZEJpYmxlVXNmbSwgZWRpdGVkQmlibGVVc2ZtLCBfc2F2ZUNvbnRlbnQsIGZpbGVTaGEpXG4gICAgICAgICAgICAgIGVycm9yID0gJ3NhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQgb24gc2Vjb25kIGF0dGVtcHQnXG4gICAgICAgICAgICAgIG5ld0NvbnRleHRMaW5lcysrIC8vIGlmIGZhaWxlZCBpbmNyZWFzZSB0aGUgY291bnQgZm9yIG5leHQgYXR0ZW1wdFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2ZSBzdWNjZXNzZnVsIG9uIHNlY29uZCB3aXRoIGRpZmYnLCBfc2F2ZUNvbnRlbnQpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobmV3Q29udGV4dExpbmVzID4gMTApIHtcbiAgICAgICAgICAgICAgbmV3Q29udGV4dExpbmVzID0gNFxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgc2V0U3RhdGUoe2NvbnRleHRMaW5lczogbmV3Q29udGV4dExpbmVzfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFlcnJvciAmJiBzdWNjZXNzKSB7IC8vIGlmIG5vIGVycm9yIG1lc3NhZ2UgYW5kIHNhdmUgd2FzIGEgc3VjY2Vzc1xuICAgICAgICByZXR1cm4gX3NhdmVTdWNjZXNmdWwoKSAvLyBub3RoaW5nIHRvIGRvXG4gICAgICB9XG5cbiAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gJHtlcnJvciB8fCAndW5rbm93biBzYXZlIGVycm9yJ31gKVxuICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IHByZXZDYXJkc1NhdmluZy5maWx0ZXIoY2FyZElkID0+IGNhcmRJZCAhPT0gY2FyZFJlc291cmNlSWQpKVxuICAgICAgc2V0U3RhdGUoe3N0YXJ0U2F2ZTogZmFsc2V9KVxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBmYWlsdXJlXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBpZiAoIWVkaXRCcmFuY2hSZWFkeSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggbm90IHlldCBjcmVhdGVkYClcbiAgICAgIH0gZWxzZSBpZiAoIXNoYSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc2F2ZSBzaGEgbm90IHlldCByZWFkeWApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBbLi4ucHJldkNhcmRzU2F2aW5nLCBjYXJkUmVzb3VyY2VJZF0pXG4gICAgICAgIF9zYXZlRWRpdCgpXG4gICAgICB9XG4gICAgfVxuXG4gIH0sIFtzdGFydFNhdmUsIGVkaXRCcmFuY2hSZWFkeSwgc2hhXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge1NjcmlwdHVyZVJlZmVyZW5jZVR5cGV9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtOiBzdHJpbmcsIHJlZjogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSwgdXBkYXRlZFZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSwgY2FyZE51bTogbnVtYmVyKSB7XG4gICAgbGV0IG5ld1VzZm1cbiAgICBjb25zdCBjaGFwdGVyQ2h1bmtzID0gYmlibGVVc2ZtPy5zcGxpdCgnXFxcXGMgJylcbiAgICBjb25zdCBjaGFwdGVySW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LmNoYXB0ZXIsIGNoYXB0ZXJDaHVua3MpXG5cbiAgICBpZiAoY2hhcHRlckluZGV4ID49IDApIHtcbiAgICAgIGNvbnN0IGN1cnJlbnRDaGFwdGVyID0gY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdXG4gICAgICBsZXQgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcbiAgICAgIGNvbnN0IGZyb250TWF0dGVyID0gcmVmPy52ZXJzZSA9PT0gJ2Zyb250J1xuXG4gICAgICBpZiAoZnJvbnRNYXR0ZXIgfHwgdmVyc2VJbmRleCA+PSAwKSB7XG4gICAgICAgIGNvbnN0IG5ld1ZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTSh1cGRhdGVkVmVyc2VPYmplY3RzKVxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBuZXcgVVNGTSBmb3IgY2FyZCAke2NhcmROdW19LCB2ZXJzZSAke3JlZj8udmVyc2V9On0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBpZiAoZnJvbnRNYXR0ZXIpIHsgLy8gZnJvbnQgbWF0dGVyIGdvZXMgYmVmb3JlIGZpcnN0IHZlcnNlXG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1swXVxuICAgICAgICAgIGNvbnN0IHByZWZpeExlbiA9IG9sZFZlcnNlLmluZGV4T2YoJ1xcbicpIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSBmcm9udCBtYXR0ZXIgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzWzBdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHByZWZpeExlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoIC8vIGNoYXJhY3RlcnMgYmVmb3JlIHRoZSB2ZXJzZSB0ZXh0XG4gICAgICAgICAgdmVyc2VDaHVua3NbdmVyc2VJbmRleF0gPSBvbGRWZXJzZS5zdWJzdHJpbmcoMCwgdmVyc2VOdW1MZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHNjcmlwdHVyZVBhbmUgdG8gZ2V0IGxhdGVzdCBjaGFuZ2VzIGZvciB2ZXJzZSB0byBzYXZlXG4gICAgYXN5bmMgZnVuY3Rpb24gZ2V0UmVhZHlGb3JTYXZlKCkge1xuICAgICAgaWYgKHNhdmVDbGlja2VkKSB7XG4gICAgICAgIGxldCBjcmVhdGVFZGl0QnJhbmNoID0gIV91c2luZ1VzZXJCcmFuY2hcblxuICAgICAgICBpZiAoIWNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgYWxyZWFkeSB1c2luZyB0aGUgdXNlciBicmFuY2hcbiAgICAgICAgICBpZiAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSB1c2VyRWRpdEJyYW5jaE5hbWUpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2Fybihgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gc3RhdGUgY29uZmxpY3QgLSBzaG91bGQgYmUgaW4gdXNlciBicmFuY2ggJHt1c2VyRWRpdEJyYW5jaE5hbWV9LCBidXQgYWN0dWFsbHkgdXNpbmcgJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIGNyZWF0ZUVkaXRCcmFuY2ggPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBhbHJlYWR5IHVzaW5nIGVkaXQgYnJhbmNoOiAke3dvcmtpbmdSZXNvdXJjZUJyYW5jaH1gKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBlZGl0QnJhbmNoUmVhZHk6IHRydWUgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoY3JlYXRlRWRpdEJyYW5jaCkgeyAvLyBpZiBub3QgeWV0IHVzaW5nIHRoZSB1c2VyIGJyYW5jaCwgY3JlYXRlIGl0XG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNyZWF0aW5nIGVkaXQgYnJhbmNoYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IGZhbHNlLFxuICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgICAgICAgICBzaGE6IG51bGwsXG4gICAgICAgICAgfSkgLy8gd2Ugd2lsbCBuZWVkIGEgbmV3IHNoYSBmb3IgYm9vay9icmFuY2hcblxuICAgICAgICAgIGNvbnN0IGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgICAgICBpZiAoYnJhbmNoKSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZWRpdCBicmFuY2ggY3JlYXRlZGApXG4gICAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICAgIGVkaXRCcmFuY2hSZWFkeTogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgICAgICAgcmVmOiBicmFuY2gsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGVycm9yIGNyZWF0aW5nIGVkaXQgYnJhbmNoJylcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gZ2V0dGluZyB2ZXJzZSBjaGFuZ2VzYClcbiAgICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgIGxldCBiaWJsZVVzZm1Jbml0aWFsID0gZ2V0Q3VycmVudEJvb2soc2NyaXB0dXJlQ29uZmlnLCBib29rSWQpIC8vIGdldCBvcmlnaW5hbCBVU0ZNXG4gICAgICAgICAgbGV0IGJpYmxlVXNmbU5ldyA9IGJpYmxlVXNmbUluaXRpYWwgLy8gbWFrZSBhIGNvcHkgdG8gZWRpdFxuICAgICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbUluaXRpYWwpIHtcbiAgICAgICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm1OZXcpIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgICAgICBuZXdVc2ZtID0gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbU5ldywgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtKVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgICBiaWJsZVVzZm1OZXcgPSBuZXdVc2ZtXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHNhdmVEaWZmUGF0Y2ggPSBmYWxzZSAvLyBpZiB0cnVlIHRoZW4gd2Ugd2lsbCBzZW5kIHVwIGEgZGlmZnBhdGNoIGluc3RlYWQgb2YgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICBsZXQgX3NhdmVGdWxsQmlibGVDb250ZW50ID0gbnVsbFxuICAgICAgICAgIGxldCBfc2F2ZUNvbnRlbnQgPSBiaWJsZVVzZm1OZXdcblxuICAgICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSB2ZXJzZSBub3QgZm91bmQsIGZhbGxpbmcgYmFjayB0byBpbnNlcnRpbmcgdmVyc2Ugb2JqZWN0YClcbiAgICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgICAgY29uc3QgY2FyZE51bSA9IHBhcnNlSW50KGNhcmRJbmRleClcbiAgICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgICBsZXQgbmV3VXNmbVxuICAgICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhbmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKG5ld1ZlcnNlVGV4dCkge1xuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBuZXdCb29rSnNvbiA9IHRhcmdldFZlcnNlT2JqZWN0c18gJiYgc2NyaXB0dXJlQ29uZmlnPy51cGRhdGVWZXJzZShyZWYuY2hhcHRlciwgcmVmLnZlcnNlLCB7dmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNffSlcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICAgIH0gZWxzZSB7IC8vIGlmIG9ubHkgY2hhbmdlZCBhIGZldyB2ZXJzZXMsIHdlIHdpbGwganVzdCBtYWtlIGEgZGlmZnBhdGNoIGluc3RlYWQgb2Ygc2VuZGluZyB0aGUgd2hvbGUgYm9va1xuICAgICAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdGU/LnJlc291cmNlPy5uYW1lIC8vIExpa2UgXCI1Ny1USVQudXNmbVwiXG4gICAgICAgICAgICBpZiAoZmlsZW5hbWUgJiYgYmlibGVVc2ZtTmV3ICYmIGJpYmxlVXNmbUluaXRpYWwpIHsgLy8gbWFrZSBzdXJlIHdlIGhhdmUgZXZlcnl0aGluZyBuZWVkZWQgdG8gbWFrZSBhIHBhdGNoXG4gICAgICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsID09PSBiaWJsZVVzZm1OZXcpIHsgLy8gaWYgbm8gZGF0YSBjaGFuZ2UsIHRoZW4gc2tpcCBzYXZlIGJlY2F1c2UgRENTIGNyYXNoZXMgb24gYW4gZW1wdHkgcGF0Y2hcbiAgICAgICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gdGhlcmUgaXMgbm90aGluZyB0byBzYXZlLCBza2lwcGluZ2ApXG4gICAgICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICAgICAgICByZXR1cm5cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChmaWxlbmFtZSwgYmlibGVVc2ZtSW5pdGlhbCwgYmlibGVVc2ZtTmV3LCBmYWxzZSwgY29udGV4dExpbmVzKVxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoID0gdHJ1ZVxuICAgICAgICAgICAgICBfc2F2ZUNvbnRlbnQgPSBkaWZmUGF0Y2ggLy8gcmVwbGFjZSB3aG9sZSBib29rIGNvbnRlbnQgd2l0aCBqdXN0IHBhdGNoIGRhdGEgKG11Y2ggZmFzdGVyIHVwbG9hZHMpXG4gICAgICAgICAgICAgIF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IHsgIC8vIGtlZXAgdHJhY2sgb2YgcGF0Y2ggZGF0YSBpbiBjYXNlIHdlIG5lZWQgdG8gcmV0cnkgc2F2ZVxuICAgICAgICAgICAgICAgIGZpbGVuYW1lLFxuICAgICAgICAgICAgICAgIGluaXRpYWw6IGJpYmxlVXNmbUluaXRpYWwsXG4gICAgICAgICAgICAgICAgbmV3OiBiaWJsZVVzZm1OZXcsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoYmlibGVVc2ZtTmV3KSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtTmV3LnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBzYXZlQ29udGVudDogX3NhdmVDb250ZW50LFxuICAgICAgICAgICAgICBzYXZlQ2xpY2tlZDogZmFsc2UsXG4gICAgICAgICAgICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgICAgICAgICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgICAgICAgICAgIHN0YXJ0U2F2ZTogdHJ1ZSxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gRXJyb3IgcmV0cmlldmluZyB0aGUgY29ycmVjdCBib29rIGRhdGE6IGluY29ycmVjdCBib29rICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gKVxuICAgICAgICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhICR7bGFuZ3VhZ2VJZF99XyR7cmVzb3VyY2VJZH1gLCB0cnVlKVxuICAgICAgICAgICAgc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBnZXRSZWFkeUZvclNhdmUoKVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgeyBjaGFwdGVyIH0gPSBfcmVmZXJlbmNlIHx8IHt9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcbiAgICBsZXQgbmV3U2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuICAgIGxldCB1cGRhdGVTZWxlY3Rpb25zID0gZmFsc2VcbiAgICBjb25zdCBfbWFwID0gbmV3U2VsZWN0aW9uc1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgbmV3U2VsZWN0ZWRRdW90ZSA9IG51bGxcblxuICAgIC8vIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGNhbGN1bGF0ZSBzZWxlY3Rpb25zXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXSAmJiAvLyB3ZSBuZWVkIHRvIGhhdmUgZGF0YSBmb3IgY2hhcHRlclxuICAgICAgc2VsZWN0ZWRRdW90ZT8ucXVvdGVcbiAgICApIHtcbiAgICAgIC8vIGlmIHF1b3RlIGlzIGRpZmZlcmVudCB0aGFuIGxhc3RcbiAgICAgIGlmICghaXNFcXVhbChsYXN0U2VsZWN0ZWRRdW90ZSwgc2VsZWN0ZWRRdW90ZSkgfHxcbiAgICAgICAgIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgICBjb25zdCBvcmlnaW5hbFZlcnNlcyA9IHt9XG4gICAgICAgIGNvbnN0IHN1YnN0aXR1dGUgPSB7fSAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIHN1YnN0aXR1dGlvbnNcbiAgICAgICAgbGV0IHN0YXJ0VmVyc2UgPSBfdmVyc2VzRm9yUmVmWzBdLnZlcnNlXG5cbiAgICAgICAgaWYgKHR5cGVvZiBzdGFydFZlcnNlID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHN0YXJ0VmVyc2UgPSBwYXJzZUludChzdGFydFZlcnNlKVxuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGxhc3RWZXJzZSA9IHN0YXJ0VmVyc2VcblxuICAgICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgY29uc3QgdmVyc2VSZWYgPSBfdmVyc2VzRm9yUmVmW2ldXG4gICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICAgIHZlcnNlLFxuICAgICAgICAgIH0gPSB2ZXJzZVJlZlxuICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIHJlbWFwIHZlcnNlcyBpbiByZWZlcmVuY2UgcmFuZ2UgdG8gYSBsaW5lYXIgc2VyaWVzIG9mIHZlcnNlcyBzbyB2ZXJzZSBzcGFucyBkb24ndCBjaG9rZSBnZXRRdW90ZU1hdGNoZXNJbkJvb2tSZWZcbiAgICAgICAgICBsZXQgX3ZlcnNlID0gc3RhcnRWZXJzZSArIGlcbiAgICAgICAgICBsYXN0VmVyc2UgPSBfdmVyc2VcbiAgICAgICAgICBzdWJzdGl0dXRlW2Ake2NoYXB0ZXJ9OiR7X3ZlcnNlfWBdID0gYCR7Y2hhcHRlcn06JHt2ZXJzZX1gXG5cbiAgICAgICAgICBpZiAoIW9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSA9IHt9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgICBpZiAoKHR5cGVvZiB2ZXJzZSA9PT0gJ3N0cmluZycpICYmICh2ZXJzZS5pbmNsdWRlcygnLScpKSkge1xuICAgICAgICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tWZXJzZU9iamVjdCwgYCR7Y2hhcHRlcn06JHt2ZXJzZX1gKVxuXG4gICAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgICAgY29uc3Qgdm8gPSB2ZXJzZUl0ZW0udmVyc2VEYXRhLnZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KHZvKVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBib29rVmVyc2VPYmplY3RbY2hhcHRlcl1bdmVyc2VdPy52ZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgICB2ZXJzZU9iamVjdHMgPSBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cylcbiAgICAgICAgICAgIG9yaWdpbmFsVmVyc2VzW2NoYXB0ZXJdW192ZXJzZV0gPSB7IHZlcnNlT2JqZWN0cyB9XG4gICAgICAgICAgICBfbWFwLnNldChgJHtjaGFwdGVyfToke3ZlcnNlfWAsIHZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBjcmVhdGUgbmV3IHJlZmVyZW5jZSByYW5nZSBmb3IgbmV3IGxpbmVhciB2ZXJzZSByYW5nZVxuICAgICAgICBjb25zdCBbY2hhcHRlcl0gPSBzZWxlY3RlZFF1b3RlPy5yZWZlcmVuY2U/LnNwbGl0KCc6JylcbiAgICAgICAgbGV0IHN1YlJlZiA9IGAke2NoYXB0ZXJ9OiR7c3RhcnRWZXJzZX1gXG5cbiAgICAgICAgaWYgKGxhc3RWZXJzZSAhPSBzdGFydFZlcnNlKSB7XG4gICAgICAgICAgc3ViUmVmICs9IGAtJHtsYXN0VmVyc2V9YFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcXVvdGVNYXRjaGVzID0gZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmKHtcbiAgICAgICAgICBib29rT2JqZWN0OiBvcmlnaW5hbFZlcnNlcyxcbiAgICAgICAgICByZWY6IHN1YlJlZixcbiAgICAgICAgICBxdW90ZTogc2VsZWN0ZWRRdW90ZT8ucXVvdGUsXG4gICAgICAgICAgb2NjdXJyZW5jZTogc2VsZWN0ZWRRdW90ZT8ub2NjdXJyZW5jZSxcbiAgICAgICAgfSlcblxuICAgICAgICBjb25zdCBzZWxlY3Rpb25zID0gbmV3IE1hcCgpXG5cbiAgICAgICAgaWYgKHF1b3RlTWF0Y2hlcz8uc2l6ZSkge1xuICAgICAgICAgIHF1b3RlTWF0Y2hlcy5mb3JFYWNoKCh3b3Jkcywga2V5KSA9PiB7XG4gICAgICAgICAgICBjb25zdCBfa2V5ID0gc3Vic3RpdHV0ZVtrZXldXG5cbiAgICAgICAgICAgIHNlbGVjdGlvbnMuc2V0KF9rZXksIHdvcmRzLm1hcCh3b3JkID0+IChcbiAgICAgICAgICAgICAgeyAuLi53b3JkLCB0ZXh0OiBjb3JlLm5vcm1hbGl6ZVN0cmluZyh3b3JkLnRleHQpIH1cbiAgICAgICAgICAgICkpKVxuICAgICAgICAgIH0pXG4gICAgICAgIH1cbiAgICAgICAgbmV3U2VsZWN0aW9ucyA9IHNlbGVjdGlvbnNcbiAgICAgICAgbmV3U2VsZWN0ZWRRdW90ZSA9IHNlbGVjdGVkUXVvdGVcbiAgICAgICAgdXBkYXRlU2VsZWN0aW9ucyA9IHRydWVcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBuZXdTdGF0ZTogYW55ID0ge31cblxuICAgIC8vIHVwZGF0ZSBzdGF0ZXMgdGhhdCBoYXZlIGNoYW5nZWRcbiAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHZlcnNlT2JqZWN0c01hcCwgX21hcCkpIHtcbiAgICAgIG5ld1N0YXRlLnZlcnNlT2JqZWN0c01hcCA9IF9tYXBcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnNSZWZzID0gX21hcCA/IFsuLi5fbWFwLmtleXMoKV0uam9pbignOycpIDogJycgLy8gY29tYmluZSBhbGwgdGhlIHZlcnNlIHJlZmVyZW5jZXMgaW50byBhIHNpbmdsZSB2ZXJzZSByZWZlcmVuY2UgZm9yIHRoZSBzZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgY29uc3QgYm9va3NOb3RTYW1lID0gcmVmZXJlbmNlPy5ib29rSWQgIT09IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZFxuXG4gICAgaWYgKGJvb2tzTm90U2FtZSB8fCAhYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYsIF92ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZXNGb3JSZWYgPSBfdmVyc2VzRm9yUmVmXG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgfVxuXG4gICAgaWYgKG5ld1NlbGVjdGVkUXVvdGUpIHtcbiAgICAgIG5ld1N0YXRlLmxhc3RTZWxlY3RlZFF1b3RlID0gbmV3U2VsZWN0ZWRRdW90ZVxuICAgIH1cblxuICAgIGlmICh1cGRhdGVTZWxlY3Rpb25zKSB7XG4gICAgICBpZiAoIWFyZU1hcHNUaGVTYW1lKHNlbGVjdGlvbnMgfHwgKG5ldyBNYXAoKSksIG5ld1NlbGVjdGlvbnMpKSB7XG4gICAgICAgIG5ld1N0YXRlLnNlbGVjdGlvbnMgPSBuZXdTZWxlY3Rpb25zXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGgpIHtcbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfSwgW1xuICAgIG93bmVyLFxuICAgIHJlc291cmNlSWQsXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gICAgc2VsZWN0ZWRRdW90ZSxcbiAgXSlcblxuXG4gIC8vIENoZWNrIGlmIG9yaWdpbmFsIGxhbmd1YWdlIGNvbnRlbnQgaXMgYXZhaWxhYmxlIGZvciB0aGUgY3VycmVudCB2ZXJzZXMuXG4gIC8vIFRoaXMgc2V0cyBmb3VuZE9yaWdpbmFsQ29udGVudCBzdGF0ZSwgd2hpY2ggaW4gdHVybiBpcyB1c2VkIHRvIGRldGVybWluZSBpZlxuICAvLyBhbGlnbm1lbnQgZnVuY3Rpb25hbGl0eSBzaG91bGQgYmUgZW5hYmxlZFxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IG9yaWdpbmFsQm9va0lkID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uYm9va0lkXG4gICAgY29uc3QgYm9va1ZlcnNlT2JqZWN0ID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcbiAgICBsZXQgX2ZvdW5kT3JpZ2luYWxDb250ZW50ID0gZmFsc2VcblxuICAgIC8vIGNoZWNrIGlmIHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkIHRvIGdldCBvcmlnaW5hbCB2ZXJzZXNcbiAgICBpZiAoX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoICYmXG4gICAgICBib29rVmVyc2VPYmplY3QgJiZcbiAgICAgIChib29rSWQgPT09IG9yaWdpbmFsQm9va0lkKSAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgfSA9IHZlcnNlUmVmXG5cbiAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXVt2ZXJzZV0/LnZlcnNlT2JqZWN0c1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKVxuXG4gICAgICAgICAgY29uc3QgaXNWZXJzZU5vdEVtcHR5ID0gIWVtcHR5Q29udGVudCh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgaWYgKGlzVmVyc2VOb3RFbXB0eSkge1xuICAgICAgICAgICAgX2ZvdW5kT3JpZ2luYWxDb250ZW50ID0gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChfZm91bmRPcmlnaW5hbENvbnRlbnQgIT0gZm91bmRPcmlnaW5hbENvbnRlbnQpIHtcbiAgICAgIHNldFN0YXRlKHsgZm91bmRPcmlnaW5hbENvbnRlbnQ6IF9mb3VuZE9yaWdpbmFsQ29udGVudCB9KVxuICAgIH1cbiAgfSwgW1xuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGNsZWFyIHNldHRpbmdzIG9uIHZlcnNlIGNoYW5nZVxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1czogbnVsbCxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIH0pXG4gIH0sIFtfcmVmZXJlbmNlXSlcblxuICBjb25zdCB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgPSAocmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBhbGlnbmVkOiBib29sZWFuKSA9PiB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoe1xuICAgICAgLi4ucHJldlN0YXRlLFxuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiB7IC4uLnByZXZTdGF0ZS52ZXJzZXNBbGlnbm1lbnRTdGF0dXMsIFtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YF06IGFsaWduZWQgfSxcbiAgICB9KSlcbiAgfVxuXG4gIGxldCBfdmVyc2VzRm9yUmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IHsgcmVmZXJlbmNlLCByZXNvdXJjZUxpbmsgfSA9IHNjcmlwdHVyZUNvbmZpZyB8fCB7fVxuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQuX3ZlcnNlc0ZvclJlZiBjaGFuZ2VkYCwgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9KVxuICAgIH1cbiAgfSwgW192ZXJzZXNGb3JSZWZdKVxuXG4gIGlmICghX3ZlcnNlc0ZvclJlZj8ubGVuZ3RoKSB7IC8vIGlmIGVtcHR5IG9mIHJlZmVyZW5jZXMsIGNyZWF0ZSBzaW5nbGUgZW1wdHkgcmVmZXJlbmNlXG4gICAgX3ZlcnNlc0ZvclJlZiA9IFt7IC4uLnJlZmVyZW5jZSB9XVxuICB9XG5cbiAgY29uc3QgcmVuZGVyZWRTY3JpcHR1cmVQYW5lcyA9IF92ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBbXVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IGJvb2tJZF8gPSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWQgfHwgYm9va0lkXG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLl92ZXJzZXNGb3JSZWYsXG4gICAgICBjaGFwdGVyLFxuICAgICAgYm9va0lkOiBib29rSWRfLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgfVxuXG4gICAgbGV0IGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCA9IGZhbHNlXG5cbiAgICBpZiAodmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCkge1xuICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC5jaGFwdGVyID09IGNoYXB0ZXIgJiYgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudC52ZXJzZSA9PSB2ZXJzZVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGV0ZXJtaW5pbmdCcmFuY2g9eyFyZWFkeUZvckZldGNofVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudD17aXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50fVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICBvbkFsaWdubWVudEZpbmlzaD17KCkgPT4gc2V0U3RhdGUoeyB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBudWxsIH0pfVxuICAgICAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPXtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzfVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldEVkaXRWZXJzZT17c2V0RWRpdFZlcnNlfVxuICAgICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cz17c2V0V29yZEFsaWduZXJTdGF0dXN9XG4gICAgICAgIHNlcnZlcj17c2VydmVyfVxuICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzPXt1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICBjb25zdCBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrID0gKCkgPT4ge1xuICAgIGlmICh2ZXJzZXNGb3JSZWY/Lmxlbmd0aCA+IDEpIHsgLy8gaWYgdGhlcmUgYXJlIG11bHRpcGxlIHZlcnNlcyBzaG93biBpbiBjYXJkLCBuZWVkIHRvIHByb21wdCB1c2VyIGZvciB3aGljaCB2ZXJzZSB0byBhbGlnblxuICAgICAgc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IHRydWUgfSlcbiAgICB9IGVsc2UgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID09PSAxKSB7IC8vIGlmIG9ubHkgb25lIHZlcnNlIGlzIHNob3duIG9uIGNhcmQsIHRoZW4gZWRpdCB0aGF0IHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlc0ZvclJlZlswXSB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9uUmVuZGVyVG9vbGJhciA9ICh7IGl0ZW1zIH0pID0+IHtcbiAgICBjb25zdCBuZXdJdGVtcyA9IFsuLi5pdGVtc11cblxuICAgIGxldCBhbGxWZXJzZXNBbGlnbmVkID0gZmFsc2VcblxuICAgIC8vIENoZWNrIGlmIGFsbCB2YWx1ZXMgaW4gdmVyc2VzQWxpZ25tZW50U3RhdHVzIGFyZSB0cnVlXG4gICAgaWYgKHZlcnNlc0FsaWdubWVudFN0YXR1cykge1xuICAgICAgYWxsVmVyc2VzQWxpZ25lZCA9IE9iamVjdC52YWx1ZXModmVyc2VzQWxpZ25tZW50U3RhdHVzKS5ldmVyeShhbGlnblN0YXR1cyA9PiBhbGlnblN0YXR1cyA9PT0gdHJ1ZSlcbiAgICB9XG5cbiAgICBsZXQgYWxpZ25JY29uID0gbnVsbFxuICAgIGxldCBhbGlnbkJ1dHRvblRleHQgPSAnJ1xuXG4gICAgaWYgKGFsbFZlcnNlc0FsaWduZWQpIHtcbiAgICAgIGFsaWduSWNvbiA9IDxSeExpbmsyIGlkPXtgdmFsaWRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9JyNCQkInIC8+XG4gICAgICBhbGlnbkJ1dHRvblRleHQgPSAnQWxpZ25tZW50IGlzIFZhbGlkJ1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjb2xvciA9IGRpc2FibGVDaGFuZ2VCdXR0b25zID8gJyNCQkInIDogJyMwMDAnIC8vIGdyYXkgb3V0IGJ1dHRvbiBpZiBkaXNhYmxlZFxuICAgICAgYWxpZ25JY29uID0gPFJ4TGlua0JyZWFrMiBpZD17YGludmFsaWRfYWxpZ25tZW50X2ljb25fJHtyZXNvdXJjZUlkfWB9IGNvbG9yPXtjb2xvcn0gLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgSW52YWxpZCdcbiAgICB9XG5cbiAgICBpZiAoZm91bmRPcmlnaW5hbENvbnRlbnQgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgcmVzb3VyY2VJZCAhPT0gJ09SSUdJTkFMX1NPVVJDRScpIHtcbiAgICAgIG5ld0l0ZW1zLnB1c2goXG4gICAgICAgIDxJY29uQnV0dG9uXG4gICAgICAgICAgaWQ9e2BhbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH1cbiAgICAgICAgICBrZXk9J2NoZWNraW5nLWJ1dHRvbidcbiAgICAgICAgICBvbkNsaWNrPXtkaXNhYmxlQ2hhbmdlQnV0dG9ucyA/IG51bGwgOiBoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrfVxuICAgICAgICAgIHRpdGxlPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgYXJpYS1sYWJlbD17YWxpZ25CdXR0b25UZXh0fVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7YWxpZ25JY29ufVxuICAgICAgICA8L0ljb25CdXR0b24+XG4gICAgICApXG4gICAgfVxuXG4gICAgLy8gT25seSBzaG93IHRoZSB1cGRhdGUgZnJvbSBtYWluIGJ1dHRvbiBpZiBzY3JpcHR1cmUgaXMgbm90IG9yaWdpbmFsIHRleHQuXG4gICAgIXVzaW5nT3JpZ2luYWxCaWJsZSAmJiBuZXdJdGVtcy5wdXNoKFxuICAgICAgPD5cbiAgICAgICAgPFVwZGF0ZUJyYW5jaEJ1dHRvbiB7Li4udXBkYXRlQnV0dG9uUHJvcHN9IGlzTG9hZGluZz17aXNVcGRhdGVMb2FkaW5nIHx8IHN0YXJ0U2F2ZX0vPlxuICAgICAgICA8RXJyb3JEaWFsb2cgdGl0bGU9e2RpYWxvZ1RpdGxlfSBjb250ZW50PXtkaWFsb2dNZXNzYWdlfSBvcGVuPXtpc0Vycm9yRGlhbG9nT3Blbn0gb25DbG9zZT17b25DbG9zZUVycm9yRGlhbG9nfSBpc0xvYWRpbmc9eyBpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlIH0gbGluaz17ZGlhbG9nTGlua30gbGlua1Rvb2x0aXA9e2RpYWxvZ0xpbmtUb29sdGlwfSAvPlxuICAgICAgPC8+XG4gICAgKVxuXG4gICAgcmV0dXJuIG5ld0l0ZW1zXG4gIH1cblxuICBjb25zdCBzZWxlY3Rpb25Cb29rT2JqZWN0cyA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgYm9va09iamVjdD17c2VsZWN0aW9uQm9va09iamVjdHMgfHwge319XG4gICAgICBvY2N1cnJlbmNlPXtmaXhPY2N1cnJlbmNlKHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UpfVxuICAgICAgb25TZWxlY3Rpb25zPXtuZXdTZWxlY3Rpb25zID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU2VsZWN0aW9ucycsIG5ld1NlbGVjdGlvbnMpXG4gICAgICB9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlIHx8ICcnfVxuICAgICAgcmVmU3RyaW5nPXtzZWxlY3Rpb25zUmVmc31cbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgPlxuICAgICAgPENhcmRcbiAgICAgICAgaWQ9e2BzY3JpcHR1cmVfY2FyZF8ke2NhcmROdW19YH1cbiAgICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgICBzZXR0aW5nc1RpdGxlPXtzY3JpcHR1cmVUaXRsZSArICcgU2V0dGluZ3MnfVxuICAgICAgICBpdGVtcz17aXRlbXN9XG4gICAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICAgIGhlYWRlcnM9e2hlYWRlcnN9XG4gICAgICAgIGZpbHRlcnM9e2ZpbHRlcnN9XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgaXRlbUluZGV4PXtpdGVtSW5kZXh9XG4gICAgICAgIHNldEZpbHRlcnM9e3NldEZpbHRlcnN9XG4gICAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgICAgc2V0SXRlbUluZGV4PXtzZXRJdGVtSW5kZXh9XG4gICAgICAgIG1hcmtkb3duVmlldz17bWFya2Rvd25WaWV3fVxuICAgICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgICAgZ2V0Q3VzdG9tQ29tcG9uZW50PXtnZXRTY3JpcHR1cmVTZWxlY3Rvcn1cbiAgICAgICAgaGlkZU1hcmtkb3duVG9nZ2xlXG4gICAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgICAgb25NaW5pbWl6ZT17b25NaW5pbWl6ZSA/ICgpID0+IG9uTWluaW1pemUoaWQsIHNjcmlwdHVyZVRpdGxlKSA6IG51bGx9XG4gICAgICAgIGVkaXRhYmxlPXtlbmFibGVFZGl0IHx8IGVuYWJsZUFsaWdubWVudH1cbiAgICAgICAgc2F2ZWQ9e2Rpc2FibGVDaGFuZ2VCdXR0b25zIHx8IHN0YXJ0U2F2ZSB8fCAhaGF2ZVVuc2F2ZWRDaGFuZ2VzfSAvLyBncmF5IG91dCBzYXZlIGJ1dHRvbiBpZiBkaXNhYmxlZCwgaWYgc2F2aW5nLCBvciBpZiBubyB1bnNhdmVkIGNoYW5nZXNcbiAgICAgICAgb25TYXZlRWRpdD17KCkgPT4gc2V0U3RhdGUoeyBzYXZlQ2xpY2tlZDogdHJ1ZSB9KX1cbiAgICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgICA+XG4gICAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9DYXJkPlxuICAgICAgPFZlcnNlU2VsZWN0b3JQb3B1cFxuICAgICAgICByZXNvdXJjZUlkPXtyZXNvdXJjZUlkfVxuICAgICAgICBvcGVuPXtzaG93QWxpZ25tZW50UG9wdXB9XG4gICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFN0YXRlKHsgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSB9KX1cbiAgICAgICAgdmVyc2VzRm9yUmVmPXt2ZXJzZXNGb3JSZWZ9XG4gICAgICAgIHZlcnNlc0FsaWdubWVudFN0YXR1cz17dmVyc2VzQWxpZ25tZW50U3RhdHVzfVxuICAgICAgICBvblZlcnNlU2VsZWN0PXsodmVyc2UpID0+IHNldFN0YXRlKHtcbiAgICAgICAgICB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiB2ZXJzZSxcbiAgICAgICAgICBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlLFxuICAgICAgICB9KX1cbiAgICAgIC8+XG4gICAgPC9TZWxlY3Rpb25zQ29udGV4dFByb3ZpZGVyPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogYXV0aGVudGljYXRpb24gaW5mbyAqL1xuICBhdXRoZW50aWNhdGlvbjogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogc2NyaXB0dXJlIGNhcmQgbnVtYmVyICgwIHRvIDIgZm9yIGV4YW1wbGUpICovXG4gIGNhcmROdW06IFByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcbiAgLyoqIENTUyBjbGFzc2VzICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgZ3JlZWsgcmVwbyAqL1xuICBncmVla1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGhlYnJldyByZXBvICovXG4gIGhlYnJld1JlcG9Vcmw6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgbWVyZ2VDaGVjazogUHJvcFR5cGVzLm51bWJlciwgLy8gaWYgdGhpcyBjaGFuZ2VzLCBuZWVkIHRvIHJlY2hlY2sgbWVyZ2Ugc3RhdHVzXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgY2FsbGJhY2sgaWYgZXJyb3IgbG9hZGluZyByZXNvdXJjZSwgcGFyYW1ldGVyIHJldHVybmVkIGFyZTpcbiAgICogICAgKHtzdHJpbmd9IGVycm9yTWVzc2FnZSwge2Jvb2xlYW59IGlzQWNjZXNzRXJyb3IsIHtvYmplY3R9IHJlc291cmNlU3RhdHVzKVxuICAgKiAgICAgIC0gaXNBY2Nlc3NFcnJvciAtIGlzIHRydWUgaWYgdGhpcyB3YXMgYW4gZXJyb3IgdHJ5aW5nIHRvIGFjY2VzcyBmaWxlXG4gICAqICAgICAgLSByZXNvdXJjZVN0YXR1cyAtIGlzIG9iamVjdCBjb250YWluaW5nIGRldGFpbHMgYWJvdXQgcHJvYmxlbXMgZmV0Y2hpbmcgcmVzb3VyY2UgKi9cbiAgb25SZXNvdXJjZUVycm9yOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRoZSBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9vayAqL1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBQcm9wVHlwZXMub2JqZWN0LFxuICByZWZlcmVuY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIGJvb2sgSUQgdG8gdXNlLCBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgKi9cbiAgICBib29rSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogb2xkZXIgbGlicmFyaWVzIHVzZWQgcHJvamVjdElkIGluc3RlYWQgb2YgYm9va0lkICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHJlc291cmNlIG9iamVjdCAqL1xuICByZXNvdXJjZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcmVzb3VyY2UgbGFuZ3VhZ2UgdG8gdXNlICovXG4gICAgbGFuZ3VhZ2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlc291cmNlSWQgdG8gdXNlIChlLmcuIHVnbnQpICovXG4gICAgcmVzb3VyY2VJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXBvIG93bmVyIGZvciBvcmlnaW5hbCBsYW5ndWFnZXMgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqVGhpcyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQgcXVvdGUgKi9cbiAgc2VsZWN0ZWRRdW90ZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIGxvYWRpbmcgc3RhdGUgKi9cbiAgc2V0QXJlUmVzb3VyY2VzTG9hZGluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgc2F2aW5nIHN0YXRlKi9cbiAgc2V0QXJlUmVzb3VyY2VzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIG1lcmdlIHN0YXR1cyAqL1xuICBzZXRDYXJkc0xvYWRpbmdNZXJnZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCB1cGRhdGUgc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ1VwZGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byByZXBvcnQgY2FyZCBzYXZpbmcgc3RhdHVzICovXG4gIHNldENhcmRzU2F2aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHNldCBzdGF0ZSBpbiBhcHAgdGhhdCB0aGVyZSBhcmUgdW5zYXZlZCBjaGFuZ2VzICovXG4gIHNldFNhdmVkQ2hhbmdlczogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHRoZSBjYXJkJ3MgbWVyZ2Ugc3RhdGUgaW4gYXBwICovXG4gIHVwZGF0ZU1lcmdlU3RhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlIG1ldGhvZCBmb3IgdXNpbmcgbG9jYWwgc3RvcmFnZSBzcGVjaWZpYyBmb3IgdXNlciAqL1xuICB1c2VVc2VyTG9jYWxTdG9yYWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENBQUEsRUFBQWlCLFVBQUEsTUFBQUMsWUFBQSxNQUFBQyxRQUFBLFNBQUFwQixDQUFBLENBQUFELENBQUEsV0FBQWtCLE1BQUEsbUJBQUFqQixDQUFBLElBQUFpQixNQUFBLFlBQUFBLE9BQUFqQixDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxXQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxnQkFBQW9CLEtBQUFyQixDQUFB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
|
|
1664
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwiX2V4dGVuZHMiLCJhc3NpZ24iLCJiaW5kIiwidGFyZ2V0Iiwic291cmNlIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIml0ZXIiLCJmcm9tIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJvd25LZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiX29iamVjdFNwcmVhZCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwib2JqIiwiX3RvUHJvcGVydHlLZXkiLCJfdG9QcmltaXRpdmUiLCJTdHJpbmciLCJpbnB1dCIsImhpbnQiLCJwcmltIiwidG9QcmltaXRpdmUiLCJyZXMiLCJOdW1iZXIiLCJfc2xpY2VkVG9BcnJheSIsIl9hcnJheVdpdGhIb2xlcyIsIl9pdGVyYWJsZVRvQXJyYXlMaW1pdCIsIl9ub25JdGVyYWJsZVJlc3QiLCJtaW5MZW4iLCJ0b1N0cmluZyIsInRlc3QiLCJsZW4iLCJhcnIyIiwiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwiU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciIsInVzZm1qcyIsInVzZUVkaXQiLCJJY29uQnV0dG9uIiwiUnhMaW5rMiIsIlJ4TGlua0JyZWFrMiIsIkNhcmQiLCJFcnJvckRpYWxvZyIsIkVSUk9SX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlVwZGF0ZUJyYW5jaEJ1dHRvbiIsInVzZUJyYW5jaE1lcmdlciIsInVzZUNhcmRTdGF0ZSIsInVzZUNvbnRlbnRVcGRhdGVQcm9wcyIsInVzZU1hc3Rlck1lcmdlUHJvcHMiLCJ1c2VVc2VyQnJhbmNoIiwiZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiZ2V0VmVyc2VzIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZW1wdHlDb250ZW50IiwiZmV0Y2hCaWJsZUJvb2siLCJmaXhPY2N1cnJlbmNlIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwiZ2V0UmVzb3VyY2VNZXNzYWdlIiwiZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzIiwiaXNPcmlnaW5hbEJpYmxlIiwiZGVsYXkiLCJhcmVNYXBzVGhlU2FtZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiVmVyc2VTZWxlY3RvclBvcHVwIiwiZ2V0UGF0Y2giLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiVmVyc2VPYmplY3RzVHlwZSIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsImNvbXBhcmVPYmplY3QiLCJ2ZXJzZVJlZiIsIl92ZXJzZURhdGEkdmVyc2VPYmplYyIsIl9yZWYiLCJjaGFwdGVyIiwidmVyc2UiLCJ2ZXJzZURhdGEiLCJ2ZXJzZU9iamVjdHMiLCJKU09OIiwic3RyaW5naWZ5IiwiYXJlVmVyc2VzU2FtZSIsInZlcnNlc0ZvclJlZjEiLCJ2ZXJzZXNGb3JSZWYyIiwiYXJlU2FtZSIsInZlcnNlMSIsInZlcnNlMiIsImdldEN1cnJlbnRCb29rIiwic2NyaXB0dXJlQ29uZmlnIiwiYm9va0lkIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMiIsIl9ib29rTmFtZSR0b0xvd2VyQ2FzZSIsImxhdGVzdEJpYmxlIiwicmVzb3VyY2VTdGF0ZSIsInJlc291cmNlIiwicHJvamVjdElkIiwiZmlsZW5hbWUiLCJpc0Jvb2tWYWxpZCIsImJvb2tOYW1lIiwidG9Mb3dlckNhc2UiLCJpbmNsdWRlcyIsImNvbnNvbGUiLCJ3YXJuIiwiY29uY2F0IiwiYmlibGVVc2ZtIiwiU2NyaXB0dXJlQ2FyZCIsIl9yZWYyIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzQiLCJfc2NyaXB0dXJlQ29uZmlnJHJlc281IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvNiIsIl9zY3JpcHR1cmVDb25maWckcmVzbzciLCJfYXV0aGVudGljYXRpb24kdG9rZW4iLCJfc2NyaXB0dXJlQ29uZmlnJHJlc285IiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvMTAiLCJfaHR0cENvbmZpZyIsIl9odHRwQ29uZmlnMiIsIl9hdXRoZW50aWNhdGlvbiR1c2VyIiwiX3ZlcnNlc0ZvclJlZjQiLCJfdmVyc2VzRm9yUmVmNSIsImFwcFJlZiIsImF1dGhlbnRpY2F0aW9uIiwiYm9va0luZGV4IiwiY2FyZE51bSIsImNsYXNzZXMiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMYW5ndWFnZSIsImdldExleGljb25EYXRhIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImh0dHBDb25maWciLCJpZCIsImlzTlQiLCJsb2dnZWRJblVzZXIiLCJtZXJnZUNoZWNrIiwib25NaW5pbWl6ZSIsIm9uUmVzb3VyY2VFcnJvciIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2VfIiwicmVmZXJlbmNlIiwiX3JlZjIkcmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwicmVzb3VyY2VMaW5rIiwic2VsZWN0ZWRRdW90ZSIsInNlcnZlciIsInNldENhcmRzTG9hZGluZ01lcmdlIiwic2V0Q2FyZHNMb2FkaW5nVXBkYXRlIiwic2V0Q2FyZHNTYXZpbmciLCJzZXRTYXZlZENoYW5nZXMiLCJzZXRXb3JkQWxpZ25lclN0YXR1cyIsInRyYW5zbGF0ZSIsInRpdGxlIiwidXNlVXNlckxvY2FsU3RvcmFnZSIsInVwZGF0ZU1lcmdlU3RhdGUiLCJzYXZlSW5Qcm9ncmVzcyIsInVzZVJlZiIsIl9SZWFjdCR1c2VTdGF0ZSIsInVzZVN0YXRlIiwiY2hlY2tGb3JFZGl0QnJhbmNoIiwiY29udGV4dExpbmVzIiwiY3VycmVudFJlZmVyZW5jZSIsImVkaXRCcmFuY2hSZWFkeSIsImVkaXRWZXJzZSIsImZvdW5kT3JpZ2luYWxDb250ZW50IiwiaGF2ZVVuc2F2ZWRDaGFuZ2VzIiwibGFzdFNlbGVjdGVkUXVvdGUiLCJyZWFkeUZvckZldGNoIiwicmVmIiwic2F2ZUNsaWNrZWQiLCJzYXZlQ29udGVudCIsInNhdmVEaWZmUGF0Y2giLCJzYXZlRnVsbEJpYmxlQ29udGVudCIsInNlbGVjdGlvbnMiLCJNYXAiLCJzZWxlY3Rpb25zUmVmcyIsInNob3dBbGlnbm1lbnRQb3B1cCIsInN0YXJ0U2F2ZSIsInVybEVycm9yIiwidXNpbmdVc2VyQnJhbmNoIiwidW5zYXZlZENoYW5nZXNMaXN0IiwidmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidmVyc2VzRm9yUmVmIiwidmVyc2VPYmplY3RzTWFwIiwidmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl91c2VVc2VyTG9jYWxTdG9yYWdlIiwiX3VzZVVzZXJMb2NhbFN0b3JhZ2UyIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwibm9DYWNoZSIsIl91c2VTY3JpcHR1cmVTZXR0aW5ncyIsInNldFVybEVycm9yIiwid2hvbGVCb29rIiwiaXNOZXdUZXN0YW1lbnQiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVTZXR0aW5ncyIsInNjcmlwdHVyZVZlcnNpb25IaXN0IiwiZmV0Y2hlZFJlc291cmNlIiwicmVwbyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJfdXNlVXNlckJyYW5jaCIsImNhcmRJZCIsIl91c2VVc2VyQnJhbmNoJHN0YXRlIiwiYnJhbmNoRGV0ZXJtaW5lZCIsInVzZXJFZGl0QnJhbmNoTmFtZSIsIl91c2luZ1VzZXJCcmFuY2giLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfdXNlVXNlckJyYW5jaCRhY3Rpb24iLCJhY3Rpb25zIiwic3RhcnRFZGl0QnJhbmNoIiwic3RhcnRFZGl0IiwiZmluaXNoRWRpdCIsIl91c2VCcmFuY2hNZXJnZXIiLCJ1c2VyQnJhbmNoIiwidG9rZW5pZCIsInRva2VuIiwic2hhMSIsIl91c2VCcmFuY2hNZXJnZXIkc3RhdCIsIm1lcmdlVG9NYXN0ZXIiLCJtZXJnZVN0YXR1cyIsIm1lcmdlRnJvbU1hc3RlciIsInVwZGF0ZVN0YXR1cyIsImNoZWNrTWVyZ2VTdGF0dXMiLCJ1c2VFZmZlY3QiLCJ1cGRhdGVCdXR0b25Qcm9wcyIsImlzU2F2aW5nIiwib25VcGRhdGUiLCJyZWxvYWRSZXNvdXJjZSIsImNhbGxVcGRhdGVVc2VyQnJhbmNoIiwiaXNFcnJvckRpYWxvZ09wZW4iLCJvbkNsb3NlRXJyb3JEaWFsb2ciLCJpc1VwZGF0ZUxvYWRpbmciLCJpc0xvYWRpbmciLCJkaWFsb2dNZXNzYWdlIiwiZGlhbG9nVGl0bGUiLCJkaWFsb2dMaW5rIiwiZGlhbG9nTGlua1Rvb2x0aXAiLCJvbk1lcmdlIiwibG9nIiwiX3VzZU1hc3Rlck1lcmdlUHJvcHMiLCJpc01lcmdlTG9hZGluZyIsImNhbGxNZXJnZVVzZXJCcmFuY2giLCJwcmV2Q2FyZHNMb2FkaW5nIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwiX3NjcmlwdHVyZUNvbmZpZyRyZXNvOCIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImlzQWNjZXNzRXJyb3IiLCJ2ZXJzaW9uIiwidXBkYXRlVGl0bGUiLCJnZXRTY3JpcHR1cmVTZWxlY3RvciIsInNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyIsImNyZWF0ZUVsZW1lbnQiLCJlcnJvck1lc3NhZ2UiLCJzZXRFZGl0VmVyc2UiLCJlZGl0aW5nIiwiZGlzYWJsZUNoYW5nZUJ1dHRvbnMiLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJfcmVmZXJlbmNlIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsIl91c2VDYXJkU3RhdGUiLCJfdXNlQ2FyZFN0YXRlJHN0YXRlIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJfdXNlQ2FyZFN0YXRlJGFjdGlvbnMiLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsImxpbmVIZWlnaHQiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJfcmVmMyIsIl9yZWYzJGdldENoYW5nZXMiLCJnZXRDaGFuZ2VzIiwiX3JlZjMkY2xlYXJDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3JlZjMkc3RhdGUiLCJfdW5zYXZlZENoYW5nZXNMaXN0IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsImZpbmRSZWZJbkFycmF5IiwiZmluZEl0ZW0iLCJjaHVua3MiLCJyZWZMZW4iLCJpbmRleCIsImZpbmRJbmRleCIsImNodW5rIiwiaWR4Iiwic3Vic3RyaW5nIiwibmV4dENoYXIiLCJnZXRCb29rTmFtZSIsIl9zY3JpcHR1cmVDb25maWckcmVmZSIsImJvb2tDYXBzIiwidG9VcHBlckNhc2UiLCJmaWxlcGF0aCIsInNoYSIsIl91c2VFZGl0IiwiY29udGVudCIsImNvbmZpZyIsImRvbnRDcmVhdGVCcmFuY2giLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImVtYWlsIiwidXNlciIsImJyYW5jaCIsInNhdmVFcnJvciIsImlzU2F2ZUVycm9yIiwiaXNFcnJvciIsIm9uU2F2ZUVkaXQiLCJvblNhdmVFZGl0UGF0Y2giLCJjdXJyZW50IiwiX3NhdmVTdWNjZXNmdWwiLCJwcmV2Q2FyZHNTYXZpbmciLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJfaXRlcmF0b3IiLCJfc3RlcCIsImNhcmRJbmRleCIsImxvZ0NoYW5nZWQiLCJjb21tZW50IiwiaW5pdGlhbCIsImZpbmFsIiwiZGlmZiIsIl9zYXZlRWRpdCIsIl9yZWY0IiwiX2NhbGxlZSIsInVwbG9hZEZ1bmN0aW9uIiwic3VjY2VzcyIsInJlc3VsdHMiLCJfc2F2ZUNvbnRlbnQiLCJmaWxlU2hhIiwic2F2ZWRCaWJsZVVzZm0iLCJlZGl0ZWRCaWJsZVVzZm0iLCJ1cFRvRGF0ZSIsIm5ld0NvbnRleHRMaW5lcyIsImRpZmZQYXRjaCIsIl9jYWxsZWUkIiwiX2NvbnRleHQiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwiZnJvbnRNYXR0ZXIiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJwcmVmaXhMZW4iLCJpbmRleE9mIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlYWR5Rm9yU2F2ZSIsIl9nZXRSZWFkeUZvclNhdmUiLCJfY2FsbGVlMiIsImNyZWF0ZUVkaXRCcmFuY2giLCJiaWJsZVVzZm1Jbml0aWFsIiwiYmlibGVVc2ZtTmV3IiwibWVyZ2VGYWlsIiwiX2NhcmROdW0iLCJfaXRlcmF0b3IyIiwiX3N0ZXAyIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCRfIiwiX3N0YXRlIiwiX2dldENoYW5nZXMiLCJfcmVmNSIsIl9zYXZlRGlmZlBhdGNoIiwiX3NhdmVGdWxsQmlibGVDb250ZW50IiwibmV3Qm9va0pzb24iLCJfaXRlcmF0b3IzIiwiX3N0ZXAzIiwiX2NhcmRJbmRleCIsIl9jYXJkTnVtMiIsIl91bnNhdmVkQ2hhbmdlc0xpc3QkXzIiLCJfZ2V0Q2hhbmdlczIiLCJfc3RhdGUyIiwiX25ld1VzZm0iLCJfZ2V0Q2hhbmdlczMiLCJuZXdWZXJzZVRleHQiLCJfcmVmNiIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidGFyZ2V0VmVyc2VPYmplY3RzXyIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZCIsInRhcmdldFZlcnNlT2JqZWN0cyIsIl9zY3JpcHR1cmVDb25maWckcmVzbzExIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwicGFyc2VJbnQiLCJ0MCIsInVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlIiwidXBkYXRlVmVyc2UiLCJ0b1VTRk0iLCJmb3JjZWROZXdMaW5lcyIsIl9yZWY3IiwiX3ZlcnNlc0ZvclJlZiIsIm5ld1NlbGVjdGlvbnMiLCJ1cGRhdGVTZWxlY3Rpb25zIiwiX21hcCIsIm9yaWdpbmFsQm9va0lkIiwiYm9va1ZlcnNlT2JqZWN0IiwiY2hhcHRlcnMiLCJuZXdTZWxlY3RlZFF1b3RlIiwicXVvdGUiLCJfc2VsZWN0ZWRRdW90ZSRyZWZlcmUzIiwib3JpZ2luYWxWZXJzZXMiLCJzdWJzdGl0dXRlIiwic3RhcnRWZXJzZSIsImxhc3RWZXJzZSIsIl92ZXJzZSIsInZlcnNlcyIsIl9pdGVyYXRvcjQiLCJfc3RlcDQiLCJ2ZXJzZUl0ZW0iLCJ2byIsIl9ib29rVmVyc2VPYmplY3QkX2NoYSIsInNldCIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZSIsIl9zZWxlY3RlZFF1b3RlJHJlZmVyZTIiLCJzdWJSZWYiLCJxdW90ZU1hdGNoZXMiLCJib29rT2JqZWN0Iiwib2NjdXJyZW5jZSIsInNpemUiLCJ3b3JkcyIsIl9rZXkiLCJtYXAiLCJ3b3JkIiwidGV4dCIsIm5vcm1hbGl6ZVN0cmluZyIsImJvb2tzTm90U2FtZSIsIl92ZXJzZXNGb3JSZWYyIiwiX2ZvdW5kT3JpZ2luYWxDb250ZW50IiwiX2l0ZXJhdG9yNSIsIl9zdGVwNSIsIl9ib29rVmVyc2VPYmplY3QkX2NoYTIiLCJpc1ZlcnNlTm90RW1wdHkiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJhbGlnbmVkIiwiX3ZlcnNlc0ZvclJlZjMiLCJfcmVmOCIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJfY3VycmVudFZlcnNlRGF0YSIsIl9jdXJyZW50VmVyc2VEYXRhJHZlciIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmOSIsImJvb2tJZF8iLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsImRldGVybWluaW5nQnJhbmNoIiwib25BbGlnbm1lbnRGaW5pc2giLCJzYXZpbmciLCJoYW5kbGVBbGlnbkJ1dHRvbkNsaWNrIiwib25SZW5kZXJUb29sYmFyIiwiX3JlZjEwIiwibmV3SXRlbXMiLCJhbGxWZXJzZXNBbGlnbmVkIiwiZXZlcnkiLCJhbGlnblN0YXR1cyIsImFsaWduSWNvbiIsImFsaWduQnV0dG9uVGV4dCIsImNvbG9yIiwib25DbGljayIsImN1cnNvciIsIkZyYWdtZW50Iiwib3BlbiIsIm9uQ2xvc2UiLCJsaW5rIiwibGlua1Rvb2x0aXAiLCJzZWxlY3Rpb25Cb29rT2JqZWN0cyIsInRhcmdldFZlcnNlc0ZvclJlZiIsImhpZ2hsaWdodE9ubHlDb21wbGV0ZVF1b3RlcyIsIm9uU2VsZWN0aW9ucyIsIm9yaWdpbmFsQm9va09iamVjdHMiLCJyZWZTdHJpbmciLCJzZXR0aW5nc1RpdGxlIiwiZ2V0Q3VzdG9tQ29tcG9uZW50IiwiaGlkZU1hcmtkb3duVG9nZ2xlIiwiZWRpdGFibGUiLCJvblZlcnNlU2VsZWN0IiwicHJvcFR5cGVzIiwic3RyaW5nIiwiaXNSZXF1aXJlZCIsIm9iamVjdCIsIm51bWJlciIsImJvb2wiLCJmdW5jIiwic2hhcGUiLCJvbmVPZlR5cGUiLCJhbnkiLCJzZXRBcmVSZXNvdXJjZXNMb2FkaW5nIiwic2V0QXJlUmVzb3VyY2VzU2F2aW5nIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlQ2FyZC9TY3JpcHR1cmVDYXJkLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSwgU2VsZWN0aW9uc0NvbnRleHRQcm92aWRlciB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7IFJ4TGluazIsIFJ4TGlua0JyZWFrMiB9IGZyb20gJ3JlYWN0LWljb25zL3J4J1xuaW1wb3J0IHtcbiAgQ2FyZCxcbiAgRXJyb3JEaWFsb2csXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBVcGRhdGVCcmFuY2hCdXR0b24sXG4gIHVzZUJyYW5jaE1lcmdlcixcbiAgdXNlQ2FyZFN0YXRlLFxuICB1c2VDb250ZW50VXBkYXRlUHJvcHMsXG4gIHVzZU1hc3Rlck1lcmdlUHJvcHMsXG4gIHVzZVVzZXJCcmFuY2gsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZiB9IGZyb20gJ3V3LXF1b3RlLWhlbHBlcnMnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZW1wdHlDb250ZW50LFxuICBmZXRjaEJpYmxlQm9vayxcbiAgZml4T2NjdXJyZW5jZSxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgZGVsYXkgfSBmcm9tICcuLi8uLi91dGlscy9kZWxheSdcbmltcG9ydCB7IGFyZU1hcHNUaGVTYW1lIH0gZnJvbSAnLi4vLi4vdXRpbHMvbWFwcydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcbmltcG9ydCB7IFZlcnNlU2VsZWN0b3JQb3B1cCB9IGZyb20gJy4uL1ZlcnNlU2VsZWN0b3JQb3B1cCdcbmltcG9ydCB7IGdldFBhdGNoIH0gZnJvbSAnLi4vLi4vdXRpbHMvZmlsZXMnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2VUeXBlLCBWZXJzZU9iamVjdHNUeXBlIH0gZnJvbSAnLi4vLi4vdHlwZXMnXG5cbmNvbnN0IEtFWV9GT05UX1NJWkVfQkFTRSA9ICdzY3JpcHR1cmVQYW5lRm9udFNpemVfJ1xuY29uc3QgbGFiZWwgPSAnVmVyc2lvbidcbmNvbnN0IHN0eWxlID0geyBtYXJnaW5Ub3A6ICcxNnB4Jywgd2lkdGg6ICc1MDBweCcgfVxuXG4vKipcbiAqIGNyZWF0ZSBhIHNob3J0IGNvbXBhcmlzb24gdmVyc2UgcmVmIG9iamVjdCB3aXRob3V0IGFsbCB0aGUgdmVyc2VEYXRhXG4gKiBAcGFyYW0gdmVyc2VSZWZcbiAqL1xuZnVuY3Rpb24gY29tcGFyZU9iamVjdCh2ZXJzZVJlZikge1xuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICB2ZXJzZURhdGEsXG4gIH0gPSB2ZXJzZVJlZiB8fCB7fVxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSB2ZXJzZURhdGE/LnZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gSlNPTi5zdHJpbmdpZnkodmVyc2VEYXRhLnZlcnNlT2JqZWN0cykgOiAnJ1xuICByZXR1cm4ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgdmVyc2VPYmplY3RzLFxuICB9XG59XG5cbi8qKlxuICogY29tcGFyZSB0d28gdmVyc2UgcmVmcyB0byBzZWUgaWYgdGhleSBhcmUgc3Vic3RhbnRpYWxseSBzaW1pbGFyXG4gKiBAcGFyYW0gdmVyc2VzRm9yUmVmMVxuICogQHBhcmFtIHZlcnNlc0ZvclJlZjJcbiAqL1xuZnVuY3Rpb24gYXJlVmVyc2VzU2FtZSh2ZXJzZXNGb3JSZWYxOiBhbnlbXSwgdmVyc2VzRm9yUmVmMjogYW55W10pIHtcbiAgdmVyc2VzRm9yUmVmMSA9IHZlcnNlc0ZvclJlZjEgfHwgW11cbiAgdmVyc2VzRm9yUmVmMiA9IHZlcnNlc0ZvclJlZjIgfHwgW11cbiAgbGV0IGFyZVNhbWUgPSBmYWxzZVxuXG4gIGlmICh2ZXJzZXNGb3JSZWYxLmxlbmd0aCA9PT0gdmVyc2VzRm9yUmVmMi5sZW5ndGgpIHtcbiAgICBhcmVTYW1lID0gdHJ1ZVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGw9IHZlcnNlc0ZvclJlZjEubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICBjb25zdCB2ZXJzZTEgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjFbaV0pXG4gICAgICBjb25zdCB2ZXJzZTIgPSBjb21wYXJlT2JqZWN0KHZlcnNlc0ZvclJlZjJbaV0pXG4gICAgICBhcmVTYW1lID0gaXNFcXVhbCh2ZXJzZTEsIHZlcnNlMilcblxuICAgICAgaWYgKCFhcmVTYW1lKSB7XG4gICAgICAgIGJyZWFrXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFyZVNhbWVcbn1cblxuLyoqXG4gKiBnZXQgdGhlIFVTRk0gZm9yIGJvb2tJZCBmcm9tIHNjcmlwdHVyZUNvbmZpZy5cbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB7c3RyaW5nfSBib29rSWRcbiAqL1xuZXhwb3J0IGNvbnN0IGdldEN1cnJlbnRCb29rID0gKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSA9PiB7XG4gIGNvbnN0IGxhdGVzdEJpYmxlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucHJvamVjdElkXG4gIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICBsZXQgaXNCb29rVmFsaWQgPSBmYWxzZVxuICBjb25zdCBib29rTmFtZSA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSlcbiAgaXNCb29rVmFsaWQgPSBib29rTmFtZT8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuICBpZiAoIWlzQm9va1ZhbGlkKSB7XG4gICAgY29uc29sZS53YXJuKGBDdXJyZW50IGJvb2tJZCBpcyAke2Jvb2tJZH0gYW5kIFVTRk0gZmlsZSBpcyAke2ZpbGVuYW1lfWApXG4gIH1cbiAgaWYgKGxhdGVzdEJpYmxlPy50b0xvd2VyQ2FzZSgpICE9PSBib29rSWQpIHtcbiAgICBjb25zb2xlLndhcm4oYEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBidXQgZmV0Y2hlZCBwcm9qZWN0SWQgaXMgJHtsYXRlc3RCaWJsZX1gKVxuICAgIGlzQm9va1ZhbGlkID0gZmFsc2VcbiAgfVxuICBpZiAoaXNCb29rVmFsaWQpIHtcbiAgICBjb25zdCBiaWJsZVVzZm0gPSBzY3JpcHR1cmVDb25maWc/LmJpYmxlVXNmbTtcbiAgICBpZiAoYmlibGVVc2ZtKSB7XG4gICAgICByZXR1cm4gYmlibGVVc2ZtXG4gICAgfVxuICAgIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBCaWJsZSBVU0ZNIG1pc3NpbmdgKVxuICB9XG4gIGNvbnNvbGUuZXJyb3IoYGdldEN1cnJlbnRCb29rKCkgLSBFeHBlY3RlZCAke2Jvb2tJZH0gYnV0IGdvdCBmaWxlICR7ZmlsZW5hbWV9YClcbiAgcmV0dXJuIG51bGxcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGFwcFJlZixcbiAgYXV0aGVudGljYXRpb24sXG4gIGJvb2tJbmRleCxcbiAgY2FyZE51bSxcbiAgY2xhc3NlcyxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBnZXRMYW5ndWFnZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgaHR0cENvbmZpZyxcbiAgaWQsXG4gIGlzTlQsXG4gIGxvZ2dlZEluVXNlcixcbiAgbWVyZ2VDaGVjayxcbiAgb25NaW5pbWl6ZSxcbiAgb25SZXNvdXJjZUVycm9yLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2U6IHJlZmVyZW5jZV8sXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZWxlY3RlZFF1b3RlLFxuICBzZXJ2ZXIsXG4gIHNldENhcmRzTG9hZGluZ01lcmdlLFxuICBzZXRDYXJkc0xvYWRpbmdVcGRhdGUsXG4gIHNldENhcmRzU2F2aW5nLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICB0cmFuc2xhdGUsXG4gIHRpdGxlLFxuICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB1cGRhdGVNZXJnZVN0YXRlLFxufSkge1xuICBjb25zdCBzYXZlSW5Qcm9ncmVzcyA9IFJlYWN0LnVzZVJlZihmYWxzZSk7IC8vIEFkZCByZWYgdG8gdHJhY2sgc2F2ZSBvcGVyYXRpb25cbiAgY29uc3QgYm9va0lkID0gcmVmZXJlbmNlXz8uYm9va0lkIHx8IHJlZmVyZW5jZV8/LnByb2plY3RJZCAvLyBvbGRlciB2ZXJzaW9ucyB1c2UgcHJvamVjdElkLCBzbyBmYWxsIGJhY2sgdG8gdGhhdFxuICBjb25zdCByZWZlcmVuY2UgPSB7XG4gICAgYm9va0lkLFxuICAgIGNoYXB0ZXI6IHJlZmVyZW5jZV8/LmNoYXB0ZXIsXG4gICAgdmVyc2U6IHJlZmVyZW5jZV8/LnZlcnNlLFxuICB9XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2g6IDAsXG4gICAgY29udGV4dExpbmVzOiA0LFxuICAgIGN1cnJlbnRSZWZlcmVuY2U6IG51bGwsXG4gICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICBlZGl0VmVyc2U6IG51bGwsXG4gICAgZm91bmRPcmlnaW5hbENvbnRlbnQ6IGZhbHNlLFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgbGFzdFNlbGVjdGVkUXVvdGU6IG51bGwsXG4gICAgcmVhZHlGb3JGZXRjaDogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNhdmVEaWZmUGF0Y2g6IGZhbHNlLFxuICAgIHNhdmVGdWxsQmlibGVDb250ZW50OiBudWxsLFxuICAgIHNlbGVjdGlvbnM6IG5ldyBNYXAoKSxcbiAgICBzZWxlY3Rpb25zUmVmczogJycsXG4gICAgc2hvd0FsaWdubWVudFBvcHVwOiBmYWxzZSxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IG51bGwsXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICAgIHZlcnNlT2JqZWN0c01hcDogbmV3IE1hcCgpLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICBjaGVja0ZvckVkaXRCcmFuY2gsXG4gICAgY29udGV4dExpbmVzLFxuICAgIGN1cnJlbnRSZWZlcmVuY2UsXG4gICAgZWRpdEJyYW5jaFJlYWR5LFxuICAgIGVkaXRWZXJzZSwgLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBiZWluZyBlZGl0dGVkXG4gICAgZm91bmRPcmlnaW5hbENvbnRlbnQsXG4gICAgaGF2ZVVuc2F2ZWRDaGFuZ2VzLFxuICAgIGxhc3RTZWxlY3RlZFF1b3RlLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNhdmVEaWZmUGF0Y2gsXG4gICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQsXG4gICAgc2VsZWN0aW9ucyxcbiAgICBzZWxlY3Rpb25zUmVmcyxcbiAgICBzaG93QWxpZ25tZW50UG9wdXAsXG4gICAgc3RhcnRTYXZlLFxuICAgIHVybEVycm9yLFxuICAgIHVzaW5nVXNlckJyYW5jaCxcbiAgICB1bnNhdmVkQ2hhbmdlc0xpc3QsXG4gICAgdmVyc2VPYmplY3RzTWFwLFxuICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfSA9IHN0YXRlXG5cbiAgY29uc3QgW2ZvbnRTaXplLCBzZXRGb250U2l6ZV0gPSB1c2VVc2VyTG9jYWxTdG9yYWdlKEtFWV9GT05UX1NJWkVfQkFTRSArIGNhcmROdW0sIDEwMClcbiAgY29uc3QgaXNOVF8gPSBpc05UKGJvb2tJZClcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIGh0dHBDb25maWcgPSB7XG4gICAgLi4uaHR0cENvbmZpZyxcbiAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICBub0NhY2hlOiB0cnVlLFxuICB9IC8vIGRpc2FibGUgaHR0cCBjYWNoaW5nXG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgYXBwUmVmOiByZWYsXG4gICAgY2FyZE51bSxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgZ3JlZWtSZXBvVXJsLFxuICAgIGhlYnJld1JlcG9VcmwsXG4gICAgaHR0cENvbmZpZyxcbiAgICBpc05ULFxuICAgIGxhbmd1YWdlSWQsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIG93bmVyLFxuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgcmVmZXJlbmNlOiBjdXJyZW50UmVmZXJlbmNlIHx8IHJlZmVyZW5jZSxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBzZXJ2ZXIsXG4gICAgdGl0bGUsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSAhIShsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiYgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiYgLy8gVFJJQ0tZIGlmIG5vdCBvcmlnaW5hbCBsYW5ndWFnZSBhbmQgd2UgaGF2ZSBsb2dpbiBkYXRhLCB0aGVuIHdlIGNhbiB1c2UgdGhlIGVkaXQgYnJhbmNoXG4gICAgKChyZWZfID09PSAnbWFzdGVyJykgfHwgKHJlZl8uaW5jbHVkZXMobG9nZ2VkSW5Vc2VyKSkpKSAvLyBhbHNvIG1ha2Ugc3VyZSBub3QgYSB2ZXJzaW9uIHRhZ1xuXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgYnJhbmNoRGV0ZXJtaW5lZCxcbiAgICAgIHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCxcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHN0YXJ0RWRpdDogc3RhcnRFZGl0QnJhbmNoLFxuICAgICAgZmluaXNoRWRpdCxcbiAgICB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgYXBwUmVmLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJZCxcbiAgICBjYXJkSWQ6IGlkLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIGNoZWNrRm9yRWRpdEJyYW5jaCxcbiAgICBsYW5ndWFnZUlkLFxuICAgIGxvZ2dlZEluVXNlcjogY2FuVXNlRWRpdEJyYW5jaCA/IGxvZ2dlZEluVXNlciA6IG51bGwsXG4gICAgb3duZXIsXG4gICAgb25SZXNvdXJjZUVycm9yLFxuICAgIHNlcnZlcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IF91c2VCcmFuY2hNZXJnZXIgPSB1c2VCcmFuY2hNZXJnZXIoeyBzZXJ2ZXIsIG93bmVyLCByZXBvLCB1c2VyQnJhbmNoOiB1c2VyRWRpdEJyYW5jaE5hbWUsIHRva2VuaWQ6IGF1dGhlbnRpY2F0aW9uPy50b2tlbj8uc2hhMSB9KVxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIG1lcmdlU3RhdHVzOiBtZXJnZVRvTWFzdGVyLFxuICAgICAgdXBkYXRlU3RhdHVzOiBtZXJnZUZyb21NYXN0ZXIsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjaGVja01lcmdlU3RhdHVzLFxuICAgIH1cbiAgfSA9IF91c2VCcmFuY2hNZXJnZXJcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChtZXJnZUNoZWNrKSB7XG4gICAgICBjaGVja01lcmdlU3RhdHVzICYmIGNoZWNrTWVyZ2VTdGF0dXMoKSAvLyBldmVyeSB0aW1lIG1lcmdlQ2hlY2sgY2hhbmdlcywgY2hlY2sgbWVyZ2Ugc3RhdHVzIGFnYWluXG4gICAgfVxuICB9LCBbbWVyZ2VDaGVja10pXG5cbiAgY29uc3QgdXBkYXRlQnV0dG9uUHJvcHMgPSB1c2VDb250ZW50VXBkYXRlUHJvcHMoe1xuICAgIGlzU2F2aW5nOiBzdGFydFNhdmUsXG4gICAgdXNlQnJhbmNoTWVyZ2VyOiBfdXNlQnJhbmNoTWVyZ2VyLFxuICAgIG9uVXBkYXRlOiAoKSA9PiB7XG4gICAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4gc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpKVxuICAgIH0sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGNhbGxVcGRhdGVVc2VyQnJhbmNoLFxuICAgIGlzRXJyb3JEaWFsb2dPcGVuLFxuICAgIG9uQ2xvc2VFcnJvckRpYWxvZyxcbiAgICBpc0xvYWRpbmc6IGlzVXBkYXRlTG9hZGluZyxcbiAgICBkaWFsb2dNZXNzYWdlLFxuICAgIGRpYWxvZ1RpdGxlLFxuICAgIGRpYWxvZ0xpbmssXG4gICAgZGlhbG9nTGlua1Rvb2x0aXAsXG4gIH0gPSB1cGRhdGVCdXR0b25Qcm9wc1xuXG4gIGNvbnN0IG9uTWVyZ2UgPSAoKSA9PiB7XG4gICAgZmluaXNoRWRpdCgpXG4gICAgY29uc29sZS5sb2coYG9uTWVyZ2UoKSBzd2l0Y2hpbmcgYmFjayB0byBtYXN0ZXIgYWZ0ZXIgbWVyZ2UgYXBwUmVmOmAsIGFwcFJlZilcbiAgICBzZXRTdGF0ZSh7XG4gICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIHJlZjogYXBwUmVmLFxuICAgIH0pXG4gICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgY2hlY2tGb3JFZGl0QnJhbmNoOiBjaGVja0ZvckVkaXRCcmFuY2ggKyAxLCAvLyB0cmlnZ2VyIHJlY2hlY2sgb2YgdXNlciBicmFuY2ggd2hpY2ggd2lsbCBzd2l0Y2ggdGhlIGJyYW5jaCBiYWNrIHRvIG1hc3RlclxuICAgICAgICByZWFkeUZvckZldGNoOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IHsgaXNMb2FkaW5nOiBpc01lcmdlTG9hZGluZywgY2FsbE1lcmdlVXNlckJyYW5jaCB9ID0gdXNlTWFzdGVyTWVyZ2VQcm9wcyh7XG4gICAgaXNTYXZpbmc6IHN0YXJ0U2F2ZSxcbiAgICB1c2VCcmFuY2hNZXJnZXI6IF91c2VCcmFuY2hNZXJnZXIsXG4gICAgb25NZXJnZSxcbiAgfSlcblxuICAvLyBTaW5jZSBvcmlnaW5hbCB0ZXh0IChHcmVlay9IZWJyZXcpIHNob3VsZCBub3QgYmUgZWRpdGVkLCBkbyBub3QgaW5jbHVkZVxuICAvLyB0aGVtIGluIG1lcmdlIHN0YXRlIHNpbmNlIHVzZXIgd2lsbCBub3QgbWVyZ2UvcHVzaCBjaGFuZ2VzLlxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChjYXJkUmVzb3VyY2VJZCAmJiAhdXNpbmdPcmlnaW5hbEJpYmxlKSB7XG4gICAgICB1cGRhdGVNZXJnZVN0YXRlICYmIHVwZGF0ZU1lcmdlU3RhdGUoXG4gICAgICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgICAgICBzY3JpcHR1cmVDb25maWcudGl0bGUgfHwgc2NyaXB0dXJlU2V0dGluZ3MudGl0bGUsXG4gICAgICAgIG1lcmdlRnJvbU1hc3RlcixcbiAgICAgICAgbWVyZ2VUb01hc3RlcixcbiAgICAgICAgY2FsbFVwZGF0ZVVzZXJCcmFuY2gsXG4gICAgICAgIGNhbGxNZXJnZVVzZXJCcmFuY2gsXG4gICAgICApXG4gICAgfVxuICB9LFtjYXJkUmVzb3VyY2VJZCwgc2NyaXB0dXJlQ29uZmlnLnRpdGxlLCBtZXJnZUZyb21NYXN0ZXIsIG1lcmdlVG9NYXN0ZXJdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzVXBkYXRlTG9hZGluZykge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlPy4ocHJldkNhcmRzTG9hZGluZyA9PiBbLi4ucHJldkNhcmRzTG9hZGluZywgY2FyZFJlc291cmNlSWRdKVxuICAgIH0gZWxzZSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdVcGRhdGU/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc1VwZGF0ZUxvYWRpbmddKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzTWVyZ2VMb2FkaW5nKSB7XG4gICAgICBzZXRDYXJkc0xvYWRpbmdNZXJnZT8uKHByZXZDYXJkc0xvYWRpbmcgPT4gWy4uLnByZXZDYXJkc0xvYWRpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0Q2FyZHNMb2FkaW5nTWVyZ2U/LihwcmV2Q2FyZHNMb2FkaW5nID0+IHByZXZDYXJkc0xvYWRpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICB9XG4gIH0sIFtpc01lcmdlTG9hZGluZ10pXG5cbiAgY29uc3Qgd29ya2luZ1JlZiA9IGNhblVzZUVkaXRCcmFuY2ggPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiBhcHBSZWZcbiAgbGV0IHNjcmlwdHVyZVRpdGxlXG5cbiAgaWYgKCFjYW5Vc2VFZGl0QnJhbmNoICYmICFyZWFkeUZvckZldGNoKSB7IC8vIGlmIGJpYmxlIG5vdCBlbGlnaWJsZSBmb3IgdXNlciBicmFuY2gsIG1ha2Ugc3VyZSBpdCdzIHJlYWR5XG4gICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVDYXJkIGJvb2sgY2hhbmdlZGAsIHsgYm9va0lkLCBvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCB9KVxuXG4gICAgaWYgKGNhblVzZUVkaXRCcmFuY2gpIHsgLy8gaWYgYmlibGUgZWxpZ2libGUgZm9yIHVzZXIgYnJhbmNoLCByZWZyZXNoIGl0XG4gICAgICBzZXRTdGF0ZSh7IHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLCBjaGVja0ZvckVkaXRCcmFuY2g6IGNoZWNrRm9yRWRpdEJyYW5jaCArIDEgfSlcbiAgICB9XG4gIH0sIFtib29rSWQsIG93bmVyLCBsYW5ndWFnZUlkLCByZXNvdXJjZUlkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNFcXVhbChyZWZlcmVuY2UsIGN1cnJlbnRSZWZlcmVuY2UpKSB7XG4gICAgICAvLyBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZCByZWZlcmVuY2UgY2hhbmdlZGAsIHJlZmVyZW5jZSlcbiAgICAgIHNldFN0YXRlKHsgY3VycmVudFJlZmVyZW5jZTogcmVmZXJlbmNlLCBlZGl0VmVyc2U6IG51bGwgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdhaXRpbmcgZm9yIGJyYW5jaCBmZXRjaCB0byBjb21wbGV0ZVxuICAgIGlmICghcmVhZHlGb3JGZXRjaCAmJiBicmFuY2hEZXRlcm1pbmVkICkge1xuICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZUNhcmQgYnJhbmNoRGV0ZXJtaW5lZCBpcyAke2JyYW5jaERldGVybWluZWR9IGFuZCB3b3JraW5nUmVmIGlzICR7d29ya2luZ1JlZn1gKVxuICAgICAgc2V0U3RhdGUoeyByZWFkeUZvckZldGNoOiB0cnVlLCByZWY6IHdvcmtpbmdSZWYgfSlcbiAgICB9XG4gIH0sIFticmFuY2hEZXRlcm1pbmVkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAoX3VzaW5nVXNlckJyYW5jaCAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogX3VzaW5nVXNlckJyYW5jaCB9KVxuICAgIH1cbiAgfSwgW191c2luZ1VzZXJCcmFuY2gsIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWc/LnJlc291cmNlKVxuICAgICAgY29uc3QgbWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlRfKVxuICAgICAgY29uc3QgaXNBY2Nlc3NFcnJvciA9IHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdXG4gICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG1lc3NhZ2UsIGlzQWNjZXNzRXJyb3IsIHJlc291cmNlU3RhdHVzKVxuICAgIH1cbiAgfSwgW3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1dKVxuXG4gIGlmIChzY3JpcHR1cmVDb25maWcudGl0bGUgJiYgc2NyaXB0dXJlQ29uZmlnLnZlcnNpb24pIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGAke3NjcmlwdHVyZUNvbmZpZy50aXRsZX0gdiR7c2NyaXB0dXJlQ29uZmlnLnZlcnNpb259YFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnVwZGF0ZVRpdGxlKHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssIHNjcmlwdHVyZVRpdGxlKVxuICB9IGVsc2Uge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYFRpdGxlIG1pc3NpbmcgZnJvbSBwcm9qZWN0IG1hbmlmZXN0YFxuICB9XG5cbiAgLyoqIER5bmFtaWNhbGx5IGNyZWF0ZXMgdGhlIHNjcmlwdHVyZSBzZWxlY3Rpb24gZHJvcGRvd24gdG8gYmUgaW5zZXJ0ZWQgaW50byBjYXJkIHNldHRpbmdzICovXG4gIGZ1bmN0aW9uIGdldFNjcmlwdHVyZVNlbGVjdG9yKCkge1xuICAgIGNvbnN0IHNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZyA9IGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyh7XG4gICAgICBsYWJlbCxcbiAgICAgIHJlc291cmNlTGluazogc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluayxcbiAgICAgIHNldFNjcmlwdHVyZSxcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICAgIH0pXG5cbiAgICByZXR1cm4gPFNjcmlwdHVyZVNlbGVjdG9yIHsuLi5zY3JpcHR1cmVTZWxlY3Rpb25Db25maWd9IHN0eWxlPXtzdHlsZX0gZXJyb3JNZXNzYWdlPXt1cmxFcnJvcn0gLz5cbiAgfVxuXG4gIC8qKlxuICAgKiBzZXQgZWRpdCBzdGF0ZSBmb3Igc3BlY2lmaWMgdmVyc2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlUmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIGJlaW5nIGVkaXRlZCBvciBmaW5pc2hlZCBlZGl0XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZyAtIHRydWUgd2hlbiBlZGl0aW5nXG4gICAqL1xuICBmdW5jdGlvbiBzZXRFZGl0VmVyc2UodmVyc2VSZWYsIGVkaXRpbmcpIHtcbiAgICBpZiAoZWRpdGluZyAmJiAodmVyc2VSZWYgIT09IGVkaXRWZXJzZSkpIHsgLy8gY2hlY2sgaWYgd2UgbmVlZCB0byBzZXQgZmxhZyB0aGF0IHdlIGFyZSBlZGl0aW5nIHRoaXMgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgZWRpdFZlcnNlOiB2ZXJzZVJlZiB9KVxuICAgIH0gZWxzZSBpZiAoIWVkaXRpbmcgJiYgKHZlcnNlUmVmID09PSBlZGl0VmVyc2UpKSB7IC8vIGNsZWFyIGVkaXQgZmxhZyBpZiBpdCBpcyBmb3IgY3VycmVudCBlZGl0IHZlcnNlXG4gICAgICBzZXRTdGF0ZSh7IGVkaXRWZXJzZTogbnVsbCB9KVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGRpc2FibGVDaGFuZ2VCdXR0b25zID0gISFlZGl0VmVyc2UgLy8gd2UgZG9uJ3Qgd2FudCB0byBhbGxvdyBjbGlja2luZyBvbiBjaGFuZ2UgYnV0dG9ucyB3aGlsZSBlZGl0aW5nXG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgX3JlZmVyZW5jZSA9IGN1cnJlbnRSZWZlcmVuY2UgfHwgcmVmZXJlbmNlXG5cbiAgY29uc3QgaXNIZWJyZXcgPSAobGFuZ3VhZ2VJZF8gPT09ICdoYm8nKVxuICBjb25zdCBmb250RmFjdG9yID0gaXNIZWJyZXcgPyAxLjQgOiAxIC8vIHdlIGF1dG9tYXRpY2FsbHkgc2NhbGUgdXAgZm9udCBzaXplIGZvciBIZWJyZXdcbiAgY29uc3Qgc2NhbGVkRm9udFNpemUgPSBmb250U2l6ZSAqIGZvbnRGYWN0b3JcblxuICBjb25zdCBpdGVtcyA9IG51bGxcbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7XG4gICAgICBoZWFkZXJzLCBmaWx0ZXJzLCBpdGVtSW5kZXgsIG1hcmtkb3duVmlldyxcbiAgICB9LFxuICAgIGFjdGlvbnM6IHtcbiAgICAgIHNldEZpbHRlcnMsIHNldEl0ZW1JbmRleCwgc2V0TWFya2Rvd25WaWV3LFxuICAgIH0sXG4gIH0gPSB1c2VDYXJkU3RhdGUoeyBpdGVtcyB9KVxuXG4gIGNvbnN0IHJlZlN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtNYXRoLnJvdW5kKHNjYWxlZEZvbnRTaXplICogMC45KX0lYCxcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3QgY29udGVudFN0eWxlID0gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiBgJHtzY2FsZWRGb250U2l6ZX0lYCxcbiAgICAuLi4oaXNIZWJyZXcgPyB7bGluZUhlaWdodDogJzIuMGVtJ30gOiB7fSlcbiAgfSksIFtzY2FsZWRGb250U2l6ZV0pXG5cbiAgY29uc3Qgc2NyaXB0dXJlTGFiZWwgPSA8VGl0bGU+e3NjcmlwdHVyZVRpdGxlfTwvVGl0bGU+XG4gIGxldCBkaXNhYmxlV29yZFBvcG92ZXJfID0gZGlzYWJsZVdvcmRQb3BvdmVyXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIGNvbnN0IGVuYWJsZUVkaXQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IGVuYWJsZUFsaWdubWVudCA9ICF1c2luZ09yaWdpbmFsQmlibGUgJiYgZm91bmRPcmlnaW5hbENvbnRlbnRcbiAgY29uc3Qgb3JpZ2luYWxSZXBvVXJsID0gaXNOZXdUZXN0YW1lbnQgPyBncmVla1JlcG9VcmwgOiBoZWJyZXdSZXBvVXJsXG4gIGNvbnN0IHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgYXV0aGVudGljYXRpb246IGNhblVzZUVkaXRCcmFuY2ggPyBhdXRoZW50aWNhdGlvbiA6IG51bGwsXG4gICAgYm9va0luZGV4LFxuICAgIGN1cnJlbnRWZXJzZVJlZjogX3JlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LmJvb2tJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UuYm9va0lkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcbiAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlPy5zaGFcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3Qge1xuICAgIGVycm9yOiBzYXZlRXJyb3IsXG4gICAgaXNFcnJvcjogaXNTYXZlRXJyb3IsXG4gICAgb25TYXZlRWRpdCxcbiAgICBvblNhdmVFZGl0UGF0Y2gsXG4gIH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICBkb250Q3JlYXRlQnJhbmNoOiB0cnVlLFxuICAgICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHRpbWVvdXQ6IGh0dHBDb25maWc/LnNlcnZlclRpbWVPdXQgfHwgaHR0cENvbmZpZz8udGltZW91dCB8fCAxMDAwMCxcbiAgICAgIHNlcnZlcixcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIGVtYWlsOiBhdXRoZW50aWNhdGlvbj8udXNlcj8uZW1haWwsXG4gICAgdG9rZW46IGF1dGhlbnRpY2F0aW9uPy50b2tlbixcbiAgICBicmFuY2g6IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICBmaWxlcGF0aCxcbiAgICByZXBvLFxuICB9KVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHdoZW4gd2UgZ2V0IGEgc2F2ZSBzYXZlRXJyb3JcbiAgICBpZiAoc2F2ZUVycm9yICYmIGlzU2F2ZUVycm9yICYmICFzdGFydFNhdmUpIHsgLy8gaWYgZXJyb3IgdGhlbiBzaG93IGFmdGVyIHNhdmUgY29tcGxldGVzLCBzaW5jZSB3ZSBtYXkgcmV0cnlcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlIGVycm9yYCwgc2F2ZUVycm9yKVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihudWxsLCBmYWxzZSwgbnVsbCwgYEVycm9yIHNhdmluZyAke2xhbmd1YWdlSWR9XyR7Y2FyZFJlc291cmNlSWR9ICR7c2F2ZUVycm9yfWAsIHRydWUpXG4gICAgICBzYXZlSW5Qcm9ncmVzcy5jdXJyZW50ID0gZmFsc2U7IC8vIFJlc2V0IHRoZSBmbGFnIG9uIGVycm9yXG4gICAgfVxuICB9LCBbc2F2ZUVycm9yLCBpc1NhdmVFcnJvciwgc3RhcnRTYXZlXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgZnVuY3Rpb24gX3NhdmVTdWNjZXNmdWwoKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgIGNvbnN0IHtjbGVhckNoYW5nZXN9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICAgICAgcmVhZHlGb3JGZXRjaDogdHJ1ZSxcbiAgICAgICAgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ6IG51bGwsXG4gICAgICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgICAgICByZWY6IHVzZXJFZGl0QnJhbmNoTmFtZSxcbiAgICAgIH0pXG4gICAgICBkZWxheSgxMDApLnRoZW4oKCkgPT4ge1xuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gcHJldkNhcmRzU2F2aW5nLmZpbHRlcihjYXJkSWQgPT4gY2FyZElkICE9PSBjYXJkUmVzb3VyY2VJZCkpXG4gICAgICAgIHNjcmlwdHVyZUNvbmZpZz8ucmVsb2FkUmVzb3VyY2Uoc2hhLCB1c2VyRWRpdEJyYW5jaE5hbWUpXG4gICAgICB9KVxuICAgICAgc2F2ZUluUHJvZ3Jlc3MuY3VycmVudCA9IGZhbHNlOyAvLyBSZXNldCB0aGUgZmxhZyBvbiBzdWNjZXNzXG4gICAgICByZXR1cm4gdHJ1ZVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGxvZ0NoYW5nZWQoY29tbWVudCwgaW5pdGlhbCwgZmluYWwsIGRpZmYsIHNoYSkge1xuICAgICAgY29uc29sZS5lcnJvcihgJHtjb21tZW50fSAtIHNoYTpgLCBzaGEpXG4gICAgICBjb25zb2xlLmVycm9yKGBpbml0aWFsYCwgaW5pdGlhbClcbiAgICAgIGNvbnNvbGUuZXJyb3IoYGZpbmFsYCwgZmluYWwpXG4gICAgICBjb25zb2xlLmVycm9yKGBkaWZmYCwgZGlmZilcbiAgICB9XG5cbiAgICBjb25zdCBfc2F2ZUVkaXQgPSBhc3luYyAoKSA9PiB7IC8vIGJlZ2luIHVwbG9hZGluZyBuZXcgVVNGTVxuICAgICAgaWYgKHNhdmVJblByb2dyZXNzLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gU2F2ZSBhbHJlYWR5IGluIHByb2dyZXNzLCBza2lwcGluZyBkdXBsaWNhdGUgY2FsbCcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgY29uc29sZS5pbmZvKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFVzaW5nIHNoYTogJHtzaGF9YClcbiAgICAgIGxldCB1cGxvYWRGdW5jdGlvbiA9IG9uU2F2ZUVkaXRcbiAgICAgIGlmIChzYXZlRGlmZlBhdGNoKSB7XG4gICAgICAgIHVwbG9hZEZ1bmN0aW9uID0gb25TYXZlRWRpdFBhdGNoIC8vIGlmIHdlIGFyZSBzZW5kaW5nIHVwIGEgZGlmZnBhdGNoLCB3ZSB3aWxsIHVzZSB0aGlzIG1ldGhvZFxuICAgICAgfVxuXG4gICAgICBsZXQgc3VjY2VzcyA9IGF3YWl0IHVwbG9hZEZ1bmN0aW9uKHVzZXJFZGl0QnJhbmNoTmFtZSkudGhlbihyID0+IHIpLmNhdGNoKCgpID0+IGZhbHNlKS8vIHB1c2ggY2hhbmdlIHRvIHNlcnZlclxuICAgICAgbGV0IGVycm9yID0gc3VjY2VzcyA/IG51bGwgOiAnc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCdcblxuICAgICAgaWYgKCFzdWNjZXNzKSB7IC8vIGlmIHNhdmUgZmFpbGVkLCBhdHRlbXB0IGEgcmV0cnlcbiAgICAgICAgLy8gbG9nQ2hhbmdlZCgnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkLCBzZW50Jywgc2F2ZUZ1bGxCaWJsZUNvbnRlbnQ/LmluaXRpYWwsIHNhdmVGdWxsQmlibGVDb250ZW50Py5uZXcsIHNhdmVDb250ZW50LCBzaGEpXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIGNoYW5nZWQgc2NyaXB0dXJlIGZhaWxlZCwgcmV0cnlpbmcgLSBjb250ZXh0IGxpbmVzIGFyZSAke2NvbnRleHRMaW5lc30sIGRpZmY6XFxuYCwgc2F2ZUNvbnRlbnQpXG4gICAgICAgIGF3YWl0IGRlbGF5KDUwMCkgLy8gc2luY2Ugd2UgaGFkIGFuIGVycm9yLCB3YWl0IGZvciBkYXRhIHRvIHVwZGF0ZSBvbiBzZXJ2ZXIgYmVmb3JlIGdldHRpbmcgdGhlIGxhdGVzdFxuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIC8vIGZldGNoIHRoZSBsYXRlc3QgYm9vayBjb250ZW50LCBzbyB3ZSBjYW4gdGVsbCBpZiBsYXRlc3QgY2hhbmdlcyB3ZXJlIHNhdmVkIGFuZCBoYXZlIHRoZSBsYXRlc3QgZmlsZSBzaGFcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IGZldGNoQmlibGVCb29rKHNlcnZlciwgaHR0cENvbmZpZywgc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZSwgc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2UpXG4gICAgICAgIGVycm9yID0gcmVzdWx0cz8uZXJyb3JcbiAgICAgICAgbGV0IF9zYXZlQ29udGVudCA9IHNhdmVDb250ZW50XG4gICAgICAgIGxldCBmaWxlU2hhID0gbnVsbFxuICAgICAgICBjb25zdCBzYXZlZEJpYmxlVXNmbSA9IHJlc3VsdHM/LmJpYmxlVXNmbVxuICAgICAgICBjb25zdCBlZGl0ZWRCaWJsZVVzZm0gPSBzYXZlRnVsbEJpYmxlQ29udGVudD8ubmV3XG4gICAgICAgIGxldCB1cFRvRGF0ZSA9IHNhdmVkQmlibGVVc2ZtID09PSBlZGl0ZWRCaWJsZVVzZm0gLy8gY2hlY2sgaWYgbmV3IGJpYmxlIGNvbnRlbnQgZGlmZmVycyBmcm9tIGxhdGVzdCBvbiByZXBvXG5cbiAgICAgICAgaWYgKCFlcnJvcikge1xuICAgICAgICAgIGlmICh1cFRvRGF0ZSkgeyAvLyBpZiB0aGUgZGF0YSB3ZSBhcmUgdHJ5aW5nIHRvIHNhdmUgbWF0Y2hlcyB3aGF0IGlzIG5vdyBvbiB0aGUgc2VydmVyIHRoZXJlIGlzIG5vdGhpbmcgdG8gZG9cbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGRhdGEgd2FzIGNvcnJlY3RseSB1cGxvYWRlZCwgc28gbm90aGluZyBtb3JlIHRvIGRvJylcbiAgICAgICAgICAgIHN1Y2Nlc3MgPSB0cnVlXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxldCBuZXdDb250ZXh0TGluZXMgPSBjb250ZXh0TGluZXMgKyAxXG4gICAgICAgICAgICBpZiAoc2F2ZURpZmZQYXRjaCkge1xuICAgICAgICAgICAgICBhd2FpdCBkZWxheSgxMDApIC8vIGFsbG93IFVJIHRvIHVwZGF0ZSBiZWZvcmUgcnVubmluZyBjb21wdXRhdGlvbmFsbHkgZXhwZW5zaXZlIGZ1bmN0aW9uXG4gICAgICAgICAgICAgIC8vIHJlZ2VuZXJhdGUgdGhlIHBhdGNoIGFnYWluc3QgdGhlIGxhdGVzdCBjb250ZW50IGFuZCBhZGQgbW9yZSBsaW5lcyBvZiBjb250ZXh0XG4gICAgICAgICAgICAgIC8vIFRSSUNLWSAtIHdlIGhhdmUgbm90aWNlZCB0aGF0IERDUyB3aWxsIGZhaWwgdGhlIHBhdGNoIHNvbWV0aW1lcywgYnV0IGlmIHdlIGluY3JlYXNlIHRoZSBjb250ZXh0IGxpbmUgY291bnQgaXQgd2lsbCBzdWNjZWVkLCBzbyB3ZSBhcmUgaW5jcmVhc2luZyB0aGUgY29udGV4dCBsaW5lIGNvdW50XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIGNvbnRleHQgbGluZXMgYXJlIG5vdyAke25ld0NvbnRleHRMaW5lc31gKVxuICAgICAgICAgICAgICBjb25zdCBkaWZmUGF0Y2ggPSBnZXRQYXRjaChzYXZlRnVsbEJpYmxlQ29udGVudD8uZmlsZW5hbWUsIHNhdmVkQmlibGVVc2ZtLCBlZGl0ZWRCaWJsZVVzZm0sIGZhbHNlLCBuZXdDb250ZXh0TGluZXMpXG4gICAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IGRpZmZQYXRjaFxuICAgICAgICAgICAgICBmaWxlU2hhID0gcmVzdWx0cz8uc2hhXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHN1Y2Nlc3MgPSBhd2FpdCB1cGxvYWRGdW5jdGlvbih1c2VyRWRpdEJyYW5jaE5hbWUsIF9zYXZlQ29udGVudCwgZmlsZVNoYSkgLy8gcHVzaCBjaGFuZ2UgdG8gc2VydmVyXG4gICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpIHtcbiAgICAgICAgICAgICAgbG9nQ2hhbmdlZCgnc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkIG9uIHNlY29uZCBhdHRlbXB0LCBzZW50Jywgc2F2ZWRCaWJsZVVzZm0sIGVkaXRlZEJpYmxlVXNmbSwgX3NhdmVDb250ZW50LCBmaWxlU2hhKVxuICAgICAgICAgICAgICBlcnJvciA9ICdzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkIG9uIHNlY29uZCBhdHRlbXB0J1xuICAgICAgICAgICAgICBuZXdDb250ZXh0TGluZXMrKyAvLyBpZiBmYWlsZWQgaW5jcmVhc2UgdGhlIGNvdW50IGZvciBuZXh0IGF0dGVtcHRcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc3VjY2Vzc2Z1bCBvbiBzZWNvbmQgd2l0aCBkaWZmJywgX3NhdmVDb250ZW50KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG5ld0NvbnRleHRMaW5lcyA+IDEwKSB7XG4gICAgICAgICAgICAgIG5ld0NvbnRleHRMaW5lcyA9IDRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFN0YXRlKHtjb250ZXh0TGluZXM6IG5ld0NvbnRleHRMaW5lc30pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZXJyb3IgJiYgc3VjY2VzcykgeyAvLyBpZiBubyBlcnJvciBtZXNzYWdlIGFuZCBzYXZlIHdhcyBhIHN1Y2Nlc3NcbiAgICAgICAgcmV0dXJuIF9zYXZlU3VjY2VzZnVsKCkgLy8gbm90aGluZyB0byBkb1xuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtICR7ZXJyb3IgfHwgJ3Vua25vd24gc2F2ZSBlcnJvcid9YClcbiAgICAgIHNldENhcmRzU2F2aW5nKHByZXZDYXJkc1NhdmluZyA9PiBwcmV2Q2FyZHNTYXZpbmcuZmlsdGVyKGNhcmRJZCA9PiBjYXJkSWQgIT09IGNhcmRSZXNvdXJjZUlkKSlcbiAgICAgIHNldFN0YXRlKHtzdGFydFNhdmU6IGZhbHNlfSlcbiAgICAgIHNhdmVJblByb2dyZXNzLmN1cnJlbnQgPSBmYWxzZTsgLy8gUmVzZXQgdGhlIGZsYWcgb24gZmFpbHVyZVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKHN0YXJ0U2F2ZSkge1xuICAgICAgaWYgKCFlZGl0QnJhbmNoUmVhZHkpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIG5vdCB5ZXQgY3JlYXRlZGApXG4gICAgICB9IGVsc2UgaWYgKCFzaGEpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHNhdmUgc2hhIG5vdCB5ZXQgcmVhZHlgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGNhbGxpbmcgX3NhdmVFZGl0KClgKVxuICAgICAgICBzZXRDYXJkc1NhdmluZyhwcmV2Q2FyZHNTYXZpbmcgPT4gWy4uLnByZXZDYXJkc1NhdmluZywgY2FyZFJlc291cmNlSWRdKVxuICAgICAgICBfc2F2ZUVkaXQoKVxuICAgICAgfVxuICAgIH1cblxuICB9LCBbc3RhcnRTYXZlLCBlZGl0QnJhbmNoUmVhZHksIHNoYV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtTY3JpcHR1cmVSZWZlcmVuY2VUeXBlfSByZWYgLSByZWZlcmVuY2Ugb2YgdmVyc2UgdG8gbWVyZ2UgaW5cbiAgICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbTogc3RyaW5nLCByZWY6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgbGV0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG4gICAgICBjb25zdCBmcm9udE1hdHRlciA9IHJlZj8udmVyc2UgPT09ICdmcm9udCdcblxuICAgICAgaWYgKGZyb250TWF0dGVyIHx8IHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gbmV3IFVTRk0gZm9yIGNhcmQgJHtjYXJkTnVtfSwgdmVyc2UgJHtyZWY/LnZlcnNlfTp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgaWYgKGZyb250TWF0dGVyKSB7IC8vIGZyb250IG1hdHRlciBnb2VzIGJlZm9yZSBmaXJzdCB2ZXJzZVxuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbMF1cbiAgICAgICAgICBjb25zdCBwcmVmaXhMZW4gPSBvbGRWZXJzZS5pbmRleE9mKCdcXG4nKSAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZnJvbnQgbWF0dGVyIHRleHRcbiAgICAgICAgICB2ZXJzZUNodW5rc1swXSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCBwcmVmaXhMZW4gKyAxKSArIG5ld1ZlcnNlVXNmbVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IG9sZFZlcnNlID0gdmVyc2VDaHVua3NbdmVyc2VJbmRleF1cbiAgICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aCAvLyBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgdmVyc2UgdGV4dFxuICAgICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuZXdDaGFwdGVyID0gdmVyc2VDaHVua3Muam9pbignXFxcXHYgJylcbiAgICAgICAgY2hhcHRlckNodW5rc1tjaGFwdGVySW5kZXhdID0gbmV3Q2hhcHRlclxuICAgICAgICBuZXdVc2ZtID0gY2hhcHRlckNodW5rcy5qb2luKCdcXFxcYyAnKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3VXNmbVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZm9yIGVhY2ggdW5zYXZlZCBjaGFuZ2UsIGNhbGwgaW50byBzY3JpcHR1cmVQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGFzeW5jIGZ1bmN0aW9uIGdldFJlYWR5Rm9yU2F2ZSgpIHtcbiAgICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgICBsZXQgY3JlYXRlRWRpdEJyYW5jaCA9ICFfdXNpbmdVc2VyQnJhbmNoXG5cbiAgICAgICAgaWYgKCFjcmVhdGVFZGl0QnJhbmNoKSB7IC8vIGlmIGFscmVhZHkgdXNpbmcgdGhlIHVzZXIgYnJhbmNoXG4gICAgICAgICAgaWYgKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gdXNlckVkaXRCcmFuY2hOYW1lKSB7XG4gICAgICAgICAgICBjb25zb2xlLndhcm4oYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIHN0YXRlIGNvbmZsaWN0IC0gc2hvdWxkIGJlIGluIHVzZXIgYnJhbmNoICR7dXNlckVkaXRCcmFuY2hOYW1lfSwgYnV0IGFjdHVhbGx5IHVzaW5nICR7d29ya2luZ1Jlc291cmNlQnJhbmNofWApXG4gICAgICAgICAgICBjcmVhdGVFZGl0QnJhbmNoID0gdHJ1ZVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gYWxyZWFkeSB1c2luZyBlZGl0IGJyYW5jaDogJHt3b3JraW5nUmVzb3VyY2VCcmFuY2h9YClcbiAgICAgICAgICAgIHNldFN0YXRlKHsgZWRpdEJyYW5jaFJlYWR5OiB0cnVlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGNyZWF0ZUVkaXRCcmFuY2gpIHsgLy8gaWYgbm90IHlldCB1c2luZyB0aGUgdXNlciBicmFuY2gsIGNyZWF0ZSBpdFxuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjcmVhdGluZyBlZGl0IGJyYW5jaGApXG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgZWRpdEJyYW5jaFJlYWR5OiBmYWxzZSxcbiAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IGZhbHNlLFxuICAgICAgICAgICAgc2hhOiBudWxsLFxuICAgICAgICAgIH0pIC8vIHdlIHdpbGwgbmVlZCBhIG5ldyBzaGEgZm9yIGJvb2svYnJhbmNoXG5cbiAgICAgICAgICBjb25zdCBicmFuY2ggPSBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICAgICAgaWYgKGJyYW5jaCkge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGVkaXQgYnJhbmNoIGNyZWF0ZWRgKVxuICAgICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgICBlZGl0QnJhbmNoUmVhZHk6IHRydWUsXG4gICAgICAgICAgICAgIHJlYWR5Rm9yRmV0Y2g6IHRydWUsXG4gICAgICAgICAgICAgIHJlZjogYnJhbmNoLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBlcnJvciBjcmVhdGluZyBlZGl0IGJyYW5jaCcpXG4gICAgICAgICAgICBvblJlc291cmNlRXJyb3IgJiYgb25SZXNvdXJjZUVycm9yKG51bGwsIGZhbHNlLCBudWxsLCBgRXJyb3IgY3JlYXRpbmcgZWRpdCBicmFuY2ggJHtsYW5ndWFnZUlkX31fJHtyZXNvdXJjZUlkfWAsIHRydWUpXG4gICAgICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiBmYWxzZSB9KVxuICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCAtIGdldHRpbmcgdmVyc2UgY2hhbmdlc2ApXG4gICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICBsZXQgYmlibGVVc2ZtSW5pdGlhbCA9IGdldEN1cnJlbnRCb29rKHNjcmlwdHVyZUNvbmZpZywgYm9va0lkKSAvLyBnZXQgb3JpZ2luYWwgVVNGTVxuICAgICAgICAgIGxldCBiaWJsZVVzZm1OZXcgPSBiaWJsZVVzZm1Jbml0aWFsIC8vIG1ha2UgYSBjb3B5IHRvIGVkaXRcbiAgICAgICAgICBsZXQgbWVyZ2VGYWlsID0gZmFsc2VcblxuICAgICAgICAgIGlmIChiaWJsZVVzZm1Jbml0aWFsKSB7XG4gICAgICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgYmlibGVVc2ZtTmV3KSB7IC8vIGp1c3QgcmVwbGFjZSB2ZXJzZVxuICAgICAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm1OZXcsIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBpZiAobmV3VXNmbSkge1xuICAgICAgICAgICAgICAgICAgYmlibGVVc2ZtTmV3ID0gbmV3VXNmbVxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtZXJnZUZhaWwgPSB0cnVlXG4gICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCBzYXZlRGlmZlBhdGNoID0gZmFsc2UgLy8gaWYgdHJ1ZSB0aGVuIHdlIHdpbGwgc2VuZCB1cCBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHRoZSB3aG9sZSBib29rXG4gICAgICAgICAgbGV0IF9zYXZlRnVsbEJpYmxlQ29udGVudCA9IG51bGxcbiAgICAgICAgICBsZXQgX3NhdmVDb250ZW50ID0gYmlibGVVc2ZtTmV3XG5cbiAgICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgICBsZXQgbmV3Qm9va0pzb25cblxuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICAgIGxldCB0YXJnZXRWZXJzZU9iamVjdHNfID0gbnVsbFxuXG4gICAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSh1cGRhdGVkVmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIHRhcmdldFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwge3ZlcnNlT2JqZWN0czogdGFyZ2V0VmVyc2VPYmplY3RzX30pXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIF9zYXZlQ29udGVudCA9IHVzZm1qcy50b1VTRk0obmV3Qm9va0pzb24sIHsgZm9yY2VkTmV3TGluZXM6IHRydWUgfSlcbiAgICAgICAgICB9IGVsc2UgeyAvLyBpZiBvbmx5IGNoYW5nZWQgYSBmZXcgdmVyc2VzLCB3ZSB3aWxsIGp1c3QgbWFrZSBhIGRpZmZwYXRjaCBpbnN0ZWFkIG9mIHNlbmRpbmcgdGhlIHdob2xlIGJvb2tcbiAgICAgICAgICAgIGNvbnN0IGZpbGVuYW1lID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ubmFtZSAvLyBMaWtlIFwiNTctVElULnVzZm1cIlxuICAgICAgICAgICAgaWYgKGZpbGVuYW1lICYmIGJpYmxlVXNmbU5ldyAmJiBiaWJsZVVzZm1Jbml0aWFsKSB7IC8vIG1ha2Ugc3VyZSB3ZSBoYXZlIGV2ZXJ5dGhpbmcgbmVlZGVkIHRvIG1ha2UgYSBwYXRjaFxuICAgICAgICAgICAgICBpZiAoYmlibGVVc2ZtSW5pdGlhbCA9PT0gYmlibGVVc2ZtTmV3KSB7IC8vIGlmIG5vIGRhdGEgY2hhbmdlLCB0aGVuIHNraXAgc2F2ZSBiZWNhdXNlIERDUyBjcmFzaGVzIG9uIGFuIGVtcHR5IHBhdGNoXG4gICAgICAgICAgICAgICAgY29uc29sZS53YXJuKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2F2ZSwgc2tpcHBpbmdgKVxuICAgICAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgICAgICAgcmV0dXJuXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY29uc3QgZGlmZlBhdGNoID0gZ2V0UGF0Y2goZmlsZW5hbWUsIGJpYmxlVXNmbUluaXRpYWwsIGJpYmxlVXNmbU5ldywgZmFsc2UsIGNvbnRleHRMaW5lcylcbiAgICAgICAgICAgICAgc2F2ZURpZmZQYXRjaCA9IHRydWVcbiAgICAgICAgICAgICAgX3NhdmVDb250ZW50ID0gZGlmZlBhdGNoIC8vIHJlcGxhY2Ugd2hvbGUgYm9vayBjb250ZW50IHdpdGgganVzdCBwYXRjaCBkYXRhIChtdWNoIGZhc3RlciB1cGxvYWRzKVxuICAgICAgICAgICAgICBfc2F2ZUZ1bGxCaWJsZUNvbnRlbnQgPSB7ICAvLyBrZWVwIHRyYWNrIG9mIHBhdGNoIGRhdGEgaW4gY2FzZSB3ZSBuZWVkIHRvIHJldHJ5IHNhdmVcbiAgICAgICAgICAgICAgICBmaWxlbmFtZSxcbiAgICAgICAgICAgICAgICBpbml0aWFsOiBiaWJsZVVzZm1Jbml0aWFsLFxuICAgICAgICAgICAgICAgIG5ldzogYmlibGVVc2ZtTmV3LFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGJpYmxlVXNmbU5ldykge1xuICAgICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbU5ldy5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICAgICAgc2V0Q2FyZHNTYXZpbmcocHJldkNhcmRzU2F2aW5nID0+IFsuLi5wcmV2Q2FyZHNTYXZpbmcsIGNhcmRSZXNvdXJjZUlkXSlcbiAgICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgICAgc2F2ZUNvbnRlbnQ6IF9zYXZlQ29udGVudCxcbiAgICAgICAgICAgICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICBzYXZlRGlmZlBhdGNoLFxuICAgICAgICAgICAgICBzYXZlRnVsbEJpYmxlQ29udGVudDogX3NhdmVGdWxsQmlibGVDb250ZW50LFxuICAgICAgICAgICAgICBzdGFydFNhdmU6IHRydWUsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIEVycm9yIHJldHJpZXZpbmcgdGhlIGNvcnJlY3QgYm9vayBkYXRhOiBpbmNvcnJlY3QgYm9vayAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YClcbiAgICAgICAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobnVsbCwgZmFsc2UsIG51bGwsIGBFcnJvciByZXRyaWV2aW5nIHRoZSBjb3JyZWN0IGJvb2sgZGF0YSAke2xhbmd1YWdlSWRffV8ke3Jlc291cmNlSWR9YCwgdHJ1ZSlcbiAgICAgICAgICAgIHNldFN0YXRlKHsgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgZ2V0UmVhZHlGb3JTYXZlKClcbiAgfSwgW3NhdmVDbGlja2VkXSlcblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHsgY2hhcHRlciB9ID0gX3JlZmVyZW5jZSB8fCB7fVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgX3ZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgbGV0IG5ld1NlbGVjdGlvbnMgPSBuZXcgTWFwKClcbiAgICBsZXQgdXBkYXRlU2VsZWN0aW9ucyA9IGZhbHNlXG4gICAgY29uc3QgX21hcCA9IG5ld1NlbGVjdGlvbnNcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IG5ld1NlbGVjdGVkUXVvdGUgPSBudWxsXG5cbiAgICAvLyBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBjYWxjdWxhdGUgc2VsZWN0aW9uc1xuICAgIGlmIChfdmVyc2VzRm9yUmVmPy5sZW5ndGggJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdCAmJlxuICAgICAgKGJvb2tJZCA9PT0gb3JpZ2luYWxCb29rSWQpICYmXG4gICAgICBib29rVmVyc2VPYmplY3RbY2hhcHRlcl0gJiYgLy8gd2UgbmVlZCB0byBoYXZlIGRhdGEgZm9yIGNoYXB0ZXJcbiAgICAgIHNlbGVjdGVkUXVvdGU/LnF1b3RlXG4gICAgKSB7XG4gICAgICAvLyBpZiBxdW90ZSBpcyBkaWZmZXJlbnQgdGhhbiBsYXN0XG4gICAgICBpZiAoIWlzRXF1YWwobGFzdFNlbGVjdGVkUXVvdGUsIHNlbGVjdGVkUXVvdGUpIHx8XG4gICAgICAgICFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgX3ZlcnNlc0ZvclJlZikpIHtcbiAgICAgICAgY29uc3Qgb3JpZ2luYWxWZXJzZXMgPSB7fVxuICAgICAgICBjb25zdCBzdWJzdGl0dXRlID0ge30gLy8ga2VlcCB0cmFjayBvZiB2ZXJzZSBzdWJzdGl0dXRpb25zXG4gICAgICAgIGxldCBzdGFydFZlcnNlID0gX3ZlcnNlc0ZvclJlZlswXS52ZXJzZVxuXG4gICAgICAgIGlmICh0eXBlb2Ygc3RhcnRWZXJzZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBzdGFydFZlcnNlID0gcGFyc2VJbnQoc3RhcnRWZXJzZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBsYXN0VmVyc2UgPSBzdGFydFZlcnNlXG5cbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBfdmVyc2VzRm9yUmVmLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgIGNoYXB0ZXIsXG4gICAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgICB9ID0gdmVyc2VSZWZcbiAgICAgICAgICAvLyBUUklDS1kgLSB3ZSByZW1hcCB2ZXJzZXMgaW4gcmVmZXJlbmNlIHJhbmdlIHRvIGEgbGluZWFyIHNlcmllcyBvZiB2ZXJzZXMgc28gdmVyc2Ugc3BhbnMgZG9uJ3QgY2hva2UgZ2V0UXVvdGVNYXRjaGVzSW5Cb29rUmVmXG4gICAgICAgICAgbGV0IF92ZXJzZSA9IHN0YXJ0VmVyc2UgKyBpXG4gICAgICAgICAgbGFzdFZlcnNlID0gX3ZlcnNlXG4gICAgICAgICAgc3Vic3RpdHV0ZVtgJHtjaGFwdGVyfToke192ZXJzZX1gXSA9IGAke2NoYXB0ZXJ9OiR7dmVyc2V9YFxuXG4gICAgICAgICAgaWYgKCFvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXSkge1xuICAgICAgICAgICAgb3JpZ2luYWxWZXJzZXNbY2hhcHRlcl0gPSB7fVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGxldCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rVmVyc2VPYmplY3QsIGAke2NoYXB0ZXJ9OiR7dmVyc2V9YClcblxuICAgICAgICAgICAgZm9yIChjb25zdCB2ZXJzZUl0ZW0gb2YgdmVyc2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdCh2bylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gYm9va1ZlcnNlT2JqZWN0W2NoYXB0ZXJdW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgICBvcmlnaW5hbFZlcnNlc1tjaGFwdGVyXVtfdmVyc2VdID0geyB2ZXJzZU9iamVjdHMgfVxuICAgICAgICAgICAgX21hcC5zZXQoYCR7Y2hhcHRlcn06JHt2ZXJzZX1gLCB2ZXJzZU9iamVjdHMpXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gY3JlYXRlIG5ldyByZWZlcmVuY2UgcmFuZ2UgZm9yIG5ldyBsaW5lYXIgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgW2NoYXB0ZXJdID0gc2VsZWN0ZWRRdW90ZT8ucmVmZXJlbmNlPy5zcGxpdCgnOicpXG4gICAgICAgIGxldCBzdWJSZWYgPSBgJHtjaGFwdGVyfToke3N0YXJ0VmVyc2V9YFxuXG4gICAgICAgIGlmIChsYXN0VmVyc2UgIT0gc3RhcnRWZXJzZSkge1xuICAgICAgICAgIHN1YlJlZiArPSBgLSR7bGFzdFZlcnNlfWBcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHF1b3RlTWF0Y2hlcyA9IGdldFF1b3RlTWF0Y2hlc0luQm9va1JlZih7XG4gICAgICAgICAgYm9va09iamVjdDogb3JpZ2luYWxWZXJzZXMsXG4gICAgICAgICAgcmVmOiBzdWJSZWYsXG4gICAgICAgICAgcXVvdGU6IHNlbGVjdGVkUXVvdGU/LnF1b3RlLFxuICAgICAgICAgIG9jY3VycmVuY2U6IHNlbGVjdGVkUXVvdGU/Lm9jY3VycmVuY2UsXG4gICAgICAgIH0pXG5cbiAgICAgICAgY29uc3Qgc2VsZWN0aW9ucyA9IG5ldyBNYXAoKVxuXG4gICAgICAgIGlmIChxdW90ZU1hdGNoZXM/LnNpemUpIHtcbiAgICAgICAgICBxdW90ZU1hdGNoZXMuZm9yRWFjaCgod29yZHMsIGtleSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgX2tleSA9IHN1YnN0aXR1dGVba2V5XVxuXG4gICAgICAgICAgICBzZWxlY3Rpb25zLnNldChfa2V5LCB3b3Jkcy5tYXAod29yZCA9PiAoXG4gICAgICAgICAgICAgIHsgLi4ud29yZCwgdGV4dDogY29yZS5ub3JtYWxpemVTdHJpbmcod29yZC50ZXh0KSB9XG4gICAgICAgICAgICApKSlcbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICAgIG5ld1NlbGVjdGlvbnMgPSBzZWxlY3Rpb25zXG4gICAgICAgIG5ld1NlbGVjdGVkUXVvdGUgPSBzZWxlY3RlZFF1b3RlXG4gICAgICAgIHVwZGF0ZVNlbGVjdGlvbnMgPSB0cnVlXG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgbmV3U3RhdGU6IGFueSA9IHt9XG5cbiAgICAvLyB1cGRhdGUgc3RhdGVzIHRoYXQgaGF2ZSBjaGFuZ2VkXG4gICAgaWYgKCFhcmVNYXBzVGhlU2FtZSh2ZXJzZU9iamVjdHNNYXAsIF9tYXApKSB7XG4gICAgICBuZXdTdGF0ZS52ZXJzZU9iamVjdHNNYXAgPSBfbWFwXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zUmVmcyA9IF9tYXAgPyBbLi4uX21hcC5rZXlzKCldLmpvaW4oJzsnKSA6ICcnIC8vIGNvbWJpbmUgYWxsIHRoZSB2ZXJzZSByZWZlcmVuY2VzIGludG8gYSBzaW5nbGUgdmVyc2UgcmVmZXJlbmNlIGZvciB0aGUgc2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGNvbnN0IGJvb2tzTm90U2FtZSA9IHJlZmVyZW5jZT8uYm9va0lkICE9PSBjdXJyZW50UmVmZXJlbmNlPy5ib29rSWRcblxuICAgIGlmIChib29rc05vdFNhbWUgfHwgIWFyZVZlcnNlc1NhbWUodmVyc2VzRm9yUmVmLCBfdmVyc2VzRm9yUmVmKSkge1xuICAgICAgbmV3U3RhdGUudmVyc2VzRm9yUmVmID0gX3ZlcnNlc0ZvclJlZlxuICAgICAgbmV3U3RhdGUubGFzdFNlbGVjdGVkUXVvdGUgPSBuZXdTZWxlY3RlZFF1b3RlXG4gICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgIH1cblxuICAgIGlmIChuZXdTZWxlY3RlZFF1b3RlKSB7XG4gICAgICBuZXdTdGF0ZS5sYXN0U2VsZWN0ZWRRdW90ZSA9IG5ld1NlbGVjdGVkUXVvdGVcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlU2VsZWN0aW9ucykge1xuICAgICAgaWYgKCFhcmVNYXBzVGhlU2FtZShzZWxlY3Rpb25zIHx8IChuZXcgTWFwKCkpLCBuZXdTZWxlY3Rpb25zKSkge1xuICAgICAgICBuZXdTdGF0ZS5zZWxlY3Rpb25zID0gbmV3U2VsZWN0aW9uc1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChPYmplY3Qua2V5cyhuZXdTdGF0ZSkubGVuZ3RoKSB7XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH0sIFtcbiAgICBvd25lcixcbiAgICByZXNvdXJjZUlkLFxuICAgIGJvb2tJZCxcbiAgICBsYW5ndWFnZUlkXyxcbiAgICBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZixcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICAgIHNlbGVjdGVkUXVvdGUsXG4gIF0pXG5cblxuICAvLyBDaGVjayBpZiBvcmlnaW5hbCBsYW5ndWFnZSBjb250ZW50IGlzIGF2YWlsYWJsZSBmb3IgdGhlIGN1cnJlbnQgdmVyc2VzLlxuICAvLyBUaGlzIHNldHMgZm91bmRPcmlnaW5hbENvbnRlbnQgc3RhdGUsIHdoaWNoIGluIHR1cm4gaXMgdXNlZCB0byBkZXRlcm1pbmUgaWZcbiAgLy8gYWxpZ25tZW50IGZ1bmN0aW9uYWxpdHkgc2hvdWxkIGJlIGVuYWJsZWRcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBvcmlnaW5hbEJvb2tJZCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmJvb2tJZFxuICAgIGNvbnN0IGJvb2tWZXJzZU9iamVjdCA9IG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM/LmNoYXB0ZXJzXG4gICAgbGV0IF9mb3VuZE9yaWdpbmFsQ29udGVudCA9IGZhbHNlXG5cbiAgICAvLyBjaGVjayBpZiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCB0byBnZXQgb3JpZ2luYWwgdmVyc2VzXG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCAmJlxuICAgICAgYm9va1ZlcnNlT2JqZWN0ICYmXG4gICAgICAoYm9va0lkID09PSBvcmlnaW5hbEJvb2tJZCkgJiZcbiAgICAgIGJvb2tWZXJzZU9iamVjdD8uW2NoYXB0ZXJdIC8vIHdlIG5lZWQgdG8gaGF2ZSBkYXRhIGZvciBjaGFwdGVyXG4gICAgKSB7XG4gICAgICBmb3IgKGxldCBpID0gMCwgbCA9IF92ZXJzZXNGb3JSZWYubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IHZlcnNlUmVmID0gX3ZlcnNlc0ZvclJlZltpXVxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgY2hhcHRlcixcbiAgICAgICAgICB2ZXJzZSxcbiAgICAgICAgfSA9IHZlcnNlUmVmXG5cbiAgICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgICAgaWYgKCh0eXBlb2YgdmVyc2UgPT09ICdzdHJpbmcnKSAmJiAodmVyc2UuaW5jbHVkZXMoJy0nKSkpIHtcbiAgICAgICAgICBjb25zdCB2ZXJzZXMgPSBnZXRWZXJzZXMoYm9va1ZlcnNlT2JqZWN0LCBgJHtjaGFwdGVyfToke3ZlcnNlfWApXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IHZlcnNlSXRlbSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IHZvID0gdmVyc2VJdGVtLnZlcnNlRGF0YS52ZXJzZU9iamVjdHNcbiAgICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IHZlcnNlT2JqZWN0cy5jb25jYXQodm8pXG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZlcnNlT2JqZWN0cyA9IGJvb2tWZXJzZU9iamVjdFtjaGFwdGVyXT8uW3ZlcnNlXT8udmVyc2VPYmplY3RzXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgdmVyc2VPYmplY3RzID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHMpXG5cbiAgICAgICAgICBjb25zdCBpc1ZlcnNlTm90RW1wdHkgPSAhZW1wdHlDb250ZW50KHZlcnNlT2JqZWN0cylcbiAgICAgICAgICBpZiAoaXNWZXJzZU5vdEVtcHR5KSB7XG4gICAgICAgICAgICBfZm91bmRPcmlnaW5hbENvbnRlbnQgPSB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKF9mb3VuZE9yaWdpbmFsQ29udGVudCAhPSBmb3VuZE9yaWdpbmFsQ29udGVudCkge1xuICAgICAgc2V0U3RhdGUoeyBmb3VuZE9yaWdpbmFsQ29udGVudDogX2ZvdW5kT3JpZ2luYWxDb250ZW50IH0pXG4gICAgfVxuICB9LCBbXG4gICAgYm9va0lkLFxuICAgIGxhbmd1YWdlSWRfLFxuICAgIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmLFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gY2xlYXIgc2V0dGluZ3Mgb24gdmVyc2UgY2hhbmdlXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzOiBudWxsLFxuICAgICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgfSlcbiAgfSwgW19yZWZlcmVuY2VdKVxuXG4gIGNvbnN0IHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyA9IChyZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGUsIGFsaWduZWQ6IGJvb2xlYW4pID0+IHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7XG4gICAgICAuLi5wcmV2U3RhdGUsXG4gICAgICB2ZXJzZXNBbGlnbm1lbnRTdGF0dXM6IHsgLi4ucHJldlN0YXRlLnZlcnNlc0FsaWdubWVudFN0YXR1cywgW2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXTogYWxpZ25lZCB9LFxuICAgIH0pKVxuICB9XG5cbiAgbGV0IF92ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKF92ZXJzZXNGb3JSZWY/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgeyByZWZlcmVuY2UsIHJlc291cmNlTGluayB9ID0gc2NyaXB0dXJlQ29uZmlnIHx8IHt9XG4gICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlQ2FyZC5fdmVyc2VzRm9yUmVmIGNoYW5nZWRgLCB7IHJlZmVyZW5jZSwgcmVzb3VyY2VMaW5rIH0pXG4gICAgfVxuICB9LCBbX3ZlcnNlc0ZvclJlZl0pXG5cbiAgaWYgKCFfdmVyc2VzRm9yUmVmPy5sZW5ndGgpIHsgLy8gaWYgZW1wdHkgb2YgcmVmZXJlbmNlcywgY3JlYXRlIHNpbmdsZSBlbXB0eSByZWZlcmVuY2VcbiAgICBfdmVyc2VzRm9yUmVmID0gW3sgLi4ucmVmZXJlbmNlIH1dXG4gIH1cblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gX3ZlcnNlc0ZvclJlZj8ubWFwKChfY3VycmVudFZlcnNlRGF0YSwgaW5kZXgpID0+IHtcbiAgICBjb25zdCBpbml0aWFsVmVyc2VPYmplY3RzID0gX2N1cnJlbnRWZXJzZURhdGE/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzIHx8IFtdXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgYm9va0lkXyA9IGN1cnJlbnRSZWZlcmVuY2U/LmJvb2tJZCB8fCBib29rSWRcbiAgICBjb25zdCBfcmVmZXJlbmNlID0ge1xuICAgICAgLi4uX3ZlcnNlc0ZvclJlZixcbiAgICAgIGNoYXB0ZXIsXG4gICAgICBib29rSWQ6IGJvb2tJZF8sXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgICBpc05ld1Rlc3RhbWVudCxcbiAgICB9XG5cbiAgICBsZXQgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50ID0gZmFsc2VcblxuICAgIGlmICh2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50KSB7XG4gICAgICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgPSB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LmNoYXB0ZXIgPT0gY2hhcHRlciAmJiB2ZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LnZlcnNlID09IHZlcnNlXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkZXRlcm1pbmluZ0JyYW5jaD17IXJlYWR5Rm9yRmV0Y2h9XG4gICAgICAgIGRpcmVjdGlvbj17ZGlyZWN0aW9ufVxuICAgICAgICBkaXNhYmxlV29yZFBvcG92ZXI9e2Rpc2FibGVXb3JkUG9wb3Zlcl99XG4gICAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgICBpc05UPXtpc05UX31cbiAgICAgICAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50PXtpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnR9XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIG9uQWxpZ25tZW50RmluaXNoPXsoKSA9PiBzZXRTdGF0ZSh7IHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IG51bGwgfSl9XG4gICAgICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM9e29yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHN9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0RWRpdFZlcnNlPXtzZXRFZGl0VmVyc2V9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM9e3VwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1c31cbiAgICAgIC8+XG4gICAgKVxuICB9KVxuXG4gIGNvbnN0IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2sgPSAoKSA9PiB7XG4gICAgaWYgKHZlcnNlc0ZvclJlZj8ubGVuZ3RoID4gMSkgeyAvLyBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgdmVyc2VzIHNob3duIGluIGNhcmQsIG5lZWQgdG8gcHJvbXB0IHVzZXIgZm9yIHdoaWNoIHZlcnNlIHRvIGFsaWduXG4gICAgICBzZXRTdGF0ZSh7IHNob3dBbGlnbm1lbnRQb3B1cDogdHJ1ZSB9KVxuICAgIH0gZWxzZSBpZiAodmVyc2VzRm9yUmVmPy5sZW5ndGggPT09IDEpIHsgLy8gaWYgb25seSBvbmUgdmVyc2UgaXMgc2hvd24gb24gY2FyZCwgdGhlbiBlZGl0IHRoYXQgdmVyc2VcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogdmVyc2VzRm9yUmVmWzBdIH0pXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXVxuXG4gICAgbGV0IGFsbFZlcnNlc0FsaWduZWQgPSBmYWxzZVxuXG4gICAgLy8gQ2hlY2sgaWYgYWxsIHZhbHVlcyBpbiB2ZXJzZXNBbGlnbm1lbnRTdGF0dXMgYXJlIHRydWVcbiAgICBpZiAodmVyc2VzQWxpZ25tZW50U3RhdHVzKSB7XG4gICAgICBhbGxWZXJzZXNBbGlnbmVkID0gT2JqZWN0LnZhbHVlcyh2ZXJzZXNBbGlnbm1lbnRTdGF0dXMpLmV2ZXJ5KGFsaWduU3RhdHVzID0+IGFsaWduU3RhdHVzID09PSB0cnVlKVxuICAgIH1cblxuICAgIGxldCBhbGlnbkljb24gPSBudWxsXG4gICAgbGV0IGFsaWduQnV0dG9uVGV4dCA9ICcnXG5cbiAgICBpZiAoYWxsVmVyc2VzQWxpZ25lZCkge1xuICAgICAgYWxpZ25JY29uID0gPFJ4TGluazIgaWQ9e2B2YWxpZF9pY29uXyR7cmVzb3VyY2VJZH1gfSBjb2xvcj0nI0JCQicgLz5cbiAgICAgIGFsaWduQnV0dG9uVGV4dCA9ICdBbGlnbm1lbnQgaXMgVmFsaWQnXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGNvbG9yID0gZGlzYWJsZUNoYW5nZUJ1dHRvbnMgPyAnI0JCQicgOiAnIzAwMCcgLy8gZ3JheSBvdXQgYnV0dG9uIGlmIGRpc2FibGVkXG4gICAgICBhbGlnbkljb24gPSA8UnhMaW5rQnJlYWsyIGlkPXtgaW52YWxpZF9hbGlnbm1lbnRfaWNvbl8ke3Jlc291cmNlSWR9YH0gY29sb3I9e2NvbG9yfSAvPlxuICAgICAgYWxpZ25CdXR0b25UZXh0ID0gJ0FsaWdubWVudCBpcyBJbnZhbGlkJ1xuICAgIH1cblxuICAgIGlmIChmb3VuZE9yaWdpbmFsQ29udGVudCAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiByZXNvdXJjZUlkICE9PSAnT1JJR0lOQUxfU09VUkNFJykge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBpZD17YGFsaWdubWVudF9pY29uXyR7cmVzb3VyY2VJZH1gfVxuICAgICAgICAgIGtleT0nY2hlY2tpbmctYnV0dG9uJ1xuICAgICAgICAgIG9uQ2xpY2s9e2Rpc2FibGVDaGFuZ2VCdXR0b25zID8gbnVsbCA6IGhhbmRsZUFsaWduQnV0dG9uQ2xpY2t9XG4gICAgICAgICAgdGl0bGU9e2FsaWduQnV0dG9uVGV4dH1cbiAgICAgICAgICBhcmlhLWxhYmVsPXthbGlnbkJ1dHRvblRleHR9XG4gICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgPlxuICAgICAgICAgIHthbGlnbkljb259XG4gICAgICAgIDwvSWNvbkJ1dHRvbj5cbiAgICAgIClcbiAgICB9XG5cbiAgICAvLyBPbmx5IHNob3cgdGhlIHVwZGF0ZSBmcm9tIG1haW4gYnV0dG9uIGlmIHNjcmlwdHVyZSBpcyBub3Qgb3JpZ2luYWwgdGV4dC5cbiAgICAhdXNpbmdPcmlnaW5hbEJpYmxlICYmIG5ld0l0ZW1zLnB1c2goXG4gICAgICA8PlxuICAgICAgICA8VXBkYXRlQnJhbmNoQnV0dG9uIHsuLi51cGRhdGVCdXR0b25Qcm9wc30gaXNMb2FkaW5nPXtpc1VwZGF0ZUxvYWRpbmcgfHwgc3RhcnRTYXZlfS8+XG4gICAgICAgIDxFcnJvckRpYWxvZyB0aXRsZT17ZGlhbG9nVGl0bGV9IGNvbnRlbnQ9e2RpYWxvZ01lc3NhZ2V9IG9wZW49e2lzRXJyb3JEaWFsb2dPcGVufSBvbkNsb3NlPXtvbkNsb3NlRXJyb3JEaWFsb2d9IGlzTG9hZGluZz17IGlzVXBkYXRlTG9hZGluZyB8fCBzdGFydFNhdmUgfSBsaW5rPXtkaWFsb2dMaW5rfSBsaW5rVG9vbHRpcD17ZGlhbG9nTGlua1Rvb2x0aXB9IC8+XG4gICAgICA8Lz5cbiAgICApXG5cbiAgICByZXR1cm4gbmV3SXRlbXNcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdGlvbkJvb2tPYmplY3RzID0gb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8uY2hhcHRlcnNcblxuICAvLyB3ZSBvbmx5IHdhbnQgdG8gY2hlY2sgdGhlIHRhcmdldCBhbGlnbm1lbnQgaWYgbm90IHVzaW5nIG9yaWdpbmFsIGJpYmxlXG4gIGNvbnN0IHRhcmdldFZlcnNlc0ZvclJlZiA9IHVzaW5nT3JpZ2luYWxCaWJsZSA/IG51bGwgOiBfdmVyc2VzRm9yUmVmXG5cbiAgcmV0dXJuIChcbiAgICA8U2VsZWN0aW9uc0NvbnRleHRQcm92aWRlclxuICAgICAgaGlnaGxpZ2h0T25seUNvbXBsZXRlUXVvdGVzPXt0cnVlfVxuICAgICAgb2NjdXJyZW5jZT17Zml4T2NjdXJyZW5jZShzZWxlY3RlZFF1b3RlPy5vY2N1cnJlbmNlKX1cbiAgICAgIG9uU2VsZWN0aW9ucz17bmV3U2VsZWN0aW9ucyA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlbGVjdGlvbnMnLCBuZXdTZWxlY3Rpb25zKVxuICAgICAgfX1cbiAgICAgIG9yaWdpbmFsQm9va09iamVjdHM9e3NlbGVjdGlvbkJvb2tPYmplY3RzIHx8IHt9fVxuICAgICAgcXVvdGU9e3NlbGVjdGVkUXVvdGU/LnF1b3RlIHx8ICcnfVxuICAgICAgcmVmU3RyaW5nPXtzZWxlY3Rpb25zUmVmc31cbiAgICAgIHNlbGVjdGlvbnM9e3NlbGVjdGlvbnN9XG4gICAgICB0YXJnZXRWZXJzZXNGb3JSZWY9e3RhcmdldFZlcnNlc0ZvclJlZn1cbiAgICA+XG4gICAgICA8Q2FyZFxuICAgICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgICB0aXRsZT17c2NyaXB0dXJlTGFiZWx9XG4gICAgICAgIHNldHRpbmdzVGl0bGU9e3NjcmlwdHVyZVRpdGxlICsgJyBTZXR0aW5ncyd9XG4gICAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgICAgY2xhc3Nlcz17Y2xhc3Nlc31cbiAgICAgICAgaGVhZGVycz17aGVhZGVyc31cbiAgICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBpdGVtSW5kZXg9e2l0ZW1JbmRleH1cbiAgICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgICAgc2V0Rm9udFNpemU9e3NldEZvbnRTaXplfVxuICAgICAgICBzZXRJdGVtSW5kZXg9e3NldEl0ZW1JbmRleH1cbiAgICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICAgIHNldE1hcmtkb3duVmlldz17c2V0TWFya2Rvd25WaWV3fVxuICAgICAgICBnZXRDdXN0b21Db21wb25lbnQ9e2dldFNjcmlwdHVyZVNlbGVjdG9yfVxuICAgICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgICAgb25NZW51Q2xvc2U9e29uTWVudUNsb3NlfVxuICAgICAgICBvbk1pbmltaXplPXtvbk1pbmltaXplID8gKCkgPT4gb25NaW5pbWl6ZShpZCwgc2NyaXB0dXJlVGl0bGUpIDogbnVsbH1cbiAgICAgICAgZWRpdGFibGU9e2VuYWJsZUVkaXQgfHwgZW5hYmxlQWxpZ25tZW50fVxuICAgICAgICBzYXZlZD17ZGlzYWJsZUNoYW5nZUJ1dHRvbnMgfHwgc3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9IC8vIGdyYXkgb3V0IHNhdmUgYnV0dG9uIGlmIGRpc2FibGVkLCBpZiBzYXZpbmcsIG9yIGlmIG5vIHVuc2F2ZWQgY2hhbmdlc1xuICAgICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgICBvblJlbmRlclRvb2xiYXI9e29uUmVuZGVyVG9vbGJhcn1cbiAgICAgID5cbiAgICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAgICB7cmVuZGVyZWRTY3JpcHR1cmVQYW5lc31cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L0NhcmQ+XG4gICAgICA8VmVyc2VTZWxlY3RvclBvcHVwXG4gICAgICAgIHJlc291cmNlSWQ9e3Jlc291cmNlSWR9XG4gICAgICAgIG9wZW49e3Nob3dBbGlnbm1lbnRQb3B1cH1cbiAgICAgICAgb25DbG9zZT17KCkgPT4gc2V0U3RhdGUoeyBzaG93QWxpZ25tZW50UG9wdXA6IGZhbHNlIH0pfVxuICAgICAgICB2ZXJzZXNGb3JSZWY9e3ZlcnNlc0ZvclJlZn1cbiAgICAgICAgdmVyc2VzQWxpZ25tZW50U3RhdHVzPXt2ZXJzZXNBbGlnbm1lbnRTdGF0dXN9XG4gICAgICAgIG9uVmVyc2VTZWxlY3Q9eyh2ZXJzZSkgPT4gc2V0U3RhdGUoe1xuICAgICAgICAgIHZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IHZlcnNlLFxuICAgICAgICAgIHNob3dBbGlnbm1lbnRQb3B1cDogZmFsc2UsXG4gICAgICAgIH0pfVxuICAgICAgLz5cbiAgICA8L1NlbGVjdGlvbnNDb250ZXh0UHJvdmlkZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGlmIHRydWUgdGhlbiB3b3JkIGRhdGEgaG92ZXIgaXMgc2hvd24gKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqIGdldCBsYW5ndWFnZSBkZXRhaWxzICovXG4gIGdldExhbmd1YWdlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIGh0dHAgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGZldGNoaW5nIHJlc291cmNlcywgZGVmYXVsdCBpcyAwICh2ZXJ5IGxvbmcgd2FpdCkgKi9cbiAgaHR0cENvbmZpZzogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIGh0bWwgaWRlbnRpZmllciB0byB1c2UgZm9yIGNhcmQgKi9cbiAgaWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBtZXRob2QgdG8gZGV0ZXJtaW5lIGlmIE5UIG9yIE9UICovXG4gIGlzTlQ6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiB1c2VyLW5hbWUgKi9cbiAgbG9nZ2VkSW5Vc2VyOiBQcm9wVHlwZXMuc3RyaW5nLFxuICBtZXJnZUNoZWNrOiBQcm9wVHlwZXMubnVtYmVyLCAvLyBpZiB0aGlzIGNoYW5nZXMsIG5lZWQgdG8gcmVjaGVjayBtZXJnZSBzdGF0dXNcbiAgLyoqIGZ1bmN0aW9uIHRvIG1pbmltaXplIHRoZSBjYXJkIChvcHRpb25hbCkgKi9cbiAgb25NaW5pbWl6ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGhlIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rICovXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IFByb3BUeXBlcy5vYmplY3QsXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogYm9vayBJRCB0byB1c2UsIG9sZGVyIGxpYnJhcmllcyB1c2VkIHByb2plY3RJZCAqL1xuICAgIGJvb2tJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBvbGRlciBsaWJyYXJpZXMgdXNlZCBwcm9qZWN0SWQgaW5zdGVhZCBvZiBib29rSWQgKi9cbiAgICBwcm9qZWN0SWQ6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIC8qKiByZXNvdXJjZUxpbmsgKi9cbiAgcmVzb3VyY2VMaW5rOiBQcm9wVHlwZXMuYW55LFxuICAvKipUaGlzIGlzIGN1cnJlbnRseSBzZWxlY3RlZCBxdW90ZSAqL1xuICBzZWxlY3RlZFF1b3RlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgbG9hZGluZyBzdGF0ZSAqL1xuICBzZXRBcmVSZXNvdXJjZXNMb2FkaW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSBzYXZpbmcgc3RhdGUqL1xuICBzZXRBcmVSZXNvdXJjZXNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gcmVwb3J0IGNhcmQgbWVyZ2Ugc3RhdHVzICovXG4gIHNldENhcmRzTG9hZGluZ01lcmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHVwZGF0ZSBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNMb2FkaW5nVXBkYXRlOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHJlcG9ydCBjYXJkIHNhdmluZyBzdGF0dXMgKi9cbiAgc2V0Q2FyZHNTYXZpbmc6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGNhbGxiYWNrIHRvIHVwZGF0ZSB3b3JkIGFsaWduZXIgc3RhdGUgKi9cbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgdGhlIGNhcmQncyBtZXJnZSBzdGF0ZSBpbiBhcHAgKi9cbiAgdXBkYXRlTWVyZ2VTdGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG59XG4iXSwibWFwcGluZ3MiOiI7K0NBQ0EscUpBQUFBLG1CQUFBLFlBQUFBLG9CQUFBLFdBQUFDLENBQUEsU0FBQUMsQ0FBQSxFQUFBRCxDQUFBLE9BQUFFLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxTQUFBLEVBQUFDLENBQUEsR0FBQUgsQ0FBQSxDQUFBSSxjQUFBLEVBQUFDLENBQUEsR0FBQUosTUFBQSxDQUFBSyxjQUFBLGNBQUFQLENBQUEsRUFBQUQsQ0FBQSxFQUFBRSxDQUFBLElBQUFELENBQUEsQ0FBQUQsQ0FBQSxJQUFBRSxDQUFBLENBQUFPLEtBQUEsS0FBQUMsQ0FBQSx3QkFBQUMsTUFBQSxHQUFBQSxNQUFBLE9BQUFDLENBQUEsR0FBQUYsQ0FBQSxDQUFBRyxRQUFBLGtCQUFBQyxDQUFBLEdBQUFKLENBQUEsQ0FBQUssYUFBQSx1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
|
|
@@ -39,13 +39,16 @@ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" !=
|
|
|
39
39
|
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
|
40
40
|
import * as React from 'react';
|
|
41
41
|
import useDeepCompareEffect from 'use-deep-compare-effect';
|
|
42
|
-
import { VerseObjects } from 'scripture-resources-rcl';
|
|
42
|
+
import { VerseObjects, SelectionsContext } from 'scripture-resources-rcl';
|
|
43
43
|
import { UsfmFileConversionHelpers } from 'word-aligner-rcl';
|
|
44
44
|
import { CircularProgress } from 'translation-helps-rcl';
|
|
45
45
|
import { BookObjectsType, ScriptureReferenceType } from '../../types';
|
|
46
46
|
import { delay, emptyContent, getResourceMessage, LOADING_RESOURCE, verseObjectsHaveWords } from '../../utils';
|
|
47
47
|
import { ScriptureALignmentEditProps, useScriptureAlignmentEdit } from '../../hooks/useScriptureAlignmentEdit';
|
|
48
48
|
import { Container, Content, EmptyContent } from './styled';
|
|
49
|
+
import { isEqual } from "@react-hookz/deep-equal";
|
|
50
|
+
import cloneDeep from 'lodash/cloneDeep';
|
|
51
|
+
import { useContext } from "react";
|
|
49
52
|
var MessageStyle = {
|
|
50
53
|
direction: 'ltr',
|
|
51
54
|
whiteSpace: 'pre-wrap',
|
|
@@ -93,6 +96,7 @@ function ScripturePane(_ref) {
|
|
|
93
96
|
updateVersesAlignmentStatus = _ref.updateVersesAlignmentStatus;
|
|
94
97
|
var _React$useState = React.useState({
|
|
95
98
|
doingAlignment: false,
|
|
99
|
+
lastVerseObject: null,
|
|
96
100
|
newText: null,
|
|
97
101
|
processingEdit: false
|
|
98
102
|
}),
|
|
@@ -100,6 +104,7 @@ function ScripturePane(_ref) {
|
|
|
100
104
|
state = _React$useState2[0],
|
|
101
105
|
setState_ = _React$useState2[1];
|
|
102
106
|
var doingAlignment = state.doingAlignment,
|
|
107
|
+
lastVerseObject = state.lastVerseObject,
|
|
103
108
|
newText = state.newText,
|
|
104
109
|
processingEdit = state.processingEdit;
|
|
105
110
|
function setState(newState) {
|
|
@@ -112,6 +117,7 @@ function ScripturePane(_ref) {
|
|
|
112
117
|
initialVerseText = _React$useState4[0],
|
|
113
118
|
setInitialVerseText = _React$useState4[1];
|
|
114
119
|
var resourceMessage = '';
|
|
120
|
+
var _selectionsContext = useContext(SelectionsContext);
|
|
115
121
|
if (saving) {
|
|
116
122
|
resourceMessage = 'Saving Changes...';
|
|
117
123
|
} else if (determiningBranch) {
|
|
@@ -237,13 +243,35 @@ function ScripturePane(_ref) {
|
|
|
237
243
|
React.useEffect(function () {
|
|
238
244
|
// monitor for edit state changes and call back to scripture card with edit status
|
|
239
245
|
var _editing = editing || processingEdit;
|
|
240
|
-
var verseRef = "".concat(reference.chapter, ":").concat(reference.verse);
|
|
246
|
+
var verseRef = "".concat(reference === null || reference === void 0 ? void 0 : reference.chapter, ":").concat(reference === null || reference === void 0 ? void 0 : reference.verse);
|
|
241
247
|
setEditVerse && setEditVerse(verseRef, _editing);
|
|
242
248
|
}, [editing, processingEdit]);
|
|
243
249
|
var verseObjects = currentVerseObjects || initialVerseObjects || [];
|
|
244
250
|
var noWords = React.useMemo(function () {
|
|
245
251
|
return !verseObjectsHaveWords(verseObjects);
|
|
246
252
|
}, [currentVerseObjects, initialVerseObjects]);
|
|
253
|
+
React.useEffect(function () {
|
|
254
|
+
// monitor for verse object changes and call back to scripture card
|
|
255
|
+
var update = false;
|
|
256
|
+
if (currentVerseObjects !== null && currentVerseObjects !== void 0 && currentVerseObjects.length) {
|
|
257
|
+
var _currentVerseObjects = cloneDeep(currentVerseObjects);
|
|
258
|
+
if (lastVerseObject !== null && lastVerseObject !== void 0 && lastVerseObject.length) {
|
|
259
|
+
if (!isEqual(_currentVerseObjects, lastVerseObject)) {
|
|
260
|
+
var _selectionsContext$ac, _selectionsContext$ac2;
|
|
261
|
+
// @ts-ignore
|
|
262
|
+
_selectionsContext === null || _selectionsContext === void 0 || (_selectionsContext$ac = _selectionsContext.actions) === null || _selectionsContext$ac === void 0 || (_selectionsContext$ac2 = _selectionsContext$ac.handleChangedVerse) === null || _selectionsContext$ac2 === void 0 || _selectionsContext$ac2.call(_selectionsContext$ac, reference, _currentVerseObjects);
|
|
263
|
+
update = true;
|
|
264
|
+
}
|
|
265
|
+
} else {
|
|
266
|
+
update = true;
|
|
267
|
+
}
|
|
268
|
+
if (update) {
|
|
269
|
+
setState({
|
|
270
|
+
lastVerseObject: _currentVerseObjects
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}, [currentVerseObjects]);
|
|
247
275
|
|
|
248
276
|
/**
|
|
249
277
|
* determine what UI to show based on state
|
|
@@ -308,4 +336,4 @@ ScripturePane.defaultProps = {
|
|
|
308
336
|
verseObjects: []
|
|
309
337
|
};
|
|
310
338
|
export default ScripturePane;
|
|
311
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiVmVyc2VPYmplY3RzIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVSZWZlcmVuY2VUeXBlIiwiZGVsYXkiLCJlbXB0eUNvbnRlbnQiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJFbXB0eUNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJTY3JpcHR1cmVQYW5lIiwiX3JlZiIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZDMiLCJjdXJyZW50SW5kZXgiLCJjb250ZW50U3R5bGUiLCJkZXRlcm1pbmluZ0JyYW5jaCIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExleGljb25EYXRhIiwiaXNOVCIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIm9uQWxpZ25tZW50RmluaXNoIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0RWRpdFZlcnNlIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXJ2ZXIiLCJ0cmFuc2xhdGUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImRvaW5nQWxpZ25tZW50IiwibmV3VGV4dCIsInByb2Nlc3NpbmdFZGl0IiwiX1JlYWN0JHVzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5Iiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiX29iamVjdFNwcmVhZCIsIl9SZWFjdCR1c2VTdGF0ZTMiLCJfUmVhY3QkdXNlU3RhdGU0IiwiaW5pdGlhbFZlcnNlVGV4dCIsInNldEluaXRpYWxWZXJzZVRleHQiLCJyZXNvdXJjZU1lc3NhZ2UiLCJfcmVmMiIsImNoYXB0ZXIiLCJib29rSWQiLCJ2ZXJzZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWQiLCJhY3Rpb25zIiwiY2xlYXJDaGFuZ2VzIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkMiIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJlZGl0aW5nIiwiZW5hYmxlRWRpdCIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJuZXdWZXJzZVRleHQiLCJ1c2VFZmZlY3QiLCJjb25zb2xlIiwibG9nIiwiY2FsY3VsYXRlZEZvbnRTaXplIiwidXNlTWVtbyIsInBhcnNlRmxvYXQiLCJ0ZXh0QXJlYVN0eWxlIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInZlcnNlT2JqZWN0cyIsIm9uQmx1ciIsImV2ZW50IiwiX2V2ZW50JHRhcmdldCIsInRhcmdldCIsInZhbHVlIiwidGhlbiIsIl9lZGl0aW5nIiwidmVyc2VSZWYiLCJjb25jYXQiLCJub1dvcmRzIiwidmVyc2VDb250ZW50IiwiY3JlYXRlRWxlbWVudCIsInNpemUiLCJkZWZhdWx0VmFsdWUiLCJzdHlsZSIsImF1dG9Gb2N1cyIsIm5vVmVyc2VDb250ZW50IiwidmVyc2VLZXkiLCJwYWRkaW5nQm90dG9tIiwib25DbGljayIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBWZXJzZU9iamVjdHMgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IEJvb2tPYmplY3RzVHlwZSwgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGVtcHR5Q29udGVudCxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBMT0FESU5HX1JFU09VUkNFLFxuICB2ZXJzZU9iamVjdHNIYXZlV29yZHMsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCdcbmltcG9ydCB7XG4gIENvbnRhaW5lcixcbiAgQ29udGVudCxcbiAgRW1wdHlDb250ZW50LFxufSBmcm9tICcuL3N0eWxlZCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIGNvbnRlbnQgKiovXG4gIGNvbnRlbnRTdHlsZTogYW55O1xuICAvLyBpbmRleCBudW1iZXIgZm9yIHRoaXMgc2NyaXB0dXJlIHBhbmVcbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHdhaXRpbmcgdG8gZGV0ZXJtaW5lIGJyYW5jaFxuICBkZXRlcm1pbmluZ0JyYW5jaDogYm9vbGVhbixcbiAgLyoqIGxhbmd1YWdlIGRpcmVjdGlvbiB0byB1c2UgKiovXG4gIGRpcmVjdGlvbjogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBkbyBub3QgZGlzcGxheSBsZXhpY29uIHBvcG92ZXIgb24gaG92ZXIgKiovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogYm9vbGVhbnx1bmRlZmluZWQ7XG4gIC8qKiBmb250IHNpemUgZm9yIG1lc3NhZ2VzICovXG4gIGZvbnRTaXplOiBudW1iZXI7XG4gIC8qKiBmdW5jdGlvbiB0byBnZXQgbGF0ZXN0IGxleGljb24gZGF0YSAqL1xuICBnZXRMZXhpY29uRGF0YTogRnVuY3Rpb247XG4gIC8qKiB0cnVlIGlmIGJyb3dzaW5nIE5UICovXG4gIGlzTlQ6IGJvb2xlYW47XG4gIC8qKiB3aGV0aGVyIG9yIG5vdCB0aGlzIGN1cnJlbnQgdmVyc2UgaGFzIGJlZW4gc2VsZWN0ZWQgZm9yIGFsaWdubWVudCAqL1xuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQ6IGJvb2xlYW47XG4gIC8qKiBmdW5jdGlvbiB0byBiZSBjYWxsZWQgd2hlbiB2ZXJzZSBhbGlnbm1lbnQgaGFzIGZpbmlzaGVkICovXG4gIG9uQWxpZ25tZW50RmluaXNoOiBGdW5jdGlvbjtcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogQm9va09iamVjdHNUeXBlLFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlVHlwZTtcbiAgLyoqIG9wdGlvbmFsIHN0eWxlcyB0byB1c2UgZm9yIHJlZmVyZW5jZSAqKi9cbiAgcmVmU3R5bGU6IGFueTtcbiAgLyoqIG9iamVjdCB0aGF0IGNvbnRhaW5zIHJlc291cmNlIGxvYWRpbmcgc3RhdHVzIG9yIGZldGNoaW5nIGVycm9ycyAqL1xuICByZXNvdXJjZVN0YXR1czogb2JqZWN0fHVuZGVmaW5lZDtcbiAgLyoqIHJlc291cmNlIHRoYXQgd2FzIGxvYWRlZCAqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiB0cnVlIGlmIGN1cnJlbnRseSBzYXZpbmcgdXBkYXRlZCB0ZXh0IGFuZCBhbGlnbm1lbnRzICovXG4gIHNhdmluZzogYm9vbGVhbjtcbiAgLy8gaW5pdGlhbGl6YXRpb24gZm9yIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXRcbiAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZzogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLFxuICAvKiogc2VydmVyICovXG4gIHNlcnZlcjogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIGNhbGxiYWNrIHRvIGZsYWcgdGhhdCB3ZSBhcmUgZWRpdGluZyAqL1xuICBzZXRFZGl0VmVyc2U6IEZ1bmN0aW9uO1xuICAvKiogY2FsbGJhY2sgdG8gZmxhZyB1bnNhdmVkIHN0YXR1cyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uO1xuICAvLyBjYWxsYmFjayBmb3IgY2hhbmdlIGluIHdvcmQgYWxpZ25tZW50IHN0YXR1c1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogRnVuY3Rpb247XG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogRnVuY3Rpb247XG4gIC8qKiBmdW5jdGlvbiB0byBiZSBjYWxsZWQgdG8gdXBkYXRlIHZlcnNlIGFsaWdubWVudCBzdGF0dXMgKi9cbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzOiBGdW5jdGlvbjtcbn1cblxuY29uc3QgTWVzc2FnZVN0eWxlID0ge1xuICBkaXJlY3Rpb246ICdsdHInLFxuICB3aGl0ZVNwYWNlOiAncHJlLXdyYXAnLFxuICBsaW5lSGVpZ2h0OiAnbm9ybWFsJyxcbiAgZGlzcGxheTogJ2ZsZXgnLFxuICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICBoZWlnaHQ6ICcxMDAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgZm9udFNpemU6ICcxNnB4JyxcbiAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gIGZvbnRXZWlnaHQ6ICdib2xkJyxcbn1cblxuY29uc3QgVGV4dEFyZWFTdHlsZSA9IHtcbiAgaGVpZ2h0OiAnNjAlJyxcbiAgd2lkdGg6ICcxMDAlJyxcbiAgbWluV2lkdGg6ICcyMjBweCcsXG4gIG1pbkhlaWdodDogJzEwMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIGN1cnJlbnRJbmRleCxcbiAgY29udGVudFN0eWxlLFxuICBkZXRlcm1pbmluZ0JyYW5jaCxcbiAgZGlyZWN0aW9uLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGZvbnRTaXplLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgaXNOVCxcbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICBvbkFsaWdubWVudEZpbmlzaCxcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZWZTdHlsZSxcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2F2aW5nLFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICBzZXRFZGl0VmVyc2UsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHNlcnZlcixcbiAgdHJhbnNsYXRlLFxuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGRvaW5nQWxpZ25tZW50OiBmYWxzZSxcbiAgICBuZXdUZXh0OiBudWxsLFxuICAgIHByb2Nlc3NpbmdFZGl0OiBmYWxzZSxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGRvaW5nQWxpZ25tZW50LFxuICAgIG5ld1RleHQsXG4gICAgcHJvY2Vzc2luZ0VkaXQsIC8vIHRydWUgd2hlbiB3ZSBhcmUgcHJvY2Vzc2luZyBlZGl0IHRleHQgYWZ0ZXIgb25CbHVyXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcblxuICBsZXQgcmVzb3VyY2VNZXNzYWdlID0gJydcblxuICBpZiAoc2F2aW5nKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1NhdmluZyBDaGFuZ2VzLi4uJ1xuICB9IGVsc2UgaWYgKGRldGVybWluaW5nQnJhbmNoKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1ByZS0nICsgTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIHJlc291cmNlTWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlQpXG4gIH1cblxuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICBib29rSWQsXG4gICAgdmVyc2UsXG4gIH0gPSByZWZlcmVuY2UgfHwge31cbiAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8ICdsdHInXG5cbiAgcmVmU3R5bGUgPSByZWZTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICc5MCUnLFxuICB9XG5cbiAgY29udGVudFN0eWxlID0gY29udGVudFN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzEwMCUnLFxuICB9XG5cbiAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICBpbml0aWFsVmVyc2VUZXh0LFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCA9IHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcpXG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICBlbmFibGVFZGl0LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB9LFxuICB9ID0gX3NjcmlwdHVyZUFsaWdubWVudEVkaXRcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBtb25pdG9yIGlmIHdlIG5lZWQgdG8gc3RhcnQgYWxpZ25tZW50XG4gICAgaWYgKGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCAmJiAhYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7IC8vIGNoZWNrIGlmIGVkaXQgZm9yIHRoaXMgdmVyc2UgaXMgc2VsZWN0ZWQgYW5kIG5vdCBhbHJlYWR5IGRvaW5nIGFsaWdubWVudFxuICAgICAgaWYgKCFlZGl0aW5nICYmICFwcm9jZXNzaW5nRWRpdCkgeyAvLyBtYWtlIHN1cmUgbm90IHN0aWxsIGVkaXRpbmcgb3IgcHJvY2Vzc2luZyBlZGl0XG4gICAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudGAsIHJlZmVyZW5jZSlcbiAgICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2soKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBzdGlsbCBlZGl0aW5nIHZlcnNlLCBub3QgcmVhZHkgZm9yIGFsaWdubWVudGAsIHtlZGl0aW5nLCBwcm9jZXNzaW5nRWRpdH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LCBhbGlnbmVyRGF0YSwgZG9pbmdBbGlnbm1lbnQsIGVkaXRpbmcsIHByb2Nlc3NpbmdFZGl0XSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyAmJiB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMocmVmZXJlbmNlLCBhbGlnbmVkKVxuICB9LCBbYWxpZ25lZCwgY2hhcHRlciwgdmVyc2UsIGJvb2tJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IHRydWUgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFkb2luZ0FsaWdubWVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIGFsaWduZXJEYXRhIHdlbnQgZmFsc2UgdW5leHBlY3RlZGAsIHsgcmVmZXJlbmNlLCBhbGlnbmVyRGF0YSwgZG9pbmdBbGlnbm1lbnQgfSlcbiAgICAgIH1cblxuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiBmYWxzZSB9KVxuICAgICAgb25BbGlnbm1lbnRGaW5pc2ggJiYgb25BbGlnbm1lbnRGaW5pc2goKVxuICAgIH1cbiAgfSwgW19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Py5zdGF0ZT8uYWxpZ25lckRhdGFdKVxuXG4gIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBmb250IHNpemVcbiAgY29uc3QgY2FsY3VsYXRlZEZvbnRTaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiAoXG4gICAgcGFyc2VGbG9hdChUZXh0QXJlYVN0eWxlLmZvbnRTaXplKSAqIGZvbnRTaXplIC8gMTAwICsgJ3B4J1xuICApLCBbZm9udFNpemVdKVxuXG4gIGNvbnN0IHRleHRBcmVhU3R5bGUgPSB7XG4gICAgLi4uY29udGVudFN0eWxlLFxuICAgIC4uLlRleHRBcmVhU3R5bGUsXG4gICAgZm9udFNpemU6IGNhbGN1bGF0ZWRGb250U2l6ZSxcbiAgfVxuXG4gIHVzZURlZXBDb21wYXJlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHM6IGluaXRpYWxWZXJzZU9iamVjdHMgfSlcbiAgICBjbGVhckNoYW5nZXMoKVxuICAgIHNldEluaXRpYWxWZXJzZVRleHQodmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbnVsbCB9KVxuICB9LCBbeyByZWZlcmVuY2UsIGluaXRpYWxWZXJzZU9iamVjdHMgfV0pXG5cbiAgLyoqXG4gICAqIHdoZW4gZm9jdXMgaXMgY2hhbmdlZCBmcm9tIHRleHQgZWRpdGluZywgZ2V0IGZpbmFsIHRleHQgYW5kIGRvIHByb2Nlc3Npbmcgb2YgZmluYWwgdGV4dFxuICAgKiBAcGFyYW0ge1JlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+fSBldmVudCAtIERPTSBldmVudCBpbmZvXG4gICAqL1xuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWUgLy8gZ2V0IG5ldyB0ZXh0XG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBuZXdWZXJzZVRleHQsIHByb2Nlc3NpbmdFZGl0OiB0cnVlIH0pIC8vIHNob3cgc3Bpbm5lciB3aGlsZSBwcm9jZXNzaW5nIGVkaXQgdGV4dFxuICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7IC8vIGFsbG93IHN0YXRlIHRvIHVwZGF0ZSBiZWZvcmUgcHJvY2Vzc2luZyBuZXcgdGV4dFxuICAgICAgc2V0RWRpdGluZyhmYWxzZSwgbmV3VmVyc2VUZXh0KS50aGVuKCgpID0+IHsgLy8gcHJvY2VzcyB0aGUgbGF0ZXN0IGVkaXQgdGV4dFxuICAgICAgICBzZXRTdGF0ZSh7cHJvY2Vzc2luZ0VkaXQ6IGZhbHNlfSkgLy8gbm93IGRvbmUsIHJlbW92ZSBzcGlubmVyXG4gICAgICB9KVxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBtb25pdG9yIGZvciBlZGl0IHN0YXRlIGNoYW5nZXMgYW5kIGNhbGwgYmFjayB0byBzY3JpcHR1cmUgY2FyZCB3aXRoIGVkaXQgc3RhdHVzXG4gICAgY29uc3QgX2VkaXRpbmcgPSBlZGl0aW5nIHx8IHByb2Nlc3NpbmdFZGl0XG4gICAgY29uc3QgdmVyc2VSZWYgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICAgIHNldEVkaXRWZXJzZSAmJiBzZXRFZGl0VmVyc2UodmVyc2VSZWYsIF9lZGl0aW5nKVxuICB9LCBbZWRpdGluZywgcHJvY2Vzc2luZ0VkaXRdKVxuXG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0cyB8fCBbXVxuICBjb25zdCBub1dvcmRzID0gUmVhY3QudXNlTWVtbygoKSA9PiAhdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZlcnNlT2JqZWN0cyksIFtjdXJyZW50VmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZGV0ZXJtaW5lIHdoYXQgVUkgdG8gc2hvdyBiYXNlZCBvbiBzdGF0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmcgLSBpZiB0cnVlIHNob3cgZWRpdCBtb2RlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlRWRpdCAtIGlmIHRydWUgdGhlbiBlZGl0IGlzIGVuYWJsZWRcbiAgICogQHBhcmFtIHtib29sZWFufSBub1dvcmRzIC0gaWYgdHJ1ZSB0aGVuIHRoZXJlIGFyZSBubyBkaXNwbGF5YWJsZSB3b3Jkc1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHByb2Nlc3NpbmdFZGl0IC0gaWYgdHJ1ZSB0aGVuIGVkaXQgaXMgYmVpbmcgcHJvY2Vzc2VkXG4gICAqL1xuICBmdW5jdGlvbiB2ZXJzZUNvbnRlbnQoZWRpdGluZywgZW5hYmxlRWRpdCwgbm9Xb3JkcywgcHJvY2Vzc2luZ0VkaXQpIHtcbiAgICBpZiAocHJvY2Vzc2luZ0VkaXQpIHsgLy8gcHV0IHVwIHNwaW5uZXIgd2hpbGUgcHJvY2Vzc2luZyB0aGUgZWRpdFxuICAgICAgcmV0dXJuIDxDaXJjdWxhclByb2dyZXNzIHNpemU9ezQwfS8+XG4gICAgfVxuXG4gICAgaWYgKGVkaXRpbmcpIHtcbiAgICAgIHJldHVybiA8dGV4dGFyZWFcbiAgICAgICAgZGVmYXVsdFZhbHVlPXtuZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dH1cbiAgICAgICAgb25CbHVyPXtvbkJsdXJ9XG4gICAgICAgIHN0eWxlPXt0ZXh0QXJlYVN0eWxlfVxuICAgICAgICBhdXRvRm9jdXNcbiAgICAgIC8+XG4gICAgfVxuXG4gICAgY29uc3Qgbm9WZXJzZUNvbnRlbnQgPSBub1dvcmRzICYmIGVtcHR5Q29udGVudCh2ZXJzZU9iamVjdHMpOyAvL1RSSUNLWSAtIGp1c3QgYmVjYXVzZSB0aGVyZSBhcmUgbm8gd29yZHMgZG9lc24ndCBtZWFuIHRoZXJlIGlzIG5vdCB2aXNpYmxlIGNvbnRlbnQsIHNvIGFsc28gY2hlY2sgZm9yIHRoYXRcbiAgICBpZiAobm9WZXJzZUNvbnRlbnQgJiYgZW5hYmxlRWRpdCkgeyAvLyBzaG93IGEgY2xpY2thYmxlIG1lc3NhZ2UgaW4gdGhlIGNhc2UgdGhhdCB0aGVyZSBpcyBubyB0ZXh0IHRvIGNsaWNrIG9uXG4gICAgICByZXR1cm4gPEVtcHR5Q29udGVudD5cbiAgICAgICAgQ2xpY2sgdG8gRWRpdFxuICAgICAgPC9FbXB0eUNvbnRlbnQ+XG4gICAgfVxuXG4gICAgcmV0dXJuIDxWZXJzZU9iamVjdHNcbiAgICAgIHZlcnNlS2V5PXtgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YH1cbiAgICAgIHZlcnNlT2JqZWN0cz17dmVyc2VPYmplY3RzfVxuICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJ9XG4gICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAvPlxuICB9XG5cbiAgcmV0dXJuIChcbiAgICA8Q29udGFpbmVyIHN0eWxlPXt7IGRpcmVjdGlvbiwgd2lkdGg6ICcxMDAlJywgcGFkZGluZ0JvdHRvbTogJzAuNWVtJyB9fT5cbiAgICAgIHtyZXNvdXJjZU1lc3NhZ2UgP1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIDxkaXYgc3R5bGU9e01lc3NhZ2VTdHlsZX0+XG4gICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogYCR7Zm9udFNpemV9JWAgfX0+IHtyZXNvdXJjZU1lc3NhZ2V9IDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgOlxuICAgICAgICA8Q29udGVudD5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17cmVmU3R5bGV9PiB7Y2hhcHRlcn06e3ZlcnNlfSZuYnNwOzwvc3Bhbj5cbiAgICAgICAgICA8c3BhbiBzdHlsZT17Y29udGVudFN0eWxlfSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICBzZXRFZGl0aW5nICYmIHNldEVkaXRpbmcodHJ1ZSlcbiAgICAgICAgICB9fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHt2ZXJzZUNvbnRlbnQoZWRpdGluZywgZW5hYmxlRWRpdCwgbm9Xb3JkcywgcHJvY2Vzc2luZ0VkaXQpfVxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9Db250ZW50PlxuICAgICAgfVxuICAgIDwvQ29udGFpbmVyPlxuICApXG59XG5cblNjcmlwdHVyZVBhbmUuZGVmYXVsdFByb3BzID0geyB2ZXJzZU9iamVjdHM6IFtdIH1cblxuZXhwb3J0IGRlZmF1bHQgU2NyaXB0dXJlUGFuZVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQUssTUFBTSxPQUFPO0FBQzlCLE9BQU9DLG9CQUFvQixNQUFNLHlCQUF5QjtBQUMxRCxTQUFTQyxZQUFZLFFBQVEseUJBQXlCO0FBQ3RELFNBQVNDLHlCQUF5QixRQUFRLGtCQUFrQjtBQUM1RCxTQUFTQyxnQkFBZ0IsUUFBUSx1QkFBdUI7QUFDeEQsU0FBU0MsZUFBZSxFQUFFQyxzQkFBc0IsUUFBUSxhQUFhO0FBQ3JFLFNBQ0VDLEtBQUssRUFDTEMsWUFBWSxFQUNaQyxrQkFBa0IsRUFDbEJDLGdCQUFnQixFQUNoQkMscUJBQXFCLFFBQ2hCLGFBQWE7QUFDcEIsU0FBU0MsMkJBQTJCLEVBQUVDLHlCQUF5QixRQUFRLHVDQUF1QztBQUM5RyxTQUNFQyxTQUFTLEVBQ1RDLE9BQU8sRUFDUEMsWUFBWSxRQUNQLFVBQVU7QUFtRGpCLElBQU1DLFlBQVksR0FBRztFQUNuQkMsU0FBUyxFQUFFLEtBQUs7RUFDaEJDLFVBQVUsRUFBRSxVQUFVO0VBQ3RCQyxVQUFVLEVBQUUsUUFBUTtFQUNwQkMsT0FBTyxFQUFFLE1BQU07RUFDZkMsY0FBYyxFQUFFLFFBQVE7RUFDeEJDLFVBQVUsRUFBRSxRQUFRO0VBQ3BCQyxNQUFNLEVBQUUsTUFBTTtFQUNkQyxLQUFLLEVBQUUsTUFBTTtFQUNiQyxRQUFRLEVBQUUsTUFBTTtFQUNoQkMsVUFBVSxFQUFFLFdBQVc7RUFDdkJDLFVBQVUsRUFBRTtBQUNkLENBQUM7QUFFRCxJQUFNQyxhQUFhLEdBQUc7RUFDcEJMLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLEtBQUssRUFBRSxNQUFNO0VBQ2JLLFFBQVEsRUFBRSxPQUFPO0VBQ2pCQyxTQUFTLEVBQUUsT0FBTztFQUNsQkwsUUFBUSxFQUFFO0FBQ1osQ0FBQztBQUVELFNBQVNNLGFBQWFBLENBQUFDLElBQUEsRUF3Qlg7RUFBQSxJQUFBQyxzQkFBQTtFQUFBLElBdkJUQyxZQUFZLEdBQUFGLElBQUEsQ0FBWkUsWUFBWTtJQUNaQyxZQUFZLEdBQUFILElBQUEsQ0FBWkcsWUFBWTtJQUNaQyxpQkFBaUIsR0FBQUosSUFBQSxDQUFqQkksaUJBQWlCO0lBQ2pCbkIsU0FBUyxHQUFBZSxJQUFBLENBQVRmLFNBQVM7SUFDVG9CLGtCQUFrQixHQUFBTCxJQUFBLENBQWxCSyxrQkFBa0I7SUFDbEJaLFFBQVEsR0FBQU8sSUFBQSxDQUFSUCxRQUFRO0lBQ1JhLGNBQWMsR0FBQU4sSUFBQSxDQUFkTSxjQUFjO0lBQ2RDLElBQUksR0FBQVAsSUFBQSxDQUFKTyxJQUFJO0lBQ0pDLDJCQUEyQixHQUFBUixJQUFBLENBQTNCUSwyQkFBMkI7SUFDM0JDLGlCQUFpQixHQUFBVCxJQUFBLENBQWpCUyxpQkFBaUI7SUFDakJDLDRCQUE0QixHQUFBVixJQUFBLENBQTVCVSw0QkFBNEI7SUFDNUJDLFNBQVMsR0FBQVgsSUFBQSxDQUFUVyxTQUFTO0lBQ1RDLFFBQVEsR0FBQVosSUFBQSxDQUFSWSxRQUFRO0lBQ1JDLGNBQWMsR0FBQWIsSUFBQSxDQUFkYSxjQUFjO0lBQ2RDLFlBQVksR0FBQWQsSUFBQSxDQUFaYyxZQUFZO0lBQ1pDLE1BQU0sR0FBQWYsSUFBQSxDQUFOZSxNQUFNO0lBQ05DLDRCQUE0QixHQUFBaEIsSUFBQSxDQUE1QmdCLDRCQUE0QjtJQUM1QkMsWUFBWSxHQUFBakIsSUFBQSxDQUFaaUIsWUFBWTtJQUNaQyxlQUFlLEdBQUFsQixJQUFBLENBQWZrQixlQUFlO0lBQ2ZDLG9CQUFvQixHQUFBbkIsSUFBQSxDQUFwQm1CLG9CQUFvQjtJQUNwQkMsTUFBTSxHQUFBcEIsSUFBQSxDQUFOb0IsTUFBTTtJQUNOQyxTQUFTLEdBQUFyQixJQUFBLENBQVRxQixTQUFTO0lBQ1RDLDJCQUEyQixHQUFBdEIsSUFBQSxDQUEzQnNCLDJCQUEyQjtFQUUzQixJQUFBQyxlQUFBLEdBQTJCeEQsS0FBSyxDQUFDeUQsUUFBUSxDQUFDO01BQ3hDQyxjQUFjLEVBQUUsS0FBSztNQUNyQkMsT0FBTyxFQUFFLElBQUk7TUFDYkMsY0FBYyxFQUFFO0lBQ2xCLENBQUMsQ0FBQztJQUFBQyxnQkFBQSxHQUFBQyxjQUFBLENBQUFOLGVBQUE7SUFKS08sS0FBSyxHQUFBRixnQkFBQTtJQUFFRyxTQUFTLEdBQUFILGdCQUFBO0VBS3ZCLElBQ0VILGNBQWMsR0FHWkssS0FBSyxDQUhQTCxjQUFjO0lBQ2RDLE9BQU8sR0FFTEksS0FBSyxDQUZQSixPQUFPO0lBQ1BDLGNBQWMsR0FDWkcsS0FBSyxDQURQSCxjQUFjO0VBR2hCLFNBQVNLLFFBQVFBLENBQUNDLFFBQVEsRUFBRTtJQUMxQkYsU0FBUyxDQUFDLFVBQUFHLFNBQVM7TUFBQSxPQUFBQyxhQUFBLENBQUFBLGFBQUEsS0FBVUQsU0FBUyxHQUFLRCxRQUFRO0lBQUEsQ0FBRyxDQUFDO0VBQ3pEO0VBRUEsSUFBQUcsZ0JBQUEsR0FBZ0RyRSxLQUFLLENBQUN5RCxRQUFRLENBQUMsSUFBSSxDQUFDO0lBQUFhLGdCQUFBLEdBQUFSLGNBQUEsQ0FBQU8sZ0JBQUE7SUFBN0RFLGdCQUFnQixHQUFBRCxnQkFBQTtJQUFFRSxtQkFBbUIsR0FBQUYsZ0JBQUE7RUFFNUMsSUFBSUcsZUFBZSxHQUFHLEVBQUU7RUFFeEIsSUFBSXpCLE1BQU0sRUFBRTtJQUNWeUIsZUFBZSxHQUFHLG1CQUFtQjtFQUN2QyxDQUFDLE1BQU0sSUFBSXBDLGlCQUFpQixFQUFFO0lBQzVCb0MsZUFBZSxHQUFHLE1BQU0sR0FBRy9ELGdCQUFnQjtFQUM3QyxDQUFDLE1BQU07SUFDTCtELGVBQWUsR0FBR2hFLGtCQUFrQixDQUFDcUMsY0FBYyxFQUFFTyxNQUFNLEVBQUVOLFlBQVksRUFBRVAsSUFBSSxDQUFDO0VBQ2xGO0VBRUEsSUFBQWtDLEtBQUEsR0FJSTlCLFNBQVMsSUFBSSxDQUFDLENBQUM7SUFIakIrQixPQUFPLEdBQUFELEtBQUEsQ0FBUEMsT0FBTztJQUNQQyxNQUFNLEdBQUFGLEtBQUEsQ0FBTkUsTUFBTTtJQUNOQyxLQUFLLEdBQUFILEtBQUEsQ0FBTEcsS0FBSztFQUVQM0QsU0FBUyxHQUFHQSxTQUFTLElBQUksS0FBSztFQUU5QjJCLFFBQVEsR0FBR0EsUUFBUSxJQUFJO0lBQ3JCbEIsVUFBVSxFQUFFLFdBQVc7SUFDdkJELFFBQVEsRUFBRTtFQUNaLENBQUM7RUFFRFUsWUFBWSxHQUFHQSxZQUFZLElBQUk7SUFDN0JULFVBQVUsRUFBRSxXQUFXO0lBQ3ZCRCxRQUFRLEVBQUU7RUFDWixDQUFDO0VBRUQsSUFBTW9ELDZCQUE2QixHQUFBVixhQUFBLENBQUFBLGFBQUEsS0FDOUJuQiw0QkFBNEI7SUFDL0JzQixnQkFBZ0IsRUFBaEJBLGdCQUFnQjtJQUNoQjVCLDRCQUE0QixFQUE1QkE7RUFBNEIsRUFDN0I7RUFFRCxJQUFNb0MsdUJBQXVCLEdBQUdsRSx5QkFBeUIsQ0FBQ2lFLDZCQUE2QixDQUFDO0VBQ3hGLElBQUFFLHFCQUFBLEdBZ0JJRCx1QkFBdUIsQ0FmekJFLE9BQU87SUFDTEMsWUFBWSxHQUFBRixxQkFBQSxDQUFaRSxZQUFZO0lBQ1pDLG9CQUFvQixHQUFBSCxxQkFBQSxDQUFwQkcsb0JBQW9CO0lBQ3BCQyxVQUFVLEdBQUFKLHFCQUFBLENBQVZJLFVBQVU7SUFDVkMsZUFBZSxHQUFBTCxxQkFBQSxDQUFmSyxlQUFlO0lBQUFDLHNCQUFBLEdBV2ZQLHVCQUF1QixDQVR6QmhCLEtBQUs7SUFDSHdCLE9BQU8sR0FBQUQsc0JBQUEsQ0FBUEMsT0FBTztJQUNQQyxXQUFXLEdBQUFGLHNCQUFBLENBQVhFLFdBQVc7SUFDWEMsbUJBQW1CLEdBQUFILHNCQUFBLENBQW5CRyxtQkFBbUI7SUFDbkJDLE9BQU8sR0FBQUosc0JBQUEsQ0FBUEksT0FBTztJQUNQQyxVQUFVLEdBQUFMLHNCQUFBLENBQVZLLFVBQVU7SUFDVkMsbUJBQW1CLEdBQUFOLHNCQUFBLENBQW5CTSxtQkFBbUI7SUFDbkJDLFlBQVksR0FBQVAsc0JBQUEsQ0FBWk8sWUFBWTtFQUloQjdGLEtBQUssQ0FBQzhGLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBSXJELDJCQUEyQixJQUFJLENBQUMrQyxXQUFXLElBQUksQ0FBQzlCLGNBQWMsRUFBRTtNQUFFO01BQ3BFLElBQUksQ0FBQ2dDLE9BQU8sSUFBSSxDQUFDOUIsY0FBYyxFQUFFO1FBQUU7UUFDakNtQyxPQUFPLENBQUNDLEdBQUcsaURBQWlEcEQsU0FBUyxDQUFDO1FBQ3RFdUMsb0JBQW9CLENBQUMsQ0FBQztNQUN4QixDQUFDLE1BQU07UUFDTFksT0FBTyxDQUFDQyxHQUFHLGlFQUFpRTtVQUFDTixPQUFPLEVBQVBBLE9BQU87VUFBRTlCLGNBQWMsRUFBZEE7UUFBYyxDQUFDLENBQUM7TUFDeEc7SUFDRjtFQUNGLENBQUMsRUFBRSxDQUFDbkIsMkJBQTJCLEVBQUUrQyxXQUFXLEVBQUU5QixjQUFjLEVBQUVnQyxPQUFPLEVBQUU5QixjQUFjLENBQUMsQ0FBQztFQUV2RjVELEtBQUssQ0FBQzhGLFNBQVMsQ0FBQyxZQUFNO0lBQ3BCdkMsMkJBQTJCLElBQUlBLDJCQUEyQixDQUFDWCxTQUFTLEVBQUUyQyxPQUFPLENBQUM7RUFDaEYsQ0FBQyxFQUFFLENBQUNBLE9BQU8sRUFBRVosT0FBTyxFQUFFRSxLQUFLLEVBQUVELE1BQU0sQ0FBQyxDQUFDO0VBRXJDNUUsS0FBSyxDQUFDOEYsU0FBUyxDQUFDLFlBQU07SUFDcEIsSUFBSU4sV0FBVyxJQUFJLENBQUM5QixjQUFjLEVBQUU7TUFDbENOLG9CQUFvQixJQUFJQSxvQkFBb0IsQ0FBQzJCLHVCQUF1QixDQUFDO01BQ3JFZCxRQUFRLENBQUM7UUFBRVAsY0FBYyxFQUFFO01BQUssQ0FBQyxDQUFDO0lBQ3BDLENBQUMsTUFBTTtNQUNMLElBQUksQ0FBQ0EsY0FBYyxFQUFFO1FBQ25CcUMsT0FBTyxDQUFDQyxHQUFHLHNEQUFzRDtVQUFFcEQsU0FBUyxFQUFUQSxTQUFTO1VBQUU0QyxXQUFXLEVBQVhBLFdBQVc7VUFBRTlCLGNBQWMsRUFBZEE7UUFBZSxDQUFDLENBQUM7TUFDOUc7TUFFQU4sb0JBQW9CLElBQUlBLG9CQUFvQixDQUFDMkIsdUJBQXVCLENBQUM7TUFDckVkLFFBQVEsQ0FBQztRQUFFUCxjQUFjLEVBQUU7TUFBTSxDQUFDLENBQUM7TUFDbkNoQixpQkFBaUIsSUFBSUEsaUJBQWlCLENBQUMsQ0FBQztJQUMxQztFQUNGLENBQUMsRUFBRSxDQUFDcUMsdUJBQXVCLGFBQXZCQSx1QkFBdUIsZ0JBQUE3QyxzQkFBQSxHQUF2QjZDLHVCQUF1QixDQUFFaEIsS0FBSyxjQUFBN0Isc0JBQUEsdUJBQTlCQSxzQkFBQSxDQUFnQ3NELFdBQVcsQ0FBQyxDQUFDOztFQUVqRDtFQUNBLElBQU1TLGtCQUFrQixHQUFHakcsS0FBSyxDQUFDa0csT0FBTyxDQUFDO0lBQUEsT0FDdkNDLFVBQVUsQ0FBQ3RFLGFBQWEsQ0FBQ0gsUUFBUSxDQUFDLEdBQUdBLFFBQVEsR0FBRyxHQUFHLEdBQUcsSUFBSTtFQUFBLENBQzNELEVBQUUsQ0FBQ0EsUUFBUSxDQUFDLENBQUM7RUFFZCxJQUFNMEUsYUFBYSxHQUFBaEMsYUFBQSxDQUFBQSxhQUFBLENBQUFBLGFBQUEsS0FDZGhDLFlBQVksR0FDWlAsYUFBYTtJQUNoQkgsUUFBUSxFQUFFdUU7RUFBa0IsRUFDN0I7RUFFRGhHLG9CQUFvQixDQUFDLFlBQU07SUFDekIsSUFBTW9HLFNBQVMsR0FBR2xHLHlCQUF5QixDQUFDbUcsc0JBQXNCLENBQUM7TUFBRUMsWUFBWSxFQUFFWDtJQUFvQixDQUFDLENBQUM7SUFDekdWLFlBQVksQ0FBQyxDQUFDO0lBQ2RWLG1CQUFtQixDQUFDNkIsU0FBUyxDQUFDO0lBQzlCcEMsUUFBUSxDQUFDO01BQUVOLE9BQU8sRUFBRTtJQUFLLENBQUMsQ0FBQztFQUM3QixDQUFDLEVBQUUsQ0FBQztJQUFFZixTQUFTLEVBQVRBLFNBQVM7SUFBRWdELG1CQUFtQixFQUFuQkE7RUFBb0IsQ0FBQyxDQUFDLENBQUM7O0VBRXhDO0FBQ0Y7QUFDQTtBQUNBO0VBQ0UsU0FBU1ksTUFBTUEsQ0FBQ0MsS0FBNkMsRUFBRTtJQUFBLElBQUFDLGFBQUE7SUFDN0QsSUFBTWIsWUFBWSxHQUFHWSxLQUFLLGFBQUxBLEtBQUssZ0JBQUFDLGFBQUEsR0FBTEQsS0FBSyxDQUFFRSxNQUFNLGNBQUFELGFBQUEsdUJBQWJBLGFBQUEsQ0FBZUUsS0FBSyxFQUFDO0lBQzFDM0MsUUFBUSxDQUFDO01BQUVOLE9BQU8sRUFBRWtDLFlBQVk7TUFBRWpDLGNBQWMsRUFBRTtJQUFLLENBQUMsQ0FBQyxFQUFDO0lBQzFEckQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDc0csSUFBSSxDQUFDLFlBQU07TUFBRTtNQUN0QnpCLFVBQVUsQ0FBQyxLQUFLLEVBQUVTLFlBQVksQ0FBQyxDQUFDZ0IsSUFBSSxDQUFDLFlBQU07UUFBRTtRQUMzQzVDLFFBQVEsQ0FBQztVQUFDTCxjQUFjLEVBQUU7UUFBSyxDQUFDLENBQUMsRUFBQztNQUNwQyxDQUFDLENBQUM7SUFDSixDQUFDLENBQUM7RUFDSjs7RUFFQTVELEtBQUssQ0FBQzhGLFNBQVMsQ0FBQyxZQUFNO0lBQUU7SUFDdEIsSUFBTWdCLFFBQVEsR0FBR3BCLE9BQU8sSUFBSTlCLGNBQWM7SUFDMUMsSUFBTW1ELFFBQVEsTUFBQUMsTUFBQSxDQUFNcEUsU0FBUyxDQUFDK0IsT0FBTyxPQUFBcUMsTUFBQSxDQUFJcEUsU0FBUyxDQUFDaUMsS0FBSyxDQUFFO0lBQzFEM0IsWUFBWSxJQUFJQSxZQUFZLENBQUM2RCxRQUFRLEVBQUVELFFBQVEsQ0FBQztFQUNsRCxDQUFDLEVBQUUsQ0FBQ3BCLE9BQU8sRUFBRTlCLGNBQWMsQ0FBQyxDQUFDO0VBRTdCLElBQU0yQyxZQUFZLEdBQUdkLG1CQUFtQixJQUFJRyxtQkFBbUIsSUFBSSxFQUFFO0VBQ3JFLElBQU1xQixPQUFPLEdBQUdqSCxLQUFLLENBQUNrRyxPQUFPLENBQUM7SUFBQSxPQUFNLENBQUN2RixxQkFBcUIsQ0FBQzRGLFlBQVksQ0FBQztFQUFBLEdBQUUsQ0FBQ2QsbUJBQW1CLEVBQUVHLG1CQUFtQixDQUFDLENBQUM7O0VBRXJIO0FBQ0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0VBQ0UsU0FBU3NCLFlBQVlBLENBQUN4QixPQUFPLEVBQUVDLFVBQVUsRUFBRXNCLE9BQU8sRUFBRXJELGNBQWMsRUFBRTtJQUNsRSxJQUFJQSxjQUFjLEVBQUU7TUFBRTtNQUNwQixvQkFBTzVELEtBQUEsQ0FBQW1ILGFBQUEsQ0FBQy9HLGdCQUFnQjtRQUFDZ0gsSUFBSSxFQUFFO01BQUcsQ0FBQyxDQUFDO0lBQ3RDO0lBRUEsSUFBSTFCLE9BQU8sRUFBRTtNQUNYLG9CQUFPMUYsS0FBQSxDQUFBbUgsYUFBQTtRQUNMRSxZQUFZLEVBQUV4QixZQUFZLElBQUl0QixnQkFBaUI7UUFDL0NpQyxNQUFNLEVBQUVBLE1BQU87UUFDZmMsS0FBSyxFQUFFbEIsYUFBYztRQUNyQm1CLFNBQVM7TUFBQSxDQUNWLENBQUM7SUFDSjtJQUVBLElBQU1DLGNBQWMsR0FBR1AsT0FBTyxJQUFJekcsWUFBWSxDQUFDK0YsWUFBWSxDQUFDLENBQUMsQ0FBQztJQUM5RCxJQUFJaUIsY0FBYyxJQUFJN0IsVUFBVSxFQUFFO01BQUU7TUFDbEMsb0JBQU8zRixLQUFBLENBQUFtSCxhQUFBLENBQUNuRyxZQUFZLFFBQUMsZUFFUCxDQUFDO0lBQ2pCO0lBRUEsb0JBQU9oQixLQUFBLENBQUFtSCxhQUFBLENBQUNqSCxZQUFZO01BQ2xCdUgsUUFBUSxLQUFBVCxNQUFBLENBQUtwRSxTQUFTLENBQUMrQixPQUFPLE9BQUFxQyxNQUFBLENBQUlwRSxTQUFTLENBQUNpQyxLQUFLLENBQUc7TUFDcEQwQixZQUFZLEVBQUVBLFlBQWE7TUFDM0JqRSxrQkFBa0IsRUFBRUEsa0JBQW1CO01BQ3ZDQyxjQUFjLEVBQUVBLGNBQWU7TUFDL0JlLFNBQVMsRUFBRUE7SUFBVSxDQUN0QixDQUFDO0VBQ0o7RUFFQSxvQkFDRXRELEtBQUEsQ0FBQW1ILGFBQUEsQ0FBQ3JHLFNBQVM7SUFBQ3dHLEtBQUssRUFBRTtNQUFFcEcsU0FBUyxFQUFUQSxTQUFTO01BQUVPLEtBQUssRUFBRSxNQUFNO01BQUVpRyxhQUFhLEVBQUU7SUFBUTtFQUFFLEdBQ3BFakQsZUFBZTtFQUFBO0VBQ2Q7RUFDQXpFLEtBQUEsQ0FBQW1ILGFBQUE7SUFBS0csS0FBSyxFQUFFckc7RUFBYSxnQkFDdkJqQixLQUFBLENBQUFtSCxhQUFBO0lBQUtHLEtBQUssRUFBRTtNQUFFNUYsUUFBUSxLQUFBc0YsTUFBQSxDQUFLdEYsUUFBUTtJQUFJO0VBQUUsR0FBQyxHQUFDLEVBQUMrQyxlQUFlLEVBQUMsR0FBTSxDQUMvRCxDQUFDLGdCQUVOekUsS0FBQSxDQUFBbUgsYUFBQSxDQUFDcEcsT0FBTyxxQkFDTmYsS0FBQSxDQUFBbUgsYUFBQTtJQUFNRyxLQUFLLEVBQUV6RTtFQUFTLEdBQUMsR0FBQyxFQUFDOEIsT0FBTyxFQUFDLEdBQUMsRUFBQ0UsS0FBSyxFQUFDLE1BQVksQ0FBQyxlQUN0RDdFLEtBQUEsQ0FBQW1ILGFBQUE7SUFBTUcsS0FBSyxFQUFFbEYsWUFBYTtJQUFDdUYsT0FBTyxFQUFFLFNBQUFBLFFBQUEsRUFBTTtNQUN4Q3ZDLFVBQVUsSUFBSUEsVUFBVSxDQUFDLElBQUksQ0FBQztJQUNoQztFQUFFLEdBRUM4QixZQUFZLENBQUN4QixPQUFPLEVBQUVDLFVBQVUsRUFBRXNCLE9BQU8sRUFBRXJELGNBQWMsQ0FDdEQsQ0FDQyxDQUVGLENBQUM7QUFFaEI7QUFFQTVCLGFBQWEsQ0FBQzRGLFlBQVksR0FBRztFQUFFckIsWUFBWSxFQUFFO0FBQUcsQ0FBQztBQUVqRCxlQUFldkUsYUFBYSJ9
|
|
339
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZURlZXBDb21wYXJlRWZmZWN0IiwiVmVyc2VPYmplY3RzIiwiU2VsZWN0aW9uc0NvbnRleHQiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwiQ2lyY3VsYXJQcm9ncmVzcyIsIkJvb2tPYmplY3RzVHlwZSIsIlNjcmlwdHVyZVJlZmVyZW5jZVR5cGUiLCJkZWxheSIsImVtcHR5Q29udGVudCIsImdldFJlc291cmNlTWVzc2FnZSIsIkxPQURJTkdfUkVTT1VSQ0UiLCJ2ZXJzZU9iamVjdHNIYXZlV29yZHMiLCJTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiQ29udGFpbmVyIiwiQ29udGVudCIsIkVtcHR5Q29udGVudCIsImlzRXF1YWwiLCJjbG9uZURlZXAiLCJ1c2VDb250ZXh0IiwiTWVzc2FnZVN0eWxlIiwiZGlyZWN0aW9uIiwid2hpdGVTcGFjZSIsImxpbmVIZWlnaHQiLCJkaXNwbGF5IiwianVzdGlmeUNvbnRlbnQiLCJhbGlnbkl0ZW1zIiwiaGVpZ2h0Iiwid2lkdGgiLCJmb250U2l6ZSIsImZvbnRGYW1pbHkiLCJmb250V2VpZ2h0IiwiVGV4dEFyZWFTdHlsZSIsIm1pbldpZHRoIiwibWluSGVpZ2h0IiwiU2NyaXB0dXJlUGFuZSIsIl9yZWYiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWQzIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMZXhpY29uRGF0YSIsImlzTlQiLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJvbkFsaWdubWVudEZpbmlzaCIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldEVkaXRWZXJzZSIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwic2VydmVyIiwidHJhbnNsYXRlIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsImxhc3RWZXJzZU9iamVjdCIsIm5ld1RleHQiLCJwcm9jZXNzaW5nRWRpdCIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsIl9vYmplY3RTcHJlYWQiLCJfUmVhY3QkdXNlU3RhdGUzIiwiX1JlYWN0JHVzZVN0YXRlNCIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNZXNzYWdlIiwiX3NlbGVjdGlvbnNDb250ZXh0IiwiX3JlZjIiLCJjaGFwdGVyIiwiYm9va0lkIiwidmVyc2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3NjcmlwdHVyZUFsaWdubWVudEVkIiwiYWN0aW9ucyIsImNsZWFyQ2hhbmdlcyIsImhhbmRsZUFsaWdubWVudENsaWNrIiwic2V0RWRpdGluZyIsInNldFZlcnNlQ2hhbmdlZCIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZDIiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwiZWRpdGluZyIsImVuYWJsZUVkaXQiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwibmV3VmVyc2VUZXh0IiwidXNlRWZmZWN0IiwiY29uc29sZSIsImxvZyIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvbkJsdXIiLCJldmVudCIsIl9ldmVudCR0YXJnZXQiLCJ0YXJnZXQiLCJ2YWx1ZSIsInRoZW4iLCJfZWRpdGluZyIsInZlcnNlUmVmIiwiY29uY2F0Iiwibm9Xb3JkcyIsInVwZGF0ZSIsImxlbmd0aCIsIl9jdXJyZW50VmVyc2VPYmplY3RzIiwiX3NlbGVjdGlvbnNDb250ZXh0JGFjIiwiX3NlbGVjdGlvbnNDb250ZXh0JGFjMiIsImhhbmRsZUNoYW5nZWRWZXJzZSIsImNhbGwiLCJ2ZXJzZUNvbnRlbnQiLCJjcmVhdGVFbGVtZW50Iiwic2l6ZSIsImRlZmF1bHRWYWx1ZSIsInN0eWxlIiwiYXV0b0ZvY3VzIiwibm9WZXJzZUNvbnRlbnQiLCJ2ZXJzZUtleSIsInBhZGRpbmdCb3R0b20iLCJvbkNsaWNrIiwiZGVmYXVsdFByb3BzIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU2NyaXB0dXJlUGFuZS9TY3JpcHR1cmVQYW5lLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cywgU2VsZWN0aW9uc0NvbnRleHQgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB7IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0IHsgQ2lyY3VsYXJQcm9ncmVzcyB9IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IEJvb2tPYmplY3RzVHlwZSwgU2NyaXB0dXJlUmVmZXJlbmNlVHlwZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHtcbiAgZGVsYXksXG4gIGVtcHR5Q29udGVudCxcbiAgZ2V0UmVzb3VyY2VNZXNzYWdlLFxuICBMT0FESU5HX1JFU09VUkNFLFxuICB2ZXJzZU9iamVjdHNIYXZlV29yZHMsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCdcbmltcG9ydCB7XG4gIENvbnRhaW5lcixcbiAgQ29udGVudCxcbiAgRW1wdHlDb250ZW50LFxufSBmcm9tICcuL3N0eWxlZCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tIFwiQHJlYWN0LWhvb2t6L2RlZXAtZXF1YWxcIjtcbmltcG9ydCBjbG9uZURlZXAgZnJvbSAnbG9kYXNoL2Nsb25lRGVlcCc7XG5pbXBvcnQgeyB1c2VDb250ZXh0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciBjb250ZW50ICoqL1xuICBjb250ZW50U3R5bGU6IGFueTtcbiAgLy8gaW5kZXggbnVtYmVyIGZvciB0aGlzIHNjcmlwdHVyZSBwYW5lXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAvLyB3YWl0aW5nIHRvIGRldGVybWluZSBicmFuY2hcbiAgZGV0ZXJtaW5pbmdCcmFuY2g6IGJvb2xlYW4sXG4gIC8qKiBsYW5ndWFnZSBkaXJlY3Rpb24gdG8gdXNlICoqL1xuICBkaXJlY3Rpb246IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBpZiB0cnVlIHRoZW4gZG8gbm90IGRpc3BsYXkgbGV4aWNvbiBwb3BvdmVyIG9uIGhvdmVyICoqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IGJvb2xlYW58dW5kZWZpbmVkO1xuICAvKiogZm9udCBzaXplIGZvciBtZXNzYWdlcyAqL1xuICBmb250U2l6ZTogbnVtYmVyO1xuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IEZ1bmN0aW9uO1xuICAvKiogdHJ1ZSBpZiBicm93c2luZyBOVCAqL1xuICBpc05UOiBib29sZWFuO1xuICAvKiogd2hldGhlciBvciBub3QgdGhpcyBjdXJyZW50IHZlcnNlIGhhcyBiZWVuIHNlbGVjdGVkIGZvciBhbGlnbm1lbnQgKi9cbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50OiBib29sZWFuO1xuICAvKiogZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHdoZW4gdmVyc2UgYWxpZ25tZW50IGhhcyBmaW5pc2hlZCAqL1xuICBvbkFsaWdubWVudEZpbmlzaDogRnVuY3Rpb247XG4gIC8vIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZVR5cGU7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHRoYXQgd2UgYXJlIGVkaXRpbmcgKi9cbiAgc2V0RWRpdFZlcnNlOiBGdW5jdGlvbjtcbiAgLyoqIGNhbGxiYWNrIHRvIGZsYWcgdW5zYXZlZCBzdGF0dXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBGdW5jdGlvbjtcbiAgLy8gY2FsbGJhY2sgZm9yIGNoYW5nZSBpbiB3b3JkIGFsaWdubWVudCBzdGF0dXNcbiAgc2V0V29yZEFsaWduZXJTdGF0dXM6IEZ1bmN0aW9uO1xuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IEZ1bmN0aW9uO1xuICAvKiogZnVuY3Rpb24gdG8gYmUgY2FsbGVkIHRvIHVwZGF0ZSB2ZXJzZSBhbGlnbm1lbnQgc3RhdHVzICovXG4gIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1czogRnVuY3Rpb247XG59XG5cbmNvbnN0IE1lc3NhZ2VTdHlsZSA9IHtcbiAgZGlyZWN0aW9uOiAnbHRyJyxcbiAgd2hpdGVTcGFjZTogJ3ByZS13cmFwJyxcbiAgbGluZUhlaWdodDogJ25vcm1hbCcsXG4gIGRpc3BsYXk6ICdmbGV4JyxcbiAganVzdGlmeUNvbnRlbnQ6ICdjZW50ZXInLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgaGVpZ2h0OiAnMTAwJScsXG4gIHdpZHRoOiAnMTAwJScsXG4gIGZvbnRTaXplOiAnMTZweCcsXG4gIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICBmb250V2VpZ2h0OiAnYm9sZCcsXG59XG5cbmNvbnN0IFRleHRBcmVhU3R5bGUgPSB7XG4gIGhlaWdodDogJzYwJScsXG4gIHdpZHRoOiAnMTAwJScsXG4gIG1pbldpZHRoOiAnMjIwcHgnLFxuICBtaW5IZWlnaHQ6ICcxMDBweCcsXG4gIGZvbnRTaXplOiAnMTZweCcsXG59XG5cbmZ1bmN0aW9uIFNjcmlwdHVyZVBhbmUoe1xuICBjdXJyZW50SW5kZXgsXG4gIGNvbnRlbnRTdHlsZSxcbiAgZGV0ZXJtaW5pbmdCcmFuY2gsXG4gIGRpcmVjdGlvbixcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBmb250U2l6ZSxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGlzTlQsXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCxcbiAgb25BbGlnbm1lbnRGaW5pc2gsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIHJlZmVyZW5jZSxcbiAgcmVmU3R5bGUsXG4gIHJlc291cmNlU3RhdHVzLFxuICByZXNvdXJjZUxpbmssXG4gIHNhdmluZyxcbiAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgc2V0RWRpdFZlcnNlLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICBzZXJ2ZXIsXG4gIHRyYW5zbGF0ZSxcbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBkb2luZ0FsaWdubWVudDogZmFsc2UsXG4gICAgbGFzdFZlcnNlT2JqZWN0OiBudWxsLFxuICAgIG5ld1RleHQ6IG51bGwsXG4gICAgcHJvY2Vzc2luZ0VkaXQ6IGZhbHNlLFxuICB9KVxuICBjb25zdCB7XG4gICAgZG9pbmdBbGlnbm1lbnQsXG4gICAgbGFzdFZlcnNlT2JqZWN0LFxuICAgIG5ld1RleHQsXG4gICAgcHJvY2Vzc2luZ0VkaXQsIC8vIHRydWUgd2hlbiB3ZSBhcmUgcHJvY2Vzc2luZyBlZGl0IHRleHQgYWZ0ZXIgb25CbHVyXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcblxuICBsZXQgcmVzb3VyY2VNZXNzYWdlID0gJydcbiAgY29uc3QgX3NlbGVjdGlvbnNDb250ZXh0ID0gdXNlQ29udGV4dChTZWxlY3Rpb25zQ29udGV4dCk7XG5cbiAgaWYgKHNhdmluZykge1xuICAgIHJlc291cmNlTWVzc2FnZSA9ICdTYXZpbmcgQ2hhbmdlcy4uLidcbiAgfSBlbHNlIGlmIChkZXRlcm1pbmluZ0JyYW5jaCkge1xuICAgIHJlc291cmNlTWVzc2FnZSA9ICdQcmUtJyArIExPQURJTkdfUkVTT1VSQ0VcbiAgfSBlbHNlIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UKVxuICB9XG5cbiAgY29uc3Qge1xuICAgIGNoYXB0ZXIsXG4gICAgYm9va0lkLFxuICAgIHZlcnNlLFxuICB9ID0gcmVmZXJlbmNlIHx8IHt9XG4gIGRpcmVjdGlvbiA9IGRpcmVjdGlvbiB8fCAnbHRyJ1xuXG4gIHJlZlN0eWxlID0gcmVmU3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnOTAlJyxcbiAgfVxuXG4gIGNvbnRlbnRTdHlsZSA9IGNvbnRlbnRTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICcxMDAlJyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIC4uLnNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICB9XG5cbiAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXQgPSB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0KF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnKVxuICBjb25zdCB7XG4gICAgYWN0aW9uczoge1xuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2ssXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gbW9uaXRvciBpZiB3ZSBuZWVkIHRvIHN0YXJ0IGFsaWdubWVudFxuICAgIGlmIChpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgJiYgIWFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkgeyAvLyBjaGVjayBpZiBlZGl0IGZvciB0aGlzIHZlcnNlIGlzIHNlbGVjdGVkIGFuZCBub3QgYWxyZWFkeSBkb2luZyBhbGlnbm1lbnRcbiAgICAgIGlmICghZWRpdGluZyAmJiAhcHJvY2Vzc2luZ0VkaXQpIHsgLy8gbWFrZSBzdXJlIG5vdCBzdGlsbCBlZGl0aW5nIG9yIHByb2Nlc3NpbmcgZWRpdFxuICAgICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRgLCByZWZlcmVuY2UpXG4gICAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gc3RpbGwgZWRpdGluZyB2ZXJzZSwgbm90IHJlYWR5IGZvciBhbGlnbm1lbnRgLCB7ZWRpdGluZywgcHJvY2Vzc2luZ0VkaXR9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2lzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCwgYWxpZ25lckRhdGEsIGRvaW5nQWxpZ25tZW50LCBlZGl0aW5nLCBwcm9jZXNzaW5nRWRpdF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgJiYgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzKHJlZmVyZW5jZSwgYWxpZ25lZClcbiAgfSwgW2FsaWduZWQsIGNoYXB0ZXIsIHZlcnNlLCBib29rSWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkge1xuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiB0cnVlIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBhbGlnbmVyRGF0YSB3ZW50IGZhbHNlIHVuZXhwZWN0ZWRgLCB7IHJlZmVyZW5jZSwgYWxpZ25lckRhdGEsIGRvaW5nQWxpZ25tZW50IH0pXG4gICAgICB9XG5cbiAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzICYmIHNldFdvcmRBbGlnbmVyU3RhdHVzKF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0KVxuICAgICAgc2V0U3RhdGUoeyBkb2luZ0FsaWdubWVudDogZmFsc2UgfSlcbiAgICAgIG9uQWxpZ25tZW50RmluaXNoICYmIG9uQWxpZ25tZW50RmluaXNoKClcbiAgICB9XG4gIH0sIFtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdD8uc3RhdGU/LmFsaWduZXJEYXRhXSlcblxuICAvLyBkeW5hbWljYWxseSBhZGp1c3QgZm9udCBzaXplXG4gIGNvbnN0IGNhbGN1bGF0ZWRGb250U2l6ZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKFxuICAgIHBhcnNlRmxvYXQoVGV4dEFyZWFTdHlsZS5mb250U2l6ZSkgKiBmb250U2l6ZSAvIDEwMCArICdweCdcbiAgKSwgW2ZvbnRTaXplXSlcblxuICBjb25zdCB0ZXh0QXJlYVN0eWxlID0ge1xuICAgIC4uLmNvbnRlbnRTdHlsZSxcbiAgICAuLi5UZXh0QXJlYVN0eWxlLFxuICAgIGZvbnRTaXplOiBjYWxjdWxhdGVkRm9udFNpemUsXG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBpbml0aWFsVmVyc2VPYmplY3RzIH0pXG4gICAgY2xlYXJDaGFuZ2VzKClcbiAgICBzZXRJbml0aWFsVmVyc2VUZXh0KHZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG51bGwgfSlcbiAgfSwgW3sgcmVmZXJlbmNlLCBpbml0aWFsVmVyc2VPYmplY3RzIH1dKVxuXG4gIC8qKlxuICAgKiB3aGVuIGZvY3VzIGlzIGNoYW5nZWQgZnJvbSB0ZXh0IGVkaXRpbmcsIGdldCBmaW5hbCB0ZXh0IGFuZCBkbyBwcm9jZXNzaW5nIG9mIGZpbmFsIHRleHRcbiAgICogQHBhcmFtIHtSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pn0gZXZlbnQgLSBET00gZXZlbnQgaW5mb1xuICAgKi9cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIGNvbnN0IG5ld1ZlcnNlVGV4dCA9IGV2ZW50Py50YXJnZXQ/LnZhbHVlIC8vIGdldCBuZXcgdGV4dFxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBwcm9jZXNzaW5nRWRpdDogdHJ1ZSB9KSAvLyBzaG93IHNwaW5uZXIgd2hpbGUgcHJvY2Vzc2luZyBlZGl0IHRleHRcbiAgICBkZWxheSg1MDApLnRoZW4oKCkgPT4geyAvLyBhbGxvdyBzdGF0ZSB0byB1cGRhdGUgYmVmb3JlIHByb2Nlc3NpbmcgbmV3IHRleHRcbiAgICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1ZlcnNlVGV4dCkudGhlbigoKSA9PiB7IC8vIHByb2Nlc3MgdGhlIGxhdGVzdCBlZGl0IHRleHRcbiAgICAgICAgc2V0U3RhdGUoe3Byb2Nlc3NpbmdFZGl0OiBmYWxzZX0pIC8vIG5vdyBkb25lLCByZW1vdmUgc3Bpbm5lclxuICAgICAgfSlcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gbW9uaXRvciBmb3IgZWRpdCBzdGF0ZSBjaGFuZ2VzIGFuZCBjYWxsIGJhY2sgdG8gc2NyaXB0dXJlIGNhcmQgd2l0aCBlZGl0IHN0YXR1c1xuICAgIGNvbnN0IF9lZGl0aW5nID0gZWRpdGluZyB8fCBwcm9jZXNzaW5nRWRpdFxuICAgIGNvbnN0IHZlcnNlUmVmID0gYCR7cmVmZXJlbmNlPy5jaGFwdGVyfToke3JlZmVyZW5jZT8udmVyc2V9YFxuICAgIHNldEVkaXRWZXJzZSAmJiBzZXRFZGl0VmVyc2UodmVyc2VSZWYsIF9lZGl0aW5nKVxuICB9LCBbZWRpdGluZywgcHJvY2Vzc2luZ0VkaXRdKVxuXG4gIGNvbnN0IHZlcnNlT2JqZWN0cyA9IGN1cnJlbnRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0cyB8fCBbXVxuICBjb25zdCBub1dvcmRzID0gUmVhY3QudXNlTWVtbygoKSA9PiAhdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZlcnNlT2JqZWN0cyksIFtjdXJyZW50VmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBtb25pdG9yIGZvciB2ZXJzZSBvYmplY3QgY2hhbmdlcyBhbmQgY2FsbCBiYWNrIHRvIHNjcmlwdHVyZSBjYXJkXG4gICAgbGV0IHVwZGF0ZSA9IGZhbHNlO1xuICAgIGlmKGN1cnJlbnRWZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgICAgY29uc3QgX2N1cnJlbnRWZXJzZU9iamVjdHMgPSBjbG9uZURlZXAoY3VycmVudFZlcnNlT2JqZWN0cylcbiAgICAgIGlmIChsYXN0VmVyc2VPYmplY3Q/Lmxlbmd0aCkge1xuICAgICAgICBpZiAoIWlzRXF1YWwoX2N1cnJlbnRWZXJzZU9iamVjdHMsIGxhc3RWZXJzZU9iamVjdCkpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgX3NlbGVjdGlvbnNDb250ZXh0Py5hY3Rpb25zPy5oYW5kbGVDaGFuZ2VkVmVyc2U/LihyZWZlcmVuY2UsIF9jdXJyZW50VmVyc2VPYmplY3RzKTtcbiAgICAgICAgICB1cGRhdGUgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB1cGRhdGUgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodXBkYXRlKSB7XG4gICAgICAgIHNldFN0YXRlKHtsYXN0VmVyc2VPYmplY3Q6IF9jdXJyZW50VmVyc2VPYmplY3RzfSk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbY3VycmVudFZlcnNlT2JqZWN0c10pXG5cbiAgLyoqXG4gICAqIGRldGVybWluZSB3aGF0IFVJIHRvIHNob3cgYmFzZWQgb24gc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gaWYgdHJ1ZSBzaG93IGVkaXQgbW9kZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZUVkaXQgLSBpZiB0cnVlIHRoZW4gZWRpdCBpcyBlbmFibGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Xb3JkcyAtIGlmIHRydWUgdGhlbiB0aGVyZSBhcmUgbm8gZGlzcGxheWFibGUgd29yZHNcbiAgICogQHBhcmFtIHtib29sZWFufSBwcm9jZXNzaW5nRWRpdCAtIGlmIHRydWUgdGhlbiBlZGl0IGlzIGJlaW5nIHByb2Nlc3NlZFxuICAgKi9cbiAgZnVuY3Rpb24gdmVyc2VDb250ZW50KGVkaXRpbmcsIGVuYWJsZUVkaXQsIG5vV29yZHMsIHByb2Nlc3NpbmdFZGl0KSB7XG4gICAgaWYgKHByb2Nlc3NpbmdFZGl0KSB7IC8vIHB1dCB1cCBzcGlubmVyIHdoaWxlIHByb2Nlc3NpbmcgdGhlIGVkaXRcbiAgICAgIHJldHVybiA8Q2lyY3VsYXJQcm9ncmVzcyBzaXplPXs0MH0vPlxuICAgIH1cblxuICAgIGlmIChlZGl0aW5nKSB7XG4gICAgICByZXR1cm4gPHRleHRhcmVhXG4gICAgICAgIGRlZmF1bHRWYWx1ZT17bmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHR9XG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAvPlxuICAgIH1cblxuICAgIGNvbnN0IG5vVmVyc2VDb250ZW50ID0gbm9Xb3JkcyAmJiBlbXB0eUNvbnRlbnQodmVyc2VPYmplY3RzKTsgLy9UUklDS1kgLSBqdXN0IGJlY2F1c2UgdGhlcmUgYXJlIG5vIHdvcmRzIGRvZXNuJ3QgbWVhbiB0aGVyZSBpcyBub3QgdmlzaWJsZSBjb250ZW50LCBzbyBhbHNvIGNoZWNrIGZvciB0aGF0XG4gICAgaWYgKG5vVmVyc2VDb250ZW50ICYmIGVuYWJsZUVkaXQpIHsgLy8gc2hvdyBhIGNsaWNrYWJsZSBtZXNzYWdlIGluIHRoZSBjYXNlIHRoYXQgdGhlcmUgaXMgbm8gdGV4dCB0byBjbGljayBvblxuICAgICAgcmV0dXJuIDxFbXB0eUNvbnRlbnQ+XG4gICAgICAgIENsaWNrIHRvIEVkaXRcbiAgICAgIDwvRW1wdHlDb250ZW50PlxuICAgIH1cblxuICAgIHJldHVybiA8VmVyc2VPYmplY3RzXG4gICAgICB2ZXJzZUtleT17YCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWB9XG4gICAgICB2ZXJzZU9iamVjdHM9e3ZlcnNlT2JqZWN0c31cbiAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNZXNzYWdlID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNZXNzYWdlfSA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3JlZlN0eWxlfT4ge2NoYXB0ZXJ9Ont2ZXJzZX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e2NvbnRlbnRTdHlsZX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RWRpdGluZyAmJiBzZXRFZGl0aW5nKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dmVyc2VDb250ZW50KGVkaXRpbmcsIGVuYWJsZUVkaXQsIG5vV29yZHMsIHByb2Nlc3NpbmdFZGl0KX1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBTyxLQUFLQSxLQUFLLE1BQU0sT0FBTztBQUM5QixPQUFP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
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "single-scripture-rcl",
|
|
3
3
|
"description": "A React Component Library for Rendering a Single Scripture Resource.",
|
|
4
|
-
"version": "3.
|
|
4
|
+
"version": "3.5.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"react": "^17.x",
|
|
29
29
|
"react-dom": "^17.x",
|
|
30
30
|
"react-icons": "^4.8.0",
|
|
31
|
-
"scripture-resources-rcl": "^
|
|
31
|
+
"scripture-resources-rcl": "^6.6.0",
|
|
32
32
|
"tc-ui-toolkit": "^5.3.3",
|
|
33
33
|
"translation-helps-rcl": "^3.4.2",
|
|
34
34
|
"word-aligner": "^1.0.0",
|
|
@@ -82,13 +82,14 @@
|
|
|
82
82
|
"react-dom": "^17.0.1",
|
|
83
83
|
"react-icons": "^4.8.0",
|
|
84
84
|
"react-styleguidist": "11.2.0",
|
|
85
|
-
"scripture-resources-rcl": "
|
|
85
|
+
"scripture-resources-rcl": "6.6.0",
|
|
86
86
|
"style-loader": "^2.0.0",
|
|
87
87
|
"tc-ui-toolkit": "^5.3.3",
|
|
88
88
|
"translation-helps-rcl": "^3.4.2",
|
|
89
89
|
"ts-jest": "^29.1.1",
|
|
90
90
|
"use-deep-compare-effect": "1.8.1",
|
|
91
91
|
"usfm-js": "3.4.2",
|
|
92
|
+
"uw-quote-helpers": "^1.1.7",
|
|
92
93
|
"webpack": "^4.44.2",
|
|
93
94
|
"word-aligner": "^1.0.0",
|
|
94
95
|
"word-aligner-rcl": "0.9.2"
|