single-scripture-rcl 3.4.12-beta → 3.4.13-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.
@@ -1,5 +1,4 @@
1
1
  import "core-js/modules/es.array.concat.js";
2
- import "core-js/modules/es.array.is-array.js";
3
2
  import "core-js/modules/es.parse-float.js";
4
3
 
5
4
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }
@@ -12,14 +11,16 @@ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArra
12
11
 
13
12
  function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
14
13
 
15
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
16
-
17
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
18
-
19
14
  function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
20
15
 
21
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
22
17
 
18
+ 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; } } }; }
19
+
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+
22
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
23
+
23
24
  import * as React from 'react';
24
25
  import useDeepCompareEffect from 'use-deep-compare-effect';
25
26
  import { VerseObjects } from 'scripture-resources-rcl';
@@ -27,7 +28,7 @@ import { UsfmFileConversionHelpers } from 'word-aligner-rcl';
27
28
  import { ScriptureReference } from '../../types';
28
29
  import { getResourceMessage, LOADING_RESOURCE } from '../../utils';
29
30
  import { ScriptureALignmentEditProps, useScriptureAlignmentEdit } from '../../hooks/useScriptureAlignmentEdit';
30
- import { Container, Content } from './styled';
31
+ import { Container, Content, EmptyContent } from './styled';
31
32
  var MessageStyle = {
32
33
  direction: 'ltr',
33
34
  whiteSpace: 'pre-wrap',
@@ -47,6 +48,38 @@ var TextAreaStyle = {
47
48
  minWidth: '220px',
48
49
  fontSize: '16px'
49
50
  };
51
+ /**
52
+ * determines if there are any words in verseObjects
53
+ * @param {object[]} verseObjects - array to search for words
54
+ * @return {boolean} true if word is found
55
+ */
56
+
57
+ function hasWords(verseObjects) {
58
+ var _iterator = _createForOfIteratorHelper(verseObjects),
59
+ _step;
60
+
61
+ try {
62
+ for (_iterator.s(); !(_step = _iterator.n()).done;) {
63
+ var vo = _step.value;
64
+
65
+ if (vo.type === 'word') {
66
+ return true;
67
+ } else if (vo.children) {
68
+ var foundWords = hasWords(vo.children);
69
+
70
+ if (foundWords) {
71
+ return true;
72
+ }
73
+ }
74
+ }
75
+ } catch (err) {
76
+ _iterator.e(err);
77
+ } finally {
78
+ _iterator.f();
79
+ }
80
+
81
+ return false;
82
+ }
50
83
 
51
84
  function ScripturePane(_ref) {
52
85
  var _scriptureAlignmentEd3;
@@ -142,9 +175,9 @@ function ScripturePane(_ref) {
142
175
  aligned = _scriptureAlignmentEd2.aligned,
143
176
  alignerData = _scriptureAlignmentEd2.alignerData,
144
177
  currentVerseObjects = _scriptureAlignmentEd2.currentVerseObjects,
145
- initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
146
178
  editing = _scriptureAlignmentEd2.editing,
147
- unsavedChanges = _scriptureAlignmentEd2.unsavedChanges,
179
+ enableEdit = _scriptureAlignmentEd2.enableEdit,
180
+ initialVerseObjects = _scriptureAlignmentEd2.initialVerseObjects,
148
181
  newVerseText = _scriptureAlignmentEd2.newVerseText;
149
182
 
150
183
  if (isVerseSelectedForAlignment && !alignerData && !doingAlignment) {
@@ -227,6 +260,41 @@ function ScripturePane(_ref) {
227
260
  setEditing(false, newText);
228
261
  }
229
262
 
263
+ var verseObjects = currentVerseObjects || initialVerseObjects;
264
+ var noWords = React.useMemo(function () {
265
+ return !hasWords(verseObjects);
266
+ }, [currentVerseObjects, initialVerseObjects]);
267
+ /**
268
+ * determine what to show based on variables
269
+ * @param {boolean} editing - if true show edit mode
270
+ * @param {boolean} enableEdit - if true then edit is enabled
271
+ * @param {boolean} noWords - if true then there are no displayable words
272
+ */
273
+
274
+ function verseContent(editing, enableEdit, noWords) {
275
+ if (noWords && enableEdit) {
276
+ return /*#__PURE__*/React.createElement(EmptyContent, null, "Click to Edit");
277
+ }
278
+
279
+ if (editing) {
280
+ return /*#__PURE__*/React.createElement("textarea", {
281
+ defaultValue: newVerseText || initialVerseText,
282
+ onChange: onTextChange,
283
+ onBlur: onBlur,
284
+ style: textAreaStyle,
285
+ autoFocus: true
286
+ });
287
+ }
288
+
289
+ return /*#__PURE__*/React.createElement(VerseObjects, {
290
+ verseKey: "".concat(reference.chapter, ":").concat(reference.verse),
291
+ verseObjects: verseObjects,
292
+ disableWordPopover: disableWordPopover,
293
+ getLexiconData: getLexiconData,
294
+ translate: translate
295
+ });
296
+ }
297
+
230
298
  return /*#__PURE__*/React.createElement(Container, {
231
299
  style: {
232
300
  direction: direction,
@@ -249,23 +317,11 @@ function ScripturePane(_ref) {
249
317
  onClick: function onClick() {
250
318
  setEditing && setEditing(true);
251
319
  }
252
- }, editing ? /*#__PURE__*/React.createElement("textarea", {
253
- defaultValue: newVerseText || initialVerseText,
254
- onChange: onTextChange,
255
- onBlur: onBlur,
256
- style: textAreaStyle,
257
- autoFocus: true
258
- }) : /*#__PURE__*/React.createElement(VerseObjects, {
259
- verseKey: "".concat(reference.chapter, ":").concat(reference.verse),
260
- verseObjects: currentVerseObjects || initialVerseObjects,
261
- disableWordPopover: disableWordPopover,
262
- getLexiconData: getLexiconData,
263
- translate: translate
264
- }))));
320
+ }, verseContent(editing, enableEdit, noWords))));
265
321
  }
266
322
 
267
323
  ScripturePane.defaultProps = {
268
324
  verseObjects: []
269
325
  };
270
326
  export default ScripturePane;
