single-scripture-rcl 3.4.13-beta.55 → 3.4.14-beta.9

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.
@@ -14,6 +14,8 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
14
14
  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; }
15
15
  function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
16
16
  function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
17
+ import "core-js/modules/es.array.concat.js";
18
+ import "core-js/modules/es.array.index-of.js";
17
19
  import "core-js/modules/es.array.last-index-of.js";
18
20
  import "core-js/modules/es.array.is-array.js";
19
21
  import "core-js/modules/es.symbol.js";
@@ -51,10 +53,10 @@ import "core-js/modules/es.object.set-prototype-of.js";
51
53
  import "core-js/modules/es.array.reverse.js";
52
54
  // @ts-ignore
53
55
  import * as React from 'react';
54
- import { AlignmentHelpers, UsfmFileConversionHelpers, usfmHelpers } from 'word-aligner-rcl';
56
+ import { AlignmentHelpers, migrateOriginalLanguageHelpers, UsfmFileConversionHelpers, usfmHelpers } from 'word-aligner-rcl';
55
57
  import { isEqual } from '@react-hookz/deep-equal';
56
58
  import { BookObjectsType, ScriptureConfig, ScriptureReference, ServerConfig, VerseObjectsType } from '../types';
57
- import { getScriptureResourceSettings, verseObjectsHaveWords } from '../utils/ScriptureSettings';
59
+ import { getAlignments, getScriptureResourceSettings } from '../utils/ScriptureSettings';
58
60
  import { ORIGINAL_SOURCE } from '../utils';
59
61
  import { getVersesForRef } from './useScripture';
60
62
  /**
@@ -91,6 +93,52 @@ function getCurrentVerseUsfm(updatedVerseObjects, initialVerseObjects, verseText
91
93
  return targetVerseUSFM;
92
94
  }
93
95
 
96
+ /**
97
+ * compare initial alignment with final to see if changed
98
+ * @param {string} prefix
99
+ * @param {VerseObjectsType} updatedVerseObjects
100
+ * @param {VerseObjectsType} initialVerseObjects
101
+ * @returns {boolean} true if changed
102
+ */
103
+ function isMigrated(prefix, updatedVerseObjects, initialVerseObjects) {
104
+ var updatedAlignments = getAlignments(updatedVerseObjects);
105
+ var initialAlignments = getAlignments(initialVerseObjects);
106
+ var same = updatedAlignments.length === initialAlignments.length; // first make sure lengths are the same
107
+ var firstDiff;
108
+ if (same) {
109
+ // even if lengths are the same double check each alignment
110
+ for (var i = 0; i < updatedAlignments.length; i++) {
111
+ var updatedAlignment = updatedAlignments[i];
112
+ var initialAlignment = initialAlignments[i];
113
+ if (!isEqual(updatedAlignment, initialAlignment)) {
114
+ firstDiff = i;
115
+ same = false;
116
+ break;
117
+ }
118
+ }
119
+ }
120
+ var different = !same;
121
+ if (different) {
122
+ console.log("".concat(prefix, " - target verse alignments migrated to match original language, first difference is at ").concat(firstDiff), updatedVerseObjects, initialVerseObjects);
123
+ }
124
+ return different;
125
+ }
126
+
127
+ // TODO: remove
128
+ function checkForDataCorruption(prefix, targetAlignment) {
129
+ var targetAlignmentText = targetAlignment || '';
130
+ if (typeof targetAlignment !== 'string') {
131
+ targetAlignmentText = JSON.stringify(targetAlignment);
132
+ }
133
+ var invalidCharPos = targetAlignmentText.indexOf('�');
134
+ var invalidCharacterFound = invalidCharPos >= 0; // this should not be found, because invalid character
135
+
136
+ if (invalidCharacterFound) {
137
+ console.log("".concat(prefix, " - invalid Character found"), targetAlignment);
138
+ }
139
+ return invalidCharacterFound;
140
+ }
141
+
94
142
  /**
95
143
  * return true if only spaces in content
96
144
  * @param {string} text
@@ -253,9 +301,12 @@ export function useScriptureAlignmentEdit(_ref) {
253
301
  } else if (newVerseText && newVerseText !== initialVerseText) {
254
302
  var results = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseObjects_, newVerseText);
255
303
  aligned_ = isUsfmAligned(results === null || results === void 0 ? void 0 : results.targetVerseText, originalVerseObjects);
304
+ // TODO: remove all
305
+ checkForDataCorruption('useEffect - recheck alignments', results === null || results === void 0 ? void 0 : results.targetVerseText);
256
306
  } else {
257
307
  var targetVerseUSFM = UsfmFileConversionHelpers.convertVerseDataToUSFM(currentVerseObjects_);
258
308
  aligned_ = isUsfmAligned(targetVerseUSFM, originalVerseObjects);
309
+ checkForDataCorruption('useEffect - recheck alignments', targetVerseUSFM);
259
310
  }
260
311
  }
261
312
  if (aligned !== aligned_) {
@@ -286,13 +337,16 @@ export function useScriptureAlignmentEdit(_ref) {
286
337
  // if unsaved alignment changes, apply them
287
338
  console.log("getChanges - applying unsaved alignments}");
288
339
  updatedVerseObjects_ = updateVerseWithNewAlignments();
340
+ checkForDataCorruption('getChanges()', updatedVerseObjects_);
289
341
  }
290
342
  if (verseTextChanged && newVerseText) {
291
343
  console.log("getChanges - applying new text:", newVerseText);
344
+ checkForDataCorruption('getChanges()', newVerseText);
292
345
  var currentVerseObjects_ = updatedVerseObjects_ || initialVerseObjects;
293
346
  updatedVerseObjects_ && console.log("getChanges - applying updated alignments");
294
347
  var _AlignmentHelpers$upd2 = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseObjects_, newVerseText),
295
348
  targetVerseObjects = _AlignmentHelpers$upd2.targetVerseObjects;
349
+ checkForDataCorruption('getChanges()', targetVerseObjects);
296
350
  updatedVerseObjects_ = targetVerseObjects;
297
351
  } else {
298
352
  // only alignment changes to upload
@@ -301,6 +355,7 @@ export function useScriptureAlignmentEdit(_ref) {
301
355
  updatedVerseObjects_: updatedVerseObjects_
302
356
  });
303
357
  updatedVerseObjects_ = updatedVerseObjects_ || initialVerseObjects;
358
+ checkForDataCorruption('getChanges()', updatedVerseObjects_);
304
359
  }
305
360
  if (updatedVerseObjects_) {
306
361
  var _scriptureConfig$vers;
@@ -326,7 +381,7 @@ export function useScriptureAlignmentEdit(_ref) {
326
381
  */
