single-scripture-rcl 3.3.3 → 3.3.5-beta
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.
|
@@ -11,6 +11,14 @@ import "core-js/modules/es.string.includes.js";
|
|
|
11
11
|
import "core-js/modules/es.string.split.js";
|
|
12
12
|
import "regenerator-runtime/runtime.js";
|
|
13
13
|
|
|
14
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
|
|
15
|
+
|
|
16
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
17
|
+
|
|
18
|
+
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); }
|
|
19
|
+
|
|
20
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
21
|
+
|
|
14
22
|
function _createForOfIteratorHelper(o, allowArrayLike) { var it; if (typeof Symbol === "undefined" || o[Symbol.iterator] == null) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e2) { throw _e2; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = o[Symbol.iterator](); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e3) { didErr = true; err = _e3; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
15
23
|
|
|
16
24
|
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
|
@@ -42,6 +50,9 @@ import * as PropTypes from 'prop-types';
|
|
|
42
50
|
import { core } from 'scripture-resources-rcl';
|
|
43
51
|
import usfmjs from 'usfm-js';
|
|
44
52
|
import { useEdit } from 'gitea-react-toolkit';
|
|
53
|
+
import { MdUpdate, MdUpdateDisabled } from 'react-icons/md';
|
|
54
|
+
import { FiShare } from 'react-icons/fi';
|
|
55
|
+
import { IconButton } from '@mui/material';
|
|
45
56
|
import { Card, useCardState, useUserBranch, ERROR_STATE, MANIFEST_NOT_LOADED_ERROR } from 'translation-helps-rcl';
|
|
46
57
|
import { AlignmentHelpers, UsfmFileConversionHelpers } from 'word-aligner-rcl';
|
|
47
58
|
import * as isEqual from 'deep-equal';
|
|
@@ -213,7 +224,12 @@ export default function ScriptureCard(_ref) {
|
|
|
213
224
|
_useUserBranch$state = _useUserBranch.state,
|
|
214
225
|
workingResourceBranch = _useUserBranch$state.workingResourceBranch,
|
|
215
226
|
usingUserBranch_ = _useUserBranch$state.usingUserBranch,
|
|
216
|
-
|
|
227
|
+
mergeFromMaster = _useUserBranch$state.mergeFromMaster,
|
|
228
|
+
mergeToMaster = _useUserBranch$state.mergeToMaster,
|
|
229
|
+
_useUserBranch$action = _useUserBranch.actions,
|
|
230
|
+
startEditBranch = _useUserBranch$action.startEdit,
|
|
231
|
+
mergeFromMasterIntoUserBranch = _useUserBranch$action.mergeFromMasterIntoUserBranch,
|
|
232
|
+
mergeToMasterFromUserBranch = _useUserBranch$action.mergeToMasterFromUserBranch;
|
|
217
233
|
|
|
218
234
|
var workingRef = canUseEditBranch ? workingResourceBranch : appRef;
|
|
219
235
|
var scriptureTitle;
|
|
@@ -770,6 +786,15 @@ export default function ScriptureCard(_ref) {
|
|
|
770
786
|
}
|
|
771
787
|
}
|
|
772
788
|
}, [scriptureConfig === null || scriptureConfig === void 0 ? void 0 : scriptureConfig.versesForRef]);
|
|
789
|
+
var needToMergeFromMaster = mergeFromMaster === null || mergeFromMaster === void 0 ? void 0 : mergeFromMaster.mergeNeeded;
|
|
790
|
+
var mergeFromMasterHasConflicts = mergeFromMaster === null || mergeFromMaster === void 0 ? void 0 : mergeFromMaster.conflict;
|
|
791
|
+
var mergeToMasterHasConflicts = mergeToMaster === null || mergeToMaster === void 0 ? void 0 : mergeToMaster.conflict; // eslint-disable-next-line no-nested-ternary
|
|
792
|
+
|
|
793
|
+
var mergeFromMasterTitle = mergeFromMasterHasConflicts ? 'Merge Conflicts for update from master' : needToMergeFromMaster ? 'Update from master' : 'No merge conflicts for update with master'; // eslint-disable-next-line no-nested-ternary
|
|
794
|
+
|
|
795
|
+
var mergeFromMasterColor = mergeFromMasterHasConflicts ? 'black' : needToMergeFromMaster ? 'black' : 'lightgray';
|
|
796
|
+
var mergeToMasterTitle = mergeToMasterHasConflicts ? 'Merge Conflicts for share with master' : 'No merge conflicts for share with master';
|
|
797
|
+
var mergeToMasterColor = mergeToMasterHasConflicts ? 'black' : 'black';
|
|
773
798
|
var renderedScripturePanes = versesForRef === null || versesForRef === void 0 ? void 0 : versesForRef.map(function (_currentVerseData, index) {
|
|
774
799
|
var _currentVerseData$ver;
|
|
775
800
|
|
|
@@ -809,6 +834,53 @@ export default function ScriptureCard(_ref) {
|
|
|
809
834
|
translate: translate
|
|
810
835
|
}));
|
|
811
836
|
});
|
|
837
|
+
|
|
838
|
+
var onRenderToolbar = function onRenderToolbar(_ref8) {
|
|
839
|
+
var items = _ref8.items;
|
|
840
|
+
|
|
841
|
+
var newItems = _toConsumableArray(items);
|
|
842
|
+
|
|
843
|
+
if (mergeFromMaster) {
|
|
844
|
+
newItems.push( /*#__PURE__*/React.createElement(IconButton, {
|
|
845
|
+
className: classes.margin,
|
|
846
|
+
key: "update-from-master",
|
|
847
|
+
onClick: mergeFromMasterIntoUserBranch,
|
|
848
|
+
title: mergeFromMasterTitle,
|
|
849
|
+
"aria-label": mergeFromMasterTitle,
|
|
850
|
+
style: {
|
|
851
|
+
cursor: 'pointer'
|
|
852
|
+
}
|
|
853
|
+
}, mergeFromMasterHasConflicts ? /*#__PURE__*/React.createElement(MdUpdateDisabled, {
|
|
854
|
+
id: "update-from-master-icon",
|
|
855
|
+
color: mergeFromMasterColor
|
|
856
|
+
}) : /*#__PURE__*/React.createElement(MdUpdate, {
|
|
857
|
+
id: "update-from-master-icon",
|
|
858
|
+
color: mergeFromMasterColor
|
|
859
|
+
})));
|
|
860
|
+
}
|
|
861
|
+
|
|
862
|
+
if (mergeToMaster) {
|
|
863
|
+
newItems.push( /*#__PURE__*/React.createElement(IconButton, {
|
|
864
|
+
className: classes.margin,
|
|
865
|
+
key: "share-to-master",
|
|
866
|
+
onClick: mergeToMasterFromUserBranch,
|
|
867
|
+
title: mergeToMasterTitle,
|
|
868
|
+
"aria-label": mergeToMasterTitle,
|
|
869
|
+
style: {
|
|
870
|
+
cursor: 'pointer'
|
|
871
|
+
}
|
|
872
|
+
}, mergeToMasterHasConflicts ? /*#__PURE__*/React.createElement(MdUpdateDisabled, {
|
|
873
|
+
id: "share-to-master-icon",
|
|
874
|
+
color: mergeToMasterColor
|
|
875
|
+
}) : /*#__PURE__*/React.createElement(FiShare, {
|
|
876
|
+
id: "share-to-master-icon",
|
|
877
|
+
color: mergeToMasterColor
|
|
878
|
+
})));
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
return newItems;
|
|
882
|
+
};
|
|
883
|
+
|
|
812
884
|
return /*#__PURE__*/React.createElement(Card, {
|
|
813
885
|
id: "scripture_card_".concat(cardNum),
|
|
814
886
|
title: scriptureLabel,
|
|
@@ -836,7 +908,8 @@ export default function ScriptureCard(_ref) {
|
|
|
836
908
|
return setState({
|
|
837
909
|
saveClicked: true
|
|
838
910
|
});
|
|
839
|
-
}
|
|
911
|
+
},
|
|
912
|
+
onRenderToolbar: onRenderToolbar
|
|
840
913
|
}, /*#__PURE__*/React.createElement("div", {
|
|
841
914
|
id: "scripture-pane-list"
|
|
842
915
|
}, renderedScripturePanes));
|
|
@@ -945,4 +1018,4 @@ ScriptureCard.propTypes = {
|
|
|
945
1018
|
/** callback to update word aligner state */
|
|
946
1019
|
setWordAlignerStatus: PropTypes.func
|
|
947
1020
|
};
|
|
948
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwidXNmbWpzIiwidXNlRWRpdCIsIkNhcmQiLCJ1c2VDYXJkU3RhdGUiLCJ1c2VVc2VyQnJhbmNoIiwiRVJST1JfU1RBVEUiLCJNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SIiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlUGFuZSIsIlNjcmlwdHVyZVNlbGVjdG9yIiwidXNlU2NyaXB0dXJlU2V0dGluZ3MiLCJnZXRSZXNvdXJjZUxpbmsiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3MiLCJpc09yaWdpbmFsQmlibGUiLCJUaXRsZSIsIk5UX09SSUdfTEFORyIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIktFWV9GT05UX1NJWkVfQkFTRSIsImxhYmVsIiwic3R5bGUiLCJtYXJnaW5Ub3AiLCJ3aWR0aCIsIlNjcmlwdHVyZUNhcmQiLCJpZCIsImlzTlQiLCJ0aXRsZSIsInNlcnZlciIsImFwcFJlZiIsImNhcmROdW0iLCJjbGFzc2VzIiwicmVzb3VyY2UiLCJvd25lciIsImxhbmd1YWdlSWQiLCJyZXNvdXJjZUlkIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0TGFuZ3VhZ2UiLCJyZWZlcmVuY2UiLCJ2ZXJzZSIsImNoYXB0ZXIiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJyZXNvdXJjZUxpbmsiLCJ1c2VVc2VyTG9jYWxTdG9yYWdlIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib25SZXNvdXJjZUVycm9yIiwiaHR0cENvbmZpZyIsImdyZWVrUmVwb1VybCIsImhlYnJld1JlcG9VcmwiLCJnZXRMZXhpY29uRGF0YSIsImZldGNoR2xvc3Nlc0ZvclZlcnNlIiwidHJhbnNsYXRlIiwib25NaW5pbWl6ZSIsImxvZ2dlZEluVXNlciIsImF1dGhlbnRpY2F0aW9uIiwic2V0U2F2ZWRDaGFuZ2VzIiwiYm9va0luZGV4IiwiYWRkVmVyc2VSYW5nZSIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwidXNlU3RhdGUiLCJoYXZlVW5zYXZlZENoYW5nZXMiLCJyZWYiLCJzYXZlQ2xpY2tlZCIsInNhdmVDb250ZW50Iiwic2hhIiwic3RhcnRTYXZlIiwidXJsRXJyb3IiLCJ1c2luZ1VzZXJCcmFuY2giLCJ1bnNhdmVkQ2hhbmdlc0xpc3QiLCJ2ZXJzZXNGb3JSZWYiLCJzdGF0ZSIsInNldFN0YXRlXyIsImZvbnRTaXplIiwic2V0Rm9udFNpemUiLCJpc05UXyIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjYWNoZSIsIm1heEFnZSIsInNldFVybEVycm9yIiwiZXJyb3IiLCJ3aG9sZUJvb2siLCJpc05ld1Rlc3RhbWVudCIsInNjcmlwdHVyZUNvbmZpZyIsInNldFNjcmlwdHVyZSIsInNjcmlwdHVyZVNldHRpbmdzIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJmZXRjaFJlc3BfIiwiZmV0Y2hSZXNwb25zZSIsInJlcG8iLCJyZWZlcmVuY2VfIiwidXNlRWZmZWN0IiwiX3NoYSIsImRhdGEiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNhcmRSZXNvdXJjZUlkIiwicmVmXyIsImNhblVzZUVkaXRCcmFuY2giLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJjYXJkSWQiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2luZ1VzZXJCcmFuY2hfIiwic3RhcnRFZGl0QnJhbmNoIiwiYWN0aW9ucyIsInN0YXJ0RWRpdCIsIndvcmtpbmdSZWYiLCJzY3JpcHR1cmVUaXRsZSIsIndvcmtpbmdSZWZfIiwicmVzb3VyY2VTdGF0dXMiLCJtZXNzYWdlIiwiaXNBY2Nlc3NFcnJvciIsInZlcnNpb24iLCJ1cGRhdGVUaXRsZSIsImdldFNjcmlwdHVyZVNlbGVjdG9yIiwic2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnIiwib25NZW51Q2xvc2UiLCJsYW5ndWFnZUlkXyIsImxhbmd1YWdlIiwiZGlyZWN0aW9uIiwiaXNIZWJyZXciLCJmb250RmFjdG9yIiwic2NhbGVkRm9udFNpemUiLCJpdGVtcyIsImhlYWRlcnMiLCJmaWx0ZXJzIiwiaXRlbUluZGV4IiwibWFya2Rvd25WaWV3Iiwic2V0RmlsdGVycyIsInNldEl0ZW1JbmRleCIsInNldE1hcmtkb3duVmlldyIsInJlZlN0eWxlIiwidXNlTWVtbyIsImZvbnRGYW1pbHkiLCJNYXRoIiwicm91bmQiLCJjb250ZW50U3R5bGUiLCJzY3JpcHR1cmVMYWJlbCIsImRpc2FibGVXb3JkUG9wb3Zlcl8iLCJ1c2luZ09yaWdpbmFsQmlibGUiLCJ1bmRlZmluZWQiLCJmZXRjaEdsb3NzRGF0YUZvclZlcnNlIiwidmVyc2VPYmplY3RzIiwidmVyc2VSZWYiLCJfdmVyc2VPYmplY3RzIiwidmVyc2VEYXRhIiwiY29uY2F0IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsIm9yaWdpbmFsUmVwb1VybCIsInNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJjdXJyZW50VmVyc2VSZWYiLCJfc2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJ0YXJnZXRMYW5ndWFnZSIsImN1cnJlbnRJbmRleCIsInNhdmVkIiwiZ2V0Q2hhbmdlcyIsImNsZWFyQ2hhbmdlcyIsIl91bnNhdmVkQ2hhbmdlc0xpc3QiLCJoYXNPd25Qcm9wZXJ0eSIsIl9oYXZlVW5zYXZlZENoYW5nZXMiLCJPYmplY3QiLCJrZXlzIiwiZmluZFJlZkluQXJyYXkiLCJmaW5kSXRlbSIsImNodW5rcyIsInJlZkxlbiIsImluZGV4IiwiZmluZEluZGV4IiwiY2h1bmsiLCJpZHgiLCJuZXh0Q2hhciIsImdldEJvb2tOYW1lIiwiYm9va0NhcHMiLCJ0b1VwcGVyQ2FzZSIsImZpbGVwYXRoIiwiY29udGVudCIsImNvbmZpZyIsInRva2VuIiwidGltZW91dCIsInNlcnZlclRpbWVPdXQiLCJhdXRob3IiLCJicmFuY2giLCJvblNhdmVFZGl0IiwiX3NhdmVFZGl0IiwidGhlbiIsInN1Y2Nlc3MiLCJ1bnNhdmVkQ2FyZEluZGljZXMiLCJjYXJkSW5kZXgiLCJpbmZvIiwicmVsb2FkUmVzb3VyY2UiLCJtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0iLCJiaWJsZVVzZm0iLCJ1cGRhdGVkVmVyc2VPYmplY3RzIiwibmV3VXNmbSIsImNoYXB0ZXJDaHVua3MiLCJzcGxpdCIsImNoYXB0ZXJJbmRleCIsImN1cnJlbnRDaGFwdGVyIiwidmVyc2VDaHVua3MiLCJ2ZXJzZUluZGV4IiwibmV3VmVyc2VVc2ZtIiwiY29udmVydFZlcnNlRGF0YVRvVVNGTSIsIm9sZFZlcnNlIiwidmVyc2VOdW1MZW4iLCJuZXdDaGFwdGVyIiwiam9pbiIsImdldFJlc3BvbnNlRGF0YSIsIm1lcmdlRmFpbCIsInBhcnNlSW50IiwibmV3Qm9va0pzb24iLCJuZXdWZXJzZVRleHQiLCJ0YXJnZXRWZXJzZU9iamVjdHNfIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJ1cGRhdGVWZXJzZSIsInRvVVNGTSIsImZvcmNlZE5ld0xpbmVzIiwiX3ZlcnNlIiwiaW5jbHVkZXMiLCJyZW5kZXJlZFNjcmlwdHVyZVBhbmVzIiwibWFwIiwiX2N1cnJlbnRWZXJzZURhdGEiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiX3JlZmVyZW5jZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwicHJvcFR5cGVzIiwic3RyaW5nIiwiZnVuYyIsImlzUmVxdWlyZWQiLCJudW1iZXIiLCJzaGFwZSIsIm9uZU9mVHlwZSIsImJvb2wiLCJvYmplY3QiLCJhbnkiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBWixNQUF1QixPQUF2QjtBQUNBLE9BQU8sS0FB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LEVBQUVyRCxTQUFTLENBQUM2TyxNQXBERDs7QUFxRHhCO0FBQ0F2TCxFQUFBQSxjQUFjLEVBQUV0RCxTQUFTLENBQUM4TyxJQXRERjs7QUF1RHhCO0FBQ0F2TCxFQUFBQSxvQkFBb0IsRUFBRXZELFNBQVMsQ0FBQzhPLElBeERSOztBQXlEeEI7QUFDQXRMLEVBQUFBLFNBQVMsRUFBRXhELFNBQVMsQ0FBQzhPLElBMURHOztBQTJEeEI7QUFDQXJMLEVBQUFBLFVBQVUsRUFBRXpELFNBQVMsQ0FBQzhPLElBNURFOztBQTZEeEI7QUFDQXBMLEVBQUFBLFlBQVksRUFBRTFELFNBQVMsQ0FBQzZPLE1BOURBOztBQStEeEI7QUFDQWxMLEVBQUFBLGNBQWMsRUFBRTNELFNBQVMsQ0FBQ29QLE1BaEVGOztBQWlFeEI7QUFDQXhMLEVBQUFBLGVBQWUsRUFBRTVELFNBQVMsQ0FBQzhPLElBbEVIOztBQW1FeEI7QUFDQWpMLEVBQUFBLFNBQVMsRUFBRTdELFNBQVMsQ0FBQzZPLE1BcEVHOztBQXFFeEI7QUFDQS9LLEVBQUFBLGFBQWEsRUFBRTlELFNBQVMsQ0FBQzhPLElBdEVEOztBQXVFeEI7QUFDQS9LLEVBQUFBLG9CQUFvQixFQUFFL0QsU0FBUyxDQUFDOE87QUF4RVIsQ0FBMUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCAqIGFzIFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJ1xuaW1wb3J0IHsgY29yZSB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHsgdXNlRWRpdCB9IGZyb20gJ2dpdGVhLXJlYWN0LXRvb2xraXQnXG5pbXBvcnQge1xuICBDYXJkLFxuICB1c2VDYXJkU3RhdGUsXG4gIHVzZVVzZXJCcmFuY2gsXG4gIEVSUk9SX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgeyBBbGlnbm1lbnRIZWxwZXJzLCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IFNjcmlwdHVyZVBhbmUsIFNjcmlwdHVyZVNlbGVjdG9yIH0gZnJvbSAnLi4nXG5pbXBvcnQgeyB1c2VTY3JpcHR1cmVTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2hvb2tzL3VzZVNjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgZ2V0UmVzb3VyY2VMaW5rLFxuICBnZXRSZXNvdXJjZU1lc3NhZ2UsXG4gIGdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyxcbiAgaXNPcmlnaW5hbEJpYmxlLFxufSBmcm9tICcuLi8uLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IFRpdGxlIH0gZnJvbSAnLi4vU2NyaXB0dXJlUGFuZS9zdHlsZWQnXG5pbXBvcnQge1xuICBOVF9PUklHX0xBTkcsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxufSBmcm9tICcuLi8uLi91dGlscydcblxuY29uc3QgS0VZX0ZPTlRfU0laRV9CQVNFID0gJ3NjcmlwdHVyZVBhbmVGb250U2l6ZV8nXG5jb25zdCBsYWJlbCA9ICdWZXJzaW9uJ1xuY29uc3Qgc3R5bGUgPSB7IG1hcmdpblRvcDogJzE2cHgnLCB3aWR0aDogJzUwMHB4JyB9XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNjcmlwdHVyZUNhcmQoe1xuICBpZCxcbiAgaXNOVCxcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgYXBwUmVmLFxuICBjYXJkTnVtLFxuICBjbGFzc2VzLFxuICByZXNvdXJjZToge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIH0sXG4gIGdldExhbmd1YWdlLFxuICByZWZlcmVuY2U6IHtcbiAgICB2ZXJzZSxcbiAgICBjaGFwdGVyLFxuICAgIHByb2plY3RJZDogYm9va0lkLFxuICB9LFxuICByZXNvdXJjZUxpbmssXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgb25SZXNvdXJjZUVycm9yLFxuICBodHRwQ29uZmlnLFxuICBncmVla1JlcG9VcmwsXG4gIGhlYnJld1JlcG9VcmwsXG4gIGdldExleGljb25EYXRhLFxuICBmZXRjaEdsb3NzZXNGb3JWZXJzZSxcbiAgdHJhbnNsYXRlLFxuICBvbk1pbmltaXplLFxuICBsb2dnZWRJblVzZXIsXG4gIGF1dGhlbnRpY2F0aW9uLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIGJvb2tJbmRleCxcbiAgYWRkVmVyc2VSYW5nZSxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG59KSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBoYXZlVW5zYXZlZENoYW5nZXM6IGZhbHNlLFxuICAgIHJlZjogYXBwUmVmLFxuICAgIHNhdmVDbGlja2VkOiBmYWxzZSxcbiAgICBzYXZlQ29udGVudDogbnVsbCxcbiAgICBzaGE6IG51bGwsXG4gICAgc3RhcnRTYXZlOiBmYWxzZSxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgICB1c2luZ1VzZXJCcmFuY2g6IGZhbHNlLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdDoge30sXG4gICAgdmVyc2VzRm9yUmVmOiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgcmVmLFxuICAgIHNhdmVDbGlja2VkLFxuICAgIHNhdmVDb250ZW50LFxuICAgIHNoYSxcbiAgICBzdGFydFNhdmUsXG4gICAgdXJsRXJyb3IsXG4gICAgdXNpbmdVc2VyQnJhbmNoLFxuICAgIHVuc2F2ZWRDaGFuZ2VzTGlzdCxcbiAgICBoYXZlVW5zYXZlZENoYW5nZXMsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcblxuICBjb25zdCBbZm9udFNpemUsIHNldEZvbnRTaXplXSA9IHVzZVVzZXJMb2NhbFN0b3JhZ2UoS0VZX0ZPTlRfU0laRV9CQVNFICsgY2FyZE51bSwgMTAwKVxuICBjb25zdCBpc05UXyA9IGlzTlQoYm9va0lkKVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgaWYgKHVzaW5nVXNlckJyYW5jaCkge1xuICAgIGh0dHBDb25maWcgPSB7IC4uLmh0dHBDb25maWcsIGNhY2hlOiB7IG1heEFnZTogMCB9IH0gLy8gZGlzYWJsZSBodHRwIGNhY2hpbmdcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2V0U2NyaXB0dXJlLFxuICAgIHNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxuICB9ID0gdXNlU2NyaXB0dXJlU2V0dGluZ3Moe1xuICAgIGlzTlQsXG4gICAgdGl0bGUsXG4gICAgdmVyc2UsXG4gICAgb3duZXIsXG4gICAgYm9va0lkLFxuICAgIGFwcFJlZjogcmVmLFxuICAgIHNlcnZlcixcbiAgICBjYXJkTnVtLFxuICAgIGNoYXB0ZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlc291cmNlTGluayxcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICAgIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgc2V0VXJsRXJyb3I6IChlcnJvcikgPT4gc2V0U3RhdGUoeyB1cmxFcnJvcjogZXJyb3IgfSksXG4gICAgaHR0cENvbmZpZyxcbiAgICBncmVla1JlcG9VcmwsXG4gICAgaGVicmV3UmVwb1VybCxcbiAgICB3aG9sZUJvb2s6IHRydWUsXG4gIH0pXG5cbiAgY29uc3QgZmV0Y2hSZXNwXyA9IHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZVxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IHJlcG8gPSBgJHtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkfV8ke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZH1gXG4gIGNvbnN0IHJlZmVyZW5jZV8gPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZSB8fCBudWxsXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gZ2V0IHRoZSBfc2hhIGZyb20gbGFzdCBzY3JpcHR1cmUgZG93bmxvYWRcbiAgICBjb25zdCBfc2hhID0gZmV0Y2hSZXNwXz8uZGF0YT8uc2hhIHx8IG51bGxcbiAgICBjb25zb2xlLmxvZyhgZm9yICR7SlNPTi5zdHJpbmdpZnkocmVmZXJlbmNlXyl9IG5ldyBzaGEgaXMgJHtfc2hhfWApXG5cbiAgICBpZiAoX3NoYSAhPT0gc2hhKSB7XG4gICAgICBzZXRTdGF0ZSh7IHNoYTogX3NoYSB9KVxuICAgIH1cbiAgfSwgW2ZldGNoUmVzcF9dKVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgY2FyZFJlc291cmNlSWQgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5wcm9qZWN0SWQgfHwgcmVzb3VyY2VJZFxuICAvLyBAdHMtaWdub3JlXG4gIGxldCByZWZfID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucmVmIHx8IGFwcFJlZlxuICBjb25zdCBjYW5Vc2VFZGl0QnJhbmNoID0gbG9nZ2VkSW5Vc2VyICYmIGF1dGhlbnRpY2F0aW9uICYmXG4gICAgKHJlc291cmNlSWQgIT09IE9SSUdJTkFMX1NPVVJDRSkgJiZcbiAgICAoKHJlZl8gPT09ICdtYXN0ZXInKSB8fCAocmVmXy5zdWJzdHJpbmcoMCwgbG9nZ2VkSW5Vc2VyLmxlbmd0aCkgPT09IGxvZ2dlZEluVXNlcikgKSAvLyBub3QgdGFnXG5cbiAgY29uc3Qge1xuICAgIHN0YXRlOiB7IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCwgdXNpbmdVc2VyQnJhbmNoOiB1c2luZ1VzZXJCcmFuY2hfIH0sXG4gICAgYWN0aW9uczogeyBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCB9LFxuICB9ID0gdXNlVXNlckJyYW5jaCh7XG4gICAgb3duZXIsXG4gICAgc2VydmVyLFxuICAgIGFwcFJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIGNhcmRJZDogaWQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBjYXJkUmVzb3VyY2VJZCxcbiAgICBvblJlc291cmNlRXJyb3IsXG4gICAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgfSlcblxuICBjb25zdCB3b3JraW5nUmVmID0gY2FuVXNlRWRpdEJyYW5jaCA/IHdvcmtpbmdSZXNvdXJjZUJyYW5jaCA6IGFwcFJlZlxuICBsZXQgc2NyaXB0dXJlVGl0bGVcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBpZiAodXNpbmdVc2VyQnJhbmNoXyAhPT0gdXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyB9KVxuICAgIH1cbiAgfSwgW3VzaW5nVXNlckJyYW5jaF8sIHVzaW5nVXNlckJyYW5jaF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2VsZWN0IGNvcnJlY3Qgd29ya2luZyByZWYgLSBjb3VsZCBiZSBtYXN0ZXIsIHVzZXIgYnJhbmNoLCBvciByZWxlYXNlXG4gICAgbGV0IHdvcmtpbmdSZWZfID0gd29ya2luZ1JlZiB8fCBhcHBSZWZcblxuICAgIGlmIChyZWYgIT09IHdvcmtpbmdSZWZfKSB7XG4gICAgICBzZXRTdGF0ZSh7IHJlZjogd29ya2luZ1JlZl8gfSlcbiAgICB9XG4gIH0sIFt3b3JraW5nUmVmLCByZWYsIGFwcFJlZl0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGRpc3BsYXkgc3RhdHVzIGlmIGVycm9yXG4gICAgY29uc3QgZXJyb3IgPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXG5cbiAgICBpZiAoZXJyb3IpIHsgLy8gaWYgZXJyb3Igd2FzIGZvdW5kIGRvIGNhbGxiYWNrXG4gICAgICBjb25zdCByZXNvdXJjZVN0YXR1cyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXNcbiAgICAgIGNvbnN0IHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVDb25maWcpXG4gICAgICBjb25zdCBtZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVF8pXG4gICAgICBjb25zdCBpc0FjY2Vzc0Vycm9yID0gcmVzb3VyY2VTdGF0dXNbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl1cbiAgICAgIG9uUmVzb3VyY2VFcnJvciAmJiBvblJlc291cmNlRXJyb3IobWVzc2FnZSwgaXNBY2Nlc3NFcnJvciwgcmVzb3VyY2VTdGF0dXMpXG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1cz8uW0VSUk9SX1NUQVRFXV0pXG5cbiAgaWYgKHNjcmlwdHVyZUNvbmZpZy50aXRsZSAmJiBzY3JpcHR1cmVDb25maWcudmVyc2lvbikge1xuICAgIHNjcmlwdHVyZVRpdGxlID0gYCR7c2NyaXB0dXJlQ29uZmlnLnRpdGxlfSB2JHtzY3JpcHR1cmVDb25maWcudmVyc2lvbn1gXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QudXBkYXRlVGl0bGUoc2NyaXB0dXJlQ29uZmlnLnJlc291cmNlTGluaywgc2NyaXB0dXJlVGl0bGUpXG4gIH0gZWxzZSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgVGl0bGUgbWlzc2luZyBmcm9tIHByb2plY3QgbWFuaWZlc3RgXG4gIH1cblxuICAvKiogRHluYW1pY2FsbHkgY3JlYXRlcyB0aGUgc2NyaXB0dXJlIHNlbGVjdGlvbiBkcm9wZG93biB0byBiZSBpbnNlcnRlZCBpbnRvIGNhcmQgc2V0dGluZ3MgKi9cbiAgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlU2VsZWN0b3IoKSB7XG4gICAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnID0gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgICAgIGxhYmVsLFxuICAgICAgcmVzb3VyY2VMaW5rOiBzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLFxuICAgICAgc2V0U2NyaXB0dXJlLFxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gICAgfSlcblxuICAgIHJldHVybiA8U2NyaXB0dXJlU2VsZWN0b3Igey4uLnNjcmlwdHVyZVNlbGVjdGlvbkNvbmZpZ30gc3R5bGU9e3N0eWxlfSBlcnJvck1lc3NhZ2U9e3VybEVycm9yfSAvPlxuICB9XG5cbiAgZnVuY3Rpb24gb25NZW51Q2xvc2UoKSB7XG4gICAgLy8gY29uc29sZS5sb2coYG9uTWVudUNsb3NlKClgKVxuICAgIHNldFN0YXRlKHsgdXJsRXJyb3I6IG51bGwgfSlcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgbGFuZ3VhZ2VJZF8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5sYW5ndWFnZUlkXG4gIGNvbnN0IGxhbmd1YWdlID0gZ2V0TGFuZ3VhZ2UoeyBsYW5ndWFnZUlkOiBsYW5ndWFnZUlkXyB9KVxuICBjb25zdCBkaXJlY3Rpb24gPSAobGFuZ3VhZ2U/LmRpcmVjdGlvbikgfHwgJ2x0cidcbiAgY29uc3QgcmVmZXJlbmNlID0geyAuLi5zY3JpcHR1cmVDb25maWcucmVmZXJlbmNlIH1cblxuICBjb25zdCBpc0hlYnJldyA9IChsYW5ndWFnZUlkXyA9PT0gJ2hibycpXG4gIGNvbnN0IGZvbnRGYWN0b3IgPSBpc0hlYnJldyA/IDEuNCA6IDEgLy8gd2UgYXV0b21hdGljYWxseSBzY2FsZSB1cCBmb250IHNpemUgZm9yIEhlYnJld1xuICBjb25zdCBzY2FsZWRGb250U2l6ZSA9IGZvbnRTaXplICogZm9udEZhY3RvclxuXG4gIGNvbnN0IGl0ZW1zID0gbnVsbFxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIGhlYWRlcnMsIGZpbHRlcnMsIGl0ZW1JbmRleCwgbWFya2Rvd25WaWV3LFxuICAgIH0sXG4gICAgYWN0aW9uczoge1xuICAgICAgc2V0RmlsdGVycywgc2V0SXRlbUluZGV4LCBzZXRNYXJrZG93blZpZXcsXG4gICAgfSxcbiAgfSA9IHVzZUNhcmRTdGF0ZSh7IGl0ZW1zIH0pXG5cbiAgY29uc3QgcmVmU3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke01hdGgucm91bmQoc2NhbGVkRm9udFNpemUgKiAwLjkpfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBjb250ZW50U3R5bGUgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6IGAke3NjYWxlZEZvbnRTaXplfSVgLFxuICB9KSwgW3NjYWxlZEZvbnRTaXplXSlcblxuICBjb25zdCBzY3JpcHR1cmVMYWJlbCA9IDxUaXRsZT57c2NyaXB0dXJlVGl0bGV9PC9UaXRsZT5cbiAgbGV0IGRpc2FibGVXb3JkUG9wb3Zlcl8gPSBkaXNhYmxlV29yZFBvcG92ZXJcbiAgY29uc3QgdXNpbmdPcmlnaW5hbEJpYmxlID0gaXNPcmlnaW5hbEJpYmxlKHNjcmlwdHVyZUNvbmZpZ1sncmVzb3VyY2UnXT8ucHJvamVjdElkKVxuXG4gIGlmIChkaXNhYmxlV29yZFBvcG92ZXIgPT09IHVuZGVmaW5lZCkgeyAvLyBpZiBub3Qgc3BlY2lmaWVkLCB0aGVuIGRldGVybWluZSBpZiBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZVxuICAgIGRpc2FibGVXb3JkUG9wb3Zlcl8gPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBwcmUtY2FjaGUgZ2xvc3NlcyBvbiB2ZXJzZSBjaGFuZ2VcbiAgICBjb25zdCBmZXRjaEdsb3NzRGF0YUZvclZlcnNlID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICAgIC8vIGdldCB2ZXJzZSBvYmplY3RzIG9mIGFsbCB0aGUgdmVyc2VzXG4gICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmIHx8IFtdKSB7XG4gICAgICAgIGNvbnN0IF92ZXJzZU9iamVjdHMgPSB2ZXJzZVJlZj8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHNcbiAgICAgICAgdmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzLmNvbmNhdChfdmVyc2VPYmplY3RzKVxuICAgICAgfVxuXG4gICAgICBpZiAoIWRpc2FibGVXb3JkUG9wb3ZlciAmJiB2ZXJzZU9iamVjdHM/Lmxlbmd0aCAmJiBmZXRjaEdsb3NzZXNGb3JWZXJzZSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tYXdhaXQtaW4tbG9vcFxuICAgICAgICBhd2FpdCBmZXRjaEdsb3NzZXNGb3JWZXJzZSh2ZXJzZU9iamVjdHMsIGxhbmd1YWdlSWRfKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh1c2luZ09yaWdpbmFsQmlibGUpIHtcbiAgICAgIGZldGNoR2xvc3NEYXRhRm9yVmVyc2UoKVxuICAgIH1cbiAgfSwgWyB2ZXJzZXNGb3JSZWYsIGxhbmd1YWdlSWRfIF0pXG5cbiAgY29uc3QgZW5hYmxlRWRpdCA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgY29uc3QgZW5hYmxlQWxpZ25tZW50ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBvcmlnaW5hbFJlcG9VcmwgPSBpc05ld1Rlc3RhbWVudCA/IGdyZWVrUmVwb1VybCA6IGhlYnJld1JlcG9VcmxcbiAgY29uc3Qgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICBhdXRoZW50aWNhdGlvbjogY2FuVXNlRWRpdEJyYW5jaCA/IGF1dGhlbnRpY2F0aW9uIDogbnVsbCxcbiAgICBib29rSW5kZXgsXG4gICAgY3VycmVudFZlcnNlUmVmOiByZWZlcmVuY2UsXG4gICAgZW5hYmxlRWRpdCxcbiAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgaHR0cENvbmZpZyxcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaXNOZXdUZXN0YW1lbnQsXG4gICAgbG9nZ2VkSW5Vc2VyOiBjYW5Vc2VFZGl0QnJhbmNoID8gbG9nZ2VkSW5Vc2VyIDogbnVsbCxcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIG9yaWdpbmFsUmVwb1VybCxcbiAgICBzY3JpcHR1cmVDb25maWcsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc3RhcnRFZGl0QnJhbmNoLFxuICAgIHNldFNhdmVkQ2hhbmdlczogX3NldFNhdmVkQ2hhbmdlcyxcbiAgICBzb3VyY2VMYW5ndWFnZTogaXNOVF8gPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkcsXG4gICAgdGFyZ2V0TGFuZ3VhZ2U6IGxhbmd1YWdlLFxuICAgIHRpdGxlOiBzY3JpcHR1cmVUaXRsZSxcbiAgICB3b3JraW5nUmVzb3VyY2VCcmFuY2g6IHJlZixcbiAgfVxuXG4gIC8qKlxuICAgKiB0aGlzIGdldHMgY2FsbGVkIHdoZW5ldmVyIGEgc2NyaXB0dXJlIHBhbmUgaGFzIGEgY2hhbmdlIGluIHNhdmUgc3RhdGVcbiAgICogQHBhcmFtIHtudW1iZXJ9IGN1cnJlbnRJbmRleFxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNhdmVkXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGdldENoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciB1c2VyIGNsaWNrcyBzYXZlIGJ1dHRvblxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjbGVhckNoYW5nZXMgLSB3aWxsIGJlIGNhbGxlZCB3aGVuZXZlciBzYXZlIGhhcyBjb21wbGV0ZWRcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0YXRlIC0gY3VycmVudCBzdGF0ZSBvZiB3b3JkIGFsaWdubWVudC9lZGl0XG4gICAqL1xuICBmdW5jdGlvbiBfc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgc2F2ZWQsIHsgZ2V0Q2hhbmdlcyA9IG51bGwsIGNsZWFyQ2hhbmdlcyA9IG51bGwsIHN0YXRlID0gbnVsbCB9KSB7XG4gICAgY29uc3QgX3Vuc2F2ZWRDaGFuZ2VzTGlzdCA9IHsgLi4udW5zYXZlZENoYW5nZXNMaXN0IH1cblxuICAgIGlmIChzYXZlZCkge1xuICAgICAgaWYgKF91bnNhdmVkQ2hhbmdlc0xpc3QuaGFzT3duUHJvcGVydHkoY3VycmVudEluZGV4KSkge1xuICAgICAgICBkZWxldGUgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIF91bnNhdmVkQ2hhbmdlc0xpc3RbY3VycmVudEluZGV4XSA9IHsgZ2V0Q2hhbmdlcywgY2xlYXJDaGFuZ2VzLCBzdGF0ZSB9IC8vIHVwZGF0ZSB3aXRoIGxhdGVzdFxuICAgIH1cblxuICAgIGNvbnN0IF9oYXZlVW5zYXZlZENoYW5nZXMgPSAhIU9iamVjdC5rZXlzKF91bnNhdmVkQ2hhbmdlc0xpc3QpLmxlbmd0aFxuXG4gICAgaWYgKGhhdmVVbnNhdmVkQ2hhbmdlcyAhPSBfaGF2ZVVuc2F2ZWRDaGFuZ2VzKSB7XG4gICAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKHJlc291cmNlSWQsICFfaGF2ZVVuc2F2ZWRDaGFuZ2VzKVxuICAgICAgc2V0U3RhdGUoeyBoYXZlVW5zYXZlZENoYW5nZXM6IF9oYXZlVW5zYXZlZENoYW5nZXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCwgdW5zYXZlZENoYW5nZXNMaXN0KSkge1xuICAgICAgc2V0U3RhdGUoeyB1bnNhdmVkQ2hhbmdlc0xpc3Q6IF91bnNhdmVkQ2hhbmdlc0xpc3QgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogc2VhcmNoIGNoYXB0ZXIgb3IgdmVyc2UgY2h1bmsgdG8gbGluZSB0aGF0IHN0YXJ0cyB3aXRoIGZpbmRJdGVtXG4gICAqIEBwYXJhbSB7bnVtYmVyfHN0cmluZ30gZmluZEl0ZW1cbiAgICogQHBhcmFtIHtzdHJpbmdbXX0gY2h1bmtzXG4gICAqL1xuICBmdW5jdGlvbiBmaW5kUmVmSW5BcnJheShmaW5kSXRlbSwgY2h1bmtzKSB7XG4gICAgY29uc3QgcmVmXyA9IGZpbmRJdGVtICsgJydcbiAgICBjb25zdCByZWZMZW4gPSByZWZfLmxlbmd0aFxuICAgIGNvbnN0IGluZGV4ID0gY2h1bmtzLmZpbmRJbmRleCgoY2h1bmssIGlkeCkgPT4ge1xuICAgICAgaWYgKGlkeCA+IDApIHtcbiAgICAgICAgaWYgKGNodW5rLnN1YnN0cmluZygwLCByZWZMZW4pID09PSByZWZfKSB7XG4gICAgICAgICAgY29uc3QgbmV4dENoYXIgPSBjaHVua1tyZWZMZW5dXG5cbiAgICAgICAgICBpZiAoKG5leHRDaGFyID4gJzknKSB8fCAobmV4dENoYXIgPCAnMCcpKSB7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfSlcbiAgICByZXR1cm4gaW5kZXhcbiAgfVxuXG4gIGZ1bmN0aW9uIGdldEJvb2tOYW1lKCkge1xuICAgIGNvbnN0IGJvb2tDYXBzID0gc2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LnByb2plY3RJZCA/IHNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UucHJvamVjdElkLnRvVXBwZXJDYXNlKCkgOiAnJ1xuICAgIHJldHVybiBgJHtib29rSW5kZXh9LSR7Ym9va0NhcHN9LnVzZm1gXG4gIH1cblxuICBjb25zdCBmaWxlcGF0aCA9IGdldEJvb2tOYW1lKClcblxuICAvLyBrZWVwIHRyYWNrIG9mIHZlcnNlIGVkaXQgc3RhdGVcbiAgY29uc3QgeyBvblNhdmVFZGl0IH0gPSB1c2VFZGl0KHtcbiAgICBzaGEsXG4gICAgb3duZXIsXG4gICAgY29udGVudDogc2F2ZUNvbnRlbnQsXG4gICAgY29uZmlnOiB7XG4gICAgICBjYWNoZTogeyBtYXhBZ2U6IDAgfSxcbiAgICAgIC4uLmF1dGhlbnRpY2F0aW9uPy5jb25maWcsXG4gICAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdGltZW91dDogaHR0cENvbmZpZz8uc2VydmVyVGltZU91dCB8fCBodHRwQ29uZmlnPy50aW1lb3V0IHx8IDUwMDAsXG4gICAgfSxcbiAgICBhdXRob3I6IGxvZ2dlZEluVXNlcixcbiAgICB0b2tlbjogYXV0aGVudGljYXRpb24/LnRva2VuLFxuICAgIGJyYW5jaDogd29ya2luZ1Jlc291cmNlQnJhbmNoLFxuICAgIGZpbGVwYXRoLFxuICAgIHJlcG8sXG4gIH0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gd2hlbiBzdGFydFNhdmUgZ29lcyB0cnVlLCBzYXZlIGVkaXRzIHRvIHVzZXIgYnJhbmNoIGFuZCB0aGVuIGNsZWFyIHN0YXJ0U2F2ZVxuICAgIGNvbnN0IF9zYXZlRWRpdCA9IGFzeW5jICgpID0+IHsgLy8gYmVnaW4gdXBsb2FkaW5nIG5ldyBVU0ZNXG4gICAgICBsZXQgYnJhbmNoID0gKHdvcmtpbmdSZXNvdXJjZUJyYW5jaCAhPT0gJ21hc3RlcicpID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogdW5kZWZpbmVkXG5cbiAgICAgIGlmICghYnJhbmNoKSB7XG4gICAgICAgIGJyYW5jaCA9IGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpIC8vIG1ha2Ugc3VyZSB1c2VyIGJyYW5jaCBleGlzdHMgYW5kIGdldCBuYW1lXG4gICAgICB9XG5cbiAgICAgIGF3YWl0IG9uU2F2ZUVkaXQoYnJhbmNoKS50aGVuKChzdWNjZXNzKSA9PiB7IC8vIHB1c2ggY2hhbmdlZCB0byBzZXJ2ZXJcbiAgICAgICAgaWYgKHN1Y2Nlc3MpIHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZlIHNjcmlwdHVyZSBlZGl0cyBzdWNjZXNzYClcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgICAgICAgIH0pXG5cbiAgICAgICAgICBjb25zdCB1bnNhdmVkQ2FyZEluZGljZXMgPSBPYmplY3Qua2V5cyh1bnNhdmVkQ2hhbmdlc0xpc3QpXG5cbiAgICAgICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgICAgICBjb25zdCB7IGNsZWFyQ2hhbmdlcyB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmRJbmRleF1cbiAgICAgICAgICAgICAgY2xlYXJDaGFuZ2VzICYmIGNsZWFyQ2hhbmdlcygpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgY29uc29sZS5pbmZvKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIFJlbG9hZGluZyByZXNvdXJjZScpXG4gICAgICAgICAgc2NyaXB0dXJlQ29uZmlnPy5yZWxvYWRSZXNvdXJjZSgpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcignc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgY2hhbmdlZCBzY3JpcHR1cmUgZmFpbGVkJylcbiAgICAgICAgICBzZXRTdGF0ZSh7IHN0YXJ0U2F2ZTogZmFsc2UgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG5cbiAgICBpZiAoc3RhcnRTYXZlKSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkIC0gY2FsbGluZyBfc2F2ZUVkaXQoKWApXG4gICAgICBfc2F2ZUVkaXQoKVxuICAgIH1cbiAgfSwgW3N0YXJ0U2F2ZV0pXG5cbiAgLyoqXG4gICAqIGNvbnZlcnQgdXBkYXRlZFZlcnNlT2JqZWN0cyB0byBVU0ZNIGFuZCBtZXJnZSBpbnRvIHRoZSBiaWJsZVVzZm1cbiAgICogQHBhcmFtIHtzdHJpbmd9IGJpYmxlVXNmbSAtIFVTRk0gb2YgYmlibGVcbiAgICogQHBhcmFtIHtvYmplY3R9IHJlZiAtIHJlZmVyZW5jZSBvZiB2ZXJzZSB0byBtZXJnZSBpblxuICAgKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzIC0gbmV3IHZlcnNlIGluIHZlcnNlT2JqZWN0IGZvcm1hdFxuICAgKiBAcGFyYW0ge251bWJlcn0gY2FyZE51bVxuICAgKi9cbiAgZnVuY3Rpb24gbWVyZ2VWZXJzZU9iamVjdHNJbnRvQmlibGVVc2ZtKGJpYmxlVXNmbSwgcmVmLCB1cGRhdGVkVmVyc2VPYmplY3RzLCBjYXJkTnVtOiBudW1iZXIpIHtcbiAgICBsZXQgbmV3VXNmbVxuICAgIGNvbnN0IGNoYXB0ZXJDaHVua3MgPSBiaWJsZVVzZm0/LnNwbGl0KCdcXFxcYyAnKVxuICAgIGNvbnN0IGNoYXB0ZXJJbmRleCA9IGZpbmRSZWZJbkFycmF5KHJlZj8uY2hhcHRlciwgY2hhcHRlckNodW5rcylcblxuICAgIGlmIChjaGFwdGVySW5kZXggPj0gMCkge1xuICAgICAgY29uc3QgY3VycmVudENoYXB0ZXIgPSBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF1cbiAgICAgIGNvbnN0IHZlcnNlQ2h1bmtzID0gY3VycmVudENoYXB0ZXIuc3BsaXQoJ1xcXFx2ICcpXG4gICAgICBjb25zdCB2ZXJzZUluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy52ZXJzZSwgdmVyc2VDaHVua3MpXG5cbiAgICAgIGlmICh2ZXJzZUluZGV4ID49IDApIHtcbiAgICAgICAgY29uc3QgbmV3VmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoJHtjYXJkTnVtfSkgLSBuZXcgVVNGTSBmb3IgY2FyZDp9IC0gJHtuZXdWZXJzZVVzZm0uc3Vic3RyaW5nKDAsIDEwMCl9YClcbiAgICAgICAgY29uc3Qgb2xkVmVyc2UgPSB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XVxuICAgICAgICBjb25zdCB2ZXJzZU51bUxlbiA9IChyZWY/LnZlcnNlICsgJycpLmxlbmd0aFxuICAgICAgICB2ZXJzZUNodW5rc1t2ZXJzZUluZGV4XSA9IG9sZFZlcnNlLnN1YnN0cmluZygwLCB2ZXJzZU51bUxlbiArIDEpICsgbmV3VmVyc2VVc2ZtXG4gICAgICAgIGNvbnN0IG5ld0NoYXB0ZXIgPSB2ZXJzZUNodW5rcy5qb2luKCdcXFxcdiAnKVxuICAgICAgICBjaGFwdGVyQ2h1bmtzW2NoYXB0ZXJJbmRleF0gPSBuZXdDaGFwdGVyXG4gICAgICAgIG5ld1VzZm0gPSBjaGFwdGVyQ2h1bmtzLmpvaW4oJ1xcXFxjICcpXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXdVc2ZtXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBmb3IgZWFjaCB1bnNhdmVkIGNoYW5nZSwgY2FsbCBpbnRvIHZlcnNlUGFuZSB0byBnZXQgbGF0ZXN0IGNoYW5nZXMgZm9yIHZlcnNlIHRvIHNhdmVcbiAgICBpZiAoc2F2ZUNsaWNrZWQpIHtcbiAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgaWYgKHVuc2F2ZWRDYXJkSW5kaWNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGxldCBiaWJsZVVzZm0gPSBjb3JlLmdldFJlc3BvbnNlRGF0YShzY3JpcHR1cmVDb25maWc/LmZldGNoUmVzcG9uc2UpXG4gICAgICAgIGxldCBtZXJnZUZhaWwgPSBmYWxzZVxuICAgICAgICBsZXQgY2FyZE51bSA9IDBcblxuICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgIGNvbnN0IHsgZ2V0Q2hhbmdlcywgc3RhdGUgfSA9IHVuc2F2ZWRDaGFuZ2VzTGlzdFtjYXJkTnVtXVxuXG4gICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiBiaWJsZVVzZm0pIHsgLy8ganVzdCByZXBsYWNlIHZlcnNlXG4gICAgICAgICAgICAgIG5ld1VzZm0gPSBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW0pXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgIGJpYmxlVXNmbSA9IG5ld1VzZm1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1lcmdlRmFpbCA9IHRydWVcbiAgICAgICAgICAgICAgYnJlYWtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobWVyZ2VGYWlsKSB7IC8vIGlmIHdlIGZhaWxlZCB0byBtZXJnZSwgZmFsbGJhY2sgdG8gYnJ1dGUgZm9yY2UgdmVyc2Ugb2JqZWN0cyB0byBVU0ZNXG4gICAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIHZlcnNlIG5vdCBmb3VuZCwgZmFsbGluZyBiYWNrIHRvIGluc2VydGluZyB2ZXJzZSBvYmplY3RgKVxuICAgICAgICAgIGxldCBuZXdCb29rSnNvblxuXG4gICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICBjb25zdCBjYXJkTnVtID0gcGFyc2VJbnQoY2FyZEluZGV4KVxuICAgICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICAgIGlmIChnZXRDaGFuZ2VzKSB7XG4gICAgICAgICAgICAgIGxldCBuZXdVc2ZtXG4gICAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAgICAgICAgIH0gPSBnZXRDaGFuZ2VzKHN0YXRlKVxuXG4gICAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFuZXdVc2ZtKSB7XG4gICAgICAgICAgICAgICAgbGV0IHRhcmdldFZlcnNlT2JqZWN0c18gPSBudWxsXG5cbiAgICAgICAgICAgICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobmV3VmVyc2VUZXh0KSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKHVwZGF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIG5ld0Jvb2tKc29uID0gdGFyZ2V0VmVyc2VPYmplY3RzXyAmJiBzY3JpcHR1cmVDb25maWc/LnVwZGF0ZVZlcnNlKHJlZi5jaGFwdGVyLCByZWYudmVyc2UsIHsgdmVyc2VPYmplY3RzOiB0YXJnZXRWZXJzZU9iamVjdHNfIH0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYmlibGVVc2ZtID0gdXNmbWpzLnRvVVNGTShuZXdCb29rSnNvbiwgeyBmb3JjZWROZXdMaW5lczogdHJ1ZSB9KVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gc2F2aW5nIG5ldyBVU0ZNOiAke2JpYmxlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX0uLi5gKVxuICAgICAgICBzZXRTdGF0ZSh7IHNhdmVDb250ZW50OiBiaWJsZVVzZm0sIHN0YXJ0U2F2ZTogdHJ1ZSwgc2F2ZUNsaWNrZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbc2F2ZUNsaWNrZWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0VxdWFsKHZlcnNlc0ZvclJlZiwgc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYpKSB7XG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZlxuICAgICAgc2V0U3RhdGUoeyB2ZXJzZXNGb3JSZWYgfSlcblxuICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZiBvZiB2ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgLy8gY2hlY2sgZm9yIHZlcnNlIHJhbmdlXG4gICAgICAgIGNvbnN0IF92ZXJzZSA9IHZlcnNlUmVmLnZlcnNlXG5cbiAgICAgICAgaWYgKGFkZFZlcnNlUmFuZ2UgJiYgKHR5cGVvZiBfdmVyc2UgPT09ICdzdHJpbmcnKSkge1xuICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICBpZiAoX3ZlcnNlLmluY2x1ZGVzKCctJykpIHtcbiAgICAgICAgICAgIGFkZFZlcnNlUmFuZ2UoYCR7c2NyaXB0dXJlQ29uZmlnPy5yZWZlcmVuY2U/LmNoYXB0ZXJ9OiR7X3ZlcnNlfWApXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LCBbc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWZdKVxuXG4gIGNvbnN0IHJlbmRlcmVkU2NyaXB0dXJlUGFuZXMgPSB2ZXJzZXNGb3JSZWY/Lm1hcCgoX2N1cnJlbnRWZXJzZURhdGEsIGluZGV4KSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFZlcnNlT2JqZWN0cyA9IF9jdXJyZW50VmVyc2VEYXRhPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0cyB8fCBudWxsXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IHsgY2hhcHRlciwgdmVyc2UgfSA9IF9jdXJyZW50VmVyc2VEYXRhIHx8IHt9XG4gICAgY29uc3QgX3JlZmVyZW5jZSA9IHtcbiAgICAgIC4uLnJlZmVyZW5jZSxcbiAgICAgIGNoYXB0ZXIsXG4gICAgICB2ZXJzZSxcbiAgICB9XG4gICAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgICAgY3VycmVudEluZGV4OiBpbmRleCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICByZWZlcmVuY2U6IF9yZWZlcmVuY2UsXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxTY3JpcHR1cmVQYW5lXG4gICAgICAgIHsuLi5zY3JpcHR1cmVDb25maWd9XG4gICAgICAgIGNvbnRlbnRTdHlsZT17Y29udGVudFN0eWxlfVxuICAgICAgICBjdXJyZW50SW5kZXg9e2luZGV4fVxuICAgICAgICBkaXJlY3Rpb249e2RpcmVjdGlvbn1cbiAgICAgICAgZGlzYWJsZVdvcmRQb3BvdmVyPXtkaXNhYmxlV29yZFBvcG92ZXJffVxuICAgICAgICBmb250U2l6ZT17Zm9udFNpemV9XG4gICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgaXNOVD17aXNOVF99XG4gICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgIHJlZlN0eWxlPXtyZWZTdHlsZX1cbiAgICAgICAgcmVmZXJlbmNlPXtfcmVmZXJlbmNlfVxuICAgICAgICBzYXZpbmc9e3N0YXJ0U2F2ZX1cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnPXtfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZ31cbiAgICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXM9e3NldFdvcmRBbGlnbmVyU3RhdHVzfVxuICAgICAgICBzZXJ2ZXI9e3NlcnZlcn1cbiAgICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgICAvPlxuICAgIClcbiAgfSlcblxuICByZXR1cm4gKFxuICAgIDxDYXJkXG4gICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkKSA6IG51bGx9XG4gICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgID5cbiAgICAgIDxkaXYgaWQ9XCJzY3JpcHR1cmUtcGFuZS1saXN0XCI+XG4gICAgICAgIHtyZW5kZXJlZFNjcmlwdHVyZVBhbmVzfVxuICAgICAgPC9kaXY+XG4gICAgPC9DYXJkPlxuICApXG59XG5cblNjcmlwdHVyZUNhcmQucHJvcFR5cGVzID0ge1xuICAvKiogaHRtbCBpZGVudGlmaWVyIHRvIHVzZSBmb3IgY2FyZCAqL1xuICBpZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG1ldGhvZCB0byBkZXRlcm1pbmUgaWYgTlQgb3IgT1QgKi9cbiAgaXNOVDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHRpdGxlIGZvciBzY3JpcHR1cmUgY2FyZCAqL1xuICB0aXRsZTogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogZ2V0IGxhbmd1YWdlIGRldGFpbHMgKi9cbiAgZ2V0TGFuZ3VhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBzY3JpcHR1cmUgY2FyZCBudW1iZXIgKDAgdG8gMiBmb3IgZXhhbXBsZSkgKi9cbiAgY2FyZE51bTogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAvKiogcmVzb3VyY2Ugb2JqZWN0ICovXG4gIHJlc291cmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiByZXNvdXJjZSBsYW5ndWFnZSB0byB1c2UgKi9cbiAgICBsYW5ndWFnZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgc3VjaCBhcyB1bmZvbGRpbmdXb3JkICovXG4gICAgb3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVzb3VyY2VJZCB0byB1c2UgKGUuZy4gdWdudCkgKi9cbiAgICByZXNvdXJjZUlkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIHJlcG8gb3duZXIgZm9yIG9yaWdpbmFsIGxhbmd1YWdlcyBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgfSksXG4gIHJlZmVyZW5jZTogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAvKiogcHJvamVjdElkIChib29rSUQpIHRvIHVzZSAqL1xuICAgIHByb2plY3RJZDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiBjdXJyZW50IGNoYXB0ZXIgbnVtYmVyICovXG4gICAgY2hhcHRlcjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgdmVyc2UgbnVtYmVyICovXG4gICAgdmVyc2U6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKS5pc1JlcXVpcmVkLFxuICB9KSxcbiAgLyoqIHNlcnZlciAoZS5nLiAnaHR0cHM6Ly9naXQuZG9vcjQzLm9yZycpICovXG4gIHNlcnZlcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogcmVwbyBicmFuY2ggb3IgdGFnIHN1Y2ggYXMgbWFzdGVyICovXG4gIGFwcFJlZjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAvKiogaWYgdHJ1ZSB0aGVuIHdvcmQgZGF0YSBob3ZlciBpcyBzaG93biAqL1xuICBkaXNhYmxlV29yZFBvcG92ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKiogQ1NTIGNsYXNzZXMgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqIHJlc291cmNlTGluayAqL1xuICByZXNvdXJjZUxpbms6IFByb3BUeXBlcy5hbnksXG4gIC8qKiB1c2UgbWV0aG9kIGZvciB1c2luZyBsb2NhbCBzdG9yYWdlIHNwZWNpZmljIGZvciB1c2VyICovXG4gIHVzZVVzZXJMb2NhbFN0b3JhZ2U6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIC8qKiBvcHRpb25hbCBjYWxsYmFjayBpZiBlcnJvciBsb2FkaW5nIHJlc291cmNlLCBwYXJhbWV0ZXIgcmV0dXJuZWQgYXJlOlxuICAgKiAgICAoe3N0cmluZ30gZXJyb3JNZXNzYWdlLCB7Ym9vbGVhbn0gaXNBY2Nlc3NFcnJvciwge29iamVjdH0gcmVzb3VyY2VTdGF0dXMpXG4gICAqICAgICAgLSBpc0FjY2Vzc0Vycm9yIC0gaXMgdHJ1ZSBpZiB0aGlzIHdhcyBhbiBlcnJvciB0cnlpbmcgdG8gYWNjZXNzIGZpbGVcbiAgICogICAgICAtIHJlc291cmNlU3RhdHVzIC0gaXMgb2JqZWN0IGNvbnRhaW5pbmcgZGV0YWlscyBhYm91dCBwcm9ibGVtcyBmZXRjaGluZyByZXNvdXJjZSAqL1xuICBvblJlc291cmNlRXJyb3I6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgaHR0cCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgZmV0Y2hpbmcgcmVzb3VyY2VzLCBkZWZhdWx0IGlzIDAgKHZlcnkgbG9uZyB3YWl0KSAqL1xuICBodHRwQ29uZmlnOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBncmVlayByZXBvICovXG4gIGdyZWVrUmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIG9wdGlvbmFsIHVybCBmb3IgaGVicmV3IHJlcG8gKi9cbiAgaGVicmV3UmVwb1VybDogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGZ1bmN0aW9uIHRvIHByZS1sb2FkIGxleGljb24gZGF0YSBmb3IgdmVyc2UgKi9cbiAgZmV0Y2hHbG9zc2VzRm9yVmVyc2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogb3B0aW9uYWwgZnVuY3Rpb24gZm9yIGxvY2FsaXphdGlvbiAqL1xuICB0cmFuc2xhdGU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gbWluaW1pemUgdGhlIGNhcmQgKG9wdGlvbmFsKSAqL1xuICBvbk1pbmltaXplOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIHVzZXItbmFtZSAqL1xuICBsb2dnZWRJblVzZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBhdXRoZW50aWNhdGlvbiBpbmZvICovXG4gIGF1dGhlbnRpY2F0aW9uOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogZnVuY3Rpb24gdG8gc2V0IHN0YXRlIGluIGFwcCB0aGF0IHRoZXJlIGFyZSB1bnNhdmVkIGNoYW5nZXMgKi9cbiAgc2V0U2F2ZWRDaGFuZ2VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqIGluZGV4IGZvciBjdXJyZW50IGJvb2sgKGUuZy4gJzAxJyBmb3IgJ2dlbicpKi9cbiAgYm9va0luZGV4OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogY2FsbGJhY2sgdG8gaW5kaWNhdGUgdGhhdCB3ZSBhcmUgdXNpbmcgYSB2ZXJzZSByYW5nZSBoZXJlICovXG4gIGFkZFZlcnNlUmFuZ2U6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogY2FsbGJhY2sgdG8gdXBkYXRlIHdvcmQgYWxpZ25lciBzdGF0ZSAqL1xuICBzZXRXb3JkQWxpZ25lclN0YXR1czogUHJvcFR5cGVzLmZ1bmMsXG59XG4iXX0=
|
|
1021
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZUNhcmQvU2NyaXB0dXJlQ2FyZC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJQcm9wVHlwZXMiLCJjb3JlIiwidXNmbWpzIiwidXNlRWRpdCIsIk1kVXBkYXRlIiwiTWRVcGRhdGVEaXNhYmxlZCIsIkZpU2hhcmUiLCJJY29uQnV0dG9uIiwiQ2FyZCIsInVzZUNhcmRTdGF0ZSIsInVzZVVzZXJCcmFuY2giLCJFUlJPUl9TVEFURSIsIk1BTklGRVNUX05PVF9MT0FERURfRVJST1IiLCJBbGlnbm1lbnRIZWxwZXJzIiwiVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyIsImlzRXF1YWwiLCJTY3JpcHR1cmVQYW5lIiwiU2NyaXB0dXJlU2VsZWN0b3IiLCJ1c2VTY3JpcHR1cmVTZXR0aW5ncyIsImdldFJlc291cmNlTGluayIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImlzT3JpZ2luYWxCaWJsZSIsIlRpdGxlIiwiTlRfT1JJR19MQU5HIiwiT1JJR0lOQUxfU09VUkNFIiwiT1RfT1JJR19MQU5HIiwiS0VZX0ZPTlRfU0laRV9CQVNFIiwibGFiZWwiLCJzdHlsZSIsIm1hcmdpblRvcCIsIndpZHRoIiwiU2NyaXB0dXJlQ2FyZCIsImlkIiwiaXNOVCIsInRpdGxlIiwic2VydmVyIiwiYXBwUmVmIiwiY2FyZE51bSIsImNsYXNzZXMiLCJyZXNvdXJjZSIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRMYW5ndWFnZSIsInJlZmVyZW5jZSIsInZlcnNlIiwiY2hhcHRlciIsImJvb2tJZCIsInByb2plY3RJZCIsInJlc291cmNlTGluayIsInVzZVVzZXJMb2NhbFN0b3JhZ2UiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvblJlc291cmNlRXJyb3IiLCJodHRwQ29uZmlnIiwiZ3JlZWtSZXBvVXJsIiwiaGVicmV3UmVwb1VybCIsImdldExleGljb25EYXRhIiwiZmV0Y2hHbG9zc2VzRm9yVmVyc2UiLCJ0cmFuc2xhdGUiLCJvbk1pbmltaXplIiwibG9nZ2VkSW5Vc2VyIiwiYXV0aGVudGljYXRpb24iLCJzZXRTYXZlZENoYW5nZXMiLCJib29rSW5kZXgiLCJhZGRWZXJzZVJhbmdlIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJ1c2VTdGF0ZSIsImhhdmVVbnNhdmVkQ2hhbmdlcyIsInJlZiIsInNhdmVDbGlja2VkIiwic2F2ZUNvbnRlbnQiLCJzaGEiLCJzdGFydFNhdmUiLCJ1cmxFcnJvciIsInVzaW5nVXNlckJyYW5jaCIsInVuc2F2ZWRDaGFuZ2VzTGlzdCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwiZm9udFNpemUiLCJzZXRGb250U2l6ZSIsImlzTlRfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNhY2hlIiwibWF4QWdlIiwic2V0VXJsRXJyb3IiLCJlcnJvciIsIndob2xlQm9vayIsImlzTmV3VGVzdGFtZW50Iiwic2NyaXB0dXJlQ29uZmlnIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImZldGNoUmVzcF8iLCJmZXRjaFJlc3BvbnNlIiwicmVwbyIsInJlZmVyZW5jZV8iLCJ1c2VFZmZlY3QiLCJfc2hhIiwiZGF0YSIsImNvbnNvbGUiLCJsb2ciLCJKU09OIiwic3RyaW5naWZ5IiwiY2FyZFJlc291cmNlSWQiLCJyZWZfIiwiY2FuVXNlRWRpdEJyYW5jaCIsInN1YnN0cmluZyIsImxlbmd0aCIsImNhcmRJZCIsIndvcmtpbmdSZXNvdXJjZUJyYW5jaCIsInVzaW5nVXNlckJyYW5jaF8iLCJtZXJnZUZyb21NYXN0ZXIiLCJtZXJnZVRvTWFzdGVyIiwiYWN0aW9ucyIsInN0YXJ0RWRpdEJyYW5jaCIsInN0YXJ0RWRpdCIsIm1lcmdlRnJvbU1hc3RlckludG9Vc2VyQnJhbmNoIiwibWVyZ2VUb01hc3RlckZyb21Vc2VyQnJhbmNoIiwid29ya2luZ1JlZiIsInNjcmlwdHVyZVRpdGxlIiwid29ya2luZ1JlZl8iLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJpc0FjY2Vzc0Vycm9yIiwidmVyc2lvbiIsInVwZGF0ZVRpdGxlIiwiZ2V0U2NyaXB0dXJlU2VsZWN0b3IiLCJzY3JpcHR1cmVTZWxlY3Rpb25Db25maWciLCJvbk1lbnVDbG9zZSIsImxhbmd1YWdlSWRfIiwibGFuZ3VhZ2UiLCJkaXJlY3Rpb24iLCJpc0hlYnJldyIsImZvbnRGYWN0b3IiLCJzY2FsZWRGb250U2l6ZSIsIml0ZW1zIiwiaGVhZGVycyIsImZpbHRlcnMiLCJpdGVtSW5kZXgiLCJtYXJrZG93blZpZXciLCJzZXRGaWx0ZXJzIiwic2V0SXRlbUluZGV4Iiwic2V0TWFya2Rvd25WaWV3IiwicmVmU3R5bGUiLCJ1c2VNZW1vIiwiZm9udEZhbWlseSIsIk1hdGgiLCJyb3VuZCIsImNvbnRlbnRTdHlsZSIsInNjcmlwdHVyZUxhYmVsIiwiZGlzYWJsZVdvcmRQb3BvdmVyXyIsInVzaW5nT3JpZ2luYWxCaWJsZSIsInVuZGVmaW5lZCIsImZldGNoR2xvc3NEYXRhRm9yVmVyc2UiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZVJlZiIsIl92ZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJjb25jYXQiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50Iiwib3JpZ2luYWxSZXBvVXJsIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsImN1cnJlbnRWZXJzZVJlZiIsIl9zZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInRhcmdldExhbmd1YWdlIiwiY3VycmVudEluZGV4Iiwic2F2ZWQiLCJnZXRDaGFuZ2VzIiwiY2xlYXJDaGFuZ2VzIiwiX3Vuc2F2ZWRDaGFuZ2VzTGlzdCIsImhhc093blByb3BlcnR5IiwiX2hhdmVVbnNhdmVkQ2hhbmdlcyIsIk9iamVjdCIsImtleXMiLCJmaW5kUmVmSW5BcnJheSIsImZpbmRJdGVtIiwiY2h1bmtzIiwicmVmTGVuIiwiaW5kZXgiLCJmaW5kSW5kZXgiLCJjaHVuayIsImlkeCIsIm5leHRDaGFyIiwiZ2V0Qm9va05hbWUiLCJib29rQ2FwcyIsInRvVXBwZXJDYXNlIiwiZmlsZXBhdGgiLCJjb250ZW50IiwiY29uZmlnIiwidG9rZW4iLCJ0aW1lb3V0Iiwic2VydmVyVGltZU91dCIsImF1dGhvciIsImJyYW5jaCIsIm9uU2F2ZUVkaXQiLCJfc2F2ZUVkaXQiLCJ0aGVuIiwic3VjY2VzcyIsInVuc2F2ZWRDYXJkSW5kaWNlcyIsImNhcmRJbmRleCIsImluZm8iLCJyZWxvYWRSZXNvdXJjZSIsIm1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbSIsImJpYmxlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJuZXdVc2ZtIiwiY2hhcHRlckNodW5rcyIsInNwbGl0IiwiY2hhcHRlckluZGV4IiwiY3VycmVudENoYXB0ZXIiLCJ2ZXJzZUNodW5rcyIsInZlcnNlSW5kZXgiLCJuZXdWZXJzZVVzZm0iLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwib2xkVmVyc2UiLCJ2ZXJzZU51bUxlbiIsIm5ld0NoYXB0ZXIiLCJqb2luIiwiZ2V0UmVzcG9uc2VEYXRhIiwibWVyZ2VGYWlsIiwicGFyc2VJbnQiLCJuZXdCb29rSnNvbiIsIm5ld1ZlcnNlVGV4dCIsInRhcmdldFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlT2JqZWN0cyIsInVwZGF0ZVZlcnNlIiwidG9VU0ZNIiwiZm9yY2VkTmV3TGluZXMiLCJfdmVyc2UiLCJpbmNsdWRlcyIsIm5lZWRUb01lcmdlRnJvbU1hc3RlciIsIm1lcmdlTmVlZGVkIiwibWVyZ2VGcm9tTWFzdGVySGFzQ29uZmxpY3RzIiwiY29uZmxpY3QiLCJtZXJnZVRvTWFzdGVySGFzQ29uZmxpY3RzIiwibWVyZ2VGcm9tTWFzdGVyVGl0bGUiLCJtZXJnZUZyb21NYXN0ZXJDb2xvciIsIm1lcmdlVG9NYXN0ZXJUaXRsZSIsIm1lcmdlVG9NYXN0ZXJDb2xvciIsInJlbmRlcmVkU2NyaXB0dXJlUGFuZXMiLCJtYXAiLCJfY3VycmVudFZlcnNlRGF0YSIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJfcmVmZXJlbmNlIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWciLCJvblJlbmRlclRvb2xiYXIiLCJuZXdJdGVtcyIsInB1c2giLCJtYXJnaW4iLCJjdXJzb3IiLCJwcm9wVHlwZXMiLCJzdHJpbmciLCJmdW5jIiwiaXNSZXF1aXJlZCIsIm51bWJlciIsInNoYXBlIiwib25lT2ZUeXBlIiwiYm9vbCIsIm9iamVjdCIsImFueSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPLEtBQUtDLFNBQVosTUFBMkIsWUFBM0I7QUFDQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUFTQyxPQUFULFFBQXdCLHFCQUF4QjtBQUNBLFNBQVNDLFFBQVQsRUFBbUJDLGdCQUFuQixRQUEyQyxnQkFBM0M7QUFDQSxTQUFTQyxPQUFULFFBQXdCLGdCQUF4QjtBQUNBLFNBQVNDLFVBQVQsUUFBMkIsZUFBM0I7QUFDQSxTQUNFQyxJQURGLEVBRUVDLFlBRkYsRUFHRUMsYUFIRixFQUlFQyxXQUpGLEVBS0VDLHlCQUxGLFFBTU8sdUJBTlA7QUFPQSxTQUFTQyxnQkFBVCxFQUEyQkMseUJBQTNCLFFBQTRELGtCQUE1RDtBQUNBLE9BQU8sS0FBS0MsT0FBWixNQUF5QixZQUF6QjtBQUNBLFNBQVNDLGFBQVQsRUFBd0JDLGlCQUF4QixRQUFpRCxJQUFqRDtBQUNBLFNBQVNDLG9CQUFULFFBQXFDLGtDQUFyQztBQUNBLFNBQ0VDLGVBREYsRUFFRUMsa0JBRkYsRUFHRUMsMkJBSEYsRUFJRUMsZUFKRixRQUtPLCtCQUxQO0FBTUEs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RSxTQUFTLENBQUNvUTtBQXhFUixDQUExQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0ICogYXMgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnXG5pbXBvcnQgeyBjb3JlIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgdXNmbWpzIGZyb20gJ3VzZm0tanMnXG5pbXBvcnQgeyB1c2VFZGl0IH0gZnJvbSAnZ2l0ZWEtcmVhY3QtdG9vbGtpdCdcbmltcG9ydCB7IE1kVXBkYXRlLCBNZFVwZGF0ZURpc2FibGVkIH0gZnJvbSAncmVhY3QtaWNvbnMvbWQnXG5pbXBvcnQgeyBGaVNoYXJlIH0gZnJvbSAncmVhY3QtaWNvbnMvZmknXG5pbXBvcnQgeyBJY29uQnV0dG9uIH0gZnJvbSAnQG11aS9tYXRlcmlhbCdcbmltcG9ydCB7XG4gIENhcmQsXG4gIHVzZUNhcmRTdGF0ZSxcbiAgdXNlVXNlckJyYW5jaCxcbiAgRVJST1JfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7IEFsaWdubWVudEhlbHBlcnMsIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMgfSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHsgU2NyaXB0dXJlUGFuZSwgU2NyaXB0dXJlU2VsZWN0b3IgfSBmcm9tICcuLidcbmltcG9ydCB7IHVzZVNjcmlwdHVyZVNldHRpbmdzIH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQge1xuICBnZXRSZXNvdXJjZUxpbmssXG4gIGdldFJlc291cmNlTWVzc2FnZSxcbiAgZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzLFxuICBpc09yaWdpbmFsQmlibGUsXG59IGZyb20gJy4uLy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHsgVGl0bGUgfSBmcm9tICcuLi9TY3JpcHR1cmVQYW5lL3N0eWxlZCdcbmltcG9ydCB7XG4gIE5UX09SSUdfTEFORyxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG59IGZyb20gJy4uLy4uL3V0aWxzJ1xuXG5jb25zdCBLRVlfRk9OVF9TSVpFX0JBU0UgPSAnc2NyaXB0dXJlUGFuZUZvbnRTaXplXydcbmNvbnN0IGxhYmVsID0gJ1ZlcnNpb24nXG5jb25zdCBzdHlsZSA9IHsgbWFyZ2luVG9wOiAnMTZweCcsIHdpZHRoOiAnNTAwcHgnIH1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU2NyaXB0dXJlQ2FyZCh7XG4gIGlkLFxuICBpc05ULFxuICB0aXRsZSxcbiAgc2VydmVyLFxuICBhcHBSZWYsXG4gIGNhcmROdW0sXG4gIGNsYXNzZXMsXG4gIHJlc291cmNlOiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgfSxcbiAgZ2V0TGFuZ3VhZ2UsXG4gIHJlZmVyZW5jZToge1xuICAgIHZlcnNlLFxuICAgIGNoYXB0ZXIsXG4gICAgcHJvamVjdElkOiBib29rSWQsXG4gIH0sXG4gIHJlc291cmNlTGluayxcbiAgdXNlVXNlckxvY2FsU3RvcmFnZSxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvblJlc291cmNlRXJyb3IsXG4gIGh0dHBDb25maWcsXG4gIGdyZWVrUmVwb1VybCxcbiAgaGVicmV3UmVwb1VybCxcbiAgZ2V0TGV4aWNvbkRhdGEsXG4gIGZldGNoR2xvc3Nlc0ZvclZlcnNlLFxuICB0cmFuc2xhdGUsXG4gIG9uTWluaW1pemUsXG4gIGxvZ2dlZEluVXNlcixcbiAgYXV0aGVudGljYXRpb24sXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgYm9va0luZGV4LFxuICBhZGRWZXJzZVJhbmdlLFxuICBzZXRXb3JkQWxpZ25lclN0YXR1cyxcbn0pIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGhhdmVVbnNhdmVkQ2hhbmdlczogZmFsc2UsXG4gICAgcmVmOiBhcHBSZWYsXG4gICAgc2F2ZUNsaWNrZWQ6IGZhbHNlLFxuICAgIHNhdmVDb250ZW50OiBudWxsLFxuICAgIHNoYTogbnVsbCxcbiAgICBzdGFydFNhdmU6IGZhbHNlLFxuICAgIHVybEVycm9yOiBudWxsLFxuICAgIHVzaW5nVXNlckJyYW5jaDogZmFsc2UsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0OiB7fSxcbiAgICB2ZXJzZXNGb3JSZWY6IG51bGwsXG4gIH0pXG4gIGNvbnN0IHtcbiAgICByZWYsXG4gICAgc2F2ZUNsaWNrZWQsXG4gICAgc2F2ZUNvbnRlbnQsXG4gICAgc2hhLFxuICAgIHN0YXJ0U2F2ZSxcbiAgICB1cmxFcnJvcixcbiAgICB1c2luZ1VzZXJCcmFuY2gsXG4gICAgdW5zYXZlZENoYW5nZXNMaXN0LFxuICAgIGhhdmVVbnNhdmVkQ2hhbmdlcyxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuXG4gIGNvbnN0IFtmb250U2l6ZSwgc2V0Rm9udFNpemVdID0gdXNlVXNlckxvY2FsU3RvcmFnZShLRVlfRk9OVF9TSVpFX0JBU0UgKyBjYXJkTnVtLCAxMDApXG4gIGNvbnN0IGlzTlRfID0gaXNOVChib29rSWQpXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBpZiAodXNpbmdVc2VyQnJhbmNoKSB7XG4gICAgaHR0cENvbmZpZyA9IHsgLi4uaHR0cENvbmZpZywgY2FjaGU6IHsgbWF4QWdlOiAwIH0gfSAvLyBkaXNhYmxlIGh0dHAgY2FjaGluZ1xuICB9XG5cbiAgY29uc3Qge1xuICAgIGlzTmV3VGVzdGFtZW50LFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzZXRTY3JpcHR1cmUsXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QsXG4gIH0gPSB1c2VTY3JpcHR1cmVTZXR0aW5ncyh7XG4gICAgaXNOVCxcbiAgICB0aXRsZSxcbiAgICB2ZXJzZSxcbiAgICBvd25lcixcbiAgICBib29rSWQsXG4gICAgYXBwUmVmOiByZWYsXG4gICAgc2VydmVyLFxuICAgIGNhcmROdW0sXG4gICAgY2hhcHRlcixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgcmVzb3VyY2VMaW5rLFxuICAgIHVzZVVzZXJMb2NhbFN0b3JhZ2UsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICBzZXRVcmxFcnJvcjogKGVycm9yKSA9PiBzZXRTdGF0ZSh7IHVybEVycm9yOiBlcnJvciB9KSxcbiAgICBodHRwQ29uZmlnLFxuICAgIGdyZWVrUmVwb1VybCxcbiAgICBoZWJyZXdSZXBvVXJsLFxuICAgIHdob2xlQm9vazogdHJ1ZSxcbiAgfSlcblxuICBjb25zdCBmZXRjaFJlc3BfID0gc2NyaXB0dXJlQ29uZmlnPy5mZXRjaFJlc3BvbnNlXG4gIC8vIEB0cy1pZ25vcmVcbiAgY29uc3QgcmVwbyA9IGAke3NjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWR9XyR7c2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZT8ucHJvamVjdElkfWBcbiAgY29uc3QgcmVmZXJlbmNlXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVmZXJlbmNlIHx8IG51bGxcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBnZXQgdGhlIF9zaGEgZnJvbSBsYXN0IHNjcmlwdHVyZSBkb3dubG9hZFxuICAgIGNvbnN0IF9zaGEgPSBmZXRjaFJlc3BfPy5kYXRhPy5zaGEgfHwgbnVsbFxuICAgIGNvbnNvbGUubG9nKGBmb3IgJHtKU09OLnN0cmluZ2lmeShyZWZlcmVuY2VfKX0gbmV3IHNoYSBpcyAke19zaGF9YClcblxuICAgIGlmIChfc2hhICE9PSBzaGEpIHtcbiAgICAgIHNldFN0YXRlKHsgc2hhOiBfc2hhIH0pXG4gICAgfVxuICB9LCBbZmV0Y2hSZXNwX10pXG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjYXJkUmVzb3VyY2VJZCA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/LnByb2plY3RJZCB8fCByZXNvdXJjZUlkXG4gIC8vIEB0cy1pZ25vcmVcbiAgbGV0IHJlZl8gPSBzY3JpcHR1cmVDb25maWc/LnJlc291cmNlPy5yZWYgfHwgYXBwUmVmXG4gIGNvbnN0IGNhblVzZUVkaXRCcmFuY2ggPSBsb2dnZWRJblVzZXIgJiYgYXV0aGVudGljYXRpb24gJiZcbiAgICAocmVzb3VyY2VJZCAhPT0gT1JJR0lOQUxfU09VUkNFKSAmJlxuICAgICgocmVmXyA9PT0gJ21hc3RlcicpIHx8IChyZWZfLnN1YnN0cmluZygwLCBsb2dnZWRJblVzZXIubGVuZ3RoKSA9PT0gbG9nZ2VkSW5Vc2VyKSApIC8vIG5vdCB0YWdcblxuICBjb25zdCB7XG4gICAgc3RhdGU6IHtcbiAgICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbiAgICAgIHVzaW5nVXNlckJyYW5jaDogdXNpbmdVc2VyQnJhbmNoXyxcbiAgICAgIG1lcmdlRnJvbU1hc3RlcixcbiAgICAgIG1lcmdlVG9NYXN0ZXIsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzdGFydEVkaXQ6IHN0YXJ0RWRpdEJyYW5jaCxcbiAgICAgIG1lcmdlRnJvbU1hc3RlckludG9Vc2VyQnJhbmNoLFxuICAgICAgbWVyZ2VUb01hc3RlckZyb21Vc2VyQnJhbmNoLFxuICAgIH0sXG4gIH0gPSB1c2VVc2VyQnJhbmNoKHtcbiAgICBvd25lcixcbiAgICBzZXJ2ZXIsXG4gICAgYXBwUmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgY2FyZElkOiBpZCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGNhcmRSZXNvdXJjZUlkLFxuICAgIG9uUmVzb3VyY2VFcnJvcixcbiAgICB1c2VVc2VyTG9jYWxTdG9yYWdlLFxuICB9KVxuXG4gIGNvbnN0IHdvcmtpbmdSZWYgPSBjYW5Vc2VFZGl0QnJhbmNoID8gd29ya2luZ1Jlc291cmNlQnJhbmNoIDogYXBwUmVmXG4gIGxldCBzY3JpcHR1cmVUaXRsZVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNlbGVjdCBjb3JyZWN0IHdvcmtpbmcgcmVmIC0gY291bGQgYmUgbWFzdGVyLCB1c2VyIGJyYW5jaCwgb3IgcmVsZWFzZVxuICAgIGlmICh1c2luZ1VzZXJCcmFuY2hfICE9PSB1c2luZ1VzZXJCcmFuY2gpIHtcbiAgICAgIHNldFN0YXRlKHsgdXNpbmdVc2VyQnJhbmNoOiB1c2luZ1VzZXJCcmFuY2hfIH0pXG4gICAgfVxuICB9LCBbdXNpbmdVc2VyQnJhbmNoXywgdXNpbmdVc2VyQnJhbmNoXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZWxlY3QgY29ycmVjdCB3b3JraW5nIHJlZiAtIGNvdWxkIGJlIG1hc3RlciwgdXNlciBicmFuY2gsIG9yIHJlbGVhc2VcbiAgICBsZXQgd29ya2luZ1JlZl8gPSB3b3JraW5nUmVmIHx8IGFwcFJlZlxuXG4gICAgaWYgKHJlZiAhPT0gd29ya2luZ1JlZl8pIHtcbiAgICAgIHNldFN0YXRlKHsgcmVmOiB3b3JraW5nUmVmXyB9KVxuICAgIH1cbiAgfSwgW3dvcmtpbmdSZWYsIHJlZiwgYXBwUmVmXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgZGlzcGxheSBzdGF0dXMgaWYgZXJyb3JcbiAgICBjb25zdCBlcnJvciA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2VTdGF0dXM/LltFUlJPUl9TVEFURV1cblxuICAgIGlmIChlcnJvcikgeyAvLyBpZiBlcnJvciB3YXMgZm91bmQgZG8gY2FsbGJhY2tcbiAgICAgIGNvbnN0IHJlc291cmNlU3RhdHVzID0gc2NyaXB0dXJlQ29uZmlnPy5yZXNvdXJjZVN0YXR1c1xuICAgICAgY29uc3QgcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZUNvbmZpZylcbiAgICAgIGNvbnN0IG1lc3NhZ2UgPSBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXMsIHNlcnZlciwgcmVzb3VyY2VMaW5rLCBpc05UXylcbiAgICAgIGNvbnN0IGlzQWNjZXNzRXJyb3IgPSByZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXVxuICAgICAgb25SZXNvdXJjZUVycm9yICYmIG9uUmVzb3VyY2VFcnJvcihtZXNzYWdlLCBpc0FjY2Vzc0Vycm9yLCByZXNvdXJjZVN0YXR1cylcbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnJlc291cmNlU3RhdHVzPy5bRVJST1JfU1RBVEVdXSlcblxuICBpZiAoc2NyaXB0dXJlQ29uZmlnLnRpdGxlICYmIHNjcmlwdHVyZUNvbmZpZy52ZXJzaW9uKSB7XG4gICAgc2NyaXB0dXJlVGl0bGUgPSBgJHtzY3JpcHR1cmVDb25maWcudGl0bGV9IHYke3NjcmlwdHVyZUNvbmZpZy52ZXJzaW9ufWBcbiAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdC51cGRhdGVUaXRsZShzY3JpcHR1cmVDb25maWcucmVzb3VyY2VMaW5rLCBzY3JpcHR1cmVUaXRsZSlcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHR1cmVUaXRsZSA9IGBUaXRsZSBtaXNzaW5nIGZyb20gcHJvamVjdCBtYW5pZmVzdGBcbiAgfVxuXG4gIC8qKiBEeW5hbWljYWxseSBjcmVhdGVzIHRoZSBzY3JpcHR1cmUgc2VsZWN0aW9uIGRyb3Bkb3duIHRvIGJlIGluc2VydGVkIGludG8gY2FyZCBzZXR0aW5ncyAqL1xuICBmdW5jdGlvbiBnZXRTY3JpcHR1cmVTZWxlY3RvcigpIHtcbiAgICBjb25zdCBzY3JpcHR1cmVTZWxlY3Rpb25Db25maWcgPSBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICAgICAgbGFiZWwsXG4gICAgICByZXNvdXJjZUxpbms6IHNjcmlwdHVyZUNvbmZpZy5yZXNvdXJjZUxpbmssXG4gICAgICBzZXRTY3JpcHR1cmUsXG4gICAgICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbiAgICB9KVxuXG4gICAgcmV0dXJuIDxTY3JpcHR1cmVTZWxlY3RvciB7Li4uc2NyaXB0dXJlU2VsZWN0aW9uQ29uZmlnfSBzdHlsZT17c3R5bGV9IGVycm9yTWVzc2FnZT17dXJsRXJyb3J9IC8+XG4gIH1cblxuICBmdW5jdGlvbiBvbk1lbnVDbG9zZSgpIHtcbiAgICAvLyBjb25zb2xlLmxvZyhgb25NZW51Q2xvc2UoKWApXG4gICAgc2V0U3RhdGUoeyB1cmxFcnJvcjogbnVsbCB9KVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBsYW5ndWFnZUlkXyA9IHNjcmlwdHVyZUNvbmZpZz8ucmVzb3VyY2U/Lmxhbmd1YWdlSWRcbiAgY29uc3QgbGFuZ3VhZ2UgPSBnZXRMYW5ndWFnZSh7IGxhbmd1YWdlSWQ6IGxhbmd1YWdlSWRfIH0pXG4gIGNvbnN0IGRpcmVjdGlvbiA9IChsYW5ndWFnZT8uZGlyZWN0aW9uKSB8fCAnbHRyJ1xuICBjb25zdCByZWZlcmVuY2UgPSB7IC4uLnNjcmlwdHVyZUNvbmZpZy5yZWZlcmVuY2UgfVxuXG4gIGNvbnN0IGlzSGVicmV3ID0gKGxhbmd1YWdlSWRfID09PSAnaGJvJylcbiAgY29uc3QgZm9udEZhY3RvciA9IGlzSGVicmV3ID8gMS40IDogMSAvLyB3ZSBhdXRvbWF0aWNhbGx5IHNjYWxlIHVwIGZvbnQgc2l6ZSBmb3IgSGVicmV3XG4gIGNvbnN0IHNjYWxlZEZvbnRTaXplID0gZm9udFNpemUgKiBmb250RmFjdG9yXG5cbiAgY29uc3QgaXRlbXMgPSBudWxsXG4gIGNvbnN0IHtcbiAgICBzdGF0ZToge1xuICAgICAgaGVhZGVycywgZmlsdGVycywgaXRlbUluZGV4LCBtYXJrZG93blZpZXcsXG4gICAgfSxcbiAgICBhY3Rpb25zOiB7XG4gICAgICBzZXRGaWx0ZXJzLCBzZXRJdGVtSW5kZXgsIHNldE1hcmtkb3duVmlldyxcbiAgICB9LFxuICB9ID0gdXNlQ2FyZFN0YXRlKHsgaXRlbXMgfSlcblxuICBjb25zdCByZWZTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7TWF0aC5yb3VuZChzY2FsZWRGb250U2l6ZSAqIDAuOSl9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IGNvbnRlbnRTdHlsZSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gKHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogYCR7c2NhbGVkRm9udFNpemV9JWAsXG4gIH0pLCBbc2NhbGVkRm9udFNpemVdKVxuXG4gIGNvbnN0IHNjcmlwdHVyZUxhYmVsID0gPFRpdGxlPntzY3JpcHR1cmVUaXRsZX08L1RpdGxlPlxuICBsZXQgZGlzYWJsZVdvcmRQb3BvdmVyXyA9IGRpc2FibGVXb3JkUG9wb3ZlclxuICBjb25zdCB1c2luZ09yaWdpbmFsQmlibGUgPSBpc09yaWdpbmFsQmlibGUoc2NyaXB0dXJlQ29uZmlnWydyZXNvdXJjZSddPy5wcm9qZWN0SWQpXG5cbiAgaWYgKGRpc2FibGVXb3JkUG9wb3ZlciA9PT0gdW5kZWZpbmVkKSB7IC8vIGlmIG5vdCBzcGVjaWZpZWQsIHRoZW4gZGV0ZXJtaW5lIGlmIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyXyA9ICF1c2luZ09yaWdpbmFsQmlibGVcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHByZS1jYWNoZSBnbG9zc2VzIG9uIHZlcnNlIGNoYW5nZVxuICAgIGNvbnN0IGZldGNoR2xvc3NEYXRhRm9yVmVyc2UgPSBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgdmVyc2VPYmplY3RzID0gW11cblxuICAgICAgLy8gZ2V0IHZlcnNlIG9iamVjdHMgb2YgYWxsIHRoZSB2ZXJzZXNcbiAgICAgIGZvciAoY29uc3QgdmVyc2VSZWYgb2Ygc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWYgfHwgW10pIHtcbiAgICAgICAgY29uc3QgX3ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuICAgICAgICB2ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHMuY29uY2F0KF92ZXJzZU9iamVjdHMpXG4gICAgICB9XG5cbiAgICAgIGlmICghZGlzYWJsZVdvcmRQb3BvdmVyICYmIHZlcnNlT2JqZWN0cz8ubGVuZ3RoICYmIGZldGNoR2xvc3Nlc0ZvclZlcnNlKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hd2FpdC1pbi1sb29wXG4gICAgICAgIGF3YWl0IGZldGNoR2xvc3Nlc0ZvclZlcnNlKHZlcnNlT2JqZWN0cywgbGFuZ3VhZ2VJZF8pXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHVzaW5nT3JpZ2luYWxCaWJsZSkge1xuICAgICAgZmV0Y2hHbG9zc0RhdGFGb3JWZXJzZSgpXG4gICAgfVxuICB9LCBbIHZlcnNlc0ZvclJlZiwgbGFuZ3VhZ2VJZF8gXSlcblxuICBjb25zdCBlbmFibGVFZGl0ID0gIXVzaW5nT3JpZ2luYWxCaWJsZVxuICBjb25zdCBlbmFibGVBbGlnbm1lbnQgPSAhdXNpbmdPcmlnaW5hbEJpYmxlXG4gIGNvbnN0IG9yaWdpbmFsUmVwb1VybCA9IGlzTmV3VGVzdGFtZW50ID8gZ3JlZWtSZXBvVXJsIDogaGVicmV3UmVwb1VybFxuICBjb25zdCBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgIGF1dGhlbnRpY2F0aW9uOiBjYW5Vc2VFZGl0QnJhbmNoID8gYXV0aGVudGljYXRpb24gOiBudWxsLFxuICAgIGJvb2tJbmRleCxcbiAgICBjdXJyZW50VmVyc2VSZWY6IHJlZmVyZW5jZSxcbiAgICBlbmFibGVFZGl0LFxuICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICBodHRwQ29uZmlnLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpc05ld1Rlc3RhbWVudCxcbiAgICBsb2dnZWRJblVzZXI6IGNhblVzZUVkaXRCcmFuY2ggPyBsb2dnZWRJblVzZXIgOiBudWxsLFxuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgb3JpZ2luYWxSZXBvVXJsLFxuICAgIHNjcmlwdHVyZUNvbmZpZyxcbiAgICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgICBzdGFydEVkaXRCcmFuY2gsXG4gICAgc2V0U2F2ZWRDaGFuZ2VzOiBfc2V0U2F2ZWRDaGFuZ2VzLFxuICAgIHNvdXJjZUxhbmd1YWdlOiBpc05UXyA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFORyxcbiAgICB0YXJnZXRMYW5ndWFnZTogbGFuZ3VhZ2UsXG4gICAgdGl0bGU6IHNjcmlwdHVyZVRpdGxlLFxuICAgIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogcmVmLFxuICB9XG5cbiAgLyoqXG4gICAqIHRoaXMgZ2V0cyBjYWxsZWQgd2hlbmV2ZXIgYSBzY3JpcHR1cmUgcGFuZSBoYXMgYSBjaGFuZ2UgaW4gc2F2ZSBzdGF0ZVxuICAgKiBAcGFyYW0ge251bWJlcn0gY3VycmVudEluZGV4XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2F2ZWRcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gZ2V0Q2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHVzZXIgY2xpY2tzIHNhdmUgYnV0dG9uXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNsZWFyQ2hhbmdlcyAtIHdpbGwgYmUgY2FsbGVkIHdoZW5ldmVyIHNhdmUgaGFzIGNvbXBsZXRlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gc3RhdGUgLSBjdXJyZW50IHN0YXRlIG9mIHdvcmQgYWxpZ25tZW50L2VkaXRcbiAgICovXG4gIGZ1bmN0aW9uIF9zZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCBzYXZlZCwgeyBnZXRDaGFuZ2VzID0gbnVsbCwgY2xlYXJDaGFuZ2VzID0gbnVsbCwgc3RhdGUgPSBudWxsIH0pIHtcbiAgICBjb25zdCBfdW5zYXZlZENoYW5nZXNMaXN0ID0geyAuLi51bnNhdmVkQ2hhbmdlc0xpc3QgfVxuXG4gICAgaWYgKHNhdmVkKSB7XG4gICAgICBpZiAoX3Vuc2F2ZWRDaGFuZ2VzTGlzdC5oYXNPd25Qcm9wZXJ0eShjdXJyZW50SW5kZXgpKSB7XG4gICAgICAgIGRlbGV0ZSBfdW5zYXZlZENoYW5nZXNMaXN0W2N1cnJlbnRJbmRleF1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgX3Vuc2F2ZWRDaGFuZ2VzTGlzdFtjdXJyZW50SW5kZXhdID0geyBnZXRDaGFuZ2VzLCBjbGVhckNoYW5nZXMsIHN0YXRlIH0gLy8gdXBkYXRlIHdpdGggbGF0ZXN0XG4gICAgfVxuXG4gICAgY29uc3QgX2hhdmVVbnNhdmVkQ2hhbmdlcyA9ICEhT2JqZWN0LmtleXMoX3Vuc2F2ZWRDaGFuZ2VzTGlzdCkubGVuZ3RoXG5cbiAgICBpZiAoaGF2ZVVuc2F2ZWRDaGFuZ2VzICE9IF9oYXZlVW5zYXZlZENoYW5nZXMpIHtcbiAgICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMocmVzb3VyY2VJZCwgIV9oYXZlVW5zYXZlZENoYW5nZXMpXG4gICAgICBzZXRTdGF0ZSh7IGhhdmVVbnNhdmVkQ2hhbmdlczogX2hhdmVVbnNhdmVkQ2hhbmdlcyB9KVxuICAgIH1cblxuICAgIGlmICghaXNFcXVhbChfdW5zYXZlZENoYW5nZXNMaXN0LCB1bnNhdmVkQ2hhbmdlc0xpc3QpKSB7XG4gICAgICBzZXRTdGF0ZSh7IHVuc2F2ZWRDaGFuZ2VzTGlzdDogX3Vuc2F2ZWRDaGFuZ2VzTGlzdCB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBzZWFyY2ggY2hhcHRlciBvciB2ZXJzZSBjaHVuayB0byBsaW5lIHRoYXQgc3RhcnRzIHdpdGggZmluZEl0ZW1cbiAgICogQHBhcmFtIHtudW1iZXJ8c3RyaW5nfSBmaW5kSXRlbVxuICAgKiBAcGFyYW0ge3N0cmluZ1tdfSBjaHVua3NcbiAgICovXG4gIGZ1bmN0aW9uIGZpbmRSZWZJbkFycmF5KGZpbmRJdGVtLCBjaHVua3MpIHtcbiAgICBjb25zdCByZWZfID0gZmluZEl0ZW0gKyAnJ1xuICAgIGNvbnN0IHJlZkxlbiA9IHJlZl8ubGVuZ3RoXG4gICAgY29uc3QgaW5kZXggPSBjaHVua3MuZmluZEluZGV4KChjaHVuaywgaWR4KSA9PiB7XG4gICAgICBpZiAoaWR4ID4gMCkge1xuICAgICAgICBpZiAoY2h1bmsuc3Vic3RyaW5nKDAsIHJlZkxlbikgPT09IHJlZl8pIHtcbiAgICAgICAgICBjb25zdCBuZXh0Q2hhciA9IGNodW5rW3JlZkxlbl1cblxuICAgICAgICAgIGlmICgobmV4dENoYXIgPiAnOScpIHx8IChuZXh0Q2hhciA8ICcwJykpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlXG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9KVxuICAgIHJldHVybiBpbmRleFxuICB9XG5cbiAgZnVuY3Rpb24gZ2V0Qm9va05hbWUoKSB7XG4gICAgY29uc3QgYm9va0NhcHMgPSBzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8ucHJvamVjdElkID8gc2NyaXB0dXJlQ29uZmlnLnJlZmVyZW5jZS5wcm9qZWN0SWQudG9VcHBlckNhc2UoKSA6ICcnXG4gICAgcmV0dXJuIGAke2Jvb2tJbmRleH0tJHtib29rQ2Fwc30udXNmbWBcbiAgfVxuXG4gIGNvbnN0IGZpbGVwYXRoID0gZ2V0Qm9va05hbWUoKVxuXG4gIC8vIGtlZXAgdHJhY2sgb2YgdmVyc2UgZWRpdCBzdGF0ZVxuICBjb25zdCB7IG9uU2F2ZUVkaXQgfSA9IHVzZUVkaXQoe1xuICAgIHNoYSxcbiAgICBvd25lcixcbiAgICBjb250ZW50OiBzYXZlQ29udGVudCxcbiAgICBjb25maWc6IHtcbiAgICAgIGNhY2hlOiB7IG1heEFnZTogMCB9LFxuICAgICAgLi4uYXV0aGVudGljYXRpb24/LmNvbmZpZyxcbiAgICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB0aW1lb3V0OiBodHRwQ29uZmlnPy5zZXJ2ZXJUaW1lT3V0IHx8IGh0dHBDb25maWc/LnRpbWVvdXQgfHwgNTAwMCxcbiAgICB9LFxuICAgIGF1dGhvcjogbG9nZ2VkSW5Vc2VyLFxuICAgIHRva2VuOiBhdXRoZW50aWNhdGlvbj8udG9rZW4sXG4gICAgYnJhbmNoOiB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG4gICAgZmlsZXBhdGgsXG4gICAgcmVwbyxcbiAgfSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB3aGVuIHN0YXJ0U2F2ZSBnb2VzIHRydWUsIHNhdmUgZWRpdHMgdG8gdXNlciBicmFuY2ggYW5kIHRoZW4gY2xlYXIgc3RhcnRTYXZlXG4gICAgY29uc3QgX3NhdmVFZGl0ID0gYXN5bmMgKCkgPT4geyAvLyBiZWdpbiB1cGxvYWRpbmcgbmV3IFVTRk1cbiAgICAgIGxldCBicmFuY2ggPSAod29ya2luZ1Jlc291cmNlQnJhbmNoICE9PSAnbWFzdGVyJykgPyB3b3JraW5nUmVzb3VyY2VCcmFuY2ggOiB1bmRlZmluZWRcblxuICAgICAgaWYgKCFicmFuY2gpIHtcbiAgICAgICAgYnJhbmNoID0gYXdhaXQgc3RhcnRFZGl0QnJhbmNoKCkgLy8gbWFrZSBzdXJlIHVzZXIgYnJhbmNoIGV4aXN0cyBhbmQgZ2V0IG5hbWVcbiAgICAgIH1cblxuICAgICAgYXdhaXQgb25TYXZlRWRpdChicmFuY2gpLnRoZW4oKHN1Y2Nlc3MpID0+IHsgLy8gcHVzaCBjaGFuZ2VkIHRvIHNlcnZlclxuICAgICAgICBpZiAoc3VjY2Vzcykge1xuICAgICAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmUgc2NyaXB0dXJlIGVkaXRzIHN1Y2Nlc3NgKVxuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIHN0YXJ0U2F2ZTogZmFsc2UsXG4gICAgICAgICAgfSlcblxuICAgICAgICAgIGNvbnN0IHVuc2F2ZWRDYXJkSW5kaWNlcyA9IE9iamVjdC5rZXlzKHVuc2F2ZWRDaGFuZ2VzTGlzdClcblxuICAgICAgICAgIGlmICh1bnNhdmVkQ2FyZEluZGljZXM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgZm9yIChjb25zdCBjYXJkSW5kZXggb2YgdW5zYXZlZENhcmRJbmRpY2VzKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHsgY2xlYXJDaGFuZ2VzIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZEluZGV4XVxuICAgICAgICAgICAgICBjbGVhckNoYW5nZXMgJiYgY2xlYXJDaGFuZ2VzKClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb25zb2xlLmluZm8oJ3NhdmVDaGFuZ2VzVG9DbG91ZCgpIC0gUmVsb2FkaW5nIHJlc291cmNlJylcbiAgICAgICAgICBzY3JpcHR1cmVDb25maWc/LnJlbG9hZFJlc291cmNlKClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdzYXZlQ2hhbmdlc1RvQ2xvdWQoKSAtIHNhdmluZyBjaGFuZ2VkIHNjcmlwdHVyZSBmYWlsZWQnKVxuICAgICAgICAgIHNldFN0YXRlKHsgc3RhcnRTYXZlOiBmYWxzZSB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmIChzdGFydFNhdmUpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQ2hhbmdlc1RvQ2xvdWQgLSBjYWxsaW5nIF9zYXZlRWRpdCgpYClcbiAgICAgIF9zYXZlRWRpdCgpXG4gICAgfVxuICB9LCBbc3RhcnRTYXZlXSlcblxuICAvKipcbiAgICogY29udmVydCB1cGRhdGVkVmVyc2VPYmplY3RzIHRvIFVTRk0gYW5kIG1lcmdlIGludG8gdGhlIGJpYmxlVXNmbVxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtIC0gVVNGTSBvZiBiaWJsZVxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVmIC0gcmVmZXJlbmNlIG9mIHZlcnNlIHRvIG1lcmdlIGluXG4gICAqIEBwYXJhbSB7b2JqZWN0W119IHVwZGF0ZWRWZXJzZU9iamVjdHMgLSBuZXcgdmVyc2UgaW4gdmVyc2VPYmplY3QgZm9ybWF0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBjYXJkTnVtXG4gICAqL1xuICBmdW5jdGlvbiBtZXJnZVZlcnNlT2JqZWN0c0ludG9CaWJsZVVzZm0oYmlibGVVc2ZtLCByZWYsIHVwZGF0ZWRWZXJzZU9iamVjdHMsIGNhcmROdW06IG51bWJlcikge1xuICAgIGxldCBuZXdVc2ZtXG4gICAgY29uc3QgY2hhcHRlckNodW5rcyA9IGJpYmxlVXNmbT8uc3BsaXQoJ1xcXFxjICcpXG4gICAgY29uc3QgY2hhcHRlckluZGV4ID0gZmluZFJlZkluQXJyYXkocmVmPy5jaGFwdGVyLCBjaGFwdGVyQ2h1bmtzKVxuXG4gICAgaWYgKGNoYXB0ZXJJbmRleCA+PSAwKSB7XG4gICAgICBjb25zdCBjdXJyZW50Q2hhcHRlciA9IGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XVxuICAgICAgY29uc3QgdmVyc2VDaHVua3MgPSBjdXJyZW50Q2hhcHRlci5zcGxpdCgnXFxcXHYgJylcbiAgICAgIGNvbnN0IHZlcnNlSW5kZXggPSBmaW5kUmVmSW5BcnJheShyZWY/LnZlcnNlLCB2ZXJzZUNodW5rcylcblxuICAgICAgaWYgKHZlcnNlSW5kZXggPj0gMCkge1xuICAgICAgICBjb25zdCBuZXdWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0odXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgY29uc29sZS5sb2coYHNhdmVDaGFuZ2VzVG9DbG91ZCgke2NhcmROdW19KSAtIG5ldyBVU0ZNIGZvciBjYXJkOn0gLSAke25ld1ZlcnNlVXNmbS5zdWJzdHJpbmcoMCwgMTAwKX1gKVxuICAgICAgICBjb25zdCBvbGRWZXJzZSA9IHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdXG4gICAgICAgIGNvbnN0IHZlcnNlTnVtTGVuID0gKHJlZj8udmVyc2UgKyAnJykubGVuZ3RoXG4gICAgICAgIHZlcnNlQ2h1bmtzW3ZlcnNlSW5kZXhdID0gb2xkVmVyc2Uuc3Vic3RyaW5nKDAsIHZlcnNlTnVtTGVuICsgMSkgKyBuZXdWZXJzZVVzZm1cbiAgICAgICAgY29uc3QgbmV3Q2hhcHRlciA9IHZlcnNlQ2h1bmtzLmpvaW4oJ1xcXFx2ICcpXG4gICAgICAgIGNoYXB0ZXJDaHVua3NbY2hhcHRlckluZGV4XSA9IG5ld0NoYXB0ZXJcbiAgICAgICAgbmV3VXNmbSA9IGNoYXB0ZXJDaHVua3Muam9pbignXFxcXGMgJylcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ld1VzZm1cbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIGZvciBlYWNoIHVuc2F2ZWQgY2hhbmdlLCBjYWxsIGludG8gdmVyc2VQYW5lIHRvIGdldCBsYXRlc3QgY2hhbmdlcyBmb3IgdmVyc2UgdG8gc2F2ZVxuICAgIGlmIChzYXZlQ2xpY2tlZCkge1xuICAgICAgY29uc3QgdW5zYXZlZENhcmRJbmRpY2VzID0gT2JqZWN0LmtleXModW5zYXZlZENoYW5nZXNMaXN0KVxuXG4gICAgICBpZiAodW5zYXZlZENhcmRJbmRpY2VzPy5sZW5ndGgpIHtcbiAgICAgICAgbGV0IGJpYmxlVXNmbSA9IGNvcmUuZ2V0UmVzcG9uc2VEYXRhKHNjcmlwdHVyZUNvbmZpZz8uZmV0Y2hSZXNwb25zZSlcbiAgICAgICAgbGV0IG1lcmdlRmFpbCA9IGZhbHNlXG4gICAgICAgIGxldCBjYXJkTnVtID0gMFxuXG4gICAgICAgIGZvciAoY29uc3QgY2FyZEluZGV4IG9mIHVuc2F2ZWRDYXJkSW5kaWNlcykge1xuICAgICAgICAgIGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgY29uc3QgeyBnZXRDaGFuZ2VzLCBzdGF0ZSB9ID0gdW5zYXZlZENoYW5nZXNMaXN0W2NhcmROdW1dXG5cbiAgICAgICAgICBpZiAoZ2V0Q2hhbmdlcykge1xuICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgIGNvbnN0IHtcbiAgICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzICYmIGJpYmxlVXNmbSkgeyAvLyBqdXN0IHJlcGxhY2UgdmVyc2VcbiAgICAgICAgICAgICAgbmV3VXNmbSA9IG1lcmdlVmVyc2VPYmplY3RzSW50b0JpYmxlVXNmbShiaWJsZVVzZm0sIHJlZiwgdXBkYXRlZFZlcnNlT2JqZWN0cywgY2FyZE51bSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKG5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgYmlibGVVc2ZtID0gbmV3VXNmbVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgbWVyZ2VGYWlsID0gdHJ1ZVxuICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChtZXJnZUZhaWwpIHsgLy8gaWYgd2UgZmFpbGVkIHRvIG1lcmdlLCBmYWxsYmFjayB0byBicnV0ZSBmb3JjZSB2ZXJzZSBvYmplY3RzIHRvIFVTRk1cbiAgICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCR7Y2FyZE51bX0pIC0gdmVyc2Ugbm90IGZvdW5kLCBmYWxsaW5nIGJhY2sgdG8gaW5zZXJ0aW5nIHZlcnNlIG9iamVjdGApXG4gICAgICAgICAgbGV0IG5ld0Jvb2tKc29uXG5cbiAgICAgICAgICBmb3IgKGNvbnN0IGNhcmRJbmRleCBvZiB1bnNhdmVkQ2FyZEluZGljZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGNhcmROdW0gPSBwYXJzZUludChjYXJkSW5kZXgpXG4gICAgICAgICAgICBjb25zdCB7IGdldENoYW5nZXMsIHN0YXRlIH0gPSB1bnNhdmVkQ2hhbmdlc0xpc3RbY2FyZE51bV1cblxuICAgICAgICAgICAgaWYgKGdldENoYW5nZXMpIHtcbiAgICAgICAgICAgICAgbGV0IG5ld1VzZm1cbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgICAgICAgICByZWYsXG4gICAgICAgICAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgICAgICAgICAgfSA9IGdldENoYW5nZXMoc3RhdGUpXG5cbiAgICAgICAgICAgICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIW5ld1VzZm0pIHtcbiAgICAgICAgICAgICAgICBsZXQgdGFyZ2V0VmVyc2VPYmplY3RzXyA9IG51bGxcblxuICAgICAgICAgICAgICAgIGlmIChyZWYpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChuZXdWZXJzZVRleHQpIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UodXBkYXRlZFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdGFyZ2V0VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICB0YXJnZXRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgbmV3Qm9va0pzb24gPSB0YXJnZXRWZXJzZU9iamVjdHNfICYmIHNjcmlwdHVyZUNvbmZpZz8udXBkYXRlVmVyc2UocmVmLmNoYXB0ZXIsIHJlZi52ZXJzZSwgeyB2ZXJzZU9iamVjdHM6IHRhcmdldFZlcnNlT2JqZWN0c18gfSlcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBiaWJsZVVzZm0gPSB1c2ZtanMudG9VU0ZNKG5ld0Jvb2tKc29uLCB7IGZvcmNlZE5ld0xpbmVzOiB0cnVlIH0pXG4gICAgICAgIH1cblxuICAgICAgICBjb25zb2xlLmxvZyhgc2F2ZUNoYW5nZXNUb0Nsb3VkKCkgLSBzYXZpbmcgbmV3IFVTRk06ICR7YmlibGVVc2ZtLnN1YnN0cmluZygwLCAxMDApfS4uLmApXG4gICAgICAgIHNldFN0YXRlKHsgc2F2ZUNvbnRlbnQ6IGJpYmxlVXNmbSwgc3RhcnRTYXZlOiB0cnVlLCBzYXZlQ2xpY2tlZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzYXZlQ2xpY2tlZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRXF1YWwodmVyc2VzRm9yUmVmLCBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZikpIHtcbiAgICAgIGNvbnN0IHZlcnNlc0ZvclJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmXG4gICAgICBzZXRTdGF0ZSh7IHZlcnNlc0ZvclJlZiB9KVxuXG4gICAgICBmb3IgKGNvbnN0IHZlcnNlUmVmIG9mIHZlcnNlc0ZvclJlZiB8fCBbXSkge1xuICAgICAgICAvLyBjaGVjayBmb3IgdmVyc2UgcmFuZ2VcbiAgICAgICAgY29uc3QgX3ZlcnNlID0gdmVyc2VSZWYudmVyc2VcblxuICAgICAgICBpZiAoYWRkVmVyc2VSYW5nZSAmJiAodHlwZW9mIF92ZXJzZSA9PT0gJ3N0cmluZycpKSB7XG4gICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgIGlmIChfdmVyc2UuaW5jbHVkZXMoJy0nKSkge1xuICAgICAgICAgICAgYWRkVmVyc2VSYW5nZShgJHtzY3JpcHR1cmVDb25maWc/LnJlZmVyZW5jZT8uY2hhcHRlcn06JHtfdmVyc2V9YClcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sIFtzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZl0pXG5cbiAgY29uc3QgbmVlZFRvTWVyZ2VGcm9tTWFzdGVyID0gbWVyZ2VGcm9tTWFzdGVyPy5tZXJnZU5lZWRlZFxuICBjb25zdCBtZXJnZUZyb21NYXN0ZXJIYXNDb25mbGljdHMgPSBtZXJnZUZyb21NYXN0ZXI/LmNvbmZsaWN0XG4gIGNvbnN0IG1lcmdlVG9NYXN0ZXJIYXNDb25mbGljdHMgPSBtZXJnZVRvTWFzdGVyPy5jb25mbGljdFxuXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1uZXN0ZWQtdGVybmFyeVxuICBjb25zdCBtZXJnZUZyb21NYXN0ZXJUaXRsZSA9IG1lcmdlRnJvbU1hc3Rlckhhc0NvbmZsaWN0cyA/ICdNZXJnZSBDb25mbGljdHMgZm9yIHVwZGF0ZSBmcm9tIG1hc3RlcicgOiAobmVlZFRvTWVyZ2VGcm9tTWFzdGVyID8gJ1VwZGF0ZSBmcm9tIG1hc3RlcicgOiAnTm8gbWVyZ2UgY29uZmxpY3RzIGZvciB1cGRhdGUgd2l0aCBtYXN0ZXInKVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbmVzdGVkLXRlcm5hcnlcbiAgY29uc3QgbWVyZ2VGcm9tTWFzdGVyQ29sb3IgPSBtZXJnZUZyb21NYXN0ZXJIYXNDb25mbGljdHMgPyAnYmxhY2snIDogKG5lZWRUb01lcmdlRnJvbU1hc3RlciA/ICdibGFjaycgOiAnbGlnaHRncmF5JylcbiAgY29uc3QgbWVyZ2VUb01hc3RlclRpdGxlID0gbWVyZ2VUb01hc3Rlckhhc0NvbmZsaWN0cyA/ICdNZXJnZSBDb25mbGljdHMgZm9yIHNoYXJlIHdpdGggbWFzdGVyJyA6ICdObyBtZXJnZSBjb25mbGljdHMgZm9yIHNoYXJlIHdpdGggbWFzdGVyJ1xuICBjb25zdCBtZXJnZVRvTWFzdGVyQ29sb3IgPSBtZXJnZVRvTWFzdGVySGFzQ29uZmxpY3RzID8gJ2JsYWNrJyA6ICdibGFjaydcblxuICBjb25zdCByZW5kZXJlZFNjcmlwdHVyZVBhbmVzID0gdmVyc2VzRm9yUmVmPy5tYXAoKF9jdXJyZW50VmVyc2VEYXRhLCBpbmRleCkgPT4ge1xuICAgIGNvbnN0IGluaXRpYWxWZXJzZU9iamVjdHMgPSBfY3VycmVudFZlcnNlRGF0YT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMgfHwgbnVsbFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7IGNoYXB0ZXIsIHZlcnNlIH0gPSBfY3VycmVudFZlcnNlRGF0YSB8fCB7fVxuICAgIGNvbnN0IF9yZWZlcmVuY2UgPSB7XG4gICAgICAuLi5yZWZlcmVuY2UsXG4gICAgICBjaGFwdGVyLFxuICAgICAgdmVyc2UsXG4gICAgfVxuICAgIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnID0ge1xuICAgICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICAgIGN1cnJlbnRJbmRleDogaW5kZXgsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgcmVmZXJlbmNlOiBfcmVmZXJlbmNlLFxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8U2NyaXB0dXJlUGFuZVxuICAgICAgICB7Li4uc2NyaXB0dXJlQ29uZmlnfVxuICAgICAgICBjb250ZW50U3R5bGU9e2NvbnRlbnRTdHlsZX1cbiAgICAgICAgY3VycmVudEluZGV4PXtpbmRleH1cbiAgICAgICAgZGlyZWN0aW9uPXtkaXJlY3Rpb259XG4gICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyX31cbiAgICAgICAgZm9udFNpemU9e2ZvbnRTaXplfVxuICAgICAgICBnZXRMZXhpY29uRGF0YT17Z2V0TGV4aWNvbkRhdGF9XG4gICAgICAgIGlzTlQ9e2lzTlRffVxuICAgICAgICBrZXk9e2luZGV4fVxuICAgICAgICByZWZTdHlsZT17cmVmU3R5bGV9XG4gICAgICAgIHJlZmVyZW5jZT17X3JlZmVyZW5jZX1cbiAgICAgICAgc2F2aW5nPXtzdGFydFNhdmV9XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZz17X3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWd9XG4gICAgICAgIHNldFdvcmRBbGlnbmVyU3RhdHVzPXtzZXRXb3JkQWxpZ25lclN0YXR1c31cbiAgICAgICAgc2VydmVyPXtzZXJ2ZXJ9XG4gICAgICAgIHRyYW5zbGF0ZT17dHJhbnNsYXRlfVxuICAgICAgLz5cbiAgICApXG4gIH0pXG5cbiAgY29uc3Qgb25SZW5kZXJUb29sYmFyID0gKHsgaXRlbXMgfSkgPT4ge1xuICAgIGNvbnN0IG5ld0l0ZW1zID0gWy4uLml0ZW1zXTtcbiAgICBpZiAobWVyZ2VGcm9tTWFzdGVyKSB7XG4gICAgICBuZXdJdGVtcy5wdXNoKFxuICAgICAgICA8SWNvbkJ1dHRvblxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5tYXJnaW59XG4gICAgICAgICAga2V5PSd1cGRhdGUtZnJvbS1tYXN0ZXInXG4gICAgICAgICAgb25DbGljaz17bWVyZ2VGcm9tTWFzdGVySW50b1VzZXJCcmFuY2h9XG4gICAgICAgICAgdGl0bGU9e21lcmdlRnJvbU1hc3RlclRpdGxlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e21lcmdlRnJvbU1hc3RlclRpdGxlfVxuICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogJ3BvaW50ZXInIH19XG4gICAgICAgID5cbiAgICAgICAgICB7bWVyZ2VGcm9tTWFzdGVySGFzQ29uZmxpY3RzID9cbiAgICAgICAgICAgIDxNZFVwZGF0ZURpc2FibGVkIGlkPSd1cGRhdGUtZnJvbS1tYXN0ZXItaWNvbicgY29sb3I9e21lcmdlRnJvbU1hc3RlckNvbG9yfSAvPlxuICAgICAgICAgICAgOlxuICAgICAgICAgICAgPE1kVXBkYXRlIGlkPSd1cGRhdGUtZnJvbS1tYXN0ZXItaWNvbicgY29sb3I9e21lcmdlRnJvbU1hc3RlckNvbG9yfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cbiAgICBpZiAobWVyZ2VUb01hc3Rlcikge1xuICAgICAgbmV3SXRlbXMucHVzaChcbiAgICAgICAgPEljb25CdXR0b25cbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMubWFyZ2lufVxuICAgICAgICAgIGtleT0nc2hhcmUtdG8tbWFzdGVyJ1xuICAgICAgICAgIG9uQ2xpY2s9e21lcmdlVG9NYXN0ZXJGcm9tVXNlckJyYW5jaH1cbiAgICAgICAgICB0aXRsZT17bWVyZ2VUb01hc3RlclRpdGxlfVxuICAgICAgICAgIGFyaWEtbGFiZWw9e21lcmdlVG9NYXN0ZXJUaXRsZX1cbiAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9fVxuICAgICAgICA+XG4gICAgICAgICAge21lcmdlVG9NYXN0ZXJIYXNDb25mbGljdHMgP1xuICAgICAgICAgICAgPE1kVXBkYXRlRGlzYWJsZWQgaWQ9J3NoYXJlLXRvLW1hc3Rlci1pY29uJyBjb2xvcj17bWVyZ2VUb01hc3RlckNvbG9yfSAvPlxuICAgICAgICAgICAgOlxuICAgICAgICAgICAgPEZpU2hhcmUgaWQ9J3NoYXJlLXRvLW1hc3Rlci1pY29uJyBjb2xvcj17bWVyZ2VUb01hc3RlckNvbG9yfSAvPlxuICAgICAgICAgIH1cbiAgICAgICAgPC9JY29uQnV0dG9uPlxuICAgICAgKVxuICAgIH1cbiAgICByZXR1cm4gbmV3SXRlbXM7XG4gIH1cblxuICByZXR1cm4gKFxuICAgIDxDYXJkXG4gICAgICBpZD17YHNjcmlwdHVyZV9jYXJkXyR7Y2FyZE51bX1gfVxuICAgICAgdGl0bGU9e3NjcmlwdHVyZUxhYmVsfVxuICAgICAgc2V0dGluZ3NUaXRsZT17c2NyaXB0dXJlVGl0bGUgKyAnIFNldHRpbmdzJ31cbiAgICAgIGl0ZW1zPXtpdGVtc31cbiAgICAgIGNsYXNzZXM9e2NsYXNzZXN9XG4gICAgICBoZWFkZXJzPXtoZWFkZXJzfVxuICAgICAgZmlsdGVycz17ZmlsdGVyc31cbiAgICAgIGZvbnRTaXplPXtmb250U2l6ZX1cbiAgICAgIGl0ZW1JbmRleD17aXRlbUluZGV4fVxuICAgICAgc2V0RmlsdGVycz17c2V0RmlsdGVyc31cbiAgICAgIHNldEZvbnRTaXplPXtzZXRGb250U2l6ZX1cbiAgICAgIHNldEl0ZW1JbmRleD17c2V0SXRlbUluZGV4fVxuICAgICAgbWFya2Rvd25WaWV3PXttYXJrZG93blZpZXd9XG4gICAgICBzZXRNYXJrZG93blZpZXc9e3NldE1hcmtkb3duVmlld31cbiAgICAgIGdldEN1c3RvbUNvbXBvbmVudD17Z2V0U2NyaXB0dXJlU2VsZWN0b3J9XG4gICAgICBoaWRlTWFya2Rvd25Ub2dnbGVcbiAgICAgIG9uTWVudUNsb3NlPXtvbk1lbnVDbG9zZX1cbiAgICAgIG9uTWluaW1pemU9e29uTWluaW1pemUgPyAoKSA9PiBvbk1pbmltaXplKGlkKSA6IG51bGx9XG4gICAgICBlZGl0YWJsZT17ZW5hYmxlRWRpdCB8fCBlbmFibGVBbGlnbm1lbnR9XG4gICAgICBzYXZlZD17c3RhcnRTYXZlIHx8ICFoYXZlVW5zYXZlZENoYW5nZXN9XG4gICAgICBvblNhdmVFZGl0PXsoKSA9PiBzZXRTdGF0ZSh7IHNhdmVDbGlja2VkOiB0cnVlIH0pfVxuICAgICAgb25SZW5kZXJUb29sYmFyPXtvblJlbmRlclRvb2xiYXJ9XG4gICAgPlxuICAgICAgPGRpdiBpZD1cInNjcmlwdHVyZS1wYW5lLWxpc3RcIj5cbiAgICAgICAge3JlbmRlcmVkU2NyaXB0dXJlUGFuZXN9XG4gICAgICA8L2Rpdj5cbiAgICA8L0NhcmQ+XG4gIClcbn1cblxuU2NyaXB0dXJlQ2FyZC5wcm9wVHlwZXMgPSB7XG4gIC8qKiBodG1sIGlkZW50aWZpZXIgdG8gdXNlIGZvciBjYXJkICovXG4gIGlkOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogbWV0aG9kIHRvIGRldGVybWluZSBpZiBOVCBvciBPVCAqL1xuICBpc05UOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAvKiogdGl0bGUgZm9yIHNjcmlwdHVyZSBjYXJkICovXG4gIHRpdGxlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBnZXQgbGFuZ3VhZ2UgZGV0YWlscyAqL1xuICBnZXRMYW5ndWFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIHNjcmlwdHVyZSBjYXJkIG51bWJlciAoMCB0byAyIGZvciBleGFtcGxlKSAqL1xuICBjYXJkTnVtOiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gIC8qKiByZXNvdXJjZSBvYmplY3QgKi9cbiAgcmVzb3VyY2U6IFByb3BUeXBlcy5zaGFwZSh7XG4gICAgLyoqIHJlc291cmNlIGxhbmd1YWdlIHRvIHVzZSAqL1xuICAgIGxhbmd1YWdlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBzdWNoIGFzIHVuZm9sZGluZ1dvcmQgKi9cbiAgICBvd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIC8qKiByZXNvdXJjZUlkIHRvIHVzZSAoZS5nLiB1Z250KSAqL1xuICAgIHJlc291cmNlSWQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAvKiogcmVwbyBvd25lciBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VzIHN1Y2ggYXMgdW5mb2xkaW5nV29yZCAqL1xuICAgIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICB9KSxcbiAgcmVmZXJlbmNlOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgIC8qKiBwcm9qZWN0SWQgKGJvb2tJRCkgdG8gdXNlICovXG4gICAgcHJvamVjdElkOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgLyoqIGN1cnJlbnQgY2hhcHRlciBudW1iZXIgKi9cbiAgICBjaGFwdGVyOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMubnVtYmVyLCBQcm9wVHlwZXMuc3RyaW5nXSkuaXNSZXF1aXJlZCxcbiAgICAvKiogY3VycmVudCB2ZXJzZSBudW1iZXIgKi9cbiAgICB2ZXJzZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLmlzUmVxdWlyZWQsXG4gIH0pLFxuICAvKiogc2VydmVyIChlLmcuICdodHRwczovL2dpdC5kb29yNDMub3JnJykgKi9cbiAgc2VydmVyOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiByZXBvIGJyYW5jaCBvciB0YWcgc3VjaCBhcyBtYXN0ZXIgKi9cbiAgYXBwUmVmOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIC8qKiBpZiB0cnVlIHRoZW4gd29yZCBkYXRhIGhvdmVyIGlzIHNob3duICovXG4gIGRpc2FibGVXb3JkUG9wb3ZlcjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKiBDU1MgY2xhc3NlcyAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKiogcmVzb3VyY2VMaW5rICovXG4gIHJlc291cmNlTGluazogUHJvcFR5cGVzLmFueSxcbiAgLyoqIHVzZSBtZXRob2QgZm9yIHVzaW5nIGxvY2FsIHN0b3JhZ2Ugc3BlY2lmaWMgZm9yIHVzZXIgKi9cbiAgdXNlVXNlckxvY2FsU3RvcmFnZTogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgLyoqIG9wdGlvbmFsIGNhbGxiYWNrIGlmIGVycm9yIGxvYWRpbmcgcmVzb3VyY2UsIHBhcmFtZXRlciByZXR1cm5lZCBhcmU6XG4gICAqICAgICh7c3RyaW5nfSBlcnJvck1lc3NhZ2UsIHtib29sZWFufSBpc0FjY2Vzc0Vycm9yLCB7b2JqZWN0fSByZXNvdXJjZVN0YXR1cylcbiAgICogICAgICAtIGlzQWNjZXNzRXJyb3IgLSBpcyB0cnVlIGlmIHRoaXMgd2FzIGFuIGVycm9yIHRyeWluZyB0byBhY2Nlc3MgZmlsZVxuICAgKiAgICAgIC0gcmVzb3VyY2VTdGF0dXMgLSBpcyBvYmplY3QgY29udGFpbmluZyBkZXRhaWxzIGFib3V0IHByb2JsZW1zIGZldGNoaW5nIHJlc291cmNlICovXG4gIG9uUmVzb3VyY2VFcnJvcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBodHRwIHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzIGZvciBmZXRjaGluZyByZXNvdXJjZXMsIGRlZmF1bHQgaXMgMCAodmVyeSBsb25nIHdhaXQpICovXG4gIGh0dHBDb25maWc6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBvcHRpb25hbCB1cmwgZm9yIGdyZWVrIHJlcG8gKi9cbiAgZ3JlZWtSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogb3B0aW9uYWwgdXJsIGZvciBoZWJyZXcgcmVwbyAqL1xuICBoZWJyZXdSZXBvVXJsOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKiogZnVuY3Rpb24gdG8gZ2V0IGxhdGVzdCBsZXhpY29uIGRhdGEgKi9cbiAgZ2V0TGV4aWNvbkRhdGE6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogZnVuY3Rpb24gdG8gcHJlLWxvYWQgbGV4aWNvbiBkYXRhIGZvciB2ZXJzZSAqL1xuICBmZXRjaEdsb3NzZXNGb3JWZXJzZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBvcHRpb25hbCBmdW5jdGlvbiBmb3IgbG9jYWxpemF0aW9uICovXG4gIHRyYW5zbGF0ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBmdW5jdGlvbiB0byBtaW5pbWl6ZSB0aGUgY2FyZCAob3B0aW9uYWwpICovXG4gIG9uTWluaW1pemU6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogdXNlci1uYW1lICovXG4gIGxvZ2dlZEluVXNlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqIGF1dGhlbnRpY2F0aW9uIGluZm8gKi9cbiAgYXV0aGVudGljYXRpb246IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKiBmdW5jdGlvbiB0byBzZXQgc3RhdGUgaW4gYXBwIHRoYXQgdGhlcmUgYXJlIHVuc2F2ZWQgY2hhbmdlcyAqL1xuICBzZXRTYXZlZENoYW5nZXM6IFByb3BUeXBlcy5mdW5jLFxuICAvKiogaW5kZXggZm9yIGN1cnJlbnQgYm9vayAoZS5nLiAnMDEnIGZvciAnZ2VuJykqL1xuICBib29rSW5kZXg6IFByb3BUeXBlcy5zdHJpbmcsXG4gIC8qKiBjYWxsYmFjayB0byBpbmRpY2F0ZSB0aGF0IHdlIGFyZSB1c2luZyBhIHZlcnNlIHJhbmdlIGhlcmUgKi9cbiAgYWRkVmVyc2VSYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKiBjYWxsYmFjayB0byB1cGRhdGUgd29yZCBhbGlnbmVyIHN0YXRlICovXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBQcm9wVHlwZXMuZnVuYyxcbn1cbiJdfQ==
|
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.3.
|
|
4
|
+
"version": "3.3.5-beta",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"scripture-resources-rcl": "^5.2.0",
|
|
82
82
|
"style-loader": "^2.0.0",
|
|
83
83
|
"tc-ui-toolkit": "^5.3.3",
|
|
84
|
-
"translation-helps-rcl": "3.3.
|
|
84
|
+
"translation-helps-rcl": "^3.3.10-beta",
|
|
85
85
|
"ts-jest": "^29.0.5",
|
|
86
86
|
"use-deep-compare-effect": "1.8.1",
|
|
87
87
|
"usfm-js": "3.4.2",
|