271
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJTY3JpcHR1cmVQYW5lIiwiY3VycmVudEluZGV4IiwiY29udGVudFN0eWxlIiwiZGV0ZXJtaW5pbmdCcmFuY2giLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJnZXRMZXhpY29uRGF0YSIsImlzTlQiLCJpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQiLCJvbkFsaWdubWVudEZpbmlzaCIsIm9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMiLCJyZWZlcmVuY2UiLCJyZWZTdHlsZSIsInJlc291cmNlU3RhdHVzIiwicmVzb3VyY2VMaW5rIiwic2F2aW5nIiwic2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsInNldFNhdmVkQ2hhbmdlcyIsInNldFdvcmRBbGlnbmVyU3RhdHVzIiwic2VydmVyIiwidHJhbnNsYXRlIiwidXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzIiwidXNlU3RhdGUiLCJkb2luZ0FsaWdubWVudCIsIm5ld1RleHQiLCJ1cmxFcnJvciIsInN0YXRlIiwic2V0U3RhdGVfIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImluaXRpYWxWZXJzZVRleHQiLCJzZXRJbml0aWFsVmVyc2VUZXh0IiwicmVzb3VyY2VNZXNzYWdlIiwiY2hhcHRlciIsInByb2plY3RJZCIsInZlcnNlIiwiYmFzaWNSZWZlcmVuY2UiLCJfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiYWN0aW9ucyIsImNsZWFyQ2hhbmdlcyIsImhhbmRsZUFsaWdubWVudENsaWNrIiwic2V0RWRpdGluZyIsInNldFZlcnNlQ2hhbmdlZCIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwiZWRpdGluZyIsInVuc2F2ZWRDaGFuZ2VzIiwibmV3VmVyc2VUZXh0IiwiY29uc29sZSIsImxvZyIsInVzZUVmZmVjdCIsImNhbGN1bGF0ZWRGb250U2l6ZSIsInVzZU1lbW8iLCJwYXJzZUZsb2F0IiwidGV4dEFyZWFTdHlsZSIsInZlcnNlVGV4dCIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJ2ZXJzZU9iamVjdHMiLCJvblRleHRDaGFuZ2UiLCJldmVudCIsInRhcmdldCIsInZhbHVlIiwiY2hhbmdlZCIsIm9uQmx1ciIsInBhZGRpbmdCb3R0b20iLCJkZWZhdWx0UHJvcHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtCQUFULFFBQW1DLGFBQW5DO0FBQ0EsU0FBU0Msa0JBQVQsRUFBNkJDLGdCQUE3QixRQUFxRCxhQUFyRDtBQUNBLFNBQVNDLDJCQUFULEVBQXNDQyx5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QUFBLEtBQUssRUFBRWpDLFlBQWI7QUFBMkIsSUFBQSxPQUFPLEVBQUUsbUJBQU07QUFDeEN3QyxNQUFBQSxVQUFVLElBQUlBLFVBQVUsQ0FBQyxJQUFELENBQXhCO0FBQ0Q7QUFGRCxLQUlHTSxPQUFPLGdCQUNOO0FBQ0UsSUFBQSxZQUFZLEVBQUVFLFlBQVksSUFBSXBCLGdCQURoQztBQUVFLElBQUEsUUFBUSxFQUFFK0IsWUFGWjtBQUdFLElBQUEsTUFBTSxFQUFFSyxNQUhWO0FBSUUsSUFBQSxLQUFLLEVBQUVULGFBSlQ7QUFLRSxJQUFBLFNBQVM7QUFMWCxJQURNLGdCQVNOLG9CQUFDLFlBQUQ7QUFDRSxJQUFBLFFBQVEsWUFBSy9DLFNBQVMsQ0FBQ3VCLE9BQWYsY0FBMEJ2QixTQUFTLENBQUN5QixLQUFwQyxDQURWO0FBRUUsSUFBQSxZQUFZLEVBQUVXLG1CQUFtQixJQUFJQyxtQkFGdkM7QUFHRSxJQUFBLGtCQUFrQixFQUFFM0Msa0JBSHRCO0FBSUUsSUFBQSxjQUFjLEVBQUVDLGNBSmxCO0FBS0UsSUFBQSxTQUFTLEVBQUVjO0FBTGIsSUFiSixDQUZGLENBUEosQ0FERjtBQW9DRDs7QUFFRG5CLGFBQWEsQ0FBQ29FLFlBQWQsR0FBNkI7QUFBRVIsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZTVELGFBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IFZlcnNlT2JqZWN0cyB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHsgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyB9IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgeyBTY3JpcHR1cmVSZWZlcmVuY2UgfSBmcm9tICcuLi8uLi90eXBlcydcbmltcG9ydCB7IGdldFJlc291cmNlTWVzc2FnZSwgTE9BRElOR19SRVNPVVJDRSB9IGZyb20gJy4uLy4uL3V0aWxzJ1xuaW1wb3J0IHsgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzLCB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IH0gZnJvbSAnLi4vLi4vaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCdcbmltcG9ydCB7IENvbnRhaW5lciwgQ29udGVudCB9IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuZnVuY3Rpb24gU2NyaXB0dXJlUGFuZSh7XG4gIGN1cnJlbnRJbmRleCxcbiAgY29udGVudFN0eWxlLFxuICBkZXRlcm1pbmluZ0JyYW5jaCxcbiAgZGlyZWN0aW9uLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIGZvbnRTaXplLFxuICBnZXRMZXhpY29uRGF0YSxcbiAgaXNOVCxcbiAgaXNWZXJzZVNlbGVjdGVkRm9yQWxpZ25tZW50LFxuICBvbkFsaWdubWVudEZpbmlzaCxcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgcmVmZXJlbmNlLFxuICByZWZTdHlsZSxcbiAgcmVzb3VyY2VTdGF0dXMsXG4gIHJlc291cmNlTGluayxcbiAgc2F2aW5nLFxuICBzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzLFxuICBzZXJ2ZXIsXG4gIHRyYW5zbGF0ZSxcbiAgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzLFxufSA6IFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBkb2luZ0FsaWdubWVudDogZmFsc2UsXG4gICAgbmV3VGV4dDogbnVsbCxcbiAgICB1cmxFcnJvcjogbnVsbCxcbiAgfSlcbiAgY29uc3Qge1xuICAgIGRvaW5nQWxpZ25tZW50LFxuICAgIG5ld1RleHQsXG4gICAgdXJsRXJyb3IsXG4gIH0gPSBzdGF0ZVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgY29uc3QgW2luaXRpYWxWZXJzZVRleHQsIHNldEluaXRpYWxWZXJzZVRleHRdID0gUmVhY3QudXNlU3RhdGUobnVsbClcblxuICBsZXQgcmVzb3VyY2VNZXNzYWdlID0gJydcblxuICBpZiAoc2F2aW5nKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1NhdmluZyBDaGFuZ2VzLi4uJ1xuICB9IGVsc2UgaWYgKGRldGVybWluaW5nQnJhbmNoKSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gJ1ByZS0nICsgTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIHJlc291cmNlTWVzc2FnZSA9IGdldFJlc291cmNlTWVzc2FnZShyZXNvdXJjZVN0YXR1cywgc2VydmVyLCByZXNvdXJjZUxpbmssIGlzTlQpXG4gIH1cblxuICBjb25zdCB7XG4gICAgY2hhcHRlcixcbiAgICBwcm9qZWN0SWQsXG4gICAgdmVyc2UsXG4gIH0gPSByZWZlcmVuY2VcbiAgZGlyZWN0aW9uID0gZGlyZWN0aW9uIHx8ICdsdHInXG4gIGNvbnN0IGJhc2ljUmVmZXJlbmNlID0ge1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgcmVmU3R5bGUgPSByZWZTdHlsZSB8fCB7XG4gICAgZm9udEZhbWlseTogJ05vdG8gU2FucycsXG4gICAgZm9udFNpemU6ICc5MCUnLFxuICB9XG5cbiAgY29udGVudFN0eWxlID0gY29udGVudFN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzEwMCUnLFxuICB9XG5cbiAgY29uc3QgX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcgPSB7XG4gICAgLi4uc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyxcbiAgICBpbml0aWFsVmVyc2VUZXh0LFxuICAgIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdCA9IHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoX3NjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcpXG4gIGNvbnN0IHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgfSxcbiAgfSA9IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG5cbiAgaWYgKGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCAmJiAhYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50YCwgYmFzaWNSZWZlcmVuY2UpXG4gICAgaGFuZGxlQWxpZ25tZW50Q2xpY2soKVxuICB9XG5cbiAgLy8gY29uc3QgdmVyc2VDaGFuZ2VkID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gIC8vICAgcmV0dXJuIChuZXdWZXJzZVRleHQgIT09IG5ld1RleHQpXG4gIC8vIH0sIFtuZXdWZXJzZVRleHQsIG5ld1RleHRdKVxuICAvL1xuICAvLyBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAvLyAgIGlmIChuZXdWZXJzZVRleHQgIT09IG5ld1RleHQpIHtcbiAgLy8gICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gbmV3IHZlcnNlIHRleHQgZGl2ZXJnZWRgLCB7IG5ld1ZlcnNlVGV4dCwgbmV3VGV4dCB9KVxuICAvLyAgIH0gZWxzZSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIG5ldyB2ZXJzZSB0ZXh0IGNvbnZlcmdlZGAsIHsgbmV3VmVyc2VUZXh0IH0pXG4gIC8vICAgfVxuICAvLyB9LCBbdmVyc2VDaGFuZ2VkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIHVwZGF0ZVZlcnNlc0FsaWdubWVudFN0YXR1cyAmJiB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMocmVmZXJlbmNlLCBhbGlnbmVkKVxuICB9LCBbYWxpZ25lZCwgY2hhcHRlciwgdmVyc2UsIHByb2plY3RJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoYWxpZ25lckRhdGEgJiYgIWRvaW5nQWxpZ25tZW50KSB7XG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IHRydWUgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKCFkb2luZ0FsaWdubWVudCkge1xuICAgICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIGFsaWduZXJEYXRhIHdlbnQgZmFsc2UgdW5leHBlY3RlZGAsIHsgYmFzaWNSZWZlcmVuY2UsIGFsaWduZXJEYXRhLCBkb2luZ0FsaWdubWVudCB9KVxuICAgICAgfVxuXG4gICAgICBzZXRXb3JkQWxpZ25lclN0YXR1cyAmJiBzZXRXb3JkQWxpZ25lclN0YXR1cyhfc2NyaXB0dXJlQWxpZ25tZW50RWRpdClcbiAgICAgIHNldFN0YXRlKHsgZG9pbmdBbGlnbm1lbnQ6IGZhbHNlIH0pXG4gICAgICBvbkFsaWdubWVudEZpbmlzaCAmJiBvbkFsaWdubWVudEZpbmlzaCgpXG4gICAgfVxuICB9LCBbX3NjcmlwdHVyZUFsaWdubWVudEVkaXQ/LnN0YXRlPy5hbGlnbmVyRGF0YV0pXG5cbiAgLy8gZHluYW1pY2FsbHkgYWRqdXN0IGZvbnQgc2l6ZVxuICBjb25zdCBjYWxjdWxhdGVkRm9udFNpemUgPSBSZWFjdC51c2VNZW1vKCgpID0+IChcbiAgICBwYXJzZUZsb2F0KFRleHRBcmVhU3R5bGUuZm9udFNpemUpICogZm9udFNpemUgLyAxMDAgKyAncHgnXG4gICksIFtmb250U2l6ZV0pXG5cbiAgY29uc3QgdGV4dEFyZWFTdHlsZSA9IHtcbiAgICAuLi5jb250ZW50U3R5bGUsXG4gICAgLi4uVGV4dEFyZWFTdHlsZSxcbiAgICBmb250U2l6ZTogY2FsY3VsYXRlZEZvbnRTaXplLFxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogaW5pdGlhbFZlcnNlT2JqZWN0cyB9KVxuICAgIGNsZWFyQ2hhbmdlcygpXG4gICAgc2V0SW5pdGlhbFZlcnNlVGV4dCh2ZXJzZVRleHQpXG4gICAgc2V0U3RhdGUoeyBuZXdUZXh0OiBudWxsIH0pXG4gIH0sIFt7IGJhc2ljUmVmZXJlbmNlLCBpbml0aWFsVmVyc2VPYmplY3RzIH1dKVxuXG4gIGZ1bmN0aW9uIG9uVGV4dENoYW5nZShldmVudDogUmVhY3QuQ2hhbmdlRXZlbnQ8SFRNTFRleHRBcmVhRWxlbWVudD4pIHtcbiAgICBjb25zdCBuZXdWZXJzZVRleHQgPSBldmVudD8udGFyZ2V0Py52YWx1ZVxuICAgIGNvbnN0IGNoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAvLyBjb25zb2xlLmxvZyhgU1Aub25UZXh0Q2hhbmdlYCwgeyBjaGFuZ2VkLCBuZXdUZXh0OiBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQgfSlcbiAgICBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZCwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbmV3VmVyc2VUZXh0IH0pXG4gIH1cblxuICBmdW5jdGlvbiBvbkJsdXIoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgc2V0RWRpdGluZyhmYWxzZSwgbmV3VGV4dClcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNZXNzYWdlID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNZXNzYWdlfSA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3JlZlN0eWxlfT4ge2NoYXB0ZXJ9Ont2ZXJzZX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e2NvbnRlbnRTdHlsZX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RWRpdGluZyAmJiBzZXRFZGl0aW5nKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7ZWRpdGluZyA/XG4gICAgICAgICAgICAgIDx0ZXh0YXJlYVxuICAgICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17bmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2U9e29uVGV4dENoYW5nZX1cbiAgICAgICAgICAgICAgICBvbkJsdXI9e29uQmx1cn1cbiAgICAgICAgICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICA8VmVyc2VPYmplY3RzXG4gICAgICAgICAgICAgICAgdmVyc2VLZXk9e2Ake3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gfVxuICAgICAgICAgICAgICAgIHZlcnNlT2JqZWN0cz17Y3VycmVudFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzfVxuICAgICAgICAgICAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgICAgICAgICAgIGdldExleGljb25EYXRhPXtnZXRMZXhpY29uRGF0YX1cbiAgICAgICAgICAgICAgICB0cmFuc2xhdGU9e3RyYW5zbGF0ZX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIH1cbiAgICAgICAgICA8L3NwYW4+XG4gICAgICAgIDwvQ29udGVudD5cbiAgICAgIH1cbiAgICA8L0NvbnRhaW5lcj5cbiAgKVxufVxuXG5TY3JpcHR1cmVQYW5lLmRlZmF1bHRQcm9wcyA9IHsgdmVyc2VPYmplY3RzOiBbXSB9XG5cbmV4cG9ydCBkZWZhdWx0IFNjcmlwdHVyZVBhbmVcbiJdfQ==
327
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvU2NyaXB0dXJlUGFuZS50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJ1c2VEZWVwQ29tcGFyZUVmZmVjdCIsIlZlcnNlT2JqZWN0cyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJMT0FESU5HX1JFU09VUkNFIiwiU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIkNvbnRhaW5lciIsIkNvbnRlbnQiLCJFbXB0eUNvbnRlbnQiLCJNZXNzYWdlU3R5bGUiLCJkaXJlY3Rpb24iLCJ3aGl0ZVNwYWNlIiwibGluZUhlaWdodCIsImRpc3BsYXkiLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJoZWlnaHQiLCJ3aWR0aCIsImZvbnRTaXplIiwiZm9udEZhbWlseSIsImZvbnRXZWlnaHQiLCJUZXh0QXJlYVN0eWxlIiwibWluV2lkdGgiLCJoYXNXb3JkcyIsInZlcnNlT2JqZWN0cyIsInZvIiwidHlwZSIsImNoaWxkcmVuIiwiZm91bmRXb3JkcyIsIlNjcmlwdHVyZVBhbmUiLCJjdXJyZW50SW5kZXgiLCJjb250ZW50U3R5bGUiLCJkZXRlcm1pbmluZ0JyYW5jaCIsImRpc2FibGVXb3JkUG9wb3ZlciIsImdldExleGljb25EYXRhIiwiaXNOVCIsImlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudCIsIm9uQWxpZ25tZW50RmluaXNoIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsInJlZmVyZW5jZSIsInJlZlN0eWxlIiwicmVzb3VyY2VTdGF0dXMiLCJyZXNvdXJjZUxpbmsiLCJzYXZpbmciLCJzY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwic2V0U2F2ZWRDaGFuZ2VzIiwic2V0V29yZEFsaWduZXJTdGF0dXMiLCJzZXJ2ZXIiLCJ0cmFuc2xhdGUiLCJ1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMiLCJ1c2VTdGF0ZSIsImRvaW5nQWxpZ25tZW50IiwibmV3VGV4dCIsInVybEVycm9yIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhbFZlcnNlVGV4dCIsInNldEluaXRpYWxWZXJzZVRleHQiLCJyZXNvdXJjZU1lc3NhZ2UiLCJjaGFwdGVyIiwicHJvamVjdElkIiwidmVyc2UiLCJiYXNpY1JlZmVyZW5jZSIsIl9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnIiwiX3NjcmlwdHVyZUFsaWdubWVudEVkaXQiLCJhY3Rpb25zIiwiY2xlYXJDaGFuZ2VzIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJzZXRFZGl0aW5nIiwic2V0VmVyc2VDaGFuZ2VkIiwiYWxpZ25lZCIsImFsaWduZXJEYXRhIiwiY3VycmVudFZlcnNlT2JqZWN0cyIsImVkaXRpbmciLCJlbmFibGVFZGl0IiwiaW5pdGlhbFZlcnNlT2JqZWN0cyIsIm5ld1ZlcnNlVGV4dCIsImNvbnNvbGUiLCJsb2ciLCJ1c2VFZmZlY3QiLCJjYWxjdWxhdGVkRm9udFNpemUiLCJ1c2VNZW1vIiwicGFyc2VGbG9hdCIsInRleHRBcmVhU3R5bGUiLCJ2ZXJzZVRleHQiLCJnZXRVc2ZtRm9yVmVyc2VDb250ZW50Iiwib25UZXh0Q2hhbmdlIiwiZXZlbnQiLCJ0YXJnZXQiLCJ2YWx1ZSIsImNoYW5nZWQiLCJvbkJsdXIiLCJub1dvcmRzIiwidmVyc2VDb250ZW50IiwicGFkZGluZ0JvdHRvbSIsImRlZmF1bHRQcm9wcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxPQUFPQyxvQkFBUCxNQUFpQyx5QkFBakM7QUFDQSxTQUFTQyxZQUFULFFBQTZCLHlCQUE3QjtBQUNBLFNBQVNDLHlCQUFULFFBQTBDLGtCQUExQztBQUNBLFNBQVNDLGtC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QUFBQSxTQUFTLEVBQVRBLFNBQUY7QUFBYU8sTUFBQUEsS0FBSyxFQUFFLE1BQXBCO0FBQTRCZ0YsTUFBQUEsYUFBYSxFQUFFO0FBQTNDO0FBQWxCLEtBQ0dwQyxlQUFlO0FBQUE7QUFDZDtBQUNBO0FBQUssSUFBQSxLQUFLLEVBQUVwRDtBQUFaLGtCQUNFO0FBQUssSUFBQSxLQUFLLEVBQUU7QUFBRVMsTUFBQUEsUUFBUSxZQUFLQSxRQUFMO0FBQVY7QUFBWixVQUE0QzJDLGVBQTVDLE1BREYsQ0FGYyxnQkFNZCxvQkFBQyxPQUFELHFCQUNFO0FBQU0sSUFBQSxLQUFLLEVBQUVyQjtBQUFiLFVBQXlCc0IsT0FBekIsT0FBbUNFLEtBQW5DLFNBREYsZUFFRTtBQUFNLElBQUEsS0FBSyxFQUFFakMsWUFBYjtBQUEyQixJQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUN4Q3dDLE1BQUFBLFVBQVUsSUFBSUEsVUFBVSxDQUFDLElBQUQsQ0FBeEI7QUFDRDtBQUZELEtBSUd5QixZQUFZLENBQUNwQixPQUFELEVBQVVDLFVBQVYsRUFBc0JrQixPQUF0QixDQUpmLENBRkYsQ0FQSixDQURGO0FBcUJEOztBQUVEbEUsYUFBYSxDQUFDcUUsWUFBZCxHQUE2QjtBQUFFMUUsRUFBQUEsWUFBWSxFQUFFO0FBQWhCLENBQTdCO0FBRUEsZUFBZUssYUFBZiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHVzZURlZXBDb21wYXJlRWZmZWN0IGZyb20gJ3VzZS1kZWVwLWNvbXBhcmUtZWZmZWN0J1xuaW1wb3J0IHsgVmVyc2VPYmplY3RzIH0gZnJvbSAnc2NyaXB0dXJlLXJlc291cmNlcy1yY2wnXG5pbXBvcnQgeyBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIH0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IFNjcmlwdHVyZVJlZmVyZW5jZSB9IGZyb20gJy4uLy4uL3R5cGVzJ1xuaW1wb3J0IHsgZ2V0UmVzb3VyY2VNZXNzYWdlLCBMT0FESU5HX1JFU09VUkNFIH0gZnJvbSAnLi4vLi4vdXRpbHMnXG5pbXBvcnQgeyBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMsIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQgfSBmcm9tICcuLi8uLi9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0J1xuaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBDb250ZW50LFxuICBFbXB0eUNvbnRlbnQsXG59IGZyb20gJy4vc3R5bGVkJ1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogb3B0aW9uYWwgc3R5bGVzIHRvIHVzZSBmb3IgY29udGVudCAqKi9cbiAgY29udGVudFN0eWxlOiBhbnk7XG4gIC8vIGluZGV4IG51bWJlciBmb3IgdGhpcyBzY3JpcHR1cmUgcGFuZVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gd2FpdGluZyB0byBkZXRlcm1pbmUgYnJhbmNoXG4gIGRldGVybWluaW5nQnJhbmNoOiBib29sZWFuLFxuICAvKiogbGFuZ3VhZ2UgZGlyZWN0aW9uIHRvIHVzZSAqKi9cbiAgZGlyZWN0aW9uOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGRvIG5vdCBkaXNwbGF5IGxleGljb24gcG9wb3ZlciBvbiBob3ZlciAqKi9cbiAgZGlzYWJsZVdvcmRQb3BvdmVyOiBib29sZWFufHVuZGVmaW5lZDtcbiAgLyoqIGZvbnQgc2l6ZSBmb3IgbWVzc2FnZXMgKi9cbiAgZm9udFNpemU6IG51bWJlcjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGdldCBsYXRlc3QgbGV4aWNvbiBkYXRhICovXG4gIGdldExleGljb25EYXRhOiBGdW5jdGlvbjtcbiAgLyoqIHRydWUgaWYgYnJvd3NpbmcgTlQgKi9cbiAgaXNOVDogYm9vbGVhbjtcbiAgLyoqIHdoZXRoZXIgb3Igbm90IHRoaXMgY3VycmVudCB2ZXJzZSBoYXMgYmVlbiBzZWxlY3RlZCBmb3IgYWxpZ25tZW50ICovXG4gIGlzVmVyc2VTZWxlY3RlZEZvckFsaWdubWVudDogYm9vbGVhbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHZlcnNlIGFsaWdubWVudCBoYXMgZmluaXNoZWQgKi9cbiAgb25BbGlnbm1lbnRGaW5pc2g6IEZ1bmN0aW9uO1xuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8qKiBvcHRpb25hbCBzdHlsZXMgdG8gdXNlIGZvciByZWZlcmVuY2UgKiovXG4gIHJlZlN0eWxlOiBhbnk7XG4gIC8qKiBvYmplY3QgdGhhdCBjb250YWlucyByZXNvdXJjZSBsb2FkaW5nIHN0YXR1cyBvciBmZXRjaGluZyBlcnJvcnMgKi9cbiAgcmVzb3VyY2VTdGF0dXM6IG9iamVjdHx1bmRlZmluZWQ7XG4gIC8qKiByZXNvdXJjZSB0aGF0IHdhcyBsb2FkZWQgKi9cbiAgcmVzb3VyY2VMaW5rOiBzdHJpbmd8dW5kZWZpbmVkO1xuICAvKiogdHJ1ZSBpZiBjdXJyZW50bHkgc2F2aW5nIHVwZGF0ZWQgdGV4dCBhbmQgYWxpZ25tZW50cyAqL1xuICBzYXZpbmc6IGJvb2xlYW47XG4gIC8vIGluaXRpYWxpemF0aW9uIGZvciB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0XG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWc6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyxcbiAgLyoqIHNlcnZlciAqL1xuICBzZXJ2ZXI6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBjYWxsYmFjayB0byBmbGFnIHVuc2F2ZWQgc3RhdHVzICovXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb247XG4gIC8vIGNhbGxiYWNrIGZvciBjaGFuZ2UgaW4gd29yZCBhbGlnbm1lbnQgc3RhdHVzXG4gIHNldFdvcmRBbGlnbmVyU3RhdHVzOiBGdW5jdGlvbjtcbiAgLyoqIG9wdGlvbmFsIGZ1bmN0aW9uIGZvciBsb2NhbGl6YXRpb24gKi9cbiAgdHJhbnNsYXRlOiBGdW5jdGlvbjtcbiAgLyoqIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB0byB1cGRhdGUgdmVyc2UgYWxpZ25tZW50IHN0YXR1cyAqL1xuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXM6IEZ1bmN0aW9uO1xufVxuXG5jb25zdCBNZXNzYWdlU3R5bGUgPSB7XG4gIGRpcmVjdGlvbjogJ2x0cicsXG4gIHdoaXRlU3BhY2U6ICdwcmUtd3JhcCcsXG4gIGxpbmVIZWlnaHQ6ICdub3JtYWwnLFxuICBkaXNwbGF5OiAnZmxleCcsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGhlaWdodDogJzEwMCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBmb250U2l6ZTogJzE2cHgnLFxuICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgZm9udFdlaWdodDogJ2JvbGQnLFxufVxuXG5jb25zdCBUZXh0QXJlYVN0eWxlID0ge1xuICBoZWlnaHQ6ICc2MCUnLFxuICB3aWR0aDogJzEwMCUnLFxuICBtaW5XaWR0aDogJzIyMHB4JyxcbiAgZm9udFNpemU6ICcxNnB4Jyxcbn1cblxuLyoqXG4gKiBkZXRlcm1pbmVzIGlmIHRoZXJlIGFyZSBhbnkgd29yZHMgaW4gdmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge29iamVjdFtdfSB2ZXJzZU9iamVjdHMgLSBhcnJheSB0byBzZWFyY2ggZm9yIHdvcmRzXG4gKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIHdvcmQgaXMgZm91bmRcbiAqL1xuZnVuY3Rpb24gaGFzV29yZHModmVyc2VPYmplY3RzOm9iamVjdFtdKSB7XG4gIGZvciAoY29uc3Qgdm8gb2YgdmVyc2VPYmplY3RzKSB7XG4gICAgaWYgKHZvLnR5cGUgPT09ICd3b3JkJykge1xuICAgICAgcmV0dXJuIHRydWVcbiAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBmb3VuZFdvcmRzID0gaGFzV29yZHModm8uY2hpbGRyZW4pXG5cbiAgICAgIGlmIChmb3VuZFdvcmRzKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuXG5mdW5jdGlvbiBTY3JpcHR1cmVQYW5lKHtcbiAgY3VycmVudEluZGV4LFxuICBjb250ZW50U3R5bGUsXG4gIGRldGVybWluaW5nQnJhbmNoLFxuICBkaXJlY3Rpb24sXG4gIGRpc2FibGVXb3JkUG9wb3ZlcixcbiAgZm9udFNpemUsXG4gIGdldExleGljb25EYXRhLFxuICBpc05ULFxuICBpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQsXG4gIG9uQWxpZ25tZW50RmluaXNoLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICByZWZlcmVuY2UsXG4gIHJlZlN0eWxlLFxuICByZXNvdXJjZVN0YXR1cyxcbiAgcmVzb3VyY2VMaW5rLFxuICBzYXZpbmcsXG4gIHNjcmlwdHVyZUFsaWdubWVudEVkaXRDb25maWcsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc2V0V29yZEFsaWduZXJTdGF0dXMsXG4gIHNlcnZlcixcbiAgdHJhbnNsYXRlLFxuICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGRvaW5nQWxpZ25tZW50OiBmYWxzZSxcbiAgICBuZXdUZXh0OiBudWxsLFxuICAgIHVybEVycm9yOiBudWxsLFxuICB9KVxuICBjb25zdCB7XG4gICAgZG9pbmdBbGlnbm1lbnQsXG4gICAgbmV3VGV4dCxcbiAgICB1cmxFcnJvcixcbiAgfSA9IHN0YXRlXG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBjb25zdCBbaW5pdGlhbFZlcnNlVGV4dCwgc2V0SW5pdGlhbFZlcnNlVGV4dF0gPSBSZWFjdC51c2VTdGF0ZShudWxsKVxuXG4gIGxldCByZXNvdXJjZU1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChzYXZpbmcpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnU2F2aW5nIENoYW5nZXMuLi4nXG4gIH0gZWxzZSBpZiAoZGV0ZXJtaW5pbmdCcmFuY2gpIHtcbiAgICByZXNvdXJjZU1lc3NhZ2UgPSAnUHJlLScgKyBMT0FESU5HX1JFU09VUkNFXG4gIH0gZWxzZSB7XG4gICAgcmVzb3VyY2VNZXNzYWdlID0gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzLCBzZXJ2ZXIsIHJlc291cmNlTGluaywgaXNOVClcbiAgfVxuXG4gIGNvbnN0IHtcbiAgICBjaGFwdGVyLFxuICAgIHByb2plY3RJZCxcbiAgICB2ZXJzZSxcbiAgfSA9IHJlZmVyZW5jZVxuICBkaXJlY3Rpb24gPSBkaXJlY3Rpb24gfHwgJ2x0cidcbiAgY29uc3QgYmFzaWNSZWZlcmVuY2UgPSB7XG4gICAgY2hhcHRlcixcbiAgICB2ZXJzZSxcbiAgICBwcm9qZWN0SWQsXG4gIH1cblxuICByZWZTdHlsZSA9IHJlZlN0eWxlIHx8IHtcbiAgICBmb250RmFtaWx5OiAnTm90byBTYW5zJyxcbiAgICBmb250U2l6ZTogJzkwJScsXG4gIH1cblxuICBjb250ZW50U3R5bGUgPSBjb250ZW50U3R5bGUgfHwge1xuICAgIGZvbnRGYW1pbHk6ICdOb3RvIFNhbnMnLFxuICAgIGZvbnRTaXplOiAnMTAwJScsXG4gIH1cblxuICBjb25zdCBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZyA9IHtcbiAgICAuLi5zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Q29uZmlnLFxuICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgfVxuXG4gIGNvbnN0IF9zY3JpcHR1cmVBbGlnbm1lbnRFZGl0ID0gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdChfc2NyaXB0dXJlQWxpZ25tZW50RWRpdENvbmZpZylcbiAgY29uc3Qge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgIH0sXG4gIH0gPSBfc2NyaXB0dXJlQWxpZ25tZW50RWRpdFxuXG4gIGlmIChpc1ZlcnNlU2VsZWN0ZWRGb3JBbGlnbm1lbnQgJiYgIWFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkge1xuICAgIGNvbnNvbGUubG9nKGBTY3JpcHR1cmVQYW5lIC0gdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudGAsIGJhc2ljUmVmZXJlbmNlKVxuICAgIGhhbmRsZUFsaWdubWVudENsaWNrKClcbiAgfVxuXG4gIC8vIGNvbnN0IHZlcnNlQ2hhbmdlZCA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAvLyAgIHJldHVybiAobmV3VmVyc2VUZXh0ICE9PSBuZXdUZXh0KVxuICAvLyB9LCBbbmV3VmVyc2VUZXh0LCBuZXdUZXh0XSlcbiAgLy9cbiAgLy8gUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgLy8gICBpZiAobmV3VmVyc2VUZXh0ICE9PSBuZXdUZXh0KSB7XG4gIC8vICAgICBjb25zb2xlLmxvZyhgU2NyaXB0dXJlUGFuZSAtIG5ldyB2ZXJzZSB0ZXh0IGRpdmVyZ2VkYCwgeyBuZXdWZXJzZVRleHQsIG5ld1RleHQgfSlcbiAgLy8gICB9IGVsc2Uge1xuICAvLyAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBuZXcgdmVyc2UgdGV4dCBjb252ZXJnZWRgLCB7IG5ld1ZlcnNlVGV4dCB9KVxuICAvLyAgIH1cbiAgLy8gfSwgW3ZlcnNlQ2hhbmdlZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICB1cGRhdGVWZXJzZXNBbGlnbm1lbnRTdGF0dXMgJiYgdXBkYXRlVmVyc2VzQWxpZ25tZW50U3RhdHVzKHJlZmVyZW5jZSwgYWxpZ25lZClcbiAgfSwgW2FsaWduZWQsIGNoYXB0ZXIsIHZlcnNlLCBwcm9qZWN0SWRdKVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGFsaWduZXJEYXRhICYmICFkb2luZ0FsaWdubWVudCkge1xuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiB0cnVlIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICghZG9pbmdBbGlnbm1lbnQpIHtcbiAgICAgICAgY29uc29sZS5sb2coYFNjcmlwdHVyZVBhbmUgLSBhbGlnbmVyRGF0YSB3ZW50IGZhbHNlIHVuZXhwZWN0ZWRgLCB7IGJhc2ljUmVmZXJlbmNlLCBhbGlnbmVyRGF0YSwgZG9pbmdBbGlnbm1lbnQgfSlcbiAgICAgIH1cblxuICAgICAgc2V0V29yZEFsaWduZXJTdGF0dXMgJiYgc2V0V29yZEFsaWduZXJTdGF0dXMoX3NjcmlwdHVyZUFsaWdubWVudEVkaXQpXG4gICAgICBzZXRTdGF0ZSh7IGRvaW5nQWxpZ25tZW50OiBmYWxzZSB9KVxuICAgICAgb25BbGlnbm1lbnRGaW5pc2ggJiYgb25BbGlnbm1lbnRGaW5pc2goKVxuICAgIH1cbiAgfSwgW19zY3JpcHR1cmVBbGlnbm1lbnRFZGl0Py5zdGF0ZT8uYWxpZ25lckRhdGFdKVxuXG4gIC8vIGR5bmFtaWNhbGx5IGFkanVzdCBmb250IHNpemVcbiAgY29uc3QgY2FsY3VsYXRlZEZvbnRTaXplID0gUmVhY3QudXNlTWVtbygoKSA9PiAoXG4gICAgcGFyc2VGbG9hdChUZXh0QXJlYVN0eWxlLmZvbnRTaXplKSAqIGZvbnRTaXplIC8gMTAwICsgJ3B4J1xuICApLCBbZm9udFNpemVdKVxuXG4gIGNvbnN0IHRleHRBcmVhU3R5bGUgPSB7XG4gICAgLi4uY29udGVudFN0eWxlLFxuICAgIC4uLlRleHRBcmVhU3R5bGUsXG4gICAgZm9udFNpemU6IGNhbGN1bGF0ZWRGb250U2l6ZSxcbiAgfVxuXG4gIHVzZURlZXBDb21wYXJlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHM6IGluaXRpYWxWZXJzZU9iamVjdHMgfSlcbiAgICBjbGVhckNoYW5nZXMoKVxuICAgIHNldEluaXRpYWxWZXJzZVRleHQodmVyc2VUZXh0KVxuICAgIHNldFN0YXRlKHsgbmV3VGV4dDogbnVsbCB9KVxuICB9LCBbeyBiYXNpY1JlZmVyZW5jZSwgaW5pdGlhbFZlcnNlT2JqZWN0cyB9XSlcblxuICBmdW5jdGlvbiBvblRleHRDaGFuZ2UoZXZlbnQ6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxUZXh0QXJlYUVsZW1lbnQ+KSB7XG4gICAgY29uc3QgbmV3VmVyc2VUZXh0ID0gZXZlbnQ/LnRhcmdldD8udmFsdWVcbiAgICBjb25zdCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgLy8gY29uc29sZS5sb2coYFNQLm9uVGV4dENoYW5nZWAsIHsgY2hhbmdlZCwgbmV3VGV4dDogbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0IH0pXG4gICAgc2V0VmVyc2VDaGFuZ2VkKGNoYW5nZWQsIG5ld1ZlcnNlVGV4dCwgaW5pdGlhbFZlcnNlVGV4dClcbiAgICBzZXRTdGF0ZSh7IG5ld1RleHQ6IG5ld1ZlcnNlVGV4dCB9KVxuICB9XG5cbiAgZnVuY3Rpb24gb25CbHVyKGV2ZW50OiBSZWFjdC5DaGFuZ2VFdmVudDxIVE1MVGV4dEFyZWFFbGVtZW50Pikge1xuICAgIHNldEVkaXRpbmcoZmFsc2UsIG5ld1RleHQpXG4gIH1cblxuICBjb25zdCB2ZXJzZU9iamVjdHMgPSBjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgY29uc3Qgbm9Xb3JkcyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4gIWhhc1dvcmRzKHZlcnNlT2JqZWN0cyksIFtjdXJyZW50VmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZGV0ZXJtaW5lIHdoYXQgdG8gc2hvdyBiYXNlZCBvbiB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nIC0gaWYgdHJ1ZSBzaG93IGVkaXQgbW9kZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVuYWJsZUVkaXQgLSBpZiB0cnVlIHRoZW4gZWRpdCBpcyBlbmFibGVkXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gbm9Xb3JkcyAtIGlmIHRydWUgdGhlbiB0aGVyZSBhcmUgbm8gZGlzcGxheWFibGUgd29yZHNcbiAgICovXG4gIGZ1bmN0aW9uIHZlcnNlQ29udGVudChlZGl0aW5nLCBlbmFibGVFZGl0LCBub1dvcmRzKSB7XG4gICAgaWYgKG5vV29yZHMgJiYgZW5hYmxlRWRpdCkge1xuICAgICAgcmV0dXJuIDxFbXB0eUNvbnRlbnQ+XG4gICAgICAgIENsaWNrIHRvIEVkaXRcbiAgICAgIDwvRW1wdHlDb250ZW50PlxuICAgIH1cblxuICAgIGlmIChlZGl0aW5nKSB7XG4gICAgICByZXR1cm4gPHRleHRhcmVhXG4gICAgICAgIGRlZmF1bHRWYWx1ZT17bmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHR9XG4gICAgICAgIG9uQ2hhbmdlPXtvblRleHRDaGFuZ2V9XG4gICAgICAgIG9uQmx1cj17b25CbHVyfVxuICAgICAgICBzdHlsZT17dGV4dEFyZWFTdHlsZX1cbiAgICAgICAgYXV0b0ZvY3VzXG4gICAgICAvPlxuICAgIH1cblxuICAgIHJldHVybiA8VmVyc2VPYmplY3RzXG4gICAgICB2ZXJzZUtleT17YCR7cmVmZXJlbmNlLmNoYXB0ZXJ9OiR7cmVmZXJlbmNlLnZlcnNlfWB9XG4gICAgICB2ZXJzZU9iamVjdHM9e3ZlcnNlT2JqZWN0c31cbiAgICAgIGRpc2FibGVXb3JkUG9wb3Zlcj17ZGlzYWJsZVdvcmRQb3BvdmVyfVxuICAgICAgZ2V0TGV4aWNvbkRhdGE9e2dldExleGljb25EYXRhfVxuICAgICAgdHJhbnNsYXRlPXt0cmFuc2xhdGV9XG4gICAgLz5cbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPENvbnRhaW5lciBzdHlsZT17eyBkaXJlY3Rpb24sIHdpZHRoOiAnMTAwJScsIHBhZGRpbmdCb3R0b206ICcwLjVlbScgfX0+XG4gICAgICB7cmVzb3VyY2VNZXNzYWdlID9cbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICA8ZGl2IHN0eWxlPXtNZXNzYWdlU3R5bGV9PlxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IGAke2ZvbnRTaXplfSVgIH19PiB7cmVzb3VyY2VNZXNzYWdlfSA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDpcbiAgICAgICAgPENvbnRlbnQ+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e3JlZlN0eWxlfT4ge2NoYXB0ZXJ9Ont2ZXJzZX0mbmJzcDs8L3NwYW4+XG4gICAgICAgICAgPHNwYW4gc3R5bGU9e2NvbnRlbnRTdHlsZX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgc2V0RWRpdGluZyAmJiBzZXRFZGl0aW5nKHRydWUpXG4gICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dmVyc2VDb250ZW50KGVkaXRpbmcsIGVuYWJsZUVkaXQsIG5vV29yZHMpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L0NvbnRlbnQ+XG4gICAgICB9XG4gICAgPC9Db250YWluZXI+XG4gIClcbn1cblxuU2NyaXB0dXJlUGFuZS5kZWZhdWx0UHJvcHMgPSB7IHZlcnNlT2JqZWN0czogW10gfVxuXG5leHBvcnQgZGVmYXVsdCBTY3JpcHR1cmVQYW5lXG4iXX0=
@@ -2,9 +2,19 @@ import "core-js/modules/es.array.slice.js";
2
2
  import "core-js/modules/es.object.define-properties.js";
3
3
  import "core-js/modules/es.object.freeze.js";
4
4
 