327
382
  function _handleAlignmentClick() {
328
383
  _handleAlignmentClick = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() {
329
- var _alignerData, targetVerseUSFM, originalVerseUsfm, _AlignmentHelpers$par, wordBank, alignments;
384
+ var _alignerData, originalVerseUsfm, _updatedVerseObjects, _currentVerseObjects, targetVerseUSFM, _AlignmentHelpers$par, wordBank, alignments;
330
385
  return _regeneratorRuntime().wrap(function _callee$(_context) {
331
386
  while (1) switch (_context.prev = _context.next) {
332
387
  case 0:
@@ -341,11 +396,17 @@ export function useScriptureAlignmentEdit(_ref) {
341
396
  if (!alignerData) {
342
397
  // if word aligner not shown
343
398
  console.log("handleAlignmentClick - toggle ON alignment");
344
- targetVerseUSFM = getCurrentVerseUsfm(updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
345
399
  originalVerseUsfm = null;
400
+ _updatedVerseObjects = updatedVerseObjects;
401
+ checkForDataCorruption('handleAlignmentClick()', updatedVerseObjects || initialVerseObjects);
346
402
  if (originalVerseObjects) {
347
403
  originalVerseUsfm = UsfmFileConversionHelpers.convertVerseDataToUSFM(originalVerseObjects);
404
+ _currentVerseObjects = updatedVerseObjects || initialVerseObjects;
405
+ _updatedVerseObjects = migrateOriginalLanguageHelpers.migrateTargetAlignmentsToOriginal(_currentVerseObjects, originalVerseObjects);
406
+ isMigrated('handleAlignmentClick()', _updatedVerseObjects, _currentVerseObjects);
407
+ checkForDataCorruption('handleAlignmentClick()', _updatedVerseObjects);
348
408
  }
409
+ targetVerseUSFM = getCurrentVerseUsfm(_updatedVerseObjects, initialVerseObjects, verseTextChanged, newVerseText);
349
410
  _AlignmentHelpers$par = AlignmentHelpers.parseUsfmToWordAlignerData(targetVerseUSFM, originalVerseUsfm), wordBank = _AlignmentHelpers$par.targetWords, alignments = _AlignmentHelpers$par.verseAlignments;
350
411
  _alignerData = {
351
412
  wordBank: wordBank,
@@ -377,8 +438,10 @@ export function useScriptureAlignmentEdit(_ref) {
377
438
  var _newAlignments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : newAlignments;
378
439
  var currentVerseObjects_ = updatedVerseObjects || initialVerseObjects;
379
440
  var targetVerseText = newVerseText || UsfmFileConversionHelpers.convertVerseDataToUSFM(currentVerseObjects_);
441
+ checkForDataCorruption('updateVerseWithNewAlignments()', targetVerseText);
380
442
  var verseUsfm = AlignmentHelpers.addAlignmentsToVerseUSFM(_newAlignments.targetWords, _newAlignments.verseAlignments, targetVerseText);
381
443
  var alignedVerseObjects = usfmHelpers.usfmVerseToJson(verseUsfm);
444
+ checkForDataCorruption('updateVerseWithNewAlignments()', alignedVerseObjects);
382
445
  return alignedVerseObjects;
383
446
  }
384
447
 
@@ -467,6 +530,7 @@ export function useScriptureAlignmentEdit(_ref) {
467
530
  verseText = UsfmFileConversionHelpers.getUsfmForVerseContent({
468
531
  verseObjects: currentVerseObjects
469
532
  });
533
+ checkForDataCorruption('setEditing()', verseText);
470
534
  if (hasTextChangedSignificantly(verseText, _newVerseText)) {
471
535
  // apply alignment to current text
472
536
  _AlignmentHelpers$upd4 = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseObjects, _newVerseText), targetVerseObjects = _AlignmentHelpers$upd4.targetVerseObjects;
@@ -476,6 +540,8 @@ export function useScriptureAlignmentEdit(_ref) {
476
540
  }
477
541
  setState(newState);
478
542
  _alignmentsChanged = _updatedVerseObjects && !isEqual(initialVerseObjects, _updatedVerseObjects);
543
+ checkForDataCorruption('setEditing()', initialVerseObjects);
544
+ checkForDataCorruption('setEditing()', _updatedVerseObjects);
479
545
  callSetSavedState(_verseTextChanged || _alignmentsChanged, newState);
480
546
  }
481
547
  }
@@ -488,8 +554,14 @@ export function useScriptureAlignmentEdit(_ref) {
488
554
  return _setEditing.apply(this, arguments);
489
555
  }
490
556
  function setVerseChanged(changed, newVerseText, _initialVerseText) {
491
- var _AlignmentHelpers$upd3 = AlignmentHelpers.updateAlignmentsToTargetVerse(currentVerseObjects, newVerseText),
557
+ checkForDataCorruption('setVerseChanged()', newVerseText);
558
+ var _targetVerseObjects = currentVerseObjects || initialVerseObjects;
559
+ checkForDataCorruption('setVerseChanged()', _targetVerseObjects);
560
+ var migratedVerseObjects = migrateOriginalLanguageHelpers.migrateTargetAlignmentsToOriginal(_targetVerseObjects, originalVerseObjects);
561
+ isMigrated('setVerseChanged()', _targetVerseObjects, migratedVerseObjects);
562
+ var _AlignmentHelpers$upd3 = AlignmentHelpers.updateAlignmentsToTargetVerse(migratedVerseObjects, newVerseText),
492
563
  targetVerseText = _AlignmentHelpers$upd3.targetVerseText;
564
+ checkForDataCorruption('setVerseChanged()', targetVerseText);
493
565
  var aligned = isUsfmAligned(targetVerseText, originalVerseObjects);
494
566
  var verseTextChanged = newVerseText !== initialVerseText;
495
567
  setState({
@@ -582,4 +654,4 @@ export function useScriptureAlignmentEdit(_ref) {
582
654
  }
583
655
  };
584
656
  }
585
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJTZXJ2ZXJDb25maWciLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsInZlcnNlT2JqZWN0c0hhdmVXb3JkcyIsIk9SSUdJTkFMX1NPVVJDRSIsImdldFZlcnNlc0ZvclJlZiIsImlzVXNmbUFsaWduZWQiLCJ0YXJnZXRWZXJzZVVTRk0iLCJvcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9vcmlnaW5hbFZlcnNlT2JqZWN0cyIsIl9BbGlnbm1lbnRIZWxwZXJzJGV4dCIsImV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlIiwiYWxpZ25tZW50cyIsIndvcmRCYW5rIiwiYXJlQWxnbm1lbnRzQ29tcGxldGUiLCJnZXRDdXJyZW50VmVyc2VVc2ZtIiwidXBkYXRlZFZlcnNlT2JqZWN0cyIsImluaXRpYWxWZXJzZU9iamVjdHMiLCJ2ZXJzZVRleHRDaGFuZ2VkIiwibmV3VmVyc2VUZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0c18iLCJfQWxpZ25tZW50SGVscGVycyR1cGQiLCJ1cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZSIsInRhcmdldFZlcnNlVGV4dCIsImNvbnZlcnRWZXJzZURhdGFUb1VTRk0iLCJhbGxTcGFjZXMiLCJ0ZXh0IiwiaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5IiwiaW5pdGlhbFZlcnNlVGV4dCIsImNoYW5nZWQiLCJsZW5ndGhEaWZmZXJlbmNlIiwiZmlyc3RQYXJ0T2ZJbml0aWFsIiwic3Vic3RyaW5nIiwibGFzdENoYXJzIiwicG9zIiwibGFzdEluZGV4T2YiLCJsYXN0VXNmbVRhZyIsImVuZHNXaXRoUXVvdGUiLCJ1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0IiwiX3JlZiIsImN1cnJlbnRJbmRleCIsImVuYWJsZUVkaXQiLCJlbmFibGVBbGlnbm1lbnQiLCJodHRwQ29uZmlnIiwiaXNOZXdUZXN0YW1lbnQiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzIiwib3JpZ2luYWxSZXBvVXJsIiwicmVmZXJlbmNlIiwic2NyaXB0dXJlQ29uZmlnIiwic2NyaXB0dXJlU2V0dGluZ3MiLCJzZXRTYXZlZENoYW5nZXMiLCJzb3VyY2VMYW5ndWFnZSIsInN0YXJ0RWRpdEJyYW5jaCIsInRhcmdldExhbmd1YWdlIiwidGl0bGUiLCJ3b3JraW5nUmVzb3VyY2VCcmFuY2giLCJfUmVhY3QkdXNlU3RhdGUiLCJ1c2VTdGF0ZSIsImFsaWduZWQiLCJhbGlnbmVyRGF0YSIsImVkaXRpbmciLCJuZXdBbGlnbm1lbnRzIiwiX1JlYWN0JHVzZVN0YXRlMiIsInN0YXRlIiwic2V0U3RhdGVfIiwiX3N0YXRlIiwiY2hhcHRlciIsInZlcnNlIiwicHJvamVjdElkIiwiYmFzaWNSZWZlcmVuY2UiLCJzZXRTdGF0ZSIsIm5ld1N0YXRlIiwicHJldlN0YXRlIiwiY2xlYXJDaGFuZ2VzIiwiY29uc29sZSIsImxvZyIsImNvbmNhdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjbGVhclN0YXRlIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18iLCJyZXNvdXJjZUlkIiwiYm9va0lkIiwib3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyIsInJlc291cmNlTGluayIsInVzZU1lbW8iLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZXMiLCJsYW5ndWFnZUlkIiwiX2l0ZXJhdG9yIiwiX3N0ZXAiLCJfdmVyc2VSZWZlcmVuY2UkdmVyc2UiLCJ2ZXJzZVJlZmVyZW5jZSIsIm9yaWdWZXJzZU9iamVjdHMiLCJ2ZXJzZURhdGEiLCJ1c2VFZmZlY3QiLCJub3RFbXB0eSIsImFsaWduZWRfIiwicmVzdWx0cyIsImdldENoYW5nZXMiLCJfbmV3U3RhdGUiLCJ1cGRhdGVkVmVyc2VPYmplY3RzXyIsInVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMiLCJfQWxpZ25tZW50SGVscGVycyR1cGQyIiwidGFyZ2V0VmVyc2VPYmplY3RzIiwiX3NjcmlwdHVyZUNvbmZpZyR2ZXJzIiwicmVmIiwidmVyc2VzRm9yUmVmIiwiaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfaGFuZGxlQWxpZ25tZW50Q2xpY2siLCJfY2FsbGVlIiwiX2FsaWduZXJEYXRhIiwib3JpZ2luYWxWZXJzZVVzZm0iLCJfQWxpZ25tZW50SGVscGVycyRwYXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEiLCJ0YXJnZXRXb3JkcyIsInZlcnNlQWxpZ25tZW50cyIsImVycm9yTWVzc2FnZSIsIl9uZXdBbGlnbm1lbnRzIiwidmVyc2VVc2ZtIiwiYWRkQWxpZ25tZW50c1RvVmVyc2VVU0ZNIiwiYWxpZ25lZFZlcnNlT2JqZWN0cyIsInVzZm1WZXJzZVRvSnNvbiIsInNhdmVBbGlnbm1lbnQiLCJjYWxsU2V0U2F2ZWRTdGF0ZSIsImNhbmNlbEFsaWdubWVudCIsInNldEVkaXRpbmciLCJfeCIsIl9zZXRFZGl0aW5nIiwiX2NhbGxlZTIiLCJlZGl0aW5nXyIsIl9uZXdWZXJzZVRleHQiLCJfdXBkYXRlZFZlcnNlT2JqZWN0cyIsIl92ZXJzZVRleHRDaGFuZ2VkIiwidmVyc2VUZXh0IiwiX0FsaWdubWVudEhlbHBlcnMkdXBkNCIsIl9hbGlnbm1lbnRzQ2hhbmdlZCIsIl9hcmdzMiIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsImdldFVzZm1Gb3JWZXJzZUNvbnRlbnQiLCJjdXJyZW50VmVyc2VPYmplY3RzIiwic2V0VmVyc2VDaGFuZ2VkIiwiX2luaXRpYWxWZXJzZVRleHQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQzIiwidW5zYXZlZENoYW5nZXMiLCJ1bnNhdmVkQ2hhbmdlc18iLCJvbkFsaWdubWVudHNDaGFuZ2UiLCJhbGlnbm1lbnRDb21wbGV0ZSIsImFjdGlvbnMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaG9va3MvdXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWlnbm9yZVxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnXG5pbXBvcnQge1xuICBBbGlnbm1lbnRIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB1c2ZtSGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7XG4gIEJvb2tPYmplY3RzVHlwZSxcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIFNlcnZlckNvbmZpZyxcbiAgVmVyc2VPYmplY3RzVHlwZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzLCB2ZXJzZU9iamVjdHNIYXZlV29yZHMgfSBmcm9tICcuLi91dGlscy9TY3JpcHR1cmVTZXR0aW5ncydcbmltcG9ydCB7IE9SSUdJTkFMX1NPVVJDRSB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgZ2V0VmVyc2VzRm9yUmVmIH0gZnJvbSAnLi91c2VTY3JpcHR1cmUnXG5cbmludGVyZmFjZSBTdGFydEVkaXQge1xuICAoKTogUHJvbWlzZTxzdHJpbmc+O1xufVxuXG50eXBlIExhbmd1YWdlVHlwZSA9IHtcbiAgbGFuZ3VhZ2VJZDogc3RyaW5nLCAvLyBzaG9ydCBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgXCJlblwiXG4gIGRpcmVjdGlvbjogc3RyaW5nLCAvLyBsYW5ndWFnZSBkaXJlY3Rpb24gXCJsdHJcIiBvciBcInJ0bFwiXG59O1xuXG5pbnRlcmZhY2UgQWxpZ25lckRhdGFUeXBlIHtcbiAgICB3b3JkQmFuaz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmRiYW5rIHdvcmQgKHRhcmdldCBsYW5ndWFnZSB3b3JkcykgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXG4gICAgYWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgbmVlZGVkIGJ5IHdvcmQtYWxpZ25lci1yY2xcbiAgICBlcnJvck1lc3NhZ2U/OiBzdHJpbmcsIC8vIGlmIHByZXNlbnQgdGhlbiB3ZSBkb24ndCBoYXZlIG5lY2Vzc2FyeSBkYXRhIHRvIGRvIGFsaWdubWVudFxufVxuXG5pbnRlcmZhY2UgQWxpZ25lclJlc3VsdHNEYXRhVHlwZSB7XG4gICAgdGFyZ2V0V29yZHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB0YXJnZXQgbGFuZ3VhZ2Ugd29yZHMgaW4gZm9ybWF0IHVzZWQgaW4gd29yZC1hbGlnbmVyLXJjbFxuICAgIHZlcnNlQWxpZ25tZW50cz86IE9iamVjdFtdLCAvLyBsaXN0IG9mIHdvcmQgYWxpZ25tZW50cyBpbiBmb3JtYXQgdXNlZCBieSB3b3JkLWFsaWduZXItcmNsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzIHtcbiAgLy8gaW5kZXggdG8gdXNlIGZvciBib29rIChlLmcuIGAwMWAgZm9yIGBHRU5gKVxuICBib29rSW5kZXg6IHN0cmluZyxcbiAgLy8gY3VycmVudCB2ZXJzZSBzZWxlY3RlZCBmcm9tIGluaXRpYWxWZXJzZU9iamVjdHNbXVxuICBjdXJyZW50SW5kZXg6IG51bWJlcixcbiAgLy8gcmVmZXJlbmNlIGZvciB2ZXJzZSBzZWxlY3RlZCBmb3IgYWxpZ25tZW50XG4gIGN1cnJlbnRWZXJzZVJlZjogU2NyaXB0dXJlUmVmZXJlbmNlLFxuICAvLyBpZiB0cnVlIHRoZW4gZWRpdGluZyBpcyBhbGxvd2VkXG4gIGVuYWJsZUVkaXQ6IGJvb2xlYW4sXG4gIC8vIGlmIHRydWUgdGhlbiBhbGlnbm1lbnQgaXMgYWxsb3dlZFxuICBlbmFibGVBbGlnbm1lbnQ6IGJvb2xlYW4sXG4gIC8vIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciBodHRwIGNvbW11bmljYXRpb25cbiAgaHR0cENvbmZpZzogU2VydmVyQ29uZmlnLFxuICAvLyBhcnJheSBvZiB0aGUgaW5pdGlhbCB2ZXJzZU9iamVjdHMgZm9yIGN1cnJlbnQgcmVmZXJlbmNlXG4gIGluaXRpYWxWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gIC8vIGluaXRpYWwgdGV4dCBmb3IgdmVyc2VcbiAgaW5pdGlhbFZlcnNlVGV4dDogc3RyaW5nLFxuICAvLyBmbGFnIHRoYXQgd2UgYXJlIHdvcmtpbmcgb24gTlQgYm9va1xuICBpc05ld1Rlc3RhbWVudDogYm9vbGVhbixcbiAgLy8gdXNlciBuYW1lIG9mIGxvZ2dlZCBpbiB1c2VyXG4gIGxvZ2dlZEluVXNlcjogc3RyaW5nLFxuICAvLyBvd25lciB0byB1c2Ugd2hlbiBmZXRjaGluZyBvcmlnaW5hbCBsYW5ndWFnZSByZXNvdXJjZXNcbiAgb3JpZ2luYWxMYW5ndWFnZU93bmVyOiBzdHJpbmcsXG4gIC8vIHVybCBmb3IgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHJlcG9cbiAgb3JpZ2luYWxSZXBvVXJsOiBzdHJpbmcsXG4gIC8vIG9yaWdpbmFsIHNjcmlwdHVyZSBib29rT2JqZWN0cyBmb3IgY3VycmVudCBib29rXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHM6IEJvb2tPYmplY3RzVHlwZSxcbiAgLyoqIGN1cnJlbnQgcmVmZXJlbmNlICoqL1xuICByZWZlcmVuY2U6IFNjcmlwdHVyZVJlZmVyZW5jZTtcbiAgLy8gZGV0YWlscyBhYm91dCB0aGUgY3VycmVudCBzY3JpcHR1cmUgbG9hZGVkXG4gIHNjcmlwdHVyZUNvbmZpZzogU2NyaXB0dXJlQ29uZmlnLFxuICAvLyBzZXR0aW5ncyB0byBiZSB1c2VkIGZvciBzY3JpcHR1cmVcbiAgc2NyaXB0dXJlU2V0dGluZ3M6IHsgfSxcbiAgLy8gY2FsbGJhY2sgdG8gc2F2ZSBjdXJyZW50IHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBjaGFuZ2VzXG4gIHNldFNhdmVkQ2hhbmdlczogRnVuY3Rpb24sXG4gIC8vIHNvdXJjZSBsYW5ndWFnZSBjb2RlIHN1Y2ggYXMgYGhib2BcbiAgc291cmNlTGFuZ3VhZ2U6IHN0cmluZyxcbiAgLy8gY2FsbGJhY2sgdG8gY3JlYXRlIGEgdXNlciBicmFuY2ggZm9yIHNhdmluZyBlZGl0IGRhdGFcbiAgc3RhcnRFZGl0QnJhbmNoOiBTdGFydEVkaXQsXG4gIC8vIGN1cnJlbnQgdGFyZ2V0IGxhbmd1YWdlXG4gIHRhcmdldExhbmd1YWdlOiBMYW5ndWFnZVR5cGUsXG4gIC8vIHRpdGxlIHRvIHNob3cgaW4gYWxpZ25tZW50XG4gIHRpdGxlOiBzdHJpbmcsXG4gICAvLyBicmFuY2ggbmFtZSBjdXJyZW50bHkgYmVpbmcgdXNlZCAoZS5nLiBgbWFzdGVyYCBvciB1c2VyIGJyYW5jaClcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoOiBzdHJpbmcsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGUgYmFzZWQgb24gdGFyZ2V0IFVTRk0gYW5kIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlIG9iamVjdHNcbiAqIEBwYXJhbSB7c3RyaW5nfSB0YXJnZXRWZXJzZVVTRk1cbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gb3JpZ2luYWxWZXJzZU9iamVjdHNcbiAqL1xuZnVuY3Rpb24gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk06c3RyaW5nLCBvcmlnaW5hbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcbiAgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBvcmlnaW5hbFZlcnNlT2JqZWN0cz8ubGVuZ3RoID8gb3JpZ2luYWxWZXJzZU9iamVjdHMgOiBudWxsIC8vIG1ha2Ugc3VyZSBub3QgcGFzc2luZyBlbXB0eSBBcnJheVxuICBjb25zdCB7IGFsaWdubWVudHMsIHdvcmRCYW5rIH0gPSBBbGlnbm1lbnRIZWxwZXJzLmV4dHJhY3RBbGlnbm1lbnRzRnJvbVRhcmdldFZlcnNlKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gIHJldHVybiBBbGlnbm1lbnRIZWxwZXJzLmFyZUFsZ25tZW50c0NvbXBsZXRlKHdvcmRCYW5rLCBhbGlnbm1lbnRzKVxufVxuXG4vKipcbiAqIGdldCB0aGUgdXBkYXRlZCBVU0ZNIGZvciB0YXJnZXQgdmVyc2UgZnJvbSB0aGUgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFuZCBsYXRlc3QgdGV4dFxuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IGluaXRpYWxWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyc2VUZXh0Q2hhbmdlZFxuICogQHBhcmFtIHtzdHJpbmd9IG5ld1ZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlLCB2ZXJzZVRleHRDaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6c3RyaW5nKTpzdHJpbmcge1xuICBsZXQgdGFyZ2V0VmVyc2VVU0ZNID0gbnVsbFxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VUZXh0IH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gdGFyZ2V0VmVyc2VUZXh0XG4gIH0gZWxzZSB7XG4gICAgdGFyZ2V0VmVyc2VVU0ZNID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICB9XG4gIHJldHVybiB0YXJnZXRWZXJzZVVTRk1cbn1cblxuLyoqXG4gKiByZXR1cm4gdHJ1ZSBpZiBvbmx5IHNwYWNlcyBpbiBjb250ZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gdGV4dFxuICovXG5mdW5jdGlvbiBhbGxTcGFjZXModGV4dDpzdHJpbmcpOmJvb2xlYW4ge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAodGV4dFtpXSAhPT0gJyAnKSB7XG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgdGhlcmUgaXMgYSBzaWduaWZpY2FudCBjaGFuZ2UgdG8gdGhlIHRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqIEBwYXJhbSB7c3RyaW5nfSBpbml0aWFsVmVyc2VUZXh0XG4gKi9cbmZ1bmN0aW9uIGhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseShuZXdWZXJzZVRleHQ6c3RyaW5nLCBpbml0aWFsVmVyc2VUZXh0OnN0cmluZyk6Ym9vbGVhbiB7XG4gIGxldCBjaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgaWYgKGNoYW5nZWQgJiYgbmV3VmVyc2VUZXh0KSB7IC8vIG1ha2Ugc3VyZSBpdCdzIHNpZ25pZmljYW50XG4gICAgY29uc3QgbGVuZ3RoRGlmZmVyZW5jZSA9IG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBpbml0aWFsVmVyc2VUZXh0Py5sZW5ndGhcbiAgICBjb25zdCBmaXJzdFBhcnRPZkluaXRpYWwgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKDAsIGluaXRpYWxWZXJzZVRleHQubGVuZ3RoKVxuXG4gICAgaWYgKChsZW5ndGhEaWZmZXJlbmNlID4gMCkgJiYgKGluaXRpYWxWZXJzZVRleHQgPT09IGZpcnN0UGFydE9mSW5pdGlhbCkpIHsgLy8gaWYgaW5pdGlhbCBwYXJ0cyBtYXRjaFxuICAgICAgLy8gYWRkIGV4ZW1wdGlvbiBpZiB0aGUgdXNmbSBlbmRzIHdpdGggYSBxdW90ZSB0YWdcbiAgICAgIGNvbnN0IGxhc3RDaGFycyA9IG5ld1ZlcnNlVGV4dC5zdWJzdHJpbmcobmV3VmVyc2VUZXh0Lmxlbmd0aCAtIGxlbmd0aERpZmZlcmVuY2UpXG4gICAgICBjb25zdCBwb3MgPSBuZXdWZXJzZVRleHQubGFzdEluZGV4T2YoJ1xcXFwnKVxuICAgICAgY29uc3QgbGFzdFVzZm1UYWcgPSBuZXdWZXJzZVRleHRbcG9zICsgMV1cbiAgICAgIGNvbnN0IGVuZHNXaXRoUXVvdGUgPSAocG9zID4gMCkgJiYgKGxhc3RVc2ZtVGFnID09PSAncScpXG5cbiAgICAgIGlmIChlbmRzV2l0aFF1b3RlICYmIGFsbFNwYWNlcyhsYXN0Q2hhcnMpKSB7XG4gICAgICAgIGNoYW5nZWQgPSBmYWxzZVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gY2hhbmdlZFxufVxuXG4vLyBtYW5hZ2UgdmVyc2UgZWRpdCBhbmQgYWxpZ25tZW50IHN0YXRlc1xuZXhwb3J0IGZ1bmN0aW9uIHVzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQoe1xuICBjdXJyZW50SW5kZXgsXG4gIGVuYWJsZUVkaXQsXG4gIGVuYWJsZUFsaWdubWVudCxcbiAgaHR0cENvbmZpZyxcbiAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgaW5pdGlhbFZlcnNlVGV4dCxcbiAgaXNOZXdUZXN0YW1lbnQsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbiAgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyxcbiAgb3JpZ2luYWxSZXBvVXJsLFxuICByZWZlcmVuY2UsXG4gIHNjcmlwdHVyZUNvbmZpZyxcbiAgc2NyaXB0dXJlU2V0dGluZ3MsXG4gIHNldFNhdmVkQ2hhbmdlcyxcbiAgc291cmNlTGFuZ3VhZ2UsXG4gIHN0YXJ0RWRpdEJyYW5jaCxcbiAgdGFyZ2V0TGFuZ3VhZ2UsXG4gIHRpdGxlLFxuICB3b3JraW5nUmVzb3VyY2VCcmFuY2gsXG59IDogU2NyaXB0dXJlQUxpZ25tZW50RWRpdFByb3BzKSB7XG4gIHR5cGUgU3RhdGVUeXBlcyA9IHtcbiAgICBhbGlnbmVkOiBib29sZWFuLFxuICAgIGFsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUsXG4gICAgZWRpdGluZzogYm9vbGVhbixcbiAgICBuZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlLFxuICAgIG5ld1ZlcnNlVGV4dDogc3RyaW5nLFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IFZlcnNlT2JqZWN0c1R5cGUsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbixcbiAgfVxuXG4gIGNvbnN0IFtzdGF0ZSwgc2V0U3RhdGVfXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICBhbGlnbmVkOiBmYWxzZSxcbiAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICBuZXdBbGlnbm1lbnRzOiBudWxsLFxuICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGZhbHNlLFxuICB9KVxuXG4gIGNvbnN0IF9zdGF0ZTogU3RhdGVUeXBlcyA9IHN0YXRlIC8vIFRyaWNreTogd29yay1hcm91bmQgZm9yIGJ1ZyB0aGF0IHN0YW5kYXJkIHR5cGVzY3JpcHQgdHlwZSBjYXN0aW5nIGRvZXMgbm90IHdvcmsgaW4gLnRzeCBmaWxlc1xuICBjb25zdCB7XG4gICAgYWxpZ25lZCxcbiAgICBhbGlnbmVyRGF0YSxcbiAgICBlZGl0aW5nLFxuICAgIG5ld0FsaWdubWVudHMsXG4gICAgbmV3VmVyc2VUZXh0LFxuICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgfSA9IF9zdGF0ZVxuICBjb25zdCBjaGFwdGVyID0gcmVmZXJlbmNlPy5jaGFwdGVyXG4gIGNvbnN0IHZlcnNlID0gcmVmZXJlbmNlPy52ZXJzZVxuICBjb25zdCBwcm9qZWN0SWQgPSByZWZlcmVuY2U/LnByb2plY3RJZFxuICBjb25zdCBiYXNpY1JlZmVyZW5jZSA9IHsgLy8gb25seSBoYXMgdGhlIHRocmVlIGJhc2ljIGZpZWxkc1xuICAgIGNoYXB0ZXIsXG4gICAgdmVyc2UsXG4gICAgcHJvamVjdElkLFxuICB9XG5cbiAgZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICBzZXRTdGF0ZV8ocHJldlN0YXRlID0+ICh7IC4uLnByZXZTdGF0ZSwgLi4ubmV3U3RhdGUgfSkpXG4gIH1cblxuICBmdW5jdGlvbiBjbGVhckNoYW5nZXMoKSB7XG4gICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gJHtKU09OLnN0cmluZ2lmeShiYXNpY1JlZmVyZW5jZSl9YClcbiAgICBjb25zdCBjbGVhclN0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgIG5ld1ZlcnNlVGV4dDogbnVsbCxcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IG51bGwsXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgICB9XG5cbiAgICBpZiAoIWlzRXF1YWwoc3RhdGUsIGNsZWFyU3RhdGUpKSB7XG4gICAgICBjb25zb2xlLmxvZyhgY2xlYXJDaGFuZ2VzKCkgLSByZWZlcmVuY2UgY2hhbmdlZCwgcmVzZXQgZWRpdC9hbGlnbm1lbnQgc3RhdGUgdmFyaWFibGVzYClcbiAgICAgIHNldFN0YXRlKGNsZWFyU3RhdGUpXG4gICAgfVxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18gPSB7XG4gICAgLi4uc2NyaXB0dXJlU2V0dGluZ3MsXG4gICAgcmVzb3VyY2VJZDogT1JJR0lOQUxfU09VUkNFLFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICBodHRwQ29uZmlnID0gaHR0cENvbmZpZyB8fCB7fVxuICBjb25zdCBib29rSWQgPSBwcm9qZWN0SWRcbiAgY29uc3Qgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncyA9IGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gICAgYm9va0lkLCBvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXywgaXNOZXdUZXN0YW1lbnQsIG9yaWdpbmFsUmVwb1VybCxcbiAgKVxuXG4gIGlmICghZW5hYmxlQWxpZ25tZW50KSB7IC8vIGlmIG5vdCBlbmFibGVkLCB0aGVuIHdlIGRvbid0IGZldGNoIHJlc291cmNlXG4gICAgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBudWxsXG4gIH1cblxuICBjb25zdCBvcmlnaW5hbFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oKCkgPT4geyAvLyBnZXQgdGhlIG9yaWdpbmFsIGxhbmd1YWdlIHZlcnNlT2JqZWN0c1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0cyA9IFtdXG5cbiAgICBpZiAob3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cykge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3QgdmVyc2VzID0gZ2V0VmVyc2VzRm9yUmVmKGJhc2ljUmVmZXJlbmNlLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzPy5sYW5ndWFnZUlkKVxuXG4gICAgICBpZiAodmVyc2VzPy5sZW5ndGgpIHtcbiAgICAgICAgZm9yIChjb25zdCB2ZXJzZVJlZmVyZW5jZSBvZiB2ZXJzZXMpIHtcbiAgICAgICAgICBjb25zdCBvcmlnVmVyc2VPYmplY3RzID0gdmVyc2VSZWZlcmVuY2U/LnZlcnNlRGF0YT8udmVyc2VPYmplY3RzXG5cbiAgICAgICAgICBpZiAob3JpZ1ZlcnNlT2JqZWN0cykge1xuICAgICAgICAgICAgQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkodmVyc2VPYmplY3RzLCBvcmlnVmVyc2VPYmplY3RzKVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzXG4gIH0sIFtvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzLCBjaGFwdGVyLCB2ZXJzZSwgcHJvamVjdElkXSlcblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyB1cGRhdGUgYWxpZ25tZW50IHN0YXR1cyB3aGVuIGFsaWduZXIgaXMgaGlkZGVuXG4gICAgY29uc3Qgbm90RW1wdHkgPSAhIWluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBsZXQgYWxpZ25lZF8gPSBmYWxzZVxuXG4gICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBza2lwIGlmIGFsaWduZXIgaXMgYmVpbmcgc2hvd25cbiAgICAgIGlmIChub3RFbXB0eSkgeyAvLyBza2lwIGlmIGVtcHR5XG4gICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG5cbiAgICAgICAgaWYgKCFlbmFibGVBbGlnbm1lbnQpIHtcbiAgICAgICAgICBhbGlnbmVkXyA9IHRydWVcbiAgICAgICAgfSBlbHNlIGlmIChuZXdWZXJzZVRleHQgJiYgKG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dCkpIHtcbiAgICAgICAgICBjb25zdCByZXN1bHRzID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgICAgICAgIGFsaWduZWRfID0gaXNVc2ZtQWxpZ25lZChyZXN1bHRzPy50YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoYWxpZ25lZCAhPT0gYWxpZ25lZF8pIHtcbiAgICAgICAgc2V0U3RhdGUoeyBhbGlnbmVkOiBhbGlnbmVkXyB9KVxuICAgICAgfVxuICAgIH1cbiAgfSwgW2luaXRpYWxWZXJzZU9iamVjdHMsIGFsaWduZXJEYXRhLCBuZXdWZXJzZVRleHQsIGluaXRpYWxWZXJzZVRleHQsIGVuYWJsZUFsaWdubWVudCwgb3JpZ2luYWxWZXJzZU9iamVjdHNdKVxuXG4gIC8qKlxuICAgKiBnZXQgY2hhbmdlcyBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZSAtIG9wdGlvbmFsbHkgcGFzcyBpbiBuZXcgc3RhdGUgKHRvIG92ZXJyaWRlIHN0YXRlKVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0Q2hhbmdlcyhuZXdTdGF0ZSA9IHt9KSB7XG4gICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBzdGFydGVkICR7Y3VycmVudEluZGV4fSAtIHBhc3NlZCBzdGF0ZWAsIG5ld1N0YXRlKVxuICAgIGNvbnN0IF9uZXdTdGF0ZSA9IHtcbiAgICAgIHN0YXRlLFxuICAgICAgLi4ubmV3U3RhdGUsXG4gICAgfVxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBjb25zdCB7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBuZXdBbGlnbm1lbnRzLFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSA9IF9uZXdTdGF0ZVxuICAgIGxldCB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcblxuICAgIGlmIChuZXdBbGlnbm1lbnRzKSB7IC8vIGlmIHVuc2F2ZWQgYWxpZ25tZW50IGNoYW5nZXMsIGFwcGx5IHRoZW1cbiAgICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdW5zYXZlZCBhbGlnbm1lbnRzfWApXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHVwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgfVxuXG4gICAgaWYgKHVwZGF0ZWRWZXJzZU9iamVjdHNfKSB7XG4gICAgICBjb25zdCByZWYgPSBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uW2N1cnJlbnRJbmRleF1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgICAgcmVmLFxuICAgICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiB1cGRhdGVkVmVyc2VPYmplY3RzXyxcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge31cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYWxpZ25tZW50IGJ1dHRvbiAtIHdpbGwgc2hvdyBpZiBub3QgYWxyZWFkeSBzaG93blxuICAgKi9cbiAgYXN5bmMgZnVuY3Rpb24gaGFuZGxlQWxpZ25tZW50Q2xpY2soKSB7XG4gICAgaWYgKGVuYWJsZUFsaWdubWVudCkge1xuICAgICAgbGV0IF9hbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlID0gbnVsbFxuICAgICAgYXdhaXQgc3RhcnRFZGl0QnJhbmNoKClcblxuICAgICAgaWYgKCFhbGlnbmVyRGF0YSkgeyAvLyBpZiB3b3JkIGFsaWduZXIgbm90IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIHRvZ2dsZSBPTiBhbGlnbm1lbnRgKVxuICAgICAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgbGV0IG9yaWdpbmFsVmVyc2VVc2ZtID0gbnVsbFxuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRhcmdldFdvcmRzOiB3b3JkQmFuayxcbiAgICAgICAgICB2ZXJzZUFsaWdubWVudHM6IGFsaWdubWVudHMsXG4gICAgICAgIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhKHRhcmdldFZlcnNlVVNGTSwgb3JpZ2luYWxWZXJzZVVzZm0pXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IHsgd29yZEJhbmssIGFsaWdubWVudHMgfVxuXG4gICAgICAgIGlmICghYWxpZ25tZW50cz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIE9yaWdpbmFsIGxhbmd1YWdlJ1xuICAgICAgICB9IGVsc2UgaWYgKCF3b3JkQmFuaz8ubGVuZ3RoKSB7XG4gICAgICAgICAgX2FsaWduZXJEYXRhLmVycm9yTWVzc2FnZSA9ICdUaGVyZSBhcmUgbm8gd29yZHMgdG8gYWxpZ24gaW4gdGhlIExpdGVyYWwvU2ltcGxpZmllZCBTY3JpcHR1cmUgVGV4dCdcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHsgLy8gd29yZCBhbGlnbmVyIGN1cnJlbnRseSBzaG93blxuICAgICAgICBjb25zb2xlLmxvZyhgaGFuZGxlQWxpZ25tZW50Q2xpY2sgLSBhbGlnbm1lbnQgYWxyZWFkeSBzaG93bmApXG4gICAgICAgIF9hbGlnbmVyRGF0YSA9IGFsaWduZXJEYXRhXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBfYWxpZ25lckRhdGEgfSlcbiAgICAgIGNvbnNvbGUubG9nKF9hbGlnbmVyRGF0YSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogZ2V0IHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhZnRlciBhbGlnbm1lbnRzIGNoYW5nZWRcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSA9IG5ld0FsaWdubWVudHMpOlZlcnNlT2JqZWN0c1R5cGUge1xuICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHNfID0gdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VUZXh0ID0gbmV3VmVyc2VUZXh0IHx8IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICBjb25zdCB2ZXJzZVVzZm0gPSBBbGlnbm1lbnRIZWxwZXJzLmFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTShfbmV3QWxpZ25tZW50cy50YXJnZXRXb3JkcywgX25ld0FsaWdubWVudHMudmVyc2VBbGlnbm1lbnRzLCB0YXJnZXRWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih2ZXJzZVVzZm0pXG4gICAgcmV0dXJuIGFsaWduZWRWZXJzZU9iamVjdHNcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIHNhdmUgY3VycmVudCBhbGlnbm1lbnRzIGluIHdvcmQgYWxpZ25lci4gIEdlbmVyYXRlcyBuZXcgdmVyc2UgY29udGVudCBhbmQgc2F2ZXMgaW4gc3RhdGUuIENsb3NlcyBhbGlnbmVyIGRpc3BsYXlcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSBfbmV3QWxpZ25tZW50cyAtIHJlc3VsdHMgb2YgYWxpZ25lclxuICAgKi9cbiAgZnVuY3Rpb24gc2F2ZUFsaWdubWVudChfbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSA9IG5ld0FsaWdubWVudHMpIHtcbiAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbmV3QWxpZ25tZW50c2AsIF9uZXdBbGlnbm1lbnRzKVxuXG4gICAgaWYgKF9uZXdBbGlnbm1lbnRzKSB7XG4gICAgICBjb25zdCBhbGlnbmVkVmVyc2VPYmplY3RzID0gdXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyhfbmV3QWxpZ25tZW50cylcbiAgICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBhbGlnbmVkVmVyc2VPYmplY3RzYCwgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IGFsaWduZWRWZXJzZU9iamVjdHMsXG4gICAgICB9XG4gICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHRydWUsIG5ld1N0YXRlIClcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIG5vIGFsaWdubWVudCBjaGFuZ2VzYClcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICAgIGVkaXRpbmc6IGZhbHNlLFxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gdXNlciBjbGlja2VkIG9uIGJ1dHRvbiB0byBjYW5jZWwgd29yayBpbiB3b3JkIGFsaWduZXIuICBDYWxjdWxhdGVzIGFuZCBkaXNwbGF5cyBjdXJyZW50IGFsaWdubWVudCB2YWxpZCBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKi9cbiAgZnVuY3Rpb24gY2FuY2VsQWxpZ25tZW50KCkge1xuICAgIGNvbnNvbGUubG9nKGBjYW5jZWxBbGlnbm1lbnQoKWApXG4gICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBzZXRTdGF0ZSh7IGFsaWduZXJEYXRhOiBudWxsLCBhbGlnbmVkIH0pXG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIGJ1dHRvbiB0byBzZXQgZWRpdGluZyBzdGF0ZVxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVkaXRpbmdfIC0gaWYgdHJ1ZSwgZWRpdG9yIGlzIHNob3duLCBvdGhlcndpc2UgZWRpdG9yIGlzIGhpZGRlblxuICAgKiBAcGFyYW0ge3N0cmluZ30gX25ld1ZlcnNlVGV4dCAtIG9wdGlvbmFsIHZlcnNlIHRleHRcbiAgICovXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZXF1aXJlLWF3YWl0XG4gIGFzeW5jIGZ1bmN0aW9uIHNldEVkaXRpbmcoZWRpdGluZ186IGJvb2xlYW4sIF9uZXdWZXJzZVRleHQ6IHN0cmluZyA9IG5ld1ZlcnNlVGV4dCkge1xuICAgIGlmIChlbmFibGVFZGl0KSB7XG4gICAgICBpZiAoZWRpdGluZ18gIT09IGVkaXRpbmcpIHtcbiAgICAgICAgX25ld1ZlcnNlVGV4dCA9IF9uZXdWZXJzZVRleHQgfHwgaW5pdGlhbFZlcnNlVGV4dFxuICAgICAgICBsZXQgX3VwZGF0ZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBfbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAgIGVkaXRpbmc6IGVkaXRpbmdfLFxuICAgICAgICAgIG5ld1ZlcnNlVGV4dDogX25ld1ZlcnNlVGV4dCxcbiAgICAgICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCF2ZXJzZVRleHRDaGFuZ2VkKSB7XG4gICAgICAgICAgLy8gZmFsbGJhY2sgdG8gbWFrZSBzdXJlIHRleHQgZnJvbSB2ZXJzZU9iamVjdHMgbWF0Y2hlcyBjdXJyZW50IHRleHRcbiAgICAgICAgICBjb25zdCB2ZXJzZVRleHQgPSBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLmdldFVzZm1Gb3JWZXJzZUNvbnRlbnQoeyB2ZXJzZU9iamVjdHM6IGN1cnJlbnRWZXJzZU9iamVjdHMgfSApXG5cbiAgICAgICAgICBpZiAoaGFzVGV4dENoYW5nZWRTaWduaWZpY2FudGx5KHZlcnNlVGV4dCwgX25ld1ZlcnNlVGV4dCkpIHtcbiAgICAgICAgICAgIC8vIGFwcGx5IGFsaWdubWVudCB0byBjdXJyZW50IHRleHRcbiAgICAgICAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHMsIF9uZXdWZXJzZVRleHQpXG4gICAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHRhcmdldFZlcnNlT2JqZWN0cyAvLyB1cGRhdGUgdmVyc2VPYmplY3RzIHRvIG1hdGNoIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgbmV3U3RhdGVbJ3VwZGF0ZWRWZXJzZU9iamVjdHMnXSA9IF91cGRhdGVkVmVyc2VPYmplY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgc2V0U3RhdGUobmV3U3RhdGUpXG4gICAgICAgIGNvbnN0IF9hbGlnbm1lbnRzQ2hhbmdlZCA9IChfdXBkYXRlZFZlcnNlT2JqZWN0cyAmJiAhaXNFcXVhbChpbml0aWFsVmVyc2VPYmplY3RzLCBfdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgICAgIGNhbGxTZXRTYXZlZFN0YXRlKHZlcnNlVGV4dENoYW5nZWQgfHwgX2FsaWdubWVudHNDaGFuZ2VkLCBuZXdTdGF0ZSApXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZyb20gdGhlIGVkaXQgb25DaGFuZ2UgZXZlbnQgdG8gdXBkYXRlIGVkaXQgc3RhdGUgdmFyaWFibGVzXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gY2hhbmdlZCAtIHRydWUgaWYgdGhlIG5ld1ZlcnNlVGV4dCBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgaW5pdGlhbFZlcnNlVGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0IC0gY3VycmVudCBjaGFuZ2VkIHZlcnNlIHRleHRcbiAgICogQHBhcmFtIHtzdHJpbmd9IF9pbml0aWFsVmVyc2VUZXh0IC0gaW5pdGlhbCB2ZXJzZSB0ZXh0XG4gICAqL1xuICBmdW5jdGlvbiBzZXRWZXJzZUNoYW5nZWQoY2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0OiBzdHJpbmcsIF9pbml0aWFsVmVyc2VUZXh0OiBzdHJpbmcpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzLCBuZXdWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZCA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICBjb25zdCB2ZXJzZVRleHRDaGFuZ2VkID0gbmV3VmVyc2VUZXh0ICE9PSBpbml0aWFsVmVyc2VUZXh0XG5cbiAgICBzZXRTdGF0ZSh7XG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgYWxpZ25lZCxcbiAgICB9KVxuICB9XG5cbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0cyA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGdlbmVyYXRlIG5ldyB2ZXJzZU9iamVjdHMgdG8gZGlzcGxheSBpbiBTY3JpcHR1cmVQYW5lXG4gICAgaWYgKGluaXRpYWxWZXJzZU9iamVjdHMpIHtcbiAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0odXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cywgdmVyc2VUZXh0Q2hhbmdlZCwgbmV3VmVyc2VUZXh0KVxuICAgICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1c2ZtSGVscGVycy51c2ZtVmVyc2VUb0pzb24odGFyZ2V0VmVyc2VVU0ZNKVxuICAgICAgcmV0dXJuIGN1cnJlbnRWZXJzZU9iamVjdHNfXG4gICAgfVxuICAgIHJldHVybiBpbml0aWFsVmVyc2VPYmplY3RzXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHRdKVxuXG4gIGNvbnN0IHVuc2F2ZWRDaGFuZ2VzOmJvb2xlYW4gPSBSZWFjdC51c2VNZW1vKCAoKSA9PiB7IC8vIGlmIHZlcnNlIGhhcyBiZWVuIGVkaXRlZCBvciBhbGlnbm1lbnQgY2hhbmdlZCwgdGhlbiBpbmRpY2F0ZSB3ZSBoYXZlIHVuc2F2ZWQgY2hhbmdlc1xuICAgIGNvbnN0IGNoYW5nZWQgPSB2ZXJzZVRleHRDaGFuZ2VkIHx8ICh1cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIHVwZGF0ZWRWZXJzZU9iamVjdHMpKVxuICAgIHJldHVybiBjaGFuZ2VkXG4gIH0sIFt1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgdG8gc2NyaXB0dXJlIGNhcmQgdG8gdXBkYXRlZCB3aXRoIGxhdGVzdCBzdGF0ZSBmb3Igc2F2aW5nXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdW5zYXZlZENoYW5nZXNfXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXdTdGF0ZVxuICAgKi9cbiAgZnVuY3Rpb24gY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfOiBib29sZWFuLCBuZXdTdGF0ZToge30gPSB7IH0gKSB7XG4gICAgY29uc3QgX25ld1N0YXRlID0ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICAuLi5uZXdTdGF0ZSxcbiAgICB9XG5cbiAgICAvLyBjb25zb2xlLmxvZyhgY2FsbFNldFNhdmVkU3RhdGUgLSBuZXcgc3RhdGVgLCBfbmV3U3RhdGUpXG4gICAgc2V0U2F2ZWRDaGFuZ2VzICYmIHNldFNhdmVkQ2hhbmdlcyhjdXJyZW50SW5kZXgsICF1bnNhdmVkQ2hhbmdlc18sIHtcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBzdGF0ZTogX25ld1N0YXRlLFxuICAgIH0pXG4gIH1cblxuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4geyAvLyBzZXQgc2F2ZWQgY2hhbmdlcyB3aGVuZXZlciB1c2VyIGVkaXRzIHZlcnNlIHRleHQgb3IgYWxpZ25tZW50cyBvciBpZiBhbGlnbm1lbnRzIGFyZSBvcGVuXG4gICAgY29uc3QgdW5zYXZlZENoYW5nZXNfID0gdW5zYXZlZENoYW5nZXMgfHwgISFhbGlnbmVyRGF0YVxuICAgIGNhbGxTZXRTYXZlZFN0YXRlKHVuc2F2ZWRDaGFuZ2VzXylcbiAgfSwgW3Vuc2F2ZWRDaGFuZ2VzLCBhbGlnbmVyRGF0YV0pXG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIGFsaWdubWVudHMgYXJlIGJlaW5nIGNoYW5nZWRcbiAgICogQHBhcmFtIHtBbGlnbmVyUmVzdWx0c0RhdGFUeXBlfSByZXN1bHRzXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlXG4gICAqL1xuICBmdW5jdGlvbiBvbkFsaWdubWVudHNDaGFuZ2UocmVzdWx0czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSk6Ym9vbGVhbiB7XG4gICAgY29uc29sZS5sb2coYG9uQWxpZ25tZW50c0NoYW5nZSgpIC0gYWxpZ25tZW50IGNoYW5nZWQsIHJlc3VsdHNgLCByZXN1bHRzKSAvLyBtZXJnZSBhbGlnbm1lbnRzIGludG8gdGFyZ2V0IHZlcnNlIGFuZCBjb252ZXJ0IHRvIFVTRk1cbiAgICBjb25zdCB7IHRhcmdldFdvcmRzLCB2ZXJzZUFsaWdubWVudHMgfSA9IHJlc3VsdHNcbiAgICBjb25zdCBhbGlnbm1lbnRDb21wbGV0ZSA9IEFsaWdubWVudEhlbHBlcnMuYXJlQWxnbm1lbnRzQ29tcGxldGUodGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cylcbiAgICBjb25zb2xlLmxvZyhgQWxpZ25tZW50cyBhcmUgJHthbGlnbm1lbnRDb21wbGV0ZSA/ICdDT01QTEVURSEnIDogJ2luY29tcGxldGUnfWApXG4gICAgc2V0U3RhdGUoeyBuZXdBbGlnbm1lbnRzOiByZXN1bHRzLCBhbGlnbmVkOiBhbGlnbm1lbnRDb21wbGV0ZSB9KVxuICAgIHJldHVybiBhbGlnbm1lbnRDb21wbGV0ZVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBhY3Rpb25zOiB7XG4gICAgICBjYW5jZWxBbGlnbm1lbnQsXG4gICAgICBjbGVhckNoYW5nZXMsXG4gICAgICBnZXRDaGFuZ2VzLFxuICAgICAgaGFuZGxlQWxpZ25tZW50Q2xpY2ssXG4gICAgICBvbkFsaWdubWVudHNDaGFuZ2UsXG4gICAgICBzYXZlQWxpZ25tZW50LFxuICAgICAgc2V0RWRpdGluZyxcbiAgICAgIHNldFZlcnNlQ2hhbmdlZCxcbiAgICB9LFxuICAgIHN0YXRlOiB7XG4gICAgICBhbGlnbmVkLFxuICAgICAgYWxpZ25lckRhdGEsXG4gICAgICBjdXJyZW50VmVyc2VPYmplY3RzLFxuICAgICAgZWRpdGluZyxcbiAgICAgIGVuYWJsZUVkaXQsXG4gICAgICBlbmFibGVBbGlnbm1lbnQsXG4gICAgICBpbml0aWFsVmVyc2VUZXh0LFxuICAgICAgaW5pdGlhbFZlcnNlT2JqZWN0cyxcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIHJlZmVyZW5jZTogYmFzaWNSZWZlcmVuY2UsXG4gICAgICBzb3VyY2VMYW5ndWFnZSxcbiAgICAgIHRhcmdldExhbmd1YWdlLFxuICAgICAgdGl0bGUsXG4gICAgICB1bnNhdmVkQ2hhbmdlcyxcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgfSxcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOytDQUNBLHFKQUFBQSxtQkFBQSxZQUFBQSxvQkFBQSxXQUFBQyxDQUFBLFNBQUFDLENBQUEsRUFBQUQsQ0FBQSxPQUFBRSxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsU0FBQSxFQUFBQyxDQUFBLEdBQUFILENBQUEsQ0FBQUksY0FBQSxFQUFBQyxDQUFBLEdBQUFKLE1BQUEsQ0FBQUssY0FBQSxjQUFBUCxDQUFBLEVBQUFELENBQUEsRUFBQUUsQ0FBQSxJQUFBRCxDQUFBLENBQUFELENBQUEsSUFBQUUsQ0FBQSxDQUFBTyxLQUFBLEtBQUFDLENBQUEsd0JBQUFDLE1BQUEsR0FBQUEsTUFBQSxPQUFBQyxDQUFBLEdBQUFGLENBQUEsQ0FBQUcsUUFBQSxrQkFBQUMsQ0FBQSxHQUFBSixDQUFBLENBQUFLLGFBQUEsdUJBQUFDLENBQUEsR0FBQU4sQ0FBQSxDQUFBTyxXQUFBLDhCQUFBQyxPQUFBakIsQ0FBQSxFQUFBRCxDQUFBLEVBQUFFLENBQUEsV0FBQUMsTUFBQSxDQUFBSyxjQUFBLENBQUFQLENBQUEsRUFBQUQsQ0FBQSxJQUFBUyxLQUFBLEVBQUFQLENB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
657
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVnZW5lcmF0b3JSdW50aW1lIiwiZSIsInQiLCJyIiwiT2JqZWN0IiwicHJvdG90eXBlIiwibiIsImhhc093blByb3BlcnR5IiwibyIsImRlZmluZVByb3BlcnR5IiwidmFsdWUiLCJpIiwiU3ltYm9sIiwiYSIsIml0ZXJhdG9yIiwiYyIsImFzeW5jSXRlcmF0b3IiLCJ1IiwidG9TdHJpbmdUYWciLCJkZWZpbmUiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJ3cmFwIiwiR2VuZXJhdG9yIiwiY3JlYXRlIiwiQ29udGV4dCIsIm1ha2VJbnZva2VNZXRob2QiLCJ0cnlDYXRjaCIsInR5cGUiLCJhcmciLCJjYWxsIiwiaCIsImwiLCJmIiwicyIsInkiLCJHZW5lcmF0b3JGdW5jdGlvbiIsIkdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlIiwicCIsImQiLCJnZXRQcm90b3R5cGVPZiIsInYiLCJ2YWx1ZXMiLCJnIiwiZGVmaW5lSXRlcmF0b3JNZXRob2RzIiwiZm9yRWFjaCIsIl9pbnZva2UiLCJBc3luY0l0ZXJhdG9yIiwiaW52b2tlIiwiX3R5cGVvZiIsInJlc29sdmUiLCJfX2F3YWl0IiwidGhlbiIsImNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnIiwiRXJyb3IiLCJkb25lIiwibWV0aG9kIiwiZGVsZWdhdGUiLCJtYXliZUludm9rZURlbGVnYXRlIiwic2VudCIsIl9zZW50IiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJhYnJ1cHQiLCJUeXBlRXJyb3IiLCJyZXN1bHROYW1lIiwibmV4dCIsIm5leHRMb2MiLCJwdXNoVHJ5RW50cnkiLCJ0cnlMb2MiLCJjYXRjaExvYyIsImZpbmFsbHlMb2MiLCJhZnRlckxvYyIsInRyeUVudHJpZXMiLCJwdXNoIiwicmVzZXRUcnlFbnRyeSIsImNvbXBsZXRpb24iLCJyZXNldCIsImlzTmFOIiwibGVuZ3RoIiwiZGlzcGxheU5hbWUiLCJpc0dlbmVyYXRvckZ1bmN0aW9uIiwiY29uc3RydWN0b3IiLCJuYW1lIiwibWFyayIsInNldFByb3RvdHlwZU9mIiwiX19wcm90b19fIiwiYXdyYXAiLCJhc3luYyIsIlByb21pc2UiLCJrZXlzIiwicmV2ZXJzZSIsInBvcCIsInByZXYiLCJjaGFyQXQiLCJzbGljZSIsInN0b3AiLCJydmFsIiwiaGFuZGxlIiwiY29tcGxldGUiLCJmaW5pc2giLCJfY2F0Y2giLCJkZWxlZ2F0ZVlpZWxkIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiZ2VuIiwicmVqZWN0IiwiX25leHQiLCJfdGhyb3ciLCJrZXkiLCJpbmZvIiwiZXJyb3IiLCJfYXN5bmNUb0dlbmVyYXRvciIsImZuIiwic2VsZiIsImFyZ3MiLCJhcmd1bWVudHMiLCJhcHBseSIsImVyciIsInVuZGVmaW5lZCIsIl9jcmVhdGVGb3JPZkl0ZXJhdG9ySGVscGVyIiwiYWxsb3dBcnJheUxpa2UiLCJpdCIsIkFycmF5IiwiaXNBcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIkYiLCJfZSIsIm5vcm1hbENvbXBsZXRpb24iLCJkaWRFcnIiLCJzdGVwIiwiX2UyIiwib3duS2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsImZpbHRlciIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIl9vYmplY3RTcHJlYWQiLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsIm9iaiIsIl90b1Byb3BlcnR5S2V5IiwiX3RvUHJpbWl0aXZlIiwiU3RyaW5nIiwiaW5wdXQiLCJoaW50IiwicHJpbSIsInRvUHJpbWl0aXZlIiwicmVzIiwiTnVtYmVyIiwiX3NsaWNlZFRvQXJyYXkiLCJhcnIiLCJfYXJyYXlXaXRoSG9sZXMiLCJfaXRlcmFibGVUb0FycmF5TGltaXQiLCJfbm9uSXRlcmFibGVSZXN0IiwibWluTGVuIiwiX2FycmF5TGlrZVRvQXJyYXkiLCJ0b1N0cmluZyIsImZyb20iLCJ0ZXN0IiwibGVuIiwiYXJyMiIsIlJlYWN0IiwiQWxpZ25tZW50SGVscGVycyIsIm1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycyIsIlVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMiLCJ1c2ZtSGVscGVycyIsImlzRXF1YWwiLCJCb29rT2JqZWN0c1R5cGUiLCJTY3JpcHR1cmVDb25maWciLCJTY3JpcHR1cmVSZWZlcmVuY2UiLCJTZXJ2ZXJDb25maWciLCJWZXJzZU9iamVjdHNUeXBlIiwiZ2V0QWxpZ25tZW50cyIsImdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MiLCJPUklHSU5BTF9TT1VSQ0UiLCJnZXRWZXJzZXNGb3JSZWYiLCJpc1VzZm1BbGlnbmVkIiwidGFyZ2V0VmVyc2VVU0ZNIiwib3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfb3JpZ2luYWxWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyRleHQiLCJleHRyYWN0QWxpZ25tZW50c0Zyb21UYXJnZXRWZXJzZSIsImFsaWdubWVudHMiLCJ3b3JkQmFuayIsImFyZUFsZ25tZW50c0NvbXBsZXRlIiwiZ2V0Q3VycmVudFZlcnNlVXNmbSIsInVwZGF0ZWRWZXJzZU9iamVjdHMiLCJpbml0aWFsVmVyc2VPYmplY3RzIiwidmVyc2VUZXh0Q2hhbmdlZCIsIm5ld1ZlcnNlVGV4dCIsImN1cnJlbnRWZXJzZU9iamVjdHNfIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkIiwidXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UiLCJ0YXJnZXRWZXJzZVRleHQiLCJjb252ZXJ0VmVyc2VEYXRhVG9VU0ZNIiwiaXNNaWdyYXRlZCIsInByZWZpeCIsInVwZGF0ZWRBbGlnbm1lbnRzIiwiaW5pdGlhbEFsaWdubWVudHMiLCJzYW1lIiwiZmlyc3REaWZmIiwidXBkYXRlZEFsaWdubWVudCIsImluaXRpYWxBbGlnbm1lbnQiLCJkaWZmZXJlbnQiLCJjb25zb2xlIiwibG9nIiwiY29uY2F0IiwiY2hlY2tGb3JEYXRhQ29ycnVwdGlvbiIsInRhcmdldEFsaWdubWVudCIsInRhcmdldEFsaWdubWVudFRleHQiLCJKU09OIiwic3RyaW5naWZ5IiwiaW52YWxpZENoYXJQb3MiLCJpbmRleE9mIiwiaW52YWxpZENoYXJhY3RlckZvdW5kIiwiYWxsU3BhY2VzIiwidGV4dCIsImhhc1RleHRDaGFuZ2VkU2lnbmlmaWNhbnRseSIsImluaXRpYWxWZXJzZVRleHQiLCJjaGFuZ2VkIiwibGVuZ3RoRGlmZmVyZW5jZSIsImZpcnN0UGFydE9mSW5pdGlhbCIsInN1YnN0cmluZyIsImxhc3RDaGFycyIsInBvcyIsImxhc3RJbmRleE9mIiwibGFzdFVzZm1UYWciLCJlbmRzV2l0aFF1b3RlIiwidXNlU2NyaXB0dXJlQWxpZ25tZW50RWRpdCIsIl9yZWYiLCJjdXJyZW50SW5kZXgiLCJlbmFibGVFZGl0IiwiZW5hYmxlQWxpZ25tZW50IiwiaHR0cENvbmZpZyIsImlzTmV3VGVzdGFtZW50Iiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwib3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cyIsIm9yaWdpbmFsUmVwb1VybCIsInJlZmVyZW5jZSIsInNjcmlwdHVyZUNvbmZpZyIsInNjcmlwdHVyZVNldHRpbmdzIiwic2V0U2F2ZWRDaGFuZ2VzIiwic291cmNlTGFuZ3VhZ2UiLCJzdGFydEVkaXRCcmFuY2giLCJ0YXJnZXRMYW5ndWFnZSIsInRpdGxlIiwid29ya2luZ1Jlc291cmNlQnJhbmNoIiwiX1JlYWN0JHVzZVN0YXRlIiwidXNlU3RhdGUiLCJhbGlnbmVkIiwiYWxpZ25lckRhdGEiLCJlZGl0aW5nIiwibmV3QWxpZ25tZW50cyIsIl9SZWFjdCR1c2VTdGF0ZTIiLCJzdGF0ZSIsInNldFN0YXRlXyIsIl9zdGF0ZSIsImNoYXB0ZXIiLCJ2ZXJzZSIsInByb2plY3RJZCIsImJhc2ljUmVmZXJlbmNlIiwic2V0U3RhdGUiLCJuZXdTdGF0ZSIsInByZXZTdGF0ZSIsImNsZWFyQ2hhbmdlcyIsImNsZWFyU3RhdGUiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzXyIsInJlc291cmNlSWQiLCJib29rSWQiLCJvcmlnaW5hbFNjcmlwdHVyZVNldHRpbmdzIiwicmVzb3VyY2VMaW5rIiwidXNlTWVtbyIsInZlcnNlT2JqZWN0cyIsInZlcnNlcyIsImxhbmd1YWdlSWQiLCJfaXRlcmF0b3IiLCJfc3RlcCIsIl92ZXJzZVJlZmVyZW5jZSR2ZXJzZSIsInZlcnNlUmVmZXJlbmNlIiwib3JpZ1ZlcnNlT2JqZWN0cyIsInZlcnNlRGF0YSIsInVzZUVmZmVjdCIsIm5vdEVtcHR5IiwiYWxpZ25lZF8iLCJyZXN1bHRzIiwiZ2V0Q2hhbmdlcyIsIl9uZXdTdGF0ZSIsInVwZGF0ZWRWZXJzZU9iamVjdHNfIiwidXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cyIsIl9BbGlnbm1lbnRIZWxwZXJzJHVwZDIiLCJ0YXJnZXRWZXJzZU9iamVjdHMiLCJfc2NyaXB0dXJlQ29uZmlnJHZlcnMiLCJyZWYiLCJ2ZXJzZXNGb3JSZWYiLCJoYW5kbGVBbGlnbm1lbnRDbGljayIsIl9oYW5kbGVBbGlnbm1lbnRDbGljayIsIl9jYWxsZWUiLCJfYWxpZ25lckRhdGEiLCJvcmlnaW5hbFZlcnNlVXNmbSIsIl91cGRhdGVkVmVyc2VPYmplY3RzIiwiX2N1cnJlbnRWZXJzZU9iamVjdHMiLCJfQWxpZ25tZW50SGVscGVycyRwYXIiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwiY3VycmVudFZlcnNlT2JqZWN0cyIsIm1pZ3JhdGVUYXJnZXRBbGlnbm1lbnRzVG9PcmlnaW5hbCIsInBhcnNlVXNmbVRvV29yZEFsaWduZXJEYXRhIiwidGFyZ2V0V29yZHMiLCJ2ZXJzZUFsaWdubWVudHMiLCJlcnJvck1lc3NhZ2UiLCJfbmV3QWxpZ25tZW50cyIsInZlcnNlVXNmbSIsImFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTSIsImFsaWduZWRWZXJzZU9iamVjdHMiLCJ1c2ZtVmVyc2VUb0pzb24iLCJzYXZlQWxpZ25tZW50IiwiY2FsbFNldFNhdmVkU3RhdGUiLCJjYW5jZWxBbGlnbm1lbnQiLCJzZXRFZGl0aW5nIiwiX3giLCJfc2V0RWRpdGluZyIsIl9jYWxsZWUyIiwiZWRpdGluZ18iLCJfbmV3VmVyc2VUZXh0IiwiX3ZlcnNlVGV4dENoYW5nZWQiLCJ2ZXJzZVRleHQiLCJfQWxpZ25tZW50SGVscGVycyR1cGQ0IiwiX2FsaWdubWVudHNDaGFuZ2VkIiwiX2FyZ3MyIiwiX2NhbGxlZTIkIiwiX2NvbnRleHQyIiwiZ2V0VXNmbUZvclZlcnNlQ29udGVudCIsInNldFZlcnNlQ2hhbmdlZCIsIl9pbml0aWFsVmVyc2VUZXh0IiwiX3RhcmdldFZlcnNlT2JqZWN0cyIsIm1pZ3JhdGVkVmVyc2VPYmplY3RzIiwiX0FsaWdubWVudEhlbHBlcnMkdXBkMyIsInVuc2F2ZWRDaGFuZ2VzIiwidW5zYXZlZENoYW5nZXNfIiwib25BbGlnbm1lbnRzQ2hhbmdlIiwiYWxpZ25tZW50Q29tcGxldGUiLCJhY3Rpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2hvb2tzL3VzZVNjcmlwdHVyZUFsaWdubWVudEVkaXQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8vIEB0cy1pZ25vcmVcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHtcbiAgQWxpZ25tZW50SGVscGVycyxcbiAgbWlncmF0ZU9yaWdpbmFsTGFuZ3VhZ2VIZWxwZXJzLFxuICBVc2ZtRmlsZUNvbnZlcnNpb25IZWxwZXJzLFxuICB1c2ZtSGVscGVycyxcbn0gZnJvbSAnd29yZC1hbGlnbmVyLXJjbCdcbmltcG9ydCB7IGlzRXF1YWwgfSBmcm9tICdAcmVhY3QtaG9va3ovZGVlcC1lcXVhbCdcbmltcG9ydCB7XG4gIEJvb2tPYmplY3RzVHlwZSxcbiAgU2NyaXB0dXJlQ29uZmlnLFxuICBTY3JpcHR1cmVSZWZlcmVuY2UsXG4gIFNlcnZlckNvbmZpZyxcbiAgVmVyc2VPYmplY3RzVHlwZSxcbn0gZnJvbSAnLi4vdHlwZXMnXG5pbXBvcnQgeyBnZXRBbGlnbm1lbnRzLCBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzIH0gZnJvbSAnLi4vdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MnXG5pbXBvcnQgeyBPUklHSU5BTF9TT1VSQ0UgfSBmcm9tICcuLi91dGlscydcbmltcG9ydCB7IGdldFZlcnNlc0ZvclJlZiB9IGZyb20gJy4vdXNlU2NyaXB0dXJlJ1xuXG5pbnRlcmZhY2UgU3RhcnRFZGl0IHtcbiAgKCk6IFByb21pc2U8c3RyaW5nPjtcbn1cblxudHlwZSBMYW5ndWFnZVR5cGUgPSB7XG4gIGxhbmd1YWdlSWQ6IHN0cmluZywgLy8gc2hvcnQgbGFuZ3VhZ2UgY29kZSBzdWNoIGFzIFwiZW5cIlxuICBkaXJlY3Rpb246IHN0cmluZywgLy8gbGFuZ3VhZ2UgZGlyZWN0aW9uIFwibHRyXCIgb3IgXCJydGxcIlxufTtcblxuaW50ZXJmYWNlIEFsaWduZXJEYXRhVHlwZSB7XG4gICAgd29yZEJhbms/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB3b3JkYmFuayB3b3JkICh0YXJnZXQgbGFuZ3VhZ2Ugd29yZHMpIGluIGZvcm1hdCBuZWVkZWQgYnkgd29yZC1hbGlnbmVyLXJjbFxuICAgIGFsaWdubWVudHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB3b3JkIGFsaWdubWVudHMgaW4gZm9ybWF0IG5lZWRlZCBieSB3b3JkLWFsaWduZXItcmNsXG4gICAgZXJyb3JNZXNzYWdlPzogc3RyaW5nLCAvLyBpZiBwcmVzZW50IHRoZW4gd2UgZG9uJ3QgaGF2ZSBuZWNlc3NhcnkgZGF0YSB0byBkbyBhbGlnbm1lbnRcbn1cblxuaW50ZXJmYWNlIEFsaWduZXJSZXN1bHRzRGF0YVR5cGUge1xuICAgIHRhcmdldFdvcmRzPzogT2JqZWN0W10sIC8vIGxpc3Qgb2YgdGFyZ2V0IGxhbmd1YWdlIHdvcmRzIGluIGZvcm1hdCB1c2VkIGluIHdvcmQtYWxpZ25lci1yY2xcbiAgICB2ZXJzZUFsaWdubWVudHM/OiBPYmplY3RbXSwgLy8gbGlzdCBvZiB3b3JkIGFsaWdubWVudHMgaW4gZm9ybWF0IHVzZWQgYnkgd29yZC1hbGlnbmVyLXJjbFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcyB7XG4gIC8vIGluZGV4IHRvIHVzZSBmb3IgYm9vayAoZS5nLiBgMDFgIGZvciBgR0VOYClcbiAgYm9va0luZGV4OiBzdHJpbmcsXG4gIC8vIGN1cnJlbnQgdmVyc2Ugc2VsZWN0ZWQgZnJvbSBpbml0aWFsVmVyc2VPYmplY3RzW11cbiAgY3VycmVudEluZGV4OiBudW1iZXIsXG4gIC8vIHJlZmVyZW5jZSBmb3IgdmVyc2Ugc2VsZWN0ZWQgZm9yIGFsaWdubWVudFxuICBjdXJyZW50VmVyc2VSZWY6IFNjcmlwdHVyZVJlZmVyZW5jZSxcbiAgLy8gaWYgdHJ1ZSB0aGVuIGVkaXRpbmcgaXMgYWxsb3dlZFxuICBlbmFibGVFZGl0OiBib29sZWFuLFxuICAvLyBpZiB0cnVlIHRoZW4gYWxpZ25tZW50IGlzIGFsbG93ZWRcbiAgZW5hYmxlQWxpZ25tZW50OiBib29sZWFuLFxuICAvLyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgaHR0cCBjb21tdW5pY2F0aW9uXG4gIGh0dHBDb25maWc6IFNlcnZlckNvbmZpZyxcbiAgLy8gYXJyYXkgb2YgdGhlIGluaXRpYWwgdmVyc2VPYmplY3RzIGZvciBjdXJyZW50IHJlZmVyZW5jZVxuICBpbml0aWFsVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLFxuICAvLyBpbml0aWFsIHRleHQgZm9yIHZlcnNlXG4gIGluaXRpYWxWZXJzZVRleHQ6IHN0cmluZyxcbiAgLy8gZmxhZyB0aGF0IHdlIGFyZSB3b3JraW5nIG9uIE5UIGJvb2tcbiAgaXNOZXdUZXN0YW1lbnQ6IGJvb2xlYW4sXG4gIC8vIHVzZXIgbmFtZSBvZiBsb2dnZWQgaW4gdXNlclxuICBsb2dnZWRJblVzZXI6IHN0cmluZyxcbiAgLy8gb3duZXIgdG8gdXNlIHdoZW4gZmV0Y2hpbmcgb3JpZ2luYWwgbGFuZ3VhZ2UgcmVzb3VyY2VzXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcjogc3RyaW5nLFxuICAvLyB1cmwgZm9yIHRoZSBvcmlnaW5hbCBsYW5ndWFnZSByZXBvXG4gIG9yaWdpbmFsUmVwb1VybDogc3RyaW5nLFxuICAvLyBvcmlnaW5hbCBzY3JpcHR1cmUgYm9va09iamVjdHMgZm9yIGN1cnJlbnQgYm9va1xuICBvcmlnaW5hbFNjcmlwdHVyZUJvb2tPYmplY3RzOiBCb29rT2JqZWN0c1R5cGUsXG4gIC8qKiBjdXJyZW50IHJlZmVyZW5jZSAqKi9cbiAgcmVmZXJlbmNlOiBTY3JpcHR1cmVSZWZlcmVuY2U7XG4gIC8vIGRldGFpbHMgYWJvdXQgdGhlIGN1cnJlbnQgc2NyaXB0dXJlIGxvYWRlZFxuICBzY3JpcHR1cmVDb25maWc6IFNjcmlwdHVyZUNvbmZpZyxcbiAgLy8gc2V0dGluZ3MgdG8gYmUgdXNlZCBmb3Igc2NyaXB0dXJlXG4gIHNjcmlwdHVyZVNldHRpbmdzOiB7IH0sXG4gIC8vIGNhbGxiYWNrIHRvIHNhdmUgY3VycmVudCB2ZXJzZSBlZGl0IGFuZCBhbGlnbm1lbnQgY2hhbmdlc1xuICBzZXRTYXZlZENoYW5nZXM6IEZ1bmN0aW9uLFxuICAvLyBzb3VyY2UgbGFuZ3VhZ2UgY29kZSBzdWNoIGFzIGBoYm9gXG4gIHNvdXJjZUxhbmd1YWdlOiBzdHJpbmcsXG4gIC8vIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIHVzZXIgYnJhbmNoIGZvciBzYXZpbmcgZWRpdCBkYXRhXG4gIHN0YXJ0RWRpdEJyYW5jaDogU3RhcnRFZGl0LFxuICAvLyBjdXJyZW50IHRhcmdldCBsYW5ndWFnZVxuICB0YXJnZXRMYW5ndWFnZTogTGFuZ3VhZ2VUeXBlLFxuICAvLyB0aXRsZSB0byBzaG93IGluIGFsaWdubWVudFxuICB0aXRsZTogc3RyaW5nLFxuICAgLy8gYnJhbmNoIG5hbWUgY3VycmVudGx5IGJlaW5nIHVzZWQgKGUuZy4gYG1hc3RlcmAgb3IgdXNlciBicmFuY2gpXG4gIHdvcmtpbmdSZXNvdXJjZUJyYW5jaDogc3RyaW5nLFxufVxuXG4vKipcbiAqIGRldGVybWluZXMgaWYgYWxpZ25tZW50IGlzIGNvbXBsZXRlIGJhc2VkIG9uIHRhcmdldCBVU0ZNIGFuZCBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZSBvYmplY3RzXG4gKiBAcGFyYW0ge3N0cmluZ30gdGFyZ2V0VmVyc2VVU0ZNXG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IG9yaWdpbmFsVmVyc2VPYmplY3RzXG4gKi9cbmZ1bmN0aW9uIGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNOnN0cmluZywgb3JpZ2luYWxWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSk6Ym9vbGVhbiB7XG4gIG9yaWdpbmFsVmVyc2VPYmplY3RzID0gb3JpZ2luYWxWZXJzZU9iamVjdHM/Lmxlbmd0aCA/IG9yaWdpbmFsVmVyc2VPYmplY3RzIDogbnVsbCAvLyBtYWtlIHN1cmUgbm90IHBhc3NpbmcgZW1wdHkgQXJyYXlcbiAgY29uc3QgeyBhbGlnbm1lbnRzLCB3b3JkQmFuayB9ID0gQWxpZ25tZW50SGVscGVycy5leHRyYWN0QWxpZ25tZW50c0Zyb21UYXJnZXRWZXJzZSh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICByZXR1cm4gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh3b3JkQmFuaywgYWxpZ25tZW50cylcbn1cblxuLyoqXG4gKiBnZXQgdGhlIHVwZGF0ZWQgVVNGTSBmb3IgdGFyZ2V0IHZlcnNlIGZyb20gdGhlIHVwZGF0ZWQgdmVyc2Ugb2JqZWN0cyBhbmQgbGF0ZXN0IHRleHRcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSBpbml0aWFsVmVyc2VPYmplY3RzXG4gKiBAcGFyYW0ge2Jvb2xlYW59IHZlcnNlVGV4dENoYW5nZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHRcbiAqL1xuZnVuY3Rpb24gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzOlZlcnNlT2JqZWN0c1R5cGUsIGluaXRpYWxWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgdmVyc2VUZXh0Q2hhbmdlZDogYm9vbGVhbiwgbmV3VmVyc2VUZXh0OnN0cmluZyk6c3RyaW5nIHtcbiAgbGV0IHRhcmdldFZlcnNlVVNGTSA9IG51bGxcbiAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcblxuICBpZiAodmVyc2VUZXh0Q2hhbmdlZCAmJiBuZXdWZXJzZVRleHQpIHtcbiAgICBjb25zdCB7IHRhcmdldFZlcnNlVGV4dCB9ID0gQWxpZ25tZW50SGVscGVycy51cGRhdGVBbGlnbm1lbnRzVG9UYXJnZXRWZXJzZShjdXJyZW50VmVyc2VPYmplY3RzXywgbmV3VmVyc2VUZXh0KVxuICAgIHRhcmdldFZlcnNlVVNGTSA9IHRhcmdldFZlcnNlVGV4dFxuICB9IGVsc2Uge1xuICAgIHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgfVxuICByZXR1cm4gdGFyZ2V0VmVyc2VVU0ZNXG59XG5cbi8qKlxuICogY29tcGFyZSBpbml0aWFsIGFsaWdubWVudCB3aXRoIGZpbmFsIHRvIHNlZSBpZiBjaGFuZ2VkXG4gKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4XG4gKiBAcGFyYW0ge1ZlcnNlT2JqZWN0c1R5cGV9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gaW5pdGlhbFZlcnNlT2JqZWN0c1xuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgY2hhbmdlZFxuICovXG5mdW5jdGlvbiBpc01pZ3JhdGVkKHByZWZpeDpzdHJpbmcsIHVwZGF0ZWRWZXJzZU9iamVjdHM6VmVyc2VPYmplY3RzVHlwZSwgaW5pdGlhbFZlcnNlT2JqZWN0czpWZXJzZU9iamVjdHNUeXBlKTpib29sZWFuIHtcbiAgY29uc3QgdXBkYXRlZEFsaWdubWVudHMgPSBnZXRBbGlnbm1lbnRzKHVwZGF0ZWRWZXJzZU9iamVjdHMpXG4gIGNvbnN0IGluaXRpYWxBbGlnbm1lbnRzID0gZ2V0QWxpZ25tZW50cyhpbml0aWFsVmVyc2VPYmplY3RzKVxuICBsZXQgc2FtZSA9IHVwZGF0ZWRBbGlnbm1lbnRzLmxlbmd0aCA9PT0gaW5pdGlhbEFsaWdubWVudHMubGVuZ3RoIC8vIGZpcnN0IG1ha2Ugc3VyZSBsZW5ndGhzIGFyZSB0aGUgc2FtZVxuICBsZXQgZmlyc3REaWZmXG5cbiAgaWYgKHNhbWUpIHsgLy8gZXZlbiBpZiBsZW5ndGhzIGFyZSB0aGUgc2FtZSBkb3VibGUgY2hlY2sgZWFjaCBhbGlnbm1lbnRcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHVwZGF0ZWRBbGlnbm1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCB1cGRhdGVkQWxpZ25tZW50ID0gdXBkYXRlZEFsaWdubWVudHNbaV1cbiAgICAgIGNvbnN0IGluaXRpYWxBbGlnbm1lbnQgPSBpbml0aWFsQWxpZ25tZW50c1tpXVxuXG4gICAgICBpZiAoIWlzRXF1YWwodXBkYXRlZEFsaWdubWVudCwgaW5pdGlhbEFsaWdubWVudCkpIHtcbiAgICAgICAgZmlyc3REaWZmID0gaVxuICAgICAgICBzYW1lID0gZmFsc2VcbiAgICAgICAgYnJlYWtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb25zdCBkaWZmZXJlbnQgPSAhc2FtZVxuXG4gIGlmIChkaWZmZXJlbnQpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtwcmVmaXh9IC0gdGFyZ2V0IHZlcnNlIGFsaWdubWVudHMgbWlncmF0ZWQgdG8gbWF0Y2ggb3JpZ2luYWwgbGFuZ3VhZ2UsIGZpcnN0IGRpZmZlcmVuY2UgaXMgYXQgJHtmaXJzdERpZmZ9YCwgdXBkYXRlZFZlcnNlT2JqZWN0cywgaW5pdGlhbFZlcnNlT2JqZWN0cylcbiAgfVxuXG4gIHJldHVybiBkaWZmZXJlbnRcbn1cblxuLy8gVE9ETzogcmVtb3ZlXG5mdW5jdGlvbiBjaGVja0ZvckRhdGFDb3JydXB0aW9uKHByZWZpeCwgdGFyZ2V0QWxpZ25tZW50KSB7XG4gIGxldCB0YXJnZXRBbGlnbm1lbnRUZXh0ID0gdGFyZ2V0QWxpZ25tZW50IHx8ICcnXG5cbiAgaWYgKHR5cGVvZiB0YXJnZXRBbGlnbm1lbnQgIT09ICdzdHJpbmcnKSB7XG4gICAgdGFyZ2V0QWxpZ25tZW50VGV4dCA9IEpTT04uc3RyaW5naWZ5KHRhcmdldEFsaWdubWVudClcbiAgfVxuXG4gIGNvbnN0IGludmFsaWRDaGFyUG9zID0gdGFyZ2V0QWxpZ25tZW50VGV4dC5pbmRleE9mKCfvv70nKVxuICBjb25zdCBpbnZhbGlkQ2hhcmFjdGVyRm91bmQgPSBpbnZhbGlkQ2hhclBvcyA+PSAwIC8vIHRoaXMgc2hvdWxkIG5vdCBiZSBmb3VuZCwgYmVjYXVzZSBpbnZhbGlkIGNoYXJhY3RlclxuXG4gIGlmIChpbnZhbGlkQ2hhcmFjdGVyRm91bmQpIHtcbiAgICBjb25zb2xlLmxvZyhgJHtwcmVmaXh9IC0gaW52YWxpZCBDaGFyYWN0ZXIgZm91bmRgLCB0YXJnZXRBbGlnbm1lbnQpXG4gIH1cblxuICByZXR1cm4gaW52YWxpZENoYXJhY3RlckZvdW5kXG59XG5cbi8qKlxuICogcmV0dXJuIHRydWUgaWYgb25seSBzcGFjZXMgaW4gY29udGVudFxuICogQHBhcmFtIHtzdHJpbmd9IHRleHRcbiAqL1xuZnVuY3Rpb24gYWxsU3BhY2VzKHRleHQ6c3RyaW5nKTpib29sZWFuIHtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCB0ZXh0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHRleHRbaV0gIT09ICcgJykge1xuICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxuICB9XG4gIHJldHVybiB0cnVlXG59XG5cbi8qKlxuICogbWFrZSBzdXJlIHRoZXJlIGlzIGEgc2lnbmlmaWNhbnQgY2hhbmdlIHRvIHRoZSB0ZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gbmV3VmVyc2VUZXh0XG4gKiBAcGFyYW0ge3N0cmluZ30gaW5pdGlhbFZlcnNlVGV4dFxuICovXG5mdW5jdGlvbiBoYXNUZXh0Q2hhbmdlZFNpZ25pZmljYW50bHkobmV3VmVyc2VUZXh0OnN0cmluZywgaW5pdGlhbFZlcnNlVGV4dDpzdHJpbmcpOmJvb2xlYW4ge1xuICBsZXQgY2hhbmdlZCA9IG5ld1ZlcnNlVGV4dCAhPT0gaW5pdGlhbFZlcnNlVGV4dFxuXG4gIGlmIChjaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkgeyAvLyBtYWtlIHN1cmUgaXQncyBzaWduaWZpY2FudFxuICAgIGNvbnN0IGxlbmd0aERpZmZlcmVuY2UgPSBuZXdWZXJzZVRleHQubGVuZ3RoIC0gaW5pdGlhbFZlcnNlVGV4dD8ubGVuZ3RoXG4gICAgY29uc3QgZmlyc3RQYXJ0T2ZJbml0aWFsID0gbmV3VmVyc2VUZXh0LnN1YnN0cmluZygwLCBpbml0aWFsVmVyc2VUZXh0Lmxlbmd0aClcblxuICAgIGlmICgobGVuZ3RoRGlmZmVyZW5jZSA+IDApICYmIChpbml0aWFsVmVyc2VUZXh0ID09PSBmaXJzdFBhcnRPZkluaXRpYWwpKSB7IC8vIGlmIGluaXRpYWwgcGFydHMgbWF0Y2hcbiAgICAgIC8vIGFkZCBleGVtcHRpb24gaWYgdGhlIHVzZm0gZW5kcyB3aXRoIGEgcXVvdGUgdGFnXG4gICAgICBjb25zdCBsYXN0Q2hhcnMgPSBuZXdWZXJzZVRleHQuc3Vic3RyaW5nKG5ld1ZlcnNlVGV4dC5sZW5ndGggLSBsZW5ndGhEaWZmZXJlbmNlKVxuICAgICAgY29uc3QgcG9zID0gbmV3VmVyc2VUZXh0Lmxhc3RJbmRleE9mKCdcXFxcJylcbiAgICAgIGNvbnN0IGxhc3RVc2ZtVGFnID0gbmV3VmVyc2VUZXh0W3BvcyArIDFdXG4gICAgICBjb25zdCBlbmRzV2l0aFF1b3RlID0gKHBvcyA+IDApICYmIChsYXN0VXNmbVRhZyA9PT0gJ3EnKVxuXG4gICAgICBpZiAoZW5kc1dpdGhRdW90ZSAmJiBhbGxTcGFjZXMobGFzdENoYXJzKSkge1xuICAgICAgICBjaGFuZ2VkID0gZmFsc2VcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNoYW5nZWRcbn1cblxuLy8gbWFuYWdlIHZlcnNlIGVkaXQgYW5kIGFsaWdubWVudCBzdGF0ZXNcbmV4cG9ydCBmdW5jdGlvbiB1c2VTY3JpcHR1cmVBbGlnbm1lbnRFZGl0KHtcbiAgY3VycmVudEluZGV4LFxuICBlbmFibGVFZGl0LFxuICBlbmFibGVBbGlnbm1lbnQsXG4gIGh0dHBDb25maWcsXG4gIGluaXRpYWxWZXJzZU9iamVjdHMsXG4gIGluaXRpYWxWZXJzZVRleHQsXG4gIGlzTmV3VGVzdGFtZW50LFxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gIG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMsXG4gIG9yaWdpbmFsUmVwb1VybCxcbiAgcmVmZXJlbmNlLFxuICBzY3JpcHR1cmVDb25maWcsXG4gIHNjcmlwdHVyZVNldHRpbmdzLFxuICBzZXRTYXZlZENoYW5nZXMsXG4gIHNvdXJjZUxhbmd1YWdlLFxuICBzdGFydEVkaXRCcmFuY2gsXG4gIHRhcmdldExhbmd1YWdlLFxuICB0aXRsZSxcbiAgd29ya2luZ1Jlc291cmNlQnJhbmNoLFxufSA6IFNjcmlwdHVyZUFMaWdubWVudEVkaXRQcm9wcykge1xuICB0eXBlIFN0YXRlVHlwZXMgPSB7XG4gICAgYWxpZ25lZDogYm9vbGVhbixcbiAgICBhbGlnbmVyRGF0YTogQWxpZ25lckRhdGFUeXBlLFxuICAgIGVkaXRpbmc6IGJvb2xlYW4sXG4gICAgbmV3QWxpZ25tZW50czogQWxpZ25lclJlc3VsdHNEYXRhVHlwZSxcbiAgICBuZXdWZXJzZVRleHQ6IHN0cmluZyxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlLFxuICAgIHZlcnNlVGV4dENoYW5nZWQ6IGJvb2xlYW4sXG4gIH1cblxuICBjb25zdCBbc3RhdGUsIHNldFN0YXRlX10gPSBSZWFjdC51c2VTdGF0ZSh7XG4gICAgYWxpZ25lZDogZmFsc2UsXG4gICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgZWRpdGluZzogZmFsc2UsXG4gICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgdXBkYXRlZFZlcnNlT2JqZWN0czogbnVsbCxcbiAgICB2ZXJzZVRleHRDaGFuZ2VkOiBmYWxzZSxcbiAgfSlcblxuICBjb25zdCBfc3RhdGU6IFN0YXRlVHlwZXMgPSBzdGF0ZSAvLyBUcmlja3k6IHdvcmstYXJvdW5kIGZvciBidWcgdGhhdCBzdGFuZGFyZCB0eXBlc2NyaXB0IHR5cGUgY2FzdGluZyBkb2VzIG5vdCB3b3JrIGluIC50c3ggZmlsZXNcbiAgY29uc3Qge1xuICAgIGFsaWduZWQsXG4gICAgYWxpZ25lckRhdGEsXG4gICAgZWRpdGluZyxcbiAgICBuZXdBbGlnbm1lbnRzLFxuICAgIG5ld1ZlcnNlVGV4dCxcbiAgICB1cGRhdGVkVmVyc2VPYmplY3RzLFxuICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gIH0gPSBfc3RhdGVcbiAgY29uc3QgY2hhcHRlciA9IHJlZmVyZW5jZT8uY2hhcHRlclxuICBjb25zdCB2ZXJzZSA9IHJlZmVyZW5jZT8udmVyc2VcbiAgY29uc3QgcHJvamVjdElkID0gcmVmZXJlbmNlPy5wcm9qZWN0SWRcbiAgY29uc3QgYmFzaWNSZWZlcmVuY2UgPSB7IC8vIG9ubHkgaGFzIHRoZSB0aHJlZSBiYXNpYyBmaWVsZHNcbiAgICBjaGFwdGVyLFxuICAgIHZlcnNlLFxuICAgIHByb2plY3RJZCxcbiAgfVxuXG4gIGZ1bmN0aW9uIHNldFN0YXRlKG5ld1N0YXRlKSB7XG4gICAgc2V0U3RhdGVfKHByZXZTdGF0ZSA9PiAoeyAuLi5wcmV2U3RhdGUsIC4uLm5ld1N0YXRlIH0pKVxuICB9XG5cbiAgZnVuY3Rpb24gY2xlYXJDaGFuZ2VzKCkge1xuICAgIGNvbnNvbGUubG9nKGBjbGVhckNoYW5nZXMoKSAtICR7SlNPTi5zdHJpbmdpZnkoYmFzaWNSZWZlcmVuY2UpfWApXG4gICAgY29uc3QgY2xlYXJTdGF0ZSA9IHtcbiAgICAgIC4uLnN0YXRlLFxuICAgICAgYWxpZ25lckRhdGE6IG51bGwsXG4gICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgIG5ld0FsaWdubWVudHM6IG51bGwsXG4gICAgICBuZXdWZXJzZVRleHQ6IG51bGwsXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzOiBudWxsLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZDogZmFsc2UsXG4gICAgfVxuXG4gICAgaWYgKCFpc0VxdWFsKHN0YXRlLCBjbGVhclN0YXRlKSkge1xuICAgICAgY29uc29sZS5sb2coYGNsZWFyQ2hhbmdlcygpIC0gcmVmZXJlbmNlIGNoYW5nZWQsIHJlc2V0IGVkaXQvYWxpZ25tZW50IHN0YXRlIHZhcmlhYmxlc2ApXG4gICAgICBzZXRTdGF0ZShjbGVhclN0YXRlKVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3NfID0ge1xuICAgIC4uLnNjcmlwdHVyZVNldHRpbmdzLFxuICAgIHJlc291cmNlSWQ6IE9SSUdJTkFMX1NPVVJDRSxcbiAgfVxuXG4gIC8vIEB0cy1pZ25vcmVcbiAgaHR0cENvbmZpZyA9IGh0dHBDb25maWcgfHwge31cbiAgY29uc3QgYm9va0lkID0gcHJvamVjdElkXG4gIGNvbnN0IG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MgPSBnZXRTY3JpcHR1cmVSZXNvdXJjZVNldHRpbmdzKFxuICAgIGJvb2tJZCwgb3JpZ2luYWxTY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LCBvcmlnaW5hbFJlcG9VcmwsXG4gIClcblxuICBpZiAoIWVuYWJsZUFsaWdubWVudCkgeyAvLyBpZiBub3QgZW5hYmxlZCwgdGhlbiB3ZSBkb24ndCBmZXRjaCByZXNvdXJjZVxuICAgIG9yaWdpbmFsU2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gbnVsbFxuICB9XG5cbiAgY29uc3Qgb3JpZ2luYWxWZXJzZU9iamVjdHMgPSBSZWFjdC51c2VNZW1vKCgpID0+IHsgLy8gZ2V0IHRoZSBvcmlnaW5hbCBsYW5ndWFnZSB2ZXJzZU9iamVjdHNcbiAgICBjb25zdCB2ZXJzZU9iamVjdHMgPSBbXVxuXG4gICAgaWYgKG9yaWdpbmFsU2NyaXB0dXJlQm9va09iamVjdHMpIHtcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIGNvbnN0IHZlcnNlcyA9IGdldFZlcnNlc0ZvclJlZihiYXNpY1JlZmVyZW5jZSwgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cz8ubGFuZ3VhZ2VJZClcblxuICAgICAgaWYgKHZlcnNlcz8ubGVuZ3RoKSB7XG4gICAgICAgIGZvciAoY29uc3QgdmVyc2VSZWZlcmVuY2Ugb2YgdmVyc2VzKSB7XG4gICAgICAgICAgY29uc3Qgb3JpZ1ZlcnNlT2JqZWN0cyA9IHZlcnNlUmVmZXJlbmNlPy52ZXJzZURhdGE/LnZlcnNlT2JqZWN0c1xuXG4gICAgICAgICAgaWYgKG9yaWdWZXJzZU9iamVjdHMpIHtcbiAgICAgICAgICAgIEFycmF5LnByb3RvdHlwZS5wdXNoLmFwcGx5KHZlcnNlT2JqZWN0cywgb3JpZ1ZlcnNlT2JqZWN0cylcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHZlcnNlT2JqZWN0c1xuICB9LCBbb3JpZ2luYWxTY3JpcHR1cmVCb29rT2JqZWN0cywgY2hhcHRlciwgdmVyc2UsIHByb2plY3RJZF0pXG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHsgLy8gdXBkYXRlIGFsaWdubWVudCBzdGF0dXMgd2hlbiBhbGlnbmVyIGlzIGhpZGRlblxuICAgIGNvbnN0IG5vdEVtcHR5ID0gISFpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgbGV0IGFsaWduZWRfID0gZmFsc2VcblxuICAgIGlmICghYWxpZ25lckRhdGEpIHsgLy8gc2tpcCBpZiBhbGlnbmVyIGlzIGJlaW5nIHNob3duXG4gICAgICBpZiAobm90RW1wdHkpIHsgLy8gc2tpcCBpZiBlbXB0eVxuICAgICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHMgfHwgaW5pdGlhbFZlcnNlT2JqZWN0c1xuXG4gICAgICAgIGlmICghZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICAgICAgYWxpZ25lZF8gPSB0cnVlXG4gICAgICAgIH0gZWxzZSBpZiAobmV3VmVyc2VUZXh0ICYmIChuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHQpKSB7XG4gICAgICAgICAgY29uc3QgcmVzdWx0cyA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0c18sIG5ld1ZlcnNlVGV4dClcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQocmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0LCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgICAvLyBUT0RPOiByZW1vdmUgYWxsXG4gICAgICAgICAgY2hlY2tGb3JEYXRhQ29ycnVwdGlvbigndXNlRWZmZWN0IC0gcmVjaGVjayBhbGlnbm1lbnRzJywgcmVzdWx0cz8udGFyZ2V0VmVyc2VUZXh0KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuY29udmVydFZlcnNlRGF0YVRvVVNGTShjdXJyZW50VmVyc2VPYmplY3RzXylcbiAgICAgICAgICBhbGlnbmVkXyA9IGlzVXNmbUFsaWduZWQodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlT2JqZWN0cylcbiAgICAgICAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCd1c2VFZmZlY3QgLSByZWNoZWNrIGFsaWdubWVudHMnLCB0YXJnZXRWZXJzZVVTRk0pXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGFsaWduZWQgIT09IGFsaWduZWRfKSB7XG4gICAgICAgIHNldFN0YXRlKHsgYWxpZ25lZDogYWxpZ25lZF8gfSlcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtpbml0aWFsVmVyc2VPYmplY3RzLCBhbGlnbmVyRGF0YSwgbmV3VmVyc2VUZXh0LCBpbml0aWFsVmVyc2VUZXh0LCBlbmFibGVBbGlnbm1lbnQsIG9yaWdpbmFsVmVyc2VPYmplY3RzXSlcblxuICAvKipcbiAgICogZ2V0IGNoYW5nZXMgZm9yIHNhdmluZ1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV3U3RhdGUgLSBvcHRpb25hbGx5IHBhc3MgaW4gbmV3IHN0YXRlICh0byBvdmVycmlkZSBzdGF0ZSlcbiAgICovXG4gIGZ1bmN0aW9uIGdldENoYW5nZXMobmV3U3RhdGUgPSB7fSkge1xuICAgIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gc3RhcnRlZCAke2N1cnJlbnRJbmRleH0gLSBwYXNzZWQgc3RhdGVgLCBuZXdTdGF0ZSlcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICBzdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgY29uc3Qge1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgbmV3QWxpZ25tZW50cyxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIG5ld1ZlcnNlVGV4dCxcbiAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHMsXG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICB2ZXJzZVRleHRDaGFuZ2VkLFxuICAgIH0gPSBfbmV3U3RhdGVcbiAgICBsZXQgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXG5cbiAgICBpZiAobmV3QWxpZ25tZW50cykgeyAvLyBpZiB1bnNhdmVkIGFsaWdubWVudCBjaGFuZ2VzLCBhcHBseSB0aGVtXG4gICAgICBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVuc2F2ZWQgYWxpZ25tZW50c31gKVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKClcbiAgICAgIGNoZWNrRm9yRGF0YUNvcnJ1cHRpb24oJ2dldENoYW5nZXMoKScsIHVwZGF0ZWRWZXJzZU9iamVjdHNfKVxuICAgIH1cblxuICAgIGlmICh2ZXJzZVRleHRDaGFuZ2VkICYmIG5ld1ZlcnNlVGV4dCkge1xuICAgICAgY29uc29sZS5sb2coYGdldENoYW5nZXMgLSBhcHBseWluZyBuZXcgdGV4dDpgLCBuZXdWZXJzZVRleHQpXG4gICAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdnZXRDaGFuZ2VzKCknLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNfIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHNfICYmIGNvbnNvbGUubG9nKGBnZXRDaGFuZ2VzIC0gYXBwbHlpbmcgdXBkYXRlZCBhbGlnbm1lbnRzYClcbiAgICAgIGNvbnN0IHsgdGFyZ2V0VmVyc2VPYmplY3RzIH0gPSBBbGlnbm1lbnRIZWxwZXJzLnVwZGF0ZUFsaWdubWVudHNUb1RhcmdldFZlcnNlKGN1cnJlbnRWZXJzZU9iamVjdHNfLCBuZXdWZXJzZVRleHQpXG4gICAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdnZXRDaGFuZ2VzKCknLCB0YXJnZXRWZXJzZU9iamVjdHMpXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyA9IHRhcmdldFZlcnNlT2JqZWN0c1xuICAgIH0gZWxzZSB7IC8vIG9ubHkgYWxpZ25tZW50IGNoYW5nZXMgdG8gdXBsb2FkXG4gICAgICB1cGRhdGVkVmVyc2VPYmplY3RzXyAmJiBjb25zb2xlLmxvZyhgZ2V0Q2hhbmdlcyAtIGFwcGx5aW5nIHVwZGF0ZWQgYWxpZ25tZW50c2AsIHsgbmV3VmVyc2VUZXh0LCB1cGRhdGVkVmVyc2VPYmplY3RzXyB9KVxuICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzXyB8fCBpbml0aWFsVmVyc2VPYmplY3RzXG4gICAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdnZXRDaGFuZ2VzKCknLCB1cGRhdGVkVmVyc2VPYmplY3RzXylcbiAgICB9XG5cbiAgICBpZiAodXBkYXRlZFZlcnNlT2JqZWN0c18pIHtcbiAgICAgIGNvbnN0IHJlZiA9IHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5bY3VycmVudEluZGV4XVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgICByZWYsXG4gICAgICAgIHVwZGF0ZWRWZXJzZU9iamVjdHM6IHVwZGF0ZWRWZXJzZU9iamVjdHNfLFxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB7fVxuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBhbGlnbm1lbnQgYnV0dG9uIC0gd2lsbCBzaG93IGlmIG5vdCBhbHJlYWR5IHNob3duXG4gICAqL1xuICBhc3luYyBmdW5jdGlvbiBoYW5kbGVBbGlnbm1lbnRDbGljaygpIHtcbiAgICBpZiAoZW5hYmxlQWxpZ25tZW50KSB7XG4gICAgICBsZXQgX2FsaWduZXJEYXRhOiBBbGlnbmVyRGF0YVR5cGUgPSBudWxsXG4gICAgICBhd2FpdCBzdGFydEVkaXRCcmFuY2goKVxuXG4gICAgICBpZiAoIWFsaWduZXJEYXRhKSB7IC8vIGlmIHdvcmQgYWxpZ25lciBub3Qgc2hvd25cbiAgICAgICAgY29uc29sZS5sb2coYGhhbmRsZUFsaWdubWVudENsaWNrIC0gdG9nZ2xlIE9OIGFsaWdubWVudGApXG4gICAgICAgIGxldCBvcmlnaW5hbFZlcnNlVXNmbSA9IG51bGxcbiAgICAgICAgbGV0IF91cGRhdGVkVmVyc2VPYmplY3RzID0gdXBkYXRlZFZlcnNlT2JqZWN0c1xuICAgICAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdoYW5kbGVBbGlnbm1lbnRDbGljaygpJywgdXBkYXRlZFZlcnNlT2JqZWN0cyB8fCBpbml0aWFsVmVyc2VPYmplY3RzKVxuXG4gICAgICAgIGlmIChvcmlnaW5hbFZlcnNlT2JqZWN0cykge1xuICAgICAgICAgIG9yaWdpbmFsVmVyc2VVc2ZtID0gVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgICAgICAgIGNvbnN0IGN1cnJlbnRWZXJzZU9iamVjdHMgPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICAgICAgICBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IG1pZ3JhdGVPcmlnaW5hbExhbmd1YWdlSGVscGVycy5taWdyYXRlVGFyZ2V0QWxpZ25tZW50c1RvT3JpZ2luYWwoY3VycmVudFZlcnNlT2JqZWN0cywgb3JpZ2luYWxWZXJzZU9iamVjdHMpXG4gICAgICAgICAgaXNNaWdyYXRlZCgnaGFuZGxlQWxpZ25tZW50Q2xpY2soKScsIF91cGRhdGVkVmVyc2VPYmplY3RzLCBjdXJyZW50VmVyc2VPYmplY3RzKVxuICAgICAgICAgIGNoZWNrRm9yRGF0YUNvcnJ1cHRpb24oJ2hhbmRsZUFsaWdubWVudENsaWNrKCknLCBfdXBkYXRlZFZlcnNlT2JqZWN0cylcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhcmdldFZlcnNlVVNGTSA9IGdldEN1cnJlbnRWZXJzZVVzZm0oX3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcblxuICAgICAgICBjb25zdCB7XG4gICAgICAgICAgdGFyZ2V0V29yZHM6IHdvcmRCYW5rLFxuICAgICAgICAgIHZlcnNlQWxpZ25tZW50czogYWxpZ25tZW50cyxcbiAgICAgICAgfSA9IEFsaWdubWVudEhlbHBlcnMucGFyc2VVc2ZtVG9Xb3JkQWxpZ25lckRhdGEodGFyZ2V0VmVyc2VVU0ZNLCBvcmlnaW5hbFZlcnNlVXNmbSlcbiAgICAgICAgX2FsaWduZXJEYXRhID0geyB3b3JkQmFuaywgYWxpZ25tZW50cyB9XG5cbiAgICAgICAgaWYgKCFhbGlnbm1lbnRzPy5sZW5ndGgpIHtcbiAgICAgICAgICBfYWxpZ25lckRhdGEuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyB3b3JkcyB0byBhbGlnbiBpbiB0aGUgT3JpZ2luYWwgbGFuZ3VhZ2UnXG4gICAgICAgIH0gZWxzZSBpZiAoIXdvcmRCYW5rPy5sZW5ndGgpIHtcbiAgICAgICAgICBfYWxpZ25lckRhdGEuZXJyb3JNZXNzYWdlID0gJ1RoZXJlIGFyZSBubyB3b3JkcyB0byBhbGlnbiBpbiB0aGUgTGl0ZXJhbC9TaW1wbGlmaWVkIFNjcmlwdHVyZSBUZXh0J1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgeyAvLyB3b3JkIGFsaWduZXIgY3VycmVudGx5IHNob3duXG4gICAgICAgIGNvbnNvbGUubG9nKGBoYW5kbGVBbGlnbm1lbnRDbGljayAtIGFsaWdubWVudCBhbHJlYWR5IHNob3duYClcbiAgICAgICAgX2FsaWduZXJEYXRhID0gYWxpZ25lckRhdGFcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IF9hbGlnbmVyRGF0YSB9KVxuICAgICAgY29uc29sZS5sb2coX2FsaWduZXJEYXRhKVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBnZXQgdXBkYXRlZCB2ZXJzZSBvYmplY3RzIGFmdGVyIGFsaWdubWVudHMgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cyk6VmVyc2VPYmplY3RzVHlwZSB7XG4gICAgY29uc3QgY3VycmVudFZlcnNlT2JqZWN0c18gPSB1cGRhdGVkVmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBjb25zdCB0YXJnZXRWZXJzZVRleHQgPSBuZXdWZXJzZVRleHQgfHwgVXNmbUZpbGVDb252ZXJzaW9uSGVscGVycy5jb252ZXJ0VmVyc2VEYXRhVG9VU0ZNKGN1cnJlbnRWZXJzZU9iamVjdHNfKVxuICAgIGNoZWNrRm9yRGF0YUNvcnJ1cHRpb24oJ3VwZGF0ZVZlcnNlV2l0aE5ld0FsaWdubWVudHMoKScsIHRhcmdldFZlcnNlVGV4dClcbiAgICBjb25zdCB2ZXJzZVVzZm0gPSBBbGlnbm1lbnRIZWxwZXJzLmFkZEFsaWdubWVudHNUb1ZlcnNlVVNGTShfbmV3QWxpZ25tZW50cy50YXJnZXRXb3JkcywgX25ld0FsaWdubWVudHMudmVyc2VBbGlnbm1lbnRzLCB0YXJnZXRWZXJzZVRleHQpXG4gICAgY29uc3QgYWxpZ25lZFZlcnNlT2JqZWN0cyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih2ZXJzZVVzZm0pXG4gICAgY2hlY2tGb3JEYXRhQ29ycnVwdGlvbigndXBkYXRlVmVyc2VXaXRoTmV3QWxpZ25tZW50cygpJywgYWxpZ25lZFZlcnNlT2JqZWN0cylcbiAgICByZXR1cm4gYWxpZ25lZFZlcnNlT2JqZWN0c1xuICB9XG5cbiAgLyoqXG4gICAqIGNhbGxiYWNrIGZvciB3aGVuIHVzZXIgY2xpY2tlZCBvbiBidXR0b24gdG8gc2F2ZSBjdXJyZW50IGFsaWdubWVudHMgaW4gd29yZCBhbGlnbmVyLiAgR2VuZXJhdGVzIG5ldyB2ZXJzZSBjb250ZW50IGFuZCBzYXZlcyBpbiBzdGF0ZS4gQ2xvc2VzIGFsaWduZXIgZGlzcGxheVxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IF9uZXdBbGlnbm1lbnRzIC0gcmVzdWx0cyBvZiBhbGlnbmVyXG4gICAqL1xuICBmdW5jdGlvbiBzYXZlQWxpZ25tZW50KF9uZXdBbGlnbm1lbnRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlID0gbmV3QWxpZ25tZW50cykge1xuICAgIGNvbnNvbGUubG9nKGBzYXZlQWxpZ25tZW50KCkgLSBuZXdBbGlnbm1lbnRzYCwgX25ld0FsaWdubWVudHMpXG5cbiAgICBpZiAoX25ld0FsaWdubWVudHMpIHtcbiAgICAgIGNvbnN0IGFsaWduZWRWZXJzZU9iamVjdHMgPSB1cGRhdGVWZXJzZVdpdGhOZXdBbGlnbm1lbnRzKF9uZXdBbGlnbm1lbnRzKVxuICAgICAgY29uc29sZS5sb2coYHNhdmVBbGlnbm1lbnQoKSAtIGFsaWduZWRWZXJzZU9iamVjdHNgLCBhbGlnbmVkVmVyc2VPYmplY3RzKVxuICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgIGFsaWduZXJEYXRhOiBudWxsLFxuICAgICAgICBlZGl0aW5nOiBmYWxzZSxcbiAgICAgICAgbmV3QWxpZ25tZW50czogbnVsbCxcbiAgICAgICAgdXBkYXRlZFZlcnNlT2JqZWN0czogYWxpZ25lZFZlcnNlT2JqZWN0cyxcbiAgICAgIH1cbiAgICAgIHNldFN0YXRlKG5ld1N0YXRlKVxuICAgICAgY2FsbFNldFNhdmVkU3RhdGUodHJ1ZSwgbmV3U3RhdGUgKVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zb2xlLmxvZyhgc2F2ZUFsaWdubWVudCgpIC0gbm8gYWxpZ25tZW50IGNoYW5nZXNgKVxuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhbGlnbmVyRGF0YTogbnVsbCxcbiAgICAgICAgZWRpdGluZzogZmFsc2UsXG4gICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3Igd2hlbiB1c2VyIGNsaWNrZWQgb24gYnV0dG9uIHRvIGNhbmNlbCB3b3JrIGluIHdvcmQgYWxpZ25lci4gIENhbGN1bGF0ZXMgYW5kIGRpc3BsYXlzIGN1cnJlbnQgYWxpZ25tZW50IHZhbGlkIHN0YXRlLiBDbG9zZXMgYWxpZ25lciBkaXNwbGF5XG4gICAqL1xuICBmdW5jdGlvbiBjYW5jZWxBbGlnbm1lbnQoKSB7XG4gICAgY29uc29sZS5sb2coYGNhbmNlbEFsaWdubWVudCgpYClcbiAgICBjb25zdCB0YXJnZXRWZXJzZVVTRk0gPSBnZXRDdXJyZW50VmVyc2VVc2ZtKHVwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVVTRk0sIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIHNldFN0YXRlKHsgYWxpZ25lckRhdGE6IG51bGwsIGFsaWduZWQgfSlcbiAgfVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayBmb3IgYnV0dG9uIHRvIHNldCBlZGl0aW5nIHN0YXRlXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZWRpdGluZ18gLSBpZiB0cnVlLCBlZGl0b3IgaXMgc2hvd24sIG90aGVyd2lzZSBlZGl0b3IgaXMgaGlkZGVuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBfbmV3VmVyc2VUZXh0IC0gb3B0aW9uYWwgdmVyc2UgdGV4dFxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlcXVpcmUtYXdhaXRcbiAgYXN5bmMgZnVuY3Rpb24gc2V0RWRpdGluZyhlZGl0aW5nXzogYm9vbGVhbiwgX25ld1ZlcnNlVGV4dDogc3RyaW5nID0gbmV3VmVyc2VUZXh0KSB7XG4gICAgaWYgKGVuYWJsZUVkaXQpIHtcbiAgICAgIGlmIChlZGl0aW5nXyAhPT0gZWRpdGluZykge1xuICAgICAgICBfbmV3VmVyc2VUZXh0ID0gX25ld1ZlcnNlVGV4dCB8fCBpbml0aWFsVmVyc2VUZXh0XG4gICAgICAgIGxldCBfdXBkYXRlZFZlcnNlT2JqZWN0cyA9IHVwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgY29uc3QgdmVyc2VUZXh0Q2hhbmdlZCA9IF9uZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcbiAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgZWRpdGluZzogZWRpdGluZ18sXG4gICAgICAgICAgbmV3VmVyc2VUZXh0OiBfbmV3VmVyc2VUZXh0LFxuICAgICAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXZlcnNlVGV4dENoYW5nZWQpIHtcbiAgICAgICAgICAvLyBmYWxsYmFjayB0byBtYWtlIHN1cmUgdGV4dCBmcm9tIHZlcnNlT2JqZWN0cyBtYXRjaGVzIGN1cnJlbnQgdGV4dFxuICAgICAgICAgIGNvbnN0IHZlcnNlVGV4dCA9IFVzZm1GaWxlQ29udmVyc2lvbkhlbHBlcnMuZ2V0VXNmbUZvclZlcnNlQ29udGVudCh7IHZlcnNlT2JqZWN0czogY3VycmVudFZlcnNlT2JqZWN0cyB9IClcblxuICAgICAgICAgIGNoZWNrRm9yRGF0YUNvcnJ1cHRpb24oJ3NldEVkaXRpbmcoKScsIHZlcnNlVGV4dClcblxuICAgICAgICAgIGlmIChoYXNUZXh0Q2hhbmdlZFNpZ25pZmljYW50bHkodmVyc2VUZXh0LCBfbmV3VmVyc2VUZXh0KSkge1xuICAgICAgICAgICAgLy8gYXBwbHkgYWxpZ25tZW50IHRvIGN1cnJlbnQgdGV4dFxuICAgICAgICAgICAgY29uc3QgeyB0YXJnZXRWZXJzZU9iamVjdHMgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UoY3VycmVudFZlcnNlT2JqZWN0cywgX25ld1ZlcnNlVGV4dClcbiAgICAgICAgICAgIF91cGRhdGVkVmVyc2VPYmplY3RzID0gdGFyZ2V0VmVyc2VPYmplY3RzIC8vIHVwZGF0ZSB2ZXJzZU9iamVjdHMgdG8gbWF0Y2ggY3VycmVudCB0ZXh0XG4gICAgICAgICAgICBuZXdTdGF0ZVsndXBkYXRlZFZlcnNlT2JqZWN0cyddID0gX3VwZGF0ZWRWZXJzZU9iamVjdHNcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBzZXRTdGF0ZShuZXdTdGF0ZSlcbiAgICAgICAgY29uc3QgX2FsaWdubWVudHNDaGFuZ2VkID0gKF91cGRhdGVkVmVyc2VPYmplY3RzICYmICFpc0VxdWFsKGluaXRpYWxWZXJzZU9iamVjdHMsIF91cGRhdGVkVmVyc2VPYmplY3RzKSlcbiAgICAgICAgY2hlY2tGb3JEYXRhQ29ycnVwdGlvbignc2V0RWRpdGluZygpJywgaW5pdGlhbFZlcnNlT2JqZWN0cylcbiAgICAgICAgY2hlY2tGb3JEYXRhQ29ycnVwdGlvbignc2V0RWRpdGluZygpJywgX3VwZGF0ZWRWZXJzZU9iamVjdHMpXG5cbiAgICAgICAgY2FsbFNldFNhdmVkU3RhdGUodmVyc2VUZXh0Q2hhbmdlZCB8fCBfYWxpZ25tZW50c0NoYW5nZWQsIG5ld1N0YXRlIClcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogY2FsbGJhY2sgZnJvbSB0aGUgZWRpdCBvbkNoYW5nZSBldmVudCB0byB1cGRhdGUgZWRpdCBzdGF0ZSB2YXJpYWJsZXNcbiAgICogQHBhcmFtIHtib29sZWFufSBjaGFuZ2VkIC0gdHJ1ZSBpZiB0aGUgbmV3VmVyc2VUZXh0IGlzIGRpZmZlcmVudCB0aGFuIHRoZSBpbml0aWFsVmVyc2VUZXh0XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuZXdWZXJzZVRleHQgLSBjdXJyZW50IGNoYW5nZWQgdmVyc2UgdGV4dFxuICAgKiBAcGFyYW0ge3N0cmluZ30gX2luaXRpYWxWZXJzZVRleHQgLSBpbml0aWFsIHZlcnNlIHRleHRcbiAgICovXG4gIGZ1bmN0aW9uIHNldFZlcnNlQ2hhbmdlZChjaGFuZ2VkOiBib29sZWFuLCBuZXdWZXJzZVRleHQ6IHN0cmluZywgX2luaXRpYWxWZXJzZVRleHQ6IHN0cmluZykge1xuICAgIGNoZWNrRm9yRGF0YUNvcnJ1cHRpb24oJ3NldFZlcnNlQ2hhbmdlZCgpJywgbmV3VmVyc2VUZXh0KVxuICAgIGNvbnN0IF90YXJnZXRWZXJzZU9iamVjdHMgPSBjdXJyZW50VmVyc2VPYmplY3RzIHx8IGluaXRpYWxWZXJzZU9iamVjdHNcbiAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdzZXRWZXJzZUNoYW5nZWQoKScsIF90YXJnZXRWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgbWlncmF0ZWRWZXJzZU9iamVjdHMgPSBtaWdyYXRlT3JpZ2luYWxMYW5ndWFnZUhlbHBlcnMubWlncmF0ZVRhcmdldEFsaWdubWVudHNUb09yaWdpbmFsKF90YXJnZXRWZXJzZU9iamVjdHMsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGlzTWlncmF0ZWQoJ3NldFZlcnNlQ2hhbmdlZCgpJywgX3RhcmdldFZlcnNlT2JqZWN0cywgbWlncmF0ZWRWZXJzZU9iamVjdHMpXG4gICAgY29uc3QgeyB0YXJnZXRWZXJzZVRleHQgfSA9IEFsaWdubWVudEhlbHBlcnMudXBkYXRlQWxpZ25tZW50c1RvVGFyZ2V0VmVyc2UobWlncmF0ZWRWZXJzZU9iamVjdHMsIG5ld1ZlcnNlVGV4dClcbiAgICBjaGVja0ZvckRhdGFDb3JydXB0aW9uKCdzZXRWZXJzZUNoYW5nZWQoKScsIHRhcmdldFZlcnNlVGV4dClcbiAgICBjb25zdCBhbGlnbmVkID0gaXNVc2ZtQWxpZ25lZCh0YXJnZXRWZXJzZVRleHQsIG9yaWdpbmFsVmVyc2VPYmplY3RzKVxuICAgIGNvbnN0IHZlcnNlVGV4dENoYW5nZWQgPSBuZXdWZXJzZVRleHQgIT09IGluaXRpYWxWZXJzZVRleHRcblxuICAgIHNldFN0YXRlKHtcbiAgICAgIHZlcnNlVGV4dENoYW5nZWQsXG4gICAgICBuZXdWZXJzZVRleHQsXG4gICAgICBhbGlnbmVkLFxuICAgIH0pXG4gIH1cblxuICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzID0gUmVhY3QudXNlTWVtbyggKCkgPT4geyAvLyBpZiB2ZXJzZSBoYXMgYmVlbiBlZGl0ZWQgb3IgYWxpZ25tZW50IGNoYW5nZWQsIHRoZW4gZ2VuZXJhdGUgbmV3IHZlcnNlT2JqZWN0cyB0byBkaXNwbGF5IGluIFNjcmlwdHVyZVBhbmVcbiAgICBpZiAoaW5pdGlhbFZlcnNlT2JqZWN0cykge1xuICAgICAgY29uc3QgdGFyZ2V0VmVyc2VVU0ZNID0gZ2V0Q3VycmVudFZlcnNlVXNmbSh1cGRhdGVkVmVyc2VPYmplY3RzLCBpbml0aWFsVmVyc2VPYmplY3RzLCB2ZXJzZVRleHRDaGFuZ2VkLCBuZXdWZXJzZVRleHQpXG4gICAgICBjb25zdCBjdXJyZW50VmVyc2VPYmplY3RzXyA9IHVzZm1IZWxwZXJzLnVzZm1WZXJzZVRvSnNvbih0YXJnZXRWZXJzZVVTRk0pXG4gICAgICByZXR1cm4gY3VycmVudFZlcnNlT2JqZWN0c19cbiAgICB9XG4gICAgcmV0dXJuIGluaXRpYWxWZXJzZU9iamVjdHNcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWQsIG5ld1ZlcnNlVGV4dF0pXG5cbiAgY29uc3QgdW5zYXZlZENoYW5nZXM6Ym9vbGVhbiA9IFJlYWN0LnVzZU1lbW8oICgpID0+IHsgLy8gaWYgdmVyc2UgaGFzIGJlZW4gZWRpdGVkIG9yIGFsaWdubWVudCBjaGFuZ2VkLCB0aGVuIGluZGljYXRlIHdlIGhhdmUgdW5zYXZlZCBjaGFuZ2VzXG4gICAgY29uc3QgY2hhbmdlZCA9IHZlcnNlVGV4dENoYW5nZWQgfHwgKHVwZGF0ZWRWZXJzZU9iamVjdHMgJiYgIWlzRXF1YWwoaW5pdGlhbFZlcnNlT2JqZWN0cywgdXBkYXRlZFZlcnNlT2JqZWN0cykpXG4gICAgcmV0dXJuIGNoYW5nZWRcbiAgfSwgW3VwZGF0ZWRWZXJzZU9iamVjdHMsIGluaXRpYWxWZXJzZU9iamVjdHMsIHZlcnNlVGV4dENoYW5nZWRdKVxuXG4gIC8qKlxuICAgKiBjYWxsYmFjayB0byBzY3JpcHR1cmUgY2FyZCB0byB1cGRhdGVkIHdpdGggbGF0ZXN0IHN0YXRlIGZvciBzYXZpbmdcbiAgICogQHBhcmFtIHtib29sZWFufSB1bnNhdmVkQ2hhbmdlc19cbiAgICogQHBhcmFtIHtvYmplY3R9IG5ld1N0YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjYWxsU2V0U2F2ZWRTdGF0ZSh1bnNhdmVkQ2hhbmdlc186IGJvb2xlYW4sIG5ld1N0YXRlOiB7fSA9IHsgfSApIHtcbiAgICBjb25zdCBfbmV3U3RhdGUgPSB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIC4uLm5ld1N0YXRlLFxuICAgIH1cblxuICAgIC8vIGNvbnNvbGUubG9nKGBjYWxsU2V0U2F2ZWRTdGF0ZSAtIG5ldyBzdGF0ZWAsIF9uZXdTdGF0ZSlcbiAgICBzZXRTYXZlZENoYW5nZXMgJiYgc2V0U2F2ZWRDaGFuZ2VzKGN1cnJlbnRJbmRleCwgIXVuc2F2ZWRDaGFuZ2VzXywge1xuICAgICAgZ2V0Q2hhbmdlcyxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIHN0YXRlOiBfbmV3U3RhdGUsXG4gICAgfSlcbiAgfVxuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7IC8vIHNldCBzYXZlZCBjaGFuZ2VzIHdoZW5ldmVyIHVzZXIgZWRpdHMgdmVyc2UgdGV4dCBvciBhbGlnbm1lbnRzIG9yIGlmIGFsaWdubWVudHMgYXJlIG9wZW5cbiAgICBjb25zdCB1bnNhdmVkQ2hhbmdlc18gPSB1bnNhdmVkQ2hhbmdlcyB8fCAhIWFsaWduZXJEYXRhXG4gICAgY2FsbFNldFNhdmVkU3RhdGUodW5zYXZlZENoYW5nZXNfKVxuICB9LCBbdW5zYXZlZENoYW5nZXMsIGFsaWduZXJEYXRhXSlcblxuICAvKipcbiAgICogY2FsbGJhY2sgZm9yIHdoZW4gYWxpZ25tZW50cyBhcmUgYmVpbmcgY2hhbmdlZFxuICAgKiBAcGFyYW0ge0FsaWduZXJSZXN1bHRzRGF0YVR5cGV9IHJlc3VsdHNcbiAgICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiBhbGlnbm1lbnQgaXMgY29tcGxldGVcbiAgICovXG4gIGZ1bmN0aW9uIG9uQWxpZ25tZW50c0NoYW5nZShyZXN1bHRzOiBBbGlnbmVyUmVzdWx0c0RhdGFUeXBlKTpib29sZWFuIHtcbiAgICBjb25zb2xlLmxvZyhgb25BbGlnbm1lbnRzQ2hhbmdlKCkgLSBhbGlnbm1lbnQgY2hhbmdlZCwgcmVzdWx0c2AsIHJlc3VsdHMpIC8vIG1lcmdlIGFsaWdubWVudHMgaW50byB0YXJnZXQgdmVyc2UgYW5kIGNvbnZlcnQgdG8gVVNGTVxuICAgIGNvbnN0IHsgdGFyZ2V0V29yZHMsIHZlcnNlQWxpZ25tZW50cyB9ID0gcmVzdWx0c1xuICAgIGNvbnN0IGFsaWdubWVudENvbXBsZXRlID0gQWxpZ25tZW50SGVscGVycy5hcmVBbGdubWVudHNDb21wbGV0ZSh0YXJnZXRXb3JkcywgdmVyc2VBbGlnbm1lbnRzKVxuICAgIGNvbnNvbGUubG9nKGBBbGlnbm1lbnRzIGFyZSAke2FsaWdubWVudENvbXBsZXRlID8gJ0NPTVBMRVRFIScgOiAnaW5jb21wbGV0ZSd9YClcbiAgICBzZXRTdGF0ZSh7IG5ld0FsaWdubWVudHM6IHJlc3VsdHMsIGFsaWduZWQ6IGFsaWdubWVudENvbXBsZXRlIH0pXG4gICAgcmV0dXJuIGFsaWdubWVudENvbXBsZXRlXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFjdGlvbnM6IHtcbiAgICAgIGNhbmNlbEFsaWdubWVudCxcbiAgICAgIGNsZWFyQ2hhbmdlcyxcbiAgICAgIGdldENoYW5nZXMsXG4gICAgICBoYW5kbGVBbGlnbm1lbnRDbGljayxcbiAgICAgIG9uQWxpZ25tZW50c0NoYW5nZSxcbiAgICAgIHNhdmVBbGlnbm1lbnQsXG4gICAgICBzZXRFZGl0aW5nLFxuICAgICAgc2V0VmVyc2VDaGFuZ2VkLFxuICAgIH0sXG4gICAgc3RhdGU6IHtcbiAgICAgIGFsaWduZWQsXG4gICAgICBhbGlnbmVyRGF0YSxcbiAgICAgIGN1cnJlbnRWZXJzZU9iamVjdHMsXG4gICAgICBlZGl0aW5nLFxuICAgICAgZW5hYmxlRWRpdCxcbiAgICAgIGVuYWJsZUFsaWdubWVudCxcbiAgICAgIGluaXRpYWxWZXJzZVRleHQsXG4gICAgICBpbml0aWFsVmVyc2VPYmplY3RzLFxuICAgICAgbmV3VmVyc2VUZXh0LFxuICAgICAgcmVmZXJlbmNlOiBiYXNpY1JlZmVyZW5jZSxcbiAgICAgIHNvdXJjZUxhbmd1YWdlLFxuICAgICAgdGFyZ2V0TGFuZ3VhZ2UsXG4gICAgICB0aXRsZSxcbiAgICAgIHVuc2F2ZWRDaGFuZ2VzLFxuICAgICAgdmVyc2VUZXh0Q2hhbmdlZCxcbiAgICB9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
@@ -29,6 +29,7 @@ import "core-js/modules/es.parse-int.js";
29
29
  import "core-js/modules/es.string.match.js";
30
30
  import "core-js/modules/es.array.index-of.js";
31
31
  import "core-js/modules/es.string.trim.js";
32
+ import "core-js/modules/es.array.filter.js";
32
33
  import "core-js/modules/es.array.is-array.js";
33
34
  import "core-js/modules/es.symbol.js";
34
35
  import "core-js/modules/es.symbol.description.js";
@@ -43,7 +44,6 @@ import "core-js/modules/es.date.to-primitive.js";
43
44
  import "core-js/modules/es.number.constructor.js";
44
45
  import "core-js/modules/es.object.define-property.js";
45
46
  import "core-js/modules/es.object.keys.js";
46
- import "core-js/modules/es.array.filter.js";
47
47
  import "core-js/modules/es.object.get-own-property-descriptor.js";
48
48
  import "core-js/modules/es.array.for-each.js";
49
49
  import "core-js/modules/web.dom-collections.for-each.js";
@@ -465,4 +465,26 @@ export function verseObjectsHaveWords(verseObjects) {
465
465
  }
466
466
  return false;
467
467
  }
468
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIlZlcnNlT2JqZWN0c1R5cGUiLCJESVNBQkxFX1dPUkRfUE9QT1ZFUiIsImdldFJlc291cmNlTGluayIsInNjcmlwdHVyZSIsInJlZiIsImJyYW5jaCIsImNvbmNhdCIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJwYXJzZVJlc291cmNlTGluayIsInJlc291cmNlTGluayIsIl9yZXNvdXJjZUxpbmskc3BsaXQiLCJzcGxpdCIsIl9yZXNvdXJjZUxpbmskc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJnZXRTY3JpcHR1cmVPYmplY3QiLCJfcmVmIiwidGl0bGUiLCJzZXJ2ZXIiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRWZXJzZURhdGFGcm9tU2NyaXBDb25maWciLCJzY3JpcHR1cmVDb25maWciLCJ2ZXJzZU51bSIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInZlcnNlc0ZvclJlZiIsImZpbmQiLCJ2ZXJzZVJlZiIsInZlcnNlIiwiaXNPcmlnaW5hbEJpYmxlIiwiaXNPcmlnIiwiY2xlYW51cEFjY291bnRTZXR0aW5ncyIsInNjcmlwdHVyZVNldHRpbmdzIiwiY3VycmVudE93bmVyIiwiY3VycmVudExhbmd1YWdlSWQiLCJzcGxpdFVybCIsIm9yaWdpbmFsUmVwb1VybCIsInVybCIsIlVSTCIsIm9yaWdpbiIsInBhdGhuYW1lIiwic2VhcmNoIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsImJvb2tJZCIsInNjcmlwdHVyZVNldHRpbmdzXyIsImlzTmV3VGVzdGFtZW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIl9zcGxpdFVybCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsIl9yZWYyIiwibGFiZWwiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImhpc3RvcnkiLCJnZXRMYXRlc3QiLCJpbmRleCIsImZpbmRJdGVtSW5kZXhCeUtleSIsInNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnIiwib3B0aW9ucyIsImN1cnJlbnQiLCJhbGxvd1VzZXJJbnB1dCIsIm9uQ2hhbmdlIiwidmFsaWRhdGlvbkNCIiwiaXRlbSIsIm5ld0l0ZW0iLCJhZGRJdGVtVG9IaXN0b3J5IiwiZ2V0SXRlbUJ5VGl0bGUiLCJkZWxldGVJdGVtIiwiZGVsZXRlSW5kZXgiLCJyZW1vdmVJdGVtQnlJbmRleCIsImdldFJlcG9VcmwiLCJpc05UIiwicmVwb1VybCIsIl9yZXNvdXJjZUxpbmskc3BsaXQzIiwiX3Jlc291cmNlTGluayRzcGxpdDQiLCJlIiwiZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rIiwiZXJyb3JDb2RlIiwiZXJyb3JNc2ciLCJ2YWxpZGF0ZURjc1VybCIsInZhbGlkUmVwb1BhdGgiLCJ2YWxpZFVybCIsInBhcnRzIiwiX3BhcnRzIiwicHJvdG9jb2wiLCJob3N0IiwidXNlciIsInJlcG8iLCJob3N0UGFydHMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwicGFydCIsInZhbHVlIiwiZXJyIiwiZiIsIl9yZXBvJHNwbGl0IiwiX3JlcG8kc3BsaXQyIiwicHJvamVjdElkIiwiX3VudXNlZCIsImNvbnNvbGUiLCJsb2ciLCJnZXRSZXNvdXJjZUVycm9yTWVzc2FnZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFJlc291cmNlTGlua1NwZWNpZmljIiwiZml4T2NjdXJyZW5jZSIsIm9jY3VycmVuY2UiLCJwYXJzZUludCIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaSIsImwiLCJ2byIsInR5cGUiLCJvY2N1cnJlbmNlcyIsIndvcmQiLCJjaGlsZHJlbiIsIm5ld1ZvIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZmlsZW5hbWUiLCJfZmlsZW5hbWUkbWF0Y2giLCJyZWdleCIsImJvb2tOYW1lIiwibWF0Y2giLCJnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQiLCJiaWJsZVVzZm0iLCJpZEhlYWRlciIsInBvc0lkIiwiaW5kZXhPZiIsImlkU3RhcnQiLCJoZWFkZXJJZCIsInN1YnN0cmluZyIsInRyaW0iLCJoZWFkZXJCb29rSUQiLCJfaGVhZGVyQm9va0lEIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZvdW5kV29yZHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvU2NyaXB0dXJlU2V0dGluZ3MudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQge1xuICBCT09LX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIExPQURJTkdfUkVTT1VSQ0UsXG4gIE1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHLFxuICBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBOVF9PUklHX0xBTkcsXG4gIE5UX09SSUdfTEFOR19CSUJMRSxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG4gIE9UX09SSUdfTEFOR19CSUJMRSxcbiAgU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIFRBUkdFVF9MSVRFUkFMLFxuICBUQVJHRVRfU0lNUExJRklFRCxcbn0gZnJvbSAnLi9jb21tb24nXG5pbXBvcnQge1ZlcnNlT2JqZWN0c1R5cGV9IGZyb20gJy4uL3R5cGVzJztcblxuZXhwb3J0IGNvbnN0IERJU0FCTEVfV09SRF9QT1BPVkVSID0gdHJ1ZSAvLyBkaXNhYmxlIHdvcmQgcG9wb3ZlciBmb3IgZXZlcnkgc2NyaXB0dXJlIHBhbmUgYnV0IG9yaWdpbmFsIGxhbmd1YWdlc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZSkge1xuICBjb25zdCByZWYgPSBzY3JpcHR1cmUucmVmIHx8IHNjcmlwdHVyZS5icmFuY2hcbiAgcmV0dXJuIGAke3NjcmlwdHVyZS5vd25lcn0vJHtzY3JpcHR1cmUubGFuZ3VhZ2VJZH0vJHtzY3JpcHR1cmUucmVzb3VyY2VJZH0vJHtyZWZ9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSZXNvdXJjZUxpbmsocmVzb3VyY2VMaW5rKSB7XG4gIGNvbnN0IFtvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZCwgcmVmXSA9IHJlc291cmNlTGluay5zcGxpdCgnLycpXG4gIHJldHVybiB7XG4gICAgb3duZXIsXG4gICAgbGFuZ3VhZ2VJZCxcbiAgICByZXNvdXJjZUlkLFxuICAgIHJlZixcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlT2JqZWN0KHtcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgb3duZXIsXG4gIHJlZixcbiAgbGFuZ3VhZ2VJZCxcbiAgcmVzb3VyY2VJZCxcbiAgcmVzb3VyY2VMaW5rLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbn0pIHtcbiAgY29uc3Qgc2NyaXB0dXJlID0ge1xuICAgIHRpdGxlLFxuICAgIHNlcnZlcixcbiAgICBvd25lcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgcmVzb3VyY2VMaW5rLFxuICB9XG5cbiAgaWYgKCFyZXNvdXJjZUxpbmspIHtcbiAgICBzY3JpcHR1cmUucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgIG93bmVyLFxuICAgICAgcmVmLFxuICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgfSlcbiAgfVxuICByZXR1cm4gc2NyaXB0dXJlXG59XG5cbi8qKlxuICogcmV0dXJuIHZlcnNlIGRhdGEgZ2l2ZW4gYSBzY3JpcHR1cmUgY29uZmlnIGFuZCB2ZXJzZSBudW1iZXJcbiAqIEBwYXJhbSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB2ZXJzZU51bVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VEYXRhRnJvbVNjcmlwQ29uZmlnKHNjcmlwdHVyZUNvbmZpZywgdmVyc2VOdW0pIHtcbiAgcmV0dXJuIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5maW5kKFxuICAgIHZlcnNlUmVmID0+IHZlcnNlUmVmLnZlcnNlID09PSB2ZXJzZU51bVxuICApXG59XG5cbi8qKlxuICogcmV0dXJuIHRydWUgaWYgcmVzb3VyY2UgaXMgYW4gb3JpZ2luYWwgbGFuZ3VhZ2UgYmlibGVcbiAqIEBwYXJhbSByZXNvdXJjZUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09yaWdpbmFsQmlibGUocmVzb3VyY2VJZCkge1xuICBjb25zdCBpc09yaWcgPSAoKHJlc291cmNlSWQgPT09IE5UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9SSUdJTkFMX1NPVVJDRSkpXG4gIHJldHVybiBpc09yaWdcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgc2NyaXB0dXJlU2V0dGluZ3MgYXJlIHVwIHRvIGRhdGUgd2l0aCBjdXJyZW50IG93bmVyIGFuZCBsYW5ndWFnZVxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzOiBhbnksIGN1cnJlbnRPd25lcjogYW55LCBjdXJyZW50TGFuZ3VhZ2VJZDogYW55KSB7XG4gIGlmIChjdXJyZW50T3duZXIgJiYgKGN1cnJlbnRPd25lciAhPT0gc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIpKSB7IC8vIGlmIG93bmVyIGNoYW5nZWQsIHVwZGF0ZSBzY3JpcHR1cmVTZXR0aW5nc1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gY3VycmVudE93bmVyXG4gIH1cblxuICBpZiAoY3VycmVudExhbmd1YWdlSWQgJiYgKGN1cnJlbnRMYW5ndWFnZUlkICE9PSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkKSkgeyAvLyBpZiBsYW5ndWFnZSBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gY3VycmVudExhbmd1YWdlSWRcbiAgfVxufVxuXG4vKipcbiAqIHNlcGFyYXRlIFVSTCBpbnRvIHNlcnZlciBhbmQgcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKSB7XG4gIGlmIChvcmlnaW5hbFJlcG9VcmwpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKG9yaWdpbmFsUmVwb1VybClcbiAgICBjb25zdCBzZXJ2ZXIgPSB1cmwub3JpZ2luXG4gICAgY29uc3QgcmVzb3VyY2VMaW5rID0gdXJsLnBhdGhuYW1lICsgKHVybC5zZWFyY2ggfHwgJycpXG4gICAgcmV0dXJuIHsgc2VydmVyLCByZXNvdXJjZUxpbmsgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG4vKipcbiAqIGdldCB0aGUgc2NyaXB0dXJlIHNldHRpbmdzIG5lZWRlZCBmb3IgZmV0Y2ggLSBmb3IgT3JpZ0xhbmcsIFVMVCwgR0xUIHdpbGwgcmVwbGFjZSBvd25lciBhbmQgbGFuZ3VhZ2VJZCB3aXRoIGNvcnJlY3QgdmFsdWVzXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlU2V0dGluZ3NfXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3VGVzdGFtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxSZXBvVXJsIC0gb3B0aW9uYWwgcGF0aCB0byByZXBvIGZvciBvcmlnaW5hbCBsYW5ndWFnZVxuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRMYW5ndWFnZUlkIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBsYW5ndWFnZSBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50T3duZXIgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIG93bmVyIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgYm9va0lkLCBzY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LFxuICBvcmlnaW5hbFJlcG9Vcmw9bnVsbCxcbiAgY3VycmVudExhbmd1YWdlSWQ9bnVsbCxcbiAgY3VycmVudE93bmVyPW51bGwsXG4pIHtcbiAgY29uc3Qgc2NyaXB0dXJlU2V0dGluZ3MgPSB7IC4uLnNjcmlwdHVyZVNldHRpbmdzXyB9XG4gIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IERJU0FCTEVfV09SRF9QT1BPVkVSXG4gIGNvbnN0IHJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5nc18ucmVzb3VyY2VJZFxuXG4gIGlmIChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpIHtcbiAgICAvLyBzZWxlY3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgQmlibGUgYmFzZWQgb24gd2hpY2ggdGVzdGFtZW50IHRoZSBib29rIGJlbG9uZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gaXNOZXdUZXN0YW1lbnQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gaXNOZXdUZXN0YW1lbnRcbiAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICA6IE9UX09SSUdfTEFOR19CSUJMRVxuXG4gICAgaWYgKHNjcmlwdHVyZVNldHRpbmdzLm9yaWdpbmFsTGFuZ3VhZ2VPd25lcikge1xuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIgPSBzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXJcbiAgICB9XG5cbiAgICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7IC8vIHVzZSB0aGlzIHVybCBpZiBkZWZpbmVkXG4gICAgICBjb25zdCB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH0gPSBzcGxpdFVybChvcmlnaW5hbFJlcG9VcmwpXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5zZXJ2ZXIgPSBzZXJ2ZXJcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IHJlc291cmNlTGlua1xuICAgIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byBhcHAgZGVmYXVsdHNcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgICB9XG4gICAgc2NyaXB0dXJlU2V0dGluZ3MuZGlzYWJsZVdvcmRQb3BvdmVyID0gZmFsc2VcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfTElURVJBTCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndWx0JyA6ICdnbHQnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9IGVsc2UgaWYgKHJlc291cmNlSWQgPT09IFRBUkdFVF9TSU1QTElGSUVEKSB7XG4gICAgY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5ncywgY3VycmVudE93bmVyLCBjdXJyZW50TGFuZ3VhZ2VJZClcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9PT0gJ2VuJyA/ICd1c3QnIDogJ2dzdCdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVNldHRpbmdzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICBsYWJlbCxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZXRTY3JpcHR1cmUsXG4gIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxufSkge1xuICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgbGV0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICdyZXNvdXJjZUxpbmsnLCByZXNvdXJjZUxpbmspXG5cbiAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0b3JDb25maWcgPSB7XG4gICAgbGFiZWwsIC8vIGxhYmVsIGZvciBjb21ib2JveFxuICAgIG9wdGlvbnM6IGhpc3RvcnksXG4gICAgY3VycmVudDogaW5kZXgsXG4gICAgYWxsb3dVc2VySW5wdXQ6IHRydWUsXG4gICAgb25DaGFuZ2U6ICh0aXRsZSwgaW5kZXgsIHZhbGlkYXRpb25DQj1udWxsKSA9PiB7XG4gICAgICBsZXQgaXRlbVxuXG4gICAgICBpZiAoKGluZGV4IDwgMCkgJiYgdGl0bGUpIHtcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICB1cmw6IHRpdGxlLFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuYWRkSXRlbVRvSGlzdG9yeShuZXdJdGVtKVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpW2luZGV4XVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0SXRlbUJ5VGl0bGUodGl0bGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHNldFNjcmlwdHVyZShpdGVtLCB2YWxpZGF0aW9uQ0IpXG4gICAgICB9XG4gICAgfSxcbiAgICBkZWxldGVJdGVtOiB0aXRsZSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgICAgIGNvbnN0IGRlbGV0ZUluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICd0aXRsZScsIHRpdGxlKVxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QucmVtb3ZlSXRlbUJ5SW5kZXgoZGVsZXRlSW5kZXgpXG4gICAgfSxcbiAgfVxuXG4gIHJldHVybiBzY3JpcHR1cmVTZWxlY3RvckNvbmZpZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwb1VybChyZXNvdXJjZUxpbms6IHN0cmluZywgc2VydmVyOiBzdHJpbmcsIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBsZXQgcmVwb1VybFxuXG4gIHRyeSB7XG4gICAgbGV0IFtvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0gPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuXG4gICAgc3dpdGNoIChyZXNvdXJjZUlkKSB7XG4gICAgY2FzZSBPUklHSU5BTF9TT1VSQ0U6XG4gICAgICBsYW5ndWFnZUlkID0gaXNOVCA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFOR1xuICAgICAgcmVzb3VyY2VJZCA9IGlzTlRcbiAgICAgICAgPyBOVF9PUklHX0xBTkdfQklCTEVcbiAgICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9MSVRFUkFMOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1bHQnIDogJ2dsdCdcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9TSU1QTElGSUVEOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1c3QnIDogJ2dzdCdcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlcG9VcmwgPSBgJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Jlc291cmNlSWR9YFxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gcmVzb3VyY2VMaW5rIHdhcyBpbnZhbGlkXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBgJHtzZXJ2ZXIgfHwgJyd9LyR7cmVwb1VybH1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2VGb3JSZXNvdXJjZUxpbmsoXG4gIHJlc291cmNlTGluazogc3RyaW5nLFxuICBzZXJ2ZXI6IHN0cmluZyxcbiAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmdcbntcbiAgY29uc3QgcmVwb1VybCA9IGdldFJlcG9VcmwocmVzb3VyY2VMaW5rLCBzZXJ2ZXIsIGlzTlQpXG4gIGNvbnN0IGVycm9yTXNnID0gZXJyb3JDb2RlICsgcmVwb1VybFxuICByZXR1cm4gZXJyb3JNc2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGNzVXJsKHVybCkge1xuICBsZXQgdmFsaWRSZXBvUGF0aCA9IGZhbHNlXG4gIGxldCB2YWxpZFVybCA9IGZhbHNlXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJ0cyA9IHVybC5zcGxpdCgnLycpXG4gICAgY29uc3QgW3Byb3RvY29sLCAsIGhvc3QsIHVzZXIsIHJlcG9dID0gcGFydHNcbiAgICB2YWxpZFVybCA9IChwcm90b2NvbCA9PT0gJ2h0dHBzOicpXG4gICAgY29uc3QgaG9zdFBhcnRzID0gaG9zdCA/IGhvc3Quc3BsaXQoJy4nKSA6IFtdXG5cbiAgICBpZiAoaG9zdFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBmb3IgKGxldCBwYXJ0IG9mIGhvc3RQYXJ0cykge1xuICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCBwcm90b2NvbCAmJiBob3N0ICYmIHVzZXIgJiYgcmVwbyApIHtcbiAgICAgIGNvbnN0IFtsYW5ndWFnZUlkLCBwcm9qZWN0SWRdID0gcmVwby5zcGxpdCgnXycpXG4gICAgICB2YWxpZFJlcG9QYXRoID0gbGFuZ3VhZ2VJZCAmJiBwcm9qZWN0SWRcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUubG9nKCdJbnZhbGlkIERDUyBVUkw6ICcgKyB1cmwpXG4gIH1cbiAgcmV0dXJuIHsgdmFsaWRVcmwsIHZhbGlkUmVwb1BhdGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCkge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IE1BTklGRVNUX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tJTlZBTElEX01BTklGRVNUX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9JTlZBTElEX0VSUk9SX01TR1xuICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdHVzW0NPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBCT09LX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGRlY29kZSByZXNvdXJjZSBzdGF0dXMgaW50byBzdHJpbmcuICBDdXJyZW50bHkgb25seSBFbmdsaXNoXG4gKiBAcGFyYW0gcmVzb3VyY2VTdGF0dXMgLSBvYmplY3QgdGhhdCBjb250YWlucyBzdGF0ZSBhbmQgZXJyb3JzIHRoYXQgYXJlIGRldGVjdGVkXG4gKiBAcGFyYW0gc2VydmVyIC0gY29udGFpbnMgdGhlIHNlcnZlciBiZWluZyB1c2VkXG4gKiBAcGFyYW0gcmVzb3VyY2VMaW5rIC0gcGF0aCB0byByZXBvIG9uIHNlcnZlclxuICogQHBhcmFtIGlzTlQgLSB0cnVlIGlmIE5UIGJvb2tcbiAqIEByZXR1cm4gZW1wdHkgc3RyaW5nIGlmIG5vIGVycm9yLCBlbHNlIHJldHVybnMgdXNlciBlcnJvciBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCwgc2VydmVyOiBzdHJpbmcsIHJlc291cmNlTGluazogc3RyaW5nLCBpc05UOiBib29sZWFuKSB7XG4gIGxldCBtZXNzYWdlID0gJydcblxuICBpZiAocmVzb3VyY2VTdGF0dXNbTE9BRElOR19TVEFURV0pIHtcbiAgICBtZXNzYWdlID0gTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBnZXRSZXNvdXJjZUVycm9yTWVzc2FnZShyZXNvdXJjZVN0YXR1cylcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKHJlc291cmNlTGluaywgc2VydmVyLCBtZXNzYWdlLCBpc05UKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGdlbmVyYXRlIHJlc291cmNlIHN0cmluZ1xuICogQHBhcmFtIG93bmVyXG4gKiBAcGFyYW0gbGFuZ3VhZ2VJZFxuICogQHBhcmFtIHByb2plY3RJZFxuICogQHBhcmFtIHJlZlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rU3BlY2lmaWMob3duZXI6IHN0cmluZywgbGFuZ3VhZ2VJZDogc3RyaW5nLCBwcm9qZWN0SWQ6IHN0cmluZywgcmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBhcGkvdjEvcmVwb3MvJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Byb2plY3RJZH0vY29udGVudHM/cmVmPSR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeE9jY3VycmVuY2Uob2NjdXJyZW5jZSkge1xuICBpZiAodHlwZW9mIG9jY3VycmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG9jY3VycmVuY2UpXG4gIH1cbiAgcmV0dXJuIG9jY3VycmVuY2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKSB7XG4gIGlmICh2ZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0c18gPSBbLi4udmVyc2VPYmplY3RzXVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB2ZXJzZU9iamVjdHNfLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3Qgdm8gPSB2ZXJzZU9iamVjdHNfW2ldXG5cbiAgICAgIGlmICh2by50eXBlID09PSAnd29yZCcgJiYgKHZvLm9jY3VycmVuY2UgfHwgdm8ub2NjdXJyZW5jZXMpKSB7XG4gICAgICAgIGNvbnN0IHdvcmQgPSB7IC4uLnZvIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZSkge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZSA9IGZpeE9jY3VycmVuY2Uodm8ub2NjdXJyZW5jZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2by5vY2N1cnJlbmNlcykge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZXMgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2VzKVxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSB3b3JkXG4gICAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2by5jaGlsZHJlbilcbiAgICAgICAgY29uc3QgbmV3Vm8gPSB7XG4gICAgICAgICAgLi4udm8sXG4gICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIH1cbiAgICAgICAgdmVyc2VPYmplY3RzX1tpXSA9IG5ld1ZvXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNfXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbi8qKlxuICogdGFrZSB0aGUgZmlsZW5hbWUgb2YgdGhlIGJvb2sgKGUuZy4gXCI1Ny1USVQudXNmbVwiKSBhbmQgcGFyc2Ugb3V0IHRoZSBib29rSWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlbmFtZVxuICogQHJldHVybiB7c3RyaW5nfSBib29rSWQgaWYgZm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZShmaWxlbmFtZSkge1xuICBjb25zdCByZWdleCA9IC9eKC4qPylcXC51c2ZtL1xuICBjb25zdCBib29rTmFtZSA9IGZpbGVuYW1lPy5tYXRjaChyZWdleCk/LlsxXVxuICByZXR1cm4gYm9va05hbWVcbn1cblxuLyoqXG4gKiBwYXJzZSB0aGUgVVNGTSB0byBmaW5kIGJvb2tJRCBpbiBoZWFkZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBiaWJsZVVzZm1cbiAqIEByZXR1cm4ge3N0cmluZ30gYm9va0lkIGlmIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQoYmlibGVVc2ZtKSB7XG4gIGNvbnN0IGlkSGVhZGVyID0gJ1xcXFxpZCAnXG4gIGNvbnN0IHBvc0lkID0gYmlibGVVc2ZtPy5pbmRleE9mKGlkSGVhZGVyKVxuXG4gIGlmIChwb3NJZCA+PSAwKSB7XG4gICAgY29uc3QgaWRTdGFydCA9IHBvc0lkICsgaWRIZWFkZXIubGVuZ3RoXG4gICAgbGV0IGhlYWRlcklkID0gYmlibGVVc2ZtPy5zdWJzdHJpbmcoIGlkU3RhcnQsIGlkU3RhcnQgKyAxMDApLnRyaW0oKVxuICAgIGxldCBoZWFkZXJCb29rSUQgPSBudWxsXG5cbiAgICBpZiAoaGVhZGVySWQ/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGhlYWRlckJvb2tJRCA9IGhlYWRlcklkPy5zcGxpdCgnICcpXG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJCb29rSUQ/LlswXS50cmltKClcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlckJvb2tJRFxuICB9XG4gIHJldHVybiBudWxsXG59XG5cbi8qKlxuICogZGV0ZXJtaW5lcyBpZiB0aGVyZSBhcmUgYW55IHdvcmRzIGluIHZlcnNlT2JqZWN0c1xuICogQHBhcmFtIHtWZXJzZU9iamVjdHNUeXBlfSB2ZXJzZU9iamVjdHMgLSBhcnJheSBvZiB2ZXJzZU9iamVjdHMgdG8gc2VhcmNoIGZvciB3b3Jkc1xuICogQHJldHVybiB7Ym9vbGVhbn0gdHJ1ZSBpZiB3b3JkIGlzIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB2ZXJzZU9iamVjdHNIYXZlV29yZHModmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlKSB7XG4gIGlmICh2ZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgIGZvciAoY29uc3Qgdm8gb2YgdmVyc2VPYmplY3RzKSB7XG4gICAgICBpZiAodm8udHlwZSA9PT0gJ3dvcmQnKSB7XG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGZvdW5kV29yZHMgPSB2ZXJzZU9iamVjdHNIYXZlV29yZHModm8uY2hpbGRyZW4pXG5cbiAgICAgICAgaWYgKGZvdW5kV29yZHMpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBmYWxzZVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUNFQSx1QkFBdUIsRUFDdkJDLHNCQUFzQixFQUN0QkMsYUFBYSxFQUNiQyx5QkFBeUIsRUFDekJDLDBCQUEwQixRQUNyQix1QkFBdUI7QUFDOUIsU0FDRUMsd0JBQXdCLEVBQ3hCQyxnQkFBZ0IsRUFDaEJDLDBCQUEwQixFQUMxQkMsNEJBQTRCLEVBQzVCQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsZUFBZSxFQUNmQyxZQUFZLEVBQ1pDLGtCQUFrQixFQUNsQkMsNkJBQTZCLEVBQzdCQyxjQUFjLEVBQ2RDLGlCQUFpQixRQUNaLFVBQVU7QUFDakIsU0FBUUMsZ0JBQWdCLFFBQU8sVUFBVTtBQUV6QyxPQUFPLElBQU1DLG9CQUFvQixHQUFHLElBQUksRUFBQzs7QUFFekMsT0FBTyxTQUFTQyxlQUFlQSxDQUFDQyxTQUFTLEVBQUU7RUFDekMsSUFBTUMsR0FBRyxHQUFHRCxTQUFTLENBQUNDLEdBQUcsSUFBSUQsU0FBUyxDQUFDRSxNQUFNO0VBQzdDLFVBQUFDLE1BQUEsQ0FBVUgsU0FBUyxDQUFDSSxLQUFLLE9BQUFELE1BQUEsQ0FBSUgsU0FBUyxDQUFDSyxVQUFVLE9BQUFGLE1BQUEsQ0FBSUgsU0FBUyxDQUFDTSxVQUFVLE9BQUFILE1BQUEsQ0FBSUYsR0FBRztBQUNsRjtBQUVBLE9BQU8sU0FBU00saUJBQWlCQSxDQUFDQyxZQUFZLEVBQUU7RUFDOUMsSUFBQUMsbUJBQUEsR0FBNkNELFlBQVksQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQztJQUFBQyxvQkFBQSxHQUFBQyxjQUFBLENBQUFILG1CQUFBO0lBQTdETCxLQUFLLEdBQUFPLG9CQUFBO0lBQUVOLFVBQVUs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
468
+
469
+ /**
470
+ * extract just the alignments from verseObjects
471
+ * @param {VerseObjectsType} verseObjects
472
+ * @returns {VerseObjectsType} - just alignments
473
+ */
474
+ export function getAlignments(verseObjects) {
475
+ var alignmentsList = verseObjects.filter(function (vo) {
476
+ return vo.tag === 'zaln';
477
+ });
478
+
479
+ // remove endTag
480
+ for (var i = 0; i < alignmentsList.length; i++) {
481
+ var alignment = alignmentsList[i];
482
+ if (alignment.endTag) {
483
+ var _alignment = _objectSpread({}, alignment);
484
+ delete _alignment.endTag;
485
+ alignmentsList[i] = _alignment;
486
+ }
487
+ }
488
+ return alignmentsList;
489
+ }
490
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIlZlcnNlT2JqZWN0c1R5cGUiLCJESVNBQkxFX1dPUkRfUE9QT1ZFUiIsImdldFJlc291cmNlTGluayIsInNjcmlwdHVyZSIsInJlZiIsImJyYW5jaCIsImNvbmNhdCIsIm93bmVyIiwibGFuZ3VhZ2VJZCIsInJlc291cmNlSWQiLCJwYXJzZVJlc291cmNlTGluayIsInJlc291cmNlTGluayIsIl9yZXNvdXJjZUxpbmskc3BsaXQiLCJzcGxpdCIsIl9yZXNvdXJjZUxpbmskc3BsaXQyIiwiX3NsaWNlZFRvQXJyYXkiLCJnZXRTY3JpcHR1cmVPYmplY3QiLCJfcmVmIiwidGl0bGUiLCJzZXJ2ZXIiLCJkaXNhYmxlV29yZFBvcG92ZXIiLCJvcmlnaW5hbExhbmd1YWdlT3duZXIiLCJnZXRWZXJzZURhdGFGcm9tU2NyaXBDb25maWciLCJzY3JpcHR1cmVDb25maWciLCJ2ZXJzZU51bSIsIl9zY3JpcHR1cmVDb25maWckdmVycyIsInZlcnNlc0ZvclJlZiIsImZpbmQiLCJ2ZXJzZVJlZiIsInZlcnNlIiwiaXNPcmlnaW5hbEJpYmxlIiwiaXNPcmlnIiwiY2xlYW51cEFjY291bnRTZXR0aW5ncyIsInNjcmlwdHVyZVNldHRpbmdzIiwiY3VycmVudE93bmVyIiwiY3VycmVudExhbmd1YWdlSWQiLCJzcGxpdFVybCIsIm9yaWdpbmFsUmVwb1VybCIsInVybCIsIlVSTCIsIm9yaWdpbiIsInBhdGhuYW1lIiwic2VhcmNoIiwiZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyIsImJvb2tJZCIsInNjcmlwdHVyZVNldHRpbmdzXyIsImlzTmV3VGVzdGFtZW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiX29iamVjdFNwcmVhZCIsIl9zcGxpdFVybCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsIl9yZWYyIiwibGFiZWwiLCJzZXRTY3JpcHR1cmUiLCJzY3JpcHR1cmVWZXJzaW9uSGlzdCIsImhpc3RvcnkiLCJnZXRMYXRlc3QiLCJpbmRleCIsImZpbmRJdGVtSW5kZXhCeUtleSIsInNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnIiwib3B0aW9ucyIsImN1cnJlbnQiLCJhbGxvd1VzZXJJbnB1dCIsIm9uQ2hhbmdlIiwidmFsaWRhdGlvbkNCIiwiaXRlbSIsIm5ld0l0ZW0iLCJhZGRJdGVtVG9IaXN0b3J5IiwiZ2V0SXRlbUJ5VGl0bGUiLCJkZWxldGVJdGVtIiwiZGVsZXRlSW5kZXgiLCJyZW1vdmVJdGVtQnlJbmRleCIsImdldFJlcG9VcmwiLCJpc05UIiwicmVwb1VybCIsIl9yZXNvdXJjZUxpbmskc3BsaXQzIiwiX3Jlc291cmNlTGluayRzcGxpdDQiLCJlIiwiZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rIiwiZXJyb3JDb2RlIiwiZXJyb3JNc2ciLCJ2YWxpZGF0ZURjc1VybCIsInZhbGlkUmVwb1BhdGgiLCJ2YWxpZFVybCIsInBhcnRzIiwiX3BhcnRzIiwicHJvdG9jb2wiLCJob3N0IiwidXNlciIsInJlcG8iLCJob3N0UGFydHMiLCJfaXRlcmF0b3IiLCJfY3JlYXRlRm9yT2ZJdGVyYXRvckhlbHBlciIsIl9zdGVwIiwicyIsIm4iLCJkb25lIiwicGFydCIsInZhbHVlIiwiZXJyIiwiZiIsIl9yZXBvJHNwbGl0IiwiX3JlcG8kc3BsaXQyIiwicHJvamVjdElkIiwiX3VudXNlZCIsImNvbnNvbGUiLCJsb2ciLCJnZXRSZXNvdXJjZUVycm9yTWVzc2FnZSIsInJlc291cmNlU3RhdHVzIiwibWVzc2FnZSIsImdldFJlc291cmNlTWVzc2FnZSIsImdldFJlc291cmNlTGlua1NwZWNpZmljIiwiZml4T2NjdXJyZW5jZSIsIm9jY3VycmVuY2UiLCJwYXJzZUludCIsImNsZWFudXBWZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHMiLCJ2ZXJzZU9iamVjdHNfIiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiaSIsImwiLCJ2byIsInR5cGUiLCJvY2N1cnJlbmNlcyIsIndvcmQiLCJjaGlsZHJlbiIsIm5ld1ZvIiwiZ2V0Qm9va05hbWVGcm9tVXNmbUZpbGVOYW1lIiwiZmlsZW5hbWUiLCJfZmlsZW5hbWUkbWF0Y2giLCJyZWdleCIsImJvb2tOYW1lIiwibWF0Y2giLCJnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQiLCJiaWJsZVVzZm0iLCJpZEhlYWRlciIsInBvc0lkIiwiaW5kZXhPZiIsImlkU3RhcnQiLCJoZWFkZXJJZCIsInN1YnN0cmluZyIsInRyaW0iLCJoZWFkZXJCb29rSUQiLCJfaGVhZGVyQm9va0lEIiwidmVyc2VPYmplY3RzSGF2ZVdvcmRzIiwiX2l0ZXJhdG9yMiIsIl9zdGVwMiIsImZvdW5kV29yZHMiLCJnZXRBbGlnbm1lbnRzIiwiYWxpZ25tZW50c0xpc3QiLCJmaWx0ZXIiLCJ0YWciLCJhbGlnbm1lbnQiLCJlbmRUYWciLCJfYWxpZ25tZW50Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1NjcmlwdHVyZVNldHRpbmdzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SLFxuICBJTlZBTElEX01BTklGRVNUX0VSUk9SLFxuICBMT0FESU5HX1NUQVRFLFxuICBNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SLFxuICBTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUixcbn0gZnJvbSAndHJhbnNsYXRpb24taGVscHMtcmNsJ1xuaW1wb3J0IHtcbiAgQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBMT0FESU5HX1JFU09VUkNFLFxuICBNQU5JRkVTVF9JTlZBTElEX0VSUk9SX01TRyxcbiAgTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyxcbiAgTlRfT1JJR19MQU5HLFxuICBOVF9PUklHX0xBTkdfQklCTEUsXG4gIE9SSUdJTkFMX1NPVVJDRSxcbiAgT1RfT1JJR19MQU5HLFxuICBPVF9PUklHX0xBTkdfQklCTEUsXG4gIFNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBUQVJHRVRfTElURVJBTCxcbiAgVEFSR0VUX1NJTVBMSUZJRUQsXG59IGZyb20gJy4vY29tbW9uJ1xuaW1wb3J0IHtWZXJzZU9iamVjdHNUeXBlfSBmcm9tICcuLi90eXBlcyc7XG5cbmV4cG9ydCBjb25zdCBESVNBQkxFX1dPUkRfUE9QT1ZFUiA9IHRydWUgLy8gZGlzYWJsZSB3b3JkIHBvcG92ZXIgZm9yIGV2ZXJ5IHNjcmlwdHVyZSBwYW5lIGJ1dCBvcmlnaW5hbCBsYW5ndWFnZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGluayhzY3JpcHR1cmUpIHtcbiAgY29uc3QgcmVmID0gc2NyaXB0dXJlLnJlZiB8fCBzY3JpcHR1cmUuYnJhbmNoXG4gIHJldHVybiBgJHtzY3JpcHR1cmUub3duZXJ9LyR7c2NyaXB0dXJlLmxhbmd1YWdlSWR9LyR7c2NyaXB0dXJlLnJlc291cmNlSWR9LyR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlUmVzb3VyY2VMaW5rKHJlc291cmNlTGluaykge1xuICBjb25zdCBbb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWQsIHJlZl0gPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuICByZXR1cm4ge1xuICAgIG93bmVyLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICByZWYsXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZU9iamVjdCh7XG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIG93bmVyLFxuICByZWYsXG4gIGxhbmd1YWdlSWQsXG4gIHJlc291cmNlSWQsXG4gIHJlc291cmNlTGluayxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG59KSB7XG4gIGNvbnN0IHNjcmlwdHVyZSA9IHtcbiAgICB0aXRsZSxcbiAgICBzZXJ2ZXIsXG4gICAgb3duZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIHJlc291cmNlTGluayxcbiAgfVxuXG4gIGlmICghcmVzb3VyY2VMaW5rKSB7XG4gICAgc2NyaXB0dXJlLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICBvd25lcixcbiAgICAgIHJlZixcbiAgICAgIGxhbmd1YWdlSWQsXG4gICAgICByZXNvdXJjZUlkLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVxufVxuXG4vKipcbiAqIHJldHVybiB2ZXJzZSBkYXRhIGdpdmVuIGEgc2NyaXB0dXJlIGNvbmZpZyBhbmQgdmVyc2UgbnVtYmVyXG4gKiBAcGFyYW0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0gdmVyc2VOdW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlRGF0YUZyb21TY3JpcENvbmZpZyhzY3JpcHR1cmVDb25maWcsIHZlcnNlTnVtKSB7XG4gIHJldHVybiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uZmluZChcbiAgICB2ZXJzZVJlZiA9PiB2ZXJzZVJlZi52ZXJzZSA9PT0gdmVyc2VOdW1cbiAgKVxufVxuXG4vKipcbiAqIHJldHVybiB0cnVlIGlmIHJlc291cmNlIGlzIGFuIG9yaWdpbmFsIGxhbmd1YWdlIGJpYmxlXG4gKiBAcGFyYW0gcmVzb3VyY2VJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcmlnaW5hbEJpYmxlKHJlc291cmNlSWQpIHtcbiAgY29uc3QgaXNPcmlnID0gKChyZXNvdXJjZUlkID09PSBOVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpKVxuICByZXR1cm4gaXNPcmlnXG59XG5cbi8qKlxuICogbWFrZSBzdXJlIHNjcmlwdHVyZVNldHRpbmdzIGFyZSB1cCB0byBkYXRlIHdpdGggY3VycmVudCBvd25lciBhbmQgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVTZXR0aW5nc1xuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRPd25lciAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgb3duZXIgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudExhbmd1YWdlSWQgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIGxhbmd1YWdlIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5nczogYW55LCBjdXJyZW50T3duZXI6IGFueSwgY3VycmVudExhbmd1YWdlSWQ6IGFueSkge1xuICBpZiAoY3VycmVudE93bmVyICYmIChjdXJyZW50T3duZXIgIT09IHNjcmlwdHVyZVNldHRpbmdzLm93bmVyKSkgeyAvLyBpZiBvd25lciBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5vd25lciA9IGN1cnJlbnRPd25lclxuICB9XG5cbiAgaWYgKGN1cnJlbnRMYW5ndWFnZUlkICYmIChjdXJyZW50TGFuZ3VhZ2VJZCAhPT0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCkpIHsgLy8gaWYgbGFuZ3VhZ2UgY2hhbmdlZCwgdXBkYXRlIHNjcmlwdHVyZVNldHRpbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGN1cnJlbnRMYW5ndWFnZUlkXG4gIH1cbn1cblxuLyoqXG4gKiBzZXBhcmF0ZSBVUkwgaW50byBzZXJ2ZXIgYW5kIHJlc291cmNlIGxpbmtcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFJlcG9VcmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VXJsKG9yaWdpbmFsUmVwb1VybCkge1xuICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChvcmlnaW5hbFJlcG9VcmwpXG4gICAgY29uc3Qgc2VydmVyID0gdXJsLm9yaWdpblxuICAgIGNvbnN0IHJlc291cmNlTGluayA9IHVybC5wYXRobmFtZSArICh1cmwuc2VhcmNoIHx8ICcnKVxuICAgIHJldHVybiB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH1cbiAgfVxuICByZXR1cm4ge31cbn1cblxuLyoqXG4gKiBnZXQgdGhlIHNjcmlwdHVyZSBzZXR0aW5ncyBuZWVkZWQgZm9yIGZldGNoIC0gZm9yIE9yaWdMYW5nLCBVTFQsIEdMVCB3aWxsIHJlcGxhY2Ugb3duZXIgYW5kIGxhbmd1YWdlSWQgd2l0aCBjb3JyZWN0IHZhbHVlc1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzX1xuICogQHBhcmFtIHtib29sZWFufSBpc05ld1Rlc3RhbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybCAtIG9wdGlvbmFsIHBhdGggdG8gcmVwbyBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gIGJvb2tJZCwgc2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxSZXBvVXJsPW51bGwsXG4gIGN1cnJlbnRMYW5ndWFnZUlkPW51bGwsXG4gIGN1cnJlbnRPd25lcj1udWxsLFxuKSB7XG4gIGNvbnN0IHNjcmlwdHVyZVNldHRpbmdzID0geyAuLi5zY3JpcHR1cmVTZXR0aW5nc18gfVxuICBzY3JpcHR1cmVTZXR0aW5ncy5kaXNhYmxlV29yZFBvcG92ZXIgPSBESVNBQkxFX1dPUkRfUE9QT1ZFUlxuICBjb25zdCByZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3NfLnJlc291cmNlSWRcblxuICBpZiAocmVzb3VyY2VJZCA9PT0gT1JJR0lOQUxfU09VUkNFKSB7XG4gICAgLy8gc2VsZWN0IG9yaWdpbmFsIGxhbmd1YWdlIEJpYmxlIGJhc2VkIG9uIHdoaWNoIHRlc3RhbWVudCB0aGUgYm9vayBiZWxvbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGlzTmV3VGVzdGFtZW50ID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IGlzTmV3VGVzdGFtZW50XG4gICAgICA/IE5UX09SSUdfTEFOR19CSUJMRVxuICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcblxuICAgIGlmIChzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXIpIHtcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gc2NyaXB0dXJlU2V0dGluZ3Mub3JpZ2luYWxMYW5ndWFnZU93bmVyXG4gICAgfVxuXG4gICAgaWYgKG9yaWdpbmFsUmVwb1VybCkgeyAvLyB1c2UgdGhpcyB1cmwgaWYgZGVmaW5lZFxuICAgICAgY29uc3QgeyBzZXJ2ZXIsIHJlc291cmNlTGluayB9ID0gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKVxuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Muc2VydmVyID0gc2VydmVyXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSByZXNvdXJjZUxpbmtcbiAgICB9IGVsc2UgeyAvLyBmYWxsIGJhY2sgdG8gYXBwIGRlZmF1bHRzXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gICAgfVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IGZhbHNlXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VJZCA9PT0gVEFSR0VUX0xJVEVSQUwpIHtcbiAgICBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzLCBjdXJyZW50T3duZXIsIGN1cnJlbnRMYW5ndWFnZUlkKVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID09PSAnZW4nID8gJ3VsdCcgOiAnZ2x0J1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfU0lNUExJRklFRCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndXN0JyA6ICdnc3QnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9XG4gIHJldHVybiBzY3JpcHR1cmVTZXR0aW5nc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgbGFiZWwsXG4gIHJlc291cmNlTGluayxcbiAgc2V0U2NyaXB0dXJlLFxuICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbn0pIHtcbiAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gIGxldCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAncmVzb3VyY2VMaW5rJywgcmVzb3VyY2VMaW5rKVxuXG4gIGNvbnN0IHNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnID0ge1xuICAgIGxhYmVsLCAvLyBsYWJlbCBmb3IgY29tYm9ib3hcbiAgICBvcHRpb25zOiBoaXN0b3J5LFxuICAgIGN1cnJlbnQ6IGluZGV4LFxuICAgIGFsbG93VXNlcklucHV0OiB0cnVlLFxuICAgIG9uQ2hhbmdlOiAodGl0bGUsIGluZGV4LCB2YWxpZGF0aW9uQ0I9bnVsbCkgPT4ge1xuICAgICAgbGV0IGl0ZW1cblxuICAgICAgaWYgKChpbmRleCA8IDApICYmIHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgICAgdXJsOiB0aXRsZSxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmFkZEl0ZW1Ub0hpc3RvcnkobmV3SXRlbSlcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIGl0ZW0gPSBzY3JpcHR1cmVWZXJzaW9uSGlzdC5nZXRMYXRlc3QoKVtpbmRleF1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldEl0ZW1CeVRpdGxlKHRpdGxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBzZXRTY3JpcHR1cmUoaXRlbSwgdmFsaWRhdGlvbkNCKVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlSXRlbTogdGl0bGUgPT4ge1xuICAgICAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gICAgICBjb25zdCBkZWxldGVJbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAndGl0bGUnLCB0aXRsZSlcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnJlbW92ZUl0ZW1CeUluZGV4KGRlbGV0ZUluZGV4KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gc2NyaXB0dXJlU2VsZWN0b3JDb25maWdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcG9VcmwocmVzb3VyY2VMaW5rOiBzdHJpbmcsIHNlcnZlcjogc3RyaW5nLCBpc05UOiBib29sZWFuKTogc3RyaW5nIHtcbiAgbGV0IHJlcG9VcmxcblxuICB0cnkge1xuICAgIGxldCBbb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdID0gcmVzb3VyY2VMaW5rLnNwbGl0KCcvJylcblxuICAgIHN3aXRjaCAocmVzb3VyY2VJZCkge1xuICAgIGNhc2UgT1JJR0lOQUxfU09VUkNFOlxuICAgICAgbGFuZ3VhZ2VJZCA9IGlzTlQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICAgIHJlc291cmNlSWQgPSBpc05UXG4gICAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICAgIDogT1RfT1JJR19MQU5HX0JJQkxFXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfTElURVJBTDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndWx0JyA6ICdnbHQnXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfU0lNUExJRklFRDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndXN0JyA6ICdnc3QnXG4gICAgICBicmVha1xuICAgIH1cbiAgICByZXBvVXJsID0gYCR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtyZXNvdXJjZUlkfWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHJlc291cmNlTGluayB3YXMgaW52YWxpZFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gYCR7c2VydmVyIHx8ICcnfS8ke3JlcG9Vcmx9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKFxuICByZXNvdXJjZUxpbms6IHN0cmluZyxcbiAgc2VydmVyOiBzdHJpbmcsXG4gIGVycm9yQ29kZTogc3RyaW5nLFxuICBpc05UOiBib29sZWFuKTogc3RyaW5nXG57XG4gIGNvbnN0IHJlcG9VcmwgPSBnZXRSZXBvVXJsKHJlc291cmNlTGluaywgc2VydmVyLCBpc05UKVxuICBjb25zdCBlcnJvck1zZyA9IGVycm9yQ29kZSArIHJlcG9VcmxcbiAgcmV0dXJuIGVycm9yTXNnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURjc1VybCh1cmwpIHtcbiAgbGV0IHZhbGlkUmVwb1BhdGggPSBmYWxzZVxuICBsZXQgdmFsaWRVcmwgPSBmYWxzZVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFydHMgPSB1cmwuc3BsaXQoJy8nKVxuICAgIGNvbnN0IFtwcm90b2NvbCwgLCBob3N0LCB1c2VyLCByZXBvXSA9IHBhcnRzXG4gICAgdmFsaWRVcmwgPSAocHJvdG9jb2wgPT09ICdodHRwczonKVxuICAgIGNvbnN0IGhvc3RQYXJ0cyA9IGhvc3QgPyBob3N0LnNwbGl0KCcuJykgOiBbXVxuXG4gICAgaWYgKGhvc3RQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgZm9yIChsZXQgcGFydCBvZiBob3N0UGFydHMpIHtcbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICggcHJvdG9jb2wgJiYgaG9zdCAmJiB1c2VyICYmIHJlcG8gKSB7XG4gICAgICBjb25zdCBbbGFuZ3VhZ2VJZCwgcHJvamVjdElkXSA9IHJlcG8uc3BsaXQoJ18nKVxuICAgICAgdmFsaWRSZXBvUGF0aCA9IGxhbmd1YWdlSWQgJiYgcHJvamVjdElkXG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmxvZygnSW52YWxpZCBEQ1MgVVJMOiAnICsgdXJsKVxuICB9XG4gIHJldHVybiB7IHZhbGlkVXJsLCB2YWxpZFJlcG9QYXRoIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRXJyb3JNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QpIHtcbiAgbGV0IG1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChyZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gTUFOSUZFU1RfSU5WQUxJRF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tDT05URU5UX05PVF9GT1VORF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IFNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBkZWNvZGUgcmVzb3VyY2Ugc3RhdHVzIGludG8gc3RyaW5nLiAgQ3VycmVudGx5IG9ubHkgRW5nbGlzaFxuICogQHBhcmFtIHJlc291cmNlU3RhdHVzIC0gb2JqZWN0IHRoYXQgY29udGFpbnMgc3RhdGUgYW5kIGVycm9ycyB0aGF0IGFyZSBkZXRlY3RlZFxuICogQHBhcmFtIHNlcnZlciAtIGNvbnRhaW5zIHRoZSBzZXJ2ZXIgYmVpbmcgdXNlZFxuICogQHBhcmFtIHJlc291cmNlTGluayAtIHBhdGggdG8gcmVwbyBvbiBzZXJ2ZXJcbiAqIEBwYXJhbSBpc05UIC0gdHJ1ZSBpZiBOVCBib29rXG4gKiBAcmV0dXJuIGVtcHR5IHN0cmluZyBpZiBubyBlcnJvciwgZWxzZSByZXR1cm5zIHVzZXIgZXJyb3IgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QsIHNlcnZlcjogc3RyaW5nLCByZXNvdXJjZUxpbms6IHN0cmluZywgaXNOVDogYm9vbGVhbikge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW0xPQURJTkdfU1RBVEVdKSB7XG4gICAgbWVzc2FnZSA9IExPQURJTkdfUkVTT1VSQ0VcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXMpXG5cbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUZvclJlc291cmNlTGluayhyZXNvdXJjZUxpbmssIHNlcnZlciwgbWVzc2FnZSwgaXNOVClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBnZW5lcmF0ZSByZXNvdXJjZSBzdHJpbmdcbiAqIEBwYXJhbSBvd25lclxuICogQHBhcmFtIGxhbmd1YWdlSWRcbiAqIEBwYXJhbSBwcm9qZWN0SWRcbiAqIEBwYXJhbSByZWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGlua1NwZWNpZmljKG93bmVyOiBzdHJpbmcsIGxhbmd1YWdlSWQ6IHN0cmluZywgcHJvamVjdElkOiBzdHJpbmcsIHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiBgYXBpL3YxL3JlcG9zLyR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtwcm9qZWN0SWR9L2NvbnRlbnRzP3JlZj0ke3JlZn1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhPY2N1cnJlbmNlKG9jY3VycmVuY2UpIHtcbiAgaWYgKHR5cGVvZiBvY2N1cnJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUludChvY2N1cnJlbmNlKVxuICB9XG4gIHJldHVybiBvY2N1cnJlbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cykge1xuICBpZiAodmVyc2VPYmplY3RzPy5sZW5ndGgpIHtcbiAgICBjb25zdCB2ZXJzZU9iamVjdHNfID0gWy4uLnZlcnNlT2JqZWN0c11cblxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdmVyc2VPYmplY3RzXy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZvID0gdmVyc2VPYmplY3RzX1tpXVxuXG4gICAgICBpZiAodm8udHlwZSA9PT0gJ3dvcmQnICYmICh2by5vY2N1cnJlbmNlIHx8IHZvLm9jY3VycmVuY2VzKSkge1xuICAgICAgICBjb25zdCB3b3JkID0geyAuLi52byB9XG5cbiAgICAgICAgaWYgKHZvLm9jY3VycmVuY2UpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2UgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2UpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZXMpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2VzID0gZml4T2NjdXJyZW5jZSh2by5vY2N1cnJlbmNlcylcbiAgICAgICAgfVxuICAgICAgICB2ZXJzZU9iamVjdHNfW2ldID0gd29yZFxuICAgICAgfSBlbHNlIGlmICh2by5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNsZWFudXBWZXJzZU9iamVjdHModm8uY2hpbGRyZW4pXG4gICAgICAgIGNvbnN0IG5ld1ZvID0ge1xuICAgICAgICAgIC4uLnZvLFxuICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSBuZXdWb1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzX1xuICB9XG4gIHJldHVybiBbXVxufVxuXG4vKipcbiAqIHRha2UgdGhlIGZpbGVuYW1lIG9mIHRoZSBib29rIChlLmcuIFwiNTctVElULnVzZm1cIikgYW5kIHBhcnNlIG91dCB0aGUgYm9va0lkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWVcbiAqIEByZXR1cm4ge3N0cmluZ30gYm9va0lkIGlmIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS9cbiAgY29uc3QgYm9va05hbWUgPSBmaWxlbmFtZT8ubWF0Y2gocmVnZXgpPy5bMV1cbiAgcmV0dXJuIGJvb2tOYW1lXG59XG5cbi8qKlxuICogcGFyc2UgdGhlIFVTRk0gdG8gZmluZCBib29rSUQgaW4gaGVhZGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGJvb2tJZCBpZiBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmlibGVJZEZyb21Vc2ZtQ29udGVudElEKGJpYmxlVXNmbSkge1xuICBjb25zdCBpZEhlYWRlciA9ICdcXFxcaWQgJ1xuICBjb25zdCBwb3NJZCA9IGJpYmxlVXNmbT8uaW5kZXhPZihpZEhlYWRlcilcblxuICBpZiAocG9zSWQgPj0gMCkge1xuICAgIGNvbnN0IGlkU3RhcnQgPSBwb3NJZCArIGlkSGVhZGVyLmxlbmd0aFxuICAgIGxldCBoZWFkZXJJZCA9IGJpYmxlVXNmbT8uc3Vic3RyaW5nKCBpZFN0YXJ0LCBpZFN0YXJ0ICsgMTAwKS50cmltKClcbiAgICBsZXQgaGVhZGVyQm9va0lEID0gbnVsbFxuXG4gICAgaWYgKGhlYWRlcklkPy5sZW5ndGggPiAxKSB7XG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJJZD8uc3BsaXQoJyAnKVxuICAgICAgaGVhZGVyQm9va0lEID0gaGVhZGVyQm9va0lEPy5bMF0udHJpbSgpXG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJCb29rSURcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuXG4vKipcbiAqIGRldGVybWluZXMgaWYgdGhlcmUgYXJlIGFueSB3b3JkcyBpbiB2ZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdmVyc2VPYmplY3RzIC0gYXJyYXkgb2YgdmVyc2VPYmplY3RzIHRvIHNlYXJjaCBmb3Igd29yZHNcbiAqIEByZXR1cm4ge2Jvb2xlYW59IHRydWUgaWYgd29yZCBpcyBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZlcnNlT2JqZWN0czogVmVyc2VPYmplY3RzVHlwZSkge1xuICBpZiAodmVyc2VPYmplY3RzPy5sZW5ndGgpIHtcbiAgICBmb3IgKGNvbnN0IHZvIG9mIHZlcnNlT2JqZWN0cykge1xuICAgICAgaWYgKHZvLnR5cGUgPT09ICd3b3JkJykge1xuICAgICAgICByZXR1cm4gdHJ1ZVxuICAgICAgfSBlbHNlIGlmICh2by5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBmb3VuZFdvcmRzID0gdmVyc2VPYmplY3RzSGF2ZVdvcmRzKHZvLmNoaWxkcmVuKVxuXG4gICAgICAgIGlmIChmb3VuZFdvcmRzKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWVcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZmFsc2Vcbn1cblxuLyoqXG4gKiBleHRyYWN0IGp1c3QgdGhlIGFsaWdubWVudHMgZnJvbSB2ZXJzZU9iamVjdHNcbiAqIEBwYXJhbSB7VmVyc2VPYmplY3RzVHlwZX0gdmVyc2VPYmplY3RzXG4gKiBAcmV0dXJucyB7VmVyc2VPYmplY3RzVHlwZX0gLSBqdXN0IGFsaWdubWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEFsaWdubWVudHModmVyc2VPYmplY3RzOiBWZXJzZU9iamVjdHNUeXBlKTpWZXJzZU9iamVjdHNUeXBlIHtcbiAgY29uc3QgYWxpZ25tZW50c0xpc3QgPSB2ZXJzZU9iamVjdHMuZmlsdGVyKHZvID0+IHZvLnRhZyA9PT0gJ3phbG4nKVxuXG4gIC8vIHJlbW92ZSBlbmRUYWdcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhbGlnbm1lbnRzTGlzdC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGFsaWdubWVudCA9IGFsaWdubWVudHNMaXN0W2ldXG5cbiAgICBpZiAoYWxpZ25tZW50LmVuZFRhZykge1xuICAgICAgY29uc3QgX2FsaWdubWVudCA9IHsgLi4uYWxpZ25tZW50IH1cbiAgICAgIGRlbGV0ZSBfYWxpZ25tZW50LmVuZFRhZ1xuICAgICAgYWxpZ25tZW50c0xpc3RbaV0gPSBfYWxpZ25tZW50XG4gICAgfVxuICB9XG4gIHJldHVybiBhbGlnbm1lbnRzTGlzdFxufVxuXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQ0VBLHVCQUF1QixFQUN2QkMsc0JBQXNC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
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "single-scripture-rcl",
3
3
  "description": "A React Component Library for Rendering a Single Scripture Resource.",
4
- "version": "3.4.13-beta.55",
4
+ "version": "3.4.14-beta.9",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"