single-scripture-rcl 3.4.7-beta.39 → 3.4.7

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.
@@ -424,6 +424,12 @@ export function cleanupVerseObjects(verseObjects) {
424
424
 
425
425
  return [];
426
426
  }
427
+ /**
428
+ * take the filename of the book (e.g. "57-TIT.usfm") and parse out the bookId
429
+ * @param {string} filename
430
+ * @return {string} bookId if found
431
+ */
432
+
427
433
  export function getBookNameFromUsfmFileName(filename) {
428
434
  var _filename$match;
429
435
 
@@ -431,6 +437,12 @@ export function getBookNameFromUsfmFileName(filename) {
431
437
  var bookName = filename === null || filename === void 0 ? void 0 : (_filename$match = filename.match(regex)) === null || _filename$match === void 0 ? void 0 : _filename$match[1];
432
438
  return bookName;
433
439
  }
440
+ /**
441
+ * parse the USFM to find bookID in header
442
+ * @param {string} bibleUsfm
443
+ * @return {string} bookId if found
444
+ */
445
+
434
446
  export function getBibleIdFromUsfmContentID(bibleUsfm) {
435
447
  var idHeader = '\\id ';
436
448
  var posId = bibleUsfm === null || bibleUsfm === void 0 ? void 0 : bibleUsfm.indexOf(idHeader);
@@ -452,4 +464,4 @@ export function getBibleIdFromUsfmContentID(bibleUsfm) {
452
464
 
453
465
  return null;
454
466
  }
455
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9TY3JpcHR1cmVTZXR0aW5ncy50cyJdLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIkRJU0FCTEVfV09SRF9QT1BPVkVSIiwiZ2V0UmVzb3VyY2VMaW5rIiwic2NyaXB0dXJlIiwicmVmIiwiYnJhbmNoIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsImdldFNjcmlwdHVyZU9iamVjdCIsInRpdGxlIiwic2VydmVyIiwicmVzb3VyY2VMaW5rIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0VmVyc2VEYXRhRnJvbVNjcmlwQ29uZmlnIiwic2NyaXB0dXJlQ29uZmlnIiwidmVyc2VOdW0iLCJ2ZXJzZXNGb3JSZWYiLCJmaW5kIiwidmVyc2VSZWYiLCJ2ZXJzZSIsImlzT3JpZ2luYWxCaWJsZSIsImlzT3JpZyIsImNsZWFudXBBY2NvdW50U2V0dGluZ3MiLCJzY3JpcHR1cmVTZXR0aW5ncyIsImN1cnJlbnRPd25lciIsImN1cnJlbnRMYW5ndWFnZUlkIiwic3BsaXRVcmwiLCJvcmlnaW5hbFJlcG9VcmwiLCJ1cmwiLCJVUkwiLCJvcmlnaW4iLCJwYXRobmFtZSIsInNlYXJjaCIsImdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MiLCJib29rSWQiLCJzY3JpcHR1cmVTZXR0aW5nc18iLCJpc05ld1Rlc3RhbWVudCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImxhYmVsIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJoaXN0b3J5IiwiZ2V0TGF0ZXN0IiwiaW5kZXgiLCJmaW5kSXRlbUluZGV4QnlLZXkiLCJzY3JpcHR1cmVTZWxlY3RvckNvbmZpZyIsIm9wdGlvbnMiLCJjdXJyZW50IiwiYWxsb3dVc2VySW5wdXQiLCJvbkNoYW5nZSIsInZhbGlkYXRpb25DQiIsIml0ZW0iLCJuZXdJdGVtIiwiYWRkSXRlbVRvSGlzdG9yeSIsImdldEl0ZW1CeVRpdGxlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZUluZGV4IiwicmVtb3ZlSXRlbUJ5SW5kZXgiLCJnZXRSZXBvVXJsIiwiaXNOVCIsInJlcG9VcmwiLCJzcGxpdCIsImUiLCJnZXRFcnJvck1lc3NhZ2VGb3JSZXNvdXJjZUxpbmsiLCJlcnJvckNvZGUiLCJlcnJvck1zZyIsInZhbGlkYXRlRGNzVXJsIiwidmFsaWRSZXBvUGF0aCIsInZhbGlkVXJsIiwicGFydHMiLCJwcm90b2NvbCIsImhvc3QiLCJ1c2VyIiwicmVwbyIsImhvc3RQYXJ0cyIsImxlbmd0aCIsInBhcnQiLCJwcm9qZWN0SWQiLCJjb25zb2xlIiwibG9nIiwiZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJnZXRSZXNvdXJjZUxpbmtTcGVjaWZpYyIsImZpeE9jY3VycmVuY2UiLCJvY2N1cnJlbmNlIiwicGFyc2VJbnQiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzXyIsImkiLCJsIiwidm8iLCJ0eXBlIiwib2NjdXJyZW5jZXMiLCJ3b3JkIiwiY2hpbGRyZW4iLCJuZXdWbyIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImZpbGVuYW1lIiwicmVnZXgiLCJib29rTmFtZSIsIm1hdGNoIiwiZ2V0QmlibGVJZEZyb21Vc2ZtQ29udGVudElEIiwiYmlibGVVc2ZtIiwiaWRIZWFkZXIiLCJwb3NJZCIsImluZGV4T2YiLCJpZFN0YXJ0IiwiaGVhZGVySWQiLCJzdWJzdHJpbmciLCJ0cmltIiwiaGVhZGVyQm9va0lEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQ0VBLHVCQURGLEVBRUVDLHNCQUZGLEVBR0VDLGFBSEYsRUFJRUMseUJBSkYsRUFLRUMsMEJBTEYsUUFNTyx1QkFOUDtBQU9BLFNBQ0VDLHdCQURGLEVBRUVDLGdCQUZGLEVBR0VDLDBCQUhGLEVBSUVDLDRCQUpGLEVBS0VDLFlBTEYsRUFNRUMsa0JBTkYsRUFPRUMsZUFQRixFQVFFQyxZQVJGLEVBU0VDLGtCQVRGLEVBVUVDLDZCQVZGLEVBV0VDLGNBWEYsRUFZRUMsaUJBWkYsUUFhTyxVQWJQO0FBZUEsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxJQUE3QixDLENBQWtDOztBQUV6QyxPQUFPLFNBQVNDLGVBQVQsQ0FBeUJDLFNBQXpCLEVBQW9DO0FBQ3pDLE1BQU1DLEdBQUcsR0FBR0QsU0FBUyxDQUFDQyxHQUFWLElBQWlCRCxTQUFTLENBQUNFLE1BQXZDO0FBQ0EsbUJBQVVGLFNBQVMsQ0FBQ0csS0FBcEIsY0FBNkJILFNBQVMsQ0FBQ0ksVUFBdkMsY0FBcURKLFNBQVMsQ0FBQ0ssVUFBL0QsY0FBNkVKLEdBQTdFO0FBQ0Q7QUFFRCxPQUFPLFNBQVNLLGtCQUFULE9BVUo7QUFBQSxNQVREQyxLQVNDLFFBVERBLEtBU0M7QUFBQSxNQVJEQyxNQVFDLFFBUkRBLE1BUUM7QUFBQSxNQVBETCxLQU9DLFFBUERBLEtBT0M7QUFBQSxNQU5ERixHQU1DLFFBTkRBLEdBTUM7QUFBQSxNQUxERyxVQUtDLFFB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UyxDQUFFTSxTQUFYLENBQXNCRixPQUF0QixFQUErQkEsT0FBTyxHQUFHLEdBQXpDLEVBQThDRyxJQUE5QyxFQUFmO0FBQ0EsUUFBSUMsWUFBWSxHQUFHLElBQW5COztBQUVBLFFBQUksQ0FBQUgsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUVuQyxNQUFWLElBQW1CLENBQXZCLEVBQTBCO0FBQUE7O0FBQ3hCc0MsTUFBQUEsWUFBWSxHQUFHSCxRQUFILGFBQUdBLFFBQUgsdUJBQUdBLFFBQVEsQ0FBRWpELEtBQVYsQ0FBZ0IsR0FBaEIsQ0FBZjtBQUNBb0QsTUFBQUEsWUFBWSxvQkFBR0EsWUFBSCxrREFBRyxjQUFlLENBQWYsRUFBa0JELElBQWxCLEVBQWY7QUFDRDs7QUFDRCxXQUFPQyxZQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDT05URU5UX05PVF9GT1VORF9FUlJPUixcbiAgSU5WQUxJRF9NQU5JRkVTVF9FUlJPUixcbiAgTE9BRElOR19TVEFURSxcbiAgTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUixcbiAgU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1IsXG59IGZyb20gJ3RyYW5zbGF0aW9uLWhlbHBzLXJjbCdcbmltcG9ydCB7XG4gIEJPT0tfTk9UX0ZPVU5EX0VSUk9SX01TRyxcbiAgTE9BRElOR19SRVNPVVJDRSxcbiAgTUFOSUZFU1RfSU5WQUxJRF9FUlJPUl9NU0csXG4gIE1BTklGRVNUX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIE5UX09SSUdfTEFORyxcbiAgTlRfT1JJR19MQU5HX0JJQkxFLFxuICBPUklHSU5BTF9TT1VSQ0UsXG4gIE9UX09SSUdfTEFORyxcbiAgT1RfT1JJR19MQU5HX0JJQkxFLFxuICBTQ1JJUFRVUkVfTk9UX0ZPVU5EX0VSUk9SX01TRyxcbiAgVEFSR0VUX0xJVEVSQUwsXG4gIFRBUkdFVF9TSU1QTElGSUVELFxufSBmcm9tICcuL2NvbW1vbidcblxuZXhwb3J0IGNvbnN0IERJU0FCTEVfV09SRF9QT1BPVkVSID0gdHJ1ZSAvLyBkaXNhYmxlIHdvcmQgcG9wb3ZlciBmb3IgZXZlcnkgc2NyaXB0dXJlIHBhbmUgYnV0IG9yaWdpbmFsIGxhbmd1YWdlc1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZSkge1xuICBjb25zdCByZWYgPSBzY3JpcHR1cmUucmVmIHx8IHNjcmlwdHVyZS5icmFuY2hcbiAgcmV0dXJuIGAke3NjcmlwdHVyZS5vd25lcn0vJHtzY3JpcHR1cmUubGFuZ3VhZ2VJZH0vJHtzY3JpcHR1cmUucmVzb3VyY2VJZH0vJHtyZWZ9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlT2JqZWN0KHtcbiAgdGl0bGUsXG4gIHNlcnZlcixcbiAgb3duZXIsXG4gIHJlZixcbiAgbGFuZ3VhZ2VJZCxcbiAgcmVzb3VyY2VJZCxcbiAgcmVzb3VyY2VMaW5rLFxuICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gIG9yaWdpbmFsTGFuZ3VhZ2VPd25lcixcbn0pIHtcbiAgY29uc3Qgc2NyaXB0dXJlID0ge1xuICAgIHRpdGxlLFxuICAgIHNlcnZlcixcbiAgICBvd25lcixcbiAgICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG4gICAgcmVmLFxuICAgIGxhbmd1YWdlSWQsXG4gICAgcmVzb3VyY2VJZCxcbiAgICBkaXNhYmxlV29yZFBvcG92ZXIsXG4gICAgcmVzb3VyY2VMaW5rLFxuICB9XG5cbiAgaWYgKCFyZXNvdXJjZUxpbmspIHtcbiAgICBzY3JpcHR1cmUucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHtcbiAgICAgIG93bmVyLFxuICAgICAgcmVmLFxuICAgICAgbGFuZ3VhZ2VJZCxcbiAgICAgIHJlc291cmNlSWQsXG4gICAgfSlcbiAgfVxuICByZXR1cm4gc2NyaXB0dXJlXG59XG5cbi8qKlxuICogcmV0dXJuIHZlcnNlIGRhdGEgZ2l2ZW4gYSBzY3JpcHR1cmUgY29uZmlnIGFuZCB2ZXJzZSBudW1iZXJcbiAqIEBwYXJhbSBzY3JpcHR1cmVDb25maWdcbiAqIEBwYXJhbSB2ZXJzZU51bVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VmVyc2VEYXRhRnJvbVNjcmlwQ29uZmlnKHNjcmlwdHVyZUNvbmZpZywgdmVyc2VOdW0pIHtcbiAgcmV0dXJuIHNjcmlwdHVyZUNvbmZpZz8udmVyc2VzRm9yUmVmPy5maW5kKFxuICAgIHZlcnNlUmVmID0+IHZlcnNlUmVmLnZlcnNlID09PSB2ZXJzZU51bVxuICApXG59XG5cbi8qKlxuICogcmV0dXJuIHRydWUgaWYgcmVzb3VyY2UgaXMgYW4gb3JpZ2luYWwgbGFuZ3VhZ2UgYmlibGVcbiAqIEBwYXJhbSByZXNvdXJjZUlkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc09yaWdpbmFsQmlibGUocmVzb3VyY2VJZCkge1xuICBjb25zdCBpc09yaWcgPSAoKHJlc291cmNlSWQgPT09IE5UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9UX09SSUdfTEFOR19CSUJMRSkgfHwgKHJlc291cmNlSWQgPT09IE9SSUdJTkFMX1NPVVJDRSkpXG4gIHJldHVybiBpc09yaWdcbn1cblxuLyoqXG4gKiBtYWtlIHN1cmUgc2NyaXB0dXJlU2V0dGluZ3MgYXJlIHVwIHRvIGRhdGUgd2l0aCBjdXJyZW50IG93bmVyIGFuZCBsYW5ndWFnZVxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzOiBhbnksIGN1cnJlbnRPd25lcjogYW55LCBjdXJyZW50TGFuZ3VhZ2VJZDogYW55KSB7XG4gIGlmIChjdXJyZW50T3duZXIgJiYgKGN1cnJlbnRPd25lciAhPT0gc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIpKSB7IC8vIGlmIG93bmVyIGNoYW5nZWQsIHVwZGF0ZSBzY3JpcHR1cmVTZXR0aW5nc1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gY3VycmVudE93bmVyXG4gIH1cblxuICBpZiAoY3VycmVudExhbmd1YWdlSWQgJiYgKGN1cnJlbnRMYW5ndWFnZUlkICE9PSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkKSkgeyAvLyBpZiBsYW5ndWFnZSBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gY3VycmVudExhbmd1YWdlSWRcbiAgfVxufVxuXG4vKipcbiAqIHNlcGFyYXRlIFVSTCBpbnRvIHNlcnZlciBhbmQgcmVzb3VyY2UgbGlua1xuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybFxuICovXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKSB7XG4gIGlmIChvcmlnaW5hbFJlcG9VcmwpIHtcbiAgICBjb25zdCB1cmwgPSBuZXcgVVJMKG9yaWdpbmFsUmVwb1VybClcbiAgICBjb25zdCBzZXJ2ZXIgPSB1cmwub3JpZ2luXG4gICAgY29uc3QgcmVzb3VyY2VMaW5rID0gdXJsLnBhdGhuYW1lICsgKHVybC5zZWFyY2ggfHwgJycpXG4gICAgcmV0dXJuIHsgc2VydmVyLCByZXNvdXJjZUxpbmsgfVxuICB9XG4gIHJldHVybiB7fVxufVxuXG4vKipcbiAqIGdldCB0aGUgc2NyaXB0dXJlIHNldHRpbmdzIG5lZWRlZCBmb3IgZmV0Y2ggLSBmb3IgT3JpZ0xhbmcsIFVMVCwgR0xUIHdpbGwgcmVwbGFjZSBvd25lciBhbmQgbGFuZ3VhZ2VJZCB3aXRoIGNvcnJlY3QgdmFsdWVzXG4gKiBAcGFyYW0ge3N0cmluZ30gYm9va0lkXG4gKiBAcGFyYW0ge29iamVjdH0gc2NyaXB0dXJlU2V0dGluZ3NfXG4gKiBAcGFyYW0ge2Jvb2xlYW59IGlzTmV3VGVzdGFtZW50XG4gKiBAcGFyYW0ge3N0cmluZ30gb3JpZ2luYWxSZXBvVXJsIC0gb3B0aW9uYWwgcGF0aCB0byByZXBvIGZvciBvcmlnaW5hbCBsYW5ndWFnZVxuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRMYW5ndWFnZUlkIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBsYW5ndWFnZSBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50T3duZXIgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIG93bmVyIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlUmVzb3VyY2VTZXR0aW5ncyhcbiAgYm9va0lkLCBzY3JpcHR1cmVTZXR0aW5nc18sIGlzTmV3VGVzdGFtZW50LFxuICBvcmlnaW5hbFJlcG9Vcmw9bnVsbCxcbiAgY3VycmVudExhbmd1YWdlSWQ9bnVsbCxcbiAgY3VycmVudE93bmVyPW51bGwsXG4pIHtcbiAgY29uc3Qgc2NyaXB0dXJlU2V0dGluZ3MgPSB7IC4uLnNjcmlwdHVyZVNldHRpbmdzXyB9XG4gIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IERJU0FCTEVfV09SRF9QT1BPVkVSXG4gIGNvbnN0IHJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5nc18ucmVzb3VyY2VJZFxuXG4gIGlmIChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpIHtcbiAgICAvLyBzZWxlY3Qgb3JpZ2luYWwgbGFuZ3VhZ2UgQmlibGUgYmFzZWQgb24gd2hpY2ggdGVzdGFtZW50IHRoZSBib29rIGJlbG9uZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID0gaXNOZXdUZXN0YW1lbnQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gaXNOZXdUZXN0YW1lbnRcbiAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICA6IE9UX09SSUdfTEFOR19CSUJMRVxuXG4gICAgaWYgKHNjcmlwdHVyZVNldHRpbmdzLm9yaWdpbmFsTGFuZ3VhZ2VPd25lcikge1xuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Mub3duZXIgPSBzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXJcbiAgICB9XG5cbiAgICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7IC8vIHVzZSB0aGlzIHVybCBpZiBkZWZpbmVkXG4gICAgICBjb25zdCB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH0gPSBzcGxpdFVybChvcmlnaW5hbFJlcG9VcmwpXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5zZXJ2ZXIgPSBzZXJ2ZXJcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IHJlc291cmNlTGlua1xuICAgIH0gZWxzZSB7IC8vIGZhbGwgYmFjayB0byBhcHAgZGVmYXVsdHNcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgICB9XG4gICAgc2NyaXB0dXJlU2V0dGluZ3MuZGlzYWJsZVdvcmRQb3BvdmVyID0gZmFsc2VcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfTElURVJBTCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndWx0JyA6ICdnbHQnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9IGVsc2UgaWYgKHJlc291cmNlSWQgPT09IFRBUkdFVF9TSU1QTElGSUVEKSB7XG4gICAgY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5ncywgY3VycmVudE93bmVyLCBjdXJyZW50TGFuZ3VhZ2VJZClcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9PT0gJ2VuJyA/ICd1c3QnIDogJ2dzdCdcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVNldHRpbmdzXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTY3JpcHR1cmVWZXJzaW9uU2V0dGluZ3Moe1xuICBsYWJlbCxcbiAgcmVzb3VyY2VMaW5rLFxuICBzZXRTY3JpcHR1cmUsXG4gIHNjcmlwdHVyZVZlcnNpb25IaXN0LFxufSkge1xuICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgbGV0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICdyZXNvdXJjZUxpbmsnLCByZXNvdXJjZUxpbmspXG5cbiAgY29uc3Qgc2NyaXB0dXJlU2VsZWN0b3JDb25maWcgPSB7XG4gICAgbGFiZWwsIC8vIGxhYmVsIGZvciBjb21ib2JveFxuICAgIG9wdGlvbnM6IGhpc3RvcnksXG4gICAgY3VycmVudDogaW5kZXgsXG4gICAgYWxsb3dVc2VySW5wdXQ6IHRydWUsXG4gICAgb25DaGFuZ2U6ICh0aXRsZSwgaW5kZXgsIHZhbGlkYXRpb25DQj1udWxsKSA9PiB7XG4gICAgICBsZXQgaXRlbVxuXG4gICAgICBpZiAoKGluZGV4IDwgMCkgJiYgdGl0bGUpIHtcbiAgICAgICAgY29uc3QgbmV3SXRlbSA9IHtcbiAgICAgICAgICB1cmw6IHRpdGxlLFxuICAgICAgICAgIHRpdGxlLFxuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuYWRkSXRlbVRvSGlzdG9yeShuZXdJdGVtKVxuXG4gICAgICAgIGlmIChpbmRleCA+PSAwKSB7XG4gICAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpW2luZGV4XVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpdGVtID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0SXRlbUJ5VGl0bGUodGl0bGUpXG4gICAgICB9XG5cbiAgICAgIGlmIChpdGVtKSB7XG4gICAgICAgIHNldFNjcmlwdHVyZShpdGVtLCB2YWxpZGF0aW9uQ0IpXG4gICAgICB9XG4gICAgfSxcbiAgICBkZWxldGVJdGVtOiB0aXRsZSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZ2V0TGF0ZXN0KClcbiAgICAgIGNvbnN0IGRlbGV0ZUluZGV4ID0gc2NyaXB0dXJlVmVyc2lvbkhpc3QuZmluZEl0ZW1JbmRleEJ5S2V5KGhpc3RvcnksICd0aXRsZScsIHRpdGxlKVxuICAgICAgc2NyaXB0dXJlVmVyc2lvbkhpc3QucmVtb3ZlSXRlbUJ5SW5kZXgoZGVsZXRlSW5kZXgpXG4gICAgfSxcbiAgfVxuXG4gIHJldHVybiBzY3JpcHR1cmVTZWxlY3RvckNvbmZpZ1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVwb1VybChyZXNvdXJjZUxpbms6IHN0cmluZywgc2VydmVyOiBzdHJpbmcsIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmcge1xuICBsZXQgcmVwb1VybFxuXG4gIHRyeSB7XG4gICAgbGV0IFtvd25lciwgbGFuZ3VhZ2VJZCwgcmVzb3VyY2VJZF0gPSByZXNvdXJjZUxpbmsuc3BsaXQoJy8nKVxuXG4gICAgc3dpdGNoIChyZXNvdXJjZUlkKSB7XG4gICAgY2FzZSBPUklHSU5BTF9TT1VSQ0U6XG4gICAgICBsYW5ndWFnZUlkID0gaXNOVCA/IE5UX09SSUdfTEFORyA6IE9UX09SSUdfTEFOR1xuICAgICAgcmVzb3VyY2VJZCA9IGlzTlRcbiAgICAgICAgPyBOVF9PUklHX0xBTkdfQklCTEVcbiAgICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9MSVRFUkFMOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1bHQnIDogJ2dsdCdcbiAgICAgIGJyZWFrXG5cbiAgICBjYXNlIFRBUkdFVF9TSU1QTElGSUVEOlxuICAgICAgcmVzb3VyY2VJZCA9IChsYW5ndWFnZUlkID09PSAnZW4nKSA/ICd1c3QnIDogJ2dzdCdcbiAgICAgIGJyZWFrXG4gICAgfVxuICAgIHJlcG9VcmwgPSBgJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Jlc291cmNlSWR9YFxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gcmVzb3VyY2VMaW5rIHdhcyBpbnZhbGlkXG4gIH1cblxuICAvLyBAdHMtaWdub3JlXG4gIHJldHVybiBgJHtzZXJ2ZXIgfHwgJyd9LyR7cmVwb1VybH1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRFcnJvck1lc3NhZ2VGb3JSZXNvdXJjZUxpbmsoXG4gIHJlc291cmNlTGluazogc3RyaW5nLFxuICBzZXJ2ZXI6IHN0cmluZyxcbiAgZXJyb3JDb2RlOiBzdHJpbmcsXG4gIGlzTlQ6IGJvb2xlYW4pOiBzdHJpbmdcbntcbiAgY29uc3QgcmVwb1VybCA9IGdldFJlcG9VcmwocmVzb3VyY2VMaW5rLCBzZXJ2ZXIsIGlzTlQpXG4gIGNvbnN0IGVycm9yTXNnID0gZXJyb3JDb2RlICsgcmVwb1VybFxuICByZXR1cm4gZXJyb3JNc2dcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlRGNzVXJsKHVybCkge1xuICBsZXQgdmFsaWRSZXBvUGF0aCA9IGZhbHNlXG4gIGxldCB2YWxpZFVybCA9IGZhbHNlXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBwYXJ0cyA9IHVybC5zcGxpdCgnLycpXG4gICAgY29uc3QgW3Byb3RvY29sLCAsIGhvc3QsIHVzZXIsIHJlcG9dID0gcGFydHNcbiAgICB2YWxpZFVybCA9IChwcm90b2NvbCA9PT0gJ2h0dHBzOicpXG4gICAgY29uc3QgaG9zdFBhcnRzID0gaG9zdCA/IGhvc3Quc3BsaXQoJy4nKSA6IFtdXG5cbiAgICBpZiAoaG9zdFBhcnRzLmxlbmd0aCA+PSAyKSB7XG4gICAgICBmb3IgKGxldCBwYXJ0IG9mIGhvc3RQYXJ0cykge1xuICAgICAgICBpZiAoIXBhcnQpIHtcbiAgICAgICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YWxpZFVybCA9IGZhbHNlXG4gICAgfVxuXG4gICAgaWYgKCBwcm90b2NvbCAmJiBob3N0ICYmIHVzZXIgJiYgcmVwbyApIHtcbiAgICAgIGNvbnN0IFtsYW5ndWFnZUlkLCBwcm9qZWN0SWRdID0gcmVwby5zcGxpdCgnXycpXG4gICAgICB2YWxpZFJlcG9QYXRoID0gbGFuZ3VhZ2VJZCAmJiBwcm9qZWN0SWRcbiAgICB9XG4gIH0gY2F0Y2gge1xuICAgIGNvbnNvbGUubG9nKCdJbnZhbGlkIERDUyBVUkw6ICcgKyB1cmwpXG4gIH1cbiAgcmV0dXJuIHsgdmFsaWRVcmwsIHZhbGlkUmVwb1BhdGggfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCkge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW01BTklGRVNUX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IE1BTklGRVNUX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tJTlZBTElEX01BTklGRVNUX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9JTlZBTElEX0VSUk9SX01TR1xuICB9IGVsc2UgaWYgKHJlc291cmNlU3RhdHVzW0NPTlRFTlRfTk9UX0ZPVU5EX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBCT09LX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tTQ1JJUFRVUkVfTk9UX0xPQURFRF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0dcbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGRlY29kZSByZXNvdXJjZSBzdGF0dXMgaW50byBzdHJpbmcuICBDdXJyZW50bHkgb25seSBFbmdsaXNoXG4gKiBAcGFyYW0gcmVzb3VyY2VTdGF0dXMgLSBvYmplY3QgdGhhdCBjb250YWlucyBzdGF0ZSBhbmQgZXJyb3JzIHRoYXQgYXJlIGRldGVjdGVkXG4gKiBAcGFyYW0gc2VydmVyIC0gY29udGFpbnMgdGhlIHNlcnZlciBiZWluZyB1c2VkXG4gKiBAcGFyYW0gcmVzb3VyY2VMaW5rIC0gcGF0aCB0byByZXBvIG9uIHNlcnZlclxuICogQHBhcmFtIGlzTlQgLSB0cnVlIGlmIE5UIGJvb2tcbiAqIEByZXR1cm4gZW1wdHkgc3RyaW5nIGlmIG5vIGVycm9yLCBlbHNlIHJldHVybnMgdXNlciBlcnJvciBtZXNzYWdlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZU1lc3NhZ2UocmVzb3VyY2VTdGF0dXM6IG9iamVjdCwgc2VydmVyOiBzdHJpbmcsIHJlc291cmNlTGluazogc3RyaW5nLCBpc05UOiBib29sZWFuKSB7XG4gIGxldCBtZXNzYWdlID0gJydcblxuICBpZiAocmVzb3VyY2VTdGF0dXNbTE9BRElOR19TVEFURV0pIHtcbiAgICBtZXNzYWdlID0gTE9BRElOR19SRVNPVVJDRVxuICB9IGVsc2Uge1xuICAgIG1lc3NhZ2UgPSBnZXRSZXNvdXJjZUVycm9yTWVzc2FnZShyZXNvdXJjZVN0YXR1cylcblxuICAgIGlmIChtZXNzYWdlKSB7XG4gICAgICBtZXNzYWdlID0gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKHJlc291cmNlTGluaywgc2VydmVyLCBtZXNzYWdlLCBpc05UKVxuICAgIH1cbiAgfVxuICByZXR1cm4gbWVzc2FnZVxufVxuXG4vKipcbiAqIGdlbmVyYXRlIHJlc291cmNlIHN0cmluZ1xuICogQHBhcmFtIG93bmVyXG4gKiBAcGFyYW0gbGFuZ3VhZ2VJZFxuICogQHBhcmFtIHByb2plY3RJZFxuICogQHBhcmFtIHJlZlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VMaW5rU3BlY2lmaWMob3duZXI6IHN0cmluZywgbGFuZ3VhZ2VJZDogc3RyaW5nLCBwcm9qZWN0SWQ6IHN0cmluZywgcmVmOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGBhcGkvdjEvcmVwb3MvJHtvd25lcn0vJHtsYW5ndWFnZUlkfV8ke3Byb2plY3RJZH0vY29udGVudHM/cmVmPSR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpeE9jY3VycmVuY2Uob2NjdXJyZW5jZSkge1xuICBpZiAodHlwZW9mIG9jY3VycmVuY2UgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KG9jY3VycmVuY2UpXG4gIH1cbiAgcmV0dXJuIG9jY3VycmVuY2Vcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNsZWFudXBWZXJzZU9iamVjdHModmVyc2VPYmplY3RzKSB7XG4gIGlmICh2ZXJzZU9iamVjdHM/Lmxlbmd0aCkge1xuICAgIGNvbnN0IHZlcnNlT2JqZWN0c18gPSBbLi4udmVyc2VPYmplY3RzXVxuXG4gICAgZm9yIChsZXQgaSA9IDAsIGwgPSB2ZXJzZU9iamVjdHNfLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgY29uc3Qgdm8gPSB2ZXJzZU9iamVjdHNfW2ldXG5cbiAgICAgIGlmICh2by50eXBlID09PSAnd29yZCcgJiYgKHZvLm9jY3VycmVuY2UgfHwgdm8ub2NjdXJyZW5jZXMpKSB7XG4gICAgICAgIGNvbnN0IHdvcmQgPSB7IC4uLnZvIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZSkge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZSA9IGZpeE9jY3VycmVuY2Uodm8ub2NjdXJyZW5jZSlcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh2by5vY2N1cnJlbmNlcykge1xuICAgICAgICAgIHdvcmQub2NjdXJyZW5jZXMgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2VzKVxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSB3b3JkXG4gICAgICB9IGVsc2UgaWYgKHZvLmNoaWxkcmVuKSB7XG4gICAgICAgIGNvbnN0IGNoaWxkcmVuID0gY2xlYW51cFZlcnNlT2JqZWN0cyh2by5jaGlsZHJlbilcbiAgICAgICAgY29uc3QgbmV3Vm8gPSB7XG4gICAgICAgICAgLi4udm8sXG4gICAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIH1cbiAgICAgICAgdmVyc2VPYmplY3RzX1tpXSA9IG5ld1ZvXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2ZXJzZU9iamVjdHNfXG4gIH1cbiAgcmV0dXJuIFtdXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS9cbiAgY29uc3QgYm9va05hbWUgPSBmaWxlbmFtZT8ubWF0Y2gocmVnZXgpPy5bMV1cbiAgcmV0dXJuIGJvb2tOYW1lXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRCaWJsZUlkRnJvbVVzZm1Db250ZW50SUQoYmlibGVVc2ZtKSB7XG4gIGNvbnN0IGlkSGVhZGVyID0gJ1xcXFxpZCAnXG4gIGNvbnN0IHBvc0lkID0gYmlibGVVc2ZtPy5pbmRleE9mKGlkSGVhZGVyKVxuXG4gIGlmIChwb3NJZCA+PSAwKSB7XG4gICAgY29uc3QgaWRTdGFydCA9IHBvc0lkICsgaWRIZWFkZXIubGVuZ3RoXG4gICAgbGV0IGhlYWRlcklkID0gYmlibGVVc2ZtPy5zdWJzdHJpbmcoIGlkU3RhcnQsIGlkU3RhcnQgKyAxMDApLnRyaW0oKVxuICAgIGxldCBoZWFkZXJCb29rSUQgPSBudWxsXG5cbiAgICBpZiAoaGVhZGVySWQ/Lmxlbmd0aCA+IDEpIHtcbiAgICAgIGhlYWRlckJvb2tJRCA9IGhlYWRlcklkPy5zcGxpdCgnICcpXG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJCb29rSUQ/LlswXS50cmltKClcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlckJvb2tJRFxuICB9XG4gIHJldHVybiBudWxsXG59XG4iXX0=
467
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9TY3JpcHR1cmVTZXR0aW5ncy50cyJdLCJuYW1lcyI6WyJDT05URU5UX05PVF9GT1VORF9FUlJPUiIsIklOVkFMSURfTUFOSUZFU1RfRVJST1IiLCJMT0FESU5HX1NUQVRFIiwiTUFOSUZFU1RfTk9UX0xPQURFRF9FUlJPUiIsIlNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SIiwiQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHIiwiTE9BRElOR19SRVNPVVJDRSIsIk1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHIiwiTUFOSUZFU1RfTk9UX0ZPVU5EX0VSUk9SX01TRyIsIk5UX09SSUdfTEFORyIsIk5UX09SSUdfTEFOR19CSUJMRSIsIk9SSUdJTkFMX1NPVVJDRSIsIk9UX09SSUdfTEFORyIsIk9UX09SSUdfTEFOR19CSUJMRSIsIlNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHIiwiVEFSR0VUX0xJVEVSQUwiLCJUQVJHRVRfU0lNUExJRklFRCIsIkRJU0FCTEVfV09SRF9QT1BPVkVSIiwiZ2V0UmVzb3VyY2VMaW5rIiwic2NyaXB0dXJlIiwicmVmIiwiYnJhbmNoIiwib3duZXIiLCJsYW5ndWFnZUlkIiwicmVzb3VyY2VJZCIsImdldFNjcmlwdHVyZU9iamVjdCIsInRpdGxlIiwic2VydmVyIiwicmVzb3VyY2VMaW5rIiwiZGlzYWJsZVdvcmRQb3BvdmVyIiwib3JpZ2luYWxMYW5ndWFnZU93bmVyIiwiZ2V0VmVyc2VEYXRhRnJvbVNjcmlwQ29uZmlnIiwic2NyaXB0dXJlQ29uZmlnIiwidmVyc2VOdW0iLCJ2ZXJzZXNGb3JSZWYiLCJmaW5kIiwidmVyc2VSZWYiLCJ2ZXJzZSIsImlzT3JpZ2luYWxCaWJsZSIsImlzT3JpZyIsImNsZWFudXBBY2NvdW50U2V0dGluZ3MiLCJzY3JpcHR1cmVTZXR0aW5ncyIsImN1cnJlbnRPd25lciIsImN1cnJlbnRMYW5ndWFnZUlkIiwic3BsaXRVcmwiLCJvcmlnaW5hbFJlcG9VcmwiLCJ1cmwiLCJVUkwiLCJvcmlnaW4iLCJwYXRobmFtZSIsInNlYXJjaCIsImdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MiLCJib29rSWQiLCJzY3JpcHR1cmVTZXR0aW5nc18iLCJpc05ld1Rlc3RhbWVudCIsImdldFNjcmlwdHVyZVZlcnNpb25TZXR0aW5ncyIsImxhYmVsIiwic2V0U2NyaXB0dXJlIiwic2NyaXB0dXJlVmVyc2lvbkhpc3QiLCJoaXN0b3J5IiwiZ2V0TGF0ZXN0IiwiaW5kZXgiLCJmaW5kSXRlbUluZGV4QnlLZXkiLCJzY3JpcHR1cmVTZWxlY3RvckNvbmZpZyIsIm9wdGlvbnMiLCJjdXJyZW50IiwiYWxsb3dVc2VySW5wdXQiLCJvbkNoYW5nZSIsInZhbGlkYXRpb25DQiIsIml0ZW0iLCJuZXdJdGVtIiwiYWRkSXRlbVRvSGlzdG9yeSIsImdldEl0ZW1CeVRpdGxlIiwiZGVsZXRlSXRlbSIsImRlbGV0ZUluZGV4IiwicmVtb3ZlSXRlbUJ5SW5kZXgiLCJnZXRSZXBvVXJsIiwiaXNOVCIsInJlcG9VcmwiLCJzcGxpdCIsImUiLCJnZXRFcnJvck1lc3NhZ2VGb3JSZXNvdXJjZUxpbmsiLCJlcnJvckNvZGUiLCJlcnJvck1zZyIsInZhbGlkYXRlRGNzVXJsIiwidmFsaWRSZXBvUGF0aCIsInZhbGlkVXJsIiwicGFydHMiLCJwcm90b2NvbCIsImhvc3QiLCJ1c2VyIiwicmVwbyIsImhvc3RQYXJ0cyIsImxlbmd0aCIsInBhcnQiLCJwcm9qZWN0SWQiLCJjb25zb2xlIiwibG9nIiwiZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UiLCJyZXNvdXJjZVN0YXR1cyIsIm1lc3NhZ2UiLCJnZXRSZXNvdXJjZU1lc3NhZ2UiLCJnZXRSZXNvdXJjZUxpbmtTcGVjaWZpYyIsImZpeE9jY3VycmVuY2UiLCJvY2N1cnJlbmNlIiwicGFyc2VJbnQiLCJjbGVhbnVwVmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzIiwidmVyc2VPYmplY3RzXyIsImkiLCJsIiwidm8iLCJ0eXBlIiwib2NjdXJyZW5jZXMiLCJ3b3JkIiwiY2hpbGRyZW4iLCJuZXdWbyIsImdldEJvb2tOYW1lRnJvbVVzZm1GaWxlTmFtZSIsImZpbGVuYW1lIiwicmVnZXgiLCJib29rTmFtZSIsIm1hdGNoIiwiZ2V0QmlibGVJZEZyb21Vc2ZtQ29udGVudElEIiwiYmlibGVVc2ZtIiwiaWRIZWFkZXIiLCJwb3NJZCIsImluZGV4T2YiLCJpZFN0YXJ0IiwiaGVhZGVySWQiLCJzdWJzdHJpbmciLCJ0cmltIiwiaGVhZGVyQm9va0lEIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLFNBQ0VBLHVCQURGLEVBRUVDLHNCQUZGLEVBR0VDLGFBSEYsRUFJRUMseUJBSkYsRUFLRUMsMEJBTEYsUUFNTyx1QkFOUDtBQU9BLFNBQ0VDLHdCQURGLEVBRUVDLGdCQUZGLEVBR0VDLDBCQUhGLEVBSUVDLDRCQUpGLEVBS0VDLFlBTEYsRUFNRUMsa0JBTkYsRUFPRUMsZUFQRixFQVFFQyxZQVJGLEVBU0VDLGtCQVRGLEVBVUVDLDZCQVZGLEVBV0VDLGNBWEYsRUFZRUMsaUJBWkYsUUFhTyxVQWJQO0FBZUEsT0FBTyxJQUFNQyxvQkFBb0IsR0FBRyxJQUE3QixDLENBQWtDOztBQUV6QyxPQUFPLFNBQVNDLGVBQVQsQ0FBeUJDLFNBQXpCLEVBQW9DO0FBQ3pDLE1BQU1DLEdBQUcsR0FBR0QsU0FBUyxDQUFDQyxHQUFWLElBQWlCRCxTQUFTLENBQUNFLE1BQXZDO0FBQ0EsbUJBQVVGLFNBQVMsQ0FBQ0csS0FBcEIsY0FBNkJILFNBQVMsQ0FBQ0ksVUFBdkMsY0FBcURKLFNBQVMsQ0FBQ0ssVUFBL0QsY0FBNkVKLEdBQTdFO0FBQ0Q7QUFFRCxPQUFPLFNBQVNLLGtCQUFULE9BVUo7QUFBQSxNQVREQyxLQVNDLFFBVERBLEtBU0M7QUFBQSxNQVJEQyxNQVFDLFFBUkRBLE1BUUM7QUFBQSxNQVBETCxLQU9DLFFBUERBLEtBT0M7QUFBQSxNQU5ERixHQU1DLFFBTkRBLEdBTUM7QUFBQSxNQUxERyxVQUtDLFFB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akM7QUFDQSxRQUFJbUMsUUFBUSxHQUFHTCxTQUFILGFBQUdBLFNBQUgsdUJBQUdBLFNBQVMsQ0FBRU0sU0FBWCxDQUFzQkYsT0FBdEIsRUFBK0JBLE9BQU8sR0FBRyxHQUF6QyxFQUE4Q0csSUFBOUMsRUFBZjtBQUNBLFFBQUlDLFlBQVksR0FBRyxJQUFuQjs7QUFFQSxRQUFJLENBQUFILFFBQVEsU0FBUixJQUFBQSxRQUFRLFdBQVIsWUFBQUEsUUFBUSxDQUFFbkMsTUFBVixJQUFtQixDQUF2QixFQUEwQjtBQUFBOztBQUN4QnNDLE1BQUFBLFlBQVksR0FBR0gsUUFBSCxhQUFHQSxRQUFILHVCQUFHQSxRQUFRLENBQUVqRCxLQUFWLENBQWdCLEdBQWhCLENBQWY7QUFDQW9ELE1BQUFBLFlBQVksb0JBQUdBLFlBQUgsa0RBQUcsY0FBZSxDQUFmLEVBQWtCRCxJQUFsQixFQUFmO0FBQ0Q7O0FBQ0QsV0FBT0MsWUFBUDtBQUNEOztBQUNELFNBQU8sSUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ09OVEVOVF9OT1RfRk9VTkRfRVJST1IsXG4gIElOVkFMSURfTUFOSUZFU1RfRVJST1IsXG4gIExPQURJTkdfU1RBVEUsXG4gIE1BTklGRVNUX05PVF9MT0FERURfRVJST1IsXG4gIFNDUklQVFVSRV9OT1RfTE9BREVEX0VSUk9SLFxufSBmcm9tICd0cmFuc2xhdGlvbi1oZWxwcy1yY2wnXG5pbXBvcnQge1xuICBCT09LX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIExPQURJTkdfUkVTT1VSQ0UsXG4gIE1BTklGRVNUX0lOVkFMSURfRVJST1JfTVNHLFxuICBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHLFxuICBOVF9PUklHX0xBTkcsXG4gIE5UX09SSUdfTEFOR19CSUJMRSxcbiAgT1JJR0lOQUxfU09VUkNFLFxuICBPVF9PUklHX0xBTkcsXG4gIE9UX09SSUdfTEFOR19CSUJMRSxcbiAgU0NSSVBUVVJFX05PVF9GT1VORF9FUlJPUl9NU0csXG4gIFRBUkdFVF9MSVRFUkFMLFxuICBUQVJHRVRfU0lNUExJRklFRCxcbn0gZnJvbSAnLi9jb21tb24nXG5cbmV4cG9ydCBjb25zdCBESVNBQkxFX1dPUkRfUE9QT1ZFUiA9IHRydWUgLy8gZGlzYWJsZSB3b3JkIHBvcG92ZXIgZm9yIGV2ZXJ5IHNjcmlwdHVyZSBwYW5lIGJ1dCBvcmlnaW5hbCBsYW5ndWFnZXNcblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGluayhzY3JpcHR1cmUpIHtcbiAgY29uc3QgcmVmID0gc2NyaXB0dXJlLnJlZiB8fCBzY3JpcHR1cmUuYnJhbmNoXG4gIHJldHVybiBgJHtzY3JpcHR1cmUub3duZXJ9LyR7c2NyaXB0dXJlLmxhbmd1YWdlSWR9LyR7c2NyaXB0dXJlLnJlc291cmNlSWR9LyR7cmVmfWBcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZU9iamVjdCh7XG4gIHRpdGxlLFxuICBzZXJ2ZXIsXG4gIG93bmVyLFxuICByZWYsXG4gIGxhbmd1YWdlSWQsXG4gIHJlc291cmNlSWQsXG4gIHJlc291cmNlTGluayxcbiAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICBvcmlnaW5hbExhbmd1YWdlT3duZXIsXG59KSB7XG4gIGNvbnN0IHNjcmlwdHVyZSA9IHtcbiAgICB0aXRsZSxcbiAgICBzZXJ2ZXIsXG4gICAgb3duZXIsXG4gICAgb3JpZ2luYWxMYW5ndWFnZU93bmVyLFxuICAgIHJlZixcbiAgICBsYW5ndWFnZUlkLFxuICAgIHJlc291cmNlSWQsXG4gICAgZGlzYWJsZVdvcmRQb3BvdmVyLFxuICAgIHJlc291cmNlTGluayxcbiAgfVxuXG4gIGlmICghcmVzb3VyY2VMaW5rKSB7XG4gICAgc2NyaXB0dXJlLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayh7XG4gICAgICBvd25lcixcbiAgICAgIHJlZixcbiAgICAgIGxhbmd1YWdlSWQsXG4gICAgICByZXNvdXJjZUlkLFxuICAgIH0pXG4gIH1cbiAgcmV0dXJuIHNjcmlwdHVyZVxufVxuXG4vKipcbiAqIHJldHVybiB2ZXJzZSBkYXRhIGdpdmVuIGEgc2NyaXB0dXJlIGNvbmZpZyBhbmQgdmVyc2UgbnVtYmVyXG4gKiBAcGFyYW0gc2NyaXB0dXJlQ29uZmlnXG4gKiBAcGFyYW0gdmVyc2VOdW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFZlcnNlRGF0YUZyb21TY3JpcENvbmZpZyhzY3JpcHR1cmVDb25maWcsIHZlcnNlTnVtKSB7XG4gIHJldHVybiBzY3JpcHR1cmVDb25maWc/LnZlcnNlc0ZvclJlZj8uZmluZChcbiAgICB2ZXJzZVJlZiA9PiB2ZXJzZVJlZi52ZXJzZSA9PT0gdmVyc2VOdW1cbiAgKVxufVxuXG4vKipcbiAqIHJldHVybiB0cnVlIGlmIHJlc291cmNlIGlzIGFuIG9yaWdpbmFsIGxhbmd1YWdlIGJpYmxlXG4gKiBAcGFyYW0gcmVzb3VyY2VJZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNPcmlnaW5hbEJpYmxlKHJlc291cmNlSWQpIHtcbiAgY29uc3QgaXNPcmlnID0gKChyZXNvdXJjZUlkID09PSBOVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPVF9PUklHX0xBTkdfQklCTEUpIHx8IChyZXNvdXJjZUlkID09PSBPUklHSU5BTF9TT1VSQ0UpKVxuICByZXR1cm4gaXNPcmlnXG59XG5cbi8qKlxuICogbWFrZSBzdXJlIHNjcmlwdHVyZVNldHRpbmdzIGFyZSB1cCB0byBkYXRlIHdpdGggY3VycmVudCBvd25lciBhbmQgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7b2JqZWN0fSBzY3JpcHR1cmVTZXR0aW5nc1xuICogQHBhcmFtIHtzdHJpbmd9IGN1cnJlbnRPd25lciAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgb3duZXIgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudExhbmd1YWdlSWQgLSBvcHRpb25hbCBvdmVyLXJpZGUgZm9yIHRyYW5zaWVudCBjYXNlIHdoZXJlIGxhbmd1YWdlIGluIHNjcmlwdHVyZSBzZXR0aW5ncyBoYXZlIG5vdCB5ZXQgdXBkYXRlZFxuICovXG5leHBvcnQgZnVuY3Rpb24gY2xlYW51cEFjY291bnRTZXR0aW5ncyhzY3JpcHR1cmVTZXR0aW5nczogYW55LCBjdXJyZW50T3duZXI6IGFueSwgY3VycmVudExhbmd1YWdlSWQ6IGFueSkge1xuICBpZiAoY3VycmVudE93bmVyICYmIChjdXJyZW50T3duZXIgIT09IHNjcmlwdHVyZVNldHRpbmdzLm93bmVyKSkgeyAvLyBpZiBvd25lciBjaGFuZ2VkLCB1cGRhdGUgc2NyaXB0dXJlU2V0dGluZ3NcbiAgICBzY3JpcHR1cmVTZXR0aW5ncy5vd25lciA9IGN1cnJlbnRPd25lclxuICB9XG5cbiAgaWYgKGN1cnJlbnRMYW5ndWFnZUlkICYmIChjdXJyZW50TGFuZ3VhZ2VJZCAhPT0gc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCkpIHsgLy8gaWYgbGFuZ3VhZ2UgY2hhbmdlZCwgdXBkYXRlIHNjcmlwdHVyZVNldHRpbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGN1cnJlbnRMYW5ndWFnZUlkXG4gIH1cbn1cblxuLyoqXG4gKiBzZXBhcmF0ZSBVUkwgaW50byBzZXJ2ZXIgYW5kIHJlc291cmNlIGxpbmtcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcmlnaW5hbFJlcG9VcmxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0VXJsKG9yaWdpbmFsUmVwb1VybCkge1xuICBpZiAob3JpZ2luYWxSZXBvVXJsKSB7XG4gICAgY29uc3QgdXJsID0gbmV3IFVSTChvcmlnaW5hbFJlcG9VcmwpXG4gICAgY29uc3Qgc2VydmVyID0gdXJsLm9yaWdpblxuICAgIGNvbnN0IHJlc291cmNlTGluayA9IHVybC5wYXRobmFtZSArICh1cmwuc2VhcmNoIHx8ICcnKVxuICAgIHJldHVybiB7IHNlcnZlciwgcmVzb3VyY2VMaW5rIH1cbiAgfVxuICByZXR1cm4ge31cbn1cblxuLyoqXG4gKiBnZXQgdGhlIHNjcmlwdHVyZSBzZXR0aW5ncyBuZWVkZWQgZm9yIGZldGNoIC0gZm9yIE9yaWdMYW5nLCBVTFQsIEdMVCB3aWxsIHJlcGxhY2Ugb3duZXIgYW5kIGxhbmd1YWdlSWQgd2l0aCBjb3JyZWN0IHZhbHVlc1xuICogQHBhcmFtIHtzdHJpbmd9IGJvb2tJZFxuICogQHBhcmFtIHtvYmplY3R9IHNjcmlwdHVyZVNldHRpbmdzX1xuICogQHBhcmFtIHtib29sZWFufSBpc05ld1Rlc3RhbWVudFxuICogQHBhcmFtIHtzdHJpbmd9IG9yaWdpbmFsUmVwb1VybCAtIG9wdGlvbmFsIHBhdGggdG8gcmVwbyBmb3Igb3JpZ2luYWwgbGFuZ3VhZ2VcbiAqIEBwYXJhbSB7c3RyaW5nfSBjdXJyZW50TGFuZ3VhZ2VJZCAtIG9wdGlvbmFsIG92ZXItcmlkZSBmb3IgdHJhbnNpZW50IGNhc2Ugd2hlcmUgbGFuZ3VhZ2UgaW4gc2NyaXB0dXJlIHNldHRpbmdzIGhhdmUgbm90IHlldCB1cGRhdGVkXG4gKiBAcGFyYW0ge3N0cmluZ30gY3VycmVudE93bmVyIC0gb3B0aW9uYWwgb3Zlci1yaWRlIGZvciB0cmFuc2llbnQgY2FzZSB3aGVyZSBvd25lciBpbiBzY3JpcHR1cmUgc2V0dGluZ3MgaGF2ZSBub3QgeWV0IHVwZGF0ZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFNjcmlwdHVyZVJlc291cmNlU2V0dGluZ3MoXG4gIGJvb2tJZCwgc2NyaXB0dXJlU2V0dGluZ3NfLCBpc05ld1Rlc3RhbWVudCxcbiAgb3JpZ2luYWxSZXBvVXJsPW51bGwsXG4gIGN1cnJlbnRMYW5ndWFnZUlkPW51bGwsXG4gIGN1cnJlbnRPd25lcj1udWxsLFxuKSB7XG4gIGNvbnN0IHNjcmlwdHVyZVNldHRpbmdzID0geyAuLi5zY3JpcHR1cmVTZXR0aW5nc18gfVxuICBzY3JpcHR1cmVTZXR0aW5ncy5kaXNhYmxlV29yZFBvcG92ZXIgPSBESVNBQkxFX1dPUkRfUE9QT1ZFUlxuICBjb25zdCByZXNvdXJjZUlkID0gc2NyaXB0dXJlU2V0dGluZ3NfLnJlc291cmNlSWRcblxuICBpZiAocmVzb3VyY2VJZCA9PT0gT1JJR0lOQUxfU09VUkNFKSB7XG4gICAgLy8gc2VsZWN0IG9yaWdpbmFsIGxhbmd1YWdlIEJpYmxlIGJhc2VkIG9uIHdoaWNoIHRlc3RhbWVudCB0aGUgYm9vayBiZWxvbmdzXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MubGFuZ3VhZ2VJZCA9IGlzTmV3VGVzdGFtZW50ID8gTlRfT1JJR19MQU5HIDogT1RfT1JJR19MQU5HXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IGlzTmV3VGVzdGFtZW50XG4gICAgICA/IE5UX09SSUdfTEFOR19CSUJMRVxuICAgICAgOiBPVF9PUklHX0xBTkdfQklCTEVcblxuICAgIGlmIChzY3JpcHR1cmVTZXR0aW5ncy5vcmlnaW5hbExhbmd1YWdlT3duZXIpIHtcbiAgICAgIHNjcmlwdHVyZVNldHRpbmdzLm93bmVyID0gc2NyaXB0dXJlU2V0dGluZ3Mub3JpZ2luYWxMYW5ndWFnZU93bmVyXG4gICAgfVxuXG4gICAgaWYgKG9yaWdpbmFsUmVwb1VybCkgeyAvLyB1c2UgdGhpcyB1cmwgaWYgZGVmaW5lZFxuICAgICAgY29uc3QgeyBzZXJ2ZXIsIHJlc291cmNlTGluayB9ID0gc3BsaXRVcmwob3JpZ2luYWxSZXBvVXJsKVxuICAgICAgc2NyaXB0dXJlU2V0dGluZ3Muc2VydmVyID0gc2VydmVyXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSByZXNvdXJjZUxpbmtcbiAgICB9IGVsc2UgeyAvLyBmYWxsIGJhY2sgdG8gYXBwIGRlZmF1bHRzXG4gICAgICBzY3JpcHR1cmVTZXR0aW5ncy5yZXNvdXJjZUxpbmsgPSBnZXRSZXNvdXJjZUxpbmsoc2NyaXB0dXJlU2V0dGluZ3MpXG4gICAgfVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLmRpc2FibGVXb3JkUG9wb3ZlciA9IGZhbHNlXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VJZCA9PT0gVEFSR0VUX0xJVEVSQUwpIHtcbiAgICBjbGVhbnVwQWNjb3VudFNldHRpbmdzKHNjcmlwdHVyZVNldHRpbmdzLCBjdXJyZW50T3duZXIsIGN1cnJlbnRMYW5ndWFnZUlkKVxuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlSWQgPSBzY3JpcHR1cmVTZXR0aW5ncy5sYW5ndWFnZUlkID09PSAnZW4nID8gJ3VsdCcgOiAnZ2x0J1xuICAgIHNjcmlwdHVyZVNldHRpbmdzLnJlc291cmNlTGluayA9IGdldFJlc291cmNlTGluayhzY3JpcHR1cmVTZXR0aW5ncylcbiAgfSBlbHNlIGlmIChyZXNvdXJjZUlkID09PSBUQVJHRVRfU0lNUExJRklFRCkge1xuICAgIGNsZWFudXBBY2NvdW50U2V0dGluZ3Moc2NyaXB0dXJlU2V0dGluZ3MsIGN1cnJlbnRPd25lciwgY3VycmVudExhbmd1YWdlSWQpXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VJZCA9IHNjcmlwdHVyZVNldHRpbmdzLmxhbmd1YWdlSWQgPT09ICdlbicgPyAndXN0JyA6ICdnc3QnXG4gICAgc2NyaXB0dXJlU2V0dGluZ3MucmVzb3VyY2VMaW5rID0gZ2V0UmVzb3VyY2VMaW5rKHNjcmlwdHVyZVNldHRpbmdzKVxuICB9XG4gIHJldHVybiBzY3JpcHR1cmVTZXR0aW5nc1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2NyaXB0dXJlVmVyc2lvblNldHRpbmdzKHtcbiAgbGFiZWwsXG4gIHJlc291cmNlTGluayxcbiAgc2V0U2NyaXB0dXJlLFxuICBzY3JpcHR1cmVWZXJzaW9uSGlzdCxcbn0pIHtcbiAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gIGxldCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAncmVzb3VyY2VMaW5rJywgcmVzb3VyY2VMaW5rKVxuXG4gIGNvbnN0IHNjcmlwdHVyZVNlbGVjdG9yQ29uZmlnID0ge1xuICAgIGxhYmVsLCAvLyBsYWJlbCBmb3IgY29tYm9ib3hcbiAgICBvcHRpb25zOiBoaXN0b3J5LFxuICAgIGN1cnJlbnQ6IGluZGV4LFxuICAgIGFsbG93VXNlcklucHV0OiB0cnVlLFxuICAgIG9uQ2hhbmdlOiAodGl0bGUsIGluZGV4LCB2YWxpZGF0aW9uQ0I9bnVsbCkgPT4ge1xuICAgICAgbGV0IGl0ZW1cblxuICAgICAgaWYgKChpbmRleCA8IDApICYmIHRpdGxlKSB7XG4gICAgICAgIGNvbnN0IG5ld0l0ZW0gPSB7XG4gICAgICAgICAgdXJsOiB0aXRsZSxcbiAgICAgICAgICB0aXRsZSxcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmFkZEl0ZW1Ub0hpc3RvcnkobmV3SXRlbSlcblxuICAgICAgICBpZiAoaW5kZXggPj0gMCkge1xuICAgICAgICAgIGl0ZW0gPSBzY3JpcHR1cmVWZXJzaW9uSGlzdC5nZXRMYXRlc3QoKVtpbmRleF1cbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaXRlbSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldEl0ZW1CeVRpdGxlKHRpdGxlKVxuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbSkge1xuICAgICAgICBzZXRTY3JpcHR1cmUoaXRlbSwgdmFsaWRhdGlvbkNCKVxuICAgICAgfVxuICAgIH0sXG4gICAgZGVsZXRlSXRlbTogdGl0bGUgPT4ge1xuICAgICAgY29uc3QgaGlzdG9yeSA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmdldExhdGVzdCgpXG4gICAgICBjb25zdCBkZWxldGVJbmRleCA9IHNjcmlwdHVyZVZlcnNpb25IaXN0LmZpbmRJdGVtSW5kZXhCeUtleShoaXN0b3J5LCAndGl0bGUnLCB0aXRsZSlcbiAgICAgIHNjcmlwdHVyZVZlcnNpb25IaXN0LnJlbW92ZUl0ZW1CeUluZGV4KGRlbGV0ZUluZGV4KVxuICAgIH0sXG4gIH1cblxuICByZXR1cm4gc2NyaXB0dXJlU2VsZWN0b3JDb25maWdcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlcG9VcmwocmVzb3VyY2VMaW5rOiBzdHJpbmcsIHNlcnZlcjogc3RyaW5nLCBpc05UOiBib29sZWFuKTogc3RyaW5nIHtcbiAgbGV0IHJlcG9VcmxcblxuICB0cnkge1xuICAgIGxldCBbb3duZXIsIGxhbmd1YWdlSWQsIHJlc291cmNlSWRdID0gcmVzb3VyY2VMaW5rLnNwbGl0KCcvJylcblxuICAgIHN3aXRjaCAocmVzb3VyY2VJZCkge1xuICAgIGNhc2UgT1JJR0lOQUxfU09VUkNFOlxuICAgICAgbGFuZ3VhZ2VJZCA9IGlzTlQgPyBOVF9PUklHX0xBTkcgOiBPVF9PUklHX0xBTkdcbiAgICAgIHJlc291cmNlSWQgPSBpc05UXG4gICAgICAgID8gTlRfT1JJR19MQU5HX0JJQkxFXG4gICAgICAgIDogT1RfT1JJR19MQU5HX0JJQkxFXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfTElURVJBTDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndWx0JyA6ICdnbHQnXG4gICAgICBicmVha1xuXG4gICAgY2FzZSBUQVJHRVRfU0lNUExJRklFRDpcbiAgICAgIHJlc291cmNlSWQgPSAobGFuZ3VhZ2VJZCA9PT0gJ2VuJykgPyAndXN0JyA6ICdnc3QnXG4gICAgICBicmVha1xuICAgIH1cbiAgICByZXBvVXJsID0gYCR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtyZXNvdXJjZUlkfWBcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHJlc291cmNlTGluayB3YXMgaW52YWxpZFxuICB9XG5cbiAgLy8gQHRzLWlnbm9yZVxuICByZXR1cm4gYCR7c2VydmVyIHx8ICcnfS8ke3JlcG9Vcmx9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RXJyb3JNZXNzYWdlRm9yUmVzb3VyY2VMaW5rKFxuICByZXNvdXJjZUxpbms6IHN0cmluZyxcbiAgc2VydmVyOiBzdHJpbmcsXG4gIGVycm9yQ29kZTogc3RyaW5nLFxuICBpc05UOiBib29sZWFuKTogc3RyaW5nXG57XG4gIGNvbnN0IHJlcG9VcmwgPSBnZXRSZXBvVXJsKHJlc291cmNlTGluaywgc2VydmVyLCBpc05UKVxuICBjb25zdCBlcnJvck1zZyA9IGVycm9yQ29kZSArIHJlcG9VcmxcbiAgcmV0dXJuIGVycm9yTXNnXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB2YWxpZGF0ZURjc1VybCh1cmwpIHtcbiAgbGV0IHZhbGlkUmVwb1BhdGggPSBmYWxzZVxuICBsZXQgdmFsaWRVcmwgPSBmYWxzZVxuXG4gIHRyeSB7XG4gICAgY29uc3QgcGFydHMgPSB1cmwuc3BsaXQoJy8nKVxuICAgIGNvbnN0IFtwcm90b2NvbCwgLCBob3N0LCB1c2VyLCByZXBvXSA9IHBhcnRzXG4gICAgdmFsaWRVcmwgPSAocHJvdG9jb2wgPT09ICdodHRwczonKVxuICAgIGNvbnN0IGhvc3RQYXJ0cyA9IGhvc3QgPyBob3N0LnNwbGl0KCcuJykgOiBbXVxuXG4gICAgaWYgKGhvc3RQYXJ0cy5sZW5ndGggPj0gMikge1xuICAgICAgZm9yIChsZXQgcGFydCBvZiBob3N0UGFydHMpIHtcbiAgICAgICAgaWYgKCFwYXJ0KSB7XG4gICAgICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgICAgICAgIGJyZWFrXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFsaWRVcmwgPSBmYWxzZVxuICAgIH1cblxuICAgIGlmICggcHJvdG9jb2wgJiYgaG9zdCAmJiB1c2VyICYmIHJlcG8gKSB7XG4gICAgICBjb25zdCBbbGFuZ3VhZ2VJZCwgcHJvamVjdElkXSA9IHJlcG8uc3BsaXQoJ18nKVxuICAgICAgdmFsaWRSZXBvUGF0aCA9IGxhbmd1YWdlSWQgJiYgcHJvamVjdElkXG4gICAgfVxuICB9IGNhdGNoIHtcbiAgICBjb25zb2xlLmxvZygnSW52YWxpZCBEQ1MgVVJMOiAnICsgdXJsKVxuICB9XG4gIHJldHVybiB7IHZhbGlkVXJsLCB2YWxpZFJlcG9QYXRoIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlRXJyb3JNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QpIHtcbiAgbGV0IG1lc3NhZ2UgPSAnJ1xuXG4gIGlmIChyZXNvdXJjZVN0YXR1c1tNQU5JRkVTVF9OT1RfTE9BREVEX0VSUk9SXSkge1xuICAgIG1lc3NhZ2UgPSBNQU5JRkVTVF9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbSU5WQUxJRF9NQU5JRkVTVF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gTUFOSUZFU1RfSU5WQUxJRF9FUlJPUl9NU0dcbiAgfSBlbHNlIGlmIChyZXNvdXJjZVN0YXR1c1tDT05URU5UX05PVF9GT1VORF9FUlJPUl0pIHtcbiAgICBtZXNzYWdlID0gQk9PS19OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH0gZWxzZSBpZiAocmVzb3VyY2VTdGF0dXNbU0NSSVBUVVJFX05PVF9MT0FERURfRVJST1JdKSB7XG4gICAgbWVzc2FnZSA9IFNDUklQVFVSRV9OT1RfRk9VTkRfRVJST1JfTVNHXG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBkZWNvZGUgcmVzb3VyY2Ugc3RhdHVzIGludG8gc3RyaW5nLiAgQ3VycmVudGx5IG9ubHkgRW5nbGlzaFxuICogQHBhcmFtIHJlc291cmNlU3RhdHVzIC0gb2JqZWN0IHRoYXQgY29udGFpbnMgc3RhdGUgYW5kIGVycm9ycyB0aGF0IGFyZSBkZXRlY3RlZFxuICogQHBhcmFtIHNlcnZlciAtIGNvbnRhaW5zIHRoZSBzZXJ2ZXIgYmVpbmcgdXNlZFxuICogQHBhcmFtIHJlc291cmNlTGluayAtIHBhdGggdG8gcmVwbyBvbiBzZXJ2ZXJcbiAqIEBwYXJhbSBpc05UIC0gdHJ1ZSBpZiBOVCBib29rXG4gKiBAcmV0dXJuIGVtcHR5IHN0cmluZyBpZiBubyBlcnJvciwgZWxzZSByZXR1cm5zIHVzZXIgZXJyb3IgbWVzc2FnZVxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VNZXNzYWdlKHJlc291cmNlU3RhdHVzOiBvYmplY3QsIHNlcnZlcjogc3RyaW5nLCByZXNvdXJjZUxpbms6IHN0cmluZywgaXNOVDogYm9vbGVhbikge1xuICBsZXQgbWVzc2FnZSA9ICcnXG5cbiAgaWYgKHJlc291cmNlU3RhdHVzW0xPQURJTkdfU1RBVEVdKSB7XG4gICAgbWVzc2FnZSA9IExPQURJTkdfUkVTT1VSQ0VcbiAgfSBlbHNlIHtcbiAgICBtZXNzYWdlID0gZ2V0UmVzb3VyY2VFcnJvck1lc3NhZ2UocmVzb3VyY2VTdGF0dXMpXG5cbiAgICBpZiAobWVzc2FnZSkge1xuICAgICAgbWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZUZvclJlc291cmNlTGluayhyZXNvdXJjZUxpbmssIHNlcnZlciwgbWVzc2FnZSwgaXNOVClcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG1lc3NhZ2Vcbn1cblxuLyoqXG4gKiBnZW5lcmF0ZSByZXNvdXJjZSBzdHJpbmdcbiAqIEBwYXJhbSBvd25lclxuICogQHBhcmFtIGxhbmd1YWdlSWRcbiAqIEBwYXJhbSBwcm9qZWN0SWRcbiAqIEBwYXJhbSByZWZcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJlc291cmNlTGlua1NwZWNpZmljKG93bmVyOiBzdHJpbmcsIGxhbmd1YWdlSWQ6IHN0cmluZywgcHJvamVjdElkOiBzdHJpbmcsIHJlZjogc3RyaW5nKSB7XG4gIHJldHVybiBgYXBpL3YxL3JlcG9zLyR7b3duZXJ9LyR7bGFuZ3VhZ2VJZH1fJHtwcm9qZWN0SWR9L2NvbnRlbnRzP3JlZj0ke3JlZn1gXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmaXhPY2N1cnJlbmNlKG9jY3VycmVuY2UpIHtcbiAgaWYgKHR5cGVvZiBvY2N1cnJlbmNlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBwYXJzZUludChvY2N1cnJlbmNlKVxuICB9XG4gIHJldHVybiBvY2N1cnJlbmNlXG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjbGVhbnVwVmVyc2VPYmplY3RzKHZlcnNlT2JqZWN0cykge1xuICBpZiAodmVyc2VPYmplY3RzPy5sZW5ndGgpIHtcbiAgICBjb25zdCB2ZXJzZU9iamVjdHNfID0gWy4uLnZlcnNlT2JqZWN0c11cblxuICAgIGZvciAobGV0IGkgPSAwLCBsID0gdmVyc2VPYmplY3RzXy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIGNvbnN0IHZvID0gdmVyc2VPYmplY3RzX1tpXVxuXG4gICAgICBpZiAodm8udHlwZSA9PT0gJ3dvcmQnICYmICh2by5vY2N1cnJlbmNlIHx8IHZvLm9jY3VycmVuY2VzKSkge1xuICAgICAgICBjb25zdCB3b3JkID0geyAuLi52byB9XG5cbiAgICAgICAgaWYgKHZvLm9jY3VycmVuY2UpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2UgPSBmaXhPY2N1cnJlbmNlKHZvLm9jY3VycmVuY2UpXG4gICAgICAgIH1cblxuICAgICAgICBpZiAodm8ub2NjdXJyZW5jZXMpIHtcbiAgICAgICAgICB3b3JkLm9jY3VycmVuY2VzID0gZml4T2NjdXJyZW5jZSh2by5vY2N1cnJlbmNlcylcbiAgICAgICAgfVxuICAgICAgICB2ZXJzZU9iamVjdHNfW2ldID0gd29yZFxuICAgICAgfSBlbHNlIGlmICh2by5jaGlsZHJlbikge1xuICAgICAgICBjb25zdCBjaGlsZHJlbiA9IGNsZWFudXBWZXJzZU9iamVjdHModm8uY2hpbGRyZW4pXG4gICAgICAgIGNvbnN0IG5ld1ZvID0ge1xuICAgICAgICAgIC4uLnZvLFxuICAgICAgICAgIGNoaWxkcmVuLFxuICAgICAgICB9XG4gICAgICAgIHZlcnNlT2JqZWN0c19baV0gPSBuZXdWb1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdmVyc2VPYmplY3RzX1xuICB9XG4gIHJldHVybiBbXVxufVxuXG4vKipcbiAqIHRha2UgdGhlIGZpbGVuYW1lIG9mIHRoZSBib29rIChlLmcuIFwiNTctVElULnVzZm1cIikgYW5kIHBhcnNlIG91dCB0aGUgYm9va0lkXG4gKiBAcGFyYW0ge3N0cmluZ30gZmlsZW5hbWVcbiAqIEByZXR1cm4ge3N0cmluZ30gYm9va0lkIGlmIGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRCb29rTmFtZUZyb21Vc2ZtRmlsZU5hbWUoZmlsZW5hbWUpIHtcbiAgY29uc3QgcmVnZXggPSAvXiguKj8pXFwudXNmbS9cbiAgY29uc3QgYm9va05hbWUgPSBmaWxlbmFtZT8ubWF0Y2gocmVnZXgpPy5bMV1cbiAgcmV0dXJuIGJvb2tOYW1lXG59XG5cbi8qKlxuICogcGFyc2UgdGhlIFVTRk0gdG8gZmluZCBib29rSUQgaW4gaGVhZGVyXG4gKiBAcGFyYW0ge3N0cmluZ30gYmlibGVVc2ZtXG4gKiBAcmV0dXJuIHtzdHJpbmd9IGJvb2tJZCBpZiBmb3VuZFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QmlibGVJZEZyb21Vc2ZtQ29udGVudElEKGJpYmxlVXNmbSkge1xuICBjb25zdCBpZEhlYWRlciA9ICdcXFxcaWQgJ1xuICBjb25zdCBwb3NJZCA9IGJpYmxlVXNmbT8uaW5kZXhPZihpZEhlYWRlcilcblxuICBpZiAocG9zSWQgPj0gMCkge1xuICAgIGNvbnN0IGlkU3RhcnQgPSBwb3NJZCArIGlkSGVhZGVyLmxlbmd0aFxuICAgIGxldCBoZWFkZXJJZCA9IGJpYmxlVXNmbT8uc3Vic3RyaW5nKCBpZFN0YXJ0LCBpZFN0YXJ0ICsgMTAwKS50cmltKClcbiAgICBsZXQgaGVhZGVyQm9va0lEID0gbnVsbFxuXG4gICAgaWYgKGhlYWRlcklkPy5sZW5ndGggPiAxKSB7XG4gICAgICBoZWFkZXJCb29rSUQgPSBoZWFkZXJJZD8uc3BsaXQoJyAnKVxuICAgICAgaGVhZGVyQm9va0lEID0gaGVhZGVyQm9va0lEPy5bMF0udHJpbSgpXG4gICAgfVxuICAgIHJldHVybiBoZWFkZXJCb29rSURcbiAgfVxuICByZXR1cm4gbnVsbFxufVxuIl19
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.7-beta.39",
4
+ "version": "3.4.7",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/unfoldingWord/single-scripture-rcl.git"