5
- function _templateObject4() {
5
+ function _templateObject5() {
6
6
  var data = _taggedTemplateLiteral(["\n font-size: 12px;\n"]);
7
7
 
8
+ _templateObject5 = function _templateObject5() {
9
+ return data;
10
+ };
11
+
12
+ return data;
13
+ }
14
+
15
+ function _templateObject4() {
16
+ var data = _taggedTemplateLiteral(["\n font-size: 16px;\n letter-spacing: 0.25px;\n font-family: Noto Sans;\n font-weight: normal;\n line-height: 20px;\n background-color: lightgray;\n"]);
17
+
8
18
  _templateObject4 = function _templateObject4() {
9
19
  return data;
10
20
  };
@@ -48,5 +58,6 @@ import styled from 'styled-components';
48
58
  export var Container = styled.div(_templateObject());
49
59
  export var Title = styled.div(_templateObject2());
50
60
  export var Content = styled.span(_templateObject3());
51
- export var ChapterVerse = styled.span(_templateObject4());
52
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvc3R5bGVkLnRzIl0sIm5hbWVzIjpbInN0eWxlZCIsIkNvbnRhaW5lciIsImRpdiIsIlRpdGxlIiwiQ29udGVudCIsInNwYW4iLCJDaGFwdGVyVmVyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxNQUFQLE1BQW1CLG1CQUFuQjtBQUVBLE9BQU8sSUFBTUMsU0FBUyxHQUFHRCxNQUFNLENBQUNFLEdBQVYsbUJBQWY7QUFlUCxPQUFPLElBQU1DLEtBQUssR0FBR0gsTUFBTSxDQUFDRSxHQUFWLG9CQUFYO0FBVVAsT0FBTyxJQUFNRSxPQUFPLEdBQUdKLE1BQU0sQ0FBQ0ssSUFBVixvQkFBYjtBQVFQLE9BQU8sSUFBTUMsWUFBWSxHQUFHTixNQUFNLENBQUNLLElBQVYsb0JBQWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG5wYWRkaW5nOiAwIC41ZW07XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLVJlZ3VsYXIudHRmXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLUJvbGQudHRmXCIpO1xufVxuXG5gXG5leHBvcnQgY29uc3QgVGl0bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNDI0MjQyO1xuICBsZXR0ZXItc3BhY2luZzogMGNoO1xuICBsaW5lLWhlaWdodDogMTRweDtcbmBcblxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4yNXB4O1xuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjBweDtcbmBcblxuZXhwb3J0IGNvbnN0IENoYXB0ZXJWZXJzZSA9IHN0eWxlZC5zcGFuYFxuICBmb250LXNpemU6IDEycHg7XG5gXG4iXX0=
61
+ export var EmptyContent = styled.span(_templateObject4());
62
+ export var ChapterVerse = styled.span(_templateObject5());
63
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL1NjcmlwdHVyZVBhbmUvc3R5bGVkLnRzIl0sIm5hbWVzIjpbInN0eWxlZCIsIkNvbnRhaW5lciIsImRpdiIsIlRpdGxlIiwiQ29udGVudCIsInNwYW4iLCJFbXB0eUNvbnRlbnQiLCJDaGFwdGVyVmVyc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsTUFBUCxNQUFtQixtQkFBbkI7QUFFQSxPQUFPLElBQU1DLFNBQVMsR0FBR0QsTUFBTSxDQUFDRSxHQUFWLG1CQUFmO0FBZVAsT0FBTyxJQUFNQyxLQUFLLEdBQUdILE1BQU0sQ0FBQ0UsR0FBVixvQkFBWDtBQVVQLE9BQU8sSUFBTUUsT0FBTyxHQUFHSixNQUFNLENBQUNLLElBQVYsb0JBQWI7QUFRUCxPQUFPLElBQU1DLFlBQVksR0FBR04sTUFBTSxDQUFDSyxJQUFWLG9CQUFsQjtBQVNQLE9BQU8sSUFBTUUsWUFBWSxHQUFHUCxNQUFNLENBQUNLLElBQVYsb0JBQWxCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0eWxlZCBmcm9tICdzdHlsZWQtY29tcG9uZW50cydcblxuZXhwb3J0IGNvbnN0IENvbnRhaW5lciA9IHN0eWxlZC5kaXZgXG5wYWRkaW5nOiAwIC41ZW07XG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLVJlZ3VsYXIudHRmXCIpO1xufVxuXG5AZm9udC1mYWNlIHtcbiAgZm9udC1mYW1pbHk6IFwiTm90byBTYW5zXCI7XG4gIGZvbnQtd2VpZ2h0OiA2MDA7XG4gIHNyYzogdXJsKFwiLi4vLi4vLi4vc3RhdGljL05vdG9TYW5zLUJvbGQudHRmXCIpO1xufVxuXG5gXG5leHBvcnQgY29uc3QgVGl0bGUgPSBzdHlsZWQuZGl2YFxuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXNpemU6IDE2cHg7XG4gIGZvbnQtd2VpZ2h0OiBib2xkO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGNvbG9yOiAjNDI0MjQyO1xuICBsZXR0ZXItc3BhY2luZzogMGNoO1xuICBsaW5lLWhlaWdodDogMTRweDtcbmBcblxuZXhwb3J0IGNvbnN0IENvbnRlbnQgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxNnB4O1xuICBsZXR0ZXItc3BhY2luZzogMC4yNXB4O1xuICBmb250LWZhbWlseTogTm90byBTYW5zO1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICBsaW5lLWhlaWdodDogMjBweDtcbmBcblxuZXhwb3J0IGNvbnN0IEVtcHR5Q29udGVudCA9IHN0eWxlZC5zcGFuYFxuICBmb250LXNpemU6IDE2cHg7XG4gIGxldHRlci1zcGFjaW5nOiAwLjI1cHg7XG4gIGZvbnQtZmFtaWx5OiBOb3RvIFNhbnM7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIGxpbmUtaGVpZ2h0OiAyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyYXk7XG5gXG5cbmV4cG9ydCBjb25zdCBDaGFwdGVyVmVyc2UgPSBzdHlsZWQuc3BhbmBcbiAgZm9udC1zaXplOiAxMnB4O1xuYFxuIl19
@@ -244,11 +244,11 @@ export function useScripture(_ref2) {
244
244
  _fetchBook = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(fetchParams) {
245
245
  var ignoreSha,
246
246
  _fetchParams$referenc2,
247
- _resourceState$resour,
248
247
  _resource$project,
249
248
  _resource$project2,
250
249
  fetchLink,
251
- shaToBeIgnored,
250
+ _resourceState$resour,
251
+ fetchedShaMatchesIgnoreSha,
252
252
  _resourceState$resour2,
253
253
  _fetchCount,
254
254
  _resource,
@@ -270,10 +270,16 @@ export function useScripture(_ref2) {
270
270
  ignoreSha = _args.length > 1 && _args[1] !== undefined ? _args[1] : null;
271
271
  _context.prev = 1;
272
272
  fetchLink = "".concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, "/").concat(fetchParams === null || fetchParams === void 0 ? void 0 : (_fetchParams$referenc2 = fetchParams.reference) === null || _fetchParams$referenc2 === void 0 ? void 0 : _fetchParams$referenc2.projectId);
273
- shaToBeIgnored = ignoreSha === null || ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
274
273
 
275
- if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !shaToBeIgnored)) {
276
- _context.next = 7;
274
+ if (!ignoreSha) {
275
+ _context.next = 8;
276
+ break;
277
+ }
278
+
279
+ fetchedShaMatchesIgnoreSha = ignoreSha === (resourceState === null || resourceState === void 0 ? void 0 : resourceState.sha); // we will reload if ignoreSha given and it matches current sha
280
+
281
+ if (!(fetchLink === (resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour = resourceState.resource) === null || _resourceState$resour === void 0 ? void 0 : _resourceState$resour.resourceLink) && !fetchedShaMatchesIgnoreSha)) {
282
+ _context.next = 8;
277
283
  break;
278
284
  }
279
285
 
@@ -281,7 +287,7 @@ export function useScripture(_ref2) {
281
287
  console.log("useScripture.fetchBook() - Already fetching resourceLink ".concat(resourceState === null || resourceState === void 0 ? void 0 : (_resourceState$resour2 = resourceState.resource) === null || _resourceState$resour2 === void 0 ? void 0 : _resourceState$resour2.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
282
288
  return _context.abrupt("return");
283
289
 
284
- case 7:
290
+ case 8:
285
291
  _fetchCount = fetchCount + 1;
286
292
  console.log("useScripture.fetchBook() - FETCHING bible ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and ignoreSha=").concat(ignoreSha), fetchParams);
287
293
  setState({
@@ -293,18 +299,18 @@ export function useScripture(_ref2) {
293
299
  }
294
300
  }); // fetch manifest data
295
301
 
296
- _context.next = 12;
302
+ _context.next = 13;
297
303
  return delay(100);
298
304
 
299
- case 12:
300
- _context.next = 14;
305
+ case 13:
306
+ _context.next = 15;
301
307
  return core.resourceFromResourceLink(fetchParams);
302
308
 
303
- case 14:
309
+ case 15:
304
310
  _resource = _context.sent;
305
311
 
306
312
  if (!(!(_resource !== null && _resource !== void 0 && _resource.manifest) || !(_resource !== null && _resource !== void 0 && (_resource$project = _resource.project) !== null && _resource$project !== void 0 && _resource$project.file))) {
307
- _context.next = 20;
313
+ _context.next = 21;
308
314
  break;
309
315
  }
310
316
 
@@ -318,27 +324,27 @@ export function useScripture(_ref2) {
318
324
  });
319
325
  return _context.abrupt("return");
320
326
 
321
- case 20:
327
+ case 21:
322
328
  console.log("useScripture.fetchBook() - LOADED bible manifest, fetching book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
323
- _context.next = 23;
329
+ _context.next = 24;
324
330
  return delay(100);
325
331
 
326
- case 23:
327
- _context.next = 25;
332
+ case 24:
333
+ _context.next = 26;
328
334
  return _resource === null || _resource === void 0 ? void 0 : (_resource$project2 = _resource.project) === null || _resource$project2 === void 0 ? void 0 : _resource$project2.file();
329
335
 
330
- case 25:
336
+ case 26:
331
337
  response = _context.sent;
332
338
  // parse book usfm
333
339
  _bibleUsfm = response && core.getResponseData(response);
334
- _context.next = 29;
340
+ _context.next = 30;
335
341
  return delay(100);
336
342
 
337
- case 29:
343
+ case 30:
338
344
  _bookObjects3 = _bibleUsfm && usfmjs.toJSON(_bibleUsfm); // convert to bible objects
339
345
 
340
346
  if (_bookObjects3) {
341
- _context.next = 35;
347
+ _context.next = 36;
342
348
  break;
343
349
  }
344
350
 
@@ -352,7 +358,7 @@ export function useScripture(_ref2) {
352
358
  });
353
359
  return _context.abrupt("return");
354
360
 
355
- case 35:
361
+ case 36:
356
362
  _ref5 = (response === null || response === void 0 ? void 0 : response.data) || {}, name = _ref5.name, sha = _ref5.sha, url = _ref5.url;
357
363
  console.log("useScripture.fetchBook() - LOADED bible book ".concat(resource_ === null || resource_ === void 0 ? void 0 : resource_.projectId, " resourceLink is now ").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink, " and resourceLink_=").concat(fetchParams === null || fetchParams === void 0 ? void 0 : fetchParams.resourceLink_), fetchParams);
358
364
  setState({
@@ -369,11 +375,11 @@ export function useScripture(_ref2) {
369
375
  })
370
376
  }
371
377
  });
372
- _context.next = 44;
378
+ _context.next = 45;
373
379
  break;
374
380
 
375
- case 40:
376
- _context.prev = 40;
381
+ case 41:
382
+ _context.prev = 41;
377
383
  _context.t0 = _context["catch"](1);
378
384
  console.error("useScripture.fetchBook() - hard error loading resource", fetchParams, _context.t0);
379
385
  setState({
@@ -383,12 +389,12 @@ export function useScripture(_ref2) {
383
389
  }
384
390
  });
385
391
 
386
- case 44:
392
+ case 45:
387
393
  case "end":
388
394
  return _context.stop();
389
395
  }
390
396
  }
391
- }, _callee, null, [[1, 40]]);
397
+ }, _callee, null, [[1, 41]]);
392
398
  }));
393
399
  return _fetchBook.apply(this, arguments);
394
400
  }
@@ -666,4 +672,4 @@ export function useScripture(_ref2) {
666
672
  versesForRef: versesForRef
667
673
  };
668
674
  }
669
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJzaGFUb0JlSWdub3JlZCIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFBQSxNQUFNLEdBQUdD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QUNELGVBQUwsRUFBc0IsQ0FDcEI7QUFDQTtBQUNBO0FBQ0QsS0FKRCxNQUlPO0FBQ0wsVUFBTVAsWUFBWSxHQUFHTyxlQUFlLEdBQUduRyxXQUFILEdBQWlCLElBQXJEOztBQUNBb0csTUFBQUEsYUFBYSxHQUFHdkIsaUJBQWlCLENBQUNlLFlBQUQsQ0FBakMsQ0FGSyxDQUdMO0FBQ0Q7O0FBRUQsUUFBSSxDQUFDL0csT0FBTyxDQUFDdUgsYUFBRCxFQUFnQmpFLFlBQWhCLENBQVosRUFBMkM7QUFDekNPLE1BQUFBLFFBQVEsQ0FBQztBQUFFUCxRQUFBQSxZQUFZLEVBQUVpRTtBQUFoQixPQUFELENBQVI7QUFDRDtBQUNGLEdBbEJRLEVBa0JOLENBQUN6RixTQUFELENBbEJNLENBQVQ7QUFvQkEsU0FBTztBQUNMUyxJQUFBQSxTQUFTLEVBQVRBLFNBREs7QUFFTHBCLElBQUFBLFdBQVcsRUFBWEEsV0FGSztBQUdMVSxJQUFBQSxlQUFlLEVBQUU4RSxnQkFIWjtBQUlMN0UsSUFBQUEsU0FBUyxFQUFFYSxXQUFGLGFBQUVBLFdBQUYsdUJBQUVBLFdBQVcsQ0FBRWIsU0FKbkI7QUFLTG1GLElBQUFBLGNBQWMsRUFBZEEsY0FMSztBQU1MdEcsSUFBQUEsWUFBWSxFQUFFZ0MsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUVoQyxZQU50QjtBQU9MbUMsSUFBQUEsYUFBYSxFQUFiQSxhQVBLO0FBT1U7QUFDZjJELElBQUFBLGNBQWMsRUFBZEEsY0FSSztBQVFXO0FBQ2hCUCxJQUFBQSxLQUFLLEVBQUxBLEtBVEs7QUFVTFcsSUFBQUEsV0FBVyxFQUFYQSxXQVZLO0FBV0xWLElBQUFBLE9BQU8sRUFBUEEsT0FYSztBQVlMN0MsSUFBQUEsWUFBWSxFQUFaQTtBQVpLLEdBQVA7QUFjRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7XG4gIHVzZUVmZmVjdCxcbiAgdXNlU3RhdGUsXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgY29yZSB9IGZyb20gJ3NjcmlwdHVyZS1yZXNvdXJjZXMtcmNsJ1xuaW1wb3J0IHVzZm1qcyBmcm9tICd1c2ZtLWpzJ1xuaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIEVSUk9SX1NUQVRFLFxuICBJTklUSUFMSVpFRF9TVEFURSxcbiAgSU5WQUxJRF9NQU5JRkVTVF9FUlJPUixcbiAgTE9BRElOR19TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB1c2VEZWVwQ29tcGFyZUVmZmVjdCBmcm9tICd1c2UtZGVlcC1jb21wYXJlLWVmZmVjdCdcbmltcG9ydCB7IGdldFZlcnNlcyB9IGZyb20gJ2JpYmxlLXJlZmVyZW5jZS1yYW5nZSdcbmltcG9ydCAqIGFzIGlzRXF1YWwgZnJvbSAnZGVlcC1lcXVhbCdcbmltcG9ydCB7IGRlbGF5IH0gZnJvbSAnLi4vdXRpbHMnXG5pbXBvcnQge1xuICBjbGVhbnVwVmVyc2VPYmplY3RzLFxuICBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUsXG4gIGdldFJlc291cmNlTGluayxcbiAgcGFyc2VSZXNvdXJjZUxpbmssXG59IGZyb20gJy4uL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzJ1xuaW1wb3J0IHtcbiAgU2VydmVyQ29uZmlnLFxuICBTY3JpcHR1cmVSZXNvdXJjZSxcbiAgU2NyaXB0dXJlUmVmZXJlbmNlLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IHBhcnNlUmVzb3VyY2VNYW5pZmVzdCB9IGZyb20gJy4vcGFyc2VSZXNvdXJjZU1hbmlmZXN0J1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICAvKiogcmVmZXJlbmNlIGZvciBzY3JpcHR1cmUgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvKiogd2hlcmUgdG8gZ2V0IGRhdGEgKiovXG4gIGNvbmZpZzogU2VydmVyQ29uZmlnO1xuICAvKiogb3B0aW9uYWwgZGlyZWN0IHBhdGggdG8gYmlibGUgcmVzb3VyY2UsIGluIGZvcm1hdCAke293bmVyfS8ke2xhbmd1YWdlSWR9LyR7cHJvamVjdElkfS8ke2JyYW5jaH0gKiovXG4gIHJlc291cmNlTGluazogc3RyaW5nfHVuZGVmaW5lZDtcbiAgLyoqIG9wdGlvbmFsIHJlc291cmNlIG9iamVjdCB0byB1c2UgdG8gYnVpbGQgcmVzb3VyY2VMaW5rICoqL1xuICByZXNvdXJjZTogU2NyaXB0dXJlUmVzb3VyY2V8dW5kZWZpbmVkO1xuICAvKiogaWYgdHJ1ZSB0aGVuIGZldGNoIHRoZSBlbnRpcmUgYm9vayAqL1xuICB3aG9sZUJvb2s6IGJvb2xlYW47XG4gIC8qKiBpZiB0cnVlIHRoZW4gc2V0dGluZ3MgYXJlIHJlYWR5IGZvciBmZXRjaGluZyBkYXRhICovXG4gIHJlYWR5Rm9yRmV0Y2g6IGJvb2xlYW47XG59XG5cbi8qKlxuICogZXh0cmFjdCBicmFuY2ggZnJvbSByZXNvdXJjZSBsaW5rXG4gKiBAcGFyYW0gcmVzb3VyY2VMaW5rXG4gKi9cbmZ1bmN0aW9uIGdldEJyYW5jaE5hbWUocmVzb3VyY2VMaW5rOiBzdHJpbmcpIHtcbiAgbGV0IGJyYW5jaCA9IG51bGxcbiAgcmVzb3VyY2VMaW5rID0gcmVzb3VyY2VMaW5rIHx8ICcnXG4gIGNvbnN0IHBhcnRzID0gcmVzb3VyY2VMaW5rLnNwbGl0KCc/cmVmPScpXG5cbiAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHsgLy8gaWYgcmVmIHBhcmFtZXRlciBmb3VuZCwgZ2V0IGJyYW5jaCBuYW1lIGFmdGVyXG4gICAgYnJhbmNoID0gcGFydHM/LlsxXVxuICB9IGVsc2UgeyAvLyBmYWxsIGJhY2sgdG8gdXNpbmcgdXNlUnNyYyBmb3JtYXQgc3VjaCBhcyBcInVuZm9sZGluZ1dvcmQvZW4vdXN0L21hc3RlclwiXG4gICAgY29uc3QgX3BhcnRzID0gcmVzb3VyY2VMaW5rLnNwbGl0KCcvJylcbiAgICBicmFuY2ggPSBfcGFydHM/LlszXVxuICB9XG4gIHJldHVybiBicmFuY2hcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugc3RyaW5nXG4gKiBAcGFyYW0ge3N0cmluZ30gcmVmU3RyIC0gaW4gZm9ybWF0IDxjaGFwdGVyPjo8dmVyc2U+XG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBpZiAoYm9va09iamVjdHMpIHtcbiAgICBsZXQgdmVyc2VzID0gZ2V0VmVyc2VzKGJvb2tPYmplY3RzLmNoYXB0ZXJzLCByZWZTdHIpXG5cbiAgICBpZiAobGFuZ3VhZ2VJZCA9PT0gJ2VsLXgta29pbmUnIHx8IGxhbmd1YWdlSWQgPT09ICdoYm8nKSB7XG4gICAgICB2ZXJzZXMgPSB2ZXJzZXMubWFwKHZlcnNlID0+IHtcbiAgICAgICAgaWYgKCB2ZXJzZT8udmVyc2VEYXRhPy52ZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBsZXQgdmVyc2VPYmplY3RzXyA9IGNvcmUub2NjdXJyZW5jZUluamVjdFZlcnNlT2JqZWN0cyggdmVyc2UudmVyc2VEYXRhLnZlcnNlT2JqZWN0cylcbiAgICAgICAgICB2ZXJzZU9iamVjdHNfID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2ZXJzZU9iamVjdHNfKVxuICAgICAgICAgIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMgPSB2ZXJzZU9iamVjdHNfXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZlcnNlXG4gICAgICB9KVxuICAgIH1cblxuICAgIHJldHVybiB2ZXJzZXNcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIGdldCB0aGUgdmVyc2Ugb2JqZWN0cyBmb3IgdGhlIHJlZmVyZW5jZSBvYmplY3RcbiAqIEBwYXJhbSB7b2JqZWN0fSByZWZlcmVuY2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBib29rT2JqZWN0cyAtIHBhcnNlZCB1c2ZtIGZvciBib29rXG4gKiBAcGFyYW0ge3N0cmluZ30gbGFuZ3VhZ2VJZFxuICogQHJldHVybiB7YXJyYXl8bnVsbH0gLSBvZiB2ZXJzZU9iamVjdHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIGJvb2tPYmplY3RzLCBsYW5ndWFnZUlkKSB7XG4gIGNvbnN0IHJlZlN0ciA9IGAke3JlZmVyZW5jZS5jaGFwdGVyfToke3JlZmVyZW5jZS52ZXJzZX1gXG4gIHJldHVybiBnZXRWZXJzZXNGb3JSZWZTdHIocmVmU3RyLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZSh7IC8vIGhvb2sgZm9yIGZldGNoaW5nIHNjcmlwdHVyZVxuICBjb25maWcsXG4gIHJlYWR5Rm9yRmV0Y2gsXG4gIHJlZmVyZW5jZSxcbiAgcmVzb3VyY2U6IHJlc291cmNlXyxcbiAgcmVzb3VyY2VMaW5rOiByZXNvdXJjZUxpbmtfLFxuICB3aG9sZUJvb2sgPSBmYWxzZSxcbn0gOiBQcm9wcykge1xuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSB1c2VTdGF0ZSh7XG4gICAgYmlibGVVc2ZtOiBudWxsLFxuICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgIGZldGNoQ291bnQ6IDAsXG4gICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgZmV0Y2hlZEJvb2s6ICcnLFxuICAgIGZldGNoUGFyYW1zOiB7XG4gICAgICBjb25maWc6IHt9LFxuICAgICAgcmVmZXJlbmNlOiB7fSxcbiAgICAgIHJlc291cmNlTGluazogJycsXG4gICAgfSxcbiAgICBpZ25vcmVTaGE6IG51bGwsXG4gICAgaW5pdGlhbGl6ZWQ6IGZhbHNlLFxuICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgIGJvb2tPYmplY3RzOiBudWxsLFxuICAgICAgYmlibGVVc2ZtOiBudWxsLFxuICAgICAgY29udGVudDogbnVsbCxcbiAgICAgIGZldGNoUmVzcG9uc2U6IG51bGwsXG4gICAgICBmZXRjaGVkUmVzb3VyY2VzOiBudWxsLFxuICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgIGxvYWRpbmdDb250ZW50OiBmYWxzZSxcbiAgICAgIHJlc291cmNlOiBudWxsLFxuICAgICAgc2hhOiBudWxsLFxuICAgICAgdXJsOiBudWxsLFxuICAgIH0sXG4gICAgdmVyc2VzRm9yUmVmOiBbXSxcbiAgfSlcblxuICBjb25zdCB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBicmFuY2ggPSAnbWFzdGVyJyxcbiAgICByZWYgPSBudWxsLFxuICB9ID0gcmVzb3VyY2VfIHx8IHt9XG5cbiAgY29uc3QgeyBwcm9qZWN0SWQ6IGJvb2tJZH0gPSByZWZlcmVuY2UgfHwge31cblxuICBjb25zdCB7XG4gICAgYmlibGVVc2ZtLFxuICAgIGJvb2tPYmplY3RzLFxuICAgIGZldGNoQ291bnQsXG4gICAgZmV0Y2hlZCxcbiAgICBmZXRjaGVkQm9vayxcbiAgICBmZXRjaFBhcmFtcyxcbiAgICBpZ25vcmVTaGEsXG4gICAgaW5pdGlhbGl6ZWQsXG4gICAgcmVzb3VyY2VTdGF0ZSxcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBmZXRjaGVkUmVzb3VyY2VzID0gcmVzb3VyY2VTdGF0ZT8uZmV0Y2hlZFJlc291cmNlc1xuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVhZHlGb3JGZXRjaCkge1xuICAgICAgaW5pdGlhdGVCb29rRmV0Y2goKVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluaXRpYXRlQm9va0ZldGNoKCkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIHJlYWR5Rm9yRmV0Y2ggdHJ1ZSwgaW5pdGlhbGl6aW5nYClcbiAgICAgIGxldCByZXNvdXJjZUxpbmsgPSByZWFkeUZvckZldGNoICYmIHJlc291cmNlTGlua19cblxuICAgICAgaWYgKCFyZXNvdXJjZUxpbmtfICYmIHJlc291cmNlXykge1xuICAgICAgICBjb25zdCByZWZfID0gcmVmIHx8IGJyYW5jaFxuXG4gICAgICAgIHJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICAgICAgb3duZXIsXG4gICAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgICByZXNvdXJjZUlkOiBib29rSWQsXG4gICAgICAgICAgcmVmOiByZWZfLFxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICBjb25zdCBib29rUmVmID0geyAuLi5yZWZlcmVuY2UgfVxuXG4gICAgICBpZiAod2hvbGVCb29rKSB7XG4gICAgICAgIGRlbGV0ZSBib29rUmVmLmNoYXB0ZXIgLy8gcmVtb3ZlIHRoZSBjaGFwdGVyIGFuZCB2ZXJzZSBzbyB0aGUgd2hvbGUgYm9vayBpcyBmZXRjaGVkXG4gICAgICAgIGRlbGV0ZSBib29rUmVmLnZlcnNlXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZUxpbmsgIT09IGZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmspIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke3Jlc291cmNlTGlua199YClcbiAgICAgIH0gZWxzZSBpZiAoYm9va1JlZiAhPT0gZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSkge1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gYm9vayBjaGFuZ2VkIHRvICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtyZXNvdXJjZUxpbmt9YClcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3RmV0Y2hQYXJhbXMgPSB7XG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgcmVmZXJlbmNlOiBib29rUmVmLFxuICAgICAgICByZXNvdXJjZUxpbmssXG4gICAgICB9XG5cbiAgICAgIGlmICghaXNFcXVhbChuZXdGZXRjaFBhcmFtcywgZmV0Y2hQYXJhbXMpKSB7XG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICBmZXRjaFBhcmFtczogbmV3RmV0Y2hQYXJhbXMsXG4gICAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgICAgaW5pdGlhbGl6ZWQ6IHRydWUsXG4gICAgICAgIH0pXG5cbiAgICAgICAgZmV0Y2hCb29rKG5ld0ZldGNoUGFyYW1zKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIHJlYWR5Rm9yRmV0Y2gsXG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICBib29rSWQsXG4gICAgYnJhbmNoLFxuICAgIHJlZixcbiAgXSlcblxuICAvKipcbiAgICogZG8gYSBmZXRjaCBvZiBtYW5pZmVzdCBhbmQgYm9vayBvZiB0aGUgYmlibGUgc3BlY2lmaWVkIGluIGZldGNoUGFyYW1zXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaWdub3JlU2hhIC0gb3B0aW9uYWwgcHJldmlvdXMgc2hhIC0gaWdub3JlIHJlc3BvbnNlcyB0aGF0IGNhbWUgYmFjayBmb3IgdGhpcyBwcmV2aW91cyBib29rIGNvbW1pdFxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hCb29rKGZldGNoUGFyYW1zLCBpZ25vcmVTaGEgPSBudWxsKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZldGNoTGluayA9IGAke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmt9LyR7ZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZT8ucHJvamVjdElkfWBcbiAgICAgIGNvbnN0IHNoYVRvQmVJZ25vcmVkID0gaWdub3JlU2hhID09PSBudWxsIHx8IGlnbm9yZVNoYSA9PT0gcmVzb3VyY2VTdGF0ZT8uc2hhIC8vIHdlIHdpbGwgcmVsb2FkIGlmIGlnbm9yZVNoYSBnaXZlbiBhbmQgaXQgbWF0Y2hlcyBjdXJyZW50IHNoYVxuXG4gICAgICBpZiAoKGZldGNoTGluayA9PT0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2U/LnJlc291cmNlTGluaykgJiYgIXNoYVRvQmVJZ25vcmVkKSB7IC8vIHNlZSBpZiB3ZSBhbHJlYWR5IGZldGNoZWQgdGhpc1xuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgX2ZldGNoQ291bnQgPSBmZXRjaENvdW50ICsgMVxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIEZFVENISU5HIGJpYmxlICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBmZXRjaENvdW50OiBfZmV0Y2hDb3VudCxcbiAgICAgICAgZmV0Y2hlZDogZmFsc2UsXG4gICAgICAgIGlnbm9yZVNoYSxcbiAgICAgICAgcmVzb3VyY2VTdGF0ZTogeyBsb2FkaW5nUmVzb3VyY2U6IHRydWUgfSxcbiAgICAgIH0pXG5cbiAgICAgIC8vIGZldGNoIG1hbmlmZXN0IGRhdGFcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IF9yZXNvdXJjZSA9IGF3YWl0IGNvcmUucmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zKVxuXG4gICAgICBpZiAoIV9yZXNvdXJjZT8ubWFuaWZlc3QgfHwgIV9yZXNvdXJjZT8ucHJvamVjdD8uZmlsZSkge1xuICAgICAgICBjb25zdCBlcnJvck1zZyA9IF9yZXNvdXJjZT8ubWFuaWZlc3QgPyAncGFyc2luZyByZXNvdXJjZSBtYW5pZmVzdCcgOiAnbG9hZGluZyByZXNvdXJjZSBtYW5pZmVzdCdcbiAgICAgICAgY29uc29sZS53YXJuKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBlcnJvciAke2Vycm9yTXNnfWAsIGZldGNoUGFyYW1zIClcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICByZXNvdXJjZTogX3Jlc291cmNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gTE9BREVEIGJpYmxlIG1hbmlmZXN0LCBmZXRjaGluZyBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgYXdhaXQgZGVsYXkoMTAwKVxuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUoKVxuICAgICAgLy8gcGFyc2UgYm9vayB1c2ZtXG4gICAgICBjb25zdCBiaWJsZVVzZm0gPSByZXNwb25zZSAmJiBjb3JlLmdldFJlc3BvbnNlRGF0YShyZXNwb25zZSlcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzID0gYmlibGVVc2ZtICYmIHVzZm1qcy50b0pTT04oYmlibGVVc2ZtKSAvLyBjb252ZXJ0IHRvIGJpYmxlIG9iamVjdHNcblxuICAgICAgaWYgKCFib29rT2JqZWN0cykge1xuICAgICAgICBjb25zdCBlcnJvck1zZyA9IGJpYmxlVXNmbSA/ICdmZXRjaGluZyBib29rIG9mIHRoZSBiaWJsZScgOiAncGFyc2luZyBib29rIG9mIHRoZSBiaWJsZSdcbiAgICAgICAgY29uc29sZS53YXJuKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBlcnJvciAke2Vycm9yTXNnfWAsIGZldGNoUGFyYW1zIClcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICByZXNvdXJjZTogX3Jlc291cmNlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pXG4gICAgICAgIHJldHVyblxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IG5hbWUsIHNoYSwgdXJsIH0gPSByZXNwb25zZT8uZGF0YSB8fCB7fVxuXG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gTE9BREVEIGJpYmxlIGJvb2sgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmt9IGFuZCByZXNvdXJjZUxpbmtfPSR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMpXG4gICAgICBzZXRTdGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgICBmZXRjaGVkUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIC4uLl9yZXNvdXJjZSxcbiAgICAgICAgICAgICAgYmlibGVVc2ZtLFxuICAgICAgICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHJlZmVyZW5jZTogZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZSxcbiAgICAgICAgICAgICAgc2hhLFxuICAgICAgICAgICAgICB1cmwsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5lcnJvcihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gaGFyZCBlcnJvciBsb2FkaW5nIHJlc291cmNlYCwgZmV0Y2hQYXJhbXMsIGUgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIC0gZm9yICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlYWR5Rm9yRmV0Y2ggaXMgbm93ICR7cmVhZHlGb3JGZXRjaH1gKVxuICB9LCBbcmVhZHlGb3JGZXRjaF0pXG5cbiAgLyoqXG4gICAqIG1ha2Ugc3VyZSBsYXN0IGZldGNoIHJlc3BvbnNlIGlzIGZvciBjdXJyZW50IGJvb2svYnJhbmNoXG4gICAqL1xuICBmdW5jdGlvbiB2YWxpZGF0ZVJlc3BvbnNlKCkge1xuICAgIGxldCBpc1NhbWVCb29rID0gZmFsc2VcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3QgZXhwZWN0ZWRCb29rSWQgPSBib29rSWQgfHwgJ3p6eidcbiAgICBjb25zdCBmZXRjaGVkQm9vayA9IGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmZXRjaGVkUmVzb3VyY2VzPy5uYW1lKVxuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gQ3VycmVudCBib29rSWQgaXMgJHtib29rSWR9IGFuZCBzZWVpbmcgJHtmZXRjaGVkQm9va30gaW4gVVNGTWApXG4gICAgaXNTYW1lQm9vayA9IGZldGNoZWRCb29rPy50b0xvd2VyQ2FzZSgpPy5pbmNsdWRlcyhib29rSWQpXG5cbiAgICBjb25zdCBzaGEgPSBmZXRjaGVkUmVzb3VyY2VzPy5zaGEgfHwgbnVsbFxuICAgIGNvbnN0IHVybCA9IGZldGNoZWRSZXNvdXJjZXM/LnVybCB8fCBudWxsXG5cbiAgICBpZiAoaXNTYW1lQm9vaykgeyAvLyBhbHNvIG1ha2Ugc3VyZSBpdCBpcyB0aGUgc2FtZSBicmFuY2hcbiAgICAgIGNvbnN0IGZldGNoZWRCcmFuY2ggPSBnZXRCcmFuY2hOYW1lKHVybClcbiAgICAgIGNvbnN0IGZldGNoaW5nQnJhbmNoID0gZ2V0QnJhbmNoTmFtZShmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKVxuXG4gICAgICBpZiAoZmV0Y2hlZEJyYW5jaCAhPT0gZmV0Y2hpbmdCcmFuY2gpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgaW52YWxpZCBicmFuY2gsIGV4cGVjdGVkIGJyYW5jaCBpcyAke2ZldGNoaW5nQnJhbmNofSwgYnV0IGZldGNoZWRCcmFuY2ggaXMgJHtmZXRjaGVkQnJhbmNofWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgICAgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIC0gIGludmFsaWQgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH0sIGJ1dCByZWNlaXZlZCBib29rIG5hbWUgJHtmZXRjaGVkQm9va31gLCB7IHNoYSwgdXJsIH0pXG4gICAgfVxuXG4gICAgaWYgKGlnbm9yZVNoYSA9PT0gc2hhKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIHRoZSBzaGEgaXMgdGhlIHNhbWUgYXMgdGhlIGlnbm9yZSBzaGEgJHtzaGF9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHtcbiAgICAgIGNvbnN0IGJpYmxlVXNmbV8gPSBmZXRjaGVkUmVzb3VyY2VzPy5iaWJsZVVzZm1cbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzID0gZmV0Y2hlZFJlc291cmNlcz8uYm9va09iamVjdHNcbiAgICAgIGNvbnN0IHZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKGJvb2tPYmplY3RzKVxuXG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIGNvcnJlY3QgYm9vaywgZXhwZWN0ZWRCb29rSWQgaXMgJHtleHBlY3RlZEJvb2tJZH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgZmV0Y2hlZDogdHJ1ZSxcbiAgICAgICAgZmV0Y2hlZEJvb2s6IGV4cGVjdGVkQm9va0lkLFxuICAgICAgICBpZ25vcmVTaGE6IG51bGwsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHtcbiAgICAgICAgICBib29rT2JqZWN0cyxcbiAgICAgICAgICBiaWJsZVVzZm06IGJpYmxlVXNmbV8sXG4gICAgICAgICAgbG9hZGluZ1Jlc291cmNlOiBmYWxzZSxcbiAgICAgICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IGZldGNoZWRSZXNvdXJjZXMsXG4gICAgICAgICAgc2hhLFxuICAgICAgICAgIHVybCxcbiAgICAgICAgfSxcbiAgICAgICAgdmVyc2VzRm9yUmVmLFxuICAgICAgfVxuXG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICB9XG4gIH1cblxuICB1c2VEZWVwQ29tcGFyZUVmZmVjdCgoKSA9PiB7IC8vIHZhbGlkYXRlIHJlc3BvbnNlIHRvIG1ha2Ugc3VyZSBmcm9tIGxhdGVzdCByZXF1ZXN0XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2ggJiYgZmV0Y2hlZFJlc291cmNlcykge1xuICAgICAgaWYgKCFmZXRjaGVkICYmIGZldGNoZWRSZXNvdXJjZXM/LmZldGNoQ291bnQgPT09IGZldGNoQ291bnQpIHtcbiAgICAgICAgZGVsYXkoNTAwKS50aGVuKCgpID0+IHtcbiAgICAgICAgICB2YWxpZGF0ZVJlc3BvbnNlKClcbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFt7IHJlYWR5Rm9yRmV0Y2gsIGZldGNoZWRSZXNvdXJjZXMgfV0pXG5cbiAgY29uc3QgcmVzb3VyY2UgPSByZXNvdXJjZVN0YXRlPy5yZXNvdXJjZVxuICBjb25zdCB7IHRpdGxlLCB2ZXJzaW9uIH0gPSBwYXJzZVJlc291cmNlTWFuaWZlc3QocmVzb3VyY2UpXG4gIGNvbnN0IGxvYWRpbmcgPSByZXNvdXJjZVN0YXRlPy5sb2FkaW5nUmVzb3VyY2UgfHwgcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ0NvbnRlbnQgfHwgIXJlYWR5Rm9yRmV0Y2hcbiAgY29uc3QgY29udGVudE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2VTdGF0ZT8uYmlibGVVc2ZtXG4gIGNvbnN0IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJvb2tPYmplY3RzXG4gIGNvbnN0IG1hbmlmZXN0Tm90Rm91bmRFcnJvciA9ICFyZXNvdXJjZT8ubWFuaWZlc3RcbiAgY29uc3QgaW52YWxpZE1hbmlmZXN0RXJyb3IgPSAhdGl0bGUgfHwgIXZlcnNpb24gfHwgIWxhbmd1YWdlSWRcbiAgY29uc3QgZXJyb3IgPSByZWFkeUZvckZldGNoICYmIGluaXRpYWxpemVkICYmICFsb2FkaW5nICYmXG4gICAgKGNvbnRlbnROb3RGb3VuZEVycm9yIHx8IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yIHx8IG1hbmlmZXN0Tm90Rm91bmRFcnJvciB8fCBpbnZhbGlkTWFuaWZlc3RFcnJvcilcbiAgY29uc3QgcmVzb3VyY2VTdGF0dXMgPSB7XG4gICAgW0xPQURJTkdfU1RBVEVdOiBsb2FkaW5nLFxuICAgIFtDT05URU5UX05PVF9GT1VORF9FUlJPUl06IGNvbnRlbnROb3RGb3VuZEVycm9yLFxuICAgIFtTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl06IHNjcmlwdHVyZU5vdExvYWRlZEVycm9yLFxuICAgIFtNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXTogbWFuaWZlc3ROb3RGb3VuZEVycm9yLFxuICAgIFtJTlZBTElEX01BTklGRVNUX0VSUk9SXTogaW52YWxpZE1hbmlmZXN0RXJyb3IsXG4gICAgW0VSUk9SX1NUQVRFXTogZXJyb3IsXG4gICAgW0lOSVRJQUxJWkVEX1NUQVRFXTogaW5pdGlhbGl6ZWQsXG4gIH1cblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghcmVhZHlGb3JGZXRjaCkge1xuICAgICAgaWYgKGluaXRpYWxpemVkKSB7XG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogZmFsc2UgfSlcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFpbml0aWFsaXplZCkge1xuICAgICAgaWYgKGxvYWRpbmcpIHsgLy8gb25jZSBmaXJzdCBsb2FkIGhhcyBiZWd1biwgd2UgYXJlIGluaXRpYWxpemVkXG4gICAgICAgIHNldFN0YXRlKHsgaW50aWFsaXplZDogdHJ1ZSB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2xvYWRpbmcsIHJlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBnZXQgdmVyc2VzIGZvciByZWZcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0clxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGVudF9cbiAgICovXG4gIGZ1bmN0aW9uIF9nZXRWZXJzZXNGb3JSZWYocmVmU3RyLCBjb250ZW50XyA9IGJvb2tPYmplY3RzKSB7XG4gICAgaWYgKGNvbnRlbnRfKSB7XG4gICAgICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgY29udGVudF8sIGxhbmd1YWdlSWQpXG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogdXBkYXRlIHZlcnNlIGRhdGEgZm9yIGN1cnJlbnQgYm9va1xuICAgKiBAcGFyYW0ge3N0cmluZ30gY2hhcHRlclxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2VcbiAgICogQHBhcmFtIHtvYmplY3R9IHZlcnNlRGF0YVxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2UoY2hhcHRlciwgdmVyc2UsIHZlcnNlRGF0YSkge1xuICAgIGlmIChib29rT2JqZWN0cykge1xuICAgICAgY29uc3QgYm9va09iamVjdHNfID0geyAuLi5ib29rT2JqZWN0cyB9IC8vIHNoYWxsb3cgY29weVxuXG4gICAgICBpZiAoYm9va09iamVjdHNfPy5jaGFwdGVycykge1xuICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnMgPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVycyB9IC8vIHNoYWxsb3cgY29weSBjaGFwdGVyc1xuXG4gICAgICAgIGlmIChib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0pIHtcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gPSB7IC4uLmJvb2tPYmplY3RzXy5jaGFwdGVyc1tjaGFwdGVyXSB9IC8vIHNoYWxsb3cgY29weSB2ZXJzZXNcbiAgICAgICAgICBib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl1bdmVyc2VdID0gdmVyc2VEYXRhXG4gICAgICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogYm9va09iamVjdHNfIH0pXG4gICAgICAgICAgcmV0dXJuIGJvb2tPYmplY3RzX1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZ2V0IHRoZSB2ZXJzZXMgZm9yIGN1cnJlbnQgcmVmZXJlbmNlIG9yIHJlZmVyZW5jZSByYW5nZVxuICAgKiBAcGFyYW0ge29iamVjdH0gX2Jvb2tPYmplY3RzXG4gICAqL1xuICBmdW5jdGlvbiBmZXRjaFZlcnNlc0ZvclJlZihfYm9va09iamVjdHMgPSBib29rT2JqZWN0cykge1xuICAgIGxldCBuZXdWZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKF9ib29rT2JqZWN0cykge1xuICAgICAgbmV3VmVyc2VzRm9yUmVmID0gZ2V0VmVyc2VzRm9yUmVmKHJlZmVyZW5jZSwgX2Jvb2tPYmplY3RzLCBsYW5ndWFnZUlkKVxuICAgICAgcmV0dXJuIG5ld1ZlcnNlc0ZvclJlZlxuICAgIH1cblxuICAgIHJldHVybiBudWxsXG4gIH1cblxuICAvKipcbiAgICogZm9yY2UgcmVsb2FkIG9mIHJlc291cmNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfHVuZGVmaW5lZH0gaWdub3JlU2hhIC0gb3B0aW9uYWwgc2hhIHRvIGlnbm9yZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IHJlZiAtIG9wdGlvbmFsIHJlZmVyZW5jZSB0byBmZXRjaFxuICAgKi9cbiAgZnVuY3Rpb24gcmVsb2FkUmVzb3VyY2UoaWdub3JlU2hhID0gbnVsbCwgcmVmID0gbnVsbCkge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUucmVsb2FkUmVzb3VyY2UoKSBpZ25vcmVTaGE6ICR7aWdub3JlU2hhfWAgKVxuICAgIGNvbnN0IF9mZXRjaFBhcmFtcyA9IHsgLi4uZmV0Y2hQYXJhbXMgfVxuXG4gICAgaWYgKHJlZiAmJiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG93bmVyLFxuICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICByZXNvdXJjZUlkLFxuICAgICAgICByZWY6IF9yZWYsXG4gICAgICB9ID0gcGFyc2VSZXNvdXJjZUxpbmsoZmV0Y2hQYXJhbXMucmVzb3VyY2VMaW5rKVxuXG4gICAgICBpZiAocmVmICE9PSBfcmVmKSB7IC8vIGlmIHJlZiBjaGFuZ2VkLCB1cGRhdGUgcmVzb3VyY2VsaW5rXG4gICAgICAgIGNvbnN0IF9yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgICByZWYsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUucmVsb2FkUmVzb3VyY2UoKSBvbGQgcmVmIGlzIGRpZmZlcmVudCAke19yZWZ9LCBzd2l0Y2hpbmcgdG8gbG9hZCByZWY6ICR7cmVmfSwgbmV3IHJlc291cmNlTGluazogJHtfcmVzb3VyY2VMaW5rfWAgKVxuICAgICAgICBfZmV0Y2hQYXJhbXMucmVzb3VyY2VMaW5rID0gX3Jlc291cmNlTGlua1xuICAgICAgfVxuICAgIH1cbiAgICBmZXRjaEJvb2soX2ZldGNoUGFyYW1zLCBpZ25vcmVTaGEpXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIGNvbnN0IGN1cnJlbnRCb29rUmVmID0gZmV0Y2hQYXJhbXM/LnJlZmVyZW5jZT8ucHJvamVjdElkXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoY3VycmVudEJvb2tSZWYpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZmV0Y2hlZCBib29rIGNoYW5nZWQgdG8gJHtjdXJyZW50Qm9va1JlZn0sICR7cmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcyApXG4gICAgICBzZXRTdGF0ZSh7IGJvb2tPYmplY3RzOiBudWxsLCBiaWJsZVVzZm06IG51bGwgfSlcbiAgICB9XG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbY3VycmVudEJvb2tSZWZdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBib29rIHJlZiBjaGFuZ2VkIHRvICR7Ym9va0lkfSwgJHtyZXNvdXJjZUxpbmtffWApXG4gICAgLy8gQHRzLWlnbm9yZVxuICB9LCBbYm9va0lkXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICcnXG4gICAgY29uc3QgZmV0Y2hlZEJvb2tTYW1lID0gZmV0Y2hlZEJvb2sgJiYgKGZldGNoZWRCb29rID09PSBleHBlY3RlZEJvb2tJZClcbiAgICBsZXQgX3ZlcnNlc0ZvclJlZiA9IFtdXG5cbiAgICBpZiAoIWZldGNoZWRCb29rU2FtZSkge1xuICAgICAgLy8gaWYgKGV4cGVjdGVkQm9va0lkICYmIGZldGNoZWRCb29rKSB7XG4gICAgICAvLyAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgZXhwZWN0ZWQgYm9vayAke2V4cGVjdGVkQm9va0lkfSBidXQgZmV0Y2hlZCBib29rIHdhcyAke2ZldGNoZWRCb29rfSAtIGNsZWFyaW5nYClcbiAgICAgIC8vIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgX2Jvb2tPYmplY3RzID0gZmV0Y2hlZEJvb2tTYW1lID8gYm9va09iamVjdHMgOiBudWxsXG4gICAgICBfdmVyc2VzRm9yUmVmID0gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzKVxuICAgICAgLy8gY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSBfYm9va09iamVjdHMgaXMgJHshIV9ib29rT2JqZWN0c30gYW5kIGJvb2tzIGFyZSB0aGUgc2FtZSAke2ZldGNoZWRCb29rfWAsIHsgY29udGVudCwgZmV0Y2hQYXJhbXMgfSlcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoX3ZlcnNlc0ZvclJlZiwgdmVyc2VzRm9yUmVmKSkge1xuICAgICAgc2V0U3RhdGUoeyB2ZXJzZXNGb3JSZWY6IF92ZXJzZXNGb3JSZWYgfSlcbiAgICB9XG4gIH0sIFtyZWZlcmVuY2VdKVxuXG4gIHJldHVybiB7XG4gICAgYmlibGVVc2ZtLFxuICAgIGJvb2tPYmplY3RzLFxuICAgIGdldFZlcnNlc0ZvclJlZjogX2dldFZlcnNlc0ZvclJlZixcbiAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgcmVsb2FkUmVzb3VyY2UsXG4gICAgcmVzb3VyY2VMaW5rOiBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rLFxuICAgIHJlc291cmNlU3RhdGUsIC8vIHN0YXRlIGluZm9ybWF0aW9uIGZvciBsYXRlc3QgZmV0Y2hlZCByZXNvdXJjZVxuICAgIHJlc291cmNlU3RhdHVzLCAvLyBzdGF0dXMgZmxhZ3MgZm9yIGZldGNoZWQgcmVzb3VyY2VcbiAgICB0aXRsZSxcbiAgICB1cGRhdGVWZXJzZSxcbiAgICB2ZXJzaW9uLFxuICAgIHZlcnNlc0ZvclJlZixcbiAgfVxufVxuIl19
675
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmUudHN4Il0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwiY29yZSIsInVzZm1qcyIsIkNPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SIiwiRVJST1JfU1RBVEUiLCJJTklUSUFMSVpFRF9TVEFURSIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwidXNlRGVlcENvbXBhcmVFZmZlY3QiLCJnZXRWZXJzZXMiLCJpc0VxdWFsIiwiZGVsYXkiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZ2V0UmVzb3VyY2VMaW5rIiwicGFyc2VSZXNvdXJjZUxpbmsiLCJTZXJ2ZXJDb25maWciLCJTY3JpcHR1cmVSZXNvdXJjZSIsIlNjcmlwdHVyZVJlZmVyZW5jZSIsInBhcnNlUmVzb3VyY2VNYW5pZmVzdCIsImdldEJyYW5jaE5hbWUiLCJyZXNvdXJjZUxpbmsiLCJicmFuY2giLCJwYXJ0cyIsInNwbGl0IiwibGVuZ3RoIiwiX3BhcnRzIiwiZ2V0VmVyc2VzRm9yUmVmU3RyIiwicmVmU3RyIiwiYm9va09iamVjdHMiLCJsYW5ndWFnZUlkIiwidmVyc2VzIiwiY2hhcHRlcnMiLCJtYXAiLCJ2ZXJzZSIsInZlcnNlRGF0YSIsInZlcnNlT2JqZWN0cyIsInZlcnNlT2JqZWN0c18iLCJvY2N1cnJlbmNlSW5qZWN0VmVyc2VPYmplY3RzIiwiZ2V0VmVyc2VzRm9yUmVmIiwicmVmZXJlbmNlIiwiY2hhcHRlciIsInVzZVNjcmlwdHVyZSIsImNvbmZpZyIsInJlYWR5Rm9yRmV0Y2giLCJyZXNvdXJjZV8iLCJyZXNvdXJjZSIsInJlc291cmNlTGlua18iLCJ3aG9sZUJvb2siLCJiaWJsZVVzZm0iLCJmZXRjaENvdW50IiwiZmV0Y2hlZCIsImZldGNoZWRCb29rIiwiZmV0Y2hQYXJhbXMiLCJpZ25vcmVTaGEiLCJpbml0aWFsaXplZCIsInJlc291cmNlU3RhdGUiLCJjb250ZW50IiwiZmV0Y2hSZXNwb25zZSIsImZldGNoZWRSZXNvdXJjZXMiLCJsb2FkaW5nUmVzb3VyY2UiLCJsb2FkaW5nQ29udGVudCIsInNoYSIsInVybCIsInZlcnNlc0ZvclJlZiIsInN0YXRlIiwic2V0U3RhdGVfIiwib3duZXIiLCJyZWYiLCJib29rSWQiLCJwcm9qZWN0SWQiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiaW5pdGlhdGVCb29rRmV0Y2giLCJjb25zb2xlIiwibG9nIiwicmVmXyIsInJlc291cmNlSWQiLCJib29rUmVmIiwibmV3RmV0Y2hQYXJhbXMiLCJmZXRjaEJvb2siLCJmZXRjaExpbmsiLCJmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSIsIl9mZXRjaENvdW50IiwicmVzb3VyY2VGcm9tUmVzb3VyY2VMaW5rIiwiX3Jlc291cmNlIiwibWFuaWZlc3QiLCJwcm9qZWN0IiwiZmlsZSIsImVycm9yTXNnIiwid2FybiIsInJlc3BvbnNlIiwiZ2V0UmVzcG9uc2VEYXRhIiwidG9KU09OIiwiZGF0YSIsIm5hbWUiLCJlcnJvciIsInZhbGlkYXRlUmVzcG9uc2UiLCJpc1NhbWVCb29rIiwiZXhwZWN0ZWRCb29rSWQiLCJ0b0xvd2VyQ2FzZSIsImluY2x1ZGVzIiwiZmV0Y2hlZEJyYW5jaCIsImZldGNoaW5nQnJhbmNoIiwiYmlibGVVc2ZtXyIsImZldGNoVmVyc2VzRm9yUmVmIiwidGhlbiIsInRpdGxlIiwidmVyc2lvbiIsImxvYWRpbmciLCJjb250ZW50Tm90Rm91bmRFcnJvciIsInNjcmlwdHVyZU5vdExvYWRlZEVycm9yIiwibWFuaWZlc3ROb3RGb3VuZEVycm9yIiwiaW52YWxpZE1hbmlmZXN0RXJyb3IiLCJyZXNvdXJjZVN0YXR1cyIsImludGlhbGl6ZWQiLCJfZ2V0VmVyc2VzRm9yUmVmIiwiY29udGVudF8iLCJ1cGRhdGVWZXJzZSIsImJvb2tPYmplY3RzXyIsIl9ib29rT2JqZWN0cyIsIm5ld1ZlcnNlc0ZvclJlZiIsInJlbG9hZFJlc291cmNlIiwiX2ZldGNoUGFyYW1zIiwiX3JlZiIsIl9yZXNvdXJjZUxpbmsiLCJjdXJyZW50Qm9va1JlZiIsImZldGNoZWRCb29rU2FtZSIsIl92ZXJzZXNGb3JSZWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBLFNBQ0VBLFNBREYsRUFFRUMsUUFGRixRQUdPLE9BSFA7QUFJQSxTQUFTQyxJQUFULFFBQXFCLHlCQUFyQjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIsU0FBbkI7QUFDQSxTQUNFQyx1QkFERixFQUVFQyxXQUZGLEVBR0VDLGlCQUhGLEVBSUVDLHNCQUpGLEVBS0VDLGFBTEYsRUFNRUMseUJBTkYsRUFPRUMsMEJBUEYsUUFRTyx1QkFSUDtBQVNBLE9BQU9DLG9CQUFQLE1BQWlDLHlCQUFqQztBQUNBLFNBQVNDLFNBQVQsUUFBMEIsdUJBQTFCO0FBQ0EsT0FBTyxLQUFLQyxPQUFaLE1BQXlCLFlBQXpCO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQixVQUF0QjtBQUNBLFNBQ0VDLG1CQURGLEVBRUVDLDJCQUZGLEVBR0VDLGVBSEYsRUFJRUMsaUJBSkYsUUFLTyw0QkFMUDtBQU1BLFNBQ0VDLFlBREYsRUFFRUMsaUJBRkYsRUFHRUMsa0JBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MscUJBQVQsUUFBc0MseUJBQXRDOztBQWlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVNDLGFBQVQsQ0FBdUJDLFlBQXZCLEVBQTZDO0FBQzNDLE1BQUlDLE1BQU0sR0FBRyxJQUFiO0FBQ0FELEVBQUFBLFlBQVksR0FBR0EsWUFBWSxJQUFJLEVBQS9CO0FBQ0EsTUFBTUUsS0FBSyxHQUFHRixZQUFZLENBQUNHLEtBQWIsQ0FBbUIsT0FBbkIsQ0FBZDs7QUFFQSxNQUFJRCxLQUFLLENBQUNFLE1BQU4sR0FBZSxDQUFuQixFQUFzQjtBQUFFO0FBQ3RCSCxJQUFB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QUFhLEdBQUcsRUFBcEI7O0FBRUEsUUFBSSxDQUFDRCxlQUFMLEVBQXNCLENBQ3BCO0FBQ0E7QUFDQTtBQUNELEtBSkQsTUFJTztBQUNMLFVBQU1QLFlBQVksR0FBR08sZUFBZSxHQUFHbkcsV0FBSCxHQUFpQixJQUFyRDs7QUFDQW9HLE1BQUFBLGFBQWEsR0FBR3ZCLGlCQUFpQixDQUFDZSxZQUFELENBQWpDLENBRkssQ0FHTDtBQUNEOztBQUVELFFBQUksQ0FBQy9HLE9BQU8sQ0FBQ3VILGFBQUQsRUFBZ0JqRSxZQUFoQixDQUFaLEVBQTJDO0FBQ3pDTyxNQUFBQSxRQUFRLENBQUM7QUFBRVAsUUFBQUEsWUFBWSxFQUFFaUU7QUFBaEIsT0FBRCxDQUFSO0FBQ0Q7QUFDRixHQWxCUSxFQWtCTixDQUFDekYsU0FBRCxDQWxCTSxDQUFUO0FBb0JBLFNBQU87QUFDTFMsSUFBQUEsU0FBUyxFQUFUQSxTQURLO0FBRUxwQixJQUFBQSxXQUFXLEVBQVhBLFdBRks7QUFHTFUsSUFBQUEsZUFBZSxFQUFFOEUsZ0JBSFo7QUFJTDdFLElBQUFBLFNBQVMsRUFBRWEsV0FBRixhQUFFQSxXQUFGLHVCQUFFQSxXQUFXLENBQUViLFNBSm5CO0FBS0xtRixJQUFBQSxjQUFjLEVBQWRBLGNBTEs7QUFNTHRHLElBQUFBLFlBQVksRUFBRWdDLFdBQUYsYUFBRUEsV0FBRix1QkFBRUEsV0FBVyxDQUFFaEMsWUFOdEI7QUFPTG1DLElBQUFBLGFBQWEsRUFBYkEsYUFQSztBQU9VO0FBQ2YyRCxJQUFBQSxjQUFjLEVBQWRBLGNBUks7QUFRVztBQUNoQlAsSUFBQUEsS0FBSyxFQUFMQSxLQVRLO0FBVUxXLElBQUFBLFdBQVcsRUFBWEEsV0FWSztBQVdMVixJQUFBQSxPQUFPLEVBQVBBLE9BWEs7QUFZTDdDLElBQUFBLFlBQVksRUFBWkE7QUFaSyxHQUFQO0FBY0QiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQge1xuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxufSBmcm9tICdyZWFjdCdcbmltcG9ydCB7IGNvcmUgfSBmcm9tICdzY3JpcHR1cmUtcmVzb3VyY2VzLXJjbCdcbmltcG9ydCB1c2ZtanMgZnJvbSAndXNmbS1qcydcbmltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBFUlJPUl9TVEFURSxcbiAgSU5JVElBTElaRURfU1RBVEUsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQgdXNlRGVlcENvbXBhcmVFZmZlY3QgZnJvbSAndXNlLWRlZXAtY29tcGFyZS1lZmZlY3QnXG5pbXBvcnQgeyBnZXRWZXJzZXMgfSBmcm9tICdiaWJsZS1yZWZlcmVuY2UtcmFuZ2UnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQgeyBkZWxheSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHtcbiAgY2xlYW51cFZlcnNlT2JqZWN0cyxcbiAgZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lLFxuICBnZXRSZXNvdXJjZUxpbmssXG4gIHBhcnNlUmVzb3VyY2VMaW5rLFxufSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7XG4gIFNlcnZlckNvbmZpZyxcbiAgU2NyaXB0dXJlUmVzb3VyY2UsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBwYXJzZVJlc291cmNlTWFuaWZlc3QgfSBmcm9tICcuL3BhcnNlUmVzb3VyY2VNYW5pZmVzdCdcblxuaW50ZXJmYWNlIFByb3BzIHtcbiAgLyoqIHJlZmVyZW5jZSBmb3Igc2NyaXB0dXJlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLyoqIHdoZXJlIHRvIGdldCBkYXRhICoqL1xuICBjb25maWc6IFNlcnZlckNvbmZpZztcbiAgLyoqIG9wdGlvbmFsIGRpcmVjdCBwYXRoIHRvIGJpYmxlIHJlc291cmNlLCBpbiBmb3JtYXQgJHtvd25lcn0vJHtsYW5ndWFnZUlkfS8ke3Byb2plY3RJZH0vJHticmFuY2h9ICoqL1xuICByZXNvdXJjZUxpbms6IHN0cmluZ3x1bmRlZmluZWQ7XG4gIC8qKiBvcHRpb25hbCByZXNvdXJjZSBvYmplY3QgdG8gdXNlIHRvIGJ1aWxkIHJlc291cmNlTGluayAqKi9cbiAgcmVzb3VyY2U6IFNjcmlwdHVyZVJlc291cmNlfHVuZGVmaW5lZDtcbiAgLyoqIGlmIHRydWUgdGhlbiBmZXRjaCB0aGUgZW50aXJlIGJvb2sgKi9cbiAgd2hvbGVCb29rOiBib29sZWFuO1xuICAvKiogaWYgdHJ1ZSB0aGVuIHNldHRpbmdzIGFyZSByZWFkeSBmb3IgZmV0Y2hpbmcgZGF0YSAqL1xuICByZWFkeUZvckZldGNoOiBib29sZWFuO1xufVxuXG4vKipcbiAqIGV4dHJhY3QgYnJhbmNoIGZyb20gcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHJlc291cmNlTGlua1xuICovXG5mdW5jdGlvbiBnZXRCcmFuY2hOYW1lKHJlc291cmNlTGluazogc3RyaW5nKSB7XG4gIGxldCBicmFuY2ggPSBudWxsXG4gIHJlc291cmNlTGluayA9IHJlc291cmNlTGluayB8fCAnJ1xuICBjb25zdCBwYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnP3JlZj0nKVxuXG4gIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7IC8vIGlmIHJlZiBwYXJhbWV0ZXIgZm91bmQsIGdldCBicmFuY2ggbmFtZSBhZnRlclxuICAgIGJyYW5jaCA9IHBhcnRzPy5bMV1cbiAgfSBlbHNlIHsgLy8gZmFsbCBiYWNrIHRvIHVzaW5nIHVzZVJzcmMgZm9ybWF0IHN1Y2ggYXMgXCJ1bmZvbGRpbmdXb3JkL2VuL3VzdC9tYXN0ZXJcIlxuICAgIGNvbnN0IF9wYXJ0cyA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gICAgYnJhbmNoID0gX3BhcnRzPy5bM11cbiAgfVxuICByZXR1cm4gYnJhbmNoXG59XG5cbi8qKlxuICogZ2V0IHRoZSB2ZXJzZSBvYmplY3RzIGZvciB0aGUgcmVmZXJlbmNlIHN0cmluZ1xuICogQHBhcmFtIHtzdHJpbmd9IHJlZlN0ciAtIGluIGZvcm1hdCA8Y2hhcHRlcj46PHZlcnNlPlxuICogQHBhcmFtIHtvYmplY3R9IGJvb2tPYmplY3RzIC0gcGFyc2VkIHVzZm0gZm9yIGJvb2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBsYW5ndWFnZUlkXG4gKiBAcmV0dXJuIHthcnJheXxudWxsfSAtIG9mIHZlcnNlT2JqZWN0c1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpIHtcbiAgaWYgKGJvb2tPYmplY3RzKSB7XG4gICAgbGV0IHZlcnNlcyA9IGdldFZlcnNlcyhib29rT2JqZWN0cy5jaGFwdGVycywgcmVmU3RyKVxuXG4gICAgaWYgKGxhbmd1YWdlSWQgPT09ICdlbC14LWtvaW5lJyB8fCBsYW5ndWFnZUlkID09PSAnaGJvJykge1xuICAgICAgdmVyc2VzID0gdmVyc2VzLm1hcCh2ZXJzZSA9PiB7XG4gICAgICAgIGlmICggdmVyc2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgbGV0IHZlcnNlT2JqZWN0c18gPSBjb3JlLm9jY3VycmVuY2VJbmplY3RWZXJzZU9iamVjdHMoIHZlcnNlLnZlcnNlRGF0YS52ZXJzZU9iamVjdHMpXG4gICAgICAgICAgdmVyc2VPYmplY3RzXyA9IGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzXylcbiAgICAgICAgICB2ZXJzZS52ZXJzZURhdGEudmVyc2VPYmplY3RzID0gdmVyc2VPYmplY3RzX1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB2ZXJzZVxuICAgICAgfSlcbiAgICB9XG5cbiAgICByZXR1cm4gdmVyc2VzXG4gIH1cbiAgcmV0dXJuIG51bGxcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHZlcnNlIG9iamVjdHMgZm9yIHRoZSByZWZlcmVuY2Ugb2JqZWN0XG4gKiBAcGFyYW0ge29iamVjdH0gcmVmZXJlbmNlXG4gKiBAcGFyYW0ge29iamVjdH0gYm9va09iamVjdHMgLSBwYXJzZWQgdXNmbSBmb3IgYm9va1xuICogQHBhcmFtIHtzdHJpbmd9IGxhbmd1YWdlSWRcbiAqIEByZXR1cm4ge2FycmF5fG51bGx9IC0gb2YgdmVyc2VPYmplY3RzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRWZXJzZXNGb3JSZWYocmVmZXJlbmNlLCBib29rT2JqZWN0cywgbGFuZ3VhZ2VJZCkge1xuICBjb25zdCByZWZTdHIgPSBgJHtyZWZlcmVuY2UuY2hhcHRlcn06JHtyZWZlcmVuY2UudmVyc2V9YFxuICByZXR1cm4gZ2V0VmVyc2VzRm9yUmVmU3RyKHJlZlN0ciwgYm9va09iamVjdHMsIGxhbmd1YWdlSWQpXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmUoeyAvLyBob29rIGZvciBmZXRjaGluZyBzY3JpcHR1cmVcbiAgY29uZmlnLFxuICByZWFkeUZvckZldGNoLFxuICByZWZlcmVuY2UsXG4gIHJlc291cmNlOiByZXNvdXJjZV8sXG4gIHJlc291cmNlTGluazogcmVzb3VyY2VMaW5rXyxcbiAgd2hvbGVCb29rID0gZmFsc2UsXG59IDogUHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gdXNlU3RhdGUoe1xuICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICBmZXRjaENvdW50OiAwLFxuICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgIGZldGNoZWRCb29rOiAnJyxcbiAgICBmZXRjaFBhcmFtczoge1xuICAgICAgY29uZmlnOiB7fSxcbiAgICAgIHJlZmVyZW5jZToge30sXG4gICAgICByZXNvdXJjZUxpbms6ICcnLFxuICAgIH0sXG4gICAgaWdub3JlU2hhOiBudWxsLFxuICAgIGluaXRpYWxpemVkOiBmYWxzZSxcbiAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICBib29rT2JqZWN0czogbnVsbCxcbiAgICAgIGJpYmxlVXNmbTogbnVsbCxcbiAgICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgICBmZXRjaFJlc3BvbnNlOiBudWxsLFxuICAgICAgZmV0Y2hlZFJlc291cmNlczogbnVsbCxcbiAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICBsb2FkaW5nQ29udGVudDogZmFsc2UsXG4gICAgICByZXNvdXJjZTogbnVsbCxcbiAgICAgIHNoYTogbnVsbCxcbiAgICAgIHVybDogbnVsbCxcbiAgICB9LFxuICAgIHZlcnNlc0ZvclJlZjogW10sXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYnJhbmNoID0gJ21hc3RlcicsXG4gICAgcmVmID0gbnVsbCxcbiAgfSA9IHJlc291cmNlXyB8fCB7fVxuXG4gIGNvbnN0IHsgcHJvamVjdElkOiBib29rSWR9ID0gcmVmZXJlbmNlIHx8IHt9XG5cbiAgY29uc3Qge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBmZXRjaENvdW50LFxuICAgIGZldGNoZWQsXG4gICAgZmV0Y2hlZEJvb2ssXG4gICAgZmV0Y2hQYXJhbXMsXG4gICAgaWdub3JlU2hhLFxuICAgIGluaXRpYWxpemVkLFxuICAgIHJlc291cmNlU3RhdGUsXG4gICAgdmVyc2VzRm9yUmVmLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgZmV0Y2hlZFJlc291cmNlcyA9IHJlc291cmNlU3RhdGU/LmZldGNoZWRSZXNvdXJjZXNcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXdTdGF0ZSkge1xuICAgIHNldFN0YXRlXyhwcmV2U3RhdGUgPT4gKHsgLi4ucHJldlN0YXRlLCAuLi5uZXdTdGF0ZSB9KSlcbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGluaXRpYXRlQm9va0ZldGNoKClcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbml0aWF0ZUJvb2tGZXRjaCgpIHtcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSByZWFkeUZvckZldGNoIHRydWUsIGluaXRpYWxpemluZ2ApXG4gICAgICBsZXQgcmVzb3VyY2VMaW5rID0gcmVhZHlGb3JGZXRjaCAmJiByZXNvdXJjZUxpbmtfXG5cbiAgICAgIGlmICghcmVzb3VyY2VMaW5rXyAmJiByZXNvdXJjZV8pIHtcbiAgICAgICAgY29uc3QgcmVmXyA9IHJlZiB8fCBicmFuY2hcblxuICAgICAgICByZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoe1xuICAgICAgICAgIG93bmVyLFxuICAgICAgICAgIGxhbmd1YWdlSWQsXG4gICAgICAgICAgcmVzb3VyY2VJZDogYm9va0lkLFxuICAgICAgICAgIHJlZjogcmVmXyxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgYm9va1JlZiA9IHsgLi4ucmVmZXJlbmNlIH1cblxuICAgICAgaWYgKHdob2xlQm9vaykge1xuICAgICAgICBkZWxldGUgYm9va1JlZi5jaGFwdGVyIC8vIHJlbW92ZSB0aGUgY2hhcHRlciBhbmQgdmVyc2Ugc28gdGhlIHdob2xlIGJvb2sgaXMgZmV0Y2hlZFxuICAgICAgICBkZWxldGUgYm9va1JlZi52ZXJzZVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VMaW5rICE9PSBmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgLSBmb3IgJHtyZXNvdXJjZV8/LnByb2plY3RJZH0gcmVzb3VyY2VMaW5rIGlzIG5vdyAke3Jlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtyZXNvdXJjZUxpbmtffWApXG4gICAgICB9IGVsc2UgaWYgKGJvb2tSZWYgIT09IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UpIHtcbiAgICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGJvb2sgY2hhbmdlZCB0byAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7cmVzb3VyY2VMaW5rfWApXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld0ZldGNoUGFyYW1zID0ge1xuICAgICAgICBjb25maWcsXG4gICAgICAgIHJlZmVyZW5jZTogYm9va1JlZixcbiAgICAgICAgcmVzb3VyY2VMaW5rLFxuICAgICAgfVxuXG4gICAgICBpZiAoIWlzRXF1YWwobmV3RmV0Y2hQYXJhbXMsIGZldGNoUGFyYW1zKSkge1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgZmV0Y2hQYXJhbXM6IG5ld0ZldGNoUGFyYW1zLFxuICAgICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICAgIGluaXRpYWxpemVkOiB0cnVlLFxuICAgICAgICB9KVxuXG4gICAgICAgIGZldGNoQm9vayhuZXdGZXRjaFBhcmFtcylcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICByZWFkeUZvckZldGNoLFxuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgYm9va0lkLFxuICAgIGJyYW5jaCxcbiAgICByZWYsXG4gIF0pXG5cbiAgLyoqXG4gICAqIGRvIGEgZmV0Y2ggb2YgbWFuaWZlc3QgYW5kIGJvb2sgb2YgdGhlIGJpYmxlIHNwZWNpZmllZCBpbiBmZXRjaFBhcmFtc1xuICAgKiBAcGFyYW0ge29iamVjdH0gZmV0Y2hQYXJhbXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHByZXZpb3VzIHNoYSAtIGlnbm9yZSByZXNwb25zZXMgdGhhdCBjYW1lIGJhY2sgZm9yIHRoaXMgcHJldmlvdXMgYm9vayBjb21taXRcbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGZldGNoQm9vayhmZXRjaFBhcmFtcywgaWdub3JlU2hhID0gbnVsbCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBmZXRjaExpbmsgPSBgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfS8ke2ZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZH1gXG5cbiAgICAgIGlmIChpZ25vcmVTaGEpIHtcbiAgICAgICAgY29uc3QgZmV0Y2hlZFNoYU1hdGNoZXNJZ25vcmVTaGEgPSBpZ25vcmVTaGEgPT09IHJlc291cmNlU3RhdGU/LnNoYSAvLyB3ZSB3aWxsIHJlbG9hZCBpZiBpZ25vcmVTaGEgZ2l2ZW4gYW5kIGl0IG1hdGNoZXMgY3VycmVudCBzaGFcbiAgICAgICAgaWYgKChmZXRjaExpbmsgPT09IHJlc291cmNlU3RhdGU/LnJlc291cmNlPy5yZXNvdXJjZUxpbmspICYmICFmZXRjaGVkU2hhTWF0Y2hlc0lnbm9yZVNoYSkgeyAvLyBzZWUgaWYgd2UgYWxyZWFkeSBmZXRjaGVkIHRoaXNcbiAgICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gQWxyZWFkeSBmZXRjaGluZyByZXNvdXJjZUxpbmsgJHtyZXNvdXJjZVN0YXRlPy5yZXNvdXJjZT8ucmVzb3VyY2VMaW5rfSBhbmQgaWdub3JlU2hhPSR7aWdub3JlU2hhfWAsIGZldGNoUGFyYW1zKVxuICAgICAgICAgIHJldHVyblxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IF9mZXRjaENvdW50ID0gZmV0Y2hDb3VudCArIDFcbiAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUuZmV0Y2hCb29rKCkgLSBGRVRDSElORyBiaWJsZSAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIGlnbm9yZVNoYT0ke2lnbm9yZVNoYX1gLCBmZXRjaFBhcmFtcylcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgZmV0Y2hDb3VudDogX2ZldGNoQ291bnQsXG4gICAgICAgIGZldGNoZWQ6IGZhbHNlLFxuICAgICAgICBpZ25vcmVTaGEsXG4gICAgICAgIHJlc291cmNlU3RhdGU6IHsgbG9hZGluZ1Jlc291cmNlOiB0cnVlIH0sXG4gICAgICB9KVxuXG4gICAgICAvLyBmZXRjaCBtYW5pZmVzdCBkYXRhXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBfcmVzb3VyY2UgPSBhd2FpdCBjb3JlLnJlc291cmNlRnJvbVJlc291cmNlTGluayhmZXRjaFBhcmFtcylcblxuICAgICAgaWYgKCFfcmVzb3VyY2U/Lm1hbmlmZXN0IHx8ICFfcmVzb3VyY2U/LnByb2plY3Q/LmZpbGUpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBfcmVzb3VyY2U/Lm1hbmlmZXN0ID8gJ3BhcnNpbmcgcmVzb3VyY2UgbWFuaWZlc3QnIDogJ2xvYWRpbmcgcmVzb3VyY2UgbWFuaWZlc3QnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBtYW5pZmVzdCwgZmV0Y2hpbmcgYm9vayAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZXNvdXJjZUxpbmsgaXMgbm93ICR7ZmV0Y2hQYXJhbXM/LnJlc291cmNlTGlua30gYW5kIHJlc291cmNlTGlua189JHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rX31gLCBmZXRjaFBhcmFtcylcbiAgICAgIGF3YWl0IGRlbGF5KDEwMClcbiAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgX3Jlc291cmNlPy5wcm9qZWN0Py5maWxlKClcbiAgICAgIC8vIHBhcnNlIGJvb2sgdXNmbVxuICAgICAgY29uc3QgYmlibGVVc2ZtID0gcmVzcG9uc2UgJiYgY29yZS5nZXRSZXNwb25zZURhdGEocmVzcG9uc2UpXG4gICAgICBhd2FpdCBkZWxheSgxMDApXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGJpYmxlVXNmbSAmJiB1c2ZtanMudG9KU09OKGJpYmxlVXNmbSkgLy8gY29udmVydCB0byBiaWJsZSBvYmplY3RzXG5cbiAgICAgIGlmICghYm9va09iamVjdHMpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNc2cgPSBiaWJsZVVzZm0gPyAnZmV0Y2hpbmcgYm9vayBvZiB0aGUgYmlibGUnIDogJ3BhcnNpbmcgYm9vayBvZiB0aGUgYmlibGUnXG4gICAgICAgIGNvbnNvbGUud2FybihgdXNlU2NyaXB0dXJlLmZldGNoQm9vaygpIC0gZXJyb3IgJHtlcnJvck1zZ31gLCBmZXRjaFBhcmFtcyApXG4gICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgcmVzb3VyY2U6IF9yZXNvdXJjZSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBuYW1lLCBzaGEsIHVybCB9ID0gcmVzcG9uc2U/LmRhdGEgfHwge31cblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIExPQURFRCBiaWJsZSBib29rICR7cmVzb3VyY2VfPy5wcm9qZWN0SWR9IHJlc291cmNlTGluayBpcyBub3cgJHtmZXRjaFBhcmFtcz8ucmVzb3VyY2VMaW5rfSBhbmQgcmVzb3VyY2VMaW5rXz0ke2ZldGNoUGFyYW1zPy5yZXNvdXJjZUxpbmtffWAsIGZldGNoUGFyYW1zKVxuICAgICAgc2V0U3RhdGUoXG4gICAgICAgIHtcbiAgICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgICBsb2FkaW5nUmVzb3VyY2U6IGZhbHNlLFxuICAgICAgICAgICAgZmV0Y2hlZFJlc291cmNlczoge1xuICAgICAgICAgICAgICAuLi5fcmVzb3VyY2UsXG4gICAgICAgICAgICAgIGJpYmxlVXNmbSxcbiAgICAgICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgICAgIGZldGNoQ291bnQ6IF9mZXRjaENvdW50LFxuICAgICAgICAgICAgICBuYW1lLFxuICAgICAgICAgICAgICByZWZlcmVuY2U6IGZldGNoUGFyYW1zPy5yZWZlcmVuY2UsXG4gICAgICAgICAgICAgIHNoYSxcbiAgICAgICAgICAgICAgdXJsLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgKVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYHVzZVNjcmlwdHVyZS5mZXRjaEJvb2soKSAtIGhhcmQgZXJyb3IgbG9hZGluZyByZXNvdXJjZWAsIGZldGNoUGFyYW1zLCBlIClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgcmVzb3VyY2VTdGF0ZToge1xuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgcmVzb3VyY2U6IG51bGwsXG4gICAgICAgIH0sXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZSAtIGZvciAke3Jlc291cmNlXz8ucHJvamVjdElkfSByZWFkeUZvckZldGNoIGlzIG5vdyAke3JlYWR5Rm9yRmV0Y2h9YClcbiAgfSwgW3JlYWR5Rm9yRmV0Y2hdKVxuXG4gIC8qKlxuICAgKiBtYWtlIHN1cmUgbGFzdCBmZXRjaCByZXNwb25zZSBpcyBmb3IgY3VycmVudCBib29rL2JyYW5jaFxuICAgKi9cbiAgZnVuY3Rpb24gdmFsaWRhdGVSZXNwb25zZSgpIHtcbiAgICBsZXQgaXNTYW1lQm9vayA9IGZhbHNlXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGNvbnN0IGV4cGVjdGVkQm9va0lkID0gYm9va0lkIHx8ICd6enonXG4gICAgY29uc3QgZmV0Y2hlZEJvb2sgPSBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmV0Y2hlZFJlc291cmNlcz8ubmFtZSlcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtIEN1cnJlbnQgYm9va0lkIGlzICR7Ym9va0lkfSBhbmQgc2VlaW5nICR7ZmV0Y2hlZEJvb2t9IGluIFVTRk1gKVxuICAgIGlzU2FtZUJvb2sgPSBmZXRjaGVkQm9vaz8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMoYm9va0lkKVxuXG4gICAgY29uc3Qgc2hhID0gZmV0Y2hlZFJlc291cmNlcz8uc2hhIHx8IG51bGxcbiAgICBjb25zdCB1cmwgPSBmZXRjaGVkUmVzb3VyY2VzPy51cmwgfHwgbnVsbFxuXG4gICAgaWYgKGlzU2FtZUJvb2spIHsgLy8gYWxzbyBtYWtlIHN1cmUgaXQgaXMgdGhlIHNhbWUgYnJhbmNoXG4gICAgICBjb25zdCBmZXRjaGVkQnJhbmNoID0gZ2V0QnJhbmNoTmFtZSh1cmwpXG4gICAgICBjb25zdCBmZXRjaGluZ0JyYW5jaCA9IGdldEJyYW5jaE5hbWUoZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaylcblxuICAgICAgaWYgKGZldGNoZWRCcmFuY2ggIT09IGZldGNoaW5nQnJhbmNoKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUudmFsaWRhdGVSZXNwb25zZSgpIGludmFsaWQgYnJhbmNoLCBleHBlY3RlZCBicmFuY2ggaXMgJHtmZXRjaGluZ0JyYW5jaH0sIGJ1dCBmZXRjaGVkQnJhbmNoIGlzICR7ZmV0Y2hlZEJyYW5jaH1gLCB7IHNoYSwgdXJsIH0pXG4gICAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnZhbGlkYXRlUmVzcG9uc2UoKSAtICBpbnZhbGlkIGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9LCBidXQgcmVjZWl2ZWQgYm9vayBuYW1lICR7ZmV0Y2hlZEJvb2t9YCwgeyBzaGEsIHVybCB9KVxuICAgIH1cblxuICAgIGlmIChpZ25vcmVTaGEgPT09IHNoYSkge1xuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSB0aGUgc2hhIGlzIHRoZSBzYW1lIGFzIHRoZSBpZ25vcmUgc2hhICR7c2hhfWAsIHsgc2hhLCB1cmwgfSlcbiAgICAgIGlzU2FtZUJvb2sgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmIChpc1NhbWVCb29rKSB7XG4gICAgICBjb25zdCBiaWJsZVVzZm1fID0gZmV0Y2hlZFJlc291cmNlcz8uYmlibGVVc2ZtXG4gICAgICBjb25zdCBib29rT2JqZWN0cyA9IGZldGNoZWRSZXNvdXJjZXM/LmJvb2tPYmplY3RzXG4gICAgICBjb25zdCB2ZXJzZXNGb3JSZWYgPSBmZXRjaFZlcnNlc0ZvclJlZihib29rT2JqZWN0cylcblxuICAgICAgY29uc29sZS5sb2coYHVzZVNjcmlwdHVyZS52YWxpZGF0ZVJlc3BvbnNlKCkgLSBjb3JyZWN0IGJvb2ssIGV4cGVjdGVkQm9va0lkIGlzICR7ZXhwZWN0ZWRCb29rSWR9YCwgeyBzaGEsIHVybCB9KVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGJpYmxlVXNmbTogYmlibGVVc2ZtXyxcbiAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgIGZldGNoZWQ6IHRydWUsXG4gICAgICAgIGZldGNoZWRCb29rOiBleHBlY3RlZEJvb2tJZCxcbiAgICAgICAgaWdub3JlU2hhOiBudWxsLFxuICAgICAgICByZXNvdXJjZVN0YXRlOiB7XG4gICAgICAgICAgYm9va09iamVjdHMsXG4gICAgICAgICAgYmlibGVVc2ZtOiBiaWJsZVVzZm1fLFxuICAgICAgICAgIGxvYWRpbmdSZXNvdXJjZTogZmFsc2UsXG4gICAgICAgICAgbG9hZGluZ0NvbnRlbnQ6IGZhbHNlLFxuICAgICAgICAgIHJlc291cmNlOiBmZXRjaGVkUmVzb3VyY2VzLFxuICAgICAgICAgIHNoYSxcbiAgICAgICAgICB1cmwsXG4gICAgICAgIH0sXG4gICAgICAgIHZlcnNlc0ZvclJlZixcbiAgICAgIH1cblxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgfVxuICB9XG5cbiAgdXNlRGVlcENvbXBhcmVFZmZlY3QoKCkgPT4geyAvLyB2YWxpZGF0ZSByZXNwb25zZSB0byBtYWtlIHN1cmUgZnJvbSBsYXRlc3QgcmVxdWVzdFxuICAgIGlmIChyZWFkeUZvckZldGNoICYmIGZldGNoZWRSZXNvdXJjZXMpIHtcbiAgICAgIGlmICghZmV0Y2hlZCAmJiBmZXRjaGVkUmVzb3VyY2VzPy5mZXRjaENvdW50ID09PSBmZXRjaENvdW50KSB7XG4gICAgICAgIGRlbGF5KDUwMCkudGhlbigoKSA9PiB7XG4gICAgICAgICAgdmFsaWRhdGVSZXNwb25zZSgpXG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfVxuICB9LCBbeyByZWFkeUZvckZldGNoLCBmZXRjaGVkUmVzb3VyY2VzIH1dKVxuXG4gIGNvbnN0IHJlc291cmNlID0gcmVzb3VyY2VTdGF0ZT8ucmVzb3VyY2VcbiAgY29uc3QgeyB0aXRsZSwgdmVyc2lvbiB9ID0gcGFyc2VSZXNvdXJjZU1hbmlmZXN0KHJlc291cmNlKVxuICBjb25zdCBsb2FkaW5nID0gcmVzb3VyY2VTdGF0ZT8ubG9hZGluZ1Jlc291cmNlIHx8IHJlc291cmNlU3RhdGU/LmxvYWRpbmdDb250ZW50IHx8ICFyZWFkeUZvckZldGNoXG4gIGNvbnN0IGNvbnRlbnROb3RGb3VuZEVycm9yID0gIXJlc291cmNlU3RhdGU/LmJpYmxlVXNmbVxuICBjb25zdCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciA9ICFyZXNvdXJjZVN0YXRlPy5ib29rT2JqZWN0c1xuICBjb25zdCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgPSAhcmVzb3VyY2U/Lm1hbmlmZXN0XG4gIGNvbnN0IGludmFsaWRNYW5pZmVzdEVycm9yID0gIXRpdGxlIHx8ICF2ZXJzaW9uIHx8ICFsYW5ndWFnZUlkXG4gIGNvbnN0IGVycm9yID0gcmVhZHlGb3JGZXRjaCAmJiBpbml0aWFsaXplZCAmJiAhbG9hZGluZyAmJlxuICAgIChjb250ZW50Tm90Rm91bmRFcnJvciB8fCBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvciB8fCBtYW5pZmVzdE5vdEZvdW5kRXJyb3IgfHwgaW52YWxpZE1hbmlmZXN0RXJyb3IpXG4gIGNvbnN0IHJlc291cmNlU3RhdHVzID0ge1xuICAgIFtMT0FESU5HX1NUQVRFXTogbG9hZGluZyxcbiAgICBbQ09OVEVOVF9OT1RfRk9VTkRfRVJST1JdOiBjb250ZW50Tm90Rm91bmRFcnJvcixcbiAgICBbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdOiBzY3JpcHR1cmVOb3RMb2FkZWRFcnJvcixcbiAgICBbTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUl06IG1hbmlmZXN0Tm90Rm91bmRFcnJvcixcbiAgICBbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl06IGludmFsaWRNYW5pZmVzdEVycm9yLFxuICAgIFtFUlJPUl9TVEFURV06IGVycm9yLFxuICAgIFtJTklUSUFMSVpFRF9TVEFURV06IGluaXRpYWxpemVkLFxuICB9XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXJlYWR5Rm9yRmV0Y2gpIHtcbiAgICAgIGlmIChpbml0aWFsaXplZCkge1xuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IGZhbHNlIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghaW5pdGlhbGl6ZWQpIHtcbiAgICAgIGlmIChsb2FkaW5nKSB7IC8vIG9uY2UgZmlyc3QgbG9hZCBoYXMgYmVndW4sIHdlIGFyZSBpbml0aWFsaXplZFxuICAgICAgICBzZXRTdGF0ZSh7IGludGlhbGl6ZWQ6IHRydWUgfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtsb2FkaW5nLCByZWFkeUZvckZldGNoXSlcblxuICAvKipcbiAgICogZ2V0IHZlcnNlcyBmb3IgcmVmXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWZTdHJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnRfXG4gICAqL1xuICBmdW5jdGlvbiBfZ2V0VmVyc2VzRm9yUmVmKHJlZlN0ciwgY29udGVudF8gPSBib29rT2JqZWN0cykge1xuICAgIGlmIChjb250ZW50Xykge1xuICAgICAgcmV0dXJuIGdldFZlcnNlc0ZvclJlZlN0cihyZWZTdHIsIGNvbnRlbnRfLCBsYW5ndWFnZUlkKVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIHVwZGF0ZSB2ZXJzZSBkYXRhIGZvciBjdXJyZW50IGJvb2tcbiAgICogQHBhcmFtIHtzdHJpbmd9IGNoYXB0ZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2ZXJzZURhdGFcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlKGNoYXB0ZXIsIHZlcnNlLCB2ZXJzZURhdGEpIHtcbiAgICBpZiAoYm9va09iamVjdHMpIHtcbiAgICAgIGNvbnN0IGJvb2tPYmplY3RzXyA9IHsgLi4uYm9va09iamVjdHMgfSAvLyBzaGFsbG93IGNvcHlcblxuICAgICAgaWYgKGJvb2tPYmplY3RzXz8uY2hhcHRlcnMpIHtcbiAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnMgfSAvLyBzaGFsbG93IGNvcHkgY2hhcHRlcnNcblxuICAgICAgICBpZiAoYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdKSB7XG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdID0geyAuLi5ib29rT2JqZWN0c18uY2hhcHRlcnNbY2hhcHRlcl0gfSAvLyBzaGFsbG93IGNvcHkgdmVyc2VzXG4gICAgICAgICAgYm9va09iamVjdHNfLmNoYXB0ZXJzW2NoYXB0ZXJdW3ZlcnNlXSA9IHZlcnNlRGF0YVxuICAgICAgICAgIHNldFN0YXRlKHsgYm9va09iamVjdHM6IGJvb2tPYmplY3RzXyB9KVxuICAgICAgICAgIHJldHVybiBib29rT2JqZWN0c19cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB0aGUgdmVyc2VzIGZvciBjdXJyZW50IHJlZmVyZW5jZSBvciByZWZlcmVuY2UgcmFuZ2VcbiAgICogQHBhcmFtIHtvYmplY3R9IF9ib29rT2JqZWN0c1xuICAgKi9cbiAgZnVuY3Rpb24gZmV0Y2hWZXJzZXNGb3JSZWYoX2Jvb2tPYmplY3RzID0gYm9va09iamVjdHMpIHtcbiAgICBsZXQgbmV3VmVyc2VzRm9yUmVmID0gW11cblxuICAgIGlmIChfYm9va09iamVjdHMpIHtcbiAgICAgIG5ld1ZlcnNlc0ZvclJlZiA9IGdldFZlcnNlc0ZvclJlZihyZWZlcmVuY2UsIF9ib29rT2JqZWN0cywgbGFuZ3VhZ2VJZClcbiAgICAgIHJldHVybiBuZXdWZXJzZXNGb3JSZWZcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9XG5cbiAgLyoqXG4gICAqIGZvcmNlIHJlbG9hZCBvZiByZXNvdXJjZVxuICAgKiBAcGFyYW0ge3N0cmluZ3x1bmRlZmluZWR9IGlnbm9yZVNoYSAtIG9wdGlvbmFsIHNoYSB0byBpZ25vcmVcbiAgICogQHBhcmFtIHtzdHJpbmd8dW5kZWZpbmVkfSByZWYgLSBvcHRpb25hbCByZWZlcmVuY2UgdG8gZmV0Y2hcbiAgICovXG4gIGZ1bmN0aW9uIHJlbG9hZFJlc291cmNlKGlnbm9yZVNoYSA9IG51bGwsIHJlZiA9IG51bGwpIHtcbiAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgaWdub3JlU2hhOiAke2lnbm9yZVNoYX1gIClcbiAgICBjb25zdCBfZmV0Y2hQYXJhbXMgPSB7IC4uLmZldGNoUGFyYW1zIH1cblxuICAgIGlmIChyZWYgJiYgZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluaykge1xuICAgICAgY29uc3Qge1xuICAgICAgICBvd25lcixcbiAgICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgICAgcmVzb3VyY2VJZCxcbiAgICAgICAgcmVmOiBfcmVmLFxuICAgICAgfSA9IHBhcnNlUmVzb3VyY2VMaW5rKGZldGNoUGFyYW1zLnJlc291cmNlTGluaylcblxuICAgICAgaWYgKHJlZiAhPT0gX3JlZikgeyAvLyBpZiByZWYgY2hhbmdlZCwgdXBkYXRlIHJlc291cmNlbGlua1xuICAgICAgICBjb25zdCBfcmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgICAgICBvd25lcixcbiAgICAgICAgICBsYW5ndWFnZUlkLFxuICAgICAgICAgIHJlc291cmNlSWQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICB9KVxuICAgICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlLnJlbG9hZFJlc291cmNlKCkgb2xkIHJlZiBpcyBkaWZmZXJlbnQgJHtfcmVmfSwgc3dpdGNoaW5nIHRvIGxvYWQgcmVmOiAke3JlZn0sIG5ldyByZXNvdXJjZUxpbms6ICR7X3Jlc291cmNlTGlua31gIClcbiAgICAgICAgX2ZldGNoUGFyYW1zLnJlc291cmNlTGluayA9IF9yZXNvdXJjZUxpbmtcbiAgICAgIH1cbiAgICB9XG4gICAgZmV0Y2hCb29rKF9mZXRjaFBhcmFtcywgaWdub3JlU2hhKVxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBjb25zdCBjdXJyZW50Qm9va1JlZiA9IGZldGNoUGFyYW1zPy5yZWZlcmVuY2U/LnByb2plY3RJZFxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGN1cnJlbnRCb29rUmVmKSB7XG4gICAgICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGZldGNoZWQgYm9vayBjaGFuZ2VkIHRvICR7Y3VycmVudEJvb2tSZWZ9LCAke3Jlc291cmNlTGlua199YCwgZmV0Y2hQYXJhbXMgKVxuICAgICAgc2V0U3RhdGUoeyBib29rT2JqZWN0czogbnVsbCwgYmlibGVVc2ZtOiBudWxsIH0pXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2N1cnJlbnRCb29rUmVmXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgYm9vayByZWYgY2hhbmdlZCB0byAke2Jvb2tJZH0sICR7cmVzb3VyY2VMaW5rX31gKVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgfSwgW2Jvb2tJZF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBleHBlY3RlZEJvb2tJZCA9IGJvb2tJZCB8fCAnJ1xuICAgIGNvbnN0IGZldGNoZWRCb29rU2FtZSA9IGZldGNoZWRCb29rICYmIChmZXRjaGVkQm9vayA9PT0gZXhwZWN0ZWRCb29rSWQpXG4gICAgbGV0IF92ZXJzZXNGb3JSZWYgPSBbXVxuXG4gICAgaWYgKCFmZXRjaGVkQm9va1NhbWUpIHtcbiAgICAgIC8vIGlmIChleHBlY3RlZEJvb2tJZCAmJiBmZXRjaGVkQm9vaykge1xuICAgICAgLy8gICBjb25zb2xlLmxvZyhgdXNlU2NyaXB0dXJlIGV4cGVjdGVkIGJvb2sgJHtleHBlY3RlZEJvb2tJZH0gYnV0IGZldGNoZWQgYm9vayB3YXMgJHtmZXRjaGVkQm9va30gLSBjbGVhcmluZ2ApXG4gICAgICAvLyB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IF9ib29rT2JqZWN0cyA9IGZldGNoZWRCb29rU2FtZSA/IGJvb2tPYmplY3RzIDogbnVsbFxuICAgICAgX3ZlcnNlc0ZvclJlZiA9IGZldGNoVmVyc2VzRm9yUmVmKF9ib29rT2JqZWN0cylcbiAgICAgIC8vIGNvbnNvbGUubG9nKGB1c2VTY3JpcHR1cmUgX2Jvb2tPYmplY3RzIGlzICR7ISFfYm9va09iamVjdHN9IGFuZCBib29rcyBhcmUgdGhlIHNhbWUgJHtmZXRjaGVkQm9va31gLCB7IGNvbnRlbnQsIGZldGNoUGFyYW1zIH0pXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKF92ZXJzZXNGb3JSZWYsIHZlcnNlc0ZvclJlZikpIHtcbiAgICAgIHNldFN0YXRlKHsgdmVyc2VzRm9yUmVmOiBfdmVyc2VzRm9yUmVmIH0pXG4gICAgfVxuICB9LCBbcmVmZXJlbmNlXSlcblxuICByZXR1cm4ge1xuICAgIGJpYmxlVXNmbSxcbiAgICBib29rT2JqZWN0cyxcbiAgICBnZXRWZXJzZXNGb3JSZWY6IF9nZXRWZXJzZXNGb3JSZWYsXG4gICAgcmVmZXJlbmNlOiBmZXRjaFBhcmFtcz8ucmVmZXJlbmNlLFxuICAgIHJlbG9hZFJlc291cmNlLFxuICAgIHJlc291cmNlTGluazogZmV0Y2hQYXJhbXM/LnJlc291cmNlTGluayxcbiAgICByZXNvdXJjZVN0YXRlLCAvLyBzdGF0ZSBpbmZvcm1hdGlvbiBmb3IgbGF0ZXN0IGZldGNoZWQgcmVzb3VyY2VcbiAgICByZXNvdXJjZVN0YXR1cywgLy8gc3RhdHVzIGZsYWdzIGZvciBmZXRjaGVkIHJlc291cmNlXG4gICAgdGl0bGUsXG4gICAgdXBkYXRlVmVyc2UsXG4gICAgdmVyc2lvbixcbiAgICB2ZXJzZXNGb3JSZWYsXG4gIH1cbn1cbiJdfQ==
@@ -573,6 +573,8 @@ export function useScriptureAlignmentEdit(_ref) {
573
573
  alignerData: alignerData,
574
574
  currentVerseObjects: currentVerseObjects,
575
575
  editing: editing,
576
+ enableEdit: enableEdit,
577
+ enableAlignment: enableAlignment,
576
578
  initialVerseText: initialVerseText,
577
579
  initialVerseObjects: initialVerseObjects,
578
580
  newVerseText: newVerseText,
@@ -585,4 +587,4 @@ export function useScriptureAlignmentEdit(_ref) {
585
587
  }
586
588
  };
587
589
  }
588
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyU3RhdGUiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyIsInJlc291cmNlSWQiLCJib29rSWQiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzIiwicmVzb3VyY2VMaW5rIiwidXNlTWVtbyIsInZlcnNlT2JqZWN0cyIsInZlcnNlcyIsImxhbmd1YWdlSWQiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJBcnJheSIsInByb3RvdHlwZSIsInB1c2giLCJhcHBseSIsInVzZUVmZmVjdCIsIm5vdEVtcHR5IiwiYWxpZ25lZF8iLCJyZXN1bHRzIiwiZ2V0Q2hhbmdlcyIsIl9uZXdTdGF0ZSIsInVwZGF0ZWRWZXJzZU9iamVjdHNfIiwidXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyIsInRhcmdldFZlcnNlT2JqZWN0cyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJwYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSIsInRhcmdldFdvcmRzIiwidmVyc2VBbGlnbm1lbnRzIiwiX25ld0FsaWdubWVudHMiLCJ2ZXJzZVVzZm0iLCJhZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0iLCJhbGlnbmVkVmVyc2VPYmplY3RzIiwidXNmbVZlcnNlVG9Kc29uIiwic2F2ZUFsaWdubWVudCIsImNhbGxTZXRTYXZlZFN0YXRlIiwiY2FuY2VsQWxpZ25tZW50Iiwic2V0RWRpdGluZyIsImVkaXRpbmdfIiwiX25ld1ZlcnNlVGV4dCIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJfYWxpZ25tZW50c0NoYW5nZWQiLCJzZXRWZXJzZUNoYW5nZWQiLCJjaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJ1bnNhdmVkQ2hhbmdlcyIsInVuc2F2ZWRDaGFuZ2VzXyIsIm9uQWxpZ25tZW50c0NoYW5nZSIsImFsaWdubWVudENvbXBsZXRlIiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUNFQyxnQkFERixFQUVFQyx5QkFGRixFQUdFQyxXQUhGLFFBSU8sa0JBSlA7QUFLQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUNFQyxlQURGLEVBRUVDLGtCQUZGLEVBR0VDLFlBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MsNEJBQVQsUUFBNkMsNEJBQTdDO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxVQUFoQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDOztBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsZUFBdkIsRUFBd0NDLG9CQUF4QyxFQUE4RDtBQUFBOztBQUM1REEsRUFBQUEsb0JBQW9CLEdBQUcseUJBQUFBLG9CQUFvQixVQUFwQiw4REFBc0JDLE1BQXRCLEdBQStCRCxvQkFBL0IsR0FBc0QsSUFBN0UsQ0FENEQsQ0FDc0I7O0FBRHRCLDhCQUUzQlosZ0JBQWdCLENBQUNjLGdDQUFqQixDQUFrREgsZUFBbEQsRUFBbUVDLG9CQUFuRSxDQUYyQjtBQUFBLE1BRXBERyxVQUZvRCx5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QVhBLFdBRks7QUFHTGlFLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBSEs7QUFJTGhFLE1BQUFBLE9BQU8sRUFBUEEsT0FKSztBQUtMakIsTUFBQUEsZ0JBQWdCLEVBQWhCQSxnQkFMSztBQU1MWixNQUFBQSxtQkFBbUIsRUFBbkJBLG1CQU5LO0FBT0xFLE1BQUFBLFlBQVksRUFBWkEsWUFQSztBQVFMZSxNQUFBQSxTQUFTLEVBQUVtQixjQVJOO0FBU0xmLE1BQUFBLGNBQWMsRUFBZEEsY0FUSztBQVVMRSxNQUFBQSxjQUFjLEVBQWRBLGNBVks7QUFXTEMsTUFBQUEsS0FBSyxFQUFMQSxLQVhLO0FBWUwwRSxNQUFBQSxjQUFjLEVBQWRBLGNBWks7QUFhTGpHLE1BQUFBLGdCQUFnQixFQUFoQkE7QUFiSztBQVhGLEdBQVA7QUEyQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtaWdub3JlXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7XG4gIEFsaWdubWVudEhlbHBlcnMsXG4gIFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMsXG4gIHVzZm1IZWxwZXJzLFxufSBmcm9tICd3b3JkLWFsaWduZXItcmNsJ1xuaW1wb3J0ICogYXMgaXNFcXVhbCBmcm9tICdkZWVwLWVxdWFsJ1xuaW1wb3J0IHtcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIFNlcnZlckNvbmZpZyxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBPUklHSU5BTF9TT1VSQ0UgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldFZlcnNlc0ZvclJlZiB9IGZyb20gJy4vdXNlU2NyaXB0dXJlJ1xuXG5pbnRlcmZhY2UgU3RhcnRFZGl0IHtcbiAgKCk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMge1xuICAvLyBpbmRleCB0byB1c2UgZm9yIGJvb2sgKGUuZy4gYDAxYCBmb3IgYEdFTmApXG4gIGJvb2tJbmRleDogc3RyaW5nLFxuICAvLyBjdXJyZW50IHZlcnNlIHNlbGVjdGVkIGZyb20gaW5pdGlhbFZlcnNlT2JqZWN0c1tdXG4gIGN1cnJlbnRJbmRleDogbnVtYmVyLFxuICAvLyByZWZlcmVuY2UgZm9yIHZlcnNlIHNlbGVjdGVkIGZvciBhbGlnbm1lbnRcbiAgY3VycmVudFZlcnNlUmVmOiBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIC8vIGlmIHRydWUgdGhlbiBlZGl0aW5nIGlzIGFsbG93ZWRcbiAgZW5hYmxlRWRpdDogYm9vbGVhbixcbiAgLy8gaWYgdHJ1ZSB0aGVuIGFsaWdubWVudCBpcyBhbGxvd2VkXG4gIGVuYWJsZUFsaWdubWVudDogYm9vbGVhbixcbiAgLy8gY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIGh0dHAgY29tbXVuaWNhdGlvblxuICBodHRwQ29uZmlnOiBTZXJ2ZXJDb25maWcsXG4gIC8vIGFycmF5IG9mIGVhY2ggdmVyc2UgZm9yIGluIHJlZmVyZW5jZSByYW5nZVxuICBpbml0aWFsVmVyc2VPYmplY3RzOiBbXSxcbiAgLy8gaW5pdGlhbCB0ZXh0IGZvciB2ZXJzZVxuICBpbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcsXG4gIC8vIGZsYWcgdGhhdCB3ZSBhcmUgd29ya2luZyBvbiBOVCBib29rXG4gIGlzTmV3VGVzdGFtZW50OiBib29sZWFuLFxuICAvLyB1c2VyIG5hbWUgb2YgbG9nZ2VkIGluIHVzZXJcbiAgbG9nZ2VkSW5Vc2VyOiBzdHJpbmcsXG4gIC8vIG93bmVyIHRvIHVzZSB3aGVuIGZldGNoaW5nIG9yaWdpbmFsIGxhbmd1YWdlIHJlc291cmNlc1xuICBvcmlnaW5hbExhbmd1YWdlT3duZXI6IHN0cmluZyxcbiAgLy8gdXJsIGZvciB0aGUgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVwb1xuICBvcmlnaW5hbFJlcG9Vcmw6IHN0cmluZyxcbiAgLy8gb3JpZ2luYWwgc2NyaXB0dXJlIGJvb2tPYmplY3RzIGZvciBjdXJyZW50IGJvb2tcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0czogb2JqZWN0LFxuICAvKiogY3VycmVudCByZWZlcmVuY2UgKiovXG4gIHJlZmVyZW5jZTogU2NyaXB0dXJlUmVmZXJlbmNlO1xuICAvLyBkZXRhaWxzIGFib3V0IHRoZSBjdXJyZW50IHNjcmlwdHVyZSBsb2FkZWRcbiAgc2NyaXB0dXJlQ29uZmlnOiBTY3JpcHR1cmVDb25maWcsXG4gIC8vIHNldHRpbmdzIHRvIGJlIHVzZWQgZm9yIHNjcmlwdHVyZVxuICBzY3JpcHR1cmVTZXR0aW5nczogeyB9LFxuICAvLyBjYWxsYmFjayB0byBzYXZlIGN1cnJlbnQgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IGNoYW5nZXNcbiAgc2V0U2F2ZWRDaGFuZ2VzOiBGdW5jdGlvbixcbiAgLy8gc291cmNlIGxhbmd1YWdlXG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsXG4gIC8vIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIHVzZXIgYnJhbmNoIGZvciBzYXZpbmcgZWRpdCBkYXRhXG4gIHN0YXJ0RWRpdEJyYW5jaDogU3RhcnRFZGl0LFxuICAvLyBjdXJyZW50IHRhcmdldCBsYW5ndWFnZVxuICB0YXJnZXRMYW5ndWFnZTogb2JqZWN0LFxuICAvLyB0aXRsZSB0byBzaG93IGluIGFsaWdubWVudFxuICB0aXRsZTogc3RyaW5nLFxuICAgLy8gYnJhbmNoIG5hbWUgY3VycmVudGx5IGJlaW5nIHVzZWQgKGUuZy4gYG1hc3RlcmAgb3IgdXNlciBicmFuY2gpXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogc3RyaW5nLFxufVxuXG4vKipcbiAqIGRldGVybWluZXMgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlIGJhc2VkIG9uIHRhcmdldCBVU0ZNIGFuZCBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZSBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0VmVyc2VVU0ZNXG4gKiBAcGFyYW0ge29iamVjdFtdfSBvcmlnaW5hbFZlcnNlT2JqZWN0c1xuICovXG5mdW5jdGlvbiBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtvYmplY3RbXX0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtvYmplY3RbXX0gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtib29sZWFufSB2ZXJzZVRleHRDaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0KSB7XG4gIGxldCB0YXJnZXRWZXJzZVVTRk0gPSBudWxsXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgaWYgKHZlcnNlVGV4dENoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSB0YXJnZXRWZXJzZVRleHRcbiAgfSBlbHNlIHtcbiAgICB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gIH1cbiAgcmV0dXJuIHRhcmdldFZlcnNlVVNGTVxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IHtcbiAgICBhbGlnbmVkLFxuICAgIGFsaWduZXJEYXRhLFxuICAgIGVkaXRpbmcsXG4gICAgbmV3QWxpZ25tZW50cyxcbiAgICBuZXdWZXJzZVRleHQsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICB9ID0gc3RhdGVcbiAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICBjb25zdCB2ZXJzZSA9IHJlZmVyZW5jZT8udmVyc2VcbiAgY29uc3QgcHJvamVjdElkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgYmFzaWNSZWZlcmVuY2UgPSB7IC8vIG9ubHkgaGFzIHRoZSB0aHJlZSBiYXNpYyBmaWVsZHNcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHByb2plY3RJZCxcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJDaGFuZ2VzKCkge1xuICAgIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtICR7SlNPTi5zdHJpbmdpZnkoYmFzaWNSZWZlcmVuY2UpfWApXG4gICAgY29uc3QgY2xlYXJTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKHN0YXRlLCBjbGVhclN0YXRlKSkge1xuICAgICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gcmVmZXJlbmNlIGNoYW5nZWQsIHJlc2V0IGVkaXQvYWxpZ25tZW50IHN0YXRlIHZhcmlhYmxlc2ApXG4gICAgICBzZXRTdGF0ZShjbGVhclN0YXRlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfID0ge1xuICAgIC4uLnNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHJlc291cmNlSWQ6IE9SSUdJTkFMX1NPVVJDRSxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaHR0cENvbmZpZyA9IGh0dHBDb25maWcgfHwge31cbiAgY29uc3QgYm9va0lkID0gcHJvamVjdElkXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MgPSBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzKFxuICAgIGJvb2tJZCwgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LCBvcmlnaW5hbFJlcG9VcmwsXG4gIClcblxuICBpZiAoIWVuYWJsZUFsaWdubWVudCkgeyAvLyBpZiBub3QgZW5hYmxlZCwgdGhlbiB3ZSBkb24ndCBmZXRjaCByZXNvdXJjZVxuICAgIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gbnVsbFxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHsgLy8gZ2V0IHRoZSBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZU9iamVjdHNcbiAgICBjb25zdCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgaWYgKG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlc0ZvclJlZihiYXNpY1JlZmVyZW5jZSwgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8ubGFuZ3VhZ2VJZClcblxuICAgICAgaWYgKHZlcnNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgdmVyc2VSZWZlcmVuY2Ugb2YgdmVyc2VzKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ1ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmZXJlbmNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuXG4gICAgICAgICAgaWYgKG9yaWdWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHZlcnNlT2JqZWN0cywgb3JpZ1ZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZlcnNlT2JqZWN0c1xuICB9LCBbb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgY2hhcHRlciwgdmVyc2UsIHByb2plY3RJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgICAgICAgYWxpZ25lZF8gPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICB9XG5cbiAgICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgbmV3IHRleHQ6YCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2ApXG4gICAgICBjb25zdCB7IHRhcmdldFZlcnNlT2JqZWN0cyB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB0YXJnZXRWZXJzZU9iamVjdHNcbiAgICB9IGVsc2UgeyAvLyBvbmx5IGFsaWdubWVudCBjaGFuZ2VzIHRvIHVwbG9hZFxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gJiYgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyB1cGRhdGVkIGFsaWdubWVudHNgLCB7IG5ld1ZlcnNlVGV4dCwgdXBkYXRlZFZlcnNlT2JqZWN0c18gfSlcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0c18gfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIH1cblxuICAgIGlmICh1cGRhdGVkVmVyc2VPYmplY3RzXykge1xuICAgICAgY29uc3QgcmVmID0gc2NyaXB0dXJlQ29uZmlnPy52ZXJzZXNGb3JSZWY/LltjdXJyZW50SW5kZXhdXG4gICAgICByZXR1cm4ge1xuICAgICAgICBuZXdWZXJzZVRleHQsXG4gICAgICAgIHJlZixcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogdXBkYXRlZFZlcnNlT2JqZWN0c18sXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHt9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGFsaWdubWVudCBidXR0b24gLSB3aWxsIHNob3cgaWYgbm90IGFscmVhZHkgc2hvd25cbiAgICovXG4gIGFzeW5jIGZ1bmN0aW9uIGhhbmRsZUFsaWdubWVudENsaWNrKCkge1xuICAgIGlmIChlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgIGxldCBfYWxpZ25lckRhdGEgPSBudWxsXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIGlmIHdvcmQgYWxpZ25lciBub3Qgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXG4gICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgICAgICBsZXQgb3JpZ2luYWxWZXJzZVVzZm0gPSBudWxsXG5cbiAgICAgICAgaWYgKG9yaWdpbmFsVmVyc2VPYmplY3RzKSB7XG4gICAgICAgICAgb3JpZ2luYWxWZXJzZVVzZm0gPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0ob3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdGFyZ2V0V29yZHM6IHdvcmRCYW5rLFxuICAgICAgICAgIHZlcnNlQWxpZ25tZW50czogYWxpZ25tZW50cyxcbiAgICAgICAgfSA9IEFsaWdubWVudEhlbHBlcnMucGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlVXNmbSlcbiAgICAgICAgX2FsaWduZXJEYXRhID0geyB3b3JkQmFuaywgYWxpZ25tZW50cyB9XG4gICAgICB9IGVsc2UgeyAvLyB3b3JkIGFsaWduZXIgY3VycmVudGx5IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIGFsaWdubWVudCBhbHJlYWR5IHNob3duYClcbiAgICAgICAgX2FsaWduZXJEYXRhID0gYWxpZ25lckRhdGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IF9hbGlnbmVyRGF0YSB9KVxuICAgICAgY29uc29sZS5sb2coX2FsaWduZXJEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFmdGVyIGFsaWdubWVudHMgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBjb25zdCB0YXJnZXRWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQgfHwgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgIGNvbnN0IHZlcnNlVXNmbSA9IEFsaWdubWVudEhlbHBlcnMuYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNKF9uZXdBbGlnbm1lbnRzLnRhcmdldFdvcmRzLCBfbmV3QWxpZ25tZW50cy52ZXJzZUFsaWdubWVudHMsIHRhcmdldFZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHZlcnNlVXNmbSlcbiAgICByZXR1cm4gYWxpZ25lZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKiBAcGFyYW0ge29iamVjdH0gX25ld0FsaWdubWVudHMgLSByZXN1bHRzIG9mIGFsaWduZXJcbiAgICovXG4gIGZ1bmN0aW9uIHNhdmVBbGlnbm1lbnQoX25ld0FsaWdubWVudHMgPSBuZXdBbGlnbm1lbnRzKSB7XG4gICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5ld0FsaWdubWVudHNgLCBfbmV3QWxpZ25tZW50cylcblxuICAgIGlmIChfbmV3QWxpZ25tZW50cykge1xuICAgICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoX25ld0FsaWdubWVudHMpXG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gYWxpZ25lZFZlcnNlT2JqZWN0c2AsIGFsaWduZWRWZXJzZU9iamVjdHMpXG4gICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBhbGlnbmVkVmVyc2VPYmplY3RzLFxuICAgICAgfVxuICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh0cnVlLCBuZXdTdGF0ZSApXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBubyBhbGlnbm1lbnQgY2hhbmdlc2ApXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIH0pXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gY2FuY2VsIHdvcmsgaW4gd29yZCBhbGlnbmVyLiAgQ2FsY3VsYXRlcyBhbmQgZGlzcGxheXMgY3VycmVudCBhbGlnbm1lbnQgdmFsaWQgc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICovXG4gIGZ1bmN0aW9uIGNhbmNlbEFsaWdubWVudCgpIHtcbiAgICBjb25zb2xlLmxvZyhgY2FuY2VsQWxpZ25tZW50KClgKVxuICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogbnVsbCwgYWxpZ25lZCB9KVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciBidXR0b24gdG8gc2V0IGVkaXRpbmcgc3RhdGVcbiAgICogQHBhcmFtIHtib29sZWFufSBlZGl0aW5nXyAtIGlmIHRydWUsIGVkaXRvciBpcyBzaG93biwgb3RoZXJ3aXNlIGVkaXRvciBpcyBoaWRkZW5cbiAgICogQHBhcmFtIHtzdHJpbmd9IF9uZXdWZXJzZVRleHQgLSBvcHRpb25hbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVxdWlyZS1hd2FpdFxuICBhc3luYyBmdW5jdGlvbiBzZXRFZGl0aW5nKGVkaXRpbmdfLCBfbmV3VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgZWRpdGluZzogZWRpdGluZ18sXG4gICAgICAgICAgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0LFxuICAgICAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZlcnNlVGV4dENoYW5nZWQpIHtcbiAgICAgICAgICAvLyBmYWxsYmFjayB0byBtYWtlIHN1cmUgdGV4dCBmcm9tIHZlcnNlT2JqZWN0cyBtYXRjaGVzIGN1cnJlbnQgdGV4dFxuICAgICAgICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogY3VycmVudFZlcnNlT2JqZWN0cyB9IClcblxuICAgICAgICAgIGlmICh2ZXJzZVRleHQgIT09IF9uZXdWZXJzZVRleHQpIHsgLy8gaWYgdGV4dCBmcm9tIHZlcnNlIG9iamVjdHMgZG9lcyBub3QgbWF0Y2ggbGF0ZXN0IHRleHRcbiAgICAgICAgICAgIC8vIGFwcGx5IGFsaWdubWVudCB0byBjdXJyZW50IHRleHRcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyB1cGRhdGUgdmVyc2VPYmplY3RzIHRvIG1hdGNoIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgIGNvbnN0IF9hbGlnbm1lbnRzQ2hhbmdlZCA9IChfdXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCBfdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHZlcnNlVGV4dENoYW5nZWQgfHwgX2FsaWdubWVudHNDaGFuZ2VkLCBuZXdTdGF0ZSApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZyb20gdGhlIGVkaXQgb25DaGFuZ2UgZXZlbnQgdG8gdXBkYXRlIGVkaXQgc3RhdGUgdmFyaWFibGVzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hhbmdlZCAtIHRydWUgaWYgdGhlIG5ld1ZlcnNlVGV4dCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgaW5pdGlhbFZlcnNlVGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gY3VycmVudCBjaGFuZ2VkIHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IF9pbml0aWFsVmVyc2VUZXh0IC0gaW5pdGlhbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZCwgbmV3VmVyc2VUZXh0LCBfaW5pdGlhbFZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18sIG5ld1N0YXRlID0geyB9ICkge1xuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuXG4gICAgLy8gY29uc29sZS5sb2coYGNhbGxTZXRTYXZlZFN0YXRlIC0gbmV3IHN0YXRlYCwgX25ld1N0YXRlKVxuICAgIHNldFNhdmVkQ2hhbmdlcyAmJiBzZXRTYXZlZENoYW5nZXMoY3VycmVudEluZGV4LCAhdW5zYXZlZENoYW5nZXNfLCB7XG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgc3RhdGU6IF9uZXdTdGF0ZSxcbiAgICB9KVxuICB9XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gc2V0IHNhdmVkIGNoYW5nZXMgd2hlbmV2ZXIgdXNlciBlZGl0cyB2ZXJzZSB0ZXh0IG9yIGFsaWdubWVudHMgb3IgaWYgYWxpZ25tZW50cyBhcmUgb3BlblxuICAgIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzXyA9IHVuc2F2ZWRDaGFuZ2VzIHx8IGFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge29iamVjdH0gcmVzdWx0c1xuICAgKiBAcmV0dXJuIHtib29sZWFufSB0cnVlIGlmIGFsaWdubWVudCBpcyBjb21wbGV0ZVxuICAgKi9cbiAgZnVuY3Rpb24gb25BbGlnbm1lbnRzQ2hhbmdlKHJlc3VsdHMpIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICByZWZlcmVuY2U6IGJhc2ljUmVmZXJlbmNlLFxuICAgICAgc291cmNlTGFuZ3VhZ2UsXG4gICAgICB0YXJnZXRMYW5ndWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
590
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ob29rcy91c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0LnRzeCJdLCJuYW1lcyI6WyJSZWFjdCIsIkFsaWdubWVudEhlbHBlcnMiLCJVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzIiwidXNmbUhlbHBlcnMiLCJpc0VxdWFsIiwiU2NyaXB0dXJlQ29uZmlnIiwiU2NyaXB0dXJlUmVmZXJlbmNlIiwiU2VydmVyQ29uZmlnIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsImxlbmd0aCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiY3VycmVudEluZGV4IiwiZW5hYmxlRWRpdCIsImVuYWJsZUFsaWdubWVudCIsImh0dHBDb25maWciLCJpbml0aWFsVmVyc2VUZXh0IiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwic3RhdGUiLCJzZXRTdGF0ZV8iLCJjaGFwdGVyIiwidmVyc2UiLCJwcm9qZWN0SWQiLCJiYXNpY1JlZmVyZW5jZSIsInNldFN0YXRlIiwibmV3U3RhdGUiLCJwcmV2U3RhdGUiLCJjbGVhckNoYW5nZXMiLCJjb25zb2xlIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNsZWFyU3RhdGUiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyIsInJlc291cmNlSWQiLCJib29rSWQiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzIiwicmVzb3VyY2VMaW5rIiwidXNlTWVtbyIsInZlcnNlT2JqZWN0cyIsInZlcnNlcyIsImxhbmd1YWdlSWQiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJBcnJheSIsInByb3RvdHlwZSIsInB1c2giLCJhcHBseSIsInVzZUVmZmVjdCIsIm5vdEVtcHR5IiwiYWxpZ25lZF8iLCJyZXN1bHRzIiwiZ2V0Q2hhbmdlcyIsIl9uZXdTdGF0ZSIsInVwZGF0ZWRWZXJzZU9iamVjdHNfIiwidXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyIsInRhcmdldFZlcnNlT2JqZWN0cyIsInJlZiIsInZlcnNlc0ZvclJlZiIsImhhbmRsZUFsaWdubWVudENsaWNrIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJwYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSIsInRhcmdldFdvcmRzIiwidmVyc2VBbGlnbm1lbnRzIiwiX25ld0FsaWdubWVudHMiLCJ2ZXJzZVVzZm0iLCJhZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0iLCJhbGlnbmVkVmVyc2VPYmplY3RzIiwidXNmbVZlcnNlVG9Kc29uIiwic2F2ZUFsaWdubWVudCIsImNhbGxTZXRTYXZlZFN0YXRlIiwiY2FuY2VsQWxpZ25tZW50Iiwic2V0RWRpdGluZyIsImVkaXRpbmdfIiwiX25ld1ZlcnNlVGV4dCIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0IiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsImN1cnJlbnRWZXJzZU9iamVjdHMiLCJfYWxpZ25tZW50c0NoYW5nZWQiLCJzZXRWZXJzZUNoYW5nZWQiLCJjaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJ1bnNhdmVkQ2hhbmdlcyIsInVuc2F2ZWRDaGFuZ2VzXyIsIm9uQWxpZ25tZW50c0NoYW5nZSIsImFsaWdubWVudENvbXBsZXRlIiwiYWN0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQSxPQUFPLEtBQUtBLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUNFQyxnQkFERixFQUVFQyx5QkFGRixFQUdFQyxXQUhGLFFBSU8sa0JBSlA7QUFLQSxPQUFPLEtBQUtDLE9BQVosTUFBeUIsWUFBekI7QUFDQSxTQUNFQyxlQURGLEVBRUVDLGtCQUZGLEVBR0VDLFlBSEYsUUFJTyxVQUpQO0FBS0EsU0FBU0MsNEJBQVQsUUFBNkMsNEJBQTdDO0FBQ0EsU0FBU0MsZUFBVCxRQUFnQyxVQUFoQztBQUNBLFNBQVNDLGVBQVQsUUFBZ0MsZ0JBQWhDOztBQXFEQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBU0MsYUFBVCxDQUF1QkMsZUFBdkIsRUFBd0NDLG9CQUF4QyxFQUE4RDtBQUFBOztBQUM1REEsRUFBQUEsb0JBQW9CLEdBQUcseUJBQUFBLG9CQUFvQixVQUFwQiw4REFBc0JDLE1BQXRCLEdBQStCRCxvQkFBL0IsR0FBc0QsSUFBN0UsQ0FENEQsQ0FDc0I7O0FBRHRCLDhCQUUzQlosZ0JBQWdCLENBQUNjLGdDQUFqQixDQUFrREgsZUFBbEQsRUFBbUVDLG9CQUFuRSxDQUYyQjtBQUFBLE1BRXBERyxVQUZvRCx5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QVhBLFdBRks7QUFHTGlFLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBSEs7QUFJTGhFLE1BQUFBLE9BQU8sRUFBUEEsT0FKSztBQUtMcEIsTUFBQUEsVUFBVSxFQUFWQSxVQUxLO0FBTUxDLE1BQUFBLGVBQWUsRUFBZkEsZUFOSztBQU9MRSxNQUFBQSxnQkFBZ0IsRUFBaEJBLGdCQVBLO0FBUUxaLE1BQUFBLG1CQUFtQixFQUFuQkEsbUJBUks7QUFTTEUsTUFBQUEsWUFBWSxFQUFaQSxZQVRLO0FBVUxlLE1BQUFBLFNBQVMsRUFBRW1CLGNBVk47QUFXTGYsTUFBQUEsY0FBYyxFQUFkQSxjQVhLO0FBWUxFLE1BQUFBLGNBQWMsRUFBZEEsY0FaSztBQWFMQyxNQUFBQSxLQUFLLEVBQUxBLEtBYks7QUFjTDBFLE1BQUFBLGNBQWMsRUFBZEEsY0FkSztBQWVMakcsTUFBQUEsZ0JBQWdCLEVBQWhCQTtBQWZLO0FBWEYsR0FBUDtBQTZCRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycyxcbiAgdXNmbUhlbHBlcnMsXG59IGZyb20gJ3dvcmQtYWxpZ25lci1yY2wnXG5pbXBvcnQgKiBhcyBpc0VxdWFsIGZyb20gJ2RlZXAtZXF1YWwnXG5pbXBvcnQge1xuICBTY3JpcHR1cmVDb25maWcsXG4gIFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgU2VydmVyQ29uZmlnLFxufSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB7IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyB7XG4gIC8vIGluZGV4IHRvIHVzZSBmb3IgYm9vayAoZS5nLiBgMDFgIGZvciBgR0VOYClcbiAgYm9va0luZGV4OiBzdHJpbmcsXG4gIC8vIGN1cnJlbnQgdmVyc2Ugc2VsZWN0ZWQgZnJvbSBpbml0aWFsVmVyc2VPYmplY3RzW11cbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHJlZmVyZW5jZSBmb3IgdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudFxuICBjdXJyZW50VmVyc2VSZWY6IFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxuICBlbmFibGVFZGl0OiBib29sZWFuLFxuICAvLyBpZiB0cnVlIHRoZW4gYWxpZ25tZW50IGlzIGFsbG93ZWRcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxuICAvLyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaHR0cCBjb21tdW5pY2F0aW9uXG4gIGh0dHBDb25maWc6IFNlcnZlckNvbmZpZyxcbiAgLy8gYXJyYXkgb2YgZWFjaCB2ZXJzZSBmb3IgaW4gcmVmZXJlbmNlIHJhbmdlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFtdLFxuICAvLyBpbml0aWFsIHRleHQgZm9yIHZlcnNlXG4gIGluaXRpYWxWZXJzZVRleHQ6IHN0cmluZyxcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcbiAgaXNOZXdUZXN0YW1lbnQ6IGJvb2xlYW4sXG4gIC8vIHVzZXIgbmFtZSBvZiBsb2dnZWQgaW4gdXNlclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcbiAgLy8gb3duZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VzXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogc3RyaW5nLFxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXG4gIG9yaWdpbmFsUmVwb1VybDogc3RyaW5nLFxuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBvYmplY3QsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8vIGRldGFpbHMgYWJvdXQgdGhlIGN1cnJlbnQgc2NyaXB0dXJlIGxvYWRlZFxuICBzY3JpcHR1cmVDb25maWc6IFNjcmlwdHVyZUNvbmZpZyxcbiAgLy8gc2V0dGluZ3MgdG8gYmUgdXNlZCBmb3Igc2NyaXB0dXJlXG4gIHNjcmlwdHVyZVNldHRpbmdzOiB7IH0sXG4gIC8vIGNhbGxiYWNrIHRvIHNhdmUgY3VycmVudCB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgY2hhbmdlc1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uLFxuICAvLyBzb3VyY2UgbGFuZ3VhZ2VcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBvYmplY3QsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7b2JqZWN0W119IG9yaWdpbmFsVmVyc2VPYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IG9yaWdpbmFsVmVyc2VPYmplY3RzPy5sZW5ndGggPyBvcmlnaW5hbFZlcnNlT2JqZWN0cyA6IG51bGwgLy8gbWFrZSBzdXJlIG5vdCBwYXNzaW5nIGVtcHR5IEFycmF5XG4gIGNvbnN0IHsgYWxpZ25tZW50cywgd29yZEJhbmsgfSA9IEFsaWdubWVudEhlbHBlcnMuZXh0cmFjdEFsaWdubWVudHNGcm9tVGFyZ2V0VmVyc2UodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgcmV0dXJuIEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUod29yZEJhbmssIGFsaWdubWVudHMpXG59XG5cbi8qKlxuICogZ2V0IHRoZSB1cGRhdGVkIFVTRk0gZm9yIHRhcmdldCB2ZXJzZSBmcm9tIHRoZSB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYW5kIGxhdGVzdCB0ZXh0XG4gKiBAcGFyYW0ge29iamVjdFtdfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge29iamVjdFtdfSBpbml0aWFsVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZlcnNlVGV4dENoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQpIHtcbiAgbGV0IHRhcmdldFZlcnNlVVNGTSA9IG51bGxcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcblxuICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldFZlcnNlVVNGTSA9IHRhcmdldFZlcnNlVGV4dFxuICB9IGVsc2Uge1xuICAgIHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgfVxuICByZXR1cm4gdGFyZ2V0VmVyc2VVU0ZNXG59XG5cbi8vIG1hbmFnZSB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgc3RhdGVzXG5leHBvcnQgZnVuY3Rpb24gdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCh7XG4gIGN1cnJlbnRJbmRleCxcbiAgZW5hYmxlRWRpdCxcbiAgZW5hYmxlQWxpZ25tZW50LFxuICBodHRwQ29uZmlnLFxuICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICBpbml0aWFsVmVyc2VUZXh0LFxuICBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLFxuICBvcmlnaW5hbFJlcG9VcmwsXG4gIHJlZmVyZW5jZSxcbiAgc2NyaXB0dXJlQ29uZmlnLFxuICBzY3JpcHR1cmVTZXR0aW5ncyxcbiAgc2V0U2F2ZWRDaGFuZ2VzLFxuICBzb3VyY2VMYW5ndWFnZSxcbiAgc3RhcnRFZGl0QnJhbmNoLFxuICB0YXJnZXRMYW5ndWFnZSxcbiAgdGl0bGUsXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaCxcbn0gOiBTY3JpcHR1cmVBTGlnbm1lbnRFZGl0UHJvcHMpIHtcbiAgY29uc3QgW3N0YXRlLCBzZXRTdGF0ZV9dID0gUmVhY3QudXNlU3RhdGUoe1xuICAgIGFsaWduZWQ6IGZhbHNlLFxuICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgbmV3VmVyc2VUZXh0OiBudWxsLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gIH0pXG5cbiAgY29uc3Qge1xuICAgIGFsaWduZWQsXG4gICAgYWxpZ25lckRhdGEsXG4gICAgZWRpdGluZyxcbiAgICBuZXdBbGlnbm1lbnRzLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gIH0gPSBzdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgYWxpZ25tZW50IHN0YXR1cyB3aGVuIGFsaWduZXIgaXMgaGlkZGVuXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBsZXQgYWxpZ25lZF8gPSBmYWxzZVxuXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cbiAgICAgIGlmIChub3RFbXB0eSkgeyAvLyBza2lwIGlmIGVtcHR5XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgICBhbGlnbmVkXyA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZChyZXN1bHRzPy50YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcbiAgICAgICAgc2V0U3RhdGUoeyBhbGlnbmVkOiBhbGlnbmVkXyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxWZXJzZU9iamVjdHMsIGFsaWduZXJEYXRhLCBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQsIGVuYWJsZUFsaWdubWVudCwgb3JpZ2luYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBnZXQgY2hhbmdlcyBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIG9wdGlvbmFsbHkgcGFzcyBpbiBuZXcgc3RhdGUgKHRvIG92ZXJyaWRlIHN0YXRlKVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2hhbmdlcyhuZXdTdGF0ZSA9IHt9KSB7XG4gICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBzdGFydGVkICR7Y3VycmVudEluZGV4fSAtIHBhc3NlZCBzdGF0ZWAsIG5ld1N0YXRlKVxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdBbGlnbm1lbnRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSA9IF9uZXdTdGF0ZVxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgIGlmIChuZXdBbGlnbm1lbnRzKSB7IC8vIGlmIHVuc2F2ZWQgYWxpZ25tZW50IGNoYW5nZXMsIGFwcGx5IHRoZW1cbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YSA9IG51bGxcbiAgICAgIGF3YWl0IHN0YXJ0RWRpdEJyYW5jaCgpXG5cbiAgICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gaWYgd29yZCBhbGlnbmVyIG5vdCBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSB0b2dnbGUgT04gYWxpZ25tZW50YClcbiAgICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcblxuICAgICAgICBpZiAob3JpZ2luYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICBvcmlnaW5hbFZlcnNlVXNmbSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0YXJnZXRXb3Jkczogd29yZEJhbmssXG4gICAgICAgICAgdmVyc2VBbGlnbm1lbnRzOiBhbGlnbm1lbnRzLFxuICAgICAgICB9ID0gQWxpZ25tZW50SGVscGVycy5wYXJzZVVzZm1Ub1dvcmRBbGlnbmVyRGF0YSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VVc2ZtKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSB7IHdvcmRCYW5rLCBhbGlnbm1lbnRzIH1cbiAgICAgIH0gZWxzZSB7IC8vIHdvcmQgYWxpZ25lciBjdXJyZW50bHkgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gYWxpZ25tZW50IGFscmVhZHkgc2hvd25gKVxuICAgICAgICBfYWxpZ25lckRhdGEgPSBhbGlnbmVyRGF0YVxuICAgICAgfVxuICAgICAgc2V0U3RhdGUoeyBhbGlnbmVyRGF0YTogX2FsaWduZXJEYXRhIH0pXG4gICAgICBjb25zb2xlLmxvZyhfYWxpZ25lckRhdGEpXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGdldCB1cGRhdGVkIHZlcnNlIG9iamVjdHMgYWZ0ZXIgYWxpZ25tZW50cyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHRhcmdldFZlcnNlVGV4dCA9IG5ld1ZlcnNlVGV4dCB8fCBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmNvbnZlcnRWZXJzZURhdGFUb1VTRk0oY3VycmVudFZlcnNlT2JqZWN0c18pXG4gICAgY29uc3QgdmVyc2VVc2ZtID0gQWxpZ25tZW50SGVscGVycy5hZGRBbGlnbm1lbnRzVG9WZXJzZVVTRk0oX25ld0FsaWdubWVudHMudGFyZ2V0V29yZHMsIF9uZXdBbGlnbm1lbnRzLnZlcnNlQWxpZ25tZW50cywgdGFyZ2V0VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odmVyc2VVc2ZtKVxuICAgIHJldHVybiBhbGlnbmVkVmVyc2VPYmplY3RzXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBzYXZlIGN1cnJlbnQgYWxpZ25tZW50cyBpbiB3b3JkIGFsaWduZXIuICBHZW5lcmF0ZXMgbmV3IHZlcnNlIGNvbnRlbnQgYW5kIHNhdmVzIGluIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUFsaWdubWVudChfbmV3QWxpZ25tZW50cyA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbmV3QWxpZ25tZW50c2AsIF9uZXdBbGlnbm1lbnRzKVxuXG4gICAgaWYgKF9uZXdBbGlnbm1lbnRzKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cylcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IGFsaWduZWRWZXJzZU9iamVjdHMsXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHRydWUsIG5ld1N0YXRlIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5vIGFsaWdubWVudCBjaGFuZ2VzYClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBjYW5jZWwgd29yayBpbiB3b3JkIGFsaWduZXIuICBDYWxjdWxhdGVzIGFuZCBkaXNwbGF5cyBjdXJyZW50IGFsaWdubWVudCB2YWxpZCBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKi9cbiAgZnVuY3Rpb24gY2FuY2VsQWxpZ25tZW50KCkge1xuICAgIGNvbnNvbGUubG9nKGBjYW5jZWxBbGlnbm1lbnQoKWApXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBudWxsLCBhbGlnbmVkIH0pXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIGJ1dHRvbiB0byBzZXQgZWRpdGluZyBzdGF0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmdfIC0gaWYgdHJ1ZSwgZWRpdG9yIGlzIHNob3duLCBvdGhlcndpc2UgZWRpdG9yIGlzIGhpZGRlblxuICAgKiBAcGFyYW0ge3N0cmluZ30gX25ld1ZlcnNlVGV4dCAtIG9wdGlvbmFsIHZlcnNlIHRleHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZ1bmN0aW9uIHNldEVkaXRpbmcoZWRpdGluZ18sIF9uZXdWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQpIHtcbiAgICBpZiAoZW5hYmxlRWRpdCkge1xuICAgICAgaWYgKGVkaXRpbmdfICE9PSBlZGl0aW5nKSB7XG4gICAgICAgIF9uZXdWZXJzZVRleHQgPSBfbmV3VmVyc2VUZXh0IHx8IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gX25ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICBlZGl0aW5nOiBlZGl0aW5nXyxcbiAgICAgICAgICBuZXdWZXJzZVRleHQ6IF9uZXdWZXJzZVRleHQsXG4gICAgICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghdmVyc2VUZXh0Q2hhbmdlZCkge1xuICAgICAgICAgIC8vIGZhbGxiYWNrIHRvIG1ha2Ugc3VyZSB0ZXh0IGZyb20gdmVyc2VPYmplY3RzIG1hdGNoZXMgY3VycmVudCB0ZXh0XG4gICAgICAgICAgY29uc3QgdmVyc2VUZXh0ID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5nZXRVc2ZtRm9yVmVyc2VDb250ZW50KHsgdmVyc2VPYmplY3RzOiBjdXJyZW50VmVyc2VPYmplY3RzIH0gKVxuXG4gICAgICAgICAgaWYgKHZlcnNlVGV4dCAhPT0gX25ld1ZlcnNlVGV4dCkgeyAvLyBpZiB0ZXh0IGZyb20gdmVyc2Ugb2JqZWN0cyBkb2VzIG5vdCBtYXRjaCBsYXRlc3QgdGV4dFxuICAgICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50IHRvIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0cywgX25ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gdGFyZ2V0VmVyc2VPYmplY3RzIC8vIHVwZGF0ZSB2ZXJzZU9iamVjdHMgdG8gbWF0Y2ggY3VycmVudCB0ZXh0XG4gICAgICAgICAgICBuZXdTdGF0ZVsndXBkYXRlZFZlcnNlT2JqZWN0cyddID0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgICAgY29uc3QgX2FsaWdubWVudHNDaGFuZ2VkID0gKF91cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIF91cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICAgICAgY2FsbFNldFNhdmVkU3RhdGUodmVyc2VUZXh0Q2hhbmdlZCB8fCBfYWxpZ25tZW50c0NoYW5nZWQsIG5ld1N0YXRlIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZnJvbSB0aGUgZWRpdCBvbkNoYW5nZSBldmVudCB0byB1cGRhdGUgZWRpdCBzdGF0ZSB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBjaGFuZ2VkIC0gdHJ1ZSBpZiB0aGUgbmV3VmVyc2VUZXh0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBpbml0aWFsVmVyc2VUZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBjdXJyZW50IGNoYW5nZWQgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2luaXRpYWxWZXJzZVRleHQgLSBpbml0aWFsIHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIHNldFZlcnNlQ2hhbmdlZChjaGFuZ2VkLCBuZXdWZXJzZVRleHQsIF9pbml0aWFsVmVyc2VUZXh0KSB7XG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0cywgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IGFsaWduZWQgPSBpc1VzZm1BbGlnbmVkKHRhcmdldFZlcnNlVGV4dCwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZCA9IG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuXG4gICAgc2V0U3RhdGUoe1xuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIGFsaWduZWQsXG4gICAgfSlcbiAgfVxuXG4gIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBnZW5lcmF0ZSBuZXcgdmVyc2VPYmplY3RzIHRvIGRpc3BsYXkgaW4gU2NyaXB0dXJlUGFuZVxuICAgIGlmIChpbml0aWFsVmVyc2VPYmplY3RzKSB7XG4gICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXNmbUhlbHBlcnMudXNmbVZlcnNlVG9Kc29uKHRhcmdldFZlcnNlVVNGTSlcbiAgICAgIHJldHVybiBjdXJyZW50VmVyc2VPYmplY3RzX1xuICAgIH1cbiAgICByZXR1cm4gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICB9LCBbdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0XSlcblxuICBjb25zdCB1bnNhdmVkQ2hhbmdlczpib29sZWFuID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gaW5kaWNhdGUgd2UgaGF2ZSB1bnNhdmVkIGNoYW5nZXNcbiAgICBjb25zdCBjaGFuZ2VkID0gdmVyc2VUZXh0Q2hhbmdlZCB8fCAodXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCB1cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICByZXR1cm4gY2hhbmdlZFxuICB9LCBbdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZF0pXG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIHRvIHNjcmlwdHVyZSBjYXJkIHRvIHVwZGF0ZWQgd2l0aCBsYXRlc3Qgc3RhdGUgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHVuc2F2ZWRDaGFuZ2VzX1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNhbGxTZXRTYXZlZFN0YXRlKHVuc2F2ZWRDaGFuZ2VzXywgbmV3U3RhdGUgPSB7IH0gKSB7XG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgY2FsbFNldFNhdmVkU3RhdGUgLSBuZXcgc3RhdGVgLCBfbmV3U3RhdGUpXG4gICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsICF1bnNhdmVkQ2hhbmdlc18sIHtcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBzdGF0ZTogX25ld1N0YXRlLFxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZXQgc2F2ZWQgY2hhbmdlcyB3aGVuZXZlciB1c2VyIGVkaXRzIHZlcnNlIHRleHQgb3IgYWxpZ25tZW50cyBvciBpZiBhbGlnbm1lbnRzIGFyZSBvcGVuXG4gICAgY29uc3QgdW5zYXZlZENoYW5nZXNfID0gdW5zYXZlZENoYW5nZXMgfHwgYWxpZ25lckRhdGFcbiAgICBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc18pXG4gIH0sIFt1bnNhdmVkQ2hhbmdlcywgYWxpZ25lckRhdGFdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiBhbGlnbm1lbnRzIGFyZSBiZWluZyBjaGFuZ2VkXG4gICAqIEBwYXJhbSB7b2JqZWN0fSByZXN1bHRzXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlXG4gICAqL1xuICBmdW5jdGlvbiBvbkFsaWdubWVudHNDaGFuZ2UocmVzdWx0cykge1xuICAgIGNvbnNvbGUubG9nKGBvbkFsaWdubWVudHNDaGFuZ2UoKSAtIGFsaWdubWVudCBjaGFuZ2VkLCByZXN1bHRzYCwgcmVzdWx0cykgLy8gbWVyZ2UgYWxpZ25tZW50cyBpbnRvIHRhcmdldCB2ZXJzZSBhbmQgY29udmVydCB0byBVU0ZNXG4gICAgY29uc3QgeyB0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzIH0gPSByZXN1bHRzXG4gICAgY29uc3QgYWxpZ25tZW50Q29tcGxldGUgPSBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMpXG4gICAgY29uc29sZS5sb2coYEFsaWdubWVudHMgYXJlICR7YWxpZ25tZW50Q29tcGxldGUgPyAnQ09NUExFVEUhJyA6ICdpbmNvbXBsZXRlJ31gKVxuICAgIHNldFN0YXRlKHsgbmV3QWxpZ25tZW50czogcmVzdWx0cywgYWxpZ25lZDogYWxpZ25tZW50Q29tcGxldGUgfSlcbiAgICByZXR1cm4gYWxpZ25tZW50Q29tcGxldGVcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWN0aW9uczoge1xuICAgICAgY2FuY2VsQWxpZ25tZW50LFxuICAgICAgY2xlYXJDaGFuZ2VzLFxuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGhhbmRsZUFsaWdubWVudENsaWNrLFxuICAgICAgb25BbGlnbm1lbnRzQ2hhbmdlLFxuICAgICAgc2F2ZUFsaWdubWVudCxcbiAgICAgIHNldEVkaXRpbmcsXG4gICAgICBzZXRWZXJzZUNoYW5nZWQsXG4gICAgfSxcbiAgICBzdGF0ZToge1xuICAgICAgYWxpZ25lZCxcbiAgICAgIGFsaWduZXJEYXRhLFxuICAgICAgY3VycmVudFZlcnNlT2JqZWN0cyxcbiAgICAgIGVkaXRpbmcsXG4gICAgICBlbmFibGVFZGl0LFxuICAgICAgZW5hYmxlQWxpZ25tZW50LFxuICAgICAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgICAgIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICByZWZlcmVuY2U6IGJhc2ljUmVmZXJlbmNlLFxuICAgICAgc291cmNlTGFuZ3VhZ2UsXG4gICAgICB0YXJnZXRMYW5ndWFnZSxcbiAgICAgIHRpdGxlLFxuICAgICAgdW5zYXZlZENoYW5nZXMsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0sXG4gIH1cbn1cbiJdfQ==
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.12-beta",
4
+ "version": "3.4.13-beta",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"
@@ -16,7 +16,7 @@
16
16
  "start": "styleguidist server NODE_OPTIONS=--max_old_space_size=4096",
17
17
  "build": "styleguidist build",
18
18
  "prepublishOnly": "rm -fr ./dist && babel ./src --out-dir ./dist -s inline --extensions \".ts,.tsx,.js\"",
19
- "pack-next": "yarn version --prerelease && yarn && yarn run prepublishOnly && yarn pack"
19
+ "pack-next": "yarn version --prerelease --no-git-tag-version && yarn && yarn run prepublishOnly && yarn pack"
20
20
  },
21
21
  "peerDependencies": {
22
22
  "@material-ui/core": "4.11.